service/app/mix/controller/vas.go

366 lines
10 KiB
Go
Raw Normal View History

2023-12-21 22:17:40 +08:00
package controller
import (
"service/api/errcode"
vasproto "service/api/proto/vas/proto"
"service/app/mix/service"
2023-12-29 15:03:50 +08:00
"service/bizcommon/common"
2023-12-21 22:17:40 +08:00
"service/bizcommon/util"
"service/library/logger"
2024-01-08 22:38:18 +08:00
"time"
2024-02-01 09:52:45 +08:00
"github.com/gin-gonic/gin"
2023-12-21 22:17:40 +08:00
)
// 获取充值商品
func GetCoinsProductList(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.GetCoinsProductListReq)
2023-12-29 15:03:50 +08:00
if req.Channel == "h5" {
req.DevType = common.DeviceTypeH5
}
2023-12-21 22:17:40 +08:00
data, ec := service.DefaultService.GetCoinsProductList(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("GetCoinsProductList fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
2024-02-01 09:52:45 +08:00
// 获取会员商品
func GetMembershipProductList(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.GetMembershipProductListReq)
if req.Channel == "h5" {
req.DevType = common.DeviceTypeH5
}
data, ec := service.DefaultService.GetMembershipProductList(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("GetMembershipProductList fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
2023-12-21 22:17:40 +08:00
// 充值 创建订单
func CreateOrder(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.CreateOrderReq)
2023-12-29 21:30:59 +08:00
if !req.IsValid() || len(req.PayType) <= 0 || len(req.ProductId) <= 0 {
logger.Error("CreateOrder, invalid param, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return
}
2024-05-14 10:55:49 +08:00
data, ec, err := service.DefaultService.CreateOrder(ctx, req)
2023-12-21 22:17:40 +08:00
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("CreateOrder fail, req: %v, ec: %v", util.ToJson(req), ec)
2024-05-14 10:55:49 +08:00
if ec == errcode.ErrCodeVasSrvFail && err != nil {
ReplyErrorMsg(ctx, err.Error())
return
}
2023-12-21 22:17:40 +08:00
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
// op充值
func OpCreateOrder(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.OpCreateOrderReq)
2023-12-25 01:14:14 +08:00
if req.Operator != "yezian" {
logger.Warn("invalid operator, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeVasInvalidParam)
return
}
2023-12-21 22:17:40 +08:00
ec := service.DefaultService.OpCreateOrder(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("OpCreateOrder fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
// 一键解锁
func OneStepUnlock(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.OneStepUnlockContactReq)
2023-12-29 21:30:59 +08:00
if !req.IsValid() || req.Uid <= 0 || len(req.ContactProductId) <= 0 {
logger.Error("OneStepUnlock, invalid param, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return
}
2023-12-21 22:17:40 +08:00
data, ec := service.DefaultService.OneStepUnlockContact(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("GetAddWechatList fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
// 填写地址
func ConsumerFillContact(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.ConsumerFillContactReq)
2023-12-30 14:22:02 +08:00
if req.Mid <= 0 || len(req.OrderId) <= 0 {
2023-12-29 21:30:59 +08:00
logger.Error("ConsumerFillContact, invalid param, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return
}
2023-12-21 22:17:40 +08:00
ec := service.DefaultService.ConsumerFillContact(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("ConsumerFillContact fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
// 待添加微信列表
func GetAddWechatList(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.GetAddWechatListReq)
2023-12-29 21:30:59 +08:00
if !req.IsValid() {
logger.Error("GetAddWechatList, invalid param, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return
}
2023-12-21 22:17:40 +08:00
data, ec := service.DefaultService.GetAddWechatList(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("GetAddWechatList fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
// 完成添加微信
func ConfirmAddWechat(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.ConfirmAddWechatReq)
2023-12-29 21:30:59 +08:00
if !req.IsValid() {
logger.Error("ConfirmAddWechat, invalid param, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return
}
2023-12-21 22:17:40 +08:00
data, ec := service.DefaultService.ConfirmAddWechat(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("ConfirmAddWechat fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
// 已解锁微信列表
func GetUnlockWechatList(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.GetUnlockWechatListReq)
2023-12-30 13:49:05 +08:00
if req.Mid <= 0 {
2023-12-29 21:30:59 +08:00
logger.Error("GetUnlockWechatList, invalid param, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return
}
2023-12-21 22:17:40 +08:00
data, ec := service.DefaultService.GetUnlockWechatList(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("GetUnlockWechatList fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
// 明细
func GetCHList(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.GetCHListReq)
2023-12-29 21:30:59 +08:00
if !req.IsValid() {
logger.Error("GetCHList, invalid param, req: %v", util.ToJson(req))
ReplyErrCodeMsg(ctx, errcode.ErrCodeBadParam)
return
}
2023-12-21 22:17:40 +08:00
data, ec := service.DefaultService.GetCHList(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("GetCHList fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
// 网红设置微信
func UpdateWechat(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.UpdateWechatReq)
ec := service.DefaultService.UpdateWechat(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("UpdateWechat fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
// 查看微信
func QueryWechat(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.QueryWechatReq)
isUnlock, lockType, wechat, ec := service.DefaultService.QueryWechat(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("QueryWechat fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
data := &vasproto.QueryWechatData{
IsUnlock: isUnlock,
LockType: lockType,
WechatContact: wechat,
}
ReplyOk(ctx, data)
}
// h5直接解锁
func H5DirectUnlockWechat(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.H5DirectUnlockWechatReq)
data, ec := service.DefaultService.H5DirectUnlockWechat(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("H5DirectUnlockWechat fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
2024-01-07 22:37:06 +08:00
// 提现页面
func WithdrawPage(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.WithdrawPageReq)
data, ec := service.DefaultService.WithdrawPage(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("WithdrawPage fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, data)
}
2024-05-06 23:28:22 +08:00
var WithdrawFreezeMidMap = map[int64]bool{
16311: true,
159: true,
}
func isWithdrawFreeze(mid int64) bool {
return WithdrawFreezeMidMap[mid]
}
2024-05-10 23:51:35 +08:00
// 任意额度提现
var WithdrawAnyDiasMap = map[int64]bool{
74: true,
}
func isWithdrawAnyDiasEnable(mid int64) bool {
return WithdrawAnyDiasMap[mid]
}
2024-01-07 22:37:06 +08:00
// 提现发送验证码
func WithdrawSendVerifycode(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.WithdrawSendVerifycodeReq)
2024-05-06 23:28:22 +08:00
if isWithdrawFreeze(req.Mid) {
ReplyErrorMsg(ctx, "当前提现功能已冻结")
return
}
2024-01-07 22:37:06 +08:00
ec := service.DefaultService.WithdrawSendVerifycode(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("WithdrawSendVerifycode fail, req: %v, ec: %v", util.ToJson(req), ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
2024-01-08 11:49:16 +08:00
// 提现申请
func WithdrawApply(ctx *gin.Context) {
2024-02-21 11:36:21 +08:00
//ReplyErrorMsg(ctx, "提现功能维护中请72小时后再试")
//return
2024-01-08 11:49:16 +08:00
req := ctx.MustGet("client_req").(*vasproto.WithdrawApplyReq)
2024-05-06 23:28:22 +08:00
if isWithdrawFreeze(req.Mid) {
ReplyErrorMsg(ctx, "当前提现功能已冻结")
return
}
2024-05-15 12:40:21 +08:00
if req.Diamonds < 1000 {
ReplyErrorMsg(ctx, "最低提现金额不能小于100元")
2024-01-08 22:38:18 +08:00
return
}
2024-05-11 00:04:34 +08:00
2024-05-11 00:04:06 +08:00
if !vasproto.IsWithdrawAnyDiasEnable(req.Mid) && req.Diamonds > 20000 {
2024-01-08 22:38:18 +08:00
ReplyErrorMsg(ctx, "最大提现金额不能大于2000元")
return
}
time.Sleep(time.Second * 1)
2024-01-08 11:49:16 +08:00
data, ec := service.DefaultService.WithdrawApply(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("WithdrawApply fail, req: %v, data: %v, ec: %v", util.ToJson(req), data, ec)
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
2024-01-21 12:27:34 +08:00
// 处理一个订单
func DealOneCoinOrder(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.DealOneCoinOrderReq)
2024-02-03 17:23:08 +08:00
ec, err := service.DefaultService.DealOneCoinOrder(ctx, req)
2024-01-21 12:27:34 +08:00
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("DealOneCoinOrder fail, req: %v, ec: %v", util.ToJson(req), ec)
2024-02-03 17:23:08 +08:00
if err != nil {
ReplyErrorMsg(ctx, err.Error())
return
}
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
// 处理一个订单
func DealOneOrder(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.DealOneOrderReq)
ec, err := service.DefaultService.DealOneOrder(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("DealOneOrder fail, req: %v, ec: %v", util.ToJson(req), ec)
if err != nil {
ReplyErrorMsg(ctx, err.Error())
return
}
2024-01-21 12:27:34 +08:00
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
2024-03-13 20:35:18 +08:00
// 订单退款
func RefundOrder(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.RefundOrderReq)
ec, err := service.DefaultService.RefundOrder(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("RefundOrder fail, req: %v, ec: %v", util.ToJson(req), ec)
if err != nil {
ReplyErrorMsg(ctx, err.Error())
return
}
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}
2024-03-19 16:04:36 +08:00
// 金币订单退款
func RefundCoinOrder(ctx *gin.Context) {
req := ctx.MustGet("client_req").(*vasproto.RefundCoinOrderReq)
ec, err := service.DefaultService.RefundCoinOrder(ctx, req)
if ec != errcode.ErrCodeVasSrvOk {
logger.Error("RefundCoinOrder fail, req: %v, ec: %v", util.ToJson(req), ec)
if err != nil {
ReplyErrorMsg(ctx, err.Error())
return
}
ReplyErrCodeMsg(ctx, ec)
return
}
ReplyOk(ctx, nil)
}