From a82f7b57ae8783b00a2ea7465c189dc38c15f0b2 Mon Sep 17 00:00:00 2001 From: DengBiao <2319963317@qq.com> Date: Tue, 20 Feb 2024 19:14:23 +0800 Subject: [PATCH] update --- .../hdl_central_kitchen_for_school.go | 17 +++ app/admin/md/md_app_redis_key.go | 21 ++-- .../svc_central_kitchen_for_school.go | 113 +++++++++++------- 3 files changed, 96 insertions(+), 55 deletions(-) diff --git a/app/admin/hdl/enterprise_manage/hdl_central_kitchen_for_school.go b/app/admin/hdl/enterprise_manage/hdl_central_kitchen_for_school.go index 2a15352..6713bc9 100644 --- a/app/admin/hdl/enterprise_manage/hdl_central_kitchen_for_school.go +++ b/app/admin/hdl/enterprise_manage/hdl_central_kitchen_for_school.go @@ -10,6 +10,7 @@ import ( "applet/app/e" "applet/app/enum" "applet/app/utils" + "applet/app/utils/cache" "fmt" "github.com/gin-gonic/gin" "time" @@ -1183,6 +1184,15 @@ func SelfSupportForSchoolOrdRefund(c *gin.Context) { } func CentralKitchenForSchoolBatchAskForLeave(c *gin.Context) { + //TODO:: 加锁 Redis 锁,防并发 + getString, _ := cache.GetString(md.BatchAskForLeaveLockKeyForCentralKitchen) + if getString != "" { + e.OutErr(c, e.ERR, "请稍等,存在其他退款处理中!") + return + } + cache.Set(md.AuditLockKeyForCentralKitchenLockKey, "running") + utils.FilePutContents("DealCentralKitchenForSchoolBatchAskForLeave", "批量请假处理,开始时间:::"+time.Now().Format("2006-01-02 15:04:05")) + Kind := c.DefaultQuery("kind", "1") switch Kind { case "1": @@ -1190,6 +1200,7 @@ func CentralKitchenForSchoolBatchAskForLeave(c *gin.Context) { var req md.CentralKitchenForSchoolBatchAskForLeaveReqBySchool err := c.ShouldBindJSON(&req) if err != nil { + cache.Del(md.AuditLockKeyForCentralKitchenLockKey) err = validate.HandleValidateErr(err) err1 := err.(e.E) e.OutErr(c, err1.Code, err1.Error()) @@ -1207,6 +1218,7 @@ func CentralKitchenForSchoolBatchAskForLeave(c *gin.Context) { err = svc2.CentralKitchenForSchoolBatchAskForLeaveBySchool(req) if err != nil { + cache.Del(md.AuditLockKeyForCentralKitchenLockKey) e.OutErr(c, e.ERR, err.Error()) return } @@ -1216,6 +1228,7 @@ func CentralKitchenForSchoolBatchAskForLeave(c *gin.Context) { var req md.CentralKitchenForSchoolBatchAskForLeaveReqByGrade err := c.ShouldBindJSON(&req) if err != nil { + cache.Del(md.AuditLockKeyForCentralKitchenLockKey) err = validate.HandleValidateErr(err) err1 := err.(e.E) e.OutErr(c, err1.Code, err1.Error()) @@ -1233,6 +1246,7 @@ func CentralKitchenForSchoolBatchAskForLeave(c *gin.Context) { err = svc2.CentralKitchenForSchoolBatchAskForLeaveByGrade(req) if err != nil { + cache.Del(md.AuditLockKeyForCentralKitchenLockKey) e.OutErr(c, e.ERR, err.Error()) return } @@ -1242,6 +1256,7 @@ func CentralKitchenForSchoolBatchAskForLeave(c *gin.Context) { var req md.CentralKitchenForSchoolBatchAskForLeaveReqByClass err := c.ShouldBindJSON(&req) if err != nil { + cache.Del(md.AuditLockKeyForCentralKitchenLockKey) err = validate.HandleValidateErr(err) err1 := err.(e.E) e.OutErr(c, err1.Code, err1.Error()) @@ -1259,12 +1274,14 @@ func CentralKitchenForSchoolBatchAskForLeave(c *gin.Context) { err = svc2.CentralKitchenForSchoolBatchAskForLeaveByClass(req) if err != nil { + cache.Del(md.AuditLockKeyForCentralKitchenLockKey) e.OutErr(c, e.ERR, err.Error()) return } break } + cache.Del(md.AuditLockKeyForCentralKitchenLockKey) e.OutSuc(c, "success", nil) return } diff --git a/app/admin/md/md_app_redis_key.go b/app/admin/md/md_app_redis_key.go index 93a4cab..807bb7b 100644 --- a/app/admin/md/md_app_redis_key.go +++ b/app/admin/md/md_app_redis_key.go @@ -2,14 +2,15 @@ package md // 缓存key统一管理 const ( - AdminJwtTokenKey = "%s:smart_canteen_admin_jwt_token:%s" // jwt, 占位符:ip, admin:id - JwtTokenCacheTime = 3600 * 24 - AdminRolePermissionKey = "%s:smart_canteen_admin_role_permission:%s" // 占位符:ip, admin:id - AdminRolePermissionCacheTime = 3600 * 24 * 0.5 - AdminHomePageDataKey = "%s:smart_canteen_admin_home_data:%s" // 占位符:ip, admin:id - AdminHomePageDataCacheTime = 60 * 10 - CfgCacheTime = 86400 - AppCfgCacheKey = "smart_canteen:%s" // 占位符: key的第一个字母 - WxOfficialAccountCacheKey = "wx_official_account" // 占位符: key的第一个字母 - AuditLockKeyForCentralKitchenLockKey = "audit_lock_key_for_central_kitchen_lock_key" + AdminJwtTokenKey = "%s:smart_canteen_admin_jwt_token:%s" // jwt, 占位符:ip, admin:id + JwtTokenCacheTime = 3600 * 24 + AdminRolePermissionKey = "%s:smart_canteen_admin_role_permission:%s" // 占位符:ip, admin:id + AdminRolePermissionCacheTime = 3600 * 24 * 0.5 + AdminHomePageDataKey = "%s:smart_canteen_admin_home_data:%s" // 占位符:ip, admin:id + AdminHomePageDataCacheTime = 60 * 10 + CfgCacheTime = 86400 + AppCfgCacheKey = "smart_canteen:%s" // 占位符: key的第一个字母 + WxOfficialAccountCacheKey = "wx_official_account" // 占位符: key的第一个字母 + AuditLockKeyForCentralKitchenLockKey = "audit_lock_key_for_central_kitchen_lock_key" + BatchAskForLeaveLockKeyForCentralKitchen = "batch_ask_for_leave_lock_key_for_central_kitchen" ) diff --git a/app/admin/svc/enterprise_manage/svc_central_kitchen_for_school.go b/app/admin/svc/enterprise_manage/svc_central_kitchen_for_school.go index 66742c8..26c3506 100644 --- a/app/admin/svc/enterprise_manage/svc_central_kitchen_for_school.go +++ b/app/admin/svc/enterprise_manage/svc_central_kitchen_for_school.go @@ -6,7 +6,6 @@ import ( "applet/app/db/model" enum2 "applet/app/enum" "applet/app/utils" - "applet/app/utils/logx" "errors" "fmt" "strings" @@ -1261,12 +1260,15 @@ func CentralKitchenForSchoolBatchAskForLeaveBySchool(req md.CentralKitchenForSch } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - return err2 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{} @@ -1340,10 +1342,10 @@ func CentralKitchenForSchoolBatchAskForLeaveBySchool(req md.CentralKitchenForSch //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) go func() { for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - logx.Error(err2) - println("<<<>>>>Error:::", err2.Error()) + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) } } }() @@ -1418,12 +1420,15 @@ func CentralKitchenForSchoolBatchAskForLeaveBySchool(req md.CentralKitchenForSch } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err1 := JudgePackageOrdOrdState(vv) - if err1 != nil { - return err1 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{} @@ -1539,12 +1544,15 @@ func CentralKitchenForSchoolBatchAskForLeaveByGrade(req md.CentralKitchenForScho } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - return err2 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{} @@ -1616,12 +1624,15 @@ func CentralKitchenForSchoolBatchAskForLeaveByGrade(req md.CentralKitchenForScho } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - return err2 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{} @@ -1693,12 +1704,15 @@ func CentralKitchenForSchoolBatchAskForLeaveByGrade(req md.CentralKitchenForScho } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - return err2 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{} @@ -1803,12 +1817,15 @@ func CentralKitchenForSchoolBatchAskForLeaveByClass(req md.CentralKitchenForScho } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - return err2 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{} @@ -1880,12 +1897,15 @@ func CentralKitchenForSchoolBatchAskForLeaveByClass(req md.CentralKitchenForScho } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - return err2 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{} @@ -1957,12 +1977,15 @@ func CentralKitchenForSchoolBatchAskForLeaveByClass(req md.CentralKitchenForScho } //4、处理 `central_kitchen_for_school_package_ord` 的 订单状态 (ord_state) - for _, vv := range dealOutTradeNo { - err2 := JudgePackageOrdOrdState(vv) - if err2 != nil { - return err2 + go func() { + for _, vv := range dealOutTradeNo { + err11 := JudgePackageOrdOrdState(vv) + if err11 != nil { + fmt.Println("batchAskForLeaveJudgePackageOrdOrdStateErr>>>>>>>>>>>>>>>>>>>>>", err11.Error()) + utils.FilePutContents("batchAskForLeaveJudgePackageOrdOrdStateErr", err11.Error()) + } } - } + }() //5、新增 `central_kitchen_for_school_user_refund_day` 数据 centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{}