diff --git a/controller/game_card.go b/controller/game_card.go index c563dc4..7d62b4b 100644 --- a/controller/game_card.go +++ b/controller/game_card.go @@ -960,21 +960,78 @@ func PushWXPayNotice(c *gin.Context) { logger.Error("err:", err) } - err = model.UserVmUpdate(goodsOrder.Uid, int(goodsOrder.Vm)*-1, model.VmEventBuyGoods, "购买商品积分抵扣") + // 商品是否存在 + var goods model.Goods + err = model.NewGoodsQuerySet(model.DB).GoodsIdEq(goodsOrder.GoodsId).One(&goods) if err != nil { logger.Error("err:", err) + RespJson(c, status.BadRequest, nil) + return } - sub := model.DeliverTaskSub{ - Uid: uint32(goodsOrder.Uid), - UserAddressId: uint32(goodsOrder.AddressId), - OrderType: 2, - OrderId: goodsOrder.OrderId, - StoreId: 13, + + // 如果订单使用了优惠券,则更新为已使用 + if goodsOrder.CouponCode != "" { + model.NewUserCouponQuerySet(model.DB).CodeEq(goodsOrder.CouponCode).GetUpdater().SetState(2).Update() } - err = sub.Add() - if err != nil { - logger.Error("deliver task sub add err:", err) + + if strings.Contains(goods.Name, "预售") { // 主机预售券,需要发放优惠券;默认为已收货 + model.NewGoodsOrderQuerySet(model.DB).IDEq(goodsOrder.ID).GetUpdater(). + SetState(model.GoodsOrderStateReceived).Update() + + var couponInfo model.Coupon + err = model.NewCouponQuerySet(model.DB).ActivityIdEq(model.NewMachineActivityId).One(&couponInfo) + if err != nil { + logger.Error("coupons err:", err) + RespJson(c, status.InternalServerError, nil) + return + } + + couponCode, err := utils.GenerateRandomNumber19() + if err != nil { + logger.Error("GenerateRandomNumber19err:", err) + } + userCoupon := &model.UserCoupon{ + Uid: goodsOrder.Uid, + CouponId: couponInfo.ID, + CouponType: couponInfo.CouponType, + ActivityType: couponInfo.ActivityType, + ActivityId: couponInfo.ActivityId, + Value: uint32(notifyInfo.TotalFee), + State: 1, + ActiveStart: time.Now(), + ActiveEnd: time.Now().AddDate(0, 0, 180), + UseTime: time.Time{}, + MemberLevel: couponInfo.MemberLevel, + Approach: 0, + PromotionalSales: 0, + RedeemCode: "", + CategoryNumber: couponInfo.CategoryNumber, + CommodityNumber: couponInfo.CommodityNumber, + Code: couponCode, + } + + err = model.DB.Create(userCoupon).Error + if err != nil { + logger.Error("user coupon err:", err) + } + } else { + err = model.UserVmUpdate(goodsOrder.Uid, int(goodsOrder.Vm)*-1, model.VmEventBuyGoods, "购买商品积分抵扣") + if err != nil { + logger.Error("err:", err) + } + sub := model.DeliverTaskSub{ + Uid: uint32(goodsOrder.Uid), + UserAddressId: uint32(goodsOrder.AddressId), + OrderType: 2, + OrderId: goodsOrder.OrderId, + StoreId: 13, + } + err = sub.Add() + if err != nil { + logger.Error("deliver task sub add err:", err) + } } + fundRecord.Uid = uint32(goodsOrder.Uid) fundRecord.FundType = model.FundTypeBuyGoods fundRecord.Remark = "商城购买"