package events import ( "encoding/json" "errors" "spaceofcheng/services/models" "spaceofcheng/services/models/model" "spaceofcheng/services/service/card" "spaceofcheng/services/utils" "github.com/zjxpcyc/tinyevent" ) var giveCard = 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 = 'giveCard' 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 := card.NewCardServ(ctx) for _, act := range acts { switch act.ActiveType { case ActGiveCard: res := make(map[string]interface{}) if err := json.Unmarshal([]byte(act.ResourceDesc), &res); err != nil { utils.LogError("解析体验卡赠送规则失败: " + err.Error()) continue } cpID, has := res["giftValue"] if !has { continue } cp, err := cpServ.GetCardByID(cpID.(string)) if err != nil { utils.LogError("获取体验卡失败: " + err.Error()) continue } if err := cpServ.GiveCardTo(&fromUser, &cust, cp); err != nil { utils.LogError("送卡失败: " + err.Error()) continue } default: utils.LogError("暂不支持的赠送类型") } } return nil }