package cron_controller import ( "github.com/astaxie/beego" "github.com/astaxie/beego/context" "fohow.com/apps" "fohow.com/libs/tool" "strings" ) var ( //不需要校验用户登录的Action exceptCheckUserLoginAction = []string{"Cron"} exceptCheckWxUserLoginAction = []string{"Cron"} ) type CronController struct { apps.BaseController } func (self *CronController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) { // beego.BeeLogger.Info("invote controller Init func") self.BaseController.Init(ctx, controllerName, actionName, app) self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction } // http://api.d5c360.com/v1/cron/:name(project_loan) func (self *CronController) Cron() { name := self.Ctx.Input.Param(":name") ip := self.Ctx.Input.IP() //beego.BeeLogger.Error("get ip: %s", ip) beego.BeeLogger.Info("Request ip ", strings.Split(beego.AppConfig.String("inetIp"), ",")) // 该接口要指定的ip列表访问 if inAllowedList, _ := tool.Contain(ip, strings.Split(beego.AppConfig.String("inetIp"), ",")); inAllowedList { //beego.BeeLogger.Error("inAllowedList: %v", inAllowedList) if name == "orderCompleteDispatchTime" { isUpdateTime, _ := self.GetBool("is_update_time", false) OrderCompleteDispatchTime(isUpdateTime) } else { exec(name) } beego.BeeLogger.Info("Request ip[%s] in AllowedList ip, task execute", ip) } else { beego.BeeLogger.Warn("Request ip[%s] is not intranet ip, check current user", ip) currentUser := self.GetCurrentUser(false) beego.BeeLogger.Warn("currentUser=%v", currentUser) // 白名单36005:Lane, 28286: 宇斯 var whiteList = []int64{36005, 28286} if currentUser != nil { for _, id := range whiteList { beego.BeeLogger.Warn("id=%d,currentUserId=%d", id, currentUser.Id) if currentUser.Id == id { beego.BeeLogger.Info("current user id=[%d], exec task", id) exec(name) break } } } } self.ServeJSON() } func exec(name string) { switch name { case "take_cash": //提现 //takeCash() //autoTakeCash() //redis队列处理 case "orderReceiveAutomatically": //已发货订单7天自动收货 OrderReceiveAutomatically() case "updateUserNicknameAndHead": //修复数据-只执行一次 updateUserNicknameAndHead() case "udpate_sold_count": //更新已售数量 updateSoldCount() case "comb_three_user": //更新内部关系 threebUserRelation() case "register_wxuser": //修复数据--注册会员 registerWxUser() case "cancel_order": //下单24h未支付改为已取消 OrderCancelAutomatically() case "send_cent": //补发积分执行一次 patchCent() default: beego.BeeLogger.Error("Didn't get task wity name:[%s]", name) } }