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 {
MemberLevel uint32 ` json:"member_level" ` // 昵称
} { }
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
}
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-01-26 08:02:21 +00:00
err = model . UserOpenMemberRecord { Uid : uc . Uid , OpenNo : orderSn , MemberLevel : req . MemberLevel } . Insert ( )
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 )
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-04-19 01:55:38 +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 )
deductionTime := user . MemberExpire . Unix ( ) - int64 ( count * 30 * 24 * 3600 ) - time . Now ( ) . Unix ( ) + 12 * 3600
if deductionTime < 0 {
deductionTime = 0
}
if deductionTime > 0 {
deductionDays = deductionTime / int64 ( 24 * 3600 )
}
2022-01-26 08:02:21 +00:00
2022-01-27 14:24:29 +00:00
// 抵扣金
deductionFee := ( ( ( int64 ( memberFee ) * deductionDays ) / 365 ) / 100 ) * 100
// 补会员费
memberMendFee := int64 ( memberConfig . MemberFee ) - 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
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-01-27 14:24:29 +00:00
memberExpire := time . Now ( ) . AddDate ( 1 , 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 ,
MemberLevel : req . MemberLevel , OrderType : 3 , 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
}
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 )
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 )
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-04-19 01:55:38 +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 )
deductionTime := user . MemberExpire . Unix ( ) - int64 ( count * 30 * 24 * 3600 ) - time . Now ( ) . Unix ( ) + 12 * 3600
if deductionTime < 0 {
deductionTime = 0
}
if deductionTime > 0 {
deductionDays = deductionTime / int64 ( 24 * 3600 )
}
// 抵扣金
deductionFee := ( ( ( int64 ( memberFee ) * deductionDays ) / 365 ) / 100 ) * 100
// 补会员费
memberMendFee := int64 ( memberConfig . MemberFee ) - 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
}
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 {
logger . Errorf ( "err:" , err )
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-03-26 03:25:15 +00:00
logger . Errorf ( "err:" , 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 {
logger . Errorf ( "err:" , err )
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 {
logger . Errorf ( "err:" , err )
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" )
RespJson ( c , status . InternalServerError , 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
//uc = &auth.UserClaims{Uid: 51141053}
}
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
}
info := model . AttendanceInfo {
IndexDay : uint32 ( i ) + 1 ,
//Date: utils.TodayZeroAddDaysDateFormat((-1) * (7 - i)),
//Date: utils.TodayZeroAddDaysDateFormat(i + 1 - days),
Date : utils . TodayZeroAddDaysDateFormat ( i - days ) ,
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-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
// 订单 会员导数据
// 退押金记录