package model import ( "fmt" "sync" "time" "git.jiaxianghudong.com/go/logs" "git.jiaxianghudong.com/webs/pkg/dbx" ) //ActiveCache 调用到的活动缓存 var ActiveCache sync.Map //ActiveCacheArr 所有活动数组缓存 var ActiveCacheArr sync.Map // ActiveSwitchAll 活动 type ActiveSwitchAll struct { ID string `sql:"id" json:"id"` Title string `sql:"title" json:"title"` Status string `sql:"status" json:"status"` // `status` tinyint(2) DEFAULT '0' COMMENT '0关闭,1开启', ActiveID string `sql:"active_id" json:"active_id"` // `active_id` varchar(100) DEFAULT NULL COMMENT '关联活动标签符', OpenCondition string `sql:"open_condition" json:"open_condition"` // `open_condition` text CHARACTER SET utf32 COMMENT 'app_id,channel_id和地区的组合,空表示全部', OpenTimes string `sql:"open_times" json:"open_times"` // `open_times` varchar(999) DEFAULT NULL COMMENT '开启时间,空表示全部', BeginShowTime string `sql:"begin_show_time" json:"begin_show_time"` // `begin_show_time` varchar(55) NOT NULL COMMENT '循环显示开始时间', EndShowTime string `sql:"end_show_time" json:"end_show_time"` // `end_show_time` varchar(55) NOT NULL COMMENT '循环显示时结束间', BeginShowDate string `sql:"begin_show_date" json:"begin_show_date"` // `begin_show_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '指定显示开始日期时间', EndShowDate string `sql:"end_show_date" json:"end_show_date"` // `end_show_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '指定显示结束日期时间', IsDebug string `sql:"is_debug" json:"is_debug"` // `is_debug` int(2) NOT NULL DEFAULT '0' COMMENT '是否测试 0否 1是', Sort string `sql:"sort" json:"sort"` // `sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', IsTimeOffOn string `sql:"istimeoffon" json:"istimeoffon"` // `istimeoffon` int(2) NOT NULL DEFAULT '0' COMMENT '显示模式:1循环模式 2:指定模式'';', Push string `sql:"push" json:"push"` // `push` int(2) NOT NULL DEFAULT '0' COMMENT '0为不推送1为推送', RuleTitle string `sql:"rule_title" json:"rule_title"` // `rule_title` varchar(55) NOT NULL COMMENT '活动规则标题', Rule string `sql:"rule" json:"rule"` // `rule` text NOT NULL COMMENT '活动规则', Grade string `sql:"grade" json:"grade"` // `grade` varchar(50) NOT NULL COMMENT '档位', GradeRatio string `sql:"grade_ratio" json:"grade_ratio"` // `grade_ratio` varchar(50) NOT NULL COMMENT '档位对应百分比', Data string `sql:"data" json:"data"` } // Get 获取全部活动数据 func (m ActiveSwitchAll) Get(typeName string) (ActiveSwitchAll, error) { 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) queryResult := dbx.MySQLExt.QueryRow(sql) if nil == queryResult { return m, nil } err := queryResult.Scan(&m.ID, &m.Title, &m.Status, &m.ActiveID, &m.OpenCondition, &m.OpenTimes, &m.BeginShowTime, &m.EndShowTime, &m.BeginShowDate, &m.EndShowDate, &m.IsDebug, &m.Sort, &m.IsTimeOffOn, &m.Push, &m.RuleTitle, &m.Rule, &m.Grade, &m.GradeRatio, &m.Data) if nil != err && "sql: no rows in result set" != err.Error() { logs.Error("活动数据获取失败,活动ID:", typeName, ",错误:", err.Error()) return m, err } return m, nil } //GetActiveSwitch 获取可用活动开关配置列表 func GetActiveSwitch() ([]ActiveSwitchAll, error) { var switchs []ActiveSwitchAll 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")) err := dbx.MySQLExt.Query2(sql, &switchs) if err != nil { logs.Errorf(" select * from `ext`.`active_switch` where status =1 and end_show_date >= ? ORDER BY id DESC err:%v", err) return nil, err } return switchs, nil }