diff --git a/app/admin/models/marketing.go b/app/admin/models/marketing.go index 22c991d..da5d711 100644 --- a/app/admin/models/marketing.go +++ b/app/admin/models/marketing.go @@ -239,6 +239,10 @@ func (m *ErpMarketingCouponListReq) List() (*ErpMarketingCouponListResp, error) return resp, err } + for i, v := range couponList { + couponList[i].Amount = v.Amount / 100 + } + resp.List = couponList return resp, nil @@ -1047,3 +1051,39 @@ func WXGenerateScheme(req *GenerateSchemeReq) (*GenerateSchemeResp, error) { } return &resp, nil } + +// UpdateErpCouponState 每天凌晨00:45更新营销管理优惠券发放状态 +func UpdateErpCouponState() { + now := time.Now() + + // 更新符合条件的优惠券的状态 + err := orm.Eloquent.Table("erp_coupon"). + Where("state = ? AND start_time IS NOT NULL AND DATE_ADD(start_time, INTERVAL active_date DAY) < ?", 3, now). + Updates(map[string]interface{}{ + "state": 4, + "updated_at": now, + }).Error + + if err != nil { + logger.Errorf("Failed to update ErpCoupon state: %v", err) + return + } + + logger.Info("Successfully updated ErpCoupon state") +} + +// UpdateUserCoupon 每天凌晨00:30更新用户优惠券 +func UpdateUserCoupon() { + now := time.Now() + // 直接更新过期的优惠券状态 + err := orm.Eloquent.Table("user_coupon").Where("state = ? AND active_end < ?", 1, now). + Updates(map[string]interface{}{ + "state": 3, + "updated_at": now, + }).Error + if err != nil { + logger.Errorf("Failed to update expired user coupons: %v", err) + return + } + logger.Info("Successfully updated expired user coupons") +} diff --git a/cmd/api/server.go b/cmd/api/server.go index 7625989..06847f1 100644 --- a/cmd/api/server.go +++ b/cmd/api/server.go @@ -195,6 +195,18 @@ func run() error { fmt.Println("err:", err) } + // 每天凌晨00:30更新用户优惠券 + err = s.Every(1).Day().At("00:30").Do(models.UpdateUserCoupon) + if err != nil { + fmt.Println("err:", err) + } + + // 每天凌晨00:45更新营销管理优惠券发放状态 + err = s.Every(1).Day().At("00:45").Do(models.UpdateErpCouponState) + if err != nil { + fmt.Println("err:", err) + } + <-s.Start() }()