1250 lines
34 KiB
Go
1250 lines
34 KiB
Go
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"
|
||
)
|
||
|
||
const (
|
||
MemberFee = 299 * 100 // 会员费
|
||
DepositFee = 300 * 100 // 押金费
|
||
)
|
||
|
||
type OpenMemberReq struct {
|
||
MemberLevel uint32 `json:"member_level"` // 会员等级
|
||
MemberGenre uint32 `json:"member_genre"` // 会员标记: 黄金会员:90天-201 180天-202
|
||
UserCouponId uint32 `json:"user_coupon_id"` // 优惠券id
|
||
}
|
||
|
||
func HistoryBrowsingList(c *gin.Context) {
|
||
req := struct {
|
||
Page int `json:"page"`
|
||
PageSize int `json:"page_size"`
|
||
}{
|
||
Page: 1,
|
||
PageSize: 10,
|
||
}
|
||
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
|
||
}
|
||
gameCardList, totalPage, err := model.GetHistoryBrowsingList(uc.Uid, req.Page, req.PageSize)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"game_card_list": gameCardList,
|
||
"cur_page": req.Page,
|
||
"total_page": totalPage,
|
||
}
|
||
|
||
RespOK(c, ret)
|
||
return
|
||
}
|
||
|
||
func HistoryBrowsingDel(c *gin.Context) {
|
||
req := struct {
|
||
GameCardIds []uint64 `json:"game_card_id" binding:"required"`
|
||
}{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
if len(req.GameCardIds) > 0 {
|
||
err := model.NewHistoryBrowsingQuerySet(model.DB.Unscoped()).UidEq(uint64(uc.Uid)).GameCardIdIn(req.GameCardIds...).Delete()
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
}
|
||
|
||
RespOK(c, nil)
|
||
return
|
||
}
|
||
|
||
func CollectionList(c *gin.Context) {
|
||
req := struct {
|
||
Page int `json:"page"`
|
||
PageSize int `json:"page_size"`
|
||
}{
|
||
Page: 1,
|
||
PageSize: 10,
|
||
}
|
||
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
|
||
}
|
||
gameCardList, totalPage, err := model.GetGameCardCollectionList(uc.Uid, req.Page, req.PageSize)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
ret := map[string]interface{}{
|
||
"game_card_list": gameCardList,
|
||
"cur_page": req.Page,
|
||
"total_page": totalPage,
|
||
}
|
||
|
||
RespOK(c, ret)
|
||
return
|
||
}
|
||
|
||
func CollectionAdd(c *gin.Context) {
|
||
req := struct {
|
||
GameCardId uint64 `json:"game_card_id" binding:"required"`
|
||
}{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
collection := model.Collection{
|
||
Uid: uint64(uc.Uid),
|
||
GameCardId: req.GameCardId,
|
||
}
|
||
err := collection.Create(model.DB)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
RespOK(c, nil)
|
||
return
|
||
}
|
||
|
||
func CollectionCancel(c *gin.Context) {
|
||
req := struct {
|
||
GameCardIds []uint64 `json:"game_card_id" binding:"required"`
|
||
}{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Error("para err")
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
if len(req.GameCardIds) > 0 {
|
||
err := model.NewCollectionQuerySet(model.DB.Unscoped()).UidEq(uint64(uc.Uid)).GameCardIdIn(req.GameCardIds...).Delete()
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
}
|
||
|
||
RespOK(c, nil)
|
||
return
|
||
}
|
||
|
||
func UserInfoUpdate(c *gin.Context) {
|
||
req := struct {
|
||
WxName string `json:"wx_name"` // 昵称
|
||
WxAvatar string `json:"wx_avatar"` // 头像
|
||
Tel string `json:"tel"` // 电话
|
||
}{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Error("parameter err")
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
user := &model.User{
|
||
Uid: uc.Uid,
|
||
WxName: req.WxName,
|
||
WxAvatar: req.WxAvatar,
|
||
Tel: req.Tel,
|
||
}
|
||
err := model.UserUpdate(user)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
RespOK(c, nil)
|
||
return
|
||
}
|
||
|
||
// OpenMember 开通会员
|
||
// @Summary 开通会员
|
||
// @Tags 零售订单
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body OpenMemberReq true "开通会员模型"
|
||
// @Success 200 {object} RespRet
|
||
// @Router /api/v1/user/open_member [post]
|
||
func OpenMember(c *gin.Context) {
|
||
req := new(OpenMemberReq)
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Error("parameter err")
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
fmt.Println("req:", req)
|
||
user := model.GetUserByUid(uc.Uid)
|
||
|
||
memberConfig, err := model.GetMemberConfig(req.MemberLevel, req.MemberGenre)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
//totalFee := uint32(MemberFee + DepositFee)
|
||
////totalFee = uint32(3) // TODO 测试 上线修改
|
||
//if user.Deposit == 300 {
|
||
// totalFee = MemberFee
|
||
// // //totalFee = uint32(1) // TODO 测试 上线修改
|
||
//}
|
||
|
||
fmt.Println("configInfo.MemberFee : configInfo.DepositFee", memberConfig.MemberFee, memberConfig.MemberDeposit)
|
||
totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit - user.Deposit
|
||
if user.Deposit == memberConfig.MemberDeposit {
|
||
totalFee = memberConfig.MemberFee
|
||
}
|
||
if totalFee == 0 {
|
||
logger.Error(errors.New("totalFee is 0"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
//短期会员不可用优惠券
|
||
if req.UserCouponId != 0 && req.MemberGenre != model.MemberGenreQuarter && req.MemberGenre != model.MemberGenreHalfYear {
|
||
var coupon model.UserCoupon
|
||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||
if err != nil {
|
||
logger.Error("coupon err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
// 用户已开通会员且优惠券可用
|
||
if user.IsMember() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||
coupon.ActivityId == 1 && coupon.State == 1 {
|
||
totalFee -= coupon.Value
|
||
|
||
if coupon.RedeemCode == "" { // 优惠券兑换码为空,则记录用户续费日志
|
||
go func() {
|
||
action := 0
|
||
if coupon.MemberLevel == 2 {
|
||
action = model.UserRenewalLogActionUseGold
|
||
} else if coupon.MemberLevel == 4 {
|
||
action = model.UserRenewalLogActionUsePlatinum
|
||
} else if coupon.MemberLevel == 5 {
|
||
action = model.UserRenewalLogActionUseBlackGold
|
||
}
|
||
renewalLog, _ := model.GetActionUserRenewalLog(uc.Uid, uint32(action))
|
||
userLog := &model.UserRenewalLog{
|
||
Uid: uc.Uid,
|
||
Action: uint32(action),
|
||
MemberExpire: user.MemberExpire,
|
||
Type: 1,
|
||
RenewalNum: renewalLog.RenewalNum + 1,
|
||
Serial: uint32(user.MemberExpire.Unix()),
|
||
}
|
||
_ = userLog.Add()
|
||
}()
|
||
}
|
||
} else if coupon.State == 1 && coupon.ActivityType == 2 { // 关注公众号领取的优惠券
|
||
totalFee -= coupon.Value
|
||
} else { // 不符合优惠条件
|
||
req.UserCouponId = 0
|
||
}
|
||
}
|
||
|
||
orderSn := model.GetOrderSn()
|
||
// 备注:只有会员续费使用优惠券才会记录优惠券id:req.UserCouponId
|
||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: req.MemberLevel,
|
||
UserCouponId: req.UserCouponId, Attach: wxpay.WxPayMember, MemberGenre: req.MemberGenre}.Insert()
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
configInfo, err := model.PayConfigInfo()
|
||
if err != nil {
|
||
logger.Error(err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
genre, err := model.GetPaymentGenre()
|
||
if err != nil {
|
||
genre = 2
|
||
logger.Error("payment method", err)
|
||
}
|
||
//选择支付渠道,15号之前走微信,15号之后走河马付
|
||
if genre == model.PaymentGenreWx {
|
||
webPay, err := wxpay.WebPay(orderSn, totalFee, user.WxOpenID, "N", wxpay.WxPayMember, configInfo.NotifyUrl)
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
RespOK(c, webPay)
|
||
} else {
|
||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, totalFee, user.WxOpenID, configInfo.NotifyUrl)
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
RespOK(c, webPay)
|
||
}
|
||
|
||
return
|
||
}
|
||
|
||
func UpgradeMember(c *gin.Context) {
|
||
req := struct {
|
||
MemberLevel uint32 `json:"member_level"` // 昵称
|
||
MemberGenre uint32 `json:"member_genre"`
|
||
UserCouponId uint32 `json:"user_coupon_id"`
|
||
}{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Error("parameter err")
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
user := model.GetUserByUid(uc.Uid)
|
||
//if user.MemberLevel != 2 && user.MemberLevel != 4 {
|
||
// logger.Error("MemberLevel err:")
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
|
||
if user.Gender != 0 {
|
||
logger.Error("user member genre err:")
|
||
RespJson(c, status.ShortMemberNotUpgradeMember, nil)
|
||
return
|
||
}
|
||
if req.MemberGenre == 0 { //区分是升级哪种会员 白金:400 黑金:500
|
||
req.MemberGenre = model.GetMemberGenreFromLevel(req.MemberLevel)
|
||
}
|
||
|
||
originalMemberConfig, err := model.GetMemberConfig(user.MemberLevel, user.MemberGenre)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
memberConfig, err := model.GetMemberConfig(req.MemberLevel, req.MemberGenre)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
raiseTime, err := time.Parse("2006-01-02 15:04:05", "2022-01-01 00:00:00")
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
memberFee := originalMemberConfig.MemberFee
|
||
if user.OpenMemberTime.Before(raiseTime) {
|
||
memberFee = 29900
|
||
}
|
||
|
||
// 补押金
|
||
depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit)
|
||
|
||
count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).
|
||
StatusEq(model.RedeemCodeStatusUsed).Count()
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
fmt.Println("count:", count)
|
||
// 抵扣天数
|
||
deductionDays := int64(0)
|
||
deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 1*3600
|
||
if deductionTime < 0 {
|
||
deductionTime = 0
|
||
}
|
||
if deductionTime > 0 {
|
||
deductionDays = deductionTime / int64(24*3600)
|
||
}
|
||
memberYare := 0
|
||
memberMendFee := int64(0)
|
||
|
||
//// 抵扣金
|
||
//deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
|
||
|
||
// 2024-06-07修改,解决短期升级白金/黑金多收费问题
|
||
memberDays := int64(0)
|
||
switch req.MemberGenre {
|
||
case 201:
|
||
memberDays = 90
|
||
case 202:
|
||
memberDays = 180
|
||
default:
|
||
memberDays = 365
|
||
}
|
||
logger.Info("req.MemberGenre is:", req.MemberGenre)
|
||
logger.Info("memberDays is:", memberDays)
|
||
// 抵扣金
|
||
deductionFee := (((int64(memberFee) * deductionDays) / memberDays) / 100) * 100
|
||
|
||
if deductionDays < 365 {
|
||
memberYare = 1
|
||
// 补会员费
|
||
memberMendFee = int64(memberConfig.MemberFee*uint32(memberYare)) - deductionFee
|
||
} else {
|
||
// 补会员费
|
||
memberMendFee = int64((int64(memberConfig.MemberFee)*deductionDays)/365) - deductionFee
|
||
}
|
||
|
||
totalFee := int64(depositMendFee) + memberMendFee
|
||
//if memberMendFee < 0 {
|
||
// depositMendFee = depositMendFee + memberMendFee
|
||
//}
|
||
fmt.Println("depositMendFee : memberMendFee", depositMendFee, memberMendFee)
|
||
|
||
if totalFee == 0 {
|
||
logger.Error(errors.New("totalFee is 0"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
//totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit
|
||
//if user.Deposit == memberConfig.MemberDeposit {
|
||
// totalFee = memberConfig.MemberFee
|
||
//}
|
||
if totalFee == 0 {
|
||
logger.Error(errors.New("totalFee is 0"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
//会员升级时(MemberGenre = 0 || 400 || 500)才能使用优惠券
|
||
if req.UserCouponId != 0 && (req.MemberGenre == 0 || req.MemberGenre == 400 || req.MemberGenre == 500) {
|
||
var coupon model.UserCoupon
|
||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||
if err != nil {
|
||
logger.Error("coupon err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
if user.IsMember() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||
coupon.ActivityId == 1 && coupon.State == 1 && coupon.ActiveEnd.After(time.Now()) {
|
||
totalFee -= int64(coupon.Value)
|
||
|
||
go func() {
|
||
action := 0
|
||
if coupon.MemberLevel == 2 {
|
||
action = model.UserRenewalLogActionUseGold
|
||
} else if coupon.MemberLevel == 4 {
|
||
action = model.UserRenewalLogActionUsePlatinum
|
||
} else if coupon.MemberLevel == 5 {
|
||
action = model.UserRenewalLogActionUseBlackGold
|
||
}
|
||
renewalLog, _ := model.GetActionUserRenewalLog(uc.Uid, uint32(action))
|
||
userLog := &model.UserRenewalLog{
|
||
Uid: uc.Uid,
|
||
Action: uint32(action),
|
||
MemberExpire: user.MemberExpire,
|
||
Type: 2,
|
||
RenewalNum: renewalLog.RenewalNum + 1,
|
||
Serial: uint32(user.MemberExpire.Unix()),
|
||
}
|
||
_ = userLog.Add()
|
||
}()
|
||
} else if coupon.State == 1 && coupon.ActivityType == 2 {
|
||
totalFee -= int64(coupon.Value)
|
||
} else {
|
||
req.UserCouponId = 0
|
||
}
|
||
}
|
||
|
||
totalFee += 50
|
||
totalFee = (totalFee / 100) * 100
|
||
|
||
//webPay, err := wxpay.WebPay(uid, totalFee, user.WxOpenID, "N", wxpay.WxPayMember)
|
||
//if err != nil {
|
||
// logger.Error(errors.New("WebPay err"))
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
//orderSn := utils.GetSerialNo32HEXString()
|
||
memberExpire := time.Time{}
|
||
if deductionDays < 365 {
|
||
memberExpire = time.Now().AddDate(1*int(memberYare), 0, count*30)
|
||
} else {
|
||
memberExpire = time.Now().AddDate(0, 0, count*30+int(deductionDays))
|
||
}
|
||
orderSn := model.GetOrderSn()
|
||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn,
|
||
MemberLevel: req.MemberLevel, OrderType: 9, MemberExpire: memberExpire,
|
||
UserCouponId: req.UserCouponId, Attach: wxpay.WxPayUpgradeMember, MemberGenre: req.MemberGenre}.Insert()
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay 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, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember,
|
||
// configInfo.NotifyUrl)
|
||
//if err != nil {
|
||
// logger.Error(errors.New("WebPay err"))
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, uint32(totalFee), user.WxOpenID, configInfo.NotifyUrl)
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
RespOK(c, webPay)
|
||
}
|
||
|
||
func UpgradeMemberInfo(c *gin.Context) {
|
||
req := struct {
|
||
MemberLevel uint32 `json:"member_level"` // 昵称
|
||
MemberGenre uint32 `json:"member_genre"`
|
||
UserCouponId uint32 `json:"user_coupon_id"`
|
||
}{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Error("parameter err")
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
user := model.GetUserByUid(uc.Uid)
|
||
//if user.MemberLevel != 2 && user.MemberLevel != 4 {
|
||
// logger.Error("MemberLevel err:")
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
|
||
//configInfo, err := model.PayConfigInfo()
|
||
//if err != nil {
|
||
// logger.Error("err:", err)
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
originalMemberConfig, err := model.GetMemberConfig(user.MemberLevel, user.MemberGenre)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
memberConfig, err := model.GetMemberConfig(req.MemberLevel, req.MemberGenre)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
raiseTime, err := time.Parse("2006-01-02 15:04:05", "2022-01-01 00:00:00")
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
memberFee := originalMemberConfig.MemberFee
|
||
if user.OpenMemberTime.Before(raiseTime) {
|
||
memberFee = 29900
|
||
}
|
||
|
||
// 补押金
|
||
depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit)
|
||
|
||
count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).
|
||
StatusEq(model.RedeemCodeStatusUsed).Count()
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
fmt.Println("count:", count)
|
||
// 抵扣天数
|
||
deductionDays := int64(0)
|
||
deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 1*3600
|
||
if deductionTime < 0 {
|
||
deductionTime = 0
|
||
}
|
||
if deductionTime > 0 {
|
||
deductionDays = deductionTime / int64(24*3600)
|
||
}
|
||
//memberYare := deductionDays/365 + 1
|
||
//// 抵扣金
|
||
//deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
|
||
//
|
||
//// 补会员费
|
||
//memberMendFee := int64(memberConfig.MemberFee*uint32(memberYare)) - deductionFee
|
||
|
||
memberYare := 0
|
||
memberMendFee := int64(0)
|
||
// 抵扣金
|
||
deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
|
||
if deductionDays < 365 {
|
||
memberYare = 1
|
||
// 补会员费
|
||
memberMendFee = int64(memberConfig.MemberFee*uint32(memberYare)) - deductionFee
|
||
} else {
|
||
// 补会员费
|
||
memberMendFee = int64((int64(memberConfig.MemberFee)*deductionDays)/365) - deductionFee
|
||
}
|
||
|
||
totalFee := int64(depositMendFee) + memberMendFee
|
||
//if memberMendFee < 0 {
|
||
// depositMendFee = depositMendFee + memberMendFee
|
||
//}
|
||
fmt.Println("depositMendFee : memberMendFee", depositMendFee, memberMendFee)
|
||
|
||
if totalFee == 0 {
|
||
logger.Error(errors.New("totalFee is 0"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
var coupon model.UserCoupon
|
||
if req.UserCouponId != 0 && req.MemberGenre == 0 {
|
||
err = model.NewUserCouponQuerySet(model.DB).IDEq(req.UserCouponId).One(&coupon)
|
||
if err != nil {
|
||
logger.Error("coupon err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
if user.IsMember() && coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
||
coupon.ActivityId == 1 && coupon.State == 1 && coupon.ActiveEnd.After(time.Now()) {
|
||
totalFee -= int64(coupon.Value)
|
||
|
||
// TODO 不用添加数据
|
||
|
||
} else if coupon.State == 1 && coupon.ActivityType == 2 {
|
||
totalFee -= int64(coupon.Value)
|
||
} else {
|
||
req.UserCouponId = 0
|
||
}
|
||
fmt.Println("totalFee:", totalFee)
|
||
}
|
||
|
||
totalFee += 50
|
||
totalFee = (totalFee / 100) * 100
|
||
|
||
RespOK(c, map[string]interface{}{
|
||
"deduction_fee": deductionFee, // 会员抵扣费
|
||
"deduction_days": deductionDays, // 会员抵扣天数
|
||
"member_mend_fee": memberMendFee, // 会员补费
|
||
"deposit_mend_fee": depositMendFee, // 补押金
|
||
"total_fee": totalFee, // 总费用
|
||
"coupon": coupon.Value,
|
||
})
|
||
}
|
||
|
||
func PayDeposit(c *gin.Context) {
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
user := model.GetUserByUid(uc.Uid)
|
||
orderSn := model.GetOrderSn()
|
||
err := model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, Attach: wxpay.WxPayDeposit}.Insert()
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
level := user.MemberLevel
|
||
if level == model.MemberLevelPeriod {
|
||
level = model.MemberLevelGold
|
||
}
|
||
//configInfo, err := model.PayConfigInfo()
|
||
//if err != nil {
|
||
// logger.Error("err:", err)
|
||
// return
|
||
//}
|
||
memberConfig, err := model.GetMemberConfig(level, user.MemberGenre)
|
||
if err != nil {
|
||
logger.Error("GetMemberConfig err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
totalFee := memberConfig.MemberDeposit
|
||
if totalFee == 0 || user.Deposit == totalFee {
|
||
logger.Error(errors.New("totalFee is 0"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
//totalFee = 1 // 测试
|
||
configInfo, err := model.PayConfigInfo()
|
||
if err != nil {
|
||
logger.Error(err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
//webPay, err := wxpay.WebPay(orderSn, totalFee, user.WxOpenID, "N", wxpay.WxPayDeposit, configInfo.NotifyUrl)
|
||
//if err != nil {
|
||
// logger.Error(errors.New("WebPay err"))
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, totalFee, user.WxOpenID, configInfo.NotifyUrl)
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
RespOK(c, webPay)
|
||
}
|
||
|
||
func CommonProblemList(c *gin.Context) {
|
||
common := &model.CommonProblem{}
|
||
list, err := common.List()
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
RespOK(c, list)
|
||
return
|
||
}
|
||
|
||
func RefundDeposit(c *gin.Context) {
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
user := model.GetUserByUid(uc.Uid)
|
||
if user.Deposit == 0 {
|
||
logger.Error("deposit is 0")
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
if user.DepositType == 3 {
|
||
logger.Error("deposit restraint")
|
||
RespJson(c, status.DepositRestraint, nil)
|
||
return
|
||
}
|
||
unreturnedOrders, err := model.IsUserHaveUnreturnedOrder(user.Uid)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
if unreturnedOrders {
|
||
logger.Error("unreturnedOrders")
|
||
RespJson(c, status.HaveUnreturnedOrders, nil)
|
||
return
|
||
}
|
||
|
||
resp, err := model.MemberExpireDelaying(uc.Uid)
|
||
if err != nil {
|
||
logger.Errorf("err:%#v", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
isSurrender, _ := resp["is_surrender"]
|
||
|
||
if isSurrender == 0 {
|
||
count, err := model.NewDepositRefundRecordQuerySet(model.DB).UidEq(uc.Uid).StatusNotIn(model.DepositRefundStatusRefunded, model.DepositRefundStatusRefused).Count()
|
||
if err != nil || count > 0 {
|
||
logger.Error("count is not 0")
|
||
RespJson(c, status.RefundDepositSubmitted, nil)
|
||
return
|
||
}
|
||
record := &model.DepositRefundRecord{
|
||
Uid: uc.Uid,
|
||
Status: model.DepositRefundStatusUnconfirmed,
|
||
Amount: user.Deposit,
|
||
Operator: 0,
|
||
ConfirmTime: time.Time{},
|
||
}
|
||
|
||
err = model.DB.Create(record).Error
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
}
|
||
|
||
RespOK(c, resp)
|
||
}
|
||
|
||
func UserDepositRefundRecordList(c *gin.Context) {
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
resp, err := model.GetDepositRefundRecordList(uc.Uid)
|
||
if err != nil {
|
||
logger.Errorf("err:%#v", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
RespOK(c, resp)
|
||
}
|
||
|
||
func UserMemberExpireDelayingInfo(c *gin.Context) {
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
unreturnedOrders, err := model.IsUserHaveUnreturnedOrder(uc.Uid)
|
||
if err != nil {
|
||
logger.Error("err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
if unreturnedOrders {
|
||
logger.Error("unreturnedOrders")
|
||
RespJson(c, status.HaveUnreturnedOrders, nil)
|
||
return
|
||
}
|
||
|
||
resp, err := model.MemberExpireDelaying(uc.Uid)
|
||
if err != nil {
|
||
logger.Errorf("err:%#v", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
RespOK(c, resp)
|
||
}
|
||
|
||
func UserMemberExpireDelayingPay(c *gin.Context) {
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
var user model.User
|
||
err := model.NewUserQuerySet(model.DB).UidEq(uc.Uid).One(&user)
|
||
if err != nil {
|
||
logger.Error("user err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
var userMemberExpireDelay model.UserMemberExpireDelay
|
||
err = model.NewUserMemberExpireDelayQuerySet(model.DB).UidEq(uc.Uid).MemberExpireEq(user.MemberExpire).One(&userMemberExpireDelay)
|
||
if err != nil {
|
||
logger.Error("user member expire delay err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
configInfo, err := model.PayConfigInfo()
|
||
if err != nil {
|
||
logger.Error(err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
orderSn := model.GetOrderSn()
|
||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, OrderId: 0, OrderType: 3, Attach: wxpay.WxPayMemberExpireDelay}.Insert()
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
//userMemberExpireDelay.DelayAmount = userMemberExpireDelay.DelayAmount / 100 // 测试TODO
|
||
//webPay, err := wxpay.WebPay(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, "N", wxpay.WxPayMemberExpireDelay, configInfo.NotifyUrl)
|
||
//if err != nil {
|
||
// logger.Error(errors.New("WebPay err"))
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, configInfo.NotifyUrl)
|
||
if err != nil {
|
||
logger.Error(errors.New("WebPay err"))
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
ret := make(map[string]interface{}, 0)
|
||
ret["is_surrender"] = 1
|
||
ret["expire_days"] = userMemberExpireDelay.ExpireDays
|
||
ret["daily_fee"] = userMemberExpireDelay.DailyFee
|
||
ret["delay_amount"] = userMemberExpireDelay.DelayAmount
|
||
ret["web_pay"] = webPay
|
||
RespOK(c, ret)
|
||
return
|
||
}
|
||
|
||
func MemberConfigList(c *gin.Context) {
|
||
//uc := auth.GetCurrentUser(c)
|
||
//if uc == nil {
|
||
// RespJson(c, status.Unauthorized, nil)
|
||
// return
|
||
//}
|
||
|
||
resp, err := model.MemberConfigInfo()
|
||
if err != nil {
|
||
logger.Errorf("err:%#v", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
RespOK(c, resp)
|
||
}
|
||
|
||
func UserAttendance(c *gin.Context) {
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
|
||
//model.NewUserAttendanceRecordQuerySet()
|
||
todayZero := utils.TodayZeroDateFormat()
|
||
recordExist, err := model.QueryRecordExist(
|
||
fmt.Sprintf("SELECT * FROM user_attendance_record WHERE attendance_date = '%s' AND uid=%d", todayZero, uc.Uid))
|
||
if err != nil {
|
||
logger.Error("record exist err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
if recordExist {
|
||
logger.Error("user consecutive")
|
||
RespJson(c, status.TodayAttendance, nil)
|
||
return
|
||
}
|
||
|
||
configInfo, err := model.AttendanceVmConfigInfo()
|
||
if err != nil {
|
||
logger.Error("attendance vm config info err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
attendanceTime := time.Now()
|
||
record := &model.UserAttendanceRecord{
|
||
Uid: uc.Uid,
|
||
AttendanceTime: attendanceTime,
|
||
Vm: configInfo.VmDay1,
|
||
AttendanceDate: todayZero,
|
||
}
|
||
|
||
var userAttendance model.UserAttendance
|
||
err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).One(&userAttendance)
|
||
if err != nil && err != model.RecordNotFound {
|
||
logger.Error("user attendance err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
if err == model.RecordNotFound {
|
||
userAttendance = model.UserAttendance{
|
||
Uid: uc.Uid,
|
||
LatestTime: attendanceTime,
|
||
ConsecutiveDays: 1,
|
||
IndexDay: 1,
|
||
}
|
||
err = model.DB.Create(&userAttendance).Error
|
||
if err != nil {
|
||
logger.Error("create user attendance err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
err = record.Add(model.VmEventAttendance, "签到获得积分")
|
||
if err != nil {
|
||
logger.Error("add user attendance record err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
RespOK(c, nil)
|
||
return
|
||
}
|
||
|
||
var attendanceRecord model.UserAttendanceRecord
|
||
err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).OrderDescByID().Limit(1).One(&attendanceRecord)
|
||
if err != nil && err != model.RecordNotFound {
|
||
logger.Error(" user attendance record err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
if attendanceRecord.AttendanceDate == "" ||
|
||
attendanceRecord.AttendanceDate != utils.TodayZeroAddDaysDateFormat(-1) {
|
||
err = record.Add(model.VmEventAttendance, "签到获得积分")
|
||
if err != nil {
|
||
logger.Error("add user attendance record err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
_, err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).GetUpdater().SetConsecutiveDays(1).
|
||
SetIndexDay(1).SetLatestTime(time.Now()).UpdateNum()
|
||
if err != nil {
|
||
logger.Error("update user attendance err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
RespOK(c, nil)
|
||
return
|
||
}
|
||
|
||
userAttendance.ConsecutiveDays += 1
|
||
userAttendance.IndexDay = userAttendance.ConsecutiveDays % 7
|
||
if userAttendance.IndexDay == 0 {
|
||
userAttendance.IndexDay = 7
|
||
}
|
||
|
||
record.Vm = configInfo.Vm(userAttendance.ConsecutiveDays)
|
||
err = record.Add(model.VmEventAttendance, "签到获得积分")
|
||
if err != nil {
|
||
logger.Error("add user attendance record err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
_, err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).GetUpdater().
|
||
SetConsecutiveDays(userAttendance.ConsecutiveDays).
|
||
SetIndexDay(userAttendance.IndexDay).SetLatestTime(time.Now()).UpdateNum()
|
||
if err != nil {
|
||
logger.Error("update user attendance err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
RespOK(c, nil)
|
||
return
|
||
}
|
||
|
||
func UserAttendanceDetail(c *gin.Context) {
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
list := make([]model.AttendanceInfo, 0, 7)
|
||
|
||
configInfo, err := model.AttendanceVmConfigInfo()
|
||
if err != nil {
|
||
logger.Error("attendance vm config info err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
todayZero := utils.TodayZeroDateFormat()
|
||
//var attendanceRecord model.UserAttendanceRecord
|
||
//err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).AttendanceDateEq(utils.TodayZeroAddDaysDateFormat(-1)).One(&attendanceRecord)
|
||
//if err != nil && err != model.RecordNotFound {
|
||
// logger.Error("user attendance record err:")
|
||
// RespJson(c, status.InternalServerError, nil)
|
||
// return
|
||
//}
|
||
recordExist, err := model.QueryRecordExist(
|
||
fmt.Sprintf("SELECT * FROM user_attendance_record WHERE attendance_date in ('%s','%s') AND uid=%d",
|
||
utils.TodayZeroAddDaysDateFormat(-1), todayZero, uc.Uid))
|
||
if err != nil {
|
||
logger.Error("record exist err:", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
if !recordExist {
|
||
for i := 0; i < 7; i++ {
|
||
info := model.AttendanceInfo{
|
||
IndexDay: uint32(i) + 1,
|
||
Date: utils.TodayZeroAddDaysDateFormat(i),
|
||
State: 1,
|
||
Vm: configInfo.Vm(uint32(i) + 1),
|
||
}
|
||
list = append(list, info)
|
||
}
|
||
ret := map[string]interface{}{
|
||
"list": list,
|
||
"is_attendance": 1,
|
||
}
|
||
RespOK(c, ret)
|
||
return
|
||
}
|
||
|
||
var attendanceRecord model.UserAttendanceRecord
|
||
//err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).AttendanceDateEq(todayZero).One(&attendanceRecord)
|
||
err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).OrderDescByID().
|
||
Limit(1).One(&attendanceRecord)
|
||
if err != nil && err != model.RecordNotFound {
|
||
logger.Error("user attendance record err:")
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
var userAttendance model.UserAttendance
|
||
err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).One(&userAttendance)
|
||
if err != nil && err != model.RecordNotFound {
|
||
logger.Error("user attendance record err:")
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
attendanceDays := int(userAttendance.ConsecutiveDays % 7)
|
||
if attendanceDays == 0 && attendanceRecord.AttendanceDate == todayZero {
|
||
attendanceDays = 7
|
||
}
|
||
//attendanceDays += 1
|
||
days := attendanceDays
|
||
for i := 0; i < 7; i++ {
|
||
state := uint32(1)
|
||
if attendanceDays > 0 {
|
||
state = 2
|
||
}
|
||
date := utils.TodayZeroAddDaysDateFormat(i - days)
|
||
if attendanceRecord.AttendanceDate == todayZero {
|
||
date = utils.TodayZeroAddDaysDateFormat(i + 1 - days)
|
||
}
|
||
info := model.AttendanceInfo{
|
||
IndexDay: uint32(i) + 1,
|
||
//Date: utils.TodayZeroAddDaysDateFormat((-1) * (7 - i)),
|
||
//Date: utils.TodayZeroAddDaysDateFormat(i + 1 - days),
|
||
//Date: utils.TodayZeroAddDaysDateFormat(i - days),
|
||
Date: date,
|
||
State: state,
|
||
Vm: configInfo.Vm(uint32(i) + 1),
|
||
}
|
||
|
||
list = append(list, info)
|
||
attendanceDays--
|
||
}
|
||
|
||
isAttendance := 1
|
||
if attendanceRecord.AttendanceDate == todayZero {
|
||
isAttendance = 2
|
||
}
|
||
ret := map[string]interface{}{
|
||
"list": list,
|
||
"is_attendance": isAttendance,
|
||
}
|
||
RespOK(c, ret)
|
||
return
|
||
}
|
||
|
||
// InviteMemberReportList 店员邀请会员业绩报表
|
||
// @Summary 店员邀请会员业绩报表
|
||
// @Tags 会员推广, V1.2.0
|
||
// @Produce json
|
||
// @Accept json
|
||
// @Param request body model.InviteMemberReportListReq true "店员邀请会员业绩报表模型"
|
||
// @Success 200 {object} model.InviteMemberReportListResp
|
||
// @Router /api/v1/cooperative_business/invite_report [post]
|
||
func InviteMemberReportList(c *gin.Context) {
|
||
req := model.InviteMemberReportListReq{}
|
||
if c.ShouldBindJSON(&req) != nil {
|
||
logger.Error("parameter err")
|
||
RespJson(c, status.BadRequest, nil)
|
||
return
|
||
}
|
||
uc := auth.GetCurrentUser(c)
|
||
if uc == nil {
|
||
RespJson(c, status.Unauthorized, nil)
|
||
return
|
||
}
|
||
req.Uid = uc.Uid
|
||
assistant := model.GetUserByUid(uc.Uid)
|
||
if assistant.UserType != 2 {
|
||
logger.Error("not assistant")
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
list, totalPage, err := req.List()
|
||
if err != nil {
|
||
logger.Errorf("err:%#v", err)
|
||
RespJson(c, status.InternalServerError, nil)
|
||
return
|
||
}
|
||
|
||
ret := model.InviteMemberReportListResp{
|
||
List: list,
|
||
CurPage: req.PageNum,
|
||
TotalPage: totalPage,
|
||
}
|
||
|
||
RespOK(c, ret)
|
||
return
|
||
}
|
||
|
||
// 升级 1-黄金会员 2-白金会员 3-黑金会员
|
||
// 开通会员
|
||
// 升级会员
|
||
// 订单
|
||
// 购物车
|
||
// 押金
|
||
|
||
// 会员列表 开通会员 下订单 借卡 还卡
|
||
// 会员升级
|
||
// 299会员 升级
|
||
// 订单 会员导数据
|
||
// 退押金记录
|