This commit is contained in:
2026-01-12 16:43:08 +08:00
parent dc747139c9
commit 3c6e2683f5
110 changed files with 9630 additions and 481 deletions

View File

@@ -58,21 +58,24 @@ type (
}
AgentWithdrawal struct {
Id string `db:"id"`
AgentId string `db:"agent_id"`
WithdrawNo string `db:"withdraw_no"` // 提现单号
PayeeAccount string `db:"payee_account"` // 收款账户
PayeeName string `db:"payee_name"` // 收款人姓名
Amount float64 `db:"amount"` // 提现金额
ActualAmount float64 `db:"actual_amount"` // 实际到账金额(扣除税费后
TaxAmount float64 `db:"tax_amount"` // 税费金额
Status int64 `db:"status"` // 状态1=处理中2=成功3=失败
Remark sql.NullString `db:"remark"` // 备注
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 string `db:"id"`
AgentId string `db:"agent_id"`
WithdrawalType int64 `db:"withdrawal_type"` // 提现方式1=支付宝2=银行卡
WithdrawNo string `db:"withdraw_no"` // 提现单号
PayeeAccount string `db:"payee_account"` // 收款账户
BankCardNo sql.NullString `db:"bank_card_no"` // 银行卡号(银行卡提现时使用)
BankName sql.NullString `db:"bank_name"` // 开户行名称(银行卡提现时使用
PayeeName string `db:"payee_name"` // 收款人姓名
Amount float64 `db:"amount"` // 提现金额
ActualAmount float64 `db:"actual_amount"` // 实际到账金额(扣除税费后)
TaxAmount float64 `db:"tax_amount"` // 税费金额
Status int64 `db:"status"` // 状态1=处理中2=成功3=失败
Remark sql.NullString `db:"remark"` // 备注
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"` // 版本号(乐观锁)
}
)
@@ -89,11 +92,11 @@ func (m *defaultAgentWithdrawalModel) Insert(ctx context.Context, session sqlx.S
yccAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheYccAgentWithdrawalIdPrefix, data.Id)
yccAgentWithdrawalWithdrawNoKey := fmt.Sprintf("%s%v", cacheYccAgentWithdrawalWithdrawNoPrefix, 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.Id, data.AgentId, data.WithdrawNo, data.PayeeAccount, data.PayeeName, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.WithdrawalType, data.WithdrawNo, data.PayeeAccount, data.BankCardNo, data.BankName, data.PayeeName, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
}
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.WithdrawNo, data.PayeeAccount, data.PayeeName, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.WithdrawalType, data.WithdrawNo, data.PayeeAccount, data.BankCardNo, data.BankName, data.PayeeName, data.Amount, data.ActualAmount, data.TaxAmount, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
}, yccAgentWithdrawalIdKey, yccAgentWithdrawalWithdrawNoKey)
}
func (m *defaultAgentWithdrawalModel) insertUUID(data *AgentWithdrawal) {
@@ -160,9 +163,9 @@ func (m *defaultAgentWithdrawalModel) Update(ctx context.Context, session sqlx.S
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.PayeeAccount, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
return session.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawalType, newData.WithdrawNo, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawNo, newData.PayeeAccount, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawalType, newData.WithdrawNo, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}, yccAgentWithdrawalIdKey, yccAgentWithdrawalWithdrawNoKey)
}
@@ -183,9 +186,9 @@ func (m *defaultAgentWithdrawalModel) UpdateWithVersion(ctx context.Context, ses
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.PayeeAccount, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
return session.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawalType, newData.WithdrawNo, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawNo, newData.PayeeAccount, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
return conn.ExecCtx(ctx, query, newData.AgentId, newData.WithdrawalType, newData.WithdrawNo, newData.PayeeAccount, newData.BankCardNo, newData.BankName, newData.PayeeName, newData.Amount, newData.ActualAmount, newData.TaxAmount, newData.Status, newData.Remark, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}, yccAgentWithdrawalIdKey, yccAgentWithdrawalWithdrawNoKey)
if err != nil {
return err

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ AlipayFromCallbackModel = (*customAlipayFromCallbackModel)(nil)
type (
// AlipayFromCallbackModel is an interface to be customized, add more methods here,
// and implement the added methods in customAlipayFromCallbackModel.
AlipayFromCallbackModel interface {
alipayFromCallbackModel
}
customAlipayFromCallbackModel struct {
*defaultAlipayFromCallbackModel
}
)
// NewAlipayFromCallbackModel returns a model for the database table.
func NewAlipayFromCallbackModel(conn sqlx.SqlConn, c cache.CacheConf) AlipayFromCallbackModel {
return &customAlipayFromCallbackModel{
defaultAlipayFromCallbackModel: newAlipayFromCallbackModel(conn, c),
}
}

View File

@@ -0,0 +1,391 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
alipayFromCallbackFieldNames = builder.RawFieldNames(&AlipayFromCallback{})
alipayFromCallbackRows = strings.Join(alipayFromCallbackFieldNames, ",")
alipayFromCallbackRowsExpectAutoSet = strings.Join(stringx.Remove(alipayFromCallbackFieldNames, "`create_time`", "`update_time`"), ",")
alipayFromCallbackRowsWithPlaceHolder = strings.Join(stringx.Remove(alipayFromCallbackFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccAlipayFromCallbackIdPrefix = "cache:ycc:alipayFromCallback:id:"
)
type (
alipayFromCallbackModel interface {
Insert(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) (sql.Result, error)
FindOne(ctx context.Context, id string) (*AlipayFromCallback, error)
Update(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*AlipayFromCallback, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AlipayFromCallback, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AlipayFromCallback, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AlipayFromCallback, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AlipayFromCallback, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultAlipayFromCallbackModel struct {
sqlc.CachedConn
table string
}
AlipayFromCallback struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
MsgMethod string `db:"msg_method"` // 消息类型alipay.merchant.tradecomplain.changed, alipay.security.risk.complaints.merchants.notify
AppId string `db:"app_id"` // 应用ID
NotifyId sql.NullString `db:"notify_id"` // 通知ID支付宝返回的
BizContent string `db:"biz_content"` // 业务内容JSON字符串存储完整的biz_content
Status string `db:"status"` // 处理状态pending=待处理processed=已处理failed=处理失败
ErrorMessage sql.NullString `db:"error_message"` // 错误信息(如果处理失败)
}
)
func newAlipayFromCallbackModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAlipayFromCallbackModel {
return &defaultAlipayFromCallbackModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`alipay_from_callback`",
}
}
func (m *defaultAlipayFromCallbackModel) Insert(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccAlipayFromCallbackIdKey := fmt.Sprintf("%s%v", cacheYccAlipayFromCallbackIdPrefix, data.Id)
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, alipayFromCallbackRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.MsgMethod, data.AppId, data.NotifyId, data.BizContent, data.Status, data.ErrorMessage)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.MsgMethod, data.AppId, data.NotifyId, data.BizContent, data.Status, data.ErrorMessage)
}, yccAlipayFromCallbackIdKey)
}
func (m *defaultAlipayFromCallbackModel) insertUUID(data *AlipayFromCallback) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultAlipayFromCallbackModel) FindOne(ctx context.Context, id string) (*AlipayFromCallback, error) {
yccAlipayFromCallbackIdKey := fmt.Sprintf("%s%v", cacheYccAlipayFromCallbackIdPrefix, id)
var resp AlipayFromCallback
err := m.QueryRowCtx(ctx, &resp, yccAlipayFromCallbackIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", alipayFromCallbackRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultAlipayFromCallbackModel) Update(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) (sql.Result, error) {
yccAlipayFromCallbackIdKey := fmt.Sprintf("%s%v", cacheYccAlipayFromCallbackIdPrefix, data.Id)
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, alipayFromCallbackRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.MsgMethod, data.AppId, data.NotifyId, data.BizContent, data.Status, data.ErrorMessage, data.Id)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.MsgMethod, data.AppId, data.NotifyId, data.BizContent, data.Status, data.ErrorMessage, data.Id)
}, yccAlipayFromCallbackIdKey)
}
func (m *defaultAlipayFromCallbackModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) error {
oldVersion := data.Version
data.Version += 1
var sqlResult sql.Result
var err error
yccAlipayFromCallbackIdKey := fmt.Sprintf("%s%v", cacheYccAlipayFromCallbackIdPrefix, data.Id)
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, alipayFromCallbackRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.MsgMethod, data.AppId, data.NotifyId, data.BizContent, data.Status, data.ErrorMessage, data.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.MsgMethod, data.AppId, data.NotifyId, data.BizContent, data.Status, data.ErrorMessage, data.Id, oldVersion)
}, yccAlipayFromCallbackIdKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultAlipayFromCallbackModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *AlipayFromCallback) error {
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 "), "AlipayFromCallbackModel delete err : %+v", err)
}
return nil
}
func (m *defaultAlipayFromCallbackModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultAlipayFromCallbackModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultAlipayFromCallbackModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*AlipayFromCallback, error) {
builder = builder.Columns(alipayFromCallbackRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*AlipayFromCallback
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultAlipayFromCallbackModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AlipayFromCallback, error) {
builder = builder.Columns(alipayFromCallbackRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*AlipayFromCallback
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultAlipayFromCallbackModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AlipayFromCallback, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(alipayFromCallbackRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*AlipayFromCallback
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultAlipayFromCallbackModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AlipayFromCallback, error) {
builder = builder.Columns(alipayFromCallbackRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*AlipayFromCallback
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultAlipayFromCallbackModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AlipayFromCallback, error) {
builder = builder.Columns(alipayFromCallbackRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*AlipayFromCallback
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultAlipayFromCallbackModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultAlipayFromCallbackModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultAlipayFromCallbackModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
yccAlipayFromCallbackIdKey := fmt.Sprintf("%s%v", cacheYccAlipayFromCallbackIdPrefix, id)
_, 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)
}, yccAlipayFromCallbackIdKey)
return err
}
func (m *defaultAlipayFromCallbackModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccAlipayFromCallbackIdPrefix, primary)
}
func (m *defaultAlipayFromCallbackModel) 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", alipayFromCallbackRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultAlipayFromCallbackModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ ComplaintAlipayModel = (*customComplaintAlipayModel)(nil)
type (
// ComplaintAlipayModel is an interface to be customized, add more methods here,
// and implement the added methods in customComplaintAlipayModel.
ComplaintAlipayModel interface {
complaintAlipayModel
}
customComplaintAlipayModel struct {
*defaultComplaintAlipayModel
}
)
// NewComplaintAlipayModel returns a model for the database table.
func NewComplaintAlipayModel(conn sqlx.SqlConn, c cache.CacheConf) ComplaintAlipayModel {
return &customComplaintAlipayModel{
defaultComplaintAlipayModel: newComplaintAlipayModel(conn, c),
}
}

View File

@@ -0,0 +1,470 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
complaintAlipayFieldNames = builder.RawFieldNames(&ComplaintAlipay{})
complaintAlipayRows = strings.Join(complaintAlipayFieldNames, ",")
complaintAlipayRowsExpectAutoSet = strings.Join(stringx.Remove(complaintAlipayFieldNames, "`create_time`", "`update_time`"), ",")
complaintAlipayRowsWithPlaceHolder = strings.Join(stringx.Remove(complaintAlipayFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccComplaintAlipayIdPrefix = "cache:ycc:complaintAlipay:id:"
cacheYccComplaintAlipayAlipayIdPrefix = "cache:ycc:complaintAlipay:alipayId:"
cacheYccComplaintAlipayTaskIdPrefix = "cache:ycc:complaintAlipay:taskId:"
)
type (
complaintAlipayModel interface {
Insert(ctx context.Context, session sqlx.Session, data *ComplaintAlipay) (sql.Result, error)
FindOne(ctx context.Context, id string) (*ComplaintAlipay, error)
FindOneByAlipayId(ctx context.Context, alipayId int64) (*ComplaintAlipay, error)
FindOneByTaskId(ctx context.Context, taskId string) (*ComplaintAlipay, error)
Update(ctx context.Context, session sqlx.Session, data *ComplaintAlipay) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ComplaintAlipay) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintAlipay) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*ComplaintAlipay, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipay, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipay, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintAlipay, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintAlipay, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultComplaintAlipayModel struct {
sqlc.CachedConn
table string
}
ComplaintAlipay struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
ComplaintId string `db:"complaint_id"` // 关联投诉主表ID关联complaint_main.id
AlipayId int64 `db:"alipay_id"` // 支付宝投诉主表的主键id支付宝返回的id
TaskId string `db:"task_id"` // 投诉单号id支付宝返回的task_id用于唯一标识
OppositePid sql.NullString `db:"opposite_pid"` // 被投诉人pid
OppositeName sql.NullString `db:"opposite_name"` // 投诉单中被投诉方的名称
ComplainAmount sql.NullFloat64 `db:"complain_amount"` // 投诉单涉及交易总金额(单位:人民币元)
GmtComplain sql.NullTime `db:"gmt_complain"` // 投诉时间
GmtProcess sql.NullTime `db:"gmt_process"` // 处理时间
GmtOverdue sql.NullTime `db:"gmt_overdue"` // 过期时间
ComplainContent sql.NullString `db:"complain_content"` // 用户投诉内容
TradeNo sql.NullString `db:"trade_no"` // 投诉交易单号
Status sql.NullString `db:"status"` // 投诉状态(支付宝返回的状态)
StatusDescription sql.NullString `db:"status_description"` // 投诉单状态枚举值描述
ProcessCode sql.NullString `db:"process_code"` // 商家处理结果码
ProcessMessage sql.NullString `db:"process_message"` // 商家处理结果码对应描述
ProcessRemark sql.NullString `db:"process_remark"` // 商家处理备注
ProcessImgUrlList sql.NullString `db:"process_img_url_list"` // 商家处理备注图片url列表JSON数组字符串
GmtRiskFinishTime sql.NullTime `db:"gmt_risk_finish_time"` // 推送时间
ComplainUrl sql.NullString `db:"complain_url"` // 投诉网址
CertifyInfo sql.NullString `db:"certify_info"` // 投诉凭证图片信息JSON数组字符串
}
)
func newComplaintAlipayModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultComplaintAlipayModel {
return &defaultComplaintAlipayModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`complaint_alipay`",
}
}
func (m *defaultComplaintAlipayModel) Insert(ctx context.Context, session sqlx.Session, data *ComplaintAlipay) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccComplaintAlipayAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayAlipayIdPrefix, data.AlipayId)
yccComplaintAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayIdPrefix, data.Id)
yccComplaintAlipayTaskIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTaskIdPrefix, data.TaskId)
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, complaintAlipayRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayId, data.TaskId, data.OppositePid, data.OppositeName, data.ComplainAmount, data.GmtComplain, data.GmtProcess, data.GmtOverdue, data.ComplainContent, data.TradeNo, data.Status, data.StatusDescription, data.ProcessCode, data.ProcessMessage, data.ProcessRemark, data.ProcessImgUrlList, data.GmtRiskFinishTime, data.ComplainUrl, data.CertifyInfo)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayId, data.TaskId, data.OppositePid, data.OppositeName, data.ComplainAmount, data.GmtComplain, data.GmtProcess, data.GmtOverdue, data.ComplainContent, data.TradeNo, data.Status, data.StatusDescription, data.ProcessCode, data.ProcessMessage, data.ProcessRemark, data.ProcessImgUrlList, data.GmtRiskFinishTime, data.ComplainUrl, data.CertifyInfo)
}, yccComplaintAlipayAlipayIdKey, yccComplaintAlipayIdKey, yccComplaintAlipayTaskIdKey)
}
func (m *defaultComplaintAlipayModel) insertUUID(data *ComplaintAlipay) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultComplaintAlipayModel) FindOne(ctx context.Context, id string) (*ComplaintAlipay, error) {
yccComplaintAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayIdPrefix, id)
var resp ComplaintAlipay
err := m.QueryRowCtx(ctx, &resp, yccComplaintAlipayIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", complaintAlipayRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultComplaintAlipayModel) FindOneByAlipayId(ctx context.Context, alipayId int64) (*ComplaintAlipay, error) {
yccComplaintAlipayAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayAlipayIdPrefix, alipayId)
var resp ComplaintAlipay
err := m.QueryRowIndexCtx(ctx, &resp, yccComplaintAlipayAlipayIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `alipay_id` = ? and del_state = ? limit 1", complaintAlipayRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, alipayId, 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 *defaultComplaintAlipayModel) FindOneByTaskId(ctx context.Context, taskId string) (*ComplaintAlipay, error) {
yccComplaintAlipayTaskIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTaskIdPrefix, taskId)
var resp ComplaintAlipay
err := m.QueryRowIndexCtx(ctx, &resp, yccComplaintAlipayTaskIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `task_id` = ? and del_state = ? limit 1", complaintAlipayRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, taskId, 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 *defaultComplaintAlipayModel) Update(ctx context.Context, session sqlx.Session, newData *ComplaintAlipay) (sql.Result, error) {
data, err := m.FindOne(ctx, newData.Id)
if err != nil {
return nil, err
}
yccComplaintAlipayAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayAlipayIdPrefix, data.AlipayId)
yccComplaintAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayIdPrefix, data.Id)
yccComplaintAlipayTaskIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTaskIdPrefix, data.TaskId)
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, complaintAlipayRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ComplaintId, newData.AlipayId, newData.TaskId, newData.OppositePid, newData.OppositeName, newData.ComplainAmount, newData.GmtComplain, newData.GmtProcess, newData.GmtOverdue, newData.ComplainContent, newData.TradeNo, newData.Status, newData.StatusDescription, newData.ProcessCode, newData.ProcessMessage, newData.ProcessRemark, newData.ProcessImgUrlList, newData.GmtRiskFinishTime, newData.ComplainUrl, newData.CertifyInfo, newData.Id)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ComplaintId, newData.AlipayId, newData.TaskId, newData.OppositePid, newData.OppositeName, newData.ComplainAmount, newData.GmtComplain, newData.GmtProcess, newData.GmtOverdue, newData.ComplainContent, newData.TradeNo, newData.Status, newData.StatusDescription, newData.ProcessCode, newData.ProcessMessage, newData.ProcessRemark, newData.ProcessImgUrlList, newData.GmtRiskFinishTime, newData.ComplainUrl, newData.CertifyInfo, newData.Id)
}, yccComplaintAlipayAlipayIdKey, yccComplaintAlipayIdKey, yccComplaintAlipayTaskIdKey)
}
func (m *defaultComplaintAlipayModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *ComplaintAlipay) error {
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
}
yccComplaintAlipayAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayAlipayIdPrefix, data.AlipayId)
yccComplaintAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayIdPrefix, data.Id)
yccComplaintAlipayTaskIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTaskIdPrefix, data.TaskId)
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, complaintAlipayRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ComplaintId, newData.AlipayId, newData.TaskId, newData.OppositePid, newData.OppositeName, newData.ComplainAmount, newData.GmtComplain, newData.GmtProcess, newData.GmtOverdue, newData.ComplainContent, newData.TradeNo, newData.Status, newData.StatusDescription, newData.ProcessCode, newData.ProcessMessage, newData.ProcessRemark, newData.ProcessImgUrlList, newData.GmtRiskFinishTime, newData.ComplainUrl, newData.CertifyInfo, newData.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ComplaintId, newData.AlipayId, newData.TaskId, newData.OppositePid, newData.OppositeName, newData.ComplainAmount, newData.GmtComplain, newData.GmtProcess, newData.GmtOverdue, newData.ComplainContent, newData.TradeNo, newData.Status, newData.StatusDescription, newData.ProcessCode, newData.ProcessMessage, newData.ProcessRemark, newData.ProcessImgUrlList, newData.GmtRiskFinishTime, newData.ComplainUrl, newData.CertifyInfo, newData.Id, oldVersion)
}, yccComplaintAlipayAlipayIdKey, yccComplaintAlipayIdKey, yccComplaintAlipayTaskIdKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultComplaintAlipayModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintAlipay) error {
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 "), "ComplaintAlipayModel delete err : %+v", err)
}
return nil
}
func (m *defaultComplaintAlipayModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintAlipayModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintAlipayModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*ComplaintAlipay, error) {
builder = builder.Columns(complaintAlipayRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipay
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipay, error) {
builder = builder.Columns(complaintAlipayRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipay
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipay, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(complaintAlipayRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*ComplaintAlipay
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultComplaintAlipayModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintAlipay, error) {
builder = builder.Columns(complaintAlipayRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipay
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintAlipay, error) {
builder = builder.Columns(complaintAlipayRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipay
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultComplaintAlipayModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultComplaintAlipayModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
data, err := m.FindOne(ctx, id)
if err != nil {
return err
}
yccComplaintAlipayAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayAlipayIdPrefix, data.AlipayId)
yccComplaintAlipayIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayIdPrefix, id)
yccComplaintAlipayTaskIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTaskIdPrefix, data.TaskId)
_, 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)
}, yccComplaintAlipayAlipayIdKey, yccComplaintAlipayIdKey, yccComplaintAlipayTaskIdKey)
return err
}
func (m *defaultComplaintAlipayModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccComplaintAlipayIdPrefix, primary)
}
func (m *defaultComplaintAlipayModel) 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", complaintAlipayRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultComplaintAlipayModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ ComplaintAlipayTradeModel = (*customComplaintAlipayTradeModel)(nil)
type (
// ComplaintAlipayTradeModel is an interface to be customized, add more methods here,
// and implement the added methods in customComplaintAlipayTradeModel.
ComplaintAlipayTradeModel interface {
complaintAlipayTradeModel
}
customComplaintAlipayTradeModel struct {
*defaultComplaintAlipayTradeModel
}
)
// NewComplaintAlipayTradeModel returns a model for the database table.
func NewComplaintAlipayTradeModel(conn sqlx.SqlConn, c cache.CacheConf) ComplaintAlipayTradeModel {
return &customComplaintAlipayTradeModel{
defaultComplaintAlipayTradeModel: newComplaintAlipayTradeModel(conn, c),
}
}

View File

@@ -0,0 +1,395 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
complaintAlipayTradeFieldNames = builder.RawFieldNames(&ComplaintAlipayTrade{})
complaintAlipayTradeRows = strings.Join(complaintAlipayTradeFieldNames, ",")
complaintAlipayTradeRowsExpectAutoSet = strings.Join(stringx.Remove(complaintAlipayTradeFieldNames, "`create_time`", "`update_time`"), ",")
complaintAlipayTradeRowsWithPlaceHolder = strings.Join(stringx.Remove(complaintAlipayTradeFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccComplaintAlipayTradeIdPrefix = "cache:ycc:complaintAlipayTrade:id:"
)
type (
complaintAlipayTradeModel interface {
Insert(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) (sql.Result, error)
FindOne(ctx context.Context, id string) (*ComplaintAlipayTrade, error)
Update(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*ComplaintAlipayTrade, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipayTrade, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipayTrade, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintAlipayTrade, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintAlipayTrade, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultComplaintAlipayTradeModel struct {
sqlc.CachedConn
table string
}
ComplaintAlipayTrade struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
ComplaintId string `db:"complaint_id"` // 投诉主表ID关联complaint_alipay.id
AlipayTradeId sql.NullInt64 `db:"alipay_trade_id"` // 交易信息表主键id支付宝返回的id
AlipayComplaintRecordId sql.NullInt64 `db:"alipay_complaint_record_id"` // 投诉主表id支付宝返回的complaint_record_id
TradeNo sql.NullString `db:"trade_no"` // 支付宝交易单号
OutNo sql.NullString `db:"out_no"` // 商家订单号
GmtTrade sql.NullTime `db:"gmt_trade"` // 交易时间
GmtRefund sql.NullTime `db:"gmt_refund"` // 退款时间
Status sql.NullString `db:"status"` // 交易投诉状态
StatusDescription sql.NullString `db:"status_description"` // 交易投诉状态描述
Amount sql.NullFloat64 `db:"amount"` // 交易单金额(单位:人民币元)
}
)
func newComplaintAlipayTradeModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultComplaintAlipayTradeModel {
return &defaultComplaintAlipayTradeModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`complaint_alipay_trade`",
}
}
func (m *defaultComplaintAlipayTradeModel) Insert(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccComplaintAlipayTradeIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTradeIdPrefix, data.Id)
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, complaintAlipayTradeRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayTradeId, data.AlipayComplaintRecordId, data.TradeNo, data.OutNo, data.GmtTrade, data.GmtRefund, data.Status, data.StatusDescription, data.Amount)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayTradeId, data.AlipayComplaintRecordId, data.TradeNo, data.OutNo, data.GmtTrade, data.GmtRefund, data.Status, data.StatusDescription, data.Amount)
}, yccComplaintAlipayTradeIdKey)
}
func (m *defaultComplaintAlipayTradeModel) insertUUID(data *ComplaintAlipayTrade) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultComplaintAlipayTradeModel) FindOne(ctx context.Context, id string) (*ComplaintAlipayTrade, error) {
yccComplaintAlipayTradeIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTradeIdPrefix, id)
var resp ComplaintAlipayTrade
err := m.QueryRowCtx(ctx, &resp, yccComplaintAlipayTradeIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", complaintAlipayTradeRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultComplaintAlipayTradeModel) Update(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) (sql.Result, error) {
yccComplaintAlipayTradeIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTradeIdPrefix, data.Id)
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, complaintAlipayTradeRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayTradeId, data.AlipayComplaintRecordId, data.TradeNo, data.OutNo, data.GmtTrade, data.GmtRefund, data.Status, data.StatusDescription, data.Amount, data.Id)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayTradeId, data.AlipayComplaintRecordId, data.TradeNo, data.OutNo, data.GmtTrade, data.GmtRefund, data.Status, data.StatusDescription, data.Amount, data.Id)
}, yccComplaintAlipayTradeIdKey)
}
func (m *defaultComplaintAlipayTradeModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) error {
oldVersion := data.Version
data.Version += 1
var sqlResult sql.Result
var err error
yccComplaintAlipayTradeIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTradeIdPrefix, data.Id)
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, complaintAlipayTradeRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayTradeId, data.AlipayComplaintRecordId, data.TradeNo, data.OutNo, data.GmtTrade, data.GmtRefund, data.Status, data.StatusDescription, data.Amount, data.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.AlipayTradeId, data.AlipayComplaintRecordId, data.TradeNo, data.OutNo, data.GmtTrade, data.GmtRefund, data.Status, data.StatusDescription, data.Amount, data.Id, oldVersion)
}, yccComplaintAlipayTradeIdKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultComplaintAlipayTradeModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintAlipayTrade) error {
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 "), "ComplaintAlipayTradeModel delete err : %+v", err)
}
return nil
}
func (m *defaultComplaintAlipayTradeModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintAlipayTradeModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintAlipayTradeModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*ComplaintAlipayTrade, error) {
builder = builder.Columns(complaintAlipayTradeRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipayTrade
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayTradeModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipayTrade, error) {
builder = builder.Columns(complaintAlipayTradeRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipayTrade
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayTradeModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintAlipayTrade, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(complaintAlipayTradeRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*ComplaintAlipayTrade
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultComplaintAlipayTradeModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintAlipayTrade, error) {
builder = builder.Columns(complaintAlipayTradeRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipayTrade
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayTradeModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintAlipayTrade, error) {
builder = builder.Columns(complaintAlipayTradeRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintAlipayTrade
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintAlipayTradeModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultComplaintAlipayTradeModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultComplaintAlipayTradeModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
yccComplaintAlipayTradeIdKey := fmt.Sprintf("%s%v", cacheYccComplaintAlipayTradeIdPrefix, id)
_, 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)
}, yccComplaintAlipayTradeIdKey)
return err
}
func (m *defaultComplaintAlipayTradeModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccComplaintAlipayTradeIdPrefix, primary)
}
func (m *defaultComplaintAlipayTradeModel) 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", complaintAlipayTradeRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultComplaintAlipayTradeModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ ComplaintMainModel = (*customComplaintMainModel)(nil)
type (
// ComplaintMainModel is an interface to be customized, add more methods here,
// and implement the added methods in customComplaintMainModel.
ComplaintMainModel interface {
complaintMainModel
}
customComplaintMainModel struct {
*defaultComplaintMainModel
}
)
// NewComplaintMainModel returns a model for the database table.
func NewComplaintMainModel(conn sqlx.SqlConn, c cache.CacheConf) ComplaintMainModel {
return &customComplaintMainModel{
defaultComplaintMainModel: newComplaintMainModel(conn, c),
}
}

View File

@@ -0,0 +1,395 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
complaintMainFieldNames = builder.RawFieldNames(&ComplaintMain{})
complaintMainRows = strings.Join(complaintMainFieldNames, ",")
complaintMainRowsExpectAutoSet = strings.Join(stringx.Remove(complaintMainFieldNames, "`create_time`", "`update_time`"), ",")
complaintMainRowsWithPlaceHolder = strings.Join(stringx.Remove(complaintMainFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccComplaintMainIdPrefix = "cache:ycc:complaintMain:id:"
)
type (
complaintMainModel interface {
Insert(ctx context.Context, session sqlx.Session, data *ComplaintMain) (sql.Result, error)
FindOne(ctx context.Context, id string) (*ComplaintMain, error)
Update(ctx context.Context, session sqlx.Session, data *ComplaintMain) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ComplaintMain) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintMain) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*ComplaintMain, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintMain, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintMain, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintMain, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintMain, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultComplaintMainModel struct {
sqlc.CachedConn
table string
}
ComplaintMain struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
Type string `db:"type"` // 投诉类型alipay=支付宝投诉manual=主动投诉
OrderId sql.NullString `db:"order_id"` // 关联订单ID如果有相关订单
Name sql.NullString `db:"name"` // 投诉人姓名
Contact sql.NullString `db:"contact"` // 联系方式(手机号、邮箱等)
Content sql.NullString `db:"content"` // 投诉内容
Status sql.NullString `db:"status"` // 投诉状态通用状态pending=待处理processing=处理中resolved=已解决closed=已关闭)
StatusDescription sql.NullString `db:"status_description"` // 状态描述
Remark sql.NullString `db:"remark"` // 处理备注
HandlerId sql.NullString `db:"handler_id"` // 处理人ID关联管理员或其他处理人员
HandleTime sql.NullTime `db:"handle_time"` // 处理时间
}
)
func newComplaintMainModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultComplaintMainModel {
return &defaultComplaintMainModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`complaint_main`",
}
}
func (m *defaultComplaintMainModel) Insert(ctx context.Context, session sqlx.Session, data *ComplaintMain) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccComplaintMainIdKey := fmt.Sprintf("%s%v", cacheYccComplaintMainIdPrefix, data.Id)
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, complaintMainRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Type, data.OrderId, data.Name, data.Contact, data.Content, data.Status, data.StatusDescription, data.Remark, data.HandlerId, data.HandleTime)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Type, data.OrderId, data.Name, data.Contact, data.Content, data.Status, data.StatusDescription, data.Remark, data.HandlerId, data.HandleTime)
}, yccComplaintMainIdKey)
}
func (m *defaultComplaintMainModel) insertUUID(data *ComplaintMain) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultComplaintMainModel) FindOne(ctx context.Context, id string) (*ComplaintMain, error) {
yccComplaintMainIdKey := fmt.Sprintf("%s%v", cacheYccComplaintMainIdPrefix, id)
var resp ComplaintMain
err := m.QueryRowCtx(ctx, &resp, yccComplaintMainIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", complaintMainRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultComplaintMainModel) Update(ctx context.Context, session sqlx.Session, data *ComplaintMain) (sql.Result, error) {
yccComplaintMainIdKey := fmt.Sprintf("%s%v", cacheYccComplaintMainIdPrefix, data.Id)
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, complaintMainRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Type, data.OrderId, data.Name, data.Contact, data.Content, data.Status, data.StatusDescription, data.Remark, data.HandlerId, data.HandleTime, data.Id)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Type, data.OrderId, data.Name, data.Contact, data.Content, data.Status, data.StatusDescription, data.Remark, data.HandlerId, data.HandleTime, data.Id)
}, yccComplaintMainIdKey)
}
func (m *defaultComplaintMainModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ComplaintMain) error {
oldVersion := data.Version
data.Version += 1
var sqlResult sql.Result
var err error
yccComplaintMainIdKey := fmt.Sprintf("%s%v", cacheYccComplaintMainIdPrefix, data.Id)
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, complaintMainRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Type, data.OrderId, data.Name, data.Contact, data.Content, data.Status, data.StatusDescription, data.Remark, data.HandlerId, data.HandleTime, data.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Type, data.OrderId, data.Name, data.Contact, data.Content, data.Status, data.StatusDescription, data.Remark, data.HandlerId, data.HandleTime, data.Id, oldVersion)
}, yccComplaintMainIdKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultComplaintMainModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintMain) error {
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 "), "ComplaintMainModel delete err : %+v", err)
}
return nil
}
func (m *defaultComplaintMainModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintMainModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintMainModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*ComplaintMain, error) {
builder = builder.Columns(complaintMainRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintMain
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintMainModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintMain, error) {
builder = builder.Columns(complaintMainRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintMain
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintMainModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintMain, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(complaintMainRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*ComplaintMain
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultComplaintMainModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintMain, error) {
builder = builder.Columns(complaintMainRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintMain
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintMainModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintMain, error) {
builder = builder.Columns(complaintMainRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintMain
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintMainModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultComplaintMainModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultComplaintMainModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
yccComplaintMainIdKey := fmt.Sprintf("%s%v", cacheYccComplaintMainIdPrefix, id)
_, 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)
}, yccComplaintMainIdKey)
return err
}
func (m *defaultComplaintMainModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccComplaintMainIdPrefix, primary)
}
func (m *defaultComplaintMainModel) 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", complaintMainRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultComplaintMainModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ ComplaintManualModel = (*customComplaintManualModel)(nil)
type (
// ComplaintManualModel is an interface to be customized, add more methods here,
// and implement the added methods in customComplaintManualModel.
ComplaintManualModel interface {
complaintManualModel
}
customComplaintManualModel struct {
*defaultComplaintManualModel
}
)
// NewComplaintManualModel returns a model for the database table.
func NewComplaintManualModel(conn sqlx.SqlConn, c cache.CacheConf) ComplaintManualModel {
return &customComplaintManualModel{
defaultComplaintManualModel: newComplaintManualModel(conn, c),
}
}

View File

@@ -0,0 +1,391 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
complaintManualFieldNames = builder.RawFieldNames(&ComplaintManual{})
complaintManualRows = strings.Join(complaintManualFieldNames, ",")
complaintManualRowsExpectAutoSet = strings.Join(stringx.Remove(complaintManualFieldNames, "`create_time`", "`update_time`"), ",")
complaintManualRowsWithPlaceHolder = strings.Join(stringx.Remove(complaintManualFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccComplaintManualIdPrefix = "cache:ycc:complaintManual:id:"
)
type (
complaintManualModel interface {
Insert(ctx context.Context, session sqlx.Session, data *ComplaintManual) (sql.Result, error)
FindOne(ctx context.Context, id string) (*ComplaintManual, error)
Update(ctx context.Context, session sqlx.Session, data *ComplaintManual) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ComplaintManual) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintManual) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*ComplaintManual, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintManual, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintManual, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintManual, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintManual, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultComplaintManualModel struct {
sqlc.CachedConn
table string
}
ComplaintManual struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
ComplaintId string `db:"complaint_id"` // 关联投诉主表ID关联complaint_main.id
UserId sql.NullString `db:"user_id"` // 关联用户ID如果有相关用户
Subject sql.NullString `db:"subject"` // 投诉主题
Priority sql.NullString `db:"priority"` // 优先级low=低medium=中high=高urgent=紧急
Source sql.NullString `db:"source"` // 投诉来源web=网站phone=电话email=邮件other=其他
AttachmentUrls sql.NullString `db:"attachment_urls"` // 附件URL列表JSON数组字符串
}
)
func newComplaintManualModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultComplaintManualModel {
return &defaultComplaintManualModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`complaint_manual`",
}
}
func (m *defaultComplaintManualModel) Insert(ctx context.Context, session sqlx.Session, data *ComplaintManual) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccComplaintManualIdKey := fmt.Sprintf("%s%v", cacheYccComplaintManualIdPrefix, data.Id)
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, complaintManualRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.UserId, data.Subject, data.Priority, data.Source, data.AttachmentUrls)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.UserId, data.Subject, data.Priority, data.Source, data.AttachmentUrls)
}, yccComplaintManualIdKey)
}
func (m *defaultComplaintManualModel) insertUUID(data *ComplaintManual) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultComplaintManualModel) FindOne(ctx context.Context, id string) (*ComplaintManual, error) {
yccComplaintManualIdKey := fmt.Sprintf("%s%v", cacheYccComplaintManualIdPrefix, id)
var resp ComplaintManual
err := m.QueryRowCtx(ctx, &resp, yccComplaintManualIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", complaintManualRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultComplaintManualModel) Update(ctx context.Context, session sqlx.Session, data *ComplaintManual) (sql.Result, error) {
yccComplaintManualIdKey := fmt.Sprintf("%s%v", cacheYccComplaintManualIdPrefix, data.Id)
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, complaintManualRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.UserId, data.Subject, data.Priority, data.Source, data.AttachmentUrls, data.Id)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.UserId, data.Subject, data.Priority, data.Source, data.AttachmentUrls, data.Id)
}, yccComplaintManualIdKey)
}
func (m *defaultComplaintManualModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ComplaintManual) error {
oldVersion := data.Version
data.Version += 1
var sqlResult sql.Result
var err error
yccComplaintManualIdKey := fmt.Sprintf("%s%v", cacheYccComplaintManualIdPrefix, data.Id)
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, complaintManualRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.UserId, data.Subject, data.Priority, data.Source, data.AttachmentUrls, data.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ComplaintId, data.UserId, data.Subject, data.Priority, data.Source, data.AttachmentUrls, data.Id, oldVersion)
}, yccComplaintManualIdKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultComplaintManualModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *ComplaintManual) error {
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 "), "ComplaintManualModel delete err : %+v", err)
}
return nil
}
func (m *defaultComplaintManualModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintManualModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultComplaintManualModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*ComplaintManual, error) {
builder = builder.Columns(complaintManualRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintManual
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintManualModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintManual, error) {
builder = builder.Columns(complaintManualRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintManual
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintManualModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ComplaintManual, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(complaintManualRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*ComplaintManual
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultComplaintManualModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ComplaintManual, error) {
builder = builder.Columns(complaintManualRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintManual
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintManualModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ComplaintManual, error) {
builder = builder.Columns(complaintManualRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*ComplaintManual
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultComplaintManualModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultComplaintManualModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultComplaintManualModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
yccComplaintManualIdKey := fmt.Sprintf("%s%v", cacheYccComplaintManualIdPrefix, id)
_, 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)
}, yccComplaintManualIdKey)
return err
}
func (m *defaultComplaintManualModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccComplaintManualIdPrefix, primary)
}
func (m *defaultComplaintManualModel) 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", complaintManualRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultComplaintManualModel) tableName() string {
return m.table
}

View File

@@ -58,14 +58,15 @@ type (
}
Feature struct {
Id string `db:"id"`
CreateTime time.Time `db:"create_time"` // 创建时间
UpdateTime time.Time `db:"update_time"` // 更新时间
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
DelState int64 `db:"del_state"` // 删除状态
Version int64 `db:"version"` // 版本号
ApiId string `db:"api_id"` // API标识
Name string `db:"name"` // 描述
Id string `db:"id"`
CreateTime time.Time `db:"create_time"` // 创建时间
UpdateTime time.Time `db:"update_time"` // 更新时间
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
DelState int64 `db:"del_state"` // 删除状态
Version int64 `db:"version"` // 版本号
ApiId string `db:"api_id"` // API标识
Name string `db:"name"` // 描述
WhitelistPrice float64 `db:"whitelist_price"` // 白名单屏蔽价格(单位:元)
}
)
@@ -82,11 +83,11 @@ func (m *defaultFeatureModel) Insert(ctx context.Context, session sqlx.Session,
yccFeatureApiIdKey := fmt.Sprintf("%s%v", cacheYccFeatureApiIdPrefix, data.ApiId)
yccFeatureIdKey := fmt.Sprintf("%s%v", cacheYccFeatureIdPrefix, data.Id)
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, featureRowsExpectAutoSet)
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?)", m.table, featureRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.Name)
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.Name, data.WhitelistPrice)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.Name)
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.Name, data.WhitelistPrice)
}, yccFeatureApiIdKey, yccFeatureIdKey)
}
func (m *defaultFeatureModel) insertUUID(data *Feature) {
@@ -153,9 +154,9 @@ func (m *defaultFeatureModel) Update(ctx context.Context, session sqlx.Session,
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, featureRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.Id)
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.WhitelistPrice, newData.Id)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.Id)
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.WhitelistPrice, newData.Id)
}, yccFeatureApiIdKey, yccFeatureIdKey)
}
@@ -176,9 +177,9 @@ func (m *defaultFeatureModel) UpdateWithVersion(ctx context.Context, session sql
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, featureRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.Id, oldVersion)
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.WhitelistPrice, newData.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.Id, oldVersion)
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.WhitelistPrice, newData.Id, oldVersion)
}, yccFeatureApiIdKey, yccFeatureIdKey)
if err != nil {
return err

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ UserFeatureWhitelistModel = (*customUserFeatureWhitelistModel)(nil)
type (
// UserFeatureWhitelistModel is an interface to be customized, add more methods here,
// and implement the added methods in customUserFeatureWhitelistModel.
UserFeatureWhitelistModel interface {
userFeatureWhitelistModel
}
customUserFeatureWhitelistModel struct {
*defaultUserFeatureWhitelistModel
}
)
// NewUserFeatureWhitelistModel returns a model for the database table.
func NewUserFeatureWhitelistModel(conn sqlx.SqlConn, c cache.CacheConf) UserFeatureWhitelistModel {
return &customUserFeatureWhitelistModel{
defaultUserFeatureWhitelistModel: newUserFeatureWhitelistModel(conn, c),
}
}

View File

@@ -0,0 +1,484 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
userFeatureWhitelistFieldNames = builder.RawFieldNames(&UserFeatureWhitelist{})
userFeatureWhitelistRows = strings.Join(userFeatureWhitelistFieldNames, ",")
userFeatureWhitelistRowsExpectAutoSet = strings.Join(stringx.Remove(userFeatureWhitelistFieldNames, "`create_time`", "`update_time`"), ",")
userFeatureWhitelistRowsWithPlaceHolder = strings.Join(stringx.Remove(userFeatureWhitelistFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccUserFeatureWhitelistIdPrefix = "cache:ycc:userFeatureWhitelist:id:"
cacheYccUserFeatureWhitelistIdCardFeatureApiIdDelStatePrefix = "cache:ycc:userFeatureWhitelist:idCard:featureApiId:delState:"
cacheYccUserFeatureWhitelistIdCardFeatureIdDelStatePrefix = "cache:ycc:userFeatureWhitelist:idCard:featureId:delState:"
cacheYccUserFeatureWhitelistWhitelistOrderIdPrefix = "cache:ycc:userFeatureWhitelist:whitelistOrderId:"
)
type (
userFeatureWhitelistModel interface {
Insert(ctx context.Context, session sqlx.Session, data *UserFeatureWhitelist) (sql.Result, error)
FindOne(ctx context.Context, id string) (*UserFeatureWhitelist, error)
FindOneByIdCardFeatureApiIdDelState(ctx context.Context, idCard string, featureApiId string, delState int64) (*UserFeatureWhitelist, error)
FindOneByIdCardFeatureIdDelState(ctx context.Context, idCard string, featureId string, delState int64) (*UserFeatureWhitelist, error)
FindOneByWhitelistOrderId(ctx context.Context, whitelistOrderId sql.NullString) (*UserFeatureWhitelist, error)
Update(ctx context.Context, session sqlx.Session, data *UserFeatureWhitelist) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *UserFeatureWhitelist) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *UserFeatureWhitelist) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*UserFeatureWhitelist, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*UserFeatureWhitelist, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*UserFeatureWhitelist, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*UserFeatureWhitelist, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*UserFeatureWhitelist, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultUserFeatureWhitelistModel struct {
sqlc.CachedConn
table string
}
UserFeatureWhitelist struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
IdCard string `db:"id_card"` // 身份证号(查询对象标识)
FeatureId string `db:"feature_id"` // Feature的UUID
FeatureApiId string `db:"feature_api_id"` // Feature的API标识冗余字段方便查询
UserId string `db:"user_id"` // 操作用户ID代理的user_id以后可扩展为普通用户
OrderId sql.NullString `db:"order_id"` // 关联的查询订单ID可选记录来源
WhitelistOrderId sql.NullString `db:"whitelist_order_id"` // 关联的白名单订单ID用于付费
Amount float64 `db:"amount"` // 费用(单位:元)
Status int64 `db:"status"` // 状态1=生效2=已失效
}
)
func newUserFeatureWhitelistModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultUserFeatureWhitelistModel {
return &defaultUserFeatureWhitelistModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`user_feature_whitelist`",
}
}
func (m *defaultUserFeatureWhitelistModel) Insert(ctx context.Context, session sqlx.Session, data *UserFeatureWhitelist) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureApiIdDelStatePrefix, data.IdCard, data.FeatureApiId, data.DelState)
yccUserFeatureWhitelistIdCardFeatureIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureIdDelStatePrefix, data.IdCard, data.FeatureId, data.DelState)
yccUserFeatureWhitelistIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistIdPrefix, data.Id)
yccUserFeatureWhitelistWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistWhitelistOrderIdPrefix, data.WhitelistOrderId)
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, userFeatureWhitelistRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.IdCard, data.FeatureId, data.FeatureApiId, data.UserId, data.OrderId, data.WhitelistOrderId, data.Amount, data.Status)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.IdCard, data.FeatureId, data.FeatureApiId, data.UserId, data.OrderId, data.WhitelistOrderId, data.Amount, data.Status)
}, yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey, yccUserFeatureWhitelistIdCardFeatureIdDelStateKey, yccUserFeatureWhitelistIdKey, yccUserFeatureWhitelistWhitelistOrderIdKey)
}
func (m *defaultUserFeatureWhitelistModel) insertUUID(data *UserFeatureWhitelist) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultUserFeatureWhitelistModel) FindOne(ctx context.Context, id string) (*UserFeatureWhitelist, error) {
yccUserFeatureWhitelistIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistIdPrefix, id)
var resp UserFeatureWhitelist
err := m.QueryRowCtx(ctx, &resp, yccUserFeatureWhitelistIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", userFeatureWhitelistRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultUserFeatureWhitelistModel) FindOneByIdCardFeatureApiIdDelState(ctx context.Context, idCard string, featureApiId string, delState int64) (*UserFeatureWhitelist, error) {
yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureApiIdDelStatePrefix, idCard, featureApiId, delState)
var resp UserFeatureWhitelist
err := m.QueryRowIndexCtx(ctx, &resp, yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `id_card` = ? and `feature_api_id` = ? and `del_state` = ? and del_state = ? limit 1", userFeatureWhitelistRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, idCard, featureApiId, delState, 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 *defaultUserFeatureWhitelistModel) FindOneByIdCardFeatureIdDelState(ctx context.Context, idCard string, featureId string, delState int64) (*UserFeatureWhitelist, error) {
yccUserFeatureWhitelistIdCardFeatureIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureIdDelStatePrefix, idCard, featureId, delState)
var resp UserFeatureWhitelist
err := m.QueryRowIndexCtx(ctx, &resp, yccUserFeatureWhitelistIdCardFeatureIdDelStateKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `id_card` = ? and `feature_id` = ? and `del_state` = ? and del_state = ? limit 1", userFeatureWhitelistRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, idCard, featureId, delState, 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 *defaultUserFeatureWhitelistModel) FindOneByWhitelistOrderId(ctx context.Context, whitelistOrderId sql.NullString) (*UserFeatureWhitelist, error) {
yccUserFeatureWhitelistWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistWhitelistOrderIdPrefix, whitelistOrderId)
var resp UserFeatureWhitelist
err := m.QueryRowIndexCtx(ctx, &resp, yccUserFeatureWhitelistWhitelistOrderIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `whitelist_order_id` = ? and del_state = ? limit 1", userFeatureWhitelistRows, m.table)
if err := conn.QueryRowCtx(ctx, &resp, query, whitelistOrderId, 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 *defaultUserFeatureWhitelistModel) Update(ctx context.Context, session sqlx.Session, newData *UserFeatureWhitelist) (sql.Result, error) {
data, err := m.FindOne(ctx, newData.Id)
if err != nil {
return nil, err
}
yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureApiIdDelStatePrefix, data.IdCard, data.FeatureApiId, data.DelState)
yccUserFeatureWhitelistIdCardFeatureIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureIdDelStatePrefix, data.IdCard, data.FeatureId, data.DelState)
yccUserFeatureWhitelistIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistIdPrefix, data.Id)
yccUserFeatureWhitelistWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistWhitelistOrderIdPrefix, data.WhitelistOrderId)
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, userFeatureWhitelistRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.IdCard, newData.FeatureId, newData.FeatureApiId, newData.UserId, newData.OrderId, newData.WhitelistOrderId, newData.Amount, newData.Status, newData.Id)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.IdCard, newData.FeatureId, newData.FeatureApiId, newData.UserId, newData.OrderId, newData.WhitelistOrderId, newData.Amount, newData.Status, newData.Id)
}, yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey, yccUserFeatureWhitelistIdCardFeatureIdDelStateKey, yccUserFeatureWhitelistIdKey, yccUserFeatureWhitelistWhitelistOrderIdKey)
}
func (m *defaultUserFeatureWhitelistModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *UserFeatureWhitelist) error {
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
}
yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureApiIdDelStatePrefix, data.IdCard, data.FeatureApiId, data.DelState)
yccUserFeatureWhitelistIdCardFeatureIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureIdDelStatePrefix, data.IdCard, data.FeatureId, data.DelState)
yccUserFeatureWhitelistIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistIdPrefix, data.Id)
yccUserFeatureWhitelistWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistWhitelistOrderIdPrefix, data.WhitelistOrderId)
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, userFeatureWhitelistRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.IdCard, newData.FeatureId, newData.FeatureApiId, newData.UserId, newData.OrderId, newData.WhitelistOrderId, newData.Amount, newData.Status, newData.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.IdCard, newData.FeatureId, newData.FeatureApiId, newData.UserId, newData.OrderId, newData.WhitelistOrderId, newData.Amount, newData.Status, newData.Id, oldVersion)
}, yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey, yccUserFeatureWhitelistIdCardFeatureIdDelStateKey, yccUserFeatureWhitelistIdKey, yccUserFeatureWhitelistWhitelistOrderIdKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultUserFeatureWhitelistModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *UserFeatureWhitelist) error {
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 "), "UserFeatureWhitelistModel delete err : %+v", err)
}
return nil
}
func (m *defaultUserFeatureWhitelistModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultUserFeatureWhitelistModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultUserFeatureWhitelistModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*UserFeatureWhitelist, error) {
builder = builder.Columns(userFeatureWhitelistRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*UserFeatureWhitelist
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultUserFeatureWhitelistModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*UserFeatureWhitelist, error) {
builder = builder.Columns(userFeatureWhitelistRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*UserFeatureWhitelist
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultUserFeatureWhitelistModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*UserFeatureWhitelist, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(userFeatureWhitelistRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*UserFeatureWhitelist
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultUserFeatureWhitelistModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*UserFeatureWhitelist, error) {
builder = builder.Columns(userFeatureWhitelistRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*UserFeatureWhitelist
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultUserFeatureWhitelistModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*UserFeatureWhitelist, error) {
builder = builder.Columns(userFeatureWhitelistRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*UserFeatureWhitelist
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultUserFeatureWhitelistModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultUserFeatureWhitelistModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultUserFeatureWhitelistModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
data, err := m.FindOne(ctx, id)
if err != nil {
return err
}
yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureApiIdDelStatePrefix, data.IdCard, data.FeatureApiId, data.DelState)
yccUserFeatureWhitelistIdCardFeatureIdDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccUserFeatureWhitelistIdCardFeatureIdDelStatePrefix, data.IdCard, data.FeatureId, data.DelState)
yccUserFeatureWhitelistIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistIdPrefix, id)
yccUserFeatureWhitelistWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistWhitelistOrderIdPrefix, data.WhitelistOrderId)
_, 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)
}, yccUserFeatureWhitelistIdCardFeatureApiIdDelStateKey, yccUserFeatureWhitelistIdCardFeatureIdDelStateKey, yccUserFeatureWhitelistIdKey, yccUserFeatureWhitelistWhitelistOrderIdKey)
return err
}
func (m *defaultUserFeatureWhitelistModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccUserFeatureWhitelistIdPrefix, primary)
}
func (m *defaultUserFeatureWhitelistModel) 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", userFeatureWhitelistRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultUserFeatureWhitelistModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ WhitelistOrderItemModel = (*customWhitelistOrderItemModel)(nil)
type (
// WhitelistOrderItemModel is an interface to be customized, add more methods here,
// and implement the added methods in customWhitelistOrderItemModel.
WhitelistOrderItemModel interface {
whitelistOrderItemModel
}
customWhitelistOrderItemModel struct {
*defaultWhitelistOrderItemModel
}
)
// NewWhitelistOrderItemModel returns a model for the database table.
func NewWhitelistOrderItemModel(conn sqlx.SqlConn, c cache.CacheConf) WhitelistOrderItemModel {
return &customWhitelistOrderItemModel{
defaultWhitelistOrderItemModel: newWhitelistOrderItemModel(conn, c),
}
}

View File

@@ -0,0 +1,390 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
whitelistOrderItemFieldNames = builder.RawFieldNames(&WhitelistOrderItem{})
whitelistOrderItemRows = strings.Join(whitelistOrderItemFieldNames, ",")
whitelistOrderItemRowsExpectAutoSet = strings.Join(stringx.Remove(whitelistOrderItemFieldNames, "`create_time`", "`update_time`"), ",")
whitelistOrderItemRowsWithPlaceHolder = strings.Join(stringx.Remove(whitelistOrderItemFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccWhitelistOrderItemIdPrefix = "cache:ycc:whitelistOrderItem:id:"
)
type (
whitelistOrderItemModel interface {
Insert(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) (sql.Result, error)
FindOne(ctx context.Context, id string) (*WhitelistOrderItem, error)
Update(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*WhitelistOrderItem, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrderItem, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrderItem, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*WhitelistOrderItem, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*WhitelistOrderItem, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultWhitelistOrderItemModel struct {
sqlc.CachedConn
table string
}
WhitelistOrderItem struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
OrderId string `db:"order_id"` // 订单ID关联whitelist_order.id
FeatureId string `db:"feature_id"` // Feature的UUID
FeatureApiId string `db:"feature_api_id"` // Feature的API标识冗余
FeatureName string `db:"feature_name"` // Feature的名称冗余
Price float64 `db:"price"` // 单价(单位:元)
}
)
func newWhitelistOrderItemModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultWhitelistOrderItemModel {
return &defaultWhitelistOrderItemModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`whitelist_order_item`",
}
}
func (m *defaultWhitelistOrderItemModel) Insert(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccWhitelistOrderItemIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderItemIdPrefix, data.Id)
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, whitelistOrderItemRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.OrderId, data.FeatureId, data.FeatureApiId, data.FeatureName, data.Price)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.OrderId, data.FeatureId, data.FeatureApiId, data.FeatureName, data.Price)
}, yccWhitelistOrderItemIdKey)
}
func (m *defaultWhitelistOrderItemModel) insertUUID(data *WhitelistOrderItem) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultWhitelistOrderItemModel) FindOne(ctx context.Context, id string) (*WhitelistOrderItem, error) {
yccWhitelistOrderItemIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderItemIdPrefix, id)
var resp WhitelistOrderItem
err := m.QueryRowCtx(ctx, &resp, yccWhitelistOrderItemIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", whitelistOrderItemRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultWhitelistOrderItemModel) Update(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) (sql.Result, error) {
yccWhitelistOrderItemIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderItemIdPrefix, data.Id)
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, whitelistOrderItemRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.OrderId, data.FeatureId, data.FeatureApiId, data.FeatureName, data.Price, data.Id)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.OrderId, data.FeatureId, data.FeatureApiId, data.FeatureName, data.Price, data.Id)
}, yccWhitelistOrderItemIdKey)
}
func (m *defaultWhitelistOrderItemModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) error {
oldVersion := data.Version
data.Version += 1
var sqlResult sql.Result
var err error
yccWhitelistOrderItemIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderItemIdPrefix, data.Id)
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, whitelistOrderItemRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.OrderId, data.FeatureId, data.FeatureApiId, data.FeatureName, data.Price, data.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.OrderId, data.FeatureId, data.FeatureApiId, data.FeatureName, data.Price, data.Id, oldVersion)
}, yccWhitelistOrderItemIdKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultWhitelistOrderItemModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *WhitelistOrderItem) error {
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 "), "WhitelistOrderItemModel delete err : %+v", err)
}
return nil
}
func (m *defaultWhitelistOrderItemModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultWhitelistOrderItemModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultWhitelistOrderItemModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*WhitelistOrderItem, error) {
builder = builder.Columns(whitelistOrderItemRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrderItem
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderItemModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrderItem, error) {
builder = builder.Columns(whitelistOrderItemRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrderItem
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderItemModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrderItem, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(whitelistOrderItemRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*WhitelistOrderItem
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultWhitelistOrderItemModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*WhitelistOrderItem, error) {
builder = builder.Columns(whitelistOrderItemRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrderItem
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderItemModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*WhitelistOrderItem, error) {
builder = builder.Columns(whitelistOrderItemRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrderItem
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderItemModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultWhitelistOrderItemModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultWhitelistOrderItemModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
yccWhitelistOrderItemIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderItemIdPrefix, id)
_, 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)
}, yccWhitelistOrderItemIdKey)
return err
}
func (m *defaultWhitelistOrderItemModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccWhitelistOrderItemIdPrefix, primary)
}
func (m *defaultWhitelistOrderItemModel) 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", whitelistOrderItemRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultWhitelistOrderItemModel) tableName() string {
return m.table
}

View File

@@ -0,0 +1,27 @@
package model
import (
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ WhitelistOrderModel = (*customWhitelistOrderModel)(nil)
type (
// WhitelistOrderModel is an interface to be customized, add more methods here,
// and implement the added methods in customWhitelistOrderModel.
WhitelistOrderModel interface {
whitelistOrderModel
}
customWhitelistOrderModel struct {
*defaultWhitelistOrderModel
}
)
// NewWhitelistOrderModel returns a model for the database table.
func NewWhitelistOrderModel(conn sqlx.SqlConn, c cache.CacheConf) WhitelistOrderModel {
return &customWhitelistOrderModel{
defaultWhitelistOrderModel: newWhitelistOrderModel(conn, c),
}
}

View File

@@ -0,0 +1,433 @@
// Code generated by goctl. DO NOT EDIT!
package model
import (
"context"
"database/sql"
"fmt"
"strings"
"reflect"
"time"
"github.com/Masterminds/squirrel"
"github.com/google/uuid"
"github.com/pkg/errors"
"github.com/zeromicro/go-zero/core/stores/builder"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
"github.com/zeromicro/go-zero/core/stringx"
"ycc-server/common/globalkey"
)
var (
whitelistOrderFieldNames = builder.RawFieldNames(&WhitelistOrder{})
whitelistOrderRows = strings.Join(whitelistOrderFieldNames, ",")
whitelistOrderRowsExpectAutoSet = strings.Join(stringx.Remove(whitelistOrderFieldNames, "`create_time`", "`update_time`"), ",")
whitelistOrderRowsWithPlaceHolder = strings.Join(stringx.Remove(whitelistOrderFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheYccWhitelistOrderIdPrefix = "cache:ycc:whitelistOrder:id:"
cacheYccWhitelistOrderOrderNoPrefix = "cache:ycc:whitelistOrder:orderNo:"
)
type (
whitelistOrderModel interface {
Insert(ctx context.Context, session sqlx.Session, data *WhitelistOrder) (sql.Result, error)
FindOne(ctx context.Context, id string) (*WhitelistOrder, error)
FindOneByOrderNo(ctx context.Context, orderNo string) (*WhitelistOrder, error)
Update(ctx context.Context, session sqlx.Session, data *WhitelistOrder) (sql.Result, error)
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *WhitelistOrder) error
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
SelectBuilder() squirrel.SelectBuilder
DeleteSoft(ctx context.Context, session sqlx.Session, data *WhitelistOrder) error
FindSum(ctx context.Context, sumBuilder squirrel.SelectBuilder, field string) (float64, error)
FindCount(ctx context.Context, countBuilder squirrel.SelectBuilder, field string) (int64, error)
FindAll(ctx context.Context, rowBuilder squirrel.SelectBuilder, orderBy string) ([]*WhitelistOrder, error)
FindPageListByPage(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrder, error)
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrder, int64, error)
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*WhitelistOrder, error)
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*WhitelistOrder, error)
Delete(ctx context.Context, session sqlx.Session, id string) error
}
defaultWhitelistOrderModel struct {
sqlc.CachedConn
table string
}
WhitelistOrder struct {
Id string `db:"id"` // UUID主键
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"` // 版本号(乐观锁)
OrderNo string `db:"order_no"` // 订单号(唯一)
UserId string `db:"user_id"` // 用户ID代理的user_id
IdCard string `db:"id_card"` // 身份证号(查询对象标识)
TotalAmount float64 `db:"total_amount"` // 总金额(单位:元)
Status int64 `db:"status"` // 订单状态1=待支付2=已支付3=已取消
PaymentMethod sql.NullString `db:"payment_method"` // 支付方式wechat, alipay, appleiap等
PaymentPlatform sql.NullString `db:"payment_platform"` // 支付平台alipay, wechat, appleiap等
PlatformOrderId sql.NullString `db:"platform_order_id"` // 支付平台订单号(第三方平台的订单号)
PayTime sql.NullTime `db:"pay_time"` // 支付时间
}
)
func newWhitelistOrderModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultWhitelistOrderModel {
return &defaultWhitelistOrderModel{
CachedConn: sqlc.NewConn(conn, c),
table: "`whitelist_order`",
}
}
func (m *defaultWhitelistOrderModel) Insert(ctx context.Context, session sqlx.Session, data *WhitelistOrder) (sql.Result, error) {
data.DelState = globalkey.DelStateNo
m.insertUUID(data)
yccWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderIdPrefix, data.Id)
yccWhitelistOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderOrderNoPrefix, data.OrderNo)
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, whitelistOrderRowsExpectAutoSet)
if session != nil {
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.OrderNo, data.UserId, data.IdCard, data.TotalAmount, data.Status, data.PaymentMethod, data.PaymentPlatform, data.PlatformOrderId, data.PayTime)
}
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.OrderNo, data.UserId, data.IdCard, data.TotalAmount, data.Status, data.PaymentMethod, data.PaymentPlatform, data.PlatformOrderId, data.PayTime)
}, yccWhitelistOrderIdKey, yccWhitelistOrderOrderNoKey)
}
func (m *defaultWhitelistOrderModel) insertUUID(data *WhitelistOrder) {
t := reflect.TypeOf(data).Elem()
v := reflect.ValueOf(data).Elem()
for i := 0; i < t.NumField(); i++ {
sf := t.Field(i)
if sf.Tag.Get("db") == "id" {
f := v.Field(i)
if f.IsValid() && f.CanSet() && f.Kind() == reflect.String {
if f.String() == "" {
f.SetString(uuid.NewString())
}
}
break
}
}
}
func (m *defaultWhitelistOrderModel) FindOne(ctx context.Context, id string) (*WhitelistOrder, error) {
yccWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderIdPrefix, id)
var resp WhitelistOrder
err := m.QueryRowCtx(ctx, &resp, yccWhitelistOrderIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", whitelistOrderRows, m.table)
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
})
switch err {
case nil:
return &resp, nil
case sqlc.ErrNotFound:
return nil, ErrNotFound
default:
return nil, err
}
}
func (m *defaultWhitelistOrderModel) FindOneByOrderNo(ctx context.Context, orderNo string) (*WhitelistOrder, error) {
yccWhitelistOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderOrderNoPrefix, orderNo)
var resp WhitelistOrder
err := m.QueryRowIndexCtx(ctx, &resp, yccWhitelistOrderOrderNoKey, 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", whitelistOrderRows, 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 *defaultWhitelistOrderModel) Update(ctx context.Context, session sqlx.Session, newData *WhitelistOrder) (sql.Result, error) {
data, err := m.FindOne(ctx, newData.Id)
if err != nil {
return nil, err
}
yccWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderIdPrefix, data.Id)
yccWhitelistOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderOrderNoPrefix, data.OrderNo)
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, whitelistOrderRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.OrderNo, newData.UserId, newData.IdCard, newData.TotalAmount, newData.Status, newData.PaymentMethod, newData.PaymentPlatform, newData.PlatformOrderId, newData.PayTime, newData.Id)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.OrderNo, newData.UserId, newData.IdCard, newData.TotalAmount, newData.Status, newData.PaymentMethod, newData.PaymentPlatform, newData.PlatformOrderId, newData.PayTime, newData.Id)
}, yccWhitelistOrderIdKey, yccWhitelistOrderOrderNoKey)
}
func (m *defaultWhitelistOrderModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *WhitelistOrder) error {
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
}
yccWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderIdPrefix, data.Id)
yccWhitelistOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderOrderNoPrefix, data.OrderNo)
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, whitelistOrderRowsWithPlaceHolder)
if session != nil {
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.OrderNo, newData.UserId, newData.IdCard, newData.TotalAmount, newData.Status, newData.PaymentMethod, newData.PaymentPlatform, newData.PlatformOrderId, newData.PayTime, newData.Id, oldVersion)
}
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.OrderNo, newData.UserId, newData.IdCard, newData.TotalAmount, newData.Status, newData.PaymentMethod, newData.PaymentPlatform, newData.PlatformOrderId, newData.PayTime, newData.Id, oldVersion)
}, yccWhitelistOrderIdKey, yccWhitelistOrderOrderNoKey)
if err != nil {
return err
}
updateCount, err := sqlResult.RowsAffected()
if err != nil {
return err
}
if updateCount == 0 {
return ErrNoRowsUpdate
}
return nil
}
func (m *defaultWhitelistOrderModel) DeleteSoft(ctx context.Context, session sqlx.Session, data *WhitelistOrder) error {
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 "), "WhitelistOrderModel delete err : %+v", err)
}
return nil
}
func (m *defaultWhitelistOrderModel) FindSum(ctx context.Context, builder squirrel.SelectBuilder, field string) (float64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindSum Least One Field"), "FindSum Least One Field")
}
builder = builder.Columns("IFNULL(SUM(" + field + "),0)")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp float64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultWhitelistOrderModel) FindCount(ctx context.Context, builder squirrel.SelectBuilder, field string) (int64, error) {
if len(field) == 0 {
return 0, errors.Wrapf(errors.New("FindCount Least One Field"), "FindCount Least One Field")
}
builder = builder.Columns("COUNT(" + field + ")")
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return 0, err
}
var resp int64
err = m.QueryRowNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return 0, err
}
}
func (m *defaultWhitelistOrderModel) FindAll(ctx context.Context, builder squirrel.SelectBuilder, orderBy string) ([]*WhitelistOrder, error) {
builder = builder.Columns(whitelistOrderRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrder
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderModel) FindPageListByPage(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrder, error) {
builder = builder.Columns(whitelistOrderRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrder
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderModel) FindPageListByPageWithTotal(ctx context.Context, builder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*WhitelistOrder, int64, error) {
total, err := m.FindCount(ctx, builder, "id")
if err != nil {
return nil, 0, err
}
builder = builder.Columns(whitelistOrderRows)
if orderBy == "" {
builder = builder.OrderBy("id DESC")
} else {
builder = builder.OrderBy(orderBy)
}
if page < 1 {
page = 1
}
offset := (page - 1) * pageSize
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).Offset(uint64(offset)).Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, total, err
}
var resp []*WhitelistOrder
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, total, nil
default:
return nil, total, err
}
}
func (m *defaultWhitelistOrderModel) FindPageListByIdDESC(ctx context.Context, builder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*WhitelistOrder, error) {
builder = builder.Columns(whitelistOrderRows)
if preMinId > 0 {
builder = builder.Where(" id < ? ", preMinId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id DESC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrder
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderModel) FindPageListByIdASC(ctx context.Context, builder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*WhitelistOrder, error) {
builder = builder.Columns(whitelistOrderRows)
if preMaxId > 0 {
builder = builder.Where(" id > ? ", preMaxId)
}
query, values, err := builder.Where("del_state = ?", globalkey.DelStateNo).OrderBy("id ASC").Limit(uint64(pageSize)).ToSql()
if err != nil {
return nil, err
}
var resp []*WhitelistOrder
err = m.QueryRowsNoCacheCtx(ctx, &resp, query, values...)
switch err {
case nil:
return resp, nil
default:
return nil, err
}
}
func (m *defaultWhitelistOrderModel) Trans(ctx context.Context, fn func(ctx context.Context, session sqlx.Session) error) error {
return m.TransactCtx(ctx, func(ctx context.Context, session sqlx.Session) error {
return fn(ctx, session)
})
}
func (m *defaultWhitelistOrderModel) SelectBuilder() squirrel.SelectBuilder {
return squirrel.Select().From(m.table)
}
func (m *defaultWhitelistOrderModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
data, err := m.FindOne(ctx, id)
if err != nil {
return err
}
yccWhitelistOrderIdKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderIdPrefix, id)
yccWhitelistOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccWhitelistOrderOrderNoPrefix, data.OrderNo)
_, 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)
}, yccWhitelistOrderIdKey, yccWhitelistOrderOrderNoKey)
return err
}
func (m *defaultWhitelistOrderModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheYccWhitelistOrderIdPrefix, primary)
}
func (m *defaultWhitelistOrderModel) 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", whitelistOrderRows, m.table)
return conn.QueryRowCtx(ctx, v, query, primary, globalkey.DelStateNo)
}
func (m *defaultWhitelistOrderModel) tableName() string {
return m.table
}