12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package events
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "spaceofcheng/services/models"
  6. "spaceofcheng/services/models/model"
  7. "spaceofcheng/services/service/card"
  8. "spaceofcheng/services/utils"
  9. "github.com/zjxpcyc/tinyevent"
  10. )
  11. var giveCard = func(e tinyevent.Event) error {
  12. utils.LogInfo("开始卡赠送操作...")
  13. ctx := NewContext()
  14. defer DestroyContext(ctx, false)
  15. if e.Payload == nil {
  16. utils.LogError("注册送卡失败, 没有用户信息")
  17. return errors.New("注册送卡失败, 没有用户信息")
  18. }
  19. cust := e.Payload.(model.TaCustomer)
  20. // caseID := cust.RecommendCase
  21. orgID := cust.OrgId
  22. utils.LogInfo("被赠送人: " + cust.CustomerId)
  23. // 不区分案场,随便送
  24. // 2018年10月30日 yansen 按照产品要求
  25. query := `
  26. SELECT
  27. t.*
  28. FROM
  29. sys_activity_action t
  30. JOIN sys_activity s ON t.activity_id = s.activity_id
  31. WHERE
  32. t.active_type = 'giveCard'
  33. AND s.org_id = ?
  34. AND s.status = ?
  35. AND s.activity_type = ?
  36. `
  37. var acts []model.SysActivityAction
  38. if err := models.DBEngine.SQL(query, orgID, models.STATUS_NORMAL, e.Name).Find(&acts); err != nil {
  39. utils.LogError("检查营销活动失败: " + err.Error())
  40. return errors.New("检查营销活动失败")
  41. }
  42. fromUser := model.SysUser{
  43. UserId: "SYSTEM",
  44. UserName: "system",
  45. }
  46. cpServ := card.NewCardServ(ctx)
  47. for _, act := range acts {
  48. switch act.ActiveType {
  49. case ActGiveCard:
  50. res := make(map[string]interface{})
  51. if err := json.Unmarshal([]byte(act.ResourceDesc), &res); err != nil {
  52. utils.LogError("解析体验卡赠送规则失败: " + err.Error())
  53. continue
  54. }
  55. cpID, has := res["giftValue"]
  56. if !has {
  57. continue
  58. }
  59. cp, err := cpServ.GetCardByID(cpID.(string))
  60. if err != nil {
  61. utils.LogError("获取体验卡失败: " + err.Error())
  62. continue
  63. }
  64. if err := cpServ.GiveCardTo(&fromUser, &cust, cp); err != nil {
  65. utils.LogError("送卡失败: " + err.Error())
  66. continue
  67. }
  68. default:
  69. utils.LogError("暂不支持的赠送类型")
  70. }
  71. }
  72. return nil
  73. }