This commit is contained in:
2025-05-11 01:22:25 +08:00
parent d7f8e9c090
commit 1ecac19098
100 changed files with 1233 additions and 467 deletions

View File

@@ -26,13 +26,17 @@ var (
agentMembershipRechargeOrderRowsExpectAutoSet = strings.Join(stringx.Remove(agentMembershipRechargeOrderFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
agentMembershipRechargeOrderRowsWithPlaceHolder = strings.Join(stringx.Remove(agentMembershipRechargeOrderFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheTydataAgentMembershipRechargeOrderIdPrefix = "cache:tydata:agentMembershipRechargeOrder:id:"
cacheTydataAgentMembershipRechargeOrderIdPrefix = "cache:tydata:agentMembershipRechargeOrder:id:"
cacheTydataAgentMembershipRechargeOrderOrderNoPrefix = "cache:tydata:agentMembershipRechargeOrder:orderNo:"
cacheTydataAgentMembershipRechargeOrderPlatformOrderIdPrefix = "cache:tydata:agentMembershipRechargeOrder:platformOrderId:"
)
type (
agentMembershipRechargeOrderModel interface {
Insert(ctx context.Context, session sqlx.Session, data *AgentMembershipRechargeOrder) (sql.Result, error)
FindOne(ctx context.Context, id int64) (*AgentMembershipRechargeOrder, error)
FindOneByOrderNo(ctx context.Context, orderNo string) (*AgentMembershipRechargeOrder, error)
FindOneByPlatformOrderId(ctx context.Context, platformOrderId sql.NullString) (*AgentMembershipRechargeOrder, error)
Update(ctx context.Context, session sqlx.Session, data *AgentMembershipRechargeOrder) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentMembershipRechargeOrder) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
@@ -54,19 +58,20 @@ type (
}
AgentMembershipRechargeOrder struct {
Id int64 `db:"id"`
UserId int64 `db:"user_id"` // 用户ID
AgentId int64 `db:"agent_id"` // 代理ID
LevelName string `db:"level_name"` // 会员级别,如 VIPSVIPnormal
Amount float64 `db:"amount"` // 充值金额
PaymentMethod string `db:"payment_method"` // 支付方式:支付宝,微信,苹果支付,其他
TransactionId string `db:"transaction_id"` // 交易号
Status int64 `db:"status"` // 充值状态1 成功0 失败
CreateTime time.Time `db:"create_time"`
UpdateTime time.Time `db:"update_time"` // 更新时间
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
DelState int64 `db:"del_state"` // 删除状态0 未删除1 已删除
Version int64 `db:"version"` // 版本号
Id int64 `db:"id"`
UserId int64 `db:"user_id"` // 用户ID
AgentId int64 `db:"agent_id"` // 代理ID
LevelName string `db:"level_name"` // 会员级别,如 VIPSVIPnormal
Amount float64 `db:"amount"` // 充值金额
PaymentMethod string `db:"payment_method"` // 支付方式:支付宝,微信,苹果支付,其他
OrderNo string `db:"order_no"` // 交易号
PlatformOrderId sql.NullString `db:"platform_order_id"` // 支付平台订单号
Status string `db:"status"`
CreateTime time.Time `db:"create_time"`
UpdateTime time.Time `db:"update_time"` // 更新时间
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
DelState int64 `db:"del_state"` // 删除状态0 未删除1 已删除
Version int64 `db:"version"` // 版本号
}
)
@@ -80,13 +85,15 @@ func newAgentMembershipRechargeOrderModel(conn sqlx.SqlConn, c cache.CacheConf)
func (m *defaultAgentMembershipRechargeOrderModel) Insert(ctx context.Context, session sqlx.Session, data *AgentMembershipRechargeOrder) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
tydataAgentMembershipRechargeOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderIdPrefix, data.Id)
tydataAgentMembershipRechargeOrderOrderNoKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderOrderNoPrefix, data.OrderNo)
tydataAgentMembershipRechargeOrderPlatformOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderPlatformOrderIdPrefix, data.PlatformOrderId)
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, agentMembershipRechargeOrderRowsExpectAutoSet)
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentMembershipRechargeOrderRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.TransactionId, data.Status, data.DeleteTime, data.DelState, data.Version)
return session.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.OrderNo, data.PlatformOrderId, data.Status, data.DeleteTime, data.DelState, data.Version)
}
return conn.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.TransactionId, data.Status, data.DeleteTime, data.DelState, data.Version)
}, tydataAgentMembershipRechargeOrderIdKey)
return conn.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.OrderNo, data.PlatformOrderId, data.Status, data.DeleteTime, data.DelState, data.Version)
}, tydataAgentMembershipRechargeOrderIdKey, tydataAgentMembershipRechargeOrderOrderNoKey, tydataAgentMembershipRechargeOrderPlatformOrderIdKey)
}
func (m *defaultAgentMembershipRechargeOrderModel) FindOne(ctx context.Context, id int64) (*AgentMembershipRechargeOrder, error) {
@@ -106,33 +113,85 @@ func (m *defaultAgentMembershipRechargeOrderModel) FindOne(ctx context.Context,
}
}
func (m *defaultAgentMembershipRechargeOrderModel) Update(ctx context.Context, session sqlx.Session, data *AgentMembershipRechargeOrder) (sql.Result, error) {
func (m *defaultAgentMembershipRechargeOrderModel) FindOneByOrderNo(ctx context.Context, orderNo string) (*AgentMembershipRechargeOrder, error) {
tydataAgentMembershipRechargeOrderOrderNoKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderOrderNoPrefix, orderNo)
var resp AgentMembershipRechargeOrder
err := m.QueryRowIndexCtx(ctx, &resp, tydataAgentMembershipRechargeOrderOrderNoKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `order_no` = ? and del_state = ? limit 1", agentMembershipRechargeOrderRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, orderNo, globalkey.DelStateNo); err != nil {
return nil, err
}
return resp.Id, nil
}, m.queryPrimary)
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultAgentMembershipRechargeOrderModel) FindOneByPlatformOrderId(ctx context.Context, platformOrderId sql.NullString) (*AgentMembershipRechargeOrder, error) {
tydataAgentMembershipRechargeOrderPlatformOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderPlatformOrderIdPrefix, platformOrderId)
var resp AgentMembershipRechargeOrder
err := m.QueryRowIndexCtx(ctx, &resp, tydataAgentMembershipRechargeOrderPlatformOrderIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `platform_order_id` = ? and del_state = ? limit 1", agentMembershipRechargeOrderRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, platformOrderId, globalkey.DelStateNo); err != nil {
return nil, err
}
return resp.Id, nil
}, m.queryPrimary)
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultAgentMembershipRechargeOrderModel) Update(ctx context.Context, session sqlx.Session, newData *AgentMembershipRechargeOrder) (sql.Result, error) {
data, err := m.FindOne(ctx, newData.Id)
if err != nil {
return nil, err
}
tydataAgentMembershipRechargeOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderIdPrefix, data.Id)
tydataAgentMembershipRechargeOrderOrderNoKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderOrderNoPrefix, data.OrderNo)
tydataAgentMembershipRechargeOrderPlatformOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderPlatformOrderIdPrefix, data.PlatformOrderId)
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, agentMembershipRechargeOrderRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.TransactionId, data.Status, data.DeleteTime, data.DelState, data.Version, data.Id)
return session.ExecCtx(ctx, query, newData.UserId, newData.AgentId, newData.LevelName, newData.Amount, newData.PaymentMethod, newData.OrderNo, newData.PlatformOrderId, newData.Status, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}
return conn.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.TransactionId, data.Status, data.DeleteTime, data.DelState, data.Version, data.Id)
}, tydataAgentMembershipRechargeOrderIdKey)
return conn.ExecCtx(ctx, query, newData.UserId, newData.AgentId, newData.LevelName, newData.Amount, newData.PaymentMethod, newData.OrderNo, newData.PlatformOrderId, newData.Status, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}, tydataAgentMembershipRechargeOrderIdKey, tydataAgentMembershipRechargeOrderOrderNoKey, tydataAgentMembershipRechargeOrderPlatformOrderIdKey)
}
func (m *defaultAgentMembershipRechargeOrderModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentMembershipRechargeOrder) error {
func (m *defaultAgentMembershipRechargeOrderModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AgentMembershipRechargeOrder) error {
oldVersion := data.Version
data.Version += 1
oldVersion := newData.Version
newData.Version += 1
var sqlResult sql.Result
var err error
data, err := m.FindOne(ctx, newData.Id)
if err != nil {
return err
}
tydataAgentMembershipRechargeOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderIdPrefix, data.Id)
tydataAgentMembershipRechargeOrderOrderNoKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderOrderNoPrefix, data.OrderNo)
tydataAgentMembershipRechargeOrderPlatformOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderPlatformOrderIdPrefix, data.PlatformOrderId)
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, agentMembershipRechargeOrderRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.TransactionId, data.Status, data.DeleteTime, data.DelState, data.Version, data.Id, oldVersion)
return session.ExecCtx(ctx, query, newData.UserId, newData.AgentId, newData.LevelName, newData.Amount, newData.PaymentMethod, newData.OrderNo, newData.PlatformOrderId, newData.Status, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, data.UserId, data.AgentId, data.LevelName, data.Amount, data.PaymentMethod, data.TransactionId, data.Status, data.DeleteTime, data.DelState, data.Version, data.Id, oldVersion)
}, tydataAgentMembershipRechargeOrderIdKey)
return conn.ExecCtx(ctx, query, newData.UserId, newData.AgentId, newData.LevelName, newData.Amount, newData.PaymentMethod, newData.OrderNo, newData.PlatformOrderId, newData.Status, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}, tydataAgentMembershipRechargeOrderIdKey, tydataAgentMembershipRechargeOrderOrderNoKey, tydataAgentMembershipRechargeOrderPlatformOrderIdKey)
if err != nil {
return err
}
@@ -151,7 +210,7 @@ func (m *defaultAgentMembershipRechargeOrderModel) DeleteSoft(ctx context.Contex
data.DelState = globalkey.DelStateYes
data.DeleteTime = sql.NullTime{Time: time.Now(), Valid: true}
if err := m.UpdateWithVersion(ctx, session, data); err != nil {
return errors.Wrapf(errors.New("delete soft failed "), "AgentMembershipRechargeOrderModel delete err : %v", err)
return errors.Wrapf(errors.New("delete soft failed "), "AgentMembershipRechargeOrderModel delete err : %+v", err)
}
return nil
}
@@ -350,14 +409,21 @@ func (m *defaultAgentMembershipRechargeOrderModel) SelectBuilder() squirrel.Sele
return squirrel.Select().From(m.table)
}
func (m *defaultAgentMembershipRechargeOrderModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
data, err := m.FindOne(ctx, id)
if err != nil {
return err
}
tydataAgentMembershipRechargeOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderIdPrefix, id)
_, err := m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
tydataAgentMembershipRechargeOrderOrderNoKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderOrderNoPrefix, data.OrderNo)
tydataAgentMembershipRechargeOrderPlatformOrderIdKey := fmt.Sprintf("%s%v", cacheTydataAgentMembershipRechargeOrderPlatformOrderIdPrefix, data.PlatformOrderId)
_, 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)
}, tydataAgentMembershipRechargeOrderIdKey)
}, tydataAgentMembershipRechargeOrderIdKey, tydataAgentMembershipRechargeOrderOrderNoKey, tydataAgentMembershipRechargeOrderPlatformOrderIdKey)
return err
}
func (m *defaultAgentMembershipRechargeOrderModel) formatPrimary(primary interface{}) string {

View File

@@ -34,7 +34,7 @@ type (
userModel interface {
Insert(ctx context.Context, session sqlx.Session, data *User) (sql.Result, error)
FindOne(ctx context.Context, id int64) (*User, error)
FindOneByMobile(ctx context.Context, mobile string) (*User, error)
FindOneByMobile(ctx context.Context, mobile sql.NullString) (*User, error)
Update(ctx context.Context, session sqlx.Session, data *User) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *User) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
@@ -62,9 +62,9 @@ type (
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
DelState int64 `db:"del_state"`
Version int64 `db:"version"` // 版本号
Mobile string `db:"mobile"`
Mobile sql.NullString `db:"mobile"`
Password sql.NullString `db:"password"`
Nickname string `db:"nickname"`
Nickname sql.NullString `db:"nickname"`
Info string `db:"info"`
Inside int64 `db:"inside"`
}
@@ -107,7 +107,7 @@ func (m *defaultUserModel) FindOne(ctx context.Context, id int64) (*User, error)
}
}
func (m *defaultUserModel) FindOneByMobile(ctx context.Context, mobile string) (*User, error) {
func (m *defaultUserModel) FindOneByMobile(ctx context.Context, mobile sql.NullString) (*User, error) {
tydataUserMobileKey := fmt.Sprintf("%s%v", cacheTydataUserMobilePrefix, mobile)
var resp User
err := m.QueryRowIndexCtx(ctx, &resp, tydataUserMobileKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
@@ -182,7 +182,7 @@ func (m *defaultUserModel) DeleteSoft(ctx context.Context, session sqlx.Session,
data.DelState = globalkey.DelStateYes
data.DeleteTime = sql.NullTime{Time: time.Now(), Valid: true}
if err := m.UpdateWithVersion(ctx, session, data); err != nil {
return errors.Wrapf(errors.New("delete soft failed "), "UserModel delete err : %v", err)
return errors.Wrapf(errors.New("delete soft failed "), "UserModel delete err : %+v", err)
}
return nil
}