feat:运费包
This commit is contained in:
parent
443cda8e04
commit
c4d5ac06d8
|
@ -7,7 +7,6 @@ import (
|
|||
"github.com/spf13/cobra"
|
||||
"mh-server/config"
|
||||
"mh-server/lib/auth"
|
||||
//"mh-server/lib/sms"
|
||||
"mh-server/lib/utils"
|
||||
"mh-server/model"
|
||||
"mh-server/router"
|
||||
|
@ -18,7 +17,7 @@ func runServer() {
|
|||
gin.SetMode(gin.DebugMode)
|
||||
|
||||
router.ConfigAppRouter(server)
|
||||
//OrderCancelId()
|
||||
|
||||
err := server.Run(fmt.Sprintf(":%d", config.AppConfig.ServerPort))
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
package controller
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"mh-server/lib/auth"
|
||||
"mh-server/lib/status"
|
||||
"mh-server/lib/utils"
|
||||
"mh-server/lib/wxpay"
|
||||
"mh-server/model"
|
||||
"time"
|
||||
)
|
||||
|
@ -81,7 +83,8 @@ func UserMemberRenewalState(c *gin.Context) {
|
|||
if err == model.RecordNotFound || uint32(user.MemberExpire.Unix()) != activityMemberRenewal.MemberSerial {
|
||||
//if user.MemberExpire.Before(utils.Now().AddDate(0, 1, 0)) &&
|
||||
// user.MemberExpire.After(utils.Now()) {
|
||||
if user.MemberExpire.Before(utils.Now().AddDate(0, 0, model.GetActivityRenewalConfig().PopTrap)) {
|
||||
if user.MemberExpire.Before(utils.Now().AddDate(0, 0,
|
||||
model.GetActivityRenewalConfig().PopTrap)) {
|
||||
activityMemberRenewal = model.ActivityMemberRenewal{
|
||||
ActivityId: 1,
|
||||
Uid: uc.Uid,
|
||||
|
@ -114,7 +117,8 @@ func UserMemberRenewalState(c *gin.Context) {
|
|||
isPop = false
|
||||
}
|
||||
}
|
||||
if activityMemberRenewal.StartTime.AddDate(0, 0, model.GetActivityRenewalConfig().ActivityContinuity).Before(utils.Now()) {
|
||||
if activityMemberRenewal.StartTime.AddDate(0, 0,
|
||||
model.GetActivityRenewalConfig().ActivityContinuity).Before(utils.Now()) {
|
||||
activityMemberRenewal.State = 3
|
||||
_, err = model.NewActivityMemberRenewalQuerySet(model.DB).IDEq(activityMemberRenewal.ID).GetUpdater().
|
||||
SetState(3).UpdateNum()
|
||||
|
@ -322,6 +326,187 @@ func UserMemberRenewalCouponDraw(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
func PostagePackageBuy(c *gin.Context) {
|
||||
//req := struct {
|
||||
//}{}
|
||||
//if err := c.ShouldBindJSON(&req); err != nil {
|
||||
// logger.Error(err)
|
||||
// RespJson(c, status.BadRequest, nil)
|
||||
// return
|
||||
//}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
//uc = new(auth.UserClaims)
|
||||
//uc.Uid = 14531402
|
||||
user := model.GetUserByUid(uc.Uid)
|
||||
if user == nil {
|
||||
logger.Error("user is nil")
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if !user.IsMember() || user.MemberExpire.Before(time.Now()) {
|
||||
logger.Error("user not member")
|
||||
RespJson(c, status.NotMember, nil)
|
||||
return
|
||||
}
|
||||
info, err := model.PostagePackageFeeConfigInfo()
|
||||
if err != nil {
|
||||
logger.Error("postage package fee err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
orderSn := model.GetOrderSn()
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: user.MemberLevel,
|
||||
OrderType: 11, UserCouponId: 0}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("web pay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
configInfo, err := model.PayConfigInfo()
|
||||
if err != nil {
|
||||
logger.Error(err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(orderSn, info.PostagePackageFee, user.WxOpenID, "N", wxpay.WxPayPostagePackage, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("web pay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
action, err := model.IsFirstUserAction(uc.Uid, 2)
|
||||
if err != nil {
|
||||
logger.Error("user action exist err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
first := uint32(0)
|
||||
if !action {
|
||||
first = 1
|
||||
}
|
||||
log := &model.UserActionLog{
|
||||
Uid: uc.Uid,
|
||||
ActionType: 2,
|
||||
First: first,
|
||||
}
|
||||
err = model.DB.Create(log).Error
|
||||
if err != nil {
|
||||
logger.Error("create user action log err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
}()
|
||||
tips := fmt.Sprintf("支付成功,会员已延长%d天", model.GetPostagePackageMemberDuration(user.MemberLevel))
|
||||
ret := map[string]interface{}{
|
||||
"web_pay": webPay,
|
||||
"tip": tips,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
func UserCouponList(c *gin.Context) {
|
||||
req := struct {
|
||||
PageIdx int `json:"page_idx"`
|
||||
PageSize int `json:"page_size"`
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 2-关注公众号 3-运费包
|
||||
}{}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Error(err)
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
//uc = &auth.UserClaims{Uid: 87564738}
|
||||
|
||||
page := req.PageIdx - 1
|
||||
if page < 0 {
|
||||
page = 0
|
||||
}
|
||||
if req.PageSize == 0 {
|
||||
req.PageSize = 10
|
||||
}
|
||||
|
||||
qs := model.NewUserCouponQuerySet(model.DB).UidEq(uc.Uid).StateEq(1)
|
||||
if req.ActivityType != 0 {
|
||||
qs = qs.ActivityTypeEq(3)
|
||||
}
|
||||
count, err := qs.Count()
|
||||
if err != nil {
|
||||
logger.Error("count err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
totalPage := count/req.PageSize + 1
|
||||
|
||||
var coupons []model.UserCoupon
|
||||
err = qs.OrderAscByID().Offset(page * req.PageSize).Limit(req.PageSize).All(&coupons)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error(err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ret := map[string]interface{}{
|
||||
"list": coupons,
|
||||
"total_page": totalPage,
|
||||
"page_idx": req.PageIdx,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
func PostagePackageInfo(c *gin.Context) {
|
||||
//req := struct {
|
||||
//}{}
|
||||
//if err := c.ShouldBindJSON(&req); err != nil {
|
||||
// logger.Error(err)
|
||||
// RespJson(c, status.BadRequest, nil)
|
||||
// return
|
||||
//}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
action, err := model.IsFirstUserAction(uc.Uid, 1)
|
||||
if err != nil {
|
||||
logger.Error("user action exist err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
first := uint32(0)
|
||||
if !action {
|
||||
first = 1
|
||||
}
|
||||
log := model.UserActionLog{
|
||||
Uid: uc.Uid,
|
||||
ActionType: 1,
|
||||
First: first,
|
||||
}
|
||||
err = model.DB.Create(log).Error
|
||||
if err != nil {
|
||||
logger.Error("create user action log err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, nil)
|
||||
return
|
||||
}
|
||||
|
||||
func MemberRenewalUserCouponList(c *gin.Context) {
|
||||
req := struct {
|
||||
PageIdx int `json:"page_idx"`
|
||||
|
|
|
@ -344,13 +344,31 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
// 库存不足取消订单
|
||||
orderSn := model.GetOrderSn()
|
||||
memberRecord := &model.UserOpenMemberRecord{OpenNo: orderSn, OrderType: 2, Order: &order}
|
||||
err = memberRecord.OrderRefund(notifyInfo.OutTradeNo)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
if order.PostageType == 1 {
|
||||
// 库存不足取消订单
|
||||
orderSn := model.GetOrderSn()
|
||||
memberRecord := &model.UserOpenMemberRecord{OpenNo: orderSn, OrderType: 2, Order: &order}
|
||||
err = memberRecord.OrderRefund(notifyInfo.OutTradeNo)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO
|
||||
if order.PostageType == 2 {
|
||||
var userCoupon model.UserCoupon
|
||||
err = model.NewUserCouponQuerySet(model.DB).ActivityTypeEq(3).UidEq(uint32(order.Uid)).
|
||||
StateEq(2).OrderAscByID().Limit(1).One(&userCoupon)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error("user coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(userCoupon.ID).GetUpdater().SetState(1).Update()
|
||||
if err != nil {
|
||||
logger.Error("user coupon err:", err)
|
||||
}
|
||||
}
|
||||
|
||||
//err = model.UserOpenMemberRecord{Uid: uint32(order.Uid), OpenNo: orderSn, OrderId: order.ID, OrderType: 2}.Insert()
|
||||
|
@ -409,7 +427,9 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
fundRecord.FundType = model.FundTypeExpressFee
|
||||
fundRecord.Remark = "借卡邮费"
|
||||
|
||||
} else if notifyInfo.Attach == wxpay.WxPayMember {
|
||||
}
|
||||
|
||||
if notifyInfo.Attach == wxpay.WxPayMember {
|
||||
logger.Info("开通会员 支付成功:")
|
||||
logger.Info("用户uid:", notifyInfo.OutTradeNo)
|
||||
|
||||
|
@ -643,7 +663,9 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
fmt.Println("notify.TotalFee:", notifyInfo.TotalFee)
|
||||
fmt.Println("notify.OutTradeNo:", notifyInfo.OutTradeNo)
|
||||
|
||||
} else if notifyInfo.Attach == wxpay.WxPayDeposit {
|
||||
}
|
||||
|
||||
if notifyInfo.Attach == wxpay.WxPayDeposit {
|
||||
record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
err := record.GetByOpenNo()
|
||||
if err != nil {
|
||||
|
@ -694,7 +716,9 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
logger.Error("update user open member record state:err", err)
|
||||
}
|
||||
//}
|
||||
} else if notifyInfo.Attach == wxpay.WxPayBuyGoods {
|
||||
}
|
||||
|
||||
if notifyInfo.Attach == wxpay.WxPayBuyGoods {
|
||||
_, err = model.NewGoodsOrderQuerySet(model.DB).SerialNoEq(notifyInfo.OutTradeNo).GetUpdater().
|
||||
SetPayTime(time.Now()).
|
||||
SetPayStatus(model.PayStatusOK).
|
||||
|
@ -732,7 +756,9 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
fundRecord.Uid = uint32(goodsOrder.Uid)
|
||||
fundRecord.FundType = model.FundTypeBuyGoods
|
||||
fundRecord.Remark = "商城购买"
|
||||
} else if notifyInfo.Attach == wxpay.WxPayUpgradeMember {
|
||||
}
|
||||
|
||||
if notifyInfo.Attach == wxpay.WxPayUpgradeMember {
|
||||
record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
err := record.GetByOpenNo()
|
||||
if err != nil {
|
||||
|
@ -828,7 +854,9 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypeUpgradeMember
|
||||
fundRecord.Remark = "升级会员"
|
||||
} else if notifyInfo.Attach == wxpay.WxPayMemberExpireDelay {
|
||||
}
|
||||
|
||||
if notifyInfo.Attach == wxpay.WxPayMemberExpireDelay {
|
||||
record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
err := record.GetByOpenNo()
|
||||
if err != nil {
|
||||
|
@ -847,8 +875,8 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
_, err = model.NewUserMemberExpireDelayQuerySet(model.DB).UidEq(record.Uid).MemberExpireEq(user.MemberExpire).GetUpdater().
|
||||
SetIsPay(1).UpdateNum()
|
||||
_, err = model.NewUserMemberExpireDelayQuerySet(model.DB).UidEq(record.Uid).MemberExpireEq(user.MemberExpire).
|
||||
GetUpdater().SetIsPay(1).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
|
@ -860,7 +888,9 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypeMemberExpireDelay
|
||||
fundRecord.Remark = "会员过期滞纳金"
|
||||
} else if notifyInfo.Attach == wxpay.WxPayShareCardRetrieve {
|
||||
}
|
||||
|
||||
if notifyInfo.Attach == wxpay.WxPayShareCardRetrieve {
|
||||
record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
err := record.GetByOpenNo()
|
||||
if err != nil {
|
||||
|
@ -916,6 +946,114 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
fundRecord.Remark = "共享卡收回卡快递费"
|
||||
}
|
||||
|
||||
if notifyInfo.Attach == wxpay.WxPayPostagePackage {
|
||||
record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
err := record.GetByOpenNo()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
if record.State == 2 {
|
||||
ret.ReturnCode = "SUCCESS"
|
||||
RespBodyXML(c, ret)
|
||||
return
|
||||
}
|
||||
var activity model.Activity
|
||||
err = model.NewActivityQuerySet(model.DB).IDEq(3).One(&activity)
|
||||
if err != nil {
|
||||
logger.Error("coupon err:", err)
|
||||
return
|
||||
}
|
||||
var coupon model.Coupon
|
||||
err = model.NewCouponQuerySet(model.DB).ActivityTypeEq(activity.ActivityType).One(&coupon)
|
||||
if err != nil {
|
||||
logger.Error("coupon err:", err)
|
||||
ret.ReturnCode = "Error"
|
||||
RespBodyXML(c, ret)
|
||||
return
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
}()
|
||||
|
||||
//info, err := model.PostagePackageFeeConfigInfo()
|
||||
//if err != nil {
|
||||
// logger.Error("postage package fee config err")
|
||||
// ret.ReturnCode = "Error"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
|
||||
//originalMemberConfig, err := model.GetMemberConfig(record.MemberLevel)
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// ret.ReturnCode = "Error"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
//days := (info.PostagePackageFee * 365) / originalMemberConfig.MemberFee
|
||||
user := model.GetUserByUid(record.Uid)
|
||||
days := model.GetPostagePackageMemberDuration(user.MemberLevel)
|
||||
durationRecord := &model.UserMemberDurationRecord{
|
||||
Uid: record.Uid,
|
||||
Duration: days,
|
||||
EventType: 1,
|
||||
MemberLevel: record.MemberLevel,
|
||||
}
|
||||
nowTime := time.Now()
|
||||
|
||||
go func() {
|
||||
begin := model.DB.Begin()
|
||||
for i := 0; i < 10; i++ {
|
||||
userCoupon := &model.UserCoupon{
|
||||
Uid: record.Uid,
|
||||
CouponId: coupon.ID,
|
||||
CouponType: coupon.CouponType,
|
||||
ActivityType: activity.ActivityType,
|
||||
ActivityId: activity.ID,
|
||||
Value: coupon.Value,
|
||||
State: 1,
|
||||
ActiveStart: nowTime,
|
||||
ActiveEnd: nowTime.AddDate(10, 0, 0),
|
||||
MemberLevel: record.MemberLevel,
|
||||
}
|
||||
err = begin.Create(userCoupon).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("user coupon err:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
memberExpire := user.MemberExpire.AddDate(0, 0, int(days))
|
||||
err := model.NewUserQuerySet(begin).UidEq(record.Uid).GetUpdater().SetMemberExpire(memberExpire).Update()
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("update member expire err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = begin.Create(durationRecord).Error
|
||||
if err != nil {
|
||||
logger.Error("create duration record err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("commit err:", err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypePostagePackageFee
|
||||
fundRecord.Remark = "购买运费包"
|
||||
}
|
||||
|
||||
fundRecord.Amount = int64(notifyInfo.TotalFee)
|
||||
fundRecord.TransactionId = notifyInfo.TransactionId
|
||||
fundRecord.OutTradeNo = notifyInfo.OutTradeNo
|
||||
|
|
|
@ -160,10 +160,6 @@ var orderCreateLocker sync.Mutex
|
|||
|
||||
// 创建订单
|
||||
func RentCardOrderCreate(c *gin.Context) {
|
||||
//type Goods struct {
|
||||
// Price uint32 `json:"price"`
|
||||
//}
|
||||
|
||||
req := struct {
|
||||
GameCardList []model.CardInfo `json:"game_card_list"`
|
||||
StoreId uint32 `json:"store_id"`
|
||||
|
@ -171,6 +167,7 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
Price uint32 `json:"price"`
|
||||
DeliveryType uint8 `json:"delivery_type"` // 取货方式
|
||||
ExpressFee uint32 `json:"express_fee"`
|
||||
UserCouponId uint32 `json:"user_coupon_id"`
|
||||
}{}
|
||||
|
||||
bodyString, err := ioutil.ReadAll(c.Request.Body)
|
||||
|
@ -191,24 +188,16 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//if err := c.ShouldBindJSON(&req);err != nil {
|
||||
// logger.Error(err)
|
||||
// RespJson(c,status.BadRequest,nil)
|
||||
// return
|
||||
//}
|
||||
|
||||
fmt.Println("商品下单 req:", req)
|
||||
|
||||
//uc := &struct {
|
||||
// Uid uint32 `json:"uid"`
|
||||
//}{}
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.BadRequest, nil)
|
||||
return
|
||||
}
|
||||
//uc.Uid = 62389201
|
||||
|
||||
user := model.GetUserByUid(uc.Uid)
|
||||
if user == nil {
|
||||
logger.Error(errors.New("GetUserByUid err"))
|
||||
|
@ -228,8 +217,7 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//fmt.Println("Deposit:", user.Deposit)
|
||||
//fmt.Println("MemberDeposit:", memberConfig.MemberDeposit)
|
||||
|
||||
if user.Deposit != memberConfig.MemberDeposit {
|
||||
logger.Error(errors.New("user deposit 0"))
|
||||
RespJson(c, status.OrderUnpaidDeposit, nil)
|
||||
|
@ -240,16 +228,15 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
for _, v := range req.GameCardList {
|
||||
cardCount += v.Count
|
||||
}
|
||||
//fmt.Println("cardCount:", cardCount)
|
||||
|
||||
rentCard := model.GetUserRentCard(uc.Uid)
|
||||
if rentCard == nil {
|
||||
//logger.Error(errors.New("GetUserByUid err"))
|
||||
//RespJson(c, status.InternalServerError, nil)
|
||||
//return
|
||||
//fmt.Println("CardMax", memberConfig.CardMax)
|
||||
rentCard = &model.UserRentCard{LevelRentCount: memberConfig.CardMax, CanRentCount: memberConfig.CardMax}
|
||||
}
|
||||
//fmt.Println("rentCard", rentCard.CanRentCount)
|
||||
|
||||
if uc.Uid == 15304136 || uc.Uid == 45935373 {
|
||||
rentCard.CanRentCount -= 1
|
||||
}
|
||||
|
@ -317,6 +304,21 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
Postage: req.ExpressFee,
|
||||
CooperativeBusinessId: store.CooperativeBusinessId,
|
||||
CooperativeName: store.CooperativeName,
|
||||
PostageType: 1,
|
||||
}
|
||||
var userCoupon model.UserCoupon
|
||||
//err = model.NewUserCouponQuerySet(model.DB).ActivityTypeEq(3).UidEq(uc.Uid).StateEq(1).
|
||||
// OrderAscByID().Limit(1).One(&userCoupon)
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&userCoupon)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error("user coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if err == nil && userCoupon.Uid == uc.Uid &&
|
||||
userCoupon.State == 1 && userCoupon.ActivityType == 3 {
|
||||
req.Price = 0
|
||||
order.PostageType = 2
|
||||
}
|
||||
|
||||
// 以支付成功作为订单下单成功的依据,不是订单创建 已修改
|
||||
|
@ -396,6 +398,15 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if userCoupon.ID != 0 {
|
||||
err = model.NewUserCouponQuerySet(tx).IDEq(userCoupon.ID).GetUpdater().SetState(2).Update()
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
logger.Error("update user coupon state err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
}
|
||||
err = tx.Commit().Error
|
||||
if err != nil {
|
||||
tx.Rollback()
|
||||
|
@ -463,7 +474,7 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
}
|
||||
|
||||
//orderId := fmt.Sprintf("%d", order.ID)
|
||||
////orderId = "100000"
|
||||
//orderId = "100000"
|
||||
//fmt.Println("orderId", orderId)
|
||||
//fmt.Println("Price", req.Price)
|
||||
//fmt.Println("WxOpenID", user.WxOpenID)
|
||||
|
@ -669,6 +680,7 @@ func OrderAmount(c *gin.Context) {
|
|||
StoreId uint32 `json:"store_id" binding:"required"`
|
||||
UserAddressId uint32 `json:"user_address_id" binding:"required"`
|
||||
Price uint32 `json:"price" `
|
||||
UserCouponId uint32 `json:"user_coupon_id"`
|
||||
}{}
|
||||
if err := c.ShouldBindJSON(&req); err != nil {
|
||||
logger.Error("ShouldBindJSON err:", err)
|
||||
|
@ -676,6 +688,13 @@ func OrderAmount(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
uc := auth.GetCurrentUser(c)
|
||||
if uc == nil {
|
||||
logger.Error("uc is nil")
|
||||
RespJson(c, status.Unauthorized, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
eg errgroup.Group
|
||||
userAddress = &model.UserAddress{}
|
||||
|
@ -706,16 +725,47 @@ func OrderAmount(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//model.UserCoupon{}
|
||||
expressFee := model.ExpressFeeProvince
|
||||
//if userAddress.Province != "广东省" {
|
||||
if userAddress.Province != store.Province {
|
||||
expressFee = model.ExpressFeeOutsideProvince
|
||||
}
|
||||
|
||||
hasPostagePackage := 0
|
||||
if req.UserCouponId != 0 {
|
||||
var userCoupon model.UserCoupon
|
||||
err := model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&userCoupon)
|
||||
if err != nil {
|
||||
logger.Error("user coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
if userCoupon.State == 1 && userCoupon.ActivityType == 3 && userCoupon.Uid == uc.Uid {
|
||||
expressFee = 0
|
||||
}
|
||||
} else {
|
||||
exist, err := model.QueryRecordExist(fmt.Sprintf("SELECT * FROM user_coupon WHERE uid=%d AND activity_type=3 AND state=1", uc.Uid))
|
||||
if err != nil {
|
||||
logger.Error("user coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
if !exist {
|
||||
err := model.DB.Exec("UPDATE statistic SET count=count+1 WHERE event_type=1").Error
|
||||
if err != nil {
|
||||
logger.Error("update statistic err:", err)
|
||||
}
|
||||
hasPostagePackage = 1
|
||||
}
|
||||
}
|
||||
hasPostagePackage = 1
|
||||
|
||||
ret := map[string]interface{}{
|
||||
"total_amount": req.Price + uint32(expressFee),
|
||||
"express_fee": expressFee,
|
||||
"total_amount": req.Price + uint32(expressFee),
|
||||
"express_fee": expressFee,
|
||||
"has_postage_package": hasPostagePackage,
|
||||
}
|
||||
RespOK(c, ret)
|
||||
return
|
||||
|
@ -911,21 +961,37 @@ func OrderCancel(c *gin.Context) {
|
|||
order = orderInfo
|
||||
fmt.Println("order:", order)
|
||||
if isRecede {
|
||||
outTradeNo, err := model.GetWxPayExpressFeeRefundRecord(order.ID)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//m.OpenNo = model.GetOrderSn()
|
||||
memberRecord := &model.UserOpenMemberRecord{OpenNo: model.GetOrderSn(), OrderType: 2, Order: &order}
|
||||
err = memberRecord.OrderRefund(outTradeNo)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
if order.PostageType == 1 {
|
||||
outTradeNo, err := model.GetWxPayExpressFeeRefundRecord(order.ID)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//m.OpenNo = model.GetOrderSn()
|
||||
memberRecord := &model.UserOpenMemberRecord{OpenNo: model.GetOrderSn(), OrderType: 2, Order: &order}
|
||||
err = memberRecord.OrderRefund(outTradeNo)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if order.PostageType == 2 {
|
||||
var userCoupon model.UserCoupon
|
||||
err = model.NewUserCouponQuerySet(model.DB).ActivityTypeEq(3).UidEq(uint32(order.Uid)).StateEq(2).
|
||||
OrderAscByID().Limit(1).One(&userCoupon)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error("user coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(userCoupon.ID).GetUpdater().SetState(1).Update()
|
||||
if err != nil {
|
||||
logger.Error("user coupon err:", err)
|
||||
}
|
||||
}
|
||||
//orderSn := model.GetOrderSn()
|
||||
//err = model.UserOpenMemberRecord{Uid: uint32(order.Uid), OpenNo: orderSn, OrderId: order.ID, OrderType: 2}.Insert()
|
||||
//if err != nil {
|
||||
|
|
|
@ -43,6 +43,7 @@ const (
|
|||
WxPayUpgradeMember = "upgrade_member" // 多级会员
|
||||
WxPayMemberExpireDelay = "member_expire_delay" // 会员过期滞纳金
|
||||
WxPayShareCardRetrieve = "share_card_retrieve" // 收回卡
|
||||
WxPayPostagePackage = "postage_package" // 运费包
|
||||
|
||||
//WxPayExchangeGoods = "exchange_goods" // 兑换商品
|
||||
//NotifyUrl = "https://switch.deovo.com:8001/api/v1/wxpay/notice" // 数据库配置 生产
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"time"
|
||||
)
|
||||
|
||||
//go:generate goqueryset -in analyse.go
|
||||
|
||||
// gen:qs
|
||||
type Statistic struct {
|
||||
Model
|
||||
|
||||
Count uint32 `json:"count"` // 计数
|
||||
Type uint32 `json:"type" gorm:"index"` // 类型:1-
|
||||
|
||||
Count uint32 `json:"count" gorm:"default:0"` // 计数
|
||||
EventType uint32 `json:"event_type" gorm:"index"` // 类型:1-运费包曝光次数
|
||||
}
|
||||
|
||||
const (
|
||||
|
@ -50,7 +50,8 @@ func (l *UserRenewalLog) Add() error {
|
|||
|
||||
func GetActionUserRenewalLog(uid, action uint32) (UserRenewalLog, error) {
|
||||
var userRenewalLog UserRenewalLog
|
||||
err := NewUserRenewalLogQuerySet(DB).UidEq(uid).ActionEq(action).OrderDescByID().Limit(1).One(&userRenewalLog)
|
||||
err := NewUserRenewalLogQuerySet(DB).UidEq(uid).ActionEq(action).OrderDescByID().
|
||||
Limit(1).One(&userRenewalLog)
|
||||
if err != nil && err != RecordNotFound {
|
||||
logger.Error("user renewal log err:", err)
|
||||
return userRenewalLog, err
|
||||
|
@ -115,3 +116,17 @@ func (m *UserMemberRecord) Add() {
|
|||
}
|
||||
}()
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
type UserActionLog struct {
|
||||
Model
|
||||
|
||||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
ActionType uint32 `json:"action_type"` // 1-运费包_领券送时长专题页 2-运费包_购买运费包
|
||||
First uint32 `json:"first"` // 1-首次
|
||||
// user_action_log
|
||||
}
|
||||
|
||||
func IsFirstUserAction(uid, actionType uint32) (bool, error) {
|
||||
return QueryRecordExist(fmt.Sprintf("SELECT * FROM user_action_log WHERE uid=%d AND action_type=%d", uid, actionType))
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -8394,6 +8394,756 @@ func NewUserInviteUpdater(db *gorm.DB) UserInviteUpdater {
|
|||
|
||||
// ===== END of UserInvite modifiers
|
||||
|
||||
// ===== BEGIN of query set UserMemberDurationRecordQuerySet
|
||||
|
||||
// UserMemberDurationRecordQuerySet is an queryset type for UserMemberDurationRecord
|
||||
type UserMemberDurationRecordQuerySet struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewUserMemberDurationRecordQuerySet constructs new UserMemberDurationRecordQuerySet
|
||||
func NewUserMemberDurationRecordQuerySet(db *gorm.DB) UserMemberDurationRecordQuerySet {
|
||||
return UserMemberDurationRecordQuerySet{
|
||||
db: db.Model(&UserMemberDurationRecord{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (qs UserMemberDurationRecordQuerySet) w(db *gorm.DB) UserMemberDurationRecordQuerySet {
|
||||
return NewUserMemberDurationRecordQuerySet(db)
|
||||
}
|
||||
|
||||
func (qs UserMemberDurationRecordQuerySet) Select(fields ...UserMemberDurationRecordDBSchemaField) UserMemberDurationRecordQuerySet {
|
||||
names := []string{}
|
||||
for _, f := range fields {
|
||||
names = append(names, f.String())
|
||||
}
|
||||
|
||||
return qs.w(qs.db.Select(strings.Join(names, ",")))
|
||||
}
|
||||
|
||||
// Create is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (o *UserMemberDurationRecord) Create(db *gorm.DB) error {
|
||||
return db.Create(o).Error
|
||||
}
|
||||
|
||||
// Delete is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (o *UserMemberDurationRecord) Delete(db *gorm.DB) error {
|
||||
return db.Delete(o).Error
|
||||
}
|
||||
|
||||
// All is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) All(ret *[]UserMemberDurationRecord) error {
|
||||
return qs.db.Find(ret).Error
|
||||
}
|
||||
|
||||
// Count is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) Count() (int, error) {
|
||||
var count int
|
||||
err := qs.db.Count(&count).Error
|
||||
return count, err
|
||||
}
|
||||
|
||||
// CreatedAtEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) CreatedAtEq(createdAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at = ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) CreatedAtGt(createdAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at > ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) CreatedAtGte(createdAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at >= ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) CreatedAtLt(createdAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at < ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) CreatedAtLte(createdAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at <= ?", createdAt))
|
||||
}
|
||||
|
||||
// CreatedAtNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) CreatedAtNe(createdAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("created_at != ?", createdAt))
|
||||
}
|
||||
|
||||
// Delete is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) Delete() error {
|
||||
return qs.db.Delete(UserMemberDurationRecord{}).Error
|
||||
}
|
||||
|
||||
// DeleteNum is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeleteNum() (int64, error) {
|
||||
db := qs.db.Delete(UserMemberDurationRecord{})
|
||||
return db.RowsAffected, db.Error
|
||||
}
|
||||
|
||||
// DeleteNumUnscoped is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeleteNumUnscoped() (int64, error) {
|
||||
db := qs.db.Unscoped().Delete(UserMemberDurationRecord{})
|
||||
return db.RowsAffected, db.Error
|
||||
}
|
||||
|
||||
// DeletedAtEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtEq(deletedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at = ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtGt(deletedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at > ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtGte(deletedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at >= ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtIsNotNull is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtIsNotNull() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at IS NOT NULL"))
|
||||
}
|
||||
|
||||
// DeletedAtIsNull is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtIsNull() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at IS NULL"))
|
||||
}
|
||||
|
||||
// DeletedAtLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtLt(deletedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at < ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtLte(deletedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at <= ?", deletedAt))
|
||||
}
|
||||
|
||||
// DeletedAtNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DeletedAtNe(deletedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("deleted_at != ?", deletedAt))
|
||||
}
|
||||
|
||||
// DurationEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationEq(duration uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("duration = ?", duration))
|
||||
}
|
||||
|
||||
// DurationGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationGt(duration uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("duration > ?", duration))
|
||||
}
|
||||
|
||||
// DurationGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationGte(duration uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("duration >= ?", duration))
|
||||
}
|
||||
|
||||
// DurationIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationIn(duration ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(duration) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one duration in DurationIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("duration IN (?)", duration))
|
||||
}
|
||||
|
||||
// DurationLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationLt(duration uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("duration < ?", duration))
|
||||
}
|
||||
|
||||
// DurationLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationLte(duration uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("duration <= ?", duration))
|
||||
}
|
||||
|
||||
// DurationNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationNe(duration uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("duration != ?", duration))
|
||||
}
|
||||
|
||||
// DurationNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) DurationNotIn(duration ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(duration) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one duration in DurationNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("duration NOT IN (?)", duration))
|
||||
}
|
||||
|
||||
// EventTypeEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeEq(eventType uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("event_type = ?", eventType))
|
||||
}
|
||||
|
||||
// EventTypeGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeGt(eventType uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("event_type > ?", eventType))
|
||||
}
|
||||
|
||||
// EventTypeGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeGte(eventType uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("event_type >= ?", eventType))
|
||||
}
|
||||
|
||||
// EventTypeIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeIn(eventType ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(eventType) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one eventType in EventTypeIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("event_type IN (?)", eventType))
|
||||
}
|
||||
|
||||
// EventTypeLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeLt(eventType uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("event_type < ?", eventType))
|
||||
}
|
||||
|
||||
// EventTypeLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeLte(eventType uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("event_type <= ?", eventType))
|
||||
}
|
||||
|
||||
// EventTypeNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeNe(eventType uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("event_type != ?", eventType))
|
||||
}
|
||||
|
||||
// EventTypeNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) EventTypeNotIn(eventType ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(eventType) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one eventType in EventTypeNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("event_type NOT IN (?)", eventType))
|
||||
}
|
||||
|
||||
// GetDB is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) GetDB() *gorm.DB {
|
||||
return qs.db
|
||||
}
|
||||
|
||||
// GetUpdater is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) GetUpdater() UserMemberDurationRecordUpdater {
|
||||
return NewUserMemberDurationRecordUpdater(qs.db)
|
||||
}
|
||||
|
||||
// IDEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDEq(ID uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id = ?", ID))
|
||||
}
|
||||
|
||||
// IDGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDGt(ID uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id > ?", ID))
|
||||
}
|
||||
|
||||
// IDGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDGte(ID uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id >= ?", ID))
|
||||
}
|
||||
|
||||
// IDIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDIn(ID ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(ID) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one ID in IDIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("id IN (?)", ID))
|
||||
}
|
||||
|
||||
// IDLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDLt(ID uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id < ?", ID))
|
||||
}
|
||||
|
||||
// IDLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDLte(ID uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id <= ?", ID))
|
||||
}
|
||||
|
||||
// IDNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDNe(ID uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("id != ?", ID))
|
||||
}
|
||||
|
||||
// IDNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) IDNotIn(ID ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(ID) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one ID in IDNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("id NOT IN (?)", ID))
|
||||
}
|
||||
|
||||
// Limit is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) Limit(limit int) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Limit(limit))
|
||||
}
|
||||
|
||||
// MemberLevelEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelEq(memberLevel uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("member_level = ?", memberLevel))
|
||||
}
|
||||
|
||||
// MemberLevelGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelGt(memberLevel uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("member_level > ?", memberLevel))
|
||||
}
|
||||
|
||||
// MemberLevelGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelGte(memberLevel uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("member_level >= ?", memberLevel))
|
||||
}
|
||||
|
||||
// MemberLevelIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelIn(memberLevel ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(memberLevel) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("member_level IN (?)", memberLevel))
|
||||
}
|
||||
|
||||
// MemberLevelLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelLt(memberLevel uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("member_level < ?", memberLevel))
|
||||
}
|
||||
|
||||
// MemberLevelLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelLte(memberLevel uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("member_level <= ?", memberLevel))
|
||||
}
|
||||
|
||||
// MemberLevelNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelNe(memberLevel uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("member_level != ?", memberLevel))
|
||||
}
|
||||
|
||||
// MemberLevelNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) MemberLevelNotIn(memberLevel ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(memberLevel) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one memberLevel in MemberLevelNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("member_level NOT IN (?)", memberLevel))
|
||||
}
|
||||
|
||||
// Offset is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) Offset(offset int) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Offset(offset))
|
||||
}
|
||||
|
||||
// One is used to retrieve one result. It returns gorm.ErrRecordNotFound
|
||||
// if nothing was fetched
|
||||
func (qs UserMemberDurationRecordQuerySet) One(ret *UserMemberDurationRecord) error {
|
||||
return qs.db.First(ret).Error
|
||||
}
|
||||
|
||||
// OrderAscByCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByCreatedAt() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("created_at ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByDeletedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByDeletedAt() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("deleted_at ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByDuration is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByDuration() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("duration ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByEventType is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByEventType() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("event_type ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByID is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByID() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("id ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByMemberLevel is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByMemberLevel() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("member_level ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByUid is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByUid() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("uid ASC"))
|
||||
}
|
||||
|
||||
// OrderAscByUpdatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderAscByUpdatedAt() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("updated_at ASC"))
|
||||
}
|
||||
|
||||
// OrderDescByCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByCreatedAt() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("created_at DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByDeletedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByDeletedAt() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("deleted_at DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByDuration is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByDuration() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("duration DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByEventType is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByEventType() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("event_type DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByID is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByID() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("id DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByMemberLevel is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByMemberLevel() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("member_level DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByUid is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByUid() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("uid DESC"))
|
||||
}
|
||||
|
||||
// OrderDescByUpdatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) OrderDescByUpdatedAt() UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Order("updated_at DESC"))
|
||||
}
|
||||
|
||||
// UidEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidEq(uid uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("uid = ?", uid))
|
||||
}
|
||||
|
||||
// UidGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidGt(uid uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("uid > ?", uid))
|
||||
}
|
||||
|
||||
// UidGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidGte(uid uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("uid >= ?", uid))
|
||||
}
|
||||
|
||||
// UidIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidIn(uid ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(uid) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one uid in UidIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("uid IN (?)", uid))
|
||||
}
|
||||
|
||||
// UidLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidLt(uid uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("uid < ?", uid))
|
||||
}
|
||||
|
||||
// UidLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidLte(uid uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("uid <= ?", uid))
|
||||
}
|
||||
|
||||
// UidNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidNe(uid uint32) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("uid != ?", uid))
|
||||
}
|
||||
|
||||
// UidNotIn is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UidNotIn(uid ...uint32) UserMemberDurationRecordQuerySet {
|
||||
if len(uid) == 0 {
|
||||
qs.db.AddError(errors.New("must at least pass one uid in UidNotIn"))
|
||||
return qs.w(qs.db)
|
||||
}
|
||||
return qs.w(qs.db.Where("uid NOT IN (?)", uid))
|
||||
}
|
||||
|
||||
// UpdatedAtEq is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UpdatedAtEq(updatedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at = ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtGt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UpdatedAtGt(updatedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at > ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtGte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UpdatedAtGte(updatedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at >= ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtLt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UpdatedAtLt(updatedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at < ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtLte is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UpdatedAtLte(updatedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at <= ?", updatedAt))
|
||||
}
|
||||
|
||||
// UpdatedAtNe is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (qs UserMemberDurationRecordQuerySet) UpdatedAtNe(updatedAt time.Time) UserMemberDurationRecordQuerySet {
|
||||
return qs.w(qs.db.Where("updated_at != ?", updatedAt))
|
||||
}
|
||||
|
||||
// SetCreatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetCreatedAt(createdAt time.Time) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.CreatedAt)] = createdAt
|
||||
return u
|
||||
}
|
||||
|
||||
// SetDeletedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetDeletedAt(deletedAt *time.Time) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.DeletedAt)] = deletedAt
|
||||
return u
|
||||
}
|
||||
|
||||
// SetDuration is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetDuration(duration uint32) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.Duration)] = duration
|
||||
return u
|
||||
}
|
||||
|
||||
// SetEventType is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetEventType(eventType uint32) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.EventType)] = eventType
|
||||
return u
|
||||
}
|
||||
|
||||
// SetID is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetID(ID uint32) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.ID)] = ID
|
||||
return u
|
||||
}
|
||||
|
||||
// SetMemberLevel is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetMemberLevel(memberLevel uint32) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.MemberLevel)] = memberLevel
|
||||
return u
|
||||
}
|
||||
|
||||
// SetUid is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetUid(uid uint32) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.Uid)] = uid
|
||||
return u
|
||||
}
|
||||
|
||||
// SetUpdatedAt is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) SetUpdatedAt(updatedAt time.Time) UserMemberDurationRecordUpdater {
|
||||
u.fields[string(UserMemberDurationRecordDBSchema.UpdatedAt)] = updatedAt
|
||||
return u
|
||||
}
|
||||
|
||||
// Update is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) Update() error {
|
||||
return u.db.Updates(u.fields).Error
|
||||
}
|
||||
|
||||
// UpdateNum is an autogenerated method
|
||||
// nolint: dupl
|
||||
func (u UserMemberDurationRecordUpdater) UpdateNum() (int64, error) {
|
||||
db := u.db.Updates(u.fields)
|
||||
return db.RowsAffected, db.Error
|
||||
}
|
||||
|
||||
// ===== END of query set UserMemberDurationRecordQuerySet
|
||||
|
||||
// ===== BEGIN of UserMemberDurationRecord modifiers
|
||||
|
||||
// UserMemberDurationRecordDBSchemaField describes database schema field. It requires for method 'Update'
|
||||
type UserMemberDurationRecordDBSchemaField string
|
||||
|
||||
// String method returns string representation of field.
|
||||
// nolint: dupl
|
||||
func (f UserMemberDurationRecordDBSchemaField) String() string {
|
||||
return string(f)
|
||||
}
|
||||
|
||||
// UserMemberDurationRecordDBSchema stores db field names of UserMemberDurationRecord
|
||||
var UserMemberDurationRecordDBSchema = struct {
|
||||
ID UserMemberDurationRecordDBSchemaField
|
||||
CreatedAt UserMemberDurationRecordDBSchemaField
|
||||
UpdatedAt UserMemberDurationRecordDBSchemaField
|
||||
DeletedAt UserMemberDurationRecordDBSchemaField
|
||||
Uid UserMemberDurationRecordDBSchemaField
|
||||
Duration UserMemberDurationRecordDBSchemaField
|
||||
EventType UserMemberDurationRecordDBSchemaField
|
||||
MemberLevel UserMemberDurationRecordDBSchemaField
|
||||
}{
|
||||
|
||||
ID: UserMemberDurationRecordDBSchemaField("id"),
|
||||
CreatedAt: UserMemberDurationRecordDBSchemaField("created_at"),
|
||||
UpdatedAt: UserMemberDurationRecordDBSchemaField("updated_at"),
|
||||
DeletedAt: UserMemberDurationRecordDBSchemaField("deleted_at"),
|
||||
Uid: UserMemberDurationRecordDBSchemaField("uid"),
|
||||
Duration: UserMemberDurationRecordDBSchemaField("duration"),
|
||||
EventType: UserMemberDurationRecordDBSchemaField("event_type"),
|
||||
MemberLevel: UserMemberDurationRecordDBSchemaField("member_level"),
|
||||
}
|
||||
|
||||
// Update updates UserMemberDurationRecord fields by primary key
|
||||
// nolint: dupl
|
||||
func (o *UserMemberDurationRecord) Update(db *gorm.DB, fields ...UserMemberDurationRecordDBSchemaField) error {
|
||||
dbNameToFieldName := map[string]interface{}{
|
||||
"id": o.ID,
|
||||
"created_at": o.CreatedAt,
|
||||
"updated_at": o.UpdatedAt,
|
||||
"deleted_at": o.DeletedAt,
|
||||
"uid": o.Uid,
|
||||
"duration": o.Duration,
|
||||
"event_type": o.EventType,
|
||||
"member_level": o.MemberLevel,
|
||||
}
|
||||
u := map[string]interface{}{}
|
||||
for _, f := range fields {
|
||||
fs := f.String()
|
||||
u[fs] = dbNameToFieldName[fs]
|
||||
}
|
||||
if err := db.Model(o).Updates(u).Error; err != nil {
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return err
|
||||
}
|
||||
|
||||
return fmt.Errorf("can't update UserMemberDurationRecord %v fields %v: %s",
|
||||
o, fields, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// UserMemberDurationRecordUpdater is an UserMemberDurationRecord updates manager
|
||||
type UserMemberDurationRecordUpdater struct {
|
||||
fields map[string]interface{}
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
// NewUserMemberDurationRecordUpdater creates new UserMemberDurationRecord updater
|
||||
// nolint: dupl
|
||||
func NewUserMemberDurationRecordUpdater(db *gorm.DB) UserMemberDurationRecordUpdater {
|
||||
return UserMemberDurationRecordUpdater{
|
||||
fields: map[string]interface{}{},
|
||||
db: db.Model(&UserMemberDurationRecord{}),
|
||||
}
|
||||
}
|
||||
|
||||
// ===== END of UserMemberDurationRecord modifiers
|
||||
|
||||
// ===== BEGIN of query set UserMemberExpireDelayQuerySet
|
||||
|
||||
// UserMemberExpireDelayQuerySet is an queryset type for UserMemberExpireDelay
|
||||
|
|
|
@ -27,12 +27,13 @@ type PayConfig struct {
|
|||
}
|
||||
|
||||
const (
|
||||
ConfigNamePay = "pay_config" // 支付配置
|
||||
ConfigNameMember = "member_config" // 会员配置
|
||||
ConfigNameMemberVm = "member_vm_config" // 会员积分配置
|
||||
ConfigNameAttendanceVm = "attendance_vm_config" // 签到积分配置
|
||||
ConfigActivityRenewal = "activity_renewal_config" // 活动配置
|
||||
ConfigRecycleCard = "recycle_card_config" // 回收卡配置
|
||||
ConfigNamePay = "pay_config" // 支付配置
|
||||
ConfigNameMember = "member_config" // 会员配置
|
||||
ConfigNameMemberVm = "member_vm_config" // 会员积分配置
|
||||
ConfigNameAttendanceVm = "attendance_vm_config" // 签到积分配置
|
||||
ConfigActivityRenewal = "activity_renewal_config" // 活动配置
|
||||
ConfigRecycleCard = "recycle_card_config" // 回收卡配置
|
||||
ConfigPostagePackageFee = "postage_package_fee_config" // 运费包费
|
||||
)
|
||||
|
||||
func PayConfigInfo() (*PayConfig, error) {
|
||||
|
@ -243,6 +244,40 @@ func RecycleCardConfigInfo() (RecycleCardConfig, error) {
|
|||
return recycleConfig, nil
|
||||
}
|
||||
|
||||
type PostagePackageFeeConfig struct {
|
||||
PostagePackageFee uint32 `json:"postage_package_fee"`
|
||||
}
|
||||
|
||||
func PostagePackageFeeConfigInfo() (PostagePackageFeeConfig, error) {
|
||||
postagePackageFeeConfig := PostagePackageFeeConfig{}
|
||||
var configAllocation Config
|
||||
err := NewConfigQuerySet(DB).NameEq(ConfigPostagePackageFee).One(&configAllocation)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return postagePackageFeeConfig, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal([]byte(configAllocation.Value), &postagePackageFeeConfig)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return postagePackageFeeConfig, err
|
||||
}
|
||||
|
||||
return postagePackageFeeConfig, nil
|
||||
}
|
||||
|
||||
func GetPostagePackageMemberDuration(level uint32) uint32 {
|
||||
switch level {
|
||||
case 2:
|
||||
return 90
|
||||
case 4:
|
||||
return 51
|
||||
case 5:
|
||||
return 24
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
//type ConfigInterface interface {
|
||||
// Encode() string
|
||||
//}
|
||||
|
|
|
@ -25,7 +25,7 @@ type Coupon struct {
|
|||
Name string `json:"name"`
|
||||
Describe string `json:"describe" gorm:"type:text;"` // 描述
|
||||
CouponType string `json:"coupon_type"`
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 2-关注公众号
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 2-关注公众号 3-运费包
|
||||
ActivityId uint32 `json:"activity_id" gorm:"index"`
|
||||
Value uint32 `json:"value"`
|
||||
OutCount uint32 `json:"out_count"` // 用户已领取数量
|
||||
|
@ -43,7 +43,7 @@ type UserCoupon struct {
|
|||
Uid uint32 `json:"uid" gorm:"index"`
|
||||
CouponId uint32 `json:"coupon_id" gorm:"index"`
|
||||
CouponType string `json:"coupon_type"`
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费
|
||||
ActivityType uint32 `json:"activity_type"` // 活动类型 1-会员续费 2-关注公众号 3-运费包
|
||||
ActivityId uint32 `json:"activity_id" gorm:"index"`
|
||||
Value uint32 `json:"value"`
|
||||
State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期
|
||||
|
@ -59,7 +59,7 @@ type Activity struct {
|
|||
Model
|
||||
|
||||
Name string `json:"name" gorm:"column:name;comment:'活动名称'"` // 活动名称
|
||||
ActivityType uint32 `json:"activity_type" gorm:"column:activity_type;comment:'活动类型'"` // 活动类型 1-会员续费 2-关注公众号
|
||||
ActivityType uint32 `json:"activity_type" gorm:"column:activity_type;comment:'活动类型'"` // 活动类型 1-会员续费 2-关注公众号 3-运费包
|
||||
State uint32 `json:"state" gorm:"column:state;comment:'状态'"` // 1-未开启 2-进行中 3-已结束
|
||||
StartTime time.Time `json:"start_time" gorm:"column:start_time;comment:'开始时间'"` // 开始时间
|
||||
EndTime time.Time `json:"end_time" gorm:"column:end_time;comment:'结束时间'"` // 结束时间 零值永不结束
|
||||
|
|
|
@ -560,11 +560,14 @@ func GetGameCardSearch(name string, page, pageSize int, storeId uint32) ([]GameC
|
|||
cardMap[cards[i].ID] = cards[i]
|
||||
}
|
||||
var cardStocks []GameCardGoodsStock
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(cardIds...).RentStockGt(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("game card goods stock err:", err)
|
||||
return cards, totalPage, nil
|
||||
if len(cardIds) != 0 {
|
||||
err = NewGameCardGoodsStockQuerySet(DB).GameCardIdIn(cardIds...).RentStockGt(0).All(&cardStocks)
|
||||
if err != nil {
|
||||
logger.Error("game card goods stock err:", err)
|
||||
return cards, totalPage, nil
|
||||
}
|
||||
}
|
||||
|
||||
list := make([]GameCard, 0, len(cards))
|
||||
stockMap := make(map[uint64]uint32, 0)
|
||||
for i, _ := range cardStocks {
|
||||
|
@ -1064,7 +1067,7 @@ func (m *GameCardGoodsStockAnalysisReq) GameCardStockListAnalysis() (*GameCardGo
|
|||
}
|
||||
|
||||
//fmt.Println("--gameIds:", gameIds)
|
||||
sqlStore += fmt.Sprintf(" AND game_card_id IN (%s)", strings.Join(gameIds, ","))
|
||||
sqlStore += fmt.Sprintf(" AND game_card_id IN (%s) ", strings.Join(gameIds, ","))
|
||||
}
|
||||
|
||||
//var countGame int64
|
||||
|
@ -1072,6 +1075,7 @@ func (m *GameCardGoodsStockAnalysisReq) GameCardStockListAnalysis() (*GameCardGo
|
|||
fmt.Println("sqlCount:", sqlCount)
|
||||
err := DB.Raw(sqlCount).Scan(&gameCardCount).Error
|
||||
if err != nil {
|
||||
logger.Info("sqlCount:", sqlCount)
|
||||
logger.Error("sqlCount err:", err)
|
||||
return resp, err
|
||||
}
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/sha512"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"mh-server/lib/auth"
|
||||
"mh-server/lib/utils"
|
||||
"mh-server/lib/xianmai"
|
||||
"os"
|
||||
"sort"
|
||||
"strconv"
|
||||
|
@ -91,12 +94,10 @@ func InitTestDB() {
|
|||
//&User{},
|
||||
//&Order{},
|
||||
//&OrderCard{},
|
||||
//
|
||||
//&OperationLog{},
|
||||
//&CooperativeBusiness{},
|
||||
//&CooperativeMemberDeduct{},
|
||||
//&CooperativeAssistantMemberDeduct{},
|
||||
//
|
||||
//&CooperativeMemberPromotion{},
|
||||
//&CooperativeMemberPromotionStore{},
|
||||
//&CooperativeMemberPromotionDay{},
|
||||
|
@ -138,14 +139,19 @@ func InitTestDB() {
|
|||
//&CooperativeMemberPromotion{},
|
||||
//&GameCard{},
|
||||
//&CooperativeMemberPromotionStoreDay{},
|
||||
//
|
||||
//&UserInvite{},
|
||||
//&UserInviteRecord{},
|
||||
//&CooperativeMemberPromotionStore{},
|
||||
|
||||
&RecycleCardOrder{},
|
||||
&RedeemCode{},
|
||||
&PublicRecord{},
|
||||
//&RecycleCardOrder{},
|
||||
//&RedeemCode{},
|
||||
//&PublicRecord{},
|
||||
|
||||
&Order{},
|
||||
&OrderCard{},
|
||||
&UserMemberDurationRecord{},
|
||||
&Statistic{},
|
||||
&UserActionLog{},
|
||||
)
|
||||
|
||||
fmt.Println("DB init success")
|
||||
|
@ -181,9 +187,15 @@ func InitDBProd() {
|
|||
DBProd.LogMode(false)
|
||||
DBProd.SingularTable(true)
|
||||
DBProd.AutoMigrate(
|
||||
&RecycleCardOrder{},
|
||||
&RedeemCode{},
|
||||
&PublicRecord{},
|
||||
//&RecycleCardOrder{},
|
||||
//&RedeemCode{},
|
||||
//&PublicRecord{},
|
||||
|
||||
&Order{},
|
||||
&OrderCard{},
|
||||
&UserMemberDurationRecord{},
|
||||
&Statistic{},
|
||||
&UserActionLog{},
|
||||
)
|
||||
|
||||
if err := DBProd.DB().Ping(); err != nil {
|
||||
|
@ -1099,7 +1111,8 @@ func TestAtt(t *testing.T) {
|
|||
}
|
||||
|
||||
func UserAttendanceDays() {
|
||||
uc := &auth.UserClaims{Uid: 31871993}
|
||||
//uc := &auth.UserClaims{Uid: 31871993}
|
||||
uc := &auth.UserClaims{}
|
||||
list := make([]AttendanceInfo, 0, 7)
|
||||
todayZero := utils.TodayZeroDateFormat()
|
||||
configInfo, err := AttendanceVmConfigInfo()
|
||||
|
@ -1660,3 +1673,52 @@ func TestExportGameList(t *testing.T) {
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
func TestReader(t *testing.T) {
|
||||
buffer := bytes.Buffer{}
|
||||
buffer.ReadByte()
|
||||
l1 := []uint32{1, 2, 3}
|
||||
l2 := make([]uint32, 10)
|
||||
l3 := make([]uint32, 1)
|
||||
l4 := make([]uint32, 0)
|
||||
copy(l2, l1)
|
||||
copy(l3, l1)
|
||||
copy(l4, l1)
|
||||
fmt.Println("l2:", l2)
|
||||
fmt.Println("l3:", l3)
|
||||
fmt.Println("l4:", l4)
|
||||
}
|
||||
|
||||
func TestRandSecret(t *testing.T) {
|
||||
RandSecret("seed")
|
||||
}
|
||||
|
||||
func RandSecret(seed string) {
|
||||
key := fmt.Sprintf("%s%d", seed, time.Now().UnixNano())
|
||||
hash := sha512.New()
|
||||
hash.Write([]byte(key))
|
||||
encodeToString := hex.EncodeToString(hash.Sum(nil))
|
||||
fmt.Println("encode:", encodeToString[:10])
|
||||
|
||||
//return strconv.ParseUint(encodeToString[:5], 16, 32)
|
||||
}
|
||||
|
||||
func TestGameCassetteList(t *testing.T) {
|
||||
list, count, err := xianmai.GameCassetteList("", 0, 10000)
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
fmt.Println("count:", count)
|
||||
|
||||
for i, _ := range list {
|
||||
fmt.Println("", list[i].GoodsName)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestDays(t *testing.T) {
|
||||
d1, _ := time.Parse(DateTimeFormat, "2022-12-27")
|
||||
d2, _ := time.Parse(DateTimeFormat, "2022-09-28")
|
||||
fmt.Println("天数:", (d2.Unix()-d1.Unix())/24/3600)
|
||||
}
|
||||
|
|
|
@ -52,6 +52,7 @@ type Order struct {
|
|||
OrderSn string `json:"order_sn" gorm:"type:varchar(255);not null;COMMENT:'订单编号'"` // 订单编号
|
||||
PayPrice uint32 `json:"pay_price"` // 实际付款金额(包含运费)
|
||||
Postage uint32 `json:"postage"` // 邮费
|
||||
PostageType uint32 `json:"postage_type"` // 邮费类型:1-法币 2-包邮券
|
||||
ExpressCompany string `json:"express_company"` // 物流公司
|
||||
ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号
|
||||
ExpressNo string `json:"express_no"` // 物流单号
|
||||
|
@ -99,6 +100,7 @@ type OrderCard struct {
|
|||
CooperativeName string `json:"cooperative_name"` // 合作商名称
|
||||
|
||||
Postage uint32 `json:"postage" gorm:"-"` // 邮费
|
||||
PostageType uint32 `json:"postage_type"` // 邮费类型
|
||||
ExpressCompany string `json:"express_company" gorm:"-"` // 物流公司
|
||||
ExpressCompanyNo string `json:"express_company_no" gorm:"-"` // 物流公司编号
|
||||
ExpressNo string `json:"express_no" gorm:"-"` // 物流单号
|
||||
|
|
|
@ -261,3 +261,31 @@ func CannibalizeGameCardGoodsSetInfo(goodses []CannibalizeGameCardGoods) []Canni
|
|||
//UserOpenMemberRecord{}
|
||||
return goodses
|
||||
}
|
||||
|
||||
//func GetDeliveryStoreByAddress(addressId uint32) Store {
|
||||
// // 订单最少的店
|
||||
// // 没有库存
|
||||
// // 订单最多的店
|
||||
// store := Store{}
|
||||
// var address UserAddress
|
||||
// err := NewUserAddressQuerySet(DB).IDEq(addressId).One(&address)
|
||||
// if err != nil {
|
||||
// logger.Error("user address err:", err)
|
||||
// return store
|
||||
// }
|
||||
//
|
||||
// var stores []Store
|
||||
// err = NewStoreQuerySet(DB).ProvinceEq(address.Province).All(&stores)
|
||||
// if err != nil {
|
||||
// logger.Error("store err:", err)
|
||||
// return store
|
||||
// }
|
||||
//
|
||||
// storeIds := make([]uint32, 0, len(stores))
|
||||
// for i, _ := range stores {
|
||||
// storeIds = append(storeIds, stores[i].ID)
|
||||
// }
|
||||
//
|
||||
// NewGameCardGoodsStockQuerySet(DB).IDIn(storeIds...)
|
||||
//
|
||||
//}
|
||||
|
|
|
@ -147,6 +147,7 @@ const (
|
|||
FundTypeBuyGoodsCancel = "buy_goods_cancel" // 购买商品取消订单
|
||||
FundTypeBuyGoodsRefund = "buy_goods_refund" // 购买商品退货
|
||||
FundTypeRecycleCard = "recycle_card" // 回收卡带
|
||||
FundTypePostagePackageFee = "postage_package_fee" // 购买运费包
|
||||
)
|
||||
|
||||
// gen:qs
|
||||
|
@ -256,7 +257,7 @@ func UserUpdate(user *User) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
//OrderType: 1-物流支付 2-取消物流租卡 3-滞纳金 4-收回卡 5-退物流费 6-商城购物 7-购买商品取消订单 8-购买商品订单退货 9-升级会员 10-开通 续费
|
||||
//OrderType: 1-物流支付 2-取消物流租卡 3-滞纳金 4-收回卡 5-退物流费 6-商城购物 7-购买商品取消订单 8-购买商品订单退货 9-升级会员 10-开通 续费 11-运费包
|
||||
|
||||
// gen:qs
|
||||
type UserOpenMemberRecord struct {
|
||||
|
@ -322,6 +323,16 @@ type OperationLog struct {
|
|||
Remark string `json:"remark"` // 备注
|
||||
}
|
||||
|
||||
// gen:qs
|
||||
type UserMemberDurationRecord struct {
|
||||
Model
|
||||
|
||||
Uid uint32 `json:"uid"`
|
||||
Duration uint32 `json:"duration"`
|
||||
EventType uint32 `json:"event_type"` // 类型: 1-购买运费包
|
||||
MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员
|
||||
}
|
||||
|
||||
func (m *UserOpenMemberRecord) OrderRefund(outTradeNo string) error {
|
||||
if m.Order == nil {
|
||||
return errors.New("order is nil")
|
||||
|
|
|
@ -131,7 +131,7 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
// 订单
|
||||
order := api.Group("order")
|
||||
{
|
||||
order.POST("amount", controller.OrderAmount) // 订单金额
|
||||
|
||||
order.POST("info", controller.OrderInfo) // 订单详情
|
||||
order.POST("express", controller.OrderExpress) // 订单物流
|
||||
order.POST("express_company/list", controller.ExpressCompanyList) // 物流公司列表
|
||||
|
@ -145,6 +145,7 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
order.POST("revert/cancel", controller.OrderRevertCancel) // 取消归还
|
||||
//order.POST("express_fee/refund", controller.ExpressFeeRefund) // 物流费退款
|
||||
order.POST("confirm_receipt", controller.ConfirmReceipt) // 订单确认收货
|
||||
order.POST("amount", controller.OrderAmount) // 订单金额
|
||||
}
|
||||
|
||||
article := api.Group("article")
|
||||
|
@ -170,6 +171,9 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
activity.POST("member_renewal/info", controller.UserMemberRenewalInfo)
|
||||
activity.POST("member_renewal/coupon_draw", controller.UserMemberRenewalCouponDraw)
|
||||
activity.POST("member_renewal/user_coupon/list", controller.MemberRenewalUserCouponList)
|
||||
activity.POST("postage_package/buy", controller.PostagePackageBuy)
|
||||
activity.POST("user_coupon/list", controller.UserCouponList)
|
||||
activity.POST("postage_package/info", controller.PostagePackageInfo)
|
||||
}
|
||||
|
||||
mall := api.Group("mall")
|
||||
|
@ -274,5 +278,4 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
recycleConsole.POST("order/check", controller.RecycleCardOrderCheck) // 管理端
|
||||
recycleConsole.POST("order/list", controller.ConsoleRecycleCardOrderList)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user