123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package marketing
  2. import (
  3. "spaceofcheng/services/models"
  4. "spaceofcheng/services/models/model"
  5. "spaceofcheng/services/utils"
  6. "strconv"
  7. "strings"
  8. "time"
  9. "github.com/go-xorm/xorm"
  10. )
  11. // 活动类型
  12. const (
  13. NEW_ACTIVITIES = 1 // 注册赠券
  14. )
  15. // 赠券卡券
  16. const (
  17. drink = 1 // 饮品通用卷
  18. course = 2 // 课程通用卷
  19. petty_diplomat = 3 // 小小外交官通用卷
  20. )
  21. // GoodsDAO 当前数据库操作对象
  22. type MarketingDAO struct {
  23. ctx *utils.Context
  24. db *xorm.Session
  25. }
  26. // NewMarketingDAO New Inst
  27. func NewMarketingDAO(ctx *utils.Context) *MarketingDAO {
  28. return &MarketingDAO{
  29. ctx: ctx,
  30. db: ctx.DB,
  31. }
  32. }
  33. // MarketingInfo
  34. type MarketingInfo struct {
  35. model.SysActivity `xorm:"extends"`
  36. CaseName string
  37. ActionId string
  38. ActiveType string
  39. ResourceType string
  40. ResourceDesc string
  41. Actions []model.SysActivityAction
  42. }
  43. // GetMarketingList 查询所有
  44. func (m *MarketingDAO) GetMarketingList(caseids string, page int, pageSize int) ([]MarketingInfo, error) {
  45. var news []MarketingInfo
  46. //sql := `select * from sys_activity new order by new.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
  47. sql := `SELECT sc.case_name,sa.*,sas.action_id,sas.active_type,sas.resource_type,sas.resource_desc from sys_activity sa
  48. LEFT JOIN sys_activity_action sas on sa.activity_id = sas.activity_id LEFT JOIN sys_case sc on sa.case_id = sc.case_id
  49. where sa.status != -1 and sa.case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') order by sa.create_date desc limit ` + strconv.Itoa((page-1)*pageSize) + ", " + strconv.Itoa(pageSize)
  50. err := m.db.Sql(sql).Find(&news)
  51. return news, err
  52. }
  53. // GetMarketingCount 获取总数
  54. func (m *MarketingDAO) GetMarketingCount(caseids string) (int64, error) {
  55. var total []int64
  56. sql := `select count(*) as total from sys_activity where case_id in ('` + strings.Replace(caseids, ",", "','", -1) + `') and status>` + strconv.Itoa(models.STATUS_DEL)
  57. err := m.db.Sql(sql).Cols("total").Find(&total)
  58. if err != nil {
  59. }
  60. return total[0], err
  61. }
  62. // AddMarketing 添加
  63. func (m *MarketingDAO) AddMarketing(activity model.SysActivity) (*model.SysActivity, error) {
  64. activity.ActivityId = utils.GetGUID()
  65. activity.CreateDate = time.Now()
  66. //activity.Status = models.STATUS_NORMAL
  67. activity.Status = models.STATUS_NORMAL // 状态为正常
  68. org := m.ctx.Get("org").(model.SysOrg)
  69. activity.OrgId = org.OrgId
  70. _, err := m.db.Insert(&activity)
  71. return &activity, err
  72. }
  73. // GetMarketingById 根据ID查询活动营销
  74. func (m *MarketingDAO) GetMarketingById(activityId string) (*model.SysActivity, error) {
  75. var activity []model.SysActivity
  76. err := m.db.Where("activity_id=?", activityId).Find(&activity)
  77. if err != nil {
  78. return nil, err
  79. }
  80. if len(activity) > 0 {
  81. return &activity[0], nil
  82. }
  83. return nil, nil
  84. }
  85. // DelMarketing 修改状态 营销活动(删除,启用,停用)
  86. /**
  87. **/
  88. func (m *MarketingDAO) DelMarketing(activityId string, status int) error {
  89. var info = model.SysActivity{
  90. ActivityId: activityId,
  91. // Status: models.STATUS_DEL,
  92. Status: status,
  93. }
  94. var cols = []string{
  95. "status",
  96. }
  97. _, err := m.db.Cols(cols...).Where("activity_id=?", activityId).Update(info)
  98. return err
  99. }
  100. // UpdateMarketing 修改 营销活动
  101. func (m *MarketingDAO) UpdateMarketing(activity model.SysActivity) error {
  102. // var cols = []string{
  103. // "activity_name",
  104. // "activity_type",
  105. // "case_id",
  106. // "org_id",
  107. // "case_id",
  108. // }
  109. var cols = []string{
  110. "activity_name",
  111. "activity_type",
  112. }
  113. _, err := m.db.Cols(cols...).Where("action_id=?", activity.ActivityId).Update(activity)
  114. return err
  115. }
  116. func (m *MarketingDAO) GetUserCases(caseid string) ([]model.SysCase, error) {
  117. var cases []model.SysCase
  118. sql := `SELECT
  119. *
  120. FROM
  121. sys_case
  122. WHERE case_id in ('` + strings.Replace(caseid, ",", "','", -1) + `')`
  123. err := m.db.Sql(sql).Find(&cases)
  124. return cases, err
  125. }