init.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package cron_controller
  2. import (
  3. "github.com/astaxie/beego"
  4. "github.com/astaxie/beego/context"
  5. "fohow.com/apps"
  6. "fohow.com/libs/tool"
  7. "strings"
  8. )
  9. var (
  10. //不需要校验用户登录的Action
  11. exceptCheckUserLoginAction = []string{"Cron"}
  12. exceptCheckWxUserLoginAction = []string{"Cron"}
  13. )
  14. type CronController struct {
  15. apps.BaseController
  16. }
  17. func (self *CronController) Init(ctx *context.Context, controllerName, actionName string, app interface{}) {
  18. // beego.BeeLogger.Info("invote controller Init func")
  19. self.BaseController.Init(ctx, controllerName, actionName, app)
  20. self.ExceptCheckUserLoginAction = exceptCheckUserLoginAction
  21. self.ExceptCheckWxUserLoginAction = exceptCheckWxUserLoginAction
  22. }
  23. // http://api.d5c360.com/v1/cron/:name(project_loan)
  24. func (self *CronController) Cron() {
  25. name := self.Ctx.Input.Param(":name")
  26. ip := self.Ctx.Input.IP()
  27. //beego.BeeLogger.Error("get ip: %s", ip)
  28. beego.BeeLogger.Info("Request ip ", strings.Split(beego.AppConfig.String("inetIp"), ","))
  29. // 该接口要指定的ip列表访问
  30. if inAllowedList, _ := tool.Contain(ip, strings.Split(beego.AppConfig.String("inetIp"), ",")); inAllowedList {
  31. //beego.BeeLogger.Error("inAllowedList: %v", inAllowedList)
  32. self.run(name)
  33. beego.BeeLogger.Info("Request ip[%s] in AllowedList ip, task execute", ip)
  34. } else {
  35. beego.BeeLogger.Warn("Request ip[%s] is not intranet ip, check current user", ip)
  36. currentUser := self.GetCurrentUser(false)
  37. beego.BeeLogger.Warn("currentUser=%v", currentUser)
  38. // 白名单36005:Lane, 28286: 宇斯
  39. var whiteList = []int64{36005, 28286}
  40. if currentUser != nil {
  41. for _, id := range whiteList {
  42. beego.BeeLogger.Warn("id=%d,currentUserId=%d", id, currentUser.Id)
  43. if currentUser.Id == id {
  44. beego.BeeLogger.Info("current user id=[%d], exec task", id)
  45. self.run(name)
  46. break
  47. }
  48. }
  49. }
  50. }
  51. self.ServeJSON()
  52. }
  53. func (self *CronController) run(name string) {
  54. if name == "orderCompleteDispatchTime" {
  55. isUpdateTime, _ := self.GetBool("is_update_time", false)
  56. OrderCompleteDispatchTime(isUpdateTime)
  57. return
  58. }
  59. if name == "syncWechatOrderShipping" {
  60. self.Data["json"] = SyncWechatOrderShipping()
  61. return
  62. }
  63. if name == "take_cash_timeout" {
  64. self.Data["json"] = ProcessTakeCashTimeoutOrders()
  65. return
  66. }
  67. exec(name)
  68. }
  69. func exec(name string) {
  70. switch name {
  71. case "take_cash": //提现
  72. //takeCash()
  73. autoTakeCash() //redis队列处理
  74. case "admin_take_cash": //提现
  75. takeCash()
  76. case "orderReceiveAutomatically": //已发货订单7天自动收货
  77. OrderReceiveAutomatically()
  78. case "updateUserNicknameAndHead": //修复数据-只执行一次
  79. updateUserNicknameAndHead()
  80. case "udpate_sold_count": //更新已售数量(测试环境已隐藏)
  81. beego.BeeLogger.Warn("cron task udpate_sold_count is disabled")
  82. return
  83. case "comb_three_user": //更新内部关系
  84. threebUserRelation()
  85. case "register_wxuser": //修复数据--注册会员
  86. registerWxUser()
  87. case "cancel_order": //下单24h未支付改为已取消
  88. OrderCancelAutomatically()
  89. case "cancel_order_once": //下单24h未支付改为已取消
  90. //go OnceOrderCancelAutomatically()
  91. case "send_cent": //补发积分执行一次
  92. //go patchCent()
  93. case "clear_update_orders": //清理过期物流数据
  94. clearUpdateOrders()
  95. case "syncWechatOrderShipping": //同步小程序发货信息到微信发货管理
  96. SyncWechatOrderShipping()
  97. default:
  98. beego.BeeLogger.Error("Didn't get task wity name:[%s]", name)
  99. }
  100. }