active.go 4.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package model
  2. import (
  3. "fmt"
  4. "sync"
  5. "time"
  6. "git.jiaxianghudong.com/go/logs"
  7. "git.jiaxianghudong.com/webs/pkg/dbx"
  8. )
  9. //ActiveCache 调用到的活动缓存
  10. var ActiveCache sync.Map
  11. //ActiveCacheArr 所有活动数组缓存
  12. var ActiveCacheArr sync.Map
  13. // ActiveSwitchAll 活动
  14. type ActiveSwitchAll struct {
  15. ID string `sql:"id" json:"id"`
  16. Title string `sql:"title" json:"title"`
  17. Status string `sql:"status" json:"status"` // `status` tinyint(2) DEFAULT '0' COMMENT '0关闭,1开启',
  18. ActiveID string `sql:"active_id" json:"active_id"` // `active_id` varchar(100) DEFAULT NULL COMMENT '关联活动标签符',
  19. OpenCondition string `sql:"open_condition" json:"open_condition"` // `open_condition` text CHARACTER SET utf32 COMMENT 'app_id,channel_id和地区的组合,空表示全部',
  20. OpenTimes string `sql:"open_times" json:"open_times"` // `open_times` varchar(999) DEFAULT NULL COMMENT '开启时间,空表示全部',
  21. BeginShowTime string `sql:"begin_show_time" json:"begin_show_time"` // `begin_show_time` varchar(55) NOT NULL COMMENT '循环显示开始时间',
  22. EndShowTime string `sql:"end_show_time" json:"end_show_time"` // `end_show_time` varchar(55) NOT NULL COMMENT '循环显示时结束间',
  23. BeginShowDate string `sql:"begin_show_date" json:"begin_show_date"` // `begin_show_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '指定显示开始日期时间',
  24. EndShowDate string `sql:"end_show_date" json:"end_show_date"` // `end_show_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '指定显示结束日期时间',
  25. IsDebug string `sql:"is_debug" json:"is_debug"` // `is_debug` int(2) NOT NULL DEFAULT '0' COMMENT '是否测试 0否 1是',
  26. Sort string `sql:"sort" json:"sort"` // `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序',
  27. IsTimeOffOn string `sql:"istimeoffon" json:"istimeoffon"` // `istimeoffon` int(2) NOT NULL DEFAULT '0' COMMENT '显示模式:1循环模式 2:指定模式'';',
  28. Push string `sql:"push" json:"push"` // `push` int(2) NOT NULL DEFAULT '0' COMMENT '0为不推送1为推送',
  29. RuleTitle string `sql:"rule_title" json:"rule_title"` // `rule_title` varchar(55) NOT NULL COMMENT '活动规则标题',
  30. Rule string `sql:"rule" json:"rule"` // `rule` text NOT NULL COMMENT '活动规则',
  31. Grade string `sql:"grade" json:"grade"` // `grade` varchar(50) NOT NULL COMMENT '档位',
  32. GradeRatio string `sql:"grade_ratio" json:"grade_ratio"` // `grade_ratio` varchar(50) NOT NULL COMMENT '档位对应百分比',
  33. Data string `sql:"data" json:"data"`
  34. }
  35. // Get 获取全部活动数据
  36. func (m ActiveSwitchAll) Get(typeName string) (ActiveSwitchAll, error) {
  37. sql := fmt.Sprintf("SELECT id,title,status,active_id,open_condition,open_times,begin_show_time,end_show_time,begin_show_date,end_show_date,is_debug,sort,istimeoffon,push,rule_title,rule,grade,grade_ratio,data FROM `ext`.`active_switch` WHERE active_id='%v'", typeName)
  38. queryResult := dbx.MySQLExt.QueryRow(sql)
  39. if nil == queryResult {
  40. return m, nil
  41. }
  42. err := queryResult.Scan(&m.ID, &m.Title, &m.Status, &m.ActiveID, &m.OpenCondition, &m.OpenTimes, &m.BeginShowTime, &m.EndShowTime, &m.BeginShowDate, &m.EndShowDate,
  43. &m.IsDebug, &m.Sort, &m.IsTimeOffOn, &m.Push, &m.RuleTitle, &m.Rule, &m.Grade, &m.GradeRatio, &m.Data)
  44. if nil != err && "sql: no rows in result set" != err.Error() {
  45. logs.Error("活动数据获取失败,活动ID:", typeName, ",错误:", err.Error())
  46. return m, err
  47. }
  48. return m, nil
  49. }
  50. //GetActiveSwitch 获取可用活动开关配置列表
  51. func GetActiveSwitch() ([]ActiveSwitchAll, error) {
  52. var switchs []ActiveSwitchAll
  53. sql := fmt.Sprintf("select * from `ext`.`active_switch` where status =1 and end_show_date >= '%s' ORDER BY id DESC", time.Now().Format("2006-01-02 15:04:05"))
  54. err := dbx.MySQLExt.Query2(sql, &switchs)
  55. if err != nil {
  56. logs.Errorf(" select * from `ext`.`active_switch` where status =1 and end_show_date >= ? ORDER BY id DESC err:%v", err)
  57. return nil, err
  58. }
  59. return switchs, nil
  60. }