Files
hm-server/app/main/api/internal/logic/agent/getbankcardinfologic.go
2025-12-24 17:38:08 +08:00

88 lines
2.9 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 agent
import (
"context"
"tydata-server/app/main/model"
"tydata-server/common/ctxdata"
"tydata-server/common/xerr"
"github.com/pkg/errors"
"tydata-server/app/main/api/internal/svc"
"tydata-server/app/main/api/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type GetBankCardInfoLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewGetBankCardInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetBankCardInfoLogic {
return &GetBankCardInfoLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *GetBankCardInfoLogic) GetBankCardInfo(req *types.GetBankCardInfoReq) (resp *types.GetBankCardInfoResp, err error) {
userID, err := ctxdata.GetUidFromCtx(l.ctx)
if err != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "获取用户ID失败: %v", err)
}
// 查询代理信息
agentModel, err := l.svcCtx.AgentModel.FindOneByUserId(l.ctx, userID)
if err != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询代理信息失败: %v", err)
}
// 查询实名认证信息
agentRealName, err := l.svcCtx.AgentRealNameModel.FindOneByAgentId(l.ctx, agentModel.Id)
if err != nil {
if errors.Is(err, model.ErrNotFound) {
return nil, errors.Wrapf(xerr.NewErrMsg("您未进行实名认证"), "您未进行实名认证")
}
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "查询代理实名信息失败: %v", err)
}
// 查询最近一次银行卡提现记录,用于自动填充
// 注意:这里需要查询 withdraw_type = 2 的记录
// 如果数据库还没有迁移,可以先返回空值
resp = &types.GetBankCardInfoResp{
PayeeName: agentRealName.Name,
IdCard: agentRealName.IdCard,
BankCardNo: "",
BankName: "",
}
// 查询最近一次成功的银行卡提现记录
// 这里使用SelectBuilder查询但由于模型可能还没有withdraw_type字段先注释
// builder := l.svcCtx.AgentWithdrawalModel.SelectBuilder()
// builder = builder.Where(squirrel.Eq{"agent_id": agentModel.Id})
// builder = builder.Where(squirrel.Eq{"withdraw_type": WithdrawTypeBankCard})
// builder = builder.Where(squirrel.Eq{"status": StatusSuccess})
// builder = builder.OrderBy("create_time DESC")
// builder = builder.Limit(1)
//
// list, err := l.svcCtx.AgentWithdrawalModel.FindAll(l.ctx, builder, "create_time DESC")
// if err == nil && len(list) > 0 {
// lastRecord := list[0]
// if lastRecord.BankCardNo.Valid {
// resp.BankCardNo = lastRecord.BankCardNo.String
// }
// if lastRecord.BankName.Valid {
// resp.BankName = lastRecord.BankName.String
// }
// }
// 临时方案从PayeeAccount字段读取如果之前有银行卡提现记录
// 注意这个方案不够准确因为PayeeAccount也可能存储支付宝账号
// 建议数据库迁移后使用上面的方案
return resp, nil
}