2021-06-30 02:12:05 +00:00
|
|
|
package controller
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
2021-12-25 08:38:30 +00:00
|
|
|
"fmt"
|
2021-06-30 02:12:05 +00:00
|
|
|
"github.com/codinl/go-logger"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"mh-server/lib/auth"
|
|
|
|
"mh-server/lib/status"
|
2022-04-26 06:28:41 +00:00
|
|
|
"mh-server/lib/utils"
|
2021-06-30 02:12:05 +00:00
|
|
|
"mh-server/lib/wxpay"
|
|
|
|
"mh-server/model"
|
2021-12-25 08:38:30 +00:00
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
MemberFee = 299 * 100 // 会员费
|
|
|
|
DepositFee = 300 * 100 // 押金费
|
2021-06-30 02:12:05 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
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 {
|
2021-12-25 08:38:30 +00:00
|
|
|
logger.Error("err:", err)
|
2021-06-30 02:12:05 +00:00
|
|
|
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 {
|
2021-12-25 08:38:30 +00:00
|
|
|
logger.Error("err:", err)
|
2021-06-30 02:12:05 +00:00
|
|
|
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 {
|
2021-12-25 08:38:30 +00:00
|
|
|
logger.Error("err:", err)
|
2021-06-30 02:12:05 +00:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
|
|
|
func OpenMember(c *gin.Context) {
|
2022-01-16 08:56:20 +00:00
|
|
|
req := struct {
|
2022-06-29 08:03:50 +00:00
|
|
|
MemberLevel uint32 `json:"member_level"` // 昵称
|
|
|
|
UserCouponId uint32 `json:"user_coupon_id"` // 优惠券id
|
2022-01-16 08:56:20 +00:00
|
|
|
}{}
|
|
|
|
if c.ShouldBindJSON(&req) != nil {
|
|
|
|
logger.Error("parameter err")
|
|
|
|
RespJson(c, status.BadRequest, nil)
|
|
|
|
return
|
|
|
|
}
|
2021-06-30 02:12:05 +00:00
|
|
|
uc := auth.GetCurrentUser(c)
|
|
|
|
if uc == nil {
|
|
|
|
RespJson(c, status.Unauthorized, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
user := model.GetUserByUid(uc.Uid)
|
2021-11-01 03:32:23 +00:00
|
|
|
|
2022-01-16 08:56:20 +00:00
|
|
|
//configInfo, err := model.PayConfigInfo()
|
|
|
|
//if err != nil {
|
|
|
|
// logger.Error("err:", err)
|
|
|
|
// RespJson(c, status.InternalServerError, nil)
|
|
|
|
// return
|
|
|
|
//}
|
|
|
|
memberConfig, err := model.GetMemberConfig(req.MemberLevel)
|
2021-12-25 08:38:30 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-01-16 08:56:20 +00:00
|
|
|
|
2021-12-25 08:38:30 +00:00
|
|
|
//totalFee := uint32(MemberFee + DepositFee)
|
2022-04-21 09:03:33 +00:00
|
|
|
////totalFee = uint32(3) // TODO 测试 上线修改
|
2021-12-25 08:38:30 +00:00
|
|
|
//if user.Deposit == 300 {
|
|
|
|
// totalFee = MemberFee
|
2022-04-21 09:03:33 +00:00
|
|
|
// // //totalFee = uint32(1) // TODO 测试 上线修改
|
2021-12-25 08:38:30 +00:00
|
|
|
//}
|
2021-11-01 03:32:23 +00:00
|
|
|
|
2022-01-16 08:56:20 +00:00
|
|
|
fmt.Println("configInfo.MemberFee : configInfo.DepositFee", memberConfig.MemberFee, memberConfig.MemberDeposit)
|
|
|
|
|
2022-01-29 02:21:38 +00:00
|
|
|
totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit - user.Deposit
|
2022-01-16 08:56:20 +00:00
|
|
|
if user.Deposit == memberConfig.MemberDeposit {
|
|
|
|
totalFee = memberConfig.MemberFee
|
2021-12-25 08:38:30 +00:00
|
|
|
}
|
|
|
|
if totalFee == 0 {
|
|
|
|
logger.Error(errors.New("totalFee is 0"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-06-29 08:03:50 +00:00
|
|
|
if req.UserCouponId != 0 {
|
|
|
|
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 coupon.Uid == uc.Uid && coupon.MemberLevel == req.MemberLevel &&
|
|
|
|
coupon.ActivityId == 1 && coupon.State == 1 {
|
|
|
|
totalFee -= coupon.Value
|
|
|
|
} else {
|
|
|
|
req.UserCouponId = 0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-06-30 02:12:05 +00:00
|
|
|
//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
|
|
|
|
//}
|
2021-11-01 03:32:23 +00:00
|
|
|
//orderSn := utils.GetSerialNo32HEXString()
|
|
|
|
orderSn := model.GetOrderSn()
|
2022-06-29 08:03:50 +00:00
|
|
|
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: req.MemberLevel,
|
|
|
|
UserCouponId: req.UserCouponId}.Insert()
|
2022-01-26 08:02:21 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error(errors.New("WebPay err"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-04-25 05:59:56 +00:00
|
|
|
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.WxPayMember, configInfo.NotifyUrl)
|
2022-01-26 08:02:21 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error(errors.New("WebPay err"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, webPay)
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpgradeMember(c *gin.Context) {
|
|
|
|
req := struct {
|
|
|
|
MemberLevel uint32 `json:"member_level"` // 昵称
|
|
|
|
}{}
|
|
|
|
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)
|
2022-06-29 08:03:50 +00:00
|
|
|
//if user.MemberLevel != 2 && user.MemberLevel != 4 {
|
|
|
|
// logger.Error("MemberLevel err:")
|
|
|
|
// RespJson(c, status.InternalServerError, nil)
|
|
|
|
// return
|
|
|
|
//}
|
2022-01-27 14:24:29 +00:00
|
|
|
|
|
|
|
originalMemberConfig, err := model.GetMemberConfig(user.MemberLevel)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-01-26 08:02:21 +00:00
|
|
|
memberConfig, err := model.GetMemberConfig(req.MemberLevel)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-01-27 14:24:29 +00:00
|
|
|
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
|
|
|
|
}
|
2022-01-26 08:02:21 +00:00
|
|
|
|
2022-01-27 14:24:29 +00:00
|
|
|
// 补押金
|
|
|
|
depositMendFee := int64(memberConfig.MemberDeposit) - int64(user.Deposit)
|
2022-01-26 08:02:21 +00:00
|
|
|
|
2022-06-29 08:03:50 +00:00
|
|
|
count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).
|
|
|
|
StatusEq(model.RedeemCodeStatusUsed).Count()
|
2022-01-27 14:24:29 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
fmt.Println("count:", count)
|
|
|
|
// 抵扣天数
|
|
|
|
deductionDays := int64(0)
|
2022-06-29 08:03:50 +00:00
|
|
|
deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 1*3600
|
2022-01-27 14:24:29 +00:00
|
|
|
if deductionTime < 0 {
|
|
|
|
deductionTime = 0
|
|
|
|
}
|
|
|
|
if deductionTime > 0 {
|
|
|
|
deductionDays = deductionTime / int64(24*3600)
|
|
|
|
}
|
2022-06-29 08:03:50 +00:00
|
|
|
memberYare := deductionDays/365 + 1
|
2022-01-27 14:24:29 +00:00
|
|
|
// 抵扣金
|
|
|
|
deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
|
|
|
|
|
|
|
|
// 补会员费
|
2022-06-29 08:03:50 +00:00
|
|
|
memberMendFee := int64(memberConfig.MemberFee*uint32(memberYare)) - deductionFee
|
2022-01-27 14:24:29 +00:00
|
|
|
|
|
|
|
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
|
2022-01-26 08:02:21 +00:00
|
|
|
}
|
2022-01-27 14:24:29 +00:00
|
|
|
|
|
|
|
//totalFee := memberConfig.MemberFee + memberConfig.MemberDeposit
|
|
|
|
//if user.Deposit == memberConfig.MemberDeposit {
|
|
|
|
// totalFee = memberConfig.MemberFee
|
|
|
|
//}
|
2022-01-26 08:02:21 +00:00
|
|
|
if totalFee == 0 {
|
|
|
|
logger.Error(errors.New("totalFee is 0"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
//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()
|
2022-06-29 08:03:50 +00:00
|
|
|
memberExpire := time.Now().AddDate(1*int(memberYare), 0, count*30)
|
2022-01-26 08:02:21 +00:00
|
|
|
orderSn := model.GetOrderSn()
|
2022-01-27 14:24:29 +00:00
|
|
|
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn,
|
2022-06-29 08:03:50 +00:00
|
|
|
MemberLevel: req.MemberLevel, OrderType: 9, MemberExpire: memberExpire}.Insert()
|
2021-06-30 02:12:05 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error(errors.New("WebPay err"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-04-25 05:59:56 +00:00
|
|
|
configInfo, err := model.PayConfigInfo()
|
|
|
|
if err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-06-29 08:03:50 +00:00
|
|
|
webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember,
|
|
|
|
configInfo.NotifyUrl)
|
2021-06-30 02:12:05 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error(errors.New("WebPay err"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, webPay)
|
|
|
|
}
|
|
|
|
|
2022-01-27 14:24:29 +00:00
|
|
|
func UpgradeMemberInfo(c *gin.Context) {
|
|
|
|
req := struct {
|
|
|
|
MemberLevel uint32 `json:"member_level"` // 昵称
|
|
|
|
}{}
|
|
|
|
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)
|
2022-06-29 08:03:50 +00:00
|
|
|
//if user.MemberLevel != 2 && user.MemberLevel != 4 {
|
|
|
|
// logger.Error("MemberLevel err:")
|
|
|
|
// RespJson(c, status.InternalServerError, nil)
|
|
|
|
// return
|
|
|
|
//}
|
2022-01-27 14:24:29 +00:00
|
|
|
|
|
|
|
//configInfo, err := model.PayConfigInfo()
|
|
|
|
//if err != nil {
|
|
|
|
// logger.Error("err:", err)
|
|
|
|
// RespJson(c, status.InternalServerError, nil)
|
|
|
|
// return
|
|
|
|
//}
|
|
|
|
originalMemberConfig, err := model.GetMemberConfig(user.MemberLevel)
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
memberConfig, err := model.GetMemberConfig(req.MemberLevel)
|
|
|
|
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)
|
|
|
|
|
2022-06-29 08:03:50 +00:00
|
|
|
count, err := model.NewUserRedeemCodeQuerySet(model.DB).UidEq(uc.Uid).CodeTypeEq(model.CodeTypeMemberCard30).
|
|
|
|
StatusEq(model.RedeemCodeStatusUsed).Count()
|
2022-01-27 14:24:29 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error("err:", err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
fmt.Println("count:", count)
|
|
|
|
// 抵扣天数
|
|
|
|
deductionDays := int64(0)
|
2022-06-29 08:03:50 +00:00
|
|
|
deductionTime := user.MemberExpire.Unix() - int64(count*30*24*3600) - time.Now().Unix() + 1*3600
|
2022-01-27 14:24:29 +00:00
|
|
|
if deductionTime < 0 {
|
|
|
|
deductionTime = 0
|
|
|
|
}
|
|
|
|
if deductionTime > 0 {
|
|
|
|
deductionDays = deductionTime / int64(24*3600)
|
|
|
|
}
|
2022-06-29 08:03:50 +00:00
|
|
|
memberYare := deductionDays/365 + 1
|
2022-01-27 14:24:29 +00:00
|
|
|
// 抵扣金
|
|
|
|
deductionFee := (((int64(memberFee) * deductionDays) / 365) / 100) * 100
|
|
|
|
|
|
|
|
// 补会员费
|
2022-06-29 08:03:50 +00:00
|
|
|
memberMendFee := int64(memberConfig.MemberFee*uint32(memberYare)) - deductionFee
|
2022-01-27 14:24:29 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, map[string]interface{}{
|
|
|
|
"deduction_fee": deductionFee, // 会员抵扣费
|
|
|
|
"deduction_days": deductionDays, // 会员抵扣天数
|
|
|
|
"member_mend_fee": memberMendFee, // 会员补费
|
|
|
|
"deposit_mend_fee": depositMendFee, // 补押金
|
|
|
|
"total_fee": totalFee, // 总费用
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2021-12-25 08:38:30 +00:00
|
|
|
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}.Insert()
|
|
|
|
if err != nil {
|
|
|
|
logger.Error(errors.New("WebPay err"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-01-16 08:56:20 +00:00
|
|
|
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)
|
2021-12-25 08:38:30 +00:00
|
|
|
if err != nil {
|
2022-01-26 08:02:21 +00:00
|
|
|
logger.Error("GetMemberConfig err:", err)
|
2022-01-16 08:56:20 +00:00
|
|
|
RespJson(c, status.InternalServerError, nil)
|
2021-12-25 08:38:30 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-01-16 08:56:20 +00:00
|
|
|
totalFee := memberConfig.MemberDeposit
|
2021-12-25 08:38:30 +00:00
|
|
|
if totalFee == 0 || user.Deposit == totalFee {
|
|
|
|
logger.Error(errors.New("totalFee is 0"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-04-21 09:03:33 +00:00
|
|
|
//totalFee = 1 // 测试
|
2022-04-25 05:59:56 +00:00
|
|
|
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)
|
2021-12-25 08:38:30 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error(errors.New("WebPay err"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, webPay)
|
|
|
|
}
|
|
|
|
|
2021-06-30 02:12:05 +00:00
|
|
|
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
|
|
|
|
}
|
2021-12-25 08:38:30 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2022-03-26 03:25:15 +00:00
|
|
|
resp, err := model.MemberExpireDelaying(uc.Uid)
|
|
|
|
if err != nil {
|
2022-05-28 07:24:17 +00:00
|
|
|
logger.Errorf("err:%#v", err)
|
2022-03-26 03:25:15 +00:00
|
|
|
RespJson(c, status.InternalServerError, nil)
|
2021-12-25 08:38:30 +00:00
|
|
|
return
|
|
|
|
}
|
2022-03-26 03:25:15 +00:00
|
|
|
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
|
|
|
|
}
|
2021-12-25 08:38:30 +00:00
|
|
|
}
|
|
|
|
|
2022-03-26 03:25:15 +00:00
|
|
|
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)
|
2021-12-25 08:38:30 +00:00
|
|
|
if err != nil {
|
2022-05-28 07:24:17 +00:00
|
|
|
logger.Errorf("err:%#v", err)
|
2021-12-25 08:38:30 +00:00
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-03-26 03:25:15 +00:00
|
|
|
RespOK(c, resp)
|
2021-12-25 08:38:30 +00:00
|
|
|
}
|
|
|
|
|
2022-03-26 03:25:15 +00:00
|
|
|
func UserMemberExpireDelayingInfo(c *gin.Context) {
|
2021-12-25 08:38:30 +00:00
|
|
|
uc := auth.GetCurrentUser(c)
|
|
|
|
if uc == nil {
|
|
|
|
RespJson(c, status.Unauthorized, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-03-26 03:25:15 +00:00
|
|
|
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)
|
2021-12-25 08:38:30 +00:00
|
|
|
if err != nil {
|
2022-05-28 07:24:17 +00:00
|
|
|
logger.Errorf("err:%#v", err)
|
2021-12-25 08:38:30 +00:00
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, resp)
|
|
|
|
}
|
2022-01-15 13:10:00 +00:00
|
|
|
|
2022-03-26 03:25:15 +00:00
|
|
|
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
|
|
|
|
}
|
2022-04-25 05:59:56 +00:00
|
|
|
configInfo, err := model.PayConfigInfo()
|
|
|
|
if err != nil {
|
|
|
|
logger.Error(err)
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-03-26 03:25:15 +00:00
|
|
|
orderSn := model.GetOrderSn()
|
2022-04-25 05:59:56 +00:00
|
|
|
webPay, err := wxpay.WebPay(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, "N", wxpay.WxPayMemberExpireDelay, configInfo.NotifyUrl)
|
2022-03-26 03:25:15 +00:00
|
|
|
if err != nil {
|
|
|
|
logger.Error(errors.New("WebPay err"))
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, OrderId: 0, OrderType: 3}.Insert()
|
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2022-01-16 08:56:20 +00:00
|
|
|
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 {
|
2022-05-28 07:24:17 +00:00
|
|
|
logger.Errorf("err:%#v", err)
|
2022-01-16 08:56:20 +00:00
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
RespOK(c, resp)
|
|
|
|
}
|
|
|
|
|
2022-04-26 06:28:41 +00:00
|
|
|
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")
|
2022-04-27 02:25:55 +00:00
|
|
|
RespJson(c, status.TodayAttendance, nil)
|
2022-04-26 06:28:41 +00:00
|
|
|
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
|
|
|
|
}
|
2022-04-27 02:25:55 +00:00
|
|
|
if attendanceRecord.AttendanceDate == "" ||
|
|
|
|
attendanceRecord.AttendanceDate != utils.TodayZeroAddDaysDateFormat(-1) {
|
2022-04-26 06:28:41 +00:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2022-04-27 02:25:55 +00:00
|
|
|
_, err = model.NewUserAttendanceQuerySet(model.DB).UidEq(uc.Uid).GetUpdater().
|
|
|
|
SetConsecutiveDays(userAttendance.ConsecutiveDays).
|
2022-04-26 06:28:41 +00:00
|
|
|
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(
|
2022-04-27 02:25:55 +00:00
|
|
|
fmt.Sprintf("SELECT * FROM user_attendance_record WHERE attendance_date in ('%s','%s') AND uid=%d",
|
|
|
|
utils.TodayZeroAddDaysDateFormat(-1), todayZero, uc.Uid))
|
2022-04-26 06:28:41 +00:00
|
|
|
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)
|
2022-05-10 07:17:34 +00:00
|
|
|
err = model.NewUserAttendanceRecordQuerySet(model.DB).UidEq(uc.Uid).OrderDescByID().
|
|
|
|
Limit(1).One(&attendanceRecord)
|
2022-04-26 06:28:41 +00:00
|
|
|
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
|
|
|
|
}
|
2022-04-27 02:25:55 +00:00
|
|
|
date := utils.TodayZeroAddDaysDateFormat(i - days)
|
|
|
|
if attendanceRecord.AttendanceDate == todayZero {
|
|
|
|
date = utils.TodayZeroAddDaysDateFormat(i + 1 - days)
|
|
|
|
}
|
2022-04-26 06:28:41 +00:00
|
|
|
info := model.AttendanceInfo{
|
|
|
|
IndexDay: uint32(i) + 1,
|
|
|
|
//Date: utils.TodayZeroAddDaysDateFormat((-1) * (7 - i)),
|
|
|
|
//Date: utils.TodayZeroAddDaysDateFormat(i + 1 - days),
|
2022-04-27 02:25:55 +00:00
|
|
|
//Date: utils.TodayZeroAddDaysDateFormat(i - days),
|
|
|
|
Date: date,
|
2022-04-26 06:28:41 +00:00
|
|
|
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
|
|
|
|
}
|
|
|
|
|
2022-05-10 07:17:34 +00:00
|
|
|
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
|
2022-05-12 05:42:45 +00:00
|
|
|
assistant := model.GetUserByUid(uc.Uid)
|
|
|
|
if assistant.UserType != 2 {
|
|
|
|
logger.Error("not assistant")
|
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
2022-05-10 07:17:34 +00:00
|
|
|
list, totalPage, err := req.List()
|
|
|
|
if err != nil {
|
2022-05-28 07:24:17 +00:00
|
|
|
logger.Errorf("err:%#v", err)
|
2022-05-10 07:17:34 +00:00
|
|
|
RespJson(c, status.InternalServerError, nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
ret := map[string]interface{}{
|
|
|
|
"list": list,
|
|
|
|
"cur_page": req.PageNum,
|
|
|
|
"total_page": totalPage,
|
|
|
|
}
|
|
|
|
RespOK(c, ret)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2022-01-15 13:10:00 +00:00
|
|
|
// 升级 1-黄金会员 2-白金会员 3-黑金会员
|
|
|
|
// 开通会员
|
|
|
|
// 升级会员
|
|
|
|
// 订单
|
|
|
|
// 购物车
|
|
|
|
// 押金
|
|
|
|
|
2022-01-16 08:56:20 +00:00
|
|
|
// 会员列表 开通会员 下订单 借卡 还卡
|
|
|
|
// 会员升级
|
2022-01-26 08:02:21 +00:00
|
|
|
// 299会员 升级
|
2022-03-26 03:25:15 +00:00
|
|
|
// 订单 会员导数据
|
|
|
|
// 退押金记录
|