1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package events
-
- import (
- "encoding/json"
- "errors"
- "spaceofcheng/services/models"
- "spaceofcheng/services/models/model"
- "spaceofcheng/services/service/coupon"
- "spaceofcheng/services/utils"
- "strings"
-
- "github.com/zjxpcyc/tinyevent"
- )
-
- // giveCoupon 赠送卡券
- // Event.Payload.customer = model.TaCustomer
- var giveCoupon = func(e tinyevent.Event) error {
- utils.LogInfo("开始券赠送操作...")
-
- ctx := NewContext()
- defer DestroyContext(ctx, false)
-
- if e.Payload == nil {
- utils.LogError("注册送券失败, 没有用户信息")
- return errors.New("注册送券失败, 没有用户信息")
- }
-
- cust := e.Payload.(model.TaCustomer)
- // caseID := cust.RecommendCase
- orgID := cust.OrgId
-
- utils.LogInfo("被赠送人: " + cust.CustomerId)
-
- // 不区分案场,随便送
- // 2018年10月30日 yansen 按照产品要求
- query := `
- SELECT
- t.*
- FROM
- sys_activity_action t
- JOIN sys_activity s ON t.activity_id = s.activity_id
- WHERE
- t.active_type = 'giveCoupon'
- AND s.org_id = ?
- AND s.status = ?
- AND s.activity_type = ?
- `
-
- var acts []model.SysActivityAction
- if err := models.DBEngine.SQL(query, orgID, models.STATUS_NORMAL, e.Name).Find(&acts); err != nil {
- utils.LogError("检查营销活动失败: " + err.Error())
- return errors.New("检查营销活动失败")
- }
-
- fromUser := model.SysUser{
- UserId: "SYSTEM",
- UserName: "system",
- }
-
- cpServ := coupon.NewCouponServ(ctx)
-
- for _, act := range acts {
- switch act.ActiveType {
- case ActGiveCoupon:
- res := make(map[string]interface{})
- if err := json.Unmarshal([]byte(strings.Replace(act.ResourceDesc, "\n", "\\n", -1)), &res); err != nil {
- utils.LogError("解析优惠券赠送规则失败: " + err.Error())
- continue
- }
-
- cpID, has := res["giftValue"]
- if !has {
- continue
- }
-
- cp, err := cpServ.GetCouponByID(cpID.(string))
- if err != nil {
- utils.LogError("获取优惠券失败: " + err.Error())
- continue
- }
-
- if err := cpServ.GiveCouponTo(&fromUser, &cust, cp, models.RECEIVEING_TYPE_EVENT); err != nil {
- utils.LogError("送券失败: " + err.Error())
- continue
- }
- default:
- utils.LogError("暂不支持的赠送类型")
- }
- }
-
- return nil
- }
|