增加:银行卡提现
This commit is contained in:
@@ -220,6 +220,7 @@ func (l *AgentWithdrawalLogic) mapAlipayError(code string) string {
|
||||
func (l *AgentWithdrawalLogic) createWithdrawalRecord(session sqlx.Session, agentID int64, payeeAccount string, amount float64, finalWithdrawAmount float64, taxAmount float64, outBizNo string) (int64, error) {
|
||||
record := &model.AgentWithdrawal{
|
||||
AgentId: agentID,
|
||||
WithdrawType: 1, // 支付宝提现
|
||||
WithdrawNo: outBizNo,
|
||||
PayeeAccount: payeeAccount,
|
||||
Amount: amount,
|
||||
|
||||
@@ -42,6 +42,7 @@ func (l *BankCardWithdrawalLogic) BankCardWithdrawal(req *types.BankCardWithdraw
|
||||
var (
|
||||
outBizNo string
|
||||
withdrawRes = &types.WithdrawalResp{}
|
||||
agentID int64
|
||||
)
|
||||
var finalWithdrawAmount float64 // 实际到账金额
|
||||
|
||||
@@ -68,6 +69,7 @@ func (l *BankCardWithdrawalLogic) BankCardWithdrawal(req *types.BankCardWithdraw
|
||||
if err != nil {
|
||||
return errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询代理信息失败: %v", err)
|
||||
}
|
||||
agentID = agentModel.Id // 保存agentId用于日志
|
||||
|
||||
// 查询实名认证信息
|
||||
agentRealName, err := l.svcCtx.AgentRealNameModel.FindOneByAgentId(l.ctx, agentModel.Id)
|
||||
@@ -158,7 +160,7 @@ func (l *BankCardWithdrawalLogic) BankCardWithdrawal(req *types.BankCardWithdraw
|
||||
withdrawRes.Status = WithdrawStatusProcessing
|
||||
withdrawRes.FailMsg = ""
|
||||
|
||||
l.Logger.Infof("银行卡提现申请成功 outBizNo:%s agentId:%d amount:%f", outBizNo, 0, req.Amount)
|
||||
l.Logger.Infof("银行卡提现申请成功 outBizNo:%s agentId:%d amount:%f", outBizNo, agentID, req.Amount)
|
||||
return withdrawRes, nil
|
||||
}
|
||||
|
||||
@@ -166,17 +168,16 @@ func (l *BankCardWithdrawalLogic) BankCardWithdrawal(req *types.BankCardWithdraw
|
||||
func (l *BankCardWithdrawalLogic) createBankCardWithdrawalRecord(session sqlx.Session, agentID int64, bankCardNo string, bankName string, payeeName string, amount float64, finalWithdrawAmount float64, taxAmount float64, outBizNo string) (int64, error) {
|
||||
record := &model.AgentWithdrawal{
|
||||
AgentId: agentID,
|
||||
WithdrawType: WithdrawTypeBankCard, // 银行卡提现
|
||||
WithdrawNo: outBizNo,
|
||||
PayeeAccount: bankCardNo, // 银行卡号存储在PayeeAccount字段
|
||||
Amount: amount,
|
||||
ActualAmount: finalWithdrawAmount,
|
||||
TaxAmount: taxAmount,
|
||||
Status: StatusProcessing, // 申请中状态
|
||||
// 注意:以下字段需要在数据库迁移后添加,如果模型还没有这些字段,需要先更新模型
|
||||
// WithdrawType: WithdrawTypeBankCard,
|
||||
// BankCardNo: sql.NullString{String: bankCardNo, Valid: true},
|
||||
// BankName: sql.NullString{String: bankName, Valid: true},
|
||||
// PayeeName: sql.NullString{String: payeeName, Valid: true},
|
||||
BankCardNo: sql.NullString{String: bankCardNo, Valid: true},
|
||||
BankName: sql.NullString{String: bankName, Valid: true},
|
||||
PayeeName: sql.NullString{String: payeeName, Valid: true},
|
||||
}
|
||||
|
||||
result, err := l.svcCtx.AgentWithdrawalModel.Insert(l.ctx, session, record)
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"tydata-server/common/ctxdata"
|
||||
"tydata-server/common/xerr"
|
||||
|
||||
"github.com/Masterminds/squirrel"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"tydata-server/app/main/api/internal/svc"
|
||||
@@ -49,39 +50,32 @@ func (l *GetBankCardInfoLogic) GetBankCardInfo(req *types.GetBankCardInfoReq) (r
|
||||
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "查询代理实名信息失败: %v", err)
|
||||
}
|
||||
|
||||
// 查询最近一次银行卡提现记录,用于自动填充
|
||||
// 注意:这里需要查询 withdraw_type = 2 的记录
|
||||
// 如果数据库还没有迁移,可以先返回空值
|
||||
// 初始化响应,包含实名认证信息
|
||||
resp = &types.GetBankCardInfoResp{
|
||||
PayeeName: agentRealName.Name,
|
||||
IdCard: agentRealName.IdCard,
|
||||
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
|
||||
// }
|
||||
// }
|
||||
// 查询最近一次成功的银行卡提现记录,用于自动填充
|
||||
builder := l.svcCtx.AgentWithdrawalModel.SelectBuilder()
|
||||
builder = builder.Where(squirrel.Eq{"agent_id": agentModel.Id})
|
||||
builder = builder.Where(squirrel.Eq{"withdraw_type": 2}) // 银行卡提现
|
||||
builder = builder.Where(squirrel.Eq{"status": 2}) // 成功状态
|
||||
builder = builder.OrderBy("create_time DESC")
|
||||
builder = builder.Limit(1)
|
||||
|
||||
// 临时方案:从PayeeAccount字段读取(如果之前有银行卡提现记录)
|
||||
// 注意:这个方案不够准确,因为PayeeAccount也可能存储支付宝账号
|
||||
// 建议数据库迁移后使用上面的方案
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user