This commit is contained in:
2025-12-26 14:43:27 +08:00
18 changed files with 1180 additions and 35 deletions

View File

@@ -10,8 +10,6 @@ import (
"time"
"tydata-server/common/globalkey"
"github.com/Masterminds/squirrel"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
@@ -19,6 +17,7 @@ import (
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"tydata-server/common/globalkey"
)
var (
@@ -27,8 +26,8 @@ var (
agentWithdrawalRowsExpectAutoSet = strings.Join(stringx.Remove(agentWithdrawalFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
agentWithdrawalRowsWithPlaceHolder = strings.Join(stringx.Remove(agentWithdrawalFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheHmAgentWithdrawalIdPrefix = "cache:tydata:agentWithdrawal:id:"
cacheHmAgentWithdrawalWithdrawNoPrefix = "cache:tydata:agentWithdrawal:withdrawNo:"
cacheTydataAgentWithdrawalIdPrefix = "cache:tydata:agentWithdrawal:id:"
cacheTydataAgentWithdrawalWithdrawNoPrefix = "cache:tydata:agentWithdrawal:withdrawNo:"
)
type (
@@ -59,12 +58,16 @@ type (
AgentWithdrawal struct {
Id int64 `db:"id"`
AgentId int64 `db:"agent_id"` // 代理ID
WithdrawType int64 `db:"withdraw_type"` // 提现类型:1-支付宝,2-银行卡
WithdrawNo string `db:"withdraw_no"` // 提现单号
Amount float64 `db:"amount"` // 提现金额
ActualAmount float64 `db:"actual_amount"` // 实际到账金额(扣税后)
TaxAmount float64 `db:"tax_amount"` // 扣税金额
Status int64 `db:"status"` // 状态:1-申请中,2-成功,3-失败
PayeeAccount string `db:"payeeAccount"` // 收款人账号
BankCardNo sql.NullString `db:"bank_card_no"` // 银行卡号
BankName sql.NullString `db:"bank_name"` // 开户支行
PayeeName sql.NullString `db:"payee_name"` // 收款人姓名
Remark sql.NullString `db:"remark"`
CreateTime time.Time `db:"create_time"` // 创建时间
UpdateTime time.Time `db:"update_time"` // 更新时间
@@ -83,21 +86,21 @@ func newAgentWithdrawalModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgent
func (m *defaultAgentWithdrawalModel) Insert(ctx context.Context, session sqlx.Session, data *AgentWithdrawal) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
hmAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalIdPrefix, data.Id)
hmAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
tydataAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalIdPrefix, data.Id)
tydataAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentWithdrawalRowsExpectAutoSet)
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentWithdrawalRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.AgentId, data.WithdrawNo, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.PayeeAccount, data.Remark, data.DeleteTime, data.DelState, data.Version)
return session.ExecCtx(ctx, query, data.AgentId, data.WithdrawType, data.WithdrawNo, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.PayeeAccount, data.BankCardNo, data.BankName, data.PayeeName, data.Remark, data.DeleteTime, data.DelState, data.Version)
}
return conn.ExecCtx(ctx, query, data.AgentId, data.WithdrawNo, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.PayeeAccount, data.Remark, data.DeleteTime, data.DelState, data.Version)
}, hmAgentWithdrawalIdKey, hmAgentWithdrawalWithdrawNoKey)
return conn.ExecCtx(ctx, query, data.AgentId, data.WithdrawType, data.WithdrawNo, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.PayeeAccount, data.BankCardNo, data.BankName, data.PayeeName, data.Remark, data.DeleteTime, data.DelState, data.Version)
}, tydataAgentWithdrawalIdKey, tydataAgentWithdrawalWithdrawNoKey)
}
func (m *defaultAgentWithdrawalModel) FindOne(ctx context.Context, id int64) (*AgentWithdrawal, error) {
hmAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalIdPrefix, id)
tydataAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalIdPrefix, id)
var resp AgentWithdrawal
err := m.QueryRowCtx(ctx, &resp, hmAgentWithdrawalIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
err := m.QueryRowCtx(ctx, &resp, tydataAgentWithdrawalIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", agentWithdrawalRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
@@ -112,9 +115,9 @@ func (m *defaultAgentWithdrawalModel) FindOne(ctx context.Context, id int64) (*A
}
func (m *defaultAgentWithdrawalModel) FindOneByWithdrawNo(ctx context.Context, withdrawNo string) (*AgentWithdrawal, error) {
hmAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalWithdrawNoPrefix, withdrawNo)
tydataAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalWithdrawNoPrefix, withdrawNo)
var resp AgentWithdrawal
err := m.QueryRowIndexCtx(ctx, &resp, hmAgentWithdrawalWithdrawNoKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
err := m.QueryRowIndexCtx(ctx, &resp, tydataAgentWithdrawalWithdrawNoKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `withdraw_no` = ? and del_state = ? limit 1", agentWithdrawalRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, withdrawNo, globalkey.DelStateNo); err != nil {
return nil, err
@@ -136,15 +139,15 @@ func (m *defaultAgentWithdrawalModel) Update(ctx context.Context, session sqlx.S
if err != nil {
return nil, err
}
hmAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalIdPrefix, data.Id)
hmAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
tydataAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalIdPrefix, data.Id)
tydataAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, agentWithdrawalRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
return session.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawType, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}, hmAgentWithdrawalIdKey, hmAgentWithdrawalWithdrawNoKey)
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawType, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}, tydataAgentWithdrawalIdKey, tydataAgentWithdrawalWithdrawNoKey)
}
func (m *defaultAgentWithdrawalModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AgentWithdrawal) error {
@@ -159,15 +162,15 @@ func (m *defaultAgentWithdrawalModel) UpdateWithVersion(ctx context.Context, ses
if err != nil {
return err
}
hmAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalIdPrefix, data.Id)
hmAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
tydataAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalIdPrefix, data.Id)
tydataAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
sqlResult, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("update %s set %s where `id` = ? and version = ? ", m.table, agentWithdrawalRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
return session.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawType, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}, hmAgentWithdrawalIdKey, hmAgentWithdrawalWithdrawNoKey)
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawType, newData.WithdrawNo, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}, tydataAgentWithdrawalIdKey, tydataAgentWithdrawalWithdrawNoKey)
if err != nil {
return err
}
@@ -390,19 +393,19 @@ func (m *defaultAgentWithdrawalModel) Delete(ctx context.Context, session sqlx.S
return err
}
hmAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalIdPrefix, id)
hmAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheHmAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
tydataAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalIdPrefix, id)
tydataAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalWithdrawNoPrefix, data.WithdrawNo)
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
if session != nil {
return session.ExecCtx(ctx, query, id)
}
return conn.ExecCtx(ctx, query, id)
}, hmAgentWithdrawalIdKey, hmAgentWithdrawalWithdrawNoKey)
}, tydataAgentWithdrawalIdKey, tydataAgentWithdrawalWithdrawNoKey)
return err
}
func (m *defaultAgentWithdrawalModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheHmAgentWithdrawalIdPrefix, primary)
return fmt.Sprintf("%s%v", cacheTydataAgentWithdrawalIdPrefix, primary)
}
func (m *defaultAgentWithdrawalModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", agentWithdrawalRows, m.table)