Files
huangguo_server/app/api/rechargectrl/rechargectrl.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

218 lines
6.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package rechargectrl
import (
"sync"
"91porn-server/app/proto"
"91porn-server/app/service/rechargeser"
"91porn-server/common"
"91porn-server/common/daichong"
"91porn-server/common/stderr"
"91porn-server/models/commod"
"91porn-server/models/v/rchgamtmod"
"91porn-server/models/v/rchgordmod"
"github.com/gin-gonic/gin"
)
// NewRecharge doc
// @Summary 充值接口 充值完成后会产生一条充值流水
// @Description 充值接口 充值完成后会产生一条充值流水
// @Tags 钱包
// @Accept json
// @Produce json
// @Param request formData rechargeser.RechargeRequest true "request"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/app/mine/topay [post]
func NewRecharge(c *gin.Context) {
var (
err error
in = new(rechargeser.RechargeRequest)
payUrl, mode string
)
in.UID, err = common.GetUID(c)
if err != nil {
common.ServeJSON(c, stderr.ErrNoToken, err)
return
}
in.IP = common.GetIP(c)
if err = c.ShouldBindJSON(&in); err != nil {
common.ServeJSON(c, stderr.ErrParamError, err)
return
}
ua, _ := common.GetUA(c)
// 客户端下单不参与活动抵扣券(deduct=nil)couponId/deductAmount 仅活动服 HMAC 入口可注入
if payUrl, mode, err = rechargeser.Recharge(c, in, ua, nil); err != nil {
common.ServeJSON(c, stderr.RechargeFaile, err.Error())
return
}
common.ServeJSON(c, stderr.Success, gin.H{
"payUrl": payUrl,
"mode": mode,
})
}
// GetRecHistory doc
// @Summary 获取充值记录
// @Description 根据条件查询充值记录
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber formData int true "页码"
// @Param pageSize formData int true "条数"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/rchg/order [get]
func GetRecHistory(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err)
return
}
var arg struct {
commod.Page
}
if err = ctx.ShouldBind(&arg); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
total, data, hasNext, err := rchgordmod.FindMyOrders(uid, arg.PageSize, arg.PageNumber)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNetWorkBusy, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"total": total,
"orders": data,
"list": data,
"hasNext": hasNext,
})
}
// GetRechargeType doc
// @Summary 获取充值类型
// @Description 获取充值类型
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param typeID query string false "结束时间"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/rechargeTypeList [get]
func GetRechargeType(ctx *gin.Context) {
ua, _ := common.GetUA(ctx)
var (
goldRes []*rchgamtmod.GoldRes
dai daichong.ChatResp
goldResErrpr error
)
wg := sync.WaitGroup{}
wg.Add(1)
common.Go(func() {
defer wg.Done()
goldRes, goldResErrpr = rechargeser.GetPayChannel_new(ctx, ua.SysType, 0)
})
wg.Wait()
if goldResErrpr != nil {
common.ServeJSON(ctx, stderr.PayBusy, goldResErrpr.Error())
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": goldRes,
"daichong": dai.Data,
})
}
// CurrencyList doc
// @Summary 获取充值金额列表
// @Description 获取充值金额列表
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param request query rechargeser.CurrencyListRequest true "类型1-金币 2-游戏币 3-果币"
// @Success 200 {object} proto.CurryenyResp "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/app/mine/currencys [get]
func CurrencyList(c *gin.Context) {
uid, err := common.GetUID(c)
if err != nil {
common.ServeJSON(c, stderr.ErrParamError, nil)
return
}
ua, err := common.GetUA(c)
if err != nil {
common.ServeJSON(c, stderr.ErrParamError, nil)
return
}
var (
args rechargeser.CurrencyListRequest
wg sync.WaitGroup
dcChat daichong.ChatResp
code stderr.Code
data []*proto.CurrencyListResponse
)
if err := c.ShouldBindQuery(&args); err != nil {
common.ServeJSON(c, stderr.ErrParamError, nil)
return
}
wg.Add(2)
common.Go(func() {
defer wg.Done()
data, code = rechargeser.New_CurrencyList(c, uid, ua.SysType, commod.CurrencyType(args.Type))
})
common.Go(func() {
defer wg.Done()
//var productType int
//if commod.CurrencyType(args.Type) == commod.GameCoin {
// productType = 1
//}
//dcChat, _ = daichongser.NewTakeChat(c, uid, productType)
dcChat = daichong.ChatResp{}
})
wg.Wait()
if code != stderr.Success {
common.ServeJSON(c, code, nil)
return
}
common.ServeJSON(c, stderr.Success, proto.CurryenyResp{
Chat: dcChat.Data,
List: data,
})
}
// GetUserTransactions doc
// @Summary 获取充值记录
// @Description 根据条件查询充值记录
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber formData int true "页码"
// @Param pageSize formData int true "条数"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /app/mine/transaction [get]
func GetUserTransactions(c *gin.Context) {
uid, err := common.GetUID(c)
if err != nil {
common.ServeJSON(c, stderr.ErrParamError, nil)
return
}
var arg commod.Page
if err = c.ShouldBind(&arg); err != nil {
common.ServeJSON(c, stderr.ErrParamError, err)
return
}
total, data, hasNext, err := rechargeser.GetUserTransactionDetails(uid, arg.PageNumber, arg.PageSize)
if err != nil {
common.ServeJSON(c, stderr.ErrNetWorkBusy, err.Error())
return
}
common.ServeJSON(c, stderr.Success, gin.H{
"total": total,
"list": data,
"hasNext": hasNext,
})
}