Files
huangguo_server/app/api/txnactctr/txnactctr.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

216 lines
6.5 KiB
Go

package txnactctr
import (
"91porn-server/common"
"91porn-server/common/stderr"
"91porn-server/models/v/txnactmod"
"91porn-server/models/v/usermod"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson/primitive"
)
// GetBanks doc
// @Summary 获取绑定的银行卡列表
// @Description 银行卡绑定
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/txnact/banks [get]
func GetBanks(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err.Error())
return
}
data, err := txnactmod.FindManyByActType(uid, txnactmod.Bank)
if err != nil {
common.ServeJSON(ctx, stderr.ErrServerUnavailable, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": data,
})
}
// AddBank doc
// @Summary 绑定银行卡
// @Description 银行卡绑定
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param actName body string true "账户姓名"
// @Param act body string true "账户号"
// @Param bankCode body string true "银行代号"
// @Param cardType body string true "卡类型"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/txnact/bank [post]
func AddBank(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err.Error())
return
}
t := txnactmod.TransactionAct{AType: txnactmod.Bank}
if err = ctx.ShouldBind(&t); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
return
}
t.UID = uid
user, err := usermod.FindUserByUID(uid)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNetWorkBusy, err.Error())
return
}
if user.BankActName != "" && user.BankActName != t.ActName {
common.ServeJSON(ctx, stderr.DifferentBankActName, "")
return
}
if err = txnactmod.Insert(&t); err != nil {
if stderr.IsEqual(err, stderr.InsertExistError) {
common.ServeJSON(ctx, stderr.ErrWithDrawAccountHasBind, err.Error())
return
}
common.ServeJSON(ctx, stderr.ErrDbInsertError, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, nil)
}
// EditTransactionAct doc
// @Summary 修改提现账户
// @Description 修改提现账户
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param id body string true "id"
// @Param actName body string true "账户名字"
// @Param act body string true "账户号"
// @Param bankCode body string true "银行卡代码"
// @Param cardType body string true "卡类型"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/txnact/bank/update [post]
func EditTransactionAct(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err.Error())
return
}
var p struct {
ID primitive.ObjectID `json:"id"`
txnactmod.TransactionActSelector
}
if err = ctx.ShouldBind(&p); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
return
}
if p.ActName != nil {
var txa txnactmod.TransactionAct
txa, err = txnactmod.FindOneByID(p.ID)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNetWorkBusy, err.Error())
return
}
if txa.AType == txnactmod.Bank {
user, err := usermod.FindUserByUID(uid)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNetWorkBusy, err.Error())
return
}
if user.BankActName != "" && user.BankActName != *p.ActName {
common.ServeJSON(ctx, stderr.DifferentBankActName, "")
return
}
}
}
if _, err = txnactmod.Update(p.ID, &p.TransactionActSelector); err != nil {
common.ServeJSON(ctx, stderr.ErrDbInsertError, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, nil)
}
// GetAlipays doc
// @Summary 获取支付宝列表
// @Description 银行卡绑定
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/txnact/alipays [get]
func GetAlipays(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err.Error())
return
}
data, err := txnactmod.FindManyByActType(uid, txnactmod.Alipay)
if err != nil {
common.ServeJSON(ctx, stderr.ErrServerUnavailable, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": data,
})
}
// AddAliPay doc
// @Summary 绑定支付宝
// @Description 绑定支付宝
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param actName body string true "账户姓名"
// @Param act body string true "账户号"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/txnact/alipay [post]
func AddAliPay(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err.Error())
return
}
t := txnactmod.TransactionAct{AType: txnactmod.Alipay}
if err = ctx.ShouldBind(&t); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
return
}
t.UID = uid
if err = txnactmod.Insert(&t); err != nil {
common.ServeJSON(ctx, stderr.ErrDbInsertError, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, nil)
}
// DelAlipay doc
// @Summary 删除除提现账户
// @Description 删除除提现账户
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Param id body string true "id"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/txnact/del [delete]
func DelTxAccount(ctx *gin.Context) {
var p struct {
ID primitive.ObjectID `json:"id"`
}
if err := ctx.ShouldBind(&p); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
return
}
if _, err := txnactmod.DeleteByID(p.ID); err != nil {
common.ServeJSON(ctx, stderr.ErrDbDeleteError, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, nil)
}