| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package warning
- import (
- "fmt"
- "time"
- "bet24.com/public"
- "bet24.com/servers/adminserver/config"
- )
- var w *warning
- type (
- warning struct {
- moneyWarning // 金币预警
- lotteryWarning // 话费券预警
- regWarning // 注册预警
- transferWarning // 赠送预警
- }
- moneyWarning struct {
- stock int // 金币存量
- searchTime time.Time // 金币查询时间
- }
- lotteryWarning struct {
- stock int // 话费券存量
- searchTime time.Time // 话费券查询时间
- }
- regWarning struct {
- searchTime time.Time // 注册查询时间
- regTime time.Time // 注册时间
- }
- transferWarning struct {
- searchTime time.Time // 赠送查询时间
- transferTime time.Time // 赠送时间
- }
- warningItem struct {
- moneyStock int // 金币存量
- lotteryStock int // 话费券存量
- regCount int // 注册用户数
- transferTimes int // 赠送次数
- }
- )
- func Run() {
- w = new(warning)
- w.moneyWarning.searchTime = time.Now()
- w.lotteryWarning.searchTime = time.Now()
- w.regWarning.searchTime = time.Now()
- w.regWarning.regTime = time.Now()
- w.transferWarning.searchTime = time.Now()
- w.transferWarning.transferTime = time.Now()
- go w.doCheck()
- }
- func (this *warning) doCheck() {
- ticker := time.NewTicker(10 * time.Second)
- go func(t *time.Ticker) {
- for {
- select {
- case <-t.C:
- this.check()
- }
- }
- }(ticker)
- }
- // 发送短信
- func (this *warning) sendSMS(msg string) {
- for _, tel := range config.AdminConfig.Phones {
- if !public.CheckMobile(tel) {
- continue
- }
- go public.HttpSMSSend(tel, msg, config.AdminConfig.SMSAppId, config.AdminConfig.SMSApiKey, config.AdminConfig.SMSPostUrl)
- }
- return
- }
- func (this *warning) check() {
- info := warningCheck(this.moneyWarning.searchTime, this.lotteryWarning.searchTime,
- this.regWarning.regTime, this.transferWarning.transferTime)
- if info == nil {
- return
- }
- // log.Debug("check from DBInfo ==>%+v moneyWarning.stock=%d lotteryWarning.stock=%d regSearchTime=%v regTime=%v transferSearchTime=%v transferTime=%v",
- // info, this.moneyWarning.stock, this.lotteryWarning.stock, this.regWarning.searchTime, this.regWarning.regTime, this.transferWarning.searchTime, this.transferWarning.transferTime)
- // 触发金币预警
- if info.moneyStock-this.moneyWarning.stock >= config.AdminConfig.MoneyValue && this.moneyWarning.stock > 0 {
- // 触发了警报系统!【变量】可能存在数据异常,当前值为【变量】(正常值上限【变量】,下限【变量】)
- msg := fmt.Sprintf(config.AdminConfig.SMSSendMsg, "YXB", info.moneyStock-this.moneyWarning.stock, config.AdminConfig.MoneyValue)
- // 发送短信
- this.sendSMS(msg)
- }
- if this.moneyWarning.searchTime.Before(time.Now()) {
- this.moneyWarning.stock = info.moneyStock
- this.moneyWarning.searchTime = time.Now().Add(time.Duration(config.AdminConfig.MoneyMinutes) * time.Minute)
- }
- // 触发话费券预警
- if info.lotteryStock-this.lotteryWarning.stock >= config.AdminConfig.LotteryValue && this.lotteryWarning.stock > 0 {
- // 触发了警报系统!【变量】可能存在数据异常,当前值为【变量】(正常值上限【变量】,下限【变量】)
- msg := fmt.Sprintf(config.AdminConfig.SMSSendMsg, "HFQ", info.lotteryStock-this.lotteryWarning.stock, config.AdminConfig.LotteryValue)
- // 发送短信
- this.sendSMS(msg)
- }
- if this.lotteryWarning.searchTime.Before(time.Now()) {
- this.lotteryWarning.stock = info.lotteryStock
- this.lotteryWarning.searchTime = time.Now().Add(time.Duration(config.AdminConfig.LotteryMinutes) * time.Minute)
- }
- // 触发注册预警
- if info.regCount >= config.AdminConfig.RegValue {
- // 触发了警报系统!【变量】可能存在数据异常,当前值为【变量】(正常值上限【变量】,下限【变量】)
- msg := fmt.Sprintf(config.AdminConfig.SMSSendMsg, "NewRegister", info.regCount, config.AdminConfig.RegValue)
- // 发送短信
- this.sendSMS(msg)
- }
- if this.regWarning.searchTime.Before(time.Now()) {
- this.regWarning.searchTime = time.Now().Add(time.Duration(config.AdminConfig.RegMinutes) * time.Minute)
- this.regWarning.regTime = time.Now().Add(time.Duration(config.AdminConfig.RegMinutes*-1) * time.Minute)
- } else {
- this.regWarning.regTime = time.Now().Add(time.Duration(config.AdminConfig.RegMinutes) * time.Minute)
- }
- // 触发赠送预警
- if info.transferTimes >= config.AdminConfig.TransferValue {
- // 触发了警报系统!【变量】可能存在数据异常,当前值为【变量】(正常值上限【变量】,下限【变量】)
- msg := fmt.Sprintf(config.AdminConfig.SMSSendMsg, "ZS", info.transferTimes, config.AdminConfig.TransferValue)
- // 发送短信
- this.sendSMS(msg)
- }
- if this.transferWarning.searchTime.Before(time.Now()) {
- this.transferWarning.searchTime = time.Now().Add(time.Duration(config.AdminConfig.TransferMinutes) * time.Minute)
- this.transferWarning.transferTime = time.Now().Add(time.Duration(config.AdminConfig.TransferMinutes*-1) * time.Minute)
- } else {
- this.transferWarning.transferTime = time.Now().Add(time.Duration(config.AdminConfig.TransferMinutes) * time.Minute)
- }
- return
- }
|