1.配合前端调整零售预售功能,相关数据需注意:
主机预售券 activity_id为10; 优惠券名称需要包含"预售"两个字; 2、新建商城订单时增加入参:CouponCode; 3、GoodsOrder表新增字段:coupon_code、coupon_name、coupon_discount;
This commit is contained in:
parent
5535e0492e
commit
1597ccf96b
|
@ -535,9 +535,10 @@ func PostagePackageInfo(c *gin.Context) {
|
||||||
|
|
||||||
func MemberRenewalUserCouponList(c *gin.Context) {
|
func MemberRenewalUserCouponList(c *gin.Context) {
|
||||||
req := struct {
|
req := struct {
|
||||||
PageIdx int `json:"page_idx"`
|
PageIdx int `json:"page_idx"`
|
||||||
PageSize int `json:"page_size"`
|
PageSize int `json:"page_size"`
|
||||||
State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期
|
State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期
|
||||||
|
ActivityId uint32 `json:"activity_id"` // 10-预售券
|
||||||
}{}
|
}{}
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
|
@ -569,6 +570,9 @@ func MemberRenewalUserCouponList(c *gin.Context) {
|
||||||
if req.State != 0 {
|
if req.State != 0 {
|
||||||
qs = qs.StateEq(req.State)
|
qs = qs.StateEq(req.State)
|
||||||
}
|
}
|
||||||
|
if req.ActivityId != 0 {
|
||||||
|
qs = qs.ActivityIdEq(req.ActivityId)
|
||||||
|
}
|
||||||
count, err := qs.Count()
|
count, err := qs.Count()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("count err:", err)
|
logger.Error("count err:", err)
|
||||||
|
|
|
@ -2416,21 +2416,78 @@ func HmPushWXPayNotice(c *gin.Context) {
|
||||||
logger.Error("err:", err)
|
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 {
|
if err != nil {
|
||||||
logger.Error("err:", err)
|
logger.Error("err:", err)
|
||||||
|
RespJson(c, status.BadRequest, nil)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
sub := model.DeliverTaskSub{
|
|
||||||
Uid: uint32(goodsOrder.Uid),
|
// 如果订单使用了优惠券,则更新为已使用
|
||||||
UserAddressId: uint32(goodsOrder.AddressId),
|
if goodsOrder.CouponCode != "" {
|
||||||
OrderType: 2,
|
model.NewUserCouponQuerySet(model.DB).CodeEq(goodsOrder.CouponCode).GetUpdater().SetState(2).Update()
|
||||||
OrderId: goodsOrder.OrderId,
|
|
||||||
StoreId: 13,
|
|
||||||
}
|
}
|
||||||
err = sub.Add()
|
|
||||||
if err != nil {
|
if strings.Contains(goods.Name, "预售") { // 主机预售券,需要发放优惠券;默认为已收货
|
||||||
logger.Error("deliver task sub add err:", err)
|
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(fundRecord.Amount),
|
||||||
|
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.Uid = uint32(goodsOrder.Uid)
|
||||||
fundRecord.FundType = model.FundTypeBuyGoods
|
fundRecord.FundType = model.FundTypeBuyGoods
|
||||||
fundRecord.Remark = "商城购买"
|
fundRecord.Remark = "商城购买"
|
||||||
|
|
|
@ -142,16 +142,25 @@ func GetCombinedCouponCode(goods *model.Goods, attribute *model.GoodsAttribute)
|
||||||
return uint32(result), nil
|
return uint32(result), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type MallOrderCreateReq struct {
|
||||||
|
GoodsId uint32 `json:"goods_id" binding:"required"` // 商品id
|
||||||
|
GoodsAttributeId uint32 `json:"goods_attribute_id" binding:"required"` // 规格id
|
||||||
|
GoodsAttributeComboId uint32 `json:"goods_attribute_combo_id" binding:"required"` // 套餐id
|
||||||
|
Quantity uint32 `json:"quantity" binding:"required"` // 购买数量
|
||||||
|
AddressId uint32 `json:"address_id"` // 收货地址
|
||||||
|
DeliveryExtraInfo string `json:"delivery_extra_info"` // 收货备注
|
||||||
|
CouponCode string `json:"coupon_code"` // 优惠券券码
|
||||||
|
}
|
||||||
|
|
||||||
|
// MallOrderCreate 新建商城订单
|
||||||
|
// @Summary 新建商城订单
|
||||||
|
// @Tags 商城, V1.4.5
|
||||||
|
// @Produce json
|
||||||
|
// @Accept json
|
||||||
|
// @Success 200 {object} model.HomeCategoryListResp
|
||||||
|
// @Router /api/v1/mall/order/create [post]
|
||||||
func MallOrderCreate(c *gin.Context) {
|
func MallOrderCreate(c *gin.Context) {
|
||||||
req := struct {
|
req := MallOrderCreateReq{}
|
||||||
GoodsId uint32 `json:"goods_id" binding:"required"` // 商品id
|
|
||||||
GoodsAttributeId uint32 `json:"goods_attribute_id" binding:"required"` // 规格id
|
|
||||||
GoodsAttributeComboId uint32 `json:"goods_attribute_combo_id" binding:"required"` // 套餐id
|
|
||||||
Quantity uint32 `json:"quantity" binding:"required"` // 购买数量
|
|
||||||
//PayType uint32 `json:"pay_type" binding:"required"` // 支付方式
|
|
||||||
AddressId uint32 `json:"address_id"` // 收货地址
|
|
||||||
DeliveryExtraInfo string `json:"delivery_extra_info"` // 收货备注
|
|
||||||
}{}
|
|
||||||
if err := c.ShouldBindJSON(&req); err != nil {
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
RespJson(c, status.BadRequest, nil)
|
RespJson(c, status.BadRequest, nil)
|
||||||
|
@ -194,7 +203,6 @@ func MallOrderCreate(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 库存不足
|
// 库存不足
|
||||||
//if goods.Stock < req.Quantity {
|
|
||||||
if attribute.Stock < req.Quantity {
|
if attribute.Stock < req.Quantity {
|
||||||
logger.Error("err:", err)
|
logger.Error("err:", err)
|
||||||
RespJson(c, status.OrderStockOut, nil)
|
RespJson(c, status.OrderStockOut, nil)
|
||||||
|
@ -212,13 +220,32 @@ func MallOrderCreate(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//// 计算总金额
|
// 查找用户优惠券,判断是否可用
|
||||||
//amount := uint32(0)
|
var userCoupon model.UserCoupon
|
||||||
//if req.PayType == model.PayTypeRm {
|
var coupon model.Coupon
|
||||||
// amount = req.Quantity * goods.PriceRm
|
if req.CouponCode != "" {
|
||||||
//} else if req.PayType == model.PayTypeVm {
|
err = model.NewUserCouponQuerySet(model.DB).CodeEq(req.CouponCode).One(&userCoupon)
|
||||||
// amount = req.Quantity * goods.PriceVm
|
if err != nil {
|
||||||
//}
|
log.Error().Msgf("query userCoupon err:%#v, code is:", err, req.CouponCode)
|
||||||
|
} else {
|
||||||
|
switch userCoupon.State {
|
||||||
|
case 2: // 已使用
|
||||||
|
log.Error().Msgf("优惠券已使用, code is:", req.CouponCode)
|
||||||
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
case 3: // 已过期
|
||||||
|
log.Error().Msgf("优惠券已过期, code is:", req.CouponCode)
|
||||||
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
}
|
||||||
|
if userCoupon.ActivityId != model.NewMachineActivityId {
|
||||||
|
log.Error().Msgf("优惠券类型与商品不匹配, code is:", req.CouponCode)
|
||||||
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
model.NewCouponQuerySet(model.DB).ActivityIdEq(userCoupon.ActivityId).One(&coupon)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取折扣(是否有会员折扣)
|
||||||
discount, err := goods.GetUserDiscount(user)
|
discount, err := goods.GetUserDiscount(user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Msgf("combo err:%#v", err)
|
log.Error().Msgf("combo err:%#v", err)
|
||||||
|
@ -232,26 +259,34 @@ func MallOrderCreate(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 计算总金额
|
||||||
totalVm := combo.PriceVm * req.Quantity
|
totalVm := combo.PriceVm * req.Quantity
|
||||||
totalRm := (combo.PriceRm*req.Quantity*discount + 5) / model.Rmb
|
|
||||||
if combo.PriceVm > 0 && user.UserVm.Vm < totalVm {
|
if combo.PriceVm > 0 && user.UserVm.Vm < totalVm {
|
||||||
log.Error().Msgf("vm not enough")
|
log.Error().Msgf("vm not enough")
|
||||||
RespJson(c, status.UserVmNotEnough, nil)
|
RespJson(c, status.UserVmNotEnough, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
totalRm := (combo.PriceRm*req.Quantity*discount + 5) / model.Rmb
|
||||||
|
couponDiscount := userCoupon.Value
|
||||||
|
if totalRm <= couponDiscount {
|
||||||
|
log.Error().Msgf("coupon value[%d] is err, code is:", couponDiscount, req.CouponCode)
|
||||||
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 开启事务
|
// 开启事务
|
||||||
tx := model.TransactionBegin()
|
tx := model.TransactionBegin()
|
||||||
// 订单创建逻辑
|
// 订单创建逻辑
|
||||||
order := model.GoodsOrder{
|
order := model.GoodsOrder{
|
||||||
OrderId: model.CreateGoodsOrderId(),
|
OrderId: model.CreateGoodsOrderId(),
|
||||||
SerialNo: model.CreateGoodsOrderSerialNo(),
|
SerialNo: model.CreateGoodsOrderSerialNo(),
|
||||||
Uid: uc.Uid,
|
Uid: uc.Uid,
|
||||||
GoodsId: req.GoodsId,
|
GoodsId: req.GoodsId,
|
||||||
Rm: totalRm,
|
Rm: totalRm - couponDiscount,
|
||||||
Vm: totalVm,
|
Vm: totalVm,
|
||||||
Quantity: req.Quantity,
|
Quantity: req.Quantity,
|
||||||
//PayType: req.PayType,
|
|
||||||
PayStatus: model.PayStatusInit,
|
PayStatus: model.PayStatusInit,
|
||||||
AddressId: req.AddressId,
|
AddressId: req.AddressId,
|
||||||
DeliveryExtraInfo: req.DeliveryExtraInfo,
|
DeliveryExtraInfo: req.DeliveryExtraInfo,
|
||||||
|
@ -261,35 +296,12 @@ func MallOrderCreate(c *gin.Context) {
|
||||||
GoodsAttributeComboId: req.GoodsAttributeComboId,
|
GoodsAttributeComboId: req.GoodsAttributeComboId,
|
||||||
Discount: discount,
|
Discount: discount,
|
||||||
State: model.GoodsOrderStateUnPay,
|
State: model.GoodsOrderStateUnPay,
|
||||||
|
CouponDiscount: userCoupon.Value,
|
||||||
|
CouponCode: userCoupon.Code,
|
||||||
|
CouponName: coupon.Name,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 减少库存
|
// 如果商品人民币价格为0,则是积分兑换
|
||||||
// 确认下是在支付后减少,还是下单后
|
|
||||||
//if req.PayType == model.PayTypeVm {
|
|
||||||
//var userVm model.UserVm
|
|
||||||
//err = model.NewUserVmQuerySet(model.DB).UidEq(uc.Uid).One(&userVm)
|
|
||||||
//if err != nil {
|
|
||||||
// tx.Rollback()
|
|
||||||
// logger.Error("err:", err)
|
|
||||||
// RespJson(c, status.InternalServerError, nil)
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
//if userVm.Vm < amount {
|
|
||||||
// tx.Rollback()
|
|
||||||
// logger.Error("err:", err)
|
|
||||||
// RespJson(c, status.UserVmNotEnough, nil)
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
//err := model.OrderDeductionUserVm(uc.Uid, int(userVm.Vm), int(amount)*-1, tx)
|
|
||||||
//if err != nil {
|
|
||||||
// tx.Rollback()
|
|
||||||
// logger.Error("err:", err)
|
|
||||||
// RespJson(c, status.InternalServerError, nil)
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
|
|
||||||
//if goods.DeliveryFee == 0 {
|
|
||||||
if combo.PriceRm == 0 {
|
if combo.PriceRm == 0 {
|
||||||
order.PayTime = time.Now()
|
order.PayTime = time.Now()
|
||||||
order.PayStatus = model.PayStatusOK
|
order.PayStatus = model.PayStatusOK
|
||||||
|
@ -423,26 +435,13 @@ func MallOrderCreate(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//var user model.User
|
|
||||||
//err = model.NewUserQuerySet(model.DB).UidEq(uint32(order.Uid)).One(&user)
|
|
||||||
//if err != nil {
|
|
||||||
// logger.Error("Order err:", err)
|
|
||||||
// RespJson(c, status.InternalServerError, nil)
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
configInfo, err := model.PayConfigInfo()
|
configInfo, err := model.PayConfigInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err)
|
logger.Error(err)
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
//webPay, err := wxpay.WebPay(order.SerialNo, order.Rm, user.WxOpenID, "N",
|
|
||||||
// wxpay.WxPayBuyGoods, configInfo.NotifyUrl)
|
|
||||||
//if err != nil {
|
|
||||||
// logger.Error(errors.New("WebPay err"))
|
|
||||||
// RespJson(c, status.InternalServerError, nil)
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: order.SerialNo, OrderId: order.OrderId, OrderType: 6, Attach: wxpay.WxPayBuyGoods}.Insert()
|
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: order.SerialNo, OrderId: order.OrderId, OrderType: 6, Attach: wxpay.WxPayBuyGoods}.Insert()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
|
@ -464,7 +463,7 @@ func MallOrderCreate(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
RespOK(c, ret)
|
RespOK(c, ret)
|
||||||
//RespOK(c, order)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1981,6 +1981,142 @@ func (qs CouponQuerySet) All(ret *[]Coupon) error {
|
||||||
return qs.db.Find(ret).Error
|
return qs.db.Find(ret).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CategoryNumberEq is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberEq(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number = ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberGt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberGt(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number > ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberGte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberGte(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number >= ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberIn(categoryNumber ...string) CouponQuerySet {
|
||||||
|
if len(categoryNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one categoryNumber in CategoryNumberIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("category_number IN (?)", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberLike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberLike(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number LIKE ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberLt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberLt(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number < ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberLte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberLte(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number <= ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberNe is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberNe(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number != ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberNotIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberNotIn(categoryNumber ...string) CouponQuerySet {
|
||||||
|
if len(categoryNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one categoryNumber in CategoryNumberNotIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("category_number NOT IN (?)", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberNotlike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CategoryNumberNotlike(categoryNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number NOT LIKE ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberEq is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberEq(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number = ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberGt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberGt(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number > ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberGte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberGte(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number >= ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberIn(commodityNumber ...string) CouponQuerySet {
|
||||||
|
if len(commodityNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one commodityNumber in CommodityNumberIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("commodity_number IN (?)", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberLike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberLike(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number LIKE ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberLt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberLt(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number < ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberLte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberLte(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number <= ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberNe is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberNe(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number != ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberNotIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberNotIn(commodityNumber ...string) CouponQuerySet {
|
||||||
|
if len(commodityNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one commodityNumber in CommodityNumberNotIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("commodity_number NOT IN (?)", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberNotlike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) CommodityNumberNotlike(commodityNumber string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number NOT LIKE ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
// Count is an autogenerated method
|
// Count is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs CouponQuerySet) Count() (int, error) {
|
func (qs CouponQuerySet) Count() (int, error) {
|
||||||
|
@ -2463,6 +2599,18 @@ func (qs CouponQuerySet) OrderAscByActivityType() CouponQuerySet {
|
||||||
return qs.w(qs.db.Order("activity_type ASC"))
|
return qs.w(qs.db.Order("activity_type ASC"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OrderAscByCategoryNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) OrderAscByCategoryNumber() CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("category_number ASC"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderAscByCommodityNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) OrderAscByCommodityNumber() CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("commodity_number ASC"))
|
||||||
|
}
|
||||||
|
|
||||||
// OrderAscByCouponType is an autogenerated method
|
// OrderAscByCouponType is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs CouponQuerySet) OrderAscByCouponType() CouponQuerySet {
|
func (qs CouponQuerySet) OrderAscByCouponType() CouponQuerySet {
|
||||||
|
@ -2511,6 +2659,12 @@ func (qs CouponQuerySet) OrderAscByOutCount() CouponQuerySet {
|
||||||
return qs.w(qs.db.Order("out_count ASC"))
|
return qs.w(qs.db.Order("out_count ASC"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OrderAscByRule is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) OrderAscByRule() CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("rule ASC"))
|
||||||
|
}
|
||||||
|
|
||||||
// OrderAscByUpdatedAt is an autogenerated method
|
// OrderAscByUpdatedAt is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs CouponQuerySet) OrderAscByUpdatedAt() CouponQuerySet {
|
func (qs CouponQuerySet) OrderAscByUpdatedAt() CouponQuerySet {
|
||||||
|
@ -2553,6 +2707,18 @@ func (qs CouponQuerySet) OrderDescByActivityType() CouponQuerySet {
|
||||||
return qs.w(qs.db.Order("activity_type DESC"))
|
return qs.w(qs.db.Order("activity_type DESC"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OrderDescByCategoryNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) OrderDescByCategoryNumber() CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("category_number DESC"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderDescByCommodityNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) OrderDescByCommodityNumber() CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("commodity_number DESC"))
|
||||||
|
}
|
||||||
|
|
||||||
// OrderDescByCouponType is an autogenerated method
|
// OrderDescByCouponType is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs CouponQuerySet) OrderDescByCouponType() CouponQuerySet {
|
func (qs CouponQuerySet) OrderDescByCouponType() CouponQuerySet {
|
||||||
|
@ -2601,6 +2767,12 @@ func (qs CouponQuerySet) OrderDescByOutCount() CouponQuerySet {
|
||||||
return qs.w(qs.db.Order("out_count DESC"))
|
return qs.w(qs.db.Order("out_count DESC"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OrderDescByRule is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) OrderDescByRule() CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("rule DESC"))
|
||||||
|
}
|
||||||
|
|
||||||
// OrderDescByUpdatedAt is an autogenerated method
|
// OrderDescByUpdatedAt is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs CouponQuerySet) OrderDescByUpdatedAt() CouponQuerySet {
|
func (qs CouponQuerySet) OrderDescByUpdatedAt() CouponQuerySet {
|
||||||
|
@ -2675,6 +2847,74 @@ func (qs CouponQuerySet) OutCountNotIn(outCount ...uint32) CouponQuerySet {
|
||||||
return qs.w(qs.db.Where("out_count NOT IN (?)", outCount))
|
return qs.w(qs.db.Where("out_count NOT IN (?)", outCount))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RuleEq is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleEq(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule = ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleGt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleGt(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule > ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleGte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleGte(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule >= ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleIn(rule ...string) CouponQuerySet {
|
||||||
|
if len(rule) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one rule in RuleIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("rule IN (?)", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleLike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleLike(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule LIKE ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleLt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleLt(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule < ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleLte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleLte(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule <= ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleNe is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleNe(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule != ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleNotIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleNotIn(rule ...string) CouponQuerySet {
|
||||||
|
if len(rule) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one rule in RuleNotIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("rule NOT IN (?)", rule))
|
||||||
|
}
|
||||||
|
|
||||||
|
// RuleNotlike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs CouponQuerySet) RuleNotlike(rule string) CouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("rule NOT LIKE ?", rule))
|
||||||
|
}
|
||||||
|
|
||||||
// UpdatedAtEq is an autogenerated method
|
// UpdatedAtEq is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs CouponQuerySet) UpdatedAtEq(updatedAt time.Time) CouponQuerySet {
|
func (qs CouponQuerySet) UpdatedAtEq(updatedAt time.Time) CouponQuerySet {
|
||||||
|
@ -2851,6 +3091,20 @@ func (u CouponUpdater) SetActivityType(activityType uint32) CouponUpdater {
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetCategoryNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (u CouponUpdater) SetCategoryNumber(categoryNumber string) CouponUpdater {
|
||||||
|
u.fields[string(CouponDBSchema.CategoryNumber)] = categoryNumber
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCommodityNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (u CouponUpdater) SetCommodityNumber(commodityNumber string) CouponUpdater {
|
||||||
|
u.fields[string(CouponDBSchema.CommodityNumber)] = commodityNumber
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
// SetCouponType is an autogenerated method
|
// SetCouponType is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (u CouponUpdater) SetCouponType(couponType string) CouponUpdater {
|
func (u CouponUpdater) SetCouponType(couponType string) CouponUpdater {
|
||||||
|
@ -2907,6 +3161,13 @@ func (u CouponUpdater) SetOutCount(outCount uint32) CouponUpdater {
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetRule is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (u CouponUpdater) SetRule(rule string) CouponUpdater {
|
||||||
|
u.fields[string(CouponDBSchema.Rule)] = rule
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
// SetUpdatedAt is an autogenerated method
|
// SetUpdatedAt is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (u CouponUpdater) SetUpdatedAt(updatedAt time.Time) CouponUpdater {
|
func (u CouponUpdater) SetUpdatedAt(updatedAt time.Time) CouponUpdater {
|
||||||
|
@ -2956,59 +3217,68 @@ func (f CouponDBSchemaField) String() string {
|
||||||
|
|
||||||
// CouponDBSchema stores db field names of Coupon
|
// CouponDBSchema stores db field names of Coupon
|
||||||
var CouponDBSchema = struct {
|
var CouponDBSchema = struct {
|
||||||
ID CouponDBSchemaField
|
ID CouponDBSchemaField
|
||||||
CreatedAt CouponDBSchemaField
|
CreatedAt CouponDBSchemaField
|
||||||
UpdatedAt CouponDBSchemaField
|
UpdatedAt CouponDBSchemaField
|
||||||
DeletedAt CouponDBSchemaField
|
DeletedAt CouponDBSchemaField
|
||||||
Name CouponDBSchemaField
|
Name CouponDBSchemaField
|
||||||
Describe CouponDBSchemaField
|
Describe CouponDBSchemaField
|
||||||
CouponType CouponDBSchemaField
|
Rule CouponDBSchemaField
|
||||||
ActivityType CouponDBSchemaField
|
CouponType CouponDBSchemaField
|
||||||
ActivityId CouponDBSchemaField
|
ActivityType CouponDBSchemaField
|
||||||
Value CouponDBSchemaField
|
ActivityId CouponDBSchemaField
|
||||||
OutCount CouponDBSchemaField
|
Value CouponDBSchemaField
|
||||||
UsedCount CouponDBSchemaField
|
OutCount CouponDBSchemaField
|
||||||
ActiveStart CouponDBSchemaField
|
UsedCount CouponDBSchemaField
|
||||||
ActiveEnd CouponDBSchemaField
|
ActiveStart CouponDBSchemaField
|
||||||
MemberLevel CouponDBSchemaField
|
ActiveEnd CouponDBSchemaField
|
||||||
|
MemberLevel CouponDBSchemaField
|
||||||
|
CategoryNumber CouponDBSchemaField
|
||||||
|
CommodityNumber CouponDBSchemaField
|
||||||
}{
|
}{
|
||||||
|
|
||||||
ID: CouponDBSchemaField("id"),
|
ID: CouponDBSchemaField("id"),
|
||||||
CreatedAt: CouponDBSchemaField("created_at"),
|
CreatedAt: CouponDBSchemaField("created_at"),
|
||||||
UpdatedAt: CouponDBSchemaField("updated_at"),
|
UpdatedAt: CouponDBSchemaField("updated_at"),
|
||||||
DeletedAt: CouponDBSchemaField("deleted_at"),
|
DeletedAt: CouponDBSchemaField("deleted_at"),
|
||||||
Name: CouponDBSchemaField("name"),
|
Name: CouponDBSchemaField("name"),
|
||||||
Describe: CouponDBSchemaField("describe"),
|
Describe: CouponDBSchemaField("describe"),
|
||||||
CouponType: CouponDBSchemaField("coupon_type"),
|
Rule: CouponDBSchemaField("rule"),
|
||||||
ActivityType: CouponDBSchemaField("activity_type"),
|
CouponType: CouponDBSchemaField("coupon_type"),
|
||||||
ActivityId: CouponDBSchemaField("activity_id"),
|
ActivityType: CouponDBSchemaField("activity_type"),
|
||||||
Value: CouponDBSchemaField("value"),
|
ActivityId: CouponDBSchemaField("activity_id"),
|
||||||
OutCount: CouponDBSchemaField("out_count"),
|
Value: CouponDBSchemaField("value"),
|
||||||
UsedCount: CouponDBSchemaField("used_count"),
|
OutCount: CouponDBSchemaField("out_count"),
|
||||||
ActiveStart: CouponDBSchemaField("active_start"),
|
UsedCount: CouponDBSchemaField("used_count"),
|
||||||
ActiveEnd: CouponDBSchemaField("active_end"),
|
ActiveStart: CouponDBSchemaField("active_start"),
|
||||||
MemberLevel: CouponDBSchemaField("member_level"),
|
ActiveEnd: CouponDBSchemaField("active_end"),
|
||||||
|
MemberLevel: CouponDBSchemaField("member_level"),
|
||||||
|
CategoryNumber: CouponDBSchemaField("category_number"),
|
||||||
|
CommodityNumber: CouponDBSchemaField("commodity_number"),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update updates Coupon fields by primary key
|
// Update updates Coupon fields by primary key
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (o *Coupon) Update(db *gorm.DB, fields ...CouponDBSchemaField) error {
|
func (o *Coupon) Update(db *gorm.DB, fields ...CouponDBSchemaField) error {
|
||||||
dbNameToFieldName := map[string]interface{}{
|
dbNameToFieldName := map[string]interface{}{
|
||||||
"id": o.ID,
|
"id": o.ID,
|
||||||
"created_at": o.CreatedAt,
|
"created_at": o.CreatedAt,
|
||||||
"updated_at": o.UpdatedAt,
|
"updated_at": o.UpdatedAt,
|
||||||
"deleted_at": o.DeletedAt,
|
"deleted_at": o.DeletedAt,
|
||||||
"name": o.Name,
|
"name": o.Name,
|
||||||
"describe": o.Describe,
|
"describe": o.Describe,
|
||||||
"coupon_type": o.CouponType,
|
"rule": o.Rule,
|
||||||
"activity_type": o.ActivityType,
|
"coupon_type": o.CouponType,
|
||||||
"activity_id": o.ActivityId,
|
"activity_type": o.ActivityType,
|
||||||
"value": o.Value,
|
"activity_id": o.ActivityId,
|
||||||
"out_count": o.OutCount,
|
"value": o.Value,
|
||||||
"used_count": o.UsedCount,
|
"out_count": o.OutCount,
|
||||||
"active_start": o.ActiveStart,
|
"used_count": o.UsedCount,
|
||||||
"active_end": o.ActiveEnd,
|
"active_start": o.ActiveStart,
|
||||||
"member_level": o.MemberLevel,
|
"active_end": o.ActiveEnd,
|
||||||
|
"member_level": o.MemberLevel,
|
||||||
|
"category_number": o.CategoryNumber,
|
||||||
|
"commodity_number": o.CommodityNumber,
|
||||||
}
|
}
|
||||||
u := map[string]interface{}{}
|
u := map[string]interface{}{}
|
||||||
for _, f := range fields {
|
for _, f := range fields {
|
||||||
|
@ -3329,6 +3599,210 @@ func (qs UserCouponQuerySet) ApproachNotIn(approach ...uint32) UserCouponQuerySe
|
||||||
return qs.w(qs.db.Where("approach NOT IN (?)", approach))
|
return qs.w(qs.db.Where("approach NOT IN (?)", approach))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CategoryNumberEq is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberEq(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number = ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberGt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberGt(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number > ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberGte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberGte(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number >= ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberIn(categoryNumber ...string) UserCouponQuerySet {
|
||||||
|
if len(categoryNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one categoryNumber in CategoryNumberIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("category_number IN (?)", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberLike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberLike(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number LIKE ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberLt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberLt(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number < ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberLte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberLte(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number <= ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberNe is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberNe(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number != ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberNotIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberNotIn(categoryNumber ...string) UserCouponQuerySet {
|
||||||
|
if len(categoryNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one categoryNumber in CategoryNumberNotIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("category_number NOT IN (?)", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CategoryNumberNotlike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CategoryNumberNotlike(categoryNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("category_number NOT LIKE ?", categoryNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeEq is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeEq(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code = ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeGt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeGt(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code > ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeGte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeGte(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code >= ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeIn(code ...string) UserCouponQuerySet {
|
||||||
|
if len(code) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one code in CodeIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("code IN (?)", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeLike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeLike(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code LIKE ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeLt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeLt(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code < ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeLte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeLte(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code <= ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeNe is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeNe(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code != ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeNotIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeNotIn(code ...string) UserCouponQuerySet {
|
||||||
|
if len(code) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one code in CodeNotIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("code NOT IN (?)", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CodeNotlike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CodeNotlike(code string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("code NOT LIKE ?", code))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberEq is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberEq(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number = ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberGt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberGt(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number > ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberGte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberGte(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number >= ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberIn(commodityNumber ...string) UserCouponQuerySet {
|
||||||
|
if len(commodityNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one commodityNumber in CommodityNumberIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("commodity_number IN (?)", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberLike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberLike(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number LIKE ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberLt is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberLt(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number < ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberLte is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberLte(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number <= ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberNe is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberNe(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number != ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberNotIn is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberNotIn(commodityNumber ...string) UserCouponQuerySet {
|
||||||
|
if len(commodityNumber) == 0 {
|
||||||
|
qs.db.AddError(errors.New("must at least pass one commodityNumber in CommodityNumberNotIn"))
|
||||||
|
return qs.w(qs.db)
|
||||||
|
}
|
||||||
|
return qs.w(qs.db.Where("commodity_number NOT IN (?)", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommodityNumberNotlike is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) CommodityNumberNotlike(commodityNumber string) UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Where("commodity_number NOT LIKE ?", commodityNumber))
|
||||||
|
}
|
||||||
|
|
||||||
// Count is an autogenerated method
|
// Count is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs UserCouponQuerySet) Count() (int, error) {
|
func (qs UserCouponQuerySet) Count() (int, error) {
|
||||||
|
@ -3737,6 +4211,24 @@ func (qs UserCouponQuerySet) OrderAscByApproach() UserCouponQuerySet {
|
||||||
return qs.w(qs.db.Order("approach ASC"))
|
return qs.w(qs.db.Order("approach ASC"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OrderAscByCategoryNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) OrderAscByCategoryNumber() UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("category_number ASC"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderAscByCode is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) OrderAscByCode() UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("code ASC"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderAscByCommodityNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) OrderAscByCommodityNumber() UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("commodity_number ASC"))
|
||||||
|
}
|
||||||
|
|
||||||
// OrderAscByCouponId is an autogenerated method
|
// OrderAscByCouponId is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs UserCouponQuerySet) OrderAscByCouponId() UserCouponQuerySet {
|
func (qs UserCouponQuerySet) OrderAscByCouponId() UserCouponQuerySet {
|
||||||
|
@ -3845,6 +4337,24 @@ func (qs UserCouponQuerySet) OrderDescByApproach() UserCouponQuerySet {
|
||||||
return qs.w(qs.db.Order("approach DESC"))
|
return qs.w(qs.db.Order("approach DESC"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OrderDescByCategoryNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) OrderDescByCategoryNumber() UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("category_number DESC"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderDescByCode is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) OrderDescByCode() UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("code DESC"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// OrderDescByCommodityNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (qs UserCouponQuerySet) OrderDescByCommodityNumber() UserCouponQuerySet {
|
||||||
|
return qs.w(qs.db.Order("commodity_number DESC"))
|
||||||
|
}
|
||||||
|
|
||||||
// OrderDescByCouponId is an autogenerated method
|
// OrderDescByCouponId is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (qs UserCouponQuerySet) OrderDescByCouponId() UserCouponQuerySet {
|
func (qs UserCouponQuerySet) OrderDescByCouponId() UserCouponQuerySet {
|
||||||
|
@ -4322,6 +4832,27 @@ func (u UserCouponUpdater) SetApproach(approach uint32) UserCouponUpdater {
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetCategoryNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (u UserCouponUpdater) SetCategoryNumber(categoryNumber string) UserCouponUpdater {
|
||||||
|
u.fields[string(UserCouponDBSchema.CategoryNumber)] = categoryNumber
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCode is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (u UserCouponUpdater) SetCode(code string) UserCouponUpdater {
|
||||||
|
u.fields[string(UserCouponDBSchema.Code)] = code
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetCommodityNumber is an autogenerated method
|
||||||
|
// nolint: dupl
|
||||||
|
func (u UserCouponUpdater) SetCommodityNumber(commodityNumber string) UserCouponUpdater {
|
||||||
|
u.fields[string(UserCouponDBSchema.CommodityNumber)] = commodityNumber
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
// SetCouponId is an autogenerated method
|
// SetCouponId is an autogenerated method
|
||||||
// nolint: dupl
|
// nolint: dupl
|
||||||
func (u UserCouponUpdater) SetCouponId(couponId uint32) UserCouponUpdater {
|
func (u UserCouponUpdater) SetCouponId(couponId uint32) UserCouponUpdater {
|
||||||
|
@ -4459,6 +4990,9 @@ var UserCouponDBSchema = struct {
|
||||||
Approach UserCouponDBSchemaField
|
Approach UserCouponDBSchemaField
|
||||||
PromotionalSales UserCouponDBSchemaField
|
PromotionalSales UserCouponDBSchemaField
|
||||||
RedeemCode UserCouponDBSchemaField
|
RedeemCode UserCouponDBSchemaField
|
||||||
|
CategoryNumber UserCouponDBSchemaField
|
||||||
|
CommodityNumber UserCouponDBSchemaField
|
||||||
|
Code UserCouponDBSchemaField
|
||||||
}{
|
}{
|
||||||
|
|
||||||
ID: UserCouponDBSchemaField("id"),
|
ID: UserCouponDBSchemaField("id"),
|
||||||
|
@ -4479,6 +5013,9 @@ var UserCouponDBSchema = struct {
|
||||||
Approach: UserCouponDBSchemaField("approach"),
|
Approach: UserCouponDBSchemaField("approach"),
|
||||||
PromotionalSales: UserCouponDBSchemaField("promotional_sales"),
|
PromotionalSales: UserCouponDBSchemaField("promotional_sales"),
|
||||||
RedeemCode: UserCouponDBSchemaField("redeem_code"),
|
RedeemCode: UserCouponDBSchemaField("redeem_code"),
|
||||||
|
CategoryNumber: UserCouponDBSchemaField("category_number"),
|
||||||
|
CommodityNumber: UserCouponDBSchemaField("commodity_number"),
|
||||||
|
Code: UserCouponDBSchemaField("code"),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update updates UserCoupon fields by primary key
|
// Update updates UserCoupon fields by primary key
|
||||||
|
@ -4503,6 +5040,9 @@ func (o *UserCoupon) Update(db *gorm.DB, fields ...UserCouponDBSchemaField) erro
|
||||||
"approach": o.Approach,
|
"approach": o.Approach,
|
||||||
"promotional_sales": o.PromotionalSales,
|
"promotional_sales": o.PromotionalSales,
|
||||||
"redeem_code": o.RedeemCode,
|
"redeem_code": o.RedeemCode,
|
||||||
|
"category_number": o.CategoryNumber,
|
||||||
|
"commodity_number": o.CommodityNumber,
|
||||||
|
"code": o.Code,
|
||||||
}
|
}
|
||||||
u := map[string]interface{}{}
|
u := map[string]interface{}{}
|
||||||
for _, f := range fields {
|
for _, f := range fields {
|
||||||
|
|
|
@ -9,7 +9,7 @@ const (
|
||||||
CommonSaleActivityId = 5 // 零售销售(普通会员)
|
CommonSaleActivityId = 5 // 零售销售(普通会员)
|
||||||
PrivilegeMemberActivityId = 6 // 零售销售(尊享会员
|
PrivilegeMemberActivityId = 6 // 零售销售(尊享会员
|
||||||
VmActivityId = 9 // 积分兑换优惠券
|
VmActivityId = 9 // 积分兑换优惠券
|
||||||
|
NewMachineActivityId = 10 // 主机预订券
|
||||||
)
|
)
|
||||||
|
|
||||||
// gen:qs
|
// gen:qs
|
||||||
|
@ -37,8 +37,8 @@ type Coupon struct {
|
||||||
IsDraw bool `json:"is_draw" gorm:"-"` //
|
IsDraw bool `json:"is_draw" gorm:"-"` //
|
||||||
}
|
}
|
||||||
|
|
||||||
// gen:qs
|
|
||||||
// 用户优惠券
|
// 用户优惠券
|
||||||
|
// gen:qs
|
||||||
type UserCoupon struct {
|
type UserCoupon struct {
|
||||||
Model
|
Model
|
||||||
|
|
||||||
|
|
|
@ -318,40 +318,39 @@ const (
|
||||||
type GoodsOrder struct {
|
type GoodsOrder struct {
|
||||||
Model
|
Model
|
||||||
|
|
||||||
OrderId uint32 `json:"order_id" gorm:"unique_index"` // 订单 id
|
OrderId uint32 `json:"order_id" gorm:"unique_index"` // 订单 id
|
||||||
SerialNo string `json:"serial_no" gorm:"unique_index"` // 序列号
|
SerialNo string `json:"serial_no" gorm:"unique_index"` // 序列号
|
||||||
|
Uid uint32 `json:"uid" gorm:"index"` //
|
||||||
Uid uint32 `json:"uid" gorm:"index"`
|
GoodsId uint32 `json:"goods_id" gorm:"index"` // 商品id
|
||||||
GoodsId uint32 `json:"goods_id" gorm:"index"` // 商品id
|
Amount uint32 `json:"amount"` // 订单金额
|
||||||
Amount uint32 `json:"amount"` // 订单金额
|
Quantity uint32 `json:"quantity"` // 购买商品的数量
|
||||||
Quantity uint32 `json:"quantity"` // 购买商品的数量
|
PayType uint32 `json:"pay_type"` // 支付方式 1-rm 2-vm
|
||||||
|
PayTime time.Time `json:"pay_time"` // 支付时间
|
||||||
PayType uint32 `json:"pay_type"` // 支付方式 1-rm 2-vm
|
PayStatus uint32 `json:"pay_status"` // 支付状态 1-待支付 2-已支付 3-失败
|
||||||
PayTime time.Time `json:"pay_time"` // 支付时间
|
State string `json:"state"` //
|
||||||
PayStatus uint32 `json:"pay_status"` // 支付状态 1-待支付 2-已支付 3-失败
|
AddressId uint32 `json:"address_id"` // 收货地址
|
||||||
State string `json:"state"` //
|
DeliveryExtraInfo string `json:"delivery_extra_info"` // 物流备注
|
||||||
AddressId uint32 `json:"address_id"` // 收货地址
|
DeliveryFee uint32 `json:"delivery_fee"` // 物流费用
|
||||||
DeliveryExtraInfo string `json:"delivery_extra_info"` // 物流备注
|
DeliveryTrackingNo string `json:"delivery_tracking_no"` // 物流单号
|
||||||
DeliveryFee uint32 `json:"delivery_fee"` // 物流费用
|
DeliveryCompany string `json:"delivery_company"` // 物流公司
|
||||||
DeliveryTrackingNo string `json:"delivery_tracking_no"` // 物流单号
|
DeliveryCompanyNo string `json:"delivery_company_no"` // 物流公司编号
|
||||||
DeliveryCompany string `json:"delivery_company"` // 物流公司
|
DeliveryStatus uint32 `json:"delivery_status"` // 物流状态 1-待发货 2-已发货 3-已收货
|
||||||
DeliveryCompanyNo string `json:"delivery_company_no"` // 物流公司编号
|
Rm uint32 `json:"rm"` //
|
||||||
DeliveryStatus uint32 `json:"delivery_status"` // 物流状态 1-待发货 2-已发货 3-已收货
|
Vm uint32 `json:"vm"` // 积分
|
||||||
Rm uint32 `json:"rm"` //
|
Discount uint32 `json:"discount"` // 折扣
|
||||||
Vm uint32 `json:"vm"` // 积分
|
GoodsAttributeId uint32 `json:"goods_attribute_id"` //
|
||||||
Discount uint32 `json:"discount"` // 折扣
|
GoodsAttributeComboId uint32 `json:"goods_attribute_combo_id"` //
|
||||||
GoodsAttributeId uint32 `json:"goods_attribute_id"` //
|
DeliverStoreId uint32 `json:"deliver_store_id"` // 发货门店
|
||||||
GoodsAttributeComboId uint32 `json:"goods_attribute_combo_id"` //
|
DeliverTime time.Time `json:"deliver_time"` // 发货时间
|
||||||
|
RefundExpressCompany string `json:"refund_express_company"` // 退货物流公司
|
||||||
DeliverStoreId uint32 `json:"deliver_store_id"` // 发货门店
|
RefundExpressCompanyNo string `json:"refund_express_company_no"` // 退货物流公司编号
|
||||||
DeliverTime time.Time `json:"deliver_time"` // 发货时间
|
RefundExpressNo string `json:"refund_express_no"` // 退货物流单号
|
||||||
RefundExpressCompany string `json:"refund_express_company"` // 退货物流公司
|
RefundReason string `json:"refund_reason" gorm:"type:text;"` //
|
||||||
RefundExpressCompanyNo string `json:"refund_express_company_no"` // 退货物流公司编号
|
ReceivedTime time.Time `json:"received_time"` // 签收时间
|
||||||
RefundExpressNo string `json:"refund_express_no"` // 退货物流单号
|
VersionId uint64 `json:"version_id"` // 乐观锁
|
||||||
RefundReason string `json:"refund_reason" gorm:"type:text;"`
|
CouponCode string `json:"coupon_code"` // 优惠券券码
|
||||||
ReceivedTime time.Time `json:"received_time"` // 签收时间
|
CouponName string `json:"coupon_name"` // 优惠券名称
|
||||||
|
CouponDiscount uint32 `json:"coupon_discount"` // 优惠券抵扣
|
||||||
VersionId uint64 `json:"version_id"` // 乐观锁
|
|
||||||
|
|
||||||
Goods *Goods `json:"goods" gorm:"-"`
|
Goods *Goods `json:"goods" gorm:"-"`
|
||||||
UserAddress *UserAddress `json:"user_address" gorm:"-"`
|
UserAddress *UserAddress `json:"user_address" gorm:"-"`
|
||||||
|
|
Loading…
Reference in New Issue
Block a user