123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package events
-
- import (
- "fmt"
- "spaceofcheng/services/models"
- "spaceofcheng/services/models/model"
- "spaceofcheng/services/utils"
- "sync"
-
- "github.com/zjxpcyc/tinyevent"
- )
-
- var mtx sync.Mutex
-
- // EvtActions 内置 Action 列表
- var EvtActions = map[string]tinyevent.Action{
- // 测试
- ActTest: tsAction,
-
- // 赠送券
- ActGiveCoupon: giveCoupon,
-
- // 赠送卡
- ActGiveCard: giveCard,
- }
-
- // ListenAllEvent 监听所有事件
- func ListenAllEvent(orgID, caseID string) {
- mtx.Lock()
- defer mtx.Unlock()
-
- // 2018年10月30日 yansen 不区分案场
- evtEngID := utils.EngineIDBy(orgID, "")
- evtEngine := utils.ResetEventEngineBus(evtEngID)
-
- // 所有需要执行的事件
- allEvts, err := getAllEvents(orgID, "")
- if err != nil {
- utils.LogError(err)
- }
-
- // 刷新中控中心
- for evt, acts := range allEvts {
- for _, actKey := range acts {
- act, ok := EvtActions[actKey]
-
- if ok {
- evtEngine.ListenEvent(evt, act)
- }
- }
- }
- }
-
- // getAllEvents 获取数据库配置
- func getAllEvents(orgID, caseID string) (map[string][]string, error) {
- db := models.DBEngine
-
- var evts []model.SysActivity
- var acts []model.SysActivityAction
-
- if err := db.Where("org_id=?", orgID).
- // And("case_id=?", caseID).
- And("status=?", models.STATUS_NORMAL).
- Find(&evts); err != nil {
- utils.LogError("查询营销活动配置表失败: " + err.Error())
- return nil, err
- }
-
- res := make(map[string][]string)
- for _, evtSetting := range evts {
- tpEvts, ok := res[evtSetting.ActivityType]
- if !ok {
- tpEvts = make([]string, 0)
- }
-
- acts = make([]model.SysActivityAction, 0)
-
- if err := db.Where("activity_id=?", evtSetting.ActivityId).Find(&acts); err != nil {
- utils.LogError("查询营销活动配置明细失败: " + err.Error())
- return nil, err
- }
-
- for _, act := range acts {
- utils.LogInfo(act)
-
- // 加入 tpEvts 需要去重
- if utils.StrSliceIndexOf(tpEvts, act.ActiveType) == -1 {
- tpEvts = append(tpEvts, act.ActiveType)
- }
- }
-
- res[evtSetting.ActivityType] = tpEvts
- }
-
- return res, nil
- }
-
- var tsAction = func(e tinyevent.Event) error {
- str := e.Payload.(string)
- fmt.Println(str)
- return nil
- }
-
- func EventInit() {
- // cases, err := models.GetAllCases()
- // if err != nil {
- // utils.LogError("获取有效案场列表失败: " + err.Error())
- // return
- // }
-
- // for _, cs := range cases {
- // ListenAllEvent(cs.OrgId, cs.CaseId)
- // }
-
- // 不区分案场
- orgs, err := models.GetAllOrgs()
- if err != nil {
- utils.LogError("获取机构列表失败: " + err.Error())
- return
- }
-
- for _, org := range orgs {
- ListenAllEvent(org.OrgId, "")
- }
- }
|