112 lines
3.1 KiB
Go
112 lines
3.1 KiB
Go
package vipctrl
|
|
|
|
import (
|
|
"91jd-server/app/service/integral_config_ser"
|
|
"91jd-server/common/daichong"
|
|
"sync"
|
|
"time"
|
|
|
|
"91jd-server/app/proto"
|
|
"91jd-server/app/service/productser"
|
|
"91jd-server/app/service/rechargeser"
|
|
"91jd-server/app/service/vipcardexperimentser"
|
|
"91jd-server/common"
|
|
"91jd-server/common/log"
|
|
"91jd-server/common/stderr"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Product doc
|
|
// @Summary vip种类 新
|
|
// @Description 可购买的vip种类
|
|
// @Tags vip
|
|
// @Accept mpfd,json
|
|
// @Produce json,html
|
|
// @Success 200 {object} proto.ProductRes "{"msg": "操作成功"}"
|
|
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
// @Router /app/vip/product [get]
|
|
func Product(ctx *gin.Context) {
|
|
uid, _ := common.GetUID(ctx)
|
|
ua, _ := common.GetUA(ctx)
|
|
var (
|
|
data = proto.ProductRes{
|
|
IsNewUser: false,
|
|
}
|
|
goldResError error
|
|
)
|
|
var arg struct {
|
|
IsNewUser bool `json:"isNewUser" form:"isNewUser"` // 是否新手
|
|
}
|
|
if err := ctx.ShouldBind(&arg); err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
|
return
|
|
}
|
|
wg := sync.WaitGroup{}
|
|
wg.Add(3)
|
|
common.Go(func() {
|
|
defer wg.Done()
|
|
countdownSec, _ := productser.CountdownTiroCard(uid)
|
|
if countdownSec > 0 {
|
|
data.IsNewUser = true
|
|
}
|
|
if arg.IsNewUser == true {
|
|
data.IsNewUser = arg.IsNewUser
|
|
}
|
|
data.List, goldResError = rechargeser.New_ProductList(uid, ua.SysType, data.IsNewUser, 0)
|
|
})
|
|
common.Go(func() {
|
|
defer wg.Done()
|
|
//d, _ := daichongser.NewTakeChat(ctx, uid, 0)
|
|
d := daichong.ChatResp{}
|
|
data.Daichong = d.Data
|
|
})
|
|
common.Go(func() {
|
|
defer wg.Done()
|
|
data.IntegralList = integral_config_ser.GetAllConfig()
|
|
})
|
|
wg.Wait()
|
|
if goldResError != nil {
|
|
common.ServeJSON(ctx, stderr.PayBusy, goldResError.Error())
|
|
return
|
|
}
|
|
if err := vipcardexperimentser.ApplyToProductResponse(uid, &data, time.Now()); err != nil {
|
|
// 实验是增强能力,查询异常时降级到原套餐列表,不能阻断购买主链路。
|
|
log.Warn("vip card experiment fallback to legacy product response", log.Any("uid", uid), log.E(err))
|
|
}
|
|
common.ServeJSON(ctx, stderr.Success, data)
|
|
}
|
|
|
|
// 获取新手卡倒计时
|
|
func CountdownTiroCard(ctx *gin.Context) {
|
|
uid, err := common.GetUID(ctx)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrNoToken, err)
|
|
return
|
|
}
|
|
countdownSec, err := productser.CountdownTiroCard(uid)
|
|
if err != nil {
|
|
common.ServeJSON(ctx, stderr.ErrDbQueryError, err)
|
|
return
|
|
}
|
|
common.ServeJSON(ctx, stderr.Success, gin.H{"countdownSec": countdownSec})
|
|
}
|
|
|
|
//// VipRecommend doc
|
|
//// @Summary vip推荐展示
|
|
//// @Description vip推荐展示
|
|
//// @Tags vip
|
|
//// @Accept mpfd,json
|
|
//// @Produce json,html
|
|
//// @Success 200 {object} productmod.Product
|
|
//// @Failure 400 {string} json "{"msg": "操作失败"}"
|
|
//// @Router /api/app/vip/recommend [get]
|
|
//func VipRecommend(ctx *gin.Context) {
|
|
// resp, err := productser.GetRecommendVip()
|
|
// if err != nil {
|
|
// common.ServeJSON(ctx, stderr.ErrDbQueryError, err)
|
|
// return
|
|
// }
|
|
// common.ServeJSON(ctx, stderr.Success, resp)
|
|
//}
|