v1.1
This commit is contained in:
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminApiFieldNames = builder.RawFieldNames(&AdminApi{})
|
||||
adminApiRows = strings.Join(adminApiFieldNames, ",")
|
||||
adminApiRowsExpectAutoSet = strings.Join(stringx.Remove(adminApiFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminApiRowsExpectAutoSet = strings.Join(stringx.Remove(adminApiFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminApiRowsWithPlaceHolder = strings.Join(stringx.Remove(adminApiFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminApiIdPrefix = "cache:ycc:adminApi:id:"
|
||||
cacheHmAdminApiApiCodePrefix = "cache:ycc:adminApi:apiCode:"
|
||||
cacheYccAdminApiIdPrefix = "cache:ycc:adminApi:id:"
|
||||
cacheYccAdminApiApiCodePrefix = "cache:ycc:adminApi:apiCode:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminApiModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminApi) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminApi, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminApi, error)
|
||||
FindOneByApiCode(ctx context.Context, apiCode string) (*AdminApi, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminApi) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AdminApi) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminApi, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminApi, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminApi, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminApiModel struct {
|
||||
@@ -57,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
AdminApi struct {
|
||||
Id int64 `db:"id"`
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -81,21 +82,38 @@ func newAdminApiModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminApiMode
|
||||
|
||||
func (m *defaultAdminApiModel) Insert(ctx context.Context, session sqlx.Session, data *AdminApi) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheHmAdminApiApiCodePrefix, data.ApiCode)
|
||||
hmAdminApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminApiIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheYccAdminApiApiCodePrefix, data.ApiCode)
|
||||
yccAdminApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminApiIdPrefix, 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, adminApiRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, adminApiRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ApiName, data.ApiCode, data.Method, data.Url, data.Status, data.Description)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiName, data.ApiCode, data.Method, data.Url, data.Status, data.Description)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ApiName, data.ApiCode, data.Method, data.Url, data.Status, data.Description)
|
||||
}, hmAdminApiApiCodeKey, hmAdminApiIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiName, data.ApiCode, data.Method, data.Url, data.Status, data.Description)
|
||||
}, yccAdminApiApiCodeKey, yccAdminApiIdKey)
|
||||
}
|
||||
func (m *defaultAdminApiModel) insertUUID(data *AdminApi) {
|
||||
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 *defaultAdminApiModel) FindOne(ctx context.Context, id int64) (*AdminApi, error) {
|
||||
hmAdminApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminApiIdPrefix, id)
|
||||
func (m *defaultAdminApiModel) FindOne(ctx context.Context, id string) (*AdminApi, error) {
|
||||
yccAdminApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminApiIdPrefix, id)
|
||||
var resp AdminApi
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminApiIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminApiIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminApiRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -110,9 +128,9 @@ func (m *defaultAdminApiModel) FindOne(ctx context.Context, id int64) (*AdminApi
|
||||
}
|
||||
|
||||
func (m *defaultAdminApiModel) FindOneByApiCode(ctx context.Context, apiCode string) (*AdminApi, error) {
|
||||
hmAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheHmAdminApiApiCodePrefix, apiCode)
|
||||
yccAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheYccAdminApiApiCodePrefix, apiCode)
|
||||
var resp AdminApi
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminApiApiCodeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminApiApiCodeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `api_code` = ? and del_state = ? limit 1", adminApiRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, apiCode, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -134,15 +152,15 @@ func (m *defaultAdminApiModel) Update(ctx context.Context, session sqlx.Session,
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheHmAdminApiApiCodePrefix, data.ApiCode)
|
||||
hmAdminApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminApiIdPrefix, data.Id)
|
||||
yccAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheYccAdminApiApiCodePrefix, data.ApiCode)
|
||||
yccAdminApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminApiIdPrefix, 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, adminApiRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiName, newData.ApiCode, newData.Method, newData.Url, newData.Status, newData.Description, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiName, newData.ApiCode, newData.Method, newData.Url, newData.Status, newData.Description, newData.Id)
|
||||
}, hmAdminApiApiCodeKey, hmAdminApiIdKey)
|
||||
}, yccAdminApiApiCodeKey, yccAdminApiIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminApiModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminApi) error {
|
||||
@@ -157,15 +175,15 @@ func (m *defaultAdminApiModel) UpdateWithVersion(ctx context.Context, session sq
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheHmAdminApiApiCodePrefix, data.ApiCode)
|
||||
hmAdminApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminApiIdPrefix, data.Id)
|
||||
yccAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheYccAdminApiApiCodePrefix, data.ApiCode)
|
||||
yccAdminApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminApiIdPrefix, 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, adminApiRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiName, newData.ApiCode, newData.Method, newData.Url, newData.Status, newData.Description, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiName, newData.ApiCode, newData.Method, newData.Url, newData.Status, newData.Description, newData.Id, oldVersion)
|
||||
}, hmAdminApiApiCodeKey, hmAdminApiIdKey)
|
||||
}, yccAdminApiApiCodeKey, yccAdminApiIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -382,25 +400,25 @@ func (m *defaultAdminApiModel) Trans(ctx context.Context, fn func(ctx context.Co
|
||||
func (m *defaultAdminApiModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminApiModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminApiModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheHmAdminApiApiCodePrefix, data.ApiCode)
|
||||
hmAdminApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminApiIdPrefix, id)
|
||||
yccAdminApiApiCodeKey := fmt.Sprintf("%s%v", cacheYccAdminApiApiCodePrefix, data.ApiCode)
|
||||
yccAdminApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminApiIdPrefix, 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)
|
||||
}, hmAdminApiApiCodeKey, hmAdminApiIdKey)
|
||||
}, yccAdminApiApiCodeKey, yccAdminApiIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminApiModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminApiIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminApiIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminApiModel) 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", adminApiRows, m.table)
|
||||
|
||||
@@ -8,34 +8,35 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminDictDataFieldNames = builder.RawFieldNames(&AdminDictData{})
|
||||
adminDictDataRows = strings.Join(adminDictDataFieldNames, ",")
|
||||
adminDictDataRowsExpectAutoSet = strings.Join(stringx.Remove(adminDictDataFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminDictDataRowsExpectAutoSet = strings.Join(stringx.Remove(adminDictDataFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminDictDataRowsWithPlaceHolder = strings.Join(stringx.Remove(adminDictDataFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminDictDataIdPrefix = "cache:ycc:adminDictycc:id:"
|
||||
cacheHmAdminDictDataDictTypeDictLabelPrefix = "cache:ycc:adminDictycc:dictType:dictLabel:"
|
||||
cacheHmAdminDictDataDictTypeDictValuePrefix = "cache:ycc:adminDictycc:dictType:dictValue:"
|
||||
cacheYccAdminDictDataIdPrefix = "cache:ycc:adminDictData:id:"
|
||||
cacheYccAdminDictDataDictTypeDictLabelPrefix = "cache:ycc:adminDictData:dictType:dictLabel:"
|
||||
cacheYccAdminDictDataDictTypeDictValuePrefix = "cache:ycc:adminDictData:dictType:dictValue:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminDictDataModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminDictData) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminDictData, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminDictData, error)
|
||||
FindOneByDictTypeDictLabel(ctx context.Context, dictType string, dictLabel string) (*AdminDictData, error)
|
||||
FindOneByDictTypeDictValue(ctx context.Context, dictType string, dictValue int64) (*AdminDictData, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminDictData) (sql.Result, error)
|
||||
@@ -50,7 +51,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminDictData, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminDictData, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminDictData, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminDictDataModel struct {
|
||||
@@ -59,7 +60,7 @@ type (
|
||||
}
|
||||
|
||||
AdminDictData struct {
|
||||
Id int64 `db:"id"`
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -83,22 +84,39 @@ func newAdminDictDataModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminDi
|
||||
|
||||
func (m *defaultAdminDictDataModel) Insert(ctx context.Context, session sqlx.Session, data *AdminDictData) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
hmAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
hmAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictDataIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
yccAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
yccAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictDataIdPrefix, 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, adminDictDataRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, adminDictDataRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictLabel, data.DictValue, data.DictSort, data.Status, data.Remark)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictLabel, data.DictValue, data.DictSort, data.Status, data.Remark)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictLabel, data.DictValue, data.DictSort, data.Status, data.Remark)
|
||||
}, hmAdminDictDataDictTypeDictLabelKey, hmAdminDictDataDictTypeDictValueKey, hmAdminDictDataIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictLabel, data.DictValue, data.DictSort, data.Status, data.Remark)
|
||||
}, yccAdminDictDataDictTypeDictLabelKey, yccAdminDictDataDictTypeDictValueKey, yccAdminDictDataIdKey)
|
||||
}
|
||||
func (m *defaultAdminDictDataModel) insertUUID(data *AdminDictData) {
|
||||
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 *defaultAdminDictDataModel) FindOne(ctx context.Context, id int64) (*AdminDictData, error) {
|
||||
hmAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictDataIdPrefix, id)
|
||||
func (m *defaultAdminDictDataModel) FindOne(ctx context.Context, id string) (*AdminDictData, error) {
|
||||
yccAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictDataIdPrefix, id)
|
||||
var resp AdminDictData
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminDictDataIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminDictDataIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminDictDataRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -113,9 +131,9 @@ func (m *defaultAdminDictDataModel) FindOne(ctx context.Context, id int64) (*Adm
|
||||
}
|
||||
|
||||
func (m *defaultAdminDictDataModel) FindOneByDictTypeDictLabel(ctx context.Context, dictType string, dictLabel string) (*AdminDictData, error) {
|
||||
hmAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictLabelPrefix, dictType, dictLabel)
|
||||
yccAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictLabelPrefix, dictType, dictLabel)
|
||||
var resp AdminDictData
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminDictDataDictTypeDictLabelKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminDictDataDictTypeDictLabelKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `dict_type` = ? and `dict_label` = ? and del_state = ? limit 1", adminDictDataRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, dictType, dictLabel, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -133,9 +151,9 @@ func (m *defaultAdminDictDataModel) FindOneByDictTypeDictLabel(ctx context.Conte
|
||||
}
|
||||
|
||||
func (m *defaultAdminDictDataModel) FindOneByDictTypeDictValue(ctx context.Context, dictType string, dictValue int64) (*AdminDictData, error) {
|
||||
hmAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictValuePrefix, dictType, dictValue)
|
||||
yccAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictValuePrefix, dictType, dictValue)
|
||||
var resp AdminDictData
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminDictDataDictTypeDictValueKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminDictDataDictTypeDictValueKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `dict_type` = ? and `dict_value` = ? and del_state = ? limit 1", adminDictDataRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, dictType, dictValue, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -157,16 +175,16 @@ func (m *defaultAdminDictDataModel) Update(ctx context.Context, session sqlx.Ses
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
hmAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
hmAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictDataIdPrefix, data.Id)
|
||||
yccAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
yccAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
yccAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictDataIdPrefix, 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, adminDictDataRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictLabel, newData.DictValue, newData.DictSort, newData.Status, newData.Remark, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictLabel, newData.DictValue, newData.DictSort, newData.Status, newData.Remark, newData.Id)
|
||||
}, hmAdminDictDataDictTypeDictLabelKey, hmAdminDictDataDictTypeDictValueKey, hmAdminDictDataIdKey)
|
||||
}, yccAdminDictDataDictTypeDictLabelKey, yccAdminDictDataDictTypeDictValueKey, yccAdminDictDataIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminDictDataModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminDictData) error {
|
||||
@@ -181,16 +199,16 @@ func (m *defaultAdminDictDataModel) UpdateWithVersion(ctx context.Context, sessi
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
hmAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
hmAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictDataIdPrefix, data.Id)
|
||||
yccAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
yccAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
yccAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictDataIdPrefix, 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, adminDictDataRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictLabel, newData.DictValue, newData.DictSort, newData.Status, newData.Remark, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictLabel, newData.DictValue, newData.DictSort, newData.Status, newData.Remark, newData.Id, oldVersion)
|
||||
}, hmAdminDictDataDictTypeDictLabelKey, hmAdminDictDataDictTypeDictValueKey, hmAdminDictDataIdKey)
|
||||
}, yccAdminDictDataDictTypeDictLabelKey, yccAdminDictDataDictTypeDictValueKey, yccAdminDictDataIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -407,26 +425,26 @@ func (m *defaultAdminDictDataModel) Trans(ctx context.Context, fn func(ctx conte
|
||||
func (m *defaultAdminDictDataModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminDictDataModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminDictDataModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
hmAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheHmAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
hmAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictDataIdPrefix, id)
|
||||
yccAdminDictDataDictTypeDictLabelKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictLabelPrefix, data.DictType, data.DictLabel)
|
||||
yccAdminDictDataDictTypeDictValueKey := fmt.Sprintf("%s%v:%v", cacheYccAdminDictDataDictTypeDictValuePrefix, data.DictType, data.DictValue)
|
||||
yccAdminDictDataIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictDataIdPrefix, 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)
|
||||
}, hmAdminDictDataDictTypeDictLabelKey, hmAdminDictDataDictTypeDictValueKey, hmAdminDictDataIdKey)
|
||||
}, yccAdminDictDataDictTypeDictLabelKey, yccAdminDictDataDictTypeDictValueKey, yccAdminDictDataIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminDictDataModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminDictDataIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminDictDataIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminDictDataModel) 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", adminDictDataRows, m.table)
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminDictTypeFieldNames = builder.RawFieldNames(&AdminDictType{})
|
||||
adminDictTypeRows = strings.Join(adminDictTypeFieldNames, ",")
|
||||
adminDictTypeRowsExpectAutoSet = strings.Join(stringx.Remove(adminDictTypeFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminDictTypeRowsExpectAutoSet = strings.Join(stringx.Remove(adminDictTypeFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminDictTypeRowsWithPlaceHolder = strings.Join(stringx.Remove(adminDictTypeFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminDictTypeIdPrefix = "cache:ycc:adminDictType:id:"
|
||||
cacheHmAdminDictTypeDictTypePrefix = "cache:ycc:adminDictType:dictType:"
|
||||
cacheYccAdminDictTypeIdPrefix = "cache:ycc:adminDictType:id:"
|
||||
cacheYccAdminDictTypeDictTypePrefix = "cache:ycc:adminDictType:dictType:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminDictTypeModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminDictType) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminDictType, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminDictType, error)
|
||||
FindOneByDictType(ctx context.Context, dictType string) (*AdminDictType, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminDictType) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AdminDictType) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminDictType, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminDictType, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminDictType, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminDictTypeModel struct {
|
||||
@@ -57,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
AdminDictType struct {
|
||||
Id int64 `db:"id"`
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -79,21 +80,38 @@ func newAdminDictTypeModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminDi
|
||||
|
||||
func (m *defaultAdminDictTypeModel) Insert(ctx context.Context, session sqlx.Session, data *AdminDictType) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeDictTypePrefix, data.DictType)
|
||||
hmAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeDictTypePrefix, data.DictType)
|
||||
yccAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeIdPrefix, 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, adminDictTypeRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, adminDictTypeRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictName, data.Status, data.Remark)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictName, data.Status, data.Remark)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictName, data.Status, data.Remark)
|
||||
}, hmAdminDictTypeDictTypeKey, hmAdminDictTypeIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.DictType, data.DictName, data.Status, data.Remark)
|
||||
}, yccAdminDictTypeDictTypeKey, yccAdminDictTypeIdKey)
|
||||
}
|
||||
func (m *defaultAdminDictTypeModel) insertUUID(data *AdminDictType) {
|
||||
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 *defaultAdminDictTypeModel) FindOne(ctx context.Context, id int64) (*AdminDictType, error) {
|
||||
hmAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeIdPrefix, id)
|
||||
func (m *defaultAdminDictTypeModel) FindOne(ctx context.Context, id string) (*AdminDictType, error) {
|
||||
yccAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeIdPrefix, id)
|
||||
var resp AdminDictType
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminDictTypeIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminDictTypeIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminDictTypeRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -108,9 +126,9 @@ func (m *defaultAdminDictTypeModel) FindOne(ctx context.Context, id int64) (*Adm
|
||||
}
|
||||
|
||||
func (m *defaultAdminDictTypeModel) FindOneByDictType(ctx context.Context, dictType string) (*AdminDictType, error) {
|
||||
hmAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeDictTypePrefix, dictType)
|
||||
yccAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeDictTypePrefix, dictType)
|
||||
var resp AdminDictType
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminDictTypeDictTypeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminDictTypeDictTypeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `dict_type` = ? and del_state = ? limit 1", adminDictTypeRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, dictType, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -132,15 +150,15 @@ func (m *defaultAdminDictTypeModel) Update(ctx context.Context, session sqlx.Ses
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeDictTypePrefix, data.DictType)
|
||||
hmAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeIdPrefix, data.Id)
|
||||
yccAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeDictTypePrefix, data.DictType)
|
||||
yccAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeIdPrefix, 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, adminDictTypeRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictName, newData.Status, newData.Remark, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictName, newData.Status, newData.Remark, newData.Id)
|
||||
}, hmAdminDictTypeDictTypeKey, hmAdminDictTypeIdKey)
|
||||
}, yccAdminDictTypeDictTypeKey, yccAdminDictTypeIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminDictTypeModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminDictType) error {
|
||||
@@ -155,15 +173,15 @@ func (m *defaultAdminDictTypeModel) UpdateWithVersion(ctx context.Context, sessi
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeDictTypePrefix, data.DictType)
|
||||
hmAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeIdPrefix, data.Id)
|
||||
yccAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeDictTypePrefix, data.DictType)
|
||||
yccAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeIdPrefix, 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, adminDictTypeRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictName, newData.Status, newData.Remark, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.DictType, newData.DictName, newData.Status, newData.Remark, newData.Id, oldVersion)
|
||||
}, hmAdminDictTypeDictTypeKey, hmAdminDictTypeIdKey)
|
||||
}, yccAdminDictTypeDictTypeKey, yccAdminDictTypeIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -380,25 +398,25 @@ func (m *defaultAdminDictTypeModel) Trans(ctx context.Context, fn func(ctx conte
|
||||
func (m *defaultAdminDictTypeModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminDictTypeModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminDictTypeModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeDictTypePrefix, data.DictType)
|
||||
hmAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheHmAdminDictTypeIdPrefix, id)
|
||||
yccAdminDictTypeDictTypeKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeDictTypePrefix, data.DictType)
|
||||
yccAdminDictTypeIdKey := fmt.Sprintf("%s%v", cacheYccAdminDictTypeIdPrefix, 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)
|
||||
}, hmAdminDictTypeDictTypeKey, hmAdminDictTypeIdKey)
|
||||
}, yccAdminDictTypeDictTypeKey, yccAdminDictTypeIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminDictTypeModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminDictTypeIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminDictTypeIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminDictTypeModel) 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", adminDictTypeRows, m.table)
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminMenuFieldNames = builder.RawFieldNames(&AdminMenu{})
|
||||
adminMenuRows = strings.Join(adminMenuFieldNames, ",")
|
||||
adminMenuRowsExpectAutoSet = strings.Join(stringx.Remove(adminMenuFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminMenuRowsExpectAutoSet = strings.Join(stringx.Remove(adminMenuFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminMenuRowsWithPlaceHolder = strings.Join(stringx.Remove(adminMenuFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminMenuIdPrefix = "cache:ycc:adminMenu:id:"
|
||||
cacheHmAdminMenuNamePathPrefix = "cache:ycc:adminMenu:name:path:"
|
||||
cacheYccAdminMenuIdPrefix = "cache:ycc:adminMenu:id:"
|
||||
cacheYccAdminMenuNamePathPrefix = "cache:ycc:adminMenu:name:path:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminMenuModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminMenu) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminMenu, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminMenu, error)
|
||||
FindOneByNamePath(ctx context.Context, name string, path string) (*AdminMenu, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminMenu) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AdminMenu) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminMenu, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminMenu, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminMenu, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminMenuModel struct {
|
||||
@@ -57,13 +58,13 @@ type (
|
||||
}
|
||||
|
||||
AdminMenu struct {
|
||||
Id int64 `db:"id"`
|
||||
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"` // 版本号
|
||||
Pid int64 `db:"pid"` // 父菜单ID
|
||||
Pid sql.NullString `db:"pid"` // 父菜单ID
|
||||
Name string `db:"name"` // 路由名称
|
||||
Path string `db:"path"` // 路由路径
|
||||
Component string `db:"component"` // 组件路径
|
||||
@@ -84,21 +85,38 @@ func newAdminMenuModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminMenuMo
|
||||
|
||||
func (m *defaultAdminMenuModel) Insert(ctx context.Context, session sqlx.Session, data *AdminMenu) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminMenuIdPrefix, data.Id)
|
||||
hmAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheHmAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
m.insertUUID(data)
|
||||
yccAdminMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminMenuIdPrefix, data.Id)
|
||||
yccAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheYccAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
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, adminMenuRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, adminMenuRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Pid, data.Name, data.Path, data.Component, data.Redirect, data.Meta, data.Status, data.Type, data.Sort)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Pid, data.Name, data.Path, data.Component, data.Redirect, data.Meta, data.Status, data.Type, data.Sort)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Pid, data.Name, data.Path, data.Component, data.Redirect, data.Meta, data.Status, data.Type, data.Sort)
|
||||
}, hmAdminMenuIdKey, hmAdminMenuNamePathKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Pid, data.Name, data.Path, data.Component, data.Redirect, data.Meta, data.Status, data.Type, data.Sort)
|
||||
}, yccAdminMenuIdKey, yccAdminMenuNamePathKey)
|
||||
}
|
||||
func (m *defaultAdminMenuModel) insertUUID(data *AdminMenu) {
|
||||
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 *defaultAdminMenuModel) FindOne(ctx context.Context, id int64) (*AdminMenu, error) {
|
||||
hmAdminMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminMenuIdPrefix, id)
|
||||
func (m *defaultAdminMenuModel) FindOne(ctx context.Context, id string) (*AdminMenu, error) {
|
||||
yccAdminMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminMenuIdPrefix, id)
|
||||
var resp AdminMenu
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminMenuIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminMenuIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminMenuRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -113,9 +131,9 @@ func (m *defaultAdminMenuModel) FindOne(ctx context.Context, id int64) (*AdminMe
|
||||
}
|
||||
|
||||
func (m *defaultAdminMenuModel) FindOneByNamePath(ctx context.Context, name string, path string) (*AdminMenu, error) {
|
||||
hmAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheHmAdminMenuNamePathPrefix, name, path)
|
||||
yccAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheYccAdminMenuNamePathPrefix, name, path)
|
||||
var resp AdminMenu
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminMenuNamePathKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminMenuNamePathKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `name` = ? and `path` = ? and del_state = ? limit 1", adminMenuRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, name, path, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -137,15 +155,15 @@ func (m *defaultAdminMenuModel) Update(ctx context.Context, session sqlx.Session
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminMenuIdPrefix, data.Id)
|
||||
hmAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheHmAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
yccAdminMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminMenuIdPrefix, data.Id)
|
||||
yccAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheYccAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
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, adminMenuRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Pid, newData.Name, newData.Path, newData.Component, newData.Redirect, newData.Meta, newData.Status, newData.Type, newData.Sort, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Pid, newData.Name, newData.Path, newData.Component, newData.Redirect, newData.Meta, newData.Status, newData.Type, newData.Sort, newData.Id)
|
||||
}, hmAdminMenuIdKey, hmAdminMenuNamePathKey)
|
||||
}, yccAdminMenuIdKey, yccAdminMenuNamePathKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminMenuModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminMenu) error {
|
||||
@@ -160,15 +178,15 @@ func (m *defaultAdminMenuModel) UpdateWithVersion(ctx context.Context, session s
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminMenuIdPrefix, data.Id)
|
||||
hmAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheHmAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
yccAdminMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminMenuIdPrefix, data.Id)
|
||||
yccAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheYccAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
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, adminMenuRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Pid, newData.Name, newData.Path, newData.Component, newData.Redirect, newData.Meta, newData.Status, newData.Type, newData.Sort, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Pid, newData.Name, newData.Path, newData.Component, newData.Redirect, newData.Meta, newData.Status, newData.Type, newData.Sort, newData.Id, oldVersion)
|
||||
}, hmAdminMenuIdKey, hmAdminMenuNamePathKey)
|
||||
}, yccAdminMenuIdKey, yccAdminMenuNamePathKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -385,25 +403,25 @@ func (m *defaultAdminMenuModel) Trans(ctx context.Context, fn func(ctx context.C
|
||||
func (m *defaultAdminMenuModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminMenuModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminMenuModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminMenuIdPrefix, id)
|
||||
hmAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheHmAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
yccAdminMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminMenuIdPrefix, id)
|
||||
yccAdminMenuNamePathKey := fmt.Sprintf("%s%v:%v", cacheYccAdminMenuNamePathPrefix, data.Name, data.Path)
|
||||
_, 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)
|
||||
}, hmAdminMenuIdKey, hmAdminMenuNamePathKey)
|
||||
}, yccAdminMenuIdKey, yccAdminMenuNamePathKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminMenuModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminMenuIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminMenuIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminMenuModel) 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", adminMenuRows, m.table)
|
||||
|
||||
@@ -8,34 +8,35 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminRoleApiFieldNames = builder.RawFieldNames(&AdminRoleApi{})
|
||||
adminRoleApiRows = strings.Join(adminRoleApiFieldNames, ",")
|
||||
adminRoleApiRowsExpectAutoSet = strings.Join(stringx.Remove(adminRoleApiFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminRoleApiRowsExpectAutoSet = strings.Join(stringx.Remove(adminRoleApiFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminRoleApiRowsWithPlaceHolder = strings.Join(stringx.Remove(adminRoleApiFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminRoleApiIdPrefix = "cache:ycc:adminRoleApi:id:"
|
||||
cacheHmAdminRoleApiRoleIdApiIdPrefix = "cache:ycc:adminRoleApi:roleId:apiId:"
|
||||
cacheYccAdminRoleApiIdPrefix = "cache:ycc:adminRoleApi:id:"
|
||||
cacheYccAdminRoleApiRoleIdApiIdPrefix = "cache:ycc:adminRoleApi:roleId:apiId:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminRoleApiModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminRoleApi) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminRoleApi, error)
|
||||
FindOneByRoleIdApiId(ctx context.Context, roleId int64, apiId int64) (*AdminRoleApi, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminRoleApi, error)
|
||||
FindOneByRoleIdApiId(ctx context.Context, roleId string, apiId string) (*AdminRoleApi, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminRoleApi) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AdminRoleApi) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminRoleApi, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminRoleApi, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminRoleApi, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminRoleApiModel struct {
|
||||
@@ -57,14 +58,14 @@ type (
|
||||
}
|
||||
|
||||
AdminRoleApi struct {
|
||||
Id int64 `db:"id"`
|
||||
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"` // 版本号
|
||||
RoleId int64 `db:"role_id"` // 关联到角色表的id
|
||||
ApiId int64 `db:"api_id"` // 关联到接口表的id
|
||||
RoleId string `db:"role_id"`
|
||||
ApiId string `db:"api_id"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -77,21 +78,38 @@ func newAdminRoleApiModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminRol
|
||||
|
||||
func (m *defaultAdminRoleApiModel) Insert(ctx context.Context, session sqlx.Session, data *AdminRoleApi) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleApiIdPrefix, data.Id)
|
||||
hmAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
m.insertUUID(data)
|
||||
yccAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleApiIdPrefix, data.Id)
|
||||
yccAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
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, adminRoleApiRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?)", m.table, adminRoleApiRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.ApiId)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.ApiId)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.ApiId)
|
||||
}, hmAdminRoleApiIdKey, hmAdminRoleApiRoleIdApiIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.ApiId)
|
||||
}, yccAdminRoleApiIdKey, yccAdminRoleApiRoleIdApiIdKey)
|
||||
}
|
||||
func (m *defaultAdminRoleApiModel) insertUUID(data *AdminRoleApi) {
|
||||
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 *defaultAdminRoleApiModel) FindOne(ctx context.Context, id int64) (*AdminRoleApi, error) {
|
||||
hmAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleApiIdPrefix, id)
|
||||
func (m *defaultAdminRoleApiModel) FindOne(ctx context.Context, id string) (*AdminRoleApi, error) {
|
||||
yccAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleApiIdPrefix, id)
|
||||
var resp AdminRoleApi
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminRoleApiIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminRoleApiIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminRoleApiRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -105,10 +123,10 @@ func (m *defaultAdminRoleApiModel) FindOne(ctx context.Context, id int64) (*Admi
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAdminRoleApiModel) FindOneByRoleIdApiId(ctx context.Context, roleId int64, apiId int64) (*AdminRoleApi, error) {
|
||||
hmAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleApiRoleIdApiIdPrefix, roleId, apiId)
|
||||
func (m *defaultAdminRoleApiModel) FindOneByRoleIdApiId(ctx context.Context, roleId string, apiId string) (*AdminRoleApi, error) {
|
||||
yccAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleApiRoleIdApiIdPrefix, roleId, apiId)
|
||||
var resp AdminRoleApi
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminRoleApiRoleIdApiIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminRoleApiRoleIdApiIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `role_id` = ? and `api_id` = ? and del_state = ? limit 1", adminRoleApiRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, roleId, apiId, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -130,15 +148,15 @@ func (m *defaultAdminRoleApiModel) Update(ctx context.Context, session sqlx.Sess
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleApiIdPrefix, data.Id)
|
||||
hmAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
yccAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleApiIdPrefix, data.Id)
|
||||
yccAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
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, adminRoleApiRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.ApiId, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.ApiId, newData.Id)
|
||||
}, hmAdminRoleApiIdKey, hmAdminRoleApiRoleIdApiIdKey)
|
||||
}, yccAdminRoleApiIdKey, yccAdminRoleApiRoleIdApiIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminRoleApiModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminRoleApi) error {
|
||||
@@ -153,15 +171,15 @@ func (m *defaultAdminRoleApiModel) UpdateWithVersion(ctx context.Context, sessio
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleApiIdPrefix, data.Id)
|
||||
hmAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
yccAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleApiIdPrefix, data.Id)
|
||||
yccAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
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, adminRoleApiRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.ApiId, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.ApiId, newData.Id, oldVersion)
|
||||
}, hmAdminRoleApiIdKey, hmAdminRoleApiRoleIdApiIdKey)
|
||||
}, yccAdminRoleApiIdKey, yccAdminRoleApiRoleIdApiIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -378,25 +396,25 @@ func (m *defaultAdminRoleApiModel) Trans(ctx context.Context, fn func(ctx contex
|
||||
func (m *defaultAdminRoleApiModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminRoleApiModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminRoleApiModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleApiIdPrefix, id)
|
||||
hmAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
yccAdminRoleApiIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleApiIdPrefix, id)
|
||||
yccAdminRoleApiRoleIdApiIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleApiRoleIdApiIdPrefix, data.RoleId, data.ApiId)
|
||||
_, 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)
|
||||
}, hmAdminRoleApiIdKey, hmAdminRoleApiRoleIdApiIdKey)
|
||||
}, yccAdminRoleApiIdKey, yccAdminRoleApiRoleIdApiIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminRoleApiModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminRoleApiIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminRoleApiIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminRoleApiModel) 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", adminRoleApiRows, m.table)
|
||||
|
||||
@@ -8,34 +8,35 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminRoleMenuFieldNames = builder.RawFieldNames(&AdminRoleMenu{})
|
||||
adminRoleMenuRows = strings.Join(adminRoleMenuFieldNames, ",")
|
||||
adminRoleMenuRowsExpectAutoSet = strings.Join(stringx.Remove(adminRoleMenuFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminRoleMenuRowsExpectAutoSet = strings.Join(stringx.Remove(adminRoleMenuFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminRoleMenuRowsWithPlaceHolder = strings.Join(stringx.Remove(adminRoleMenuFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminRoleMenuIdPrefix = "cache:ycc:adminRoleMenu:id:"
|
||||
cacheHmAdminRoleMenuRoleIdMenuIdPrefix = "cache:ycc:adminRoleMenu:roleId:menuId:"
|
||||
cacheYccAdminRoleMenuIdPrefix = "cache:ycc:adminRoleMenu:id:"
|
||||
cacheYccAdminRoleMenuRoleIdMenuIdPrefix = "cache:ycc:adminRoleMenu:roleId:menuId:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminRoleMenuModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminRoleMenu) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminRoleMenu, error)
|
||||
FindOneByRoleIdMenuId(ctx context.Context, roleId int64, menuId int64) (*AdminRoleMenu, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminRoleMenu, error)
|
||||
FindOneByRoleIdMenuId(ctx context.Context, roleId string, menuId string) (*AdminRoleMenu, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminRoleMenu) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AdminRoleMenu) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminRoleMenu, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminRoleMenu, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminRoleMenu, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminRoleMenuModel struct {
|
||||
@@ -57,14 +58,14 @@ type (
|
||||
}
|
||||
|
||||
AdminRoleMenu struct {
|
||||
Id int64 `db:"id"`
|
||||
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"` // 版本号
|
||||
RoleId int64 `db:"role_id"` // 关联到角色表的id
|
||||
MenuId int64 `db:"menu_id"` // 关联到菜单表的id
|
||||
RoleId string `db:"role_id"`
|
||||
MenuId string `db:"menu_id"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -77,21 +78,38 @@ func newAdminRoleMenuModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminRo
|
||||
|
||||
func (m *defaultAdminRoleMenuModel) Insert(ctx context.Context, session sqlx.Session, data *AdminRoleMenu) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleMenuIdPrefix, data.Id)
|
||||
hmAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
m.insertUUID(data)
|
||||
yccAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleMenuIdPrefix, data.Id)
|
||||
yccAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
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, adminRoleMenuRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?)", m.table, adminRoleMenuRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.MenuId)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.MenuId)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.MenuId)
|
||||
}, hmAdminRoleMenuIdKey, hmAdminRoleMenuRoleIdMenuIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.RoleId, data.MenuId)
|
||||
}, yccAdminRoleMenuIdKey, yccAdminRoleMenuRoleIdMenuIdKey)
|
||||
}
|
||||
func (m *defaultAdminRoleMenuModel) insertUUID(data *AdminRoleMenu) {
|
||||
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 *defaultAdminRoleMenuModel) FindOne(ctx context.Context, id int64) (*AdminRoleMenu, error) {
|
||||
hmAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleMenuIdPrefix, id)
|
||||
func (m *defaultAdminRoleMenuModel) FindOne(ctx context.Context, id string) (*AdminRoleMenu, error) {
|
||||
yccAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleMenuIdPrefix, id)
|
||||
var resp AdminRoleMenu
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminRoleMenuIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminRoleMenuIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminRoleMenuRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -105,10 +123,10 @@ func (m *defaultAdminRoleMenuModel) FindOne(ctx context.Context, id int64) (*Adm
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAdminRoleMenuModel) FindOneByRoleIdMenuId(ctx context.Context, roleId int64, menuId int64) (*AdminRoleMenu, error) {
|
||||
hmAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleMenuRoleIdMenuIdPrefix, roleId, menuId)
|
||||
func (m *defaultAdminRoleMenuModel) FindOneByRoleIdMenuId(ctx context.Context, roleId string, menuId string) (*AdminRoleMenu, error) {
|
||||
yccAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleMenuRoleIdMenuIdPrefix, roleId, menuId)
|
||||
var resp AdminRoleMenu
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminRoleMenuRoleIdMenuIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminRoleMenuRoleIdMenuIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `role_id` = ? and `menu_id` = ? and del_state = ? limit 1", adminRoleMenuRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, roleId, menuId, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -130,15 +148,15 @@ func (m *defaultAdminRoleMenuModel) Update(ctx context.Context, session sqlx.Ses
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleMenuIdPrefix, data.Id)
|
||||
hmAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
yccAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleMenuIdPrefix, data.Id)
|
||||
yccAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
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, adminRoleMenuRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.MenuId, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.MenuId, newData.Id)
|
||||
}, hmAdminRoleMenuIdKey, hmAdminRoleMenuRoleIdMenuIdKey)
|
||||
}, yccAdminRoleMenuIdKey, yccAdminRoleMenuRoleIdMenuIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminRoleMenuModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminRoleMenu) error {
|
||||
@@ -153,15 +171,15 @@ func (m *defaultAdminRoleMenuModel) UpdateWithVersion(ctx context.Context, sessi
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleMenuIdPrefix, data.Id)
|
||||
hmAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
yccAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleMenuIdPrefix, data.Id)
|
||||
yccAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
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, adminRoleMenuRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.MenuId, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleId, newData.MenuId, newData.Id, oldVersion)
|
||||
}, hmAdminRoleMenuIdKey, hmAdminRoleMenuRoleIdMenuIdKey)
|
||||
}, yccAdminRoleMenuIdKey, yccAdminRoleMenuRoleIdMenuIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -378,25 +396,25 @@ func (m *defaultAdminRoleMenuModel) Trans(ctx context.Context, fn func(ctx conte
|
||||
func (m *defaultAdminRoleMenuModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminRoleMenuModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminRoleMenuModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleMenuIdPrefix, id)
|
||||
hmAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
yccAdminRoleMenuIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleMenuIdPrefix, id)
|
||||
yccAdminRoleMenuRoleIdMenuIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminRoleMenuRoleIdMenuIdPrefix, data.RoleId, data.MenuId)
|
||||
_, 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)
|
||||
}, hmAdminRoleMenuIdKey, hmAdminRoleMenuRoleIdMenuIdKey)
|
||||
}, yccAdminRoleMenuIdKey, yccAdminRoleMenuRoleIdMenuIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminRoleMenuModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminRoleMenuIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminRoleMenuIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminRoleMenuModel) 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", adminRoleMenuRows, m.table)
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminRoleFieldNames = builder.RawFieldNames(&AdminRole{})
|
||||
adminRoleRows = strings.Join(adminRoleFieldNames, ",")
|
||||
adminRoleRowsExpectAutoSet = strings.Join(stringx.Remove(adminRoleFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminRoleRowsExpectAutoSet = strings.Join(stringx.Remove(adminRoleFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminRoleRowsWithPlaceHolder = strings.Join(stringx.Remove(adminRoleFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminRoleIdPrefix = "cache:ycc:adminRole:id:"
|
||||
cacheHmAdminRoleRoleCodePrefix = "cache:ycc:adminRole:roleCode:"
|
||||
cacheYccAdminRoleIdPrefix = "cache:ycc:adminRole:id:"
|
||||
cacheYccAdminRoleRoleCodePrefix = "cache:ycc:adminRole:roleCode:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminRoleModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminRole) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminRole, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminRole, error)
|
||||
FindOneByRoleCode(ctx context.Context, roleCode string) (*AdminRole, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminRole) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AdminRole) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminRole, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminRole, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminRole, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminRoleModel struct {
|
||||
@@ -57,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
AdminRole struct {
|
||||
Id int64 `db:"id"`
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -80,21 +81,38 @@ func newAdminRoleModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminRoleMo
|
||||
|
||||
func (m *defaultAdminRoleModel) Insert(ctx context.Context, session sqlx.Session, data *AdminRole) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleIdPrefix, data.Id)
|
||||
hmAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheHmAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
m.insertUUID(data)
|
||||
yccAdminRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleIdPrefix, data.Id)
|
||||
yccAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheYccAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
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, adminRoleRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, adminRoleRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.RoleName, data.RoleCode, data.Description, data.Status, data.Sort)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.RoleName, data.RoleCode, data.Description, data.Status, data.Sort)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.RoleName, data.RoleCode, data.Description, data.Status, data.Sort)
|
||||
}, hmAdminRoleIdKey, hmAdminRoleRoleCodeKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.RoleName, data.RoleCode, data.Description, data.Status, data.Sort)
|
||||
}, yccAdminRoleIdKey, yccAdminRoleRoleCodeKey)
|
||||
}
|
||||
func (m *defaultAdminRoleModel) insertUUID(data *AdminRole) {
|
||||
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 *defaultAdminRoleModel) FindOne(ctx context.Context, id int64) (*AdminRole, error) {
|
||||
hmAdminRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleIdPrefix, id)
|
||||
func (m *defaultAdminRoleModel) FindOne(ctx context.Context, id string) (*AdminRole, error) {
|
||||
yccAdminRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleIdPrefix, id)
|
||||
var resp AdminRole
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminRoleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminRoleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminRoleRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -109,9 +127,9 @@ func (m *defaultAdminRoleModel) FindOne(ctx context.Context, id int64) (*AdminRo
|
||||
}
|
||||
|
||||
func (m *defaultAdminRoleModel) FindOneByRoleCode(ctx context.Context, roleCode string) (*AdminRole, error) {
|
||||
hmAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheHmAdminRoleRoleCodePrefix, roleCode)
|
||||
yccAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheYccAdminRoleRoleCodePrefix, roleCode)
|
||||
var resp AdminRole
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminRoleRoleCodeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminRoleRoleCodeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `role_code` = ? and del_state = ? limit 1", adminRoleRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, roleCode, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -133,15 +151,15 @@ func (m *defaultAdminRoleModel) Update(ctx context.Context, session sqlx.Session
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleIdPrefix, data.Id)
|
||||
hmAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheHmAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
yccAdminRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleIdPrefix, data.Id)
|
||||
yccAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheYccAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
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, adminRoleRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleName, newData.RoleCode, newData.Description, newData.Status, newData.Sort, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleName, newData.RoleCode, newData.Description, newData.Status, newData.Sort, newData.Id)
|
||||
}, hmAdminRoleIdKey, hmAdminRoleRoleCodeKey)
|
||||
}, yccAdminRoleIdKey, yccAdminRoleRoleCodeKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminRoleModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminRole) error {
|
||||
@@ -156,15 +174,15 @@ func (m *defaultAdminRoleModel) UpdateWithVersion(ctx context.Context, session s
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleIdPrefix, data.Id)
|
||||
hmAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheHmAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
yccAdminRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleIdPrefix, data.Id)
|
||||
yccAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheYccAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
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, adminRoleRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleName, newData.RoleCode, newData.Description, newData.Status, newData.Sort, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.RoleName, newData.RoleCode, newData.Description, newData.Status, newData.Sort, newData.Id, oldVersion)
|
||||
}, hmAdminRoleIdKey, hmAdminRoleRoleCodeKey)
|
||||
}, yccAdminRoleIdKey, yccAdminRoleRoleCodeKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -381,25 +399,25 @@ func (m *defaultAdminRoleModel) Trans(ctx context.Context, fn func(ctx context.C
|
||||
func (m *defaultAdminRoleModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminRoleModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminRoleModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminRoleIdPrefix, id)
|
||||
hmAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheHmAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
yccAdminRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminRoleIdPrefix, id)
|
||||
yccAdminRoleRoleCodeKey := fmt.Sprintf("%s%v", cacheYccAdminRoleRoleCodePrefix, data.RoleCode)
|
||||
_, 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)
|
||||
}, hmAdminRoleIdKey, hmAdminRoleRoleCodeKey)
|
||||
}, yccAdminRoleIdKey, yccAdminRoleRoleCodeKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminRoleModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminRoleIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminRoleIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminRoleModel) 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", adminRoleRows, m.table)
|
||||
|
||||
@@ -8,34 +8,35 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminUserFieldNames = builder.RawFieldNames(&AdminUser{})
|
||||
adminUserRows = strings.Join(adminUserFieldNames, ",")
|
||||
adminUserRowsExpectAutoSet = strings.Join(stringx.Remove(adminUserFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminUserRowsExpectAutoSet = strings.Join(stringx.Remove(adminUserFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminUserRowsWithPlaceHolder = strings.Join(stringx.Remove(adminUserFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminUserIdPrefix = "cache:ycc:adminUser:id:"
|
||||
cacheHmAdminUserRealNamePrefix = "cache:ycc:adminUser:realName:"
|
||||
cacheHmAdminUserUsernamePrefix = "cache:ycc:adminUser:username:"
|
||||
cacheYccAdminUserIdPrefix = "cache:ycc:adminUser:id:"
|
||||
cacheYccAdminUserRealNamePrefix = "cache:ycc:adminUser:realName:"
|
||||
cacheYccAdminUserUsernamePrefix = "cache:ycc:adminUser:username:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminUserModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminUser) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminUser, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminUser, error)
|
||||
FindOneByRealName(ctx context.Context, realName string) (*AdminUser, error)
|
||||
FindOneByUsername(ctx context.Context, username string) (*AdminUser, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminUser) (sql.Result, error)
|
||||
@@ -50,7 +51,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminUser, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminUser, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminUser, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminUserModel struct {
|
||||
@@ -59,7 +60,7 @@ type (
|
||||
}
|
||||
|
||||
AdminUser struct {
|
||||
Id int64 `db:"id"`
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -81,22 +82,39 @@ func newAdminUserModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminUserMo
|
||||
|
||||
func (m *defaultAdminUserModel) Insert(ctx context.Context, session sqlx.Session, data *AdminUser) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminUserIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserIdPrefix, data.Id)
|
||||
hmAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheHmAdminUserRealNamePrefix, data.RealName)
|
||||
hmAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheHmAdminUserUsernamePrefix, data.Username)
|
||||
m.insertUUID(data)
|
||||
yccAdminUserIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserIdPrefix, data.Id)
|
||||
yccAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheYccAdminUserRealNamePrefix, data.RealName)
|
||||
yccAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheYccAdminUserUsernamePrefix, data.Username)
|
||||
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, adminUserRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, adminUserRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Username, data.Password, data.RealName, data.Status)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Username, data.Password, data.RealName, data.Status)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Username, data.Password, data.RealName, data.Status)
|
||||
}, hmAdminUserIdKey, hmAdminUserRealNameKey, hmAdminUserUsernameKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Username, data.Password, data.RealName, data.Status)
|
||||
}, yccAdminUserIdKey, yccAdminUserRealNameKey, yccAdminUserUsernameKey)
|
||||
}
|
||||
func (m *defaultAdminUserModel) insertUUID(data *AdminUser) {
|
||||
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 *defaultAdminUserModel) FindOne(ctx context.Context, id int64) (*AdminUser, error) {
|
||||
hmAdminUserIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserIdPrefix, id)
|
||||
func (m *defaultAdminUserModel) FindOne(ctx context.Context, id string) (*AdminUser, error) {
|
||||
yccAdminUserIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserIdPrefix, id)
|
||||
var resp AdminUser
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminUserIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminUserIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminUserRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -111,9 +129,9 @@ func (m *defaultAdminUserModel) FindOne(ctx context.Context, id int64) (*AdminUs
|
||||
}
|
||||
|
||||
func (m *defaultAdminUserModel) FindOneByRealName(ctx context.Context, realName string) (*AdminUser, error) {
|
||||
hmAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheHmAdminUserRealNamePrefix, realName)
|
||||
yccAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheYccAdminUserRealNamePrefix, realName)
|
||||
var resp AdminUser
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminUserRealNameKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminUserRealNameKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `real_name` = ? and del_state = ? limit 1", adminUserRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, realName, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -131,9 +149,9 @@ func (m *defaultAdminUserModel) FindOneByRealName(ctx context.Context, realName
|
||||
}
|
||||
|
||||
func (m *defaultAdminUserModel) FindOneByUsername(ctx context.Context, username string) (*AdminUser, error) {
|
||||
hmAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheHmAdminUserUsernamePrefix, username)
|
||||
yccAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheYccAdminUserUsernamePrefix, username)
|
||||
var resp AdminUser
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminUserUsernameKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminUserUsernameKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `username` = ? and del_state = ? limit 1", adminUserRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, username, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -155,16 +173,16 @@ func (m *defaultAdminUserModel) Update(ctx context.Context, session sqlx.Session
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminUserIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserIdPrefix, data.Id)
|
||||
hmAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheHmAdminUserRealNamePrefix, data.RealName)
|
||||
hmAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheHmAdminUserUsernamePrefix, data.Username)
|
||||
yccAdminUserIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserIdPrefix, data.Id)
|
||||
yccAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheYccAdminUserRealNamePrefix, data.RealName)
|
||||
yccAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheYccAdminUserUsernamePrefix, data.Username)
|
||||
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, adminUserRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Username, newData.Password, newData.RealName, newData.Status, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Username, newData.Password, newData.RealName, newData.Status, newData.Id)
|
||||
}, hmAdminUserIdKey, hmAdminUserRealNameKey, hmAdminUserUsernameKey)
|
||||
}, yccAdminUserIdKey, yccAdminUserRealNameKey, yccAdminUserUsernameKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminUserModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminUser) error {
|
||||
@@ -179,16 +197,16 @@ func (m *defaultAdminUserModel) UpdateWithVersion(ctx context.Context, session s
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminUserIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserIdPrefix, data.Id)
|
||||
hmAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheHmAdminUserRealNamePrefix, data.RealName)
|
||||
hmAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheHmAdminUserUsernamePrefix, data.Username)
|
||||
yccAdminUserIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserIdPrefix, data.Id)
|
||||
yccAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheYccAdminUserRealNamePrefix, data.RealName)
|
||||
yccAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheYccAdminUserUsernamePrefix, data.Username)
|
||||
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, adminUserRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Username, newData.Password, newData.RealName, newData.Status, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Username, newData.Password, newData.RealName, newData.Status, newData.Id, oldVersion)
|
||||
}, hmAdminUserIdKey, hmAdminUserRealNameKey, hmAdminUserUsernameKey)
|
||||
}, yccAdminUserIdKey, yccAdminUserRealNameKey, yccAdminUserUsernameKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -405,26 +423,26 @@ func (m *defaultAdminUserModel) Trans(ctx context.Context, fn func(ctx context.C
|
||||
func (m *defaultAdminUserModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminUserModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminUserModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminUserIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserIdPrefix, id)
|
||||
hmAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheHmAdminUserRealNamePrefix, data.RealName)
|
||||
hmAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheHmAdminUserUsernamePrefix, data.Username)
|
||||
yccAdminUserIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserIdPrefix, id)
|
||||
yccAdminUserRealNameKey := fmt.Sprintf("%s%v", cacheYccAdminUserRealNamePrefix, data.RealName)
|
||||
yccAdminUserUsernameKey := fmt.Sprintf("%s%v", cacheYccAdminUserUsernamePrefix, data.Username)
|
||||
_, 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)
|
||||
}, hmAdminUserIdKey, hmAdminUserRealNameKey, hmAdminUserUsernameKey)
|
||||
}, yccAdminUserIdKey, yccAdminUserRealNameKey, yccAdminUserUsernameKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminUserModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminUserIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminUserIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminUserModel) 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", adminUserRows, m.table)
|
||||
|
||||
@@ -8,34 +8,35 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
adminUserRoleFieldNames = builder.RawFieldNames(&AdminUserRole{})
|
||||
adminUserRoleRows = strings.Join(adminUserRoleFieldNames, ",")
|
||||
adminUserRoleRowsExpectAutoSet = strings.Join(stringx.Remove(adminUserRoleFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
adminUserRoleRowsExpectAutoSet = strings.Join(stringx.Remove(adminUserRoleFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
adminUserRoleRowsWithPlaceHolder = strings.Join(stringx.Remove(adminUserRoleFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAdminUserRoleIdPrefix = "cache:ycc:adminUserRole:id:"
|
||||
cacheHmAdminUserRoleUserIdRoleIdPrefix = "cache:ycc:adminUserRole:userId:roleId:"
|
||||
cacheYccAdminUserRoleIdPrefix = "cache:ycc:adminUserRole:id:"
|
||||
cacheYccAdminUserRoleUserIdRoleIdPrefix = "cache:ycc:adminUserRole:userId:roleId:"
|
||||
)
|
||||
|
||||
type (
|
||||
adminUserRoleModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AdminUserRole) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AdminUserRole, error)
|
||||
FindOneByUserIdRoleId(ctx context.Context, userId int64, roleId int64) (*AdminUserRole, error)
|
||||
FindOne(ctx context.Context, id string) (*AdminUserRole, error)
|
||||
FindOneByUserIdRoleId(ctx context.Context, userId string, roleId string) (*AdminUserRole, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AdminUserRole) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AdminUserRole) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AdminUserRole, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AdminUserRole, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AdminUserRole, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAdminUserRoleModel struct {
|
||||
@@ -57,14 +58,14 @@ type (
|
||||
}
|
||||
|
||||
AdminUserRole struct {
|
||||
Id int64 `db:"id"`
|
||||
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"` // 版本号
|
||||
UserId int64 `db:"user_id"` // 关联到用户表的id
|
||||
RoleId int64 `db:"role_id"` // 关联到角色表的id
|
||||
UserId string `db:"user_id"`
|
||||
RoleId string `db:"role_id"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -77,21 +78,38 @@ func newAdminUserRoleModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAdminUs
|
||||
|
||||
func (m *defaultAdminUserRoleModel) Insert(ctx context.Context, session sqlx.Session, data *AdminUserRole) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserRoleIdPrefix, data.Id)
|
||||
hmAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
m.insertUUID(data)
|
||||
yccAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserRoleIdPrefix, data.Id)
|
||||
yccAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
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, adminUserRoleRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?)", m.table, adminUserRoleRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.UserId, data.RoleId)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.UserId, data.RoleId)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.UserId, data.RoleId)
|
||||
}, hmAdminUserRoleIdKey, hmAdminUserRoleUserIdRoleIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.UserId, data.RoleId)
|
||||
}, yccAdminUserRoleIdKey, yccAdminUserRoleUserIdRoleIdKey)
|
||||
}
|
||||
func (m *defaultAdminUserRoleModel) insertUUID(data *AdminUserRole) {
|
||||
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 *defaultAdminUserRoleModel) FindOne(ctx context.Context, id int64) (*AdminUserRole, error) {
|
||||
hmAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserRoleIdPrefix, id)
|
||||
func (m *defaultAdminUserRoleModel) FindOne(ctx context.Context, id string) (*AdminUserRole, error) {
|
||||
yccAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserRoleIdPrefix, id)
|
||||
var resp AdminUserRole
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAdminUserRoleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAdminUserRoleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", adminUserRoleRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -105,10 +123,10 @@ func (m *defaultAdminUserRoleModel) FindOne(ctx context.Context, id int64) (*Adm
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAdminUserRoleModel) FindOneByUserIdRoleId(ctx context.Context, userId int64, roleId int64) (*AdminUserRole, error) {
|
||||
hmAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminUserRoleUserIdRoleIdPrefix, userId, roleId)
|
||||
func (m *defaultAdminUserRoleModel) FindOneByUserIdRoleId(ctx context.Context, userId string, roleId string) (*AdminUserRole, error) {
|
||||
yccAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminUserRoleUserIdRoleIdPrefix, userId, roleId)
|
||||
var resp AdminUserRole
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmAdminUserRoleUserIdRoleIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAdminUserRoleUserIdRoleIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `user_id` = ? and `role_id` = ? and del_state = ? limit 1", adminUserRoleRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, userId, roleId, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -130,15 +148,15 @@ func (m *defaultAdminUserRoleModel) Update(ctx context.Context, session sqlx.Ses
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserRoleIdPrefix, data.Id)
|
||||
hmAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
yccAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserRoleIdPrefix, data.Id)
|
||||
yccAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
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, adminUserRoleRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.RoleId, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.RoleId, newData.Id)
|
||||
}, hmAdminUserRoleIdKey, hmAdminUserRoleUserIdRoleIdKey)
|
||||
}, yccAdminUserRoleIdKey, yccAdminUserRoleUserIdRoleIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAdminUserRoleModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *AdminUserRole) error {
|
||||
@@ -153,15 +171,15 @@ func (m *defaultAdminUserRoleModel) UpdateWithVersion(ctx context.Context, sessi
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserRoleIdPrefix, data.Id)
|
||||
hmAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
yccAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserRoleIdPrefix, data.Id)
|
||||
yccAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
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, adminUserRoleRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.RoleId, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.RoleId, newData.Id, oldVersion)
|
||||
}, hmAdminUserRoleIdKey, hmAdminUserRoleUserIdRoleIdKey)
|
||||
}, yccAdminUserRoleIdKey, yccAdminUserRoleUserIdRoleIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -378,25 +396,25 @@ func (m *defaultAdminUserRoleModel) Trans(ctx context.Context, fn func(ctx conte
|
||||
func (m *defaultAdminUserRoleModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAdminUserRoleModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAdminUserRoleModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheHmAdminUserRoleIdPrefix, id)
|
||||
hmAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheHmAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
yccAdminUserRoleIdKey := fmt.Sprintf("%s%v", cacheYccAdminUserRoleIdPrefix, id)
|
||||
yccAdminUserRoleUserIdRoleIdKey := fmt.Sprintf("%s%v:%v", cacheYccAdminUserRoleUserIdRoleIdPrefix, data.UserId, data.RoleId)
|
||||
_, 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)
|
||||
}, hmAdminUserRoleIdKey, hmAdminUserRoleUserIdRoleIdKey)
|
||||
}, yccAdminUserRoleIdKey, yccAdminUserRoleUserIdRoleIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAdminUserRoleModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAdminUserRoleIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAdminUserRoleIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAdminUserRoleModel) 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", adminUserRoleRows, m.table)
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentCommissionFieldNames = builder.RawFieldNames(&AgentCommission{})
|
||||
agentCommissionRows = strings.Join(agentCommissionFieldNames, ",")
|
||||
agentCommissionRowsExpectAutoSet = strings.Join(stringx.Remove(agentCommissionFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentCommissionRowsExpectAutoSet = strings.Join(stringx.Remove(agentCommissionFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentCommissionRowsWithPlaceHolder = strings.Join(stringx.Remove(agentCommissionFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentCommissionIdPrefix = "cache:ycc:agentCommission:id:"
|
||||
@@ -32,7 +34,7 @@ var (
|
||||
type (
|
||||
agentCommissionModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentCommission) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentCommission, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentCommission, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentCommission) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentCommission) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -45,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentCommission, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentCommission, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentCommission, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentCommissionModel struct {
|
||||
@@ -54,10 +56,10 @@ type (
|
||||
}
|
||||
|
||||
AgentCommission struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
OrderId int64 `db:"order_id"` // 订单ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
OrderId string `db:"order_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
Amount float64 `db:"amount"` // 佣金金额
|
||||
Status int64 `db:"status"` // 状态:1=已发放,2=已冻结,3=已取消
|
||||
CreateTime time.Time `db:"create_time"` // 创建时间
|
||||
@@ -77,17 +79,34 @@ func newAgentCommissionModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgent
|
||||
|
||||
func (m *defaultAgentCommissionModel) Insert(ctx context.Context, session sqlx.Session, data *AgentCommission) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentCommissionIdKey := fmt.Sprintf("%s%v", cacheYccAgentCommissionIdPrefix, 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, agentCommissionRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentCommissionRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.OrderId, data.ProductId, data.Amount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.OrderId, data.ProductId, data.Amount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.OrderId, data.ProductId, data.Amount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.OrderId, data.ProductId, data.Amount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentCommissionIdKey)
|
||||
}
|
||||
func (m *defaultAgentCommissionModel) insertUUID(data *AgentCommission) {
|
||||
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 *defaultAgentCommissionModel) FindOne(ctx context.Context, id int64) (*AgentCommission, error) {
|
||||
func (m *defaultAgentCommissionModel) FindOne(ctx context.Context, id string) (*AgentCommission, error) {
|
||||
yccAgentCommissionIdKey := fmt.Sprintf("%s%v", cacheYccAgentCommissionIdPrefix, id)
|
||||
var resp AgentCommission
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentCommissionIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -347,7 +366,7 @@ func (m *defaultAgentCommissionModel) Trans(ctx context.Context, fn func(ctx con
|
||||
func (m *defaultAgentCommissionModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentCommissionModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentCommissionModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccAgentCommissionIdKey := fmt.Sprintf("%s%v", cacheYccAgentCommissionIdPrefix, 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)
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentConfigFieldNames = builder.RawFieldNames(&AgentConfig{})
|
||||
agentConfigRows = strings.Join(agentConfigFieldNames, ",")
|
||||
agentConfigRowsExpectAutoSet = strings.Join(stringx.Remove(agentConfigFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentConfigRowsExpectAutoSet = strings.Join(stringx.Remove(agentConfigFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentConfigRowsWithPlaceHolder = strings.Join(stringx.Remove(agentConfigFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentConfigIdPrefix = "cache:ycc:agentConfig:id:"
|
||||
@@ -33,7 +35,7 @@ var (
|
||||
type (
|
||||
agentConfigModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentConfig) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentConfig, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentConfig, error)
|
||||
FindOneByConfigKey(ctx context.Context, configKey string) (*AgentConfig, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentConfig) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentConfig) error
|
||||
@@ -47,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentConfig, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentConfig, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentConfig, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentConfigModel struct {
|
||||
@@ -56,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
AgentConfig struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
Id string `db:"id"`
|
||||
ConfigKey string `db:"config_key"` // 配置键
|
||||
ConfigValue string `db:"config_value"` // 配置值
|
||||
ConfigType string `db:"config_type"` // 配置类型:price=价格,bonus=等级加成,upgrade=升级费用,rebate=返佣,tax=税费
|
||||
@@ -78,18 +80,35 @@ func newAgentConfigModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentConf
|
||||
|
||||
func (m *defaultAgentConfigModel) Insert(ctx context.Context, session sqlx.Session, data *AgentConfig) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheYccAgentConfigConfigKeyPrefix, data.ConfigKey)
|
||||
yccAgentConfigIdKey := fmt.Sprintf("%s%v", cacheYccAgentConfigIdPrefix, 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, agentConfigRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentConfigRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.ConfigKey, data.ConfigValue, data.ConfigType, data.Description, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.ConfigKey, data.ConfigValue, data.ConfigType, data.Description, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.ConfigKey, data.ConfigValue, data.ConfigType, data.Description, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.ConfigKey, data.ConfigValue, data.ConfigType, data.Description, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentConfigConfigKeyKey, yccAgentConfigIdKey)
|
||||
}
|
||||
func (m *defaultAgentConfigModel) insertUUID(data *AgentConfig) {
|
||||
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 *defaultAgentConfigModel) FindOne(ctx context.Context, id int64) (*AgentConfig, error) {
|
||||
func (m *defaultAgentConfigModel) FindOne(ctx context.Context, id string) (*AgentConfig, error) {
|
||||
yccAgentConfigIdKey := fmt.Sprintf("%s%v", cacheYccAgentConfigIdPrefix, id)
|
||||
var resp AgentConfig
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentConfigIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -379,7 +398,7 @@ func (m *defaultAgentConfigModel) Trans(ctx context.Context, fn func(ctx context
|
||||
func (m *defaultAgentConfigModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentConfigModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentConfigModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentFreezeTaskFieldNames = builder.RawFieldNames(&AgentFreezeTask{})
|
||||
agentFreezeTaskRows = strings.Join(agentFreezeTaskFieldNames, ",")
|
||||
agentFreezeTaskRowsExpectAutoSet = strings.Join(stringx.Remove(agentFreezeTaskFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentFreezeTaskRowsExpectAutoSet = strings.Join(stringx.Remove(agentFreezeTaskFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentFreezeTaskRowsWithPlaceHolder = strings.Join(stringx.Remove(agentFreezeTaskFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentFreezeTaskIdPrefix = "cache:ycc:agentFreezeTask:id:"
|
||||
@@ -32,7 +34,7 @@ var (
|
||||
type (
|
||||
agentFreezeTaskModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentFreezeTask) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentFreezeTask, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentFreezeTask, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentFreezeTask) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentFreezeTask) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -45,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentFreezeTask, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentFreezeTask, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentFreezeTask, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentFreezeTaskModel struct {
|
||||
@@ -54,10 +56,10 @@ type (
|
||||
}
|
||||
|
||||
AgentFreezeTask struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
OrderId int64 `db:"order_id"` // 订单ID
|
||||
CommissionId int64 `db:"commission_id"` // 佣金记录ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
OrderId string `db:"order_id"`
|
||||
CommissionId string `db:"commission_id"`
|
||||
FreezeAmount float64 `db:"freeze_amount"` // 冻结金额
|
||||
OrderPrice float64 `db:"order_price"` // 订单单价
|
||||
FreezeRatio float64 `db:"freeze_ratio"` // 冻结比例(例如:0.1000表示10%)
|
||||
@@ -83,17 +85,34 @@ func newAgentFreezeTaskModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgent
|
||||
|
||||
func (m *defaultAgentFreezeTaskModel) Insert(ctx context.Context, session sqlx.Session, data *AgentFreezeTask) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentFreezeTaskIdKey := fmt.Sprintf("%s%v", cacheYccAgentFreezeTaskIdPrefix, 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, agentFreezeTaskRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentFreezeTaskRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.OrderId, data.CommissionId, data.FreezeAmount, data.OrderPrice, data.FreezeRatio, data.Status, data.FreezeTime, data.UnfreezeTime, data.ActualUnfreezeTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.OrderId, data.CommissionId, data.FreezeAmount, data.OrderPrice, data.FreezeRatio, data.Status, data.FreezeTime, data.UnfreezeTime, data.ActualUnfreezeTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.OrderId, data.CommissionId, data.FreezeAmount, data.OrderPrice, data.FreezeRatio, data.Status, data.FreezeTime, data.UnfreezeTime, data.ActualUnfreezeTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.OrderId, data.CommissionId, data.FreezeAmount, data.OrderPrice, data.FreezeRatio, data.Status, data.FreezeTime, data.UnfreezeTime, data.ActualUnfreezeTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentFreezeTaskIdKey)
|
||||
}
|
||||
func (m *defaultAgentFreezeTaskModel) insertUUID(data *AgentFreezeTask) {
|
||||
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 *defaultAgentFreezeTaskModel) FindOne(ctx context.Context, id int64) (*AgentFreezeTask, error) {
|
||||
func (m *defaultAgentFreezeTaskModel) FindOne(ctx context.Context, id string) (*AgentFreezeTask, error) {
|
||||
yccAgentFreezeTaskIdKey := fmt.Sprintf("%s%v", cacheYccAgentFreezeTaskIdPrefix, id)
|
||||
var resp AgentFreezeTask
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentFreezeTaskIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -353,7 +372,7 @@ func (m *defaultAgentFreezeTaskModel) Trans(ctx context.Context, fn func(ctx con
|
||||
func (m *defaultAgentFreezeTaskModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentFreezeTaskModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentFreezeTaskModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccAgentFreezeTaskIdKey := fmt.Sprintf("%s%v", cacheYccAgentFreezeTaskIdPrefix, 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)
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentInviteCodeFieldNames = builder.RawFieldNames(&AgentInviteCode{})
|
||||
agentInviteCodeRows = strings.Join(agentInviteCodeFieldNames, ",")
|
||||
agentInviteCodeRowsExpectAutoSet = strings.Join(stringx.Remove(agentInviteCodeFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentInviteCodeRowsExpectAutoSet = strings.Join(stringx.Remove(agentInviteCodeFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentInviteCodeRowsWithPlaceHolder = strings.Join(stringx.Remove(agentInviteCodeFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentInviteCodeIdPrefix = "cache:ycc:agentInviteCode:id:"
|
||||
@@ -33,7 +35,7 @@ var (
|
||||
type (
|
||||
agentInviteCodeModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentInviteCode) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentInviteCode, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentInviteCode, error)
|
||||
FindOneByCode(ctx context.Context, code string) (*AgentInviteCode, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentInviteCode) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentInviteCode) error
|
||||
@@ -47,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentInviteCode, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentInviteCode, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentInviteCode, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentInviteCodeModel struct {
|
||||
@@ -56,21 +58,21 @@ type (
|
||||
}
|
||||
|
||||
AgentInviteCode struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
Code string `db:"code"` // 邀请码(唯一)
|
||||
AgentId sql.NullInt64 `db:"agent_id"` // 发放代理ID(NULL表示平台发放的钻石邀请码)
|
||||
TargetLevel int64 `db:"target_level"` // 目标等级:1=普通,2=黄金,3=钻石
|
||||
Status int64 `db:"status"` // 状态:0=未使用,1=已使用,2=已失效(所有邀请码只能使用一次,使用后立即失效)
|
||||
UsedUserId sql.NullInt64 `db:"used_user_id"` // 使用用户ID
|
||||
UsedAgentId sql.NullInt64 `db:"used_agent_id"` // 使用代理ID
|
||||
UsedTime sql.NullTime `db:"used_time"` // 使用时间
|
||||
ExpireTime sql.NullTime `db:"expire_time"` // 过期时间(可选)
|
||||
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"`
|
||||
Code string `db:"code"` // 邀请码(唯一)
|
||||
AgentId sql.NullString `db:"agent_id"`
|
||||
TargetLevel int64 `db:"target_level"` // 目标等级:1=普通,2=黄金,3=钻石
|
||||
Status int64 `db:"status"` // 状态:0=未使用,1=已使用,2=已失效(所有邀请码只能使用一次,使用后立即失效)
|
||||
UsedUserId sql.NullString `db:"used_user_id"`
|
||||
UsedAgentId sql.NullString `db:"used_agent_id"`
|
||||
UsedTime sql.NullTime `db:"used_time"` // 使用时间
|
||||
ExpireTime sql.NullTime `db:"expire_time"` // 过期时间(可选)
|
||||
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"` // 版本号(乐观锁)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -83,18 +85,35 @@ func newAgentInviteCodeModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgent
|
||||
|
||||
func (m *defaultAgentInviteCodeModel) Insert(ctx context.Context, session sqlx.Session, data *AgentInviteCode) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentInviteCodeCodeKey := fmt.Sprintf("%s%v", cacheYccAgentInviteCodeCodePrefix, data.Code)
|
||||
yccAgentInviteCodeIdKey := fmt.Sprintf("%s%v", cacheYccAgentInviteCodeIdPrefix, 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, agentInviteCodeRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentInviteCodeRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.Code, data.AgentId, data.TargetLevel, data.Status, data.UsedUserId, data.UsedAgentId, data.UsedTime, data.ExpireTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.Code, data.AgentId, data.TargetLevel, data.Status, data.UsedUserId, data.UsedAgentId, data.UsedTime, data.ExpireTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.Code, data.AgentId, data.TargetLevel, data.Status, data.UsedUserId, data.UsedAgentId, data.UsedTime, data.ExpireTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.Code, data.AgentId, data.TargetLevel, data.Status, data.UsedUserId, data.UsedAgentId, data.UsedTime, data.ExpireTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentInviteCodeCodeKey, yccAgentInviteCodeIdKey)
|
||||
}
|
||||
func (m *defaultAgentInviteCodeModel) insertUUID(data *AgentInviteCode) {
|
||||
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 *defaultAgentInviteCodeModel) FindOne(ctx context.Context, id int64) (*AgentInviteCode, error) {
|
||||
func (m *defaultAgentInviteCodeModel) FindOne(ctx context.Context, id string) (*AgentInviteCode, error) {
|
||||
yccAgentInviteCodeIdKey := fmt.Sprintf("%s%v", cacheYccAgentInviteCodeIdPrefix, id)
|
||||
var resp AgentInviteCode
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentInviteCodeIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -384,7 +403,7 @@ func (m *defaultAgentInviteCodeModel) Trans(ctx context.Context, fn func(ctx con
|
||||
func (m *defaultAgentInviteCodeModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentInviteCodeModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentInviteCodeModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentInviteCodeUsageFieldNames = builder.RawFieldNames(&AgentInviteCodeUsage{})
|
||||
agentInviteCodeUsageRows = strings.Join(agentInviteCodeUsageFieldNames, ",")
|
||||
agentInviteCodeUsageRowsExpectAutoSet = strings.Join(stringx.Remove(agentInviteCodeUsageFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentInviteCodeUsageRowsExpectAutoSet = strings.Join(stringx.Remove(agentInviteCodeUsageFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentInviteCodeUsageRowsWithPlaceHolder = strings.Join(stringx.Remove(agentInviteCodeUsageFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentInviteCodeUsageIdPrefix = "cache:ycc:agentInviteCodeUsage:id:"
|
||||
@@ -32,7 +34,7 @@ var (
|
||||
type (
|
||||
agentInviteCodeUsageModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentInviteCodeUsage) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentInviteCodeUsage, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentInviteCodeUsage, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentInviteCodeUsage) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentInviteCodeUsage) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -45,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentInviteCodeUsage, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentInviteCodeUsage, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentInviteCodeUsage, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentInviteCodeUsageModel struct {
|
||||
@@ -54,18 +56,18 @@ type (
|
||||
}
|
||||
|
||||
AgentInviteCodeUsage struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
InviteCodeId int64 `db:"invite_code_id"` // 邀请码ID(关联agent_invite_code表)
|
||||
Code string `db:"code"` // 邀请码(冗余字段,便于查询)
|
||||
UserId int64 `db:"user_id"` // 使用用户ID
|
||||
AgentId int64 `db:"agent_id"` // 成为的代理ID
|
||||
AgentLevel int64 `db:"agent_level"` // 代理等级:1=普通,2=黄金,3=钻石
|
||||
UsedTime time.Time `db:"used_time"` // 使用时间
|
||||
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"`
|
||||
InviteCodeId string `db:"invite_code_id"`
|
||||
Code string `db:"code"` // 邀请码(冗余字段,便于查询)
|
||||
UserId string `db:"user_id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
AgentLevel int64 `db:"agent_level"` // 代理等级:1=普通,2=黄金,3=钻石
|
||||
UsedTime time.Time `db:"used_time"` // 使用时间
|
||||
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"` // 版本号(乐观锁)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -78,17 +80,34 @@ func newAgentInviteCodeUsageModel(conn sqlx.SqlConn, c cache.CacheConf) *default
|
||||
|
||||
func (m *defaultAgentInviteCodeUsageModel) Insert(ctx context.Context, session sqlx.Session, data *AgentInviteCodeUsage) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentInviteCodeUsageIdKey := fmt.Sprintf("%s%v", cacheYccAgentInviteCodeUsageIdPrefix, 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, agentInviteCodeUsageRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentInviteCodeUsageRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.InviteCodeId, data.Code, data.UserId, data.AgentId, data.AgentLevel, data.UsedTime, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.InviteCodeId, data.Code, data.UserId, data.AgentId, data.AgentLevel, data.UsedTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.InviteCodeId, data.Code, data.UserId, data.AgentId, data.AgentLevel, data.UsedTime, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.InviteCodeId, data.Code, data.UserId, data.AgentId, data.AgentLevel, data.UsedTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentInviteCodeUsageIdKey)
|
||||
}
|
||||
func (m *defaultAgentInviteCodeUsageModel) insertUUID(data *AgentInviteCodeUsage) {
|
||||
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 *defaultAgentInviteCodeUsageModel) FindOne(ctx context.Context, id int64) (*AgentInviteCodeUsage, error) {
|
||||
func (m *defaultAgentInviteCodeUsageModel) FindOne(ctx context.Context, id string) (*AgentInviteCodeUsage, error) {
|
||||
yccAgentInviteCodeUsageIdKey := fmt.Sprintf("%s%v", cacheYccAgentInviteCodeUsageIdPrefix, id)
|
||||
var resp AgentInviteCodeUsage
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentInviteCodeUsageIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -348,7 +367,7 @@ func (m *defaultAgentInviteCodeUsageModel) Trans(ctx context.Context, fn func(ct
|
||||
func (m *defaultAgentInviteCodeUsageModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentInviteCodeUsageModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentInviteCodeUsageModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccAgentInviteCodeUsageIdKey := fmt.Sprintf("%s%v", cacheYccAgentInviteCodeUsageIdPrefix, 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)
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentLinkFieldNames = builder.RawFieldNames(&AgentLink{})
|
||||
agentLinkRows = strings.Join(agentLinkFieldNames, ",")
|
||||
agentLinkRowsExpectAutoSet = strings.Join(stringx.Remove(agentLinkFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentLinkRowsExpectAutoSet = strings.Join(stringx.Remove(agentLinkFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentLinkRowsWithPlaceHolder = strings.Join(stringx.Remove(agentLinkFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentLinkIdPrefix = "cache:ycc:agentLink:id:"
|
||||
@@ -34,8 +36,8 @@ var (
|
||||
type (
|
||||
agentLinkModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentLink) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentLink, error)
|
||||
FindOneByAgentIdProductIdSetPriceDelState(ctx context.Context, agentId int64, productId int64, setPrice float64, delState int64) (*AgentLink, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentLink, error)
|
||||
FindOneByAgentIdProductIdSetPriceDelState(ctx context.Context, agentId string, productId string, setPrice float64, delState int64) (*AgentLink, error)
|
||||
FindOneByLinkIdentifier(ctx context.Context, linkIdentifier string) (*AgentLink, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentLink) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentLink) error
|
||||
@@ -49,7 +51,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentLink, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentLink, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentLink, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentLinkModel struct {
|
||||
@@ -58,10 +60,10 @@ type (
|
||||
}
|
||||
|
||||
AgentLink struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
UserId int64 `db:"user_id"` // 用户ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
UserId string `db:"user_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
LinkIdentifier string `db:"link_identifier"` // 推广链接标识(加密)
|
||||
SetPrice float64 `db:"set_price"` // 代理设定价格
|
||||
ActualBasePrice float64 `db:"actual_base_price"` // 实际底价(基础底价+等级加成)
|
||||
@@ -82,19 +84,36 @@ func newAgentLinkModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentLinkMo
|
||||
|
||||
func (m *defaultAgentLinkModel) Insert(ctx context.Context, session sqlx.Session, data *AgentLink) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentLinkAgentIdProductIdSetPriceDelStateKey := fmt.Sprintf("%s%v:%v:%v:%v", cacheYccAgentLinkAgentIdProductIdSetPriceDelStatePrefix, data.AgentId, data.ProductId, data.SetPrice, data.DelState)
|
||||
yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, data.Id)
|
||||
yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheYccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier)
|
||||
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, agentLinkRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentLinkRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.UserId, data.ProductId, data.LinkIdentifier, data.SetPrice, data.ActualBasePrice, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.UserId, data.ProductId, data.LinkIdentifier, data.SetPrice, data.ActualBasePrice, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.UserId, data.ProductId, data.LinkIdentifier, data.SetPrice, data.ActualBasePrice, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.UserId, data.ProductId, data.LinkIdentifier, data.SetPrice, data.ActualBasePrice, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentLinkAgentIdProductIdSetPriceDelStateKey, yccAgentLinkIdKey, yccAgentLinkLinkIdentifierKey)
|
||||
}
|
||||
func (m *defaultAgentLinkModel) insertUUID(data *AgentLink) {
|
||||
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 *defaultAgentLinkModel) FindOne(ctx context.Context, id int64) (*AgentLink, error) {
|
||||
func (m *defaultAgentLinkModel) FindOne(ctx context.Context, id string) (*AgentLink, error) {
|
||||
yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, id)
|
||||
var resp AgentLink
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentLinkIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -111,7 +130,7 @@ func (m *defaultAgentLinkModel) FindOne(ctx context.Context, id int64) (*AgentLi
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentLinkModel) FindOneByAgentIdProductIdSetPriceDelState(ctx context.Context, agentId int64, productId int64, setPrice float64, delState int64) (*AgentLink, error) {
|
||||
func (m *defaultAgentLinkModel) FindOneByAgentIdProductIdSetPriceDelState(ctx context.Context, agentId string, productId string, setPrice float64, delState int64) (*AgentLink, error) {
|
||||
yccAgentLinkAgentIdProductIdSetPriceDelStateKey := fmt.Sprintf("%s%v:%v:%v:%v", cacheYccAgentLinkAgentIdProductIdSetPriceDelStatePrefix, agentId, productId, setPrice, delState)
|
||||
var resp AgentLink
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentLinkAgentIdProductIdSetPriceDelStateKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -406,7 +425,7 @@ func (m *defaultAgentLinkModel) Trans(ctx context.Context, fn func(ctx context.C
|
||||
func (m *defaultAgentLinkModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentLinkModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentLinkModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,34 +8,37 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
agentFieldNames = builder.RawFieldNames(&Agent{})
|
||||
agentRows = strings.Join(agentFieldNames, ",")
|
||||
agentRowsExpectAutoSet = strings.Join(stringx.Remove(agentFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentRowsExpectAutoSet = strings.Join(stringx.Remove(agentFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentRowsWithPlaceHolder = strings.Join(stringx.Remove(agentFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentIdPrefix = "cache:ycc:agent:id:"
|
||||
cacheYccAgentUserIdPrefix = "cache:ycc:agent:userId:"
|
||||
cacheYccAgentIdPrefix = "cache:ycc:agent:id:"
|
||||
cacheYccAgentAgentCodePrefix = "cache:ycc:agent:agentCode:"
|
||||
cacheYccAgentUserIdPrefix = "cache:ycc:agent:userId:"
|
||||
)
|
||||
|
||||
type (
|
||||
agentModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *Agent) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Agent, error)
|
||||
FindOneByUserId(ctx context.Context, userId int64) (*Agent, error)
|
||||
FindOne(ctx context.Context, id string) (*Agent, error)
|
||||
FindOneByAgentCode(ctx context.Context, agentCode int64) (*Agent, error)
|
||||
FindOneByUserId(ctx context.Context, userId string) (*Agent, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *Agent) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *Agent) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -48,7 +51,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*Agent, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*Agent, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*Agent, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentModel struct {
|
||||
@@ -57,18 +60,20 @@ type (
|
||||
}
|
||||
|
||||
Agent struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
UserId int64 `db:"user_id"` // 用户ID
|
||||
Level int64 `db:"level"` // 代理等级:1=普通,2=黄金,3=钻石
|
||||
Region sql.NullString `db:"region"` // 区域(可选)
|
||||
Mobile string `db:"mobile"` // 手机号(加密)
|
||||
WechatId sql.NullString `db:"wechat_id"` // 微信号
|
||||
TeamLeaderId sql.NullInt64 `db:"team_leader_id"` // 团队首领ID(钻石代理的ID,普通/黄金代理指向其团队首领)
|
||||
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"`
|
||||
UserId string `db:"user_id"`
|
||||
AgentCode int64 `db:"agent_code"` // 代理编码(从16800开始递增)
|
||||
Level int64 `db:"level"` // 代理等级:1=普通,2=黄金,3=钻石
|
||||
Region sql.NullString `db:"region"` // 区域(可选)
|
||||
Mobile string `db:"mobile"` // 手机号(加密)
|
||||
WechatId sql.NullString `db:"wechat_id"` // 微信号
|
||||
TeamLeaderId sql.NullString `db:"team_leader_id"`
|
||||
InviteCodeId sql.NullString `db:"invite_code_id"`
|
||||
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"` // 版本号(乐观锁)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -81,18 +86,36 @@ func newAgentModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentModel {
|
||||
|
||||
func (m *defaultAgentModel) Insert(ctx context.Context, session sqlx.Session, data *Agent) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentAgentCodeKey := fmt.Sprintf("%s%v", cacheYccAgentAgentCodePrefix, data.AgentCode)
|
||||
yccAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentIdPrefix, data.Id)
|
||||
yccAgentUserIdKey := fmt.Sprintf("%s%v", cacheYccAgentUserIdPrefix, data.UserId)
|
||||
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, agentRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.UserId, data.Level, data.Region, data.Mobile, data.WechatId, data.TeamLeaderId, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.UserId, data.AgentCode, data.Level, data.Region, data.Mobile, data.WechatId, data.TeamLeaderId, data.InviteCodeId, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.UserId, data.Level, data.Region, data.Mobile, data.WechatId, data.TeamLeaderId, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentIdKey, yccAgentUserIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.UserId, data.AgentCode, data.Level, data.Region, data.Mobile, data.WechatId, data.TeamLeaderId, data.InviteCodeId, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentAgentCodeKey, yccAgentIdKey, yccAgentUserIdKey)
|
||||
}
|
||||
func (m *defaultAgentModel) insertUUID(data *Agent) {
|
||||
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 *defaultAgentModel) FindOne(ctx context.Context, id int64) (*Agent, error) {
|
||||
func (m *defaultAgentModel) FindOne(ctx context.Context, id string) (*Agent, error) {
|
||||
yccAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentIdPrefix, id)
|
||||
var resp Agent
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -109,7 +132,27 @@ func (m *defaultAgentModel) FindOne(ctx context.Context, id int64) (*Agent, erro
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentModel) FindOneByUserId(ctx context.Context, userId int64) (*Agent, error) {
|
||||
func (m *defaultAgentModel) FindOneByAgentCode(ctx context.Context, agentCode int64) (*Agent, error) {
|
||||
yccAgentAgentCodeKey := fmt.Sprintf("%s%v", cacheYccAgentAgentCodePrefix, agentCode)
|
||||
var resp Agent
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentAgentCodeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `agent_code` = ? and del_state = ? limit 1", agentRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, agentCode, 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 *defaultAgentModel) FindOneByUserId(ctx context.Context, userId string) (*Agent, error) {
|
||||
yccAgentUserIdKey := fmt.Sprintf("%s%v", cacheYccAgentUserIdPrefix, userId)
|
||||
var resp Agent
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentUserIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -134,15 +177,16 @@ func (m *defaultAgentModel) Update(ctx context.Context, session sqlx.Session, ne
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
yccAgentAgentCodeKey := fmt.Sprintf("%s%v", cacheYccAgentAgentCodePrefix, data.AgentCode)
|
||||
yccAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentIdPrefix, data.Id)
|
||||
yccAgentUserIdKey := fmt.Sprintf("%s%v", cacheYccAgentUserIdPrefix, data.UserId)
|
||||
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, agentRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.UserId, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
|
||||
return session.ExecCtx(ctx, query, newData.UserId, newData.AgentCode, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.InviteCodeId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.UserId, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
|
||||
}, yccAgentIdKey, yccAgentUserIdKey)
|
||||
return conn.ExecCtx(ctx, query, newData.UserId, newData.AgentCode, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.InviteCodeId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
|
||||
}, yccAgentAgentCodeKey, yccAgentIdKey, yccAgentUserIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAgentModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *Agent) error {
|
||||
@@ -157,15 +201,16 @@ func (m *defaultAgentModel) UpdateWithVersion(ctx context.Context, session sqlx.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
yccAgentAgentCodeKey := fmt.Sprintf("%s%v", cacheYccAgentAgentCodePrefix, data.AgentCode)
|
||||
yccAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentIdPrefix, data.Id)
|
||||
yccAgentUserIdKey := fmt.Sprintf("%s%v", cacheYccAgentUserIdPrefix, data.UserId)
|
||||
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, agentRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.UserId, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
|
||||
return session.ExecCtx(ctx, query, newData.UserId, newData.AgentCode, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.InviteCodeId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.UserId, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
|
||||
}, yccAgentIdKey, yccAgentUserIdKey)
|
||||
return conn.ExecCtx(ctx, query, newData.UserId, newData.AgentCode, newData.Level, newData.Region, newData.Mobile, newData.WechatId, newData.TeamLeaderId, newData.InviteCodeId, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
|
||||
}, yccAgentAgentCodeKey, yccAgentIdKey, yccAgentUserIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -382,12 +427,13 @@ func (m *defaultAgentModel) Trans(ctx context.Context, fn func(ctx context.Conte
|
||||
func (m *defaultAgentModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
yccAgentAgentCodeKey := fmt.Sprintf("%s%v", cacheYccAgentAgentCodePrefix, data.AgentCode)
|
||||
yccAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentIdPrefix, id)
|
||||
yccAgentUserIdKey := fmt.Sprintf("%s%v", cacheYccAgentUserIdPrefix, data.UserId)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
@@ -396,7 +442,7 @@ func (m *defaultAgentModel) Delete(ctx context.Context, session sqlx.Session, id
|
||||
return session.ExecCtx(ctx, query, id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, id)
|
||||
}, yccAgentIdKey, yccAgentUserIdKey)
|
||||
}, yccAgentAgentCodeKey, yccAgentIdKey, yccAgentUserIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAgentModel) formatPrimary(primary interface{}) string {
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentOrderFieldNames = builder.RawFieldNames(&AgentOrder{})
|
||||
agentOrderRows = strings.Join(agentOrderFieldNames, ",")
|
||||
agentOrderRowsExpectAutoSet = strings.Join(stringx.Remove(agentOrderFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentOrderRowsExpectAutoSet = strings.Join(stringx.Remove(agentOrderFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentOrderRowsWithPlaceHolder = strings.Join(stringx.Remove(agentOrderFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentOrderIdPrefix = "cache:ycc:agentOrder:id:"
|
||||
@@ -33,8 +35,8 @@ var (
|
||||
type (
|
||||
agentOrderModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentOrder) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentOrder, error)
|
||||
FindOneByOrderId(ctx context.Context, orderId int64) (*AgentOrder, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentOrder, error)
|
||||
FindOneByOrderId(ctx context.Context, orderId string) (*AgentOrder, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentOrder) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentOrder) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -47,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentOrder, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentOrder, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentOrder, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentOrderModel struct {
|
||||
@@ -56,10 +58,10 @@ type (
|
||||
}
|
||||
|
||||
AgentOrder struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
OrderId int64 `db:"order_id"` // 订单ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
OrderId string `db:"order_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
OrderAmount float64 `db:"order_amount"` // 订单金额(用户实际支付金额,冗余字段)
|
||||
SetPrice float64 `db:"set_price"` // 代理设定价格
|
||||
ActualBasePrice float64 `db:"actual_base_price"` // 实际底价(基础底价+等级加成)
|
||||
@@ -85,18 +87,35 @@ func newAgentOrderModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentOrder
|
||||
|
||||
func (m *defaultAgentOrderModel) Insert(ctx context.Context, session sqlx.Session, data *AgentOrder) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentOrderIdKey := fmt.Sprintf("%s%v", cacheYccAgentOrderIdPrefix, data.Id)
|
||||
yccAgentOrderOrderIdKey := fmt.Sprintf("%s%v", cacheYccAgentOrderOrderIdPrefix, data.OrderId)
|
||||
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, agentOrderRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentOrderRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.OrderId, data.ProductId, data.OrderAmount, data.SetPrice, data.ActualBasePrice, data.PriceCost, data.AgentProfit, data.ProcessStatus, data.ProcessTime, data.ProcessRemark, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.OrderId, data.ProductId, data.OrderAmount, data.SetPrice, data.ActualBasePrice, data.PriceCost, data.AgentProfit, data.ProcessStatus, data.ProcessTime, data.ProcessRemark, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.OrderId, data.ProductId, data.OrderAmount, data.SetPrice, data.ActualBasePrice, data.PriceCost, data.AgentProfit, data.ProcessStatus, data.ProcessTime, data.ProcessRemark, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.OrderId, data.ProductId, data.OrderAmount, data.SetPrice, data.ActualBasePrice, data.PriceCost, data.AgentProfit, data.ProcessStatus, data.ProcessTime, data.ProcessRemark, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentOrderIdKey, yccAgentOrderOrderIdKey)
|
||||
}
|
||||
func (m *defaultAgentOrderModel) insertUUID(data *AgentOrder) {
|
||||
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 *defaultAgentOrderModel) FindOne(ctx context.Context, id int64) (*AgentOrder, error) {
|
||||
func (m *defaultAgentOrderModel) FindOne(ctx context.Context, id string) (*AgentOrder, error) {
|
||||
yccAgentOrderIdKey := fmt.Sprintf("%s%v", cacheYccAgentOrderIdPrefix, id)
|
||||
var resp AgentOrder
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentOrderIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -113,7 +132,7 @@ func (m *defaultAgentOrderModel) FindOne(ctx context.Context, id int64) (*AgentO
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentOrderModel) FindOneByOrderId(ctx context.Context, orderId int64) (*AgentOrder, error) {
|
||||
func (m *defaultAgentOrderModel) FindOneByOrderId(ctx context.Context, orderId string) (*AgentOrder, error) {
|
||||
yccAgentOrderOrderIdKey := fmt.Sprintf("%s%v", cacheYccAgentOrderOrderIdPrefix, orderId)
|
||||
var resp AgentOrder
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentOrderOrderIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -386,7 +405,7 @@ func (m *defaultAgentOrderModel) Trans(ctx context.Context, fn func(ctx context.
|
||||
func (m *defaultAgentOrderModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentOrderModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentOrderModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,22 +8,25 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
agentProductConfigFieldNames = builder.RawFieldNames(&AgentProductConfig{})
|
||||
agentProductConfigRows = strings.Join(agentProductConfigFieldNames, ",")
|
||||
agentProductConfigRowsExpectAutoSet = strings.Join(stringx.Remove(agentProductConfigFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentProductConfigRowsExpectAutoSet = strings.Join(stringx.Remove(agentProductConfigFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentProductConfigRowsWithPlaceHolder = strings.Join(stringx.Remove(agentProductConfigFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentProductConfigIdPrefix = "cache:ycc:agentProductConfig:id:"
|
||||
@@ -33,8 +36,8 @@ var (
|
||||
type (
|
||||
agentProductConfigModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentProductConfig) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentProductConfig, error)
|
||||
FindOneByProductId(ctx context.Context, productId int64) (*AgentProductConfig, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentProductConfig, error)
|
||||
FindOneByProductId(ctx context.Context, productId string) (*AgentProductConfig, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentProductConfig) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentProductConfig) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -47,7 +50,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentProductConfig, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentProductConfig, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentProductConfig, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentProductConfigModel struct {
|
||||
@@ -56,8 +59,8 @@ type (
|
||||
}
|
||||
|
||||
AgentProductConfig struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID
|
||||
Id string `db:"id"`
|
||||
ProductId string `db:"product_id"`
|
||||
BasePrice float64 `db:"base_price"` // 基础底价(BasePrice)
|
||||
SystemMaxPrice float64 `db:"system_max_price"` // 系统价格上限(SystemMaxPrice)
|
||||
PriceThreshold sql.NullFloat64 `db:"price_threshold"` // 提价标准阈值(PriceThreshold)
|
||||
@@ -79,18 +82,35 @@ func newAgentProductConfigModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAg
|
||||
|
||||
func (m *defaultAgentProductConfigModel) Insert(ctx context.Context, session sqlx.Session, data *AgentProductConfig) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentProductConfigIdKey := fmt.Sprintf("%s%v", cacheYccAgentProductConfigIdPrefix, data.Id)
|
||||
yccAgentProductConfigProductIdKey := fmt.Sprintf("%s%v", cacheYccAgentProductConfigProductIdPrefix, data.ProductId)
|
||||
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, agentProductConfigRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentProductConfigRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.ProductId, data.BasePrice, data.SystemMaxPrice, data.PriceThreshold, data.PriceFeeRate, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.ProductId, data.BasePrice, data.SystemMaxPrice, data.PriceThreshold, data.PriceFeeRate, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.ProductId, data.BasePrice, data.SystemMaxPrice, data.PriceThreshold, data.PriceFeeRate, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.ProductId, data.BasePrice, data.SystemMaxPrice, data.PriceThreshold, data.PriceFeeRate, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentProductConfigIdKey, yccAgentProductConfigProductIdKey)
|
||||
}
|
||||
func (m *defaultAgentProductConfigModel) insertUUID(data *AgentProductConfig) {
|
||||
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 *defaultAgentProductConfigModel) FindOne(ctx context.Context, id int64) (*AgentProductConfig, error) {
|
||||
func (m *defaultAgentProductConfigModel) FindOne(ctx context.Context, id string) (*AgentProductConfig, error) {
|
||||
yccAgentProductConfigIdKey := fmt.Sprintf("%s%v", cacheYccAgentProductConfigIdPrefix, id)
|
||||
var resp AgentProductConfig
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentProductConfigIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -107,7 +127,7 @@ func (m *defaultAgentProductConfigModel) FindOne(ctx context.Context, id int64)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentProductConfigModel) FindOneByProductId(ctx context.Context, productId int64) (*AgentProductConfig, error) {
|
||||
func (m *defaultAgentProductConfigModel) FindOneByProductId(ctx context.Context, productId string) (*AgentProductConfig, error) {
|
||||
yccAgentProductConfigProductIdKey := fmt.Sprintf("%s%v", cacheYccAgentProductConfigProductIdPrefix, productId)
|
||||
var resp AgentProductConfig
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentProductConfigProductIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -380,7 +400,7 @@ func (m *defaultAgentProductConfigModel) Trans(ctx context.Context, fn func(ctx
|
||||
func (m *defaultAgentProductConfigModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentProductConfigModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentProductConfigModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentRealNameFieldNames = builder.RawFieldNames(&AgentRealName{})
|
||||
agentRealNameRows = strings.Join(agentRealNameFieldNames, ",")
|
||||
agentRealNameRowsExpectAutoSet = strings.Join(stringx.Remove(agentRealNameFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentRealNameRowsExpectAutoSet = strings.Join(stringx.Remove(agentRealNameFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentRealNameRowsWithPlaceHolder = strings.Join(stringx.Remove(agentRealNameFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentRealNameIdPrefix = "cache:ycc:agentRealName:id:"
|
||||
@@ -33,8 +35,8 @@ var (
|
||||
type (
|
||||
agentRealNameModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentRealName) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentRealName, error)
|
||||
FindOneByAgentId(ctx context.Context, agentId int64) (*AgentRealName, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentRealName, error)
|
||||
FindOneByAgentId(ctx context.Context, agentId string) (*AgentRealName, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentRealName) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentRealName) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -47,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentRealName, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentRealName, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentRealName, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentRealNameModel struct {
|
||||
@@ -56,8 +58,8 @@ type (
|
||||
}
|
||||
|
||||
AgentRealName struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
Name string `db:"name"` // 真实姓名
|
||||
IdCard string `db:"id_card"` // 身份证号(加密)
|
||||
Mobile string `db:"mobile"` // 手机号(加密)
|
||||
@@ -79,18 +81,35 @@ func newAgentRealNameModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentRe
|
||||
|
||||
func (m *defaultAgentRealNameModel) Insert(ctx context.Context, session sqlx.Session, data *AgentRealName) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentRealNameAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentRealNameAgentIdPrefix, data.AgentId)
|
||||
yccAgentRealNameIdKey := fmt.Sprintf("%s%v", cacheYccAgentRealNameIdPrefix, 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, agentRealNameRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentRealNameRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.Name, data.IdCard, data.Mobile, data.VerifyTime, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.Name, data.IdCard, data.Mobile, data.VerifyTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.Name, data.IdCard, data.Mobile, data.VerifyTime, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.Name, data.IdCard, data.Mobile, data.VerifyTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentRealNameAgentIdKey, yccAgentRealNameIdKey)
|
||||
}
|
||||
func (m *defaultAgentRealNameModel) insertUUID(data *AgentRealName) {
|
||||
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 *defaultAgentRealNameModel) FindOne(ctx context.Context, id int64) (*AgentRealName, error) {
|
||||
func (m *defaultAgentRealNameModel) FindOne(ctx context.Context, id string) (*AgentRealName, error) {
|
||||
yccAgentRealNameIdKey := fmt.Sprintf("%s%v", cacheYccAgentRealNameIdPrefix, id)
|
||||
var resp AgentRealName
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentRealNameIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -107,7 +126,7 @@ func (m *defaultAgentRealNameModel) FindOne(ctx context.Context, id int64) (*Age
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentRealNameModel) FindOneByAgentId(ctx context.Context, agentId int64) (*AgentRealName, error) {
|
||||
func (m *defaultAgentRealNameModel) FindOneByAgentId(ctx context.Context, agentId string) (*AgentRealName, error) {
|
||||
yccAgentRealNameAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentRealNameAgentIdPrefix, agentId)
|
||||
var resp AgentRealName
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentRealNameAgentIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -380,7 +399,7 @@ func (m *defaultAgentRealNameModel) Trans(ctx context.Context, fn func(ctx conte
|
||||
func (m *defaultAgentRealNameModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentRealNameModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentRealNameModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentRebateFieldNames = builder.RawFieldNames(&AgentRebate{})
|
||||
agentRebateRows = strings.Join(agentRebateFieldNames, ",")
|
||||
agentRebateRowsExpectAutoSet = strings.Join(stringx.Remove(agentRebateFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentRebateRowsExpectAutoSet = strings.Join(stringx.Remove(agentRebateFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentRebateRowsWithPlaceHolder = strings.Join(stringx.Remove(agentRebateFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentRebateIdPrefix = "cache:ycc:agentRebate:id:"
|
||||
@@ -32,7 +34,7 @@ var (
|
||||
type (
|
||||
agentRebateModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentRebate) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentRebate, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentRebate, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentRebate) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentRebate) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -45,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentRebate, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentRebate, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentRebate, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentRebateModel struct {
|
||||
@@ -54,20 +56,20 @@ type (
|
||||
}
|
||||
|
||||
AgentRebate struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 获得返佣的代理ID
|
||||
SourceAgentId int64 `db:"source_agent_id"` // 来源代理ID(推广订单的代理)
|
||||
OrderId int64 `db:"order_id"` // 订单ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID
|
||||
RebateType int64 `db:"rebate_type"` // 返佣类型:1=直接上级返佣,2=钻石上级返佣,3=黄金上级返佣
|
||||
LevelBonus float64 `db:"level_bonus"` // 等级加成金额(来源代理的等级加成)
|
||||
RebateAmount float64 `db:"rebate_amount"` // 返佣金额
|
||||
Status int64 `db:"status"` // 状态:1=已发放,2=已冻结,3=已取消
|
||||
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"`
|
||||
SourceAgentId string `db:"source_agent_id"`
|
||||
OrderId string `db:"order_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
RebateType int64 `db:"rebate_type"` // 返佣类型:1=直接上级返佣,2=钻石上级返佣,3=黄金上级返佣
|
||||
LevelBonus float64 `db:"level_bonus"` // 等级加成金额(来源代理的等级加成)
|
||||
RebateAmount float64 `db:"rebate_amount"` // 返佣金额
|
||||
Status int64 `db:"status"` // 状态:1=已发放,2=已冻结,3=已取消
|
||||
CreateTime time.Time `db:"create_time"` // 创建时间
|
||||
UpdateTime time.Time `db:"update_time"` // 更新时间
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
DelState int64 `db:"del_state"` // 删除状态:0=未删除,1=已删除
|
||||
Version int64 `db:"version"` // 版本号(乐观锁)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -80,17 +82,34 @@ func newAgentRebateModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentReba
|
||||
|
||||
func (m *defaultAgentRebateModel) Insert(ctx context.Context, session sqlx.Session, data *AgentRebate) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentRebateIdKey := fmt.Sprintf("%s%v", cacheYccAgentRebateIdPrefix, 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, agentRebateRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentRebateRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.SourceAgentId, data.OrderId, data.ProductId, data.RebateType, data.LevelBonus, data.RebateAmount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.SourceAgentId, data.OrderId, data.ProductId, data.RebateType, data.LevelBonus, data.RebateAmount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.SourceAgentId, data.OrderId, data.ProductId, data.RebateType, data.LevelBonus, data.RebateAmount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.SourceAgentId, data.OrderId, data.ProductId, data.RebateType, data.LevelBonus, data.RebateAmount, data.Status, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentRebateIdKey)
|
||||
}
|
||||
func (m *defaultAgentRebateModel) insertUUID(data *AgentRebate) {
|
||||
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 *defaultAgentRebateModel) FindOne(ctx context.Context, id int64) (*AgentRebate, error) {
|
||||
func (m *defaultAgentRebateModel) FindOne(ctx context.Context, id string) (*AgentRebate, error) {
|
||||
yccAgentRebateIdKey := fmt.Sprintf("%s%v", cacheYccAgentRebateIdPrefix, id)
|
||||
var resp AgentRebate
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentRebateIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -350,7 +369,7 @@ func (m *defaultAgentRebateModel) Trans(ctx context.Context, fn func(ctx context
|
||||
func (m *defaultAgentRebateModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentRebateModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentRebateModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccAgentRebateIdKey := fmt.Sprintf("%s%v", cacheYccAgentRebateIdPrefix, 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)
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentRelationFieldNames = builder.RawFieldNames(&AgentRelation{})
|
||||
agentRelationRows = strings.Join(agentRelationFieldNames, ",")
|
||||
agentRelationRowsExpectAutoSet = strings.Join(stringx.Remove(agentRelationFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentRelationRowsExpectAutoSet = strings.Join(stringx.Remove(agentRelationFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentRelationRowsWithPlaceHolder = strings.Join(stringx.Remove(agentRelationFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentRelationIdPrefix = "cache:ycc:agentRelation:id:"
|
||||
@@ -33,8 +35,8 @@ var (
|
||||
type (
|
||||
agentRelationModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentRelation) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentRelation, error)
|
||||
FindOneByParentIdChildIdRelationType(ctx context.Context, parentId int64, childId int64, relationType int64) (*AgentRelation, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentRelation, error)
|
||||
FindOneByParentIdChildIdRelationType(ctx context.Context, parentId string, childId string, relationType int64) (*AgentRelation, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentRelation) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentRelation) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -47,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentRelation, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentRelation, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentRelation, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentRelationModel struct {
|
||||
@@ -56,9 +58,9 @@ type (
|
||||
}
|
||||
|
||||
AgentRelation struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
ParentId int64 `db:"parent_id"` // 上级代理ID
|
||||
ChildId int64 `db:"child_id"` // 下级代理ID
|
||||
Id string `db:"id"`
|
||||
ParentId string `db:"parent_id"`
|
||||
ChildId string `db:"child_id"`
|
||||
RelationType int64 `db:"relation_type"` // 关系类型:1=直接关系,2=已脱离(历史记录)
|
||||
DetachReason sql.NullString `db:"detach_reason"` // 脱离原因:upgrade=升级脱离
|
||||
DetachTime sql.NullTime `db:"detach_time"` // 脱离时间
|
||||
@@ -79,18 +81,35 @@ func newAgentRelationModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentRe
|
||||
|
||||
func (m *defaultAgentRelationModel) Insert(ctx context.Context, session sqlx.Session, data *AgentRelation) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentRelationIdKey := fmt.Sprintf("%s%v", cacheYccAgentRelationIdPrefix, data.Id)
|
||||
yccAgentRelationParentIdChildIdRelationTypeKey := fmt.Sprintf("%s%v:%v:%v", cacheYccAgentRelationParentIdChildIdRelationTypePrefix, data.ParentId, data.ChildId, data.RelationType)
|
||||
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, agentRelationRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentRelationRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.ParentId, data.ChildId, data.RelationType, data.DetachReason, data.DetachTime, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.ParentId, data.ChildId, data.RelationType, data.DetachReason, data.DetachTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.ParentId, data.ChildId, data.RelationType, data.DetachReason, data.DetachTime, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.ParentId, data.ChildId, data.RelationType, data.DetachReason, data.DetachTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentRelationIdKey, yccAgentRelationParentIdChildIdRelationTypeKey)
|
||||
}
|
||||
func (m *defaultAgentRelationModel) insertUUID(data *AgentRelation) {
|
||||
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 *defaultAgentRelationModel) FindOne(ctx context.Context, id int64) (*AgentRelation, error) {
|
||||
func (m *defaultAgentRelationModel) FindOne(ctx context.Context, id string) (*AgentRelation, error) {
|
||||
yccAgentRelationIdKey := fmt.Sprintf("%s%v", cacheYccAgentRelationIdPrefix, id)
|
||||
var resp AgentRelation
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentRelationIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -107,7 +126,7 @@ func (m *defaultAgentRelationModel) FindOne(ctx context.Context, id int64) (*Age
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentRelationModel) FindOneByParentIdChildIdRelationType(ctx context.Context, parentId int64, childId int64, relationType int64) (*AgentRelation, error) {
|
||||
func (m *defaultAgentRelationModel) FindOneByParentIdChildIdRelationType(ctx context.Context, parentId string, childId string, relationType int64) (*AgentRelation, error) {
|
||||
yccAgentRelationParentIdChildIdRelationTypeKey := fmt.Sprintf("%s%v:%v:%v", cacheYccAgentRelationParentIdChildIdRelationTypePrefix, parentId, childId, relationType)
|
||||
var resp AgentRelation
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentRelationParentIdChildIdRelationTypeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -380,7 +399,7 @@ func (m *defaultAgentRelationModel) Trans(ctx context.Context, fn func(ctx conte
|
||||
func (m *defaultAgentRelationModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentRelationModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentRelationModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
@@ -12,6 +16,7 @@ type (
|
||||
// and implement the added methods in customAgentShortLinkModel.
|
||||
AgentShortLinkModel interface {
|
||||
agentShortLinkModel
|
||||
FindOneByInviteCodeTypeDelState(ctx context.Context, inviteCode sql.NullString, tp int64, delState int64) (*AgentShortLink, error)
|
||||
}
|
||||
|
||||
customAgentShortLinkModel struct {
|
||||
@@ -25,3 +30,17 @@ func NewAgentShortLinkModel(conn sqlx.SqlConn, c cache.CacheConf) AgentShortLink
|
||||
defaultAgentShortLinkModel: newAgentShortLinkModel(conn, c),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *customAgentShortLinkModel) FindOneByInviteCodeTypeDelState(ctx context.Context, inviteCode sql.NullString, tp int64, delState int64) (*AgentShortLink, error) {
|
||||
builder := m.SelectBuilder().
|
||||
Where("invite_code = ? AND type = ? AND del_state = ?", inviteCode, tp, delState).
|
||||
Limit(1)
|
||||
rows, err := m.FindAll(ctx, builder, "")
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "query short link by invite_code failed")
|
||||
}
|
||||
if len(rows) == 0 {
|
||||
return nil, ErrNotFound
|
||||
}
|
||||
return rows[0], nil
|
||||
}
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentShortLinkFieldNames = builder.RawFieldNames(&AgentShortLink{})
|
||||
agentShortLinkRows = strings.Join(agentShortLinkFieldNames, ",")
|
||||
agentShortLinkRowsExpectAutoSet = strings.Join(stringx.Remove(agentShortLinkFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentShortLinkRowsExpectAutoSet = strings.Join(stringx.Remove(agentShortLinkFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentShortLinkRowsWithPlaceHolder = strings.Join(stringx.Remove(agentShortLinkFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentShortLinkIdPrefix = "cache:ycc:agentShortLink:id:"
|
||||
@@ -35,9 +37,9 @@ var (
|
||||
type (
|
||||
agentShortLinkModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentShortLink) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentShortLink, error)
|
||||
FindOneByInviteCodeIdTypeDelState(ctx context.Context, inviteCodeId sql.NullInt64, tp int64, delState int64) (*AgentShortLink, error)
|
||||
FindOneByLinkIdTypeDelState(ctx context.Context, linkId sql.NullInt64, tp int64, delState int64) (*AgentShortLink, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentShortLink, error)
|
||||
FindOneByInviteCodeIdTypeDelState(ctx context.Context, inviteCodeId sql.NullString, tp int64, delState int64) (*AgentShortLink, error)
|
||||
FindOneByLinkIdTypeDelState(ctx context.Context, linkId sql.NullString, tp int64, delState int64) (*AgentShortLink, error)
|
||||
FindOneByShortCodeDelState(ctx context.Context, shortCode string, delState int64) (*AgentShortLink, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentShortLink) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentShortLink) error
|
||||
@@ -51,7 +53,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentShortLink, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentShortLink, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentShortLink, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentShortLinkModel struct {
|
||||
@@ -60,10 +62,10 @@ type (
|
||||
}
|
||||
|
||||
AgentShortLink struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
Type int64 `db:"type"` // 类型:1=推广报告(promotion),2=邀请好友(invite)
|
||||
LinkId sql.NullInt64 `db:"link_id"` // 推广链接ID(关联agent_link表,仅推广报告类型使用)
|
||||
InviteCodeId sql.NullInt64 `db:"invite_code_id"` // 邀请码ID(关联agent_invite_code表,仅邀请好友类型使用)
|
||||
Id string `db:"id"`
|
||||
Type int64 `db:"type"` // 类型:1=推广报告(promotion),2=邀请好友(invite)
|
||||
LinkId sql.NullString `db:"link_id"`
|
||||
InviteCodeId sql.NullString `db:"invite_code_id"`
|
||||
LinkIdentifier sql.NullString `db:"link_identifier"` // 推广链接标识(加密,仅推广报告类型使用)
|
||||
InviteCode sql.NullString `db:"invite_code"` // 邀请码(仅邀请好友类型使用)
|
||||
ShortCode string `db:"short_code"` // 短链标识(6位随机字符串)
|
||||
@@ -86,20 +88,37 @@ func newAgentShortLinkModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentS
|
||||
|
||||
func (m *defaultAgentShortLinkModel) Insert(ctx context.Context, session sqlx.Session, data *AgentShortLink) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentShortLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentShortLinkIdPrefix, data.Id)
|
||||
yccAgentShortLinkInviteCodeIdTypeDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccAgentShortLinkInviteCodeIdTypeDelStatePrefix, data.InviteCodeId, data.Type, data.DelState)
|
||||
yccAgentShortLinkLinkIdTypeDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccAgentShortLinkLinkIdTypeDelStatePrefix, data.LinkId, data.Type, data.DelState)
|
||||
yccAgentShortLinkShortCodeDelStateKey := fmt.Sprintf("%s%v:%v", cacheYccAgentShortLinkShortCodeDelStatePrefix, data.ShortCode, data.DelState)
|
||||
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, agentShortLinkRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentShortLinkRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.Type, data.LinkId, data.InviteCodeId, data.LinkIdentifier, data.InviteCode, data.ShortCode, data.TargetPath, data.PromotionDomain, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.Type, data.LinkId, data.InviteCodeId, data.LinkIdentifier, data.InviteCode, data.ShortCode, data.TargetPath, data.PromotionDomain, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.Type, data.LinkId, data.InviteCodeId, data.LinkIdentifier, data.InviteCode, data.ShortCode, data.TargetPath, data.PromotionDomain, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.Type, data.LinkId, data.InviteCodeId, data.LinkIdentifier, data.InviteCode, data.ShortCode, data.TargetPath, data.PromotionDomain, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentShortLinkIdKey, yccAgentShortLinkInviteCodeIdTypeDelStateKey, yccAgentShortLinkLinkIdTypeDelStateKey, yccAgentShortLinkShortCodeDelStateKey)
|
||||
}
|
||||
func (m *defaultAgentShortLinkModel) insertUUID(data *AgentShortLink) {
|
||||
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 *defaultAgentShortLinkModel) FindOne(ctx context.Context, id int64) (*AgentShortLink, error) {
|
||||
func (m *defaultAgentShortLinkModel) FindOne(ctx context.Context, id string) (*AgentShortLink, error) {
|
||||
yccAgentShortLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentShortLinkIdPrefix, id)
|
||||
var resp AgentShortLink
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentShortLinkIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -116,7 +135,7 @@ func (m *defaultAgentShortLinkModel) FindOne(ctx context.Context, id int64) (*Ag
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentShortLinkModel) FindOneByInviteCodeIdTypeDelState(ctx context.Context, inviteCodeId sql.NullInt64, tp int64, delState int64) (*AgentShortLink, error) {
|
||||
func (m *defaultAgentShortLinkModel) FindOneByInviteCodeIdTypeDelState(ctx context.Context, inviteCodeId sql.NullString, tp int64, delState int64) (*AgentShortLink, error) {
|
||||
yccAgentShortLinkInviteCodeIdTypeDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccAgentShortLinkInviteCodeIdTypeDelStatePrefix, inviteCodeId, tp, delState)
|
||||
var resp AgentShortLink
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentShortLinkInviteCodeIdTypeDelStateKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -136,7 +155,7 @@ func (m *defaultAgentShortLinkModel) FindOneByInviteCodeIdTypeDelState(ctx conte
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentShortLinkModel) FindOneByLinkIdTypeDelState(ctx context.Context, linkId sql.NullInt64, tp int64, delState int64) (*AgentShortLink, error) {
|
||||
func (m *defaultAgentShortLinkModel) FindOneByLinkIdTypeDelState(ctx context.Context, linkId sql.NullString, tp int64, delState int64) (*AgentShortLink, error) {
|
||||
yccAgentShortLinkLinkIdTypeDelStateKey := fmt.Sprintf("%s%v:%v:%v", cacheYccAgentShortLinkLinkIdTypeDelStatePrefix, linkId, tp, delState)
|
||||
var resp AgentShortLink
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentShortLinkLinkIdTypeDelStateKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -433,7 +452,7 @@ func (m *defaultAgentShortLinkModel) Trans(ctx context.Context, fn func(ctx cont
|
||||
func (m *defaultAgentShortLinkModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentShortLinkModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentShortLinkModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentUpgradeFieldNames = builder.RawFieldNames(&AgentUpgrade{})
|
||||
agentUpgradeRows = strings.Join(agentUpgradeFieldNames, ",")
|
||||
agentUpgradeRowsExpectAutoSet = strings.Join(stringx.Remove(agentUpgradeFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentUpgradeRowsExpectAutoSet = strings.Join(stringx.Remove(agentUpgradeFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentUpgradeRowsWithPlaceHolder = strings.Join(stringx.Remove(agentUpgradeFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentUpgradeIdPrefix = "cache:ycc:agentUpgrade:id:"
|
||||
@@ -32,7 +34,7 @@ var (
|
||||
type (
|
||||
agentUpgradeModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentUpgrade) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentUpgrade, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentUpgrade, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentUpgrade) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentUpgrade) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -45,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentUpgrade, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentUpgrade, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentUpgrade, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentUpgradeModel struct {
|
||||
@@ -54,23 +56,23 @@ type (
|
||||
}
|
||||
|
||||
AgentUpgrade struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 被升级的代理ID
|
||||
FromLevel int64 `db:"from_level"` // 原等级:1=普通,2=黄金,3=钻石
|
||||
ToLevel int64 `db:"to_level"` // 目标等级:1=普通,2=黄金,3=钻石
|
||||
UpgradeType int64 `db:"upgrade_type"` // 升级类型:1=自主付费,2=钻石升级下级
|
||||
UpgradeFee float64 `db:"upgrade_fee"` // 升级费用
|
||||
RebateAmount float64 `db:"rebate_amount"` // 返佣金额(给原直接上级)
|
||||
RebateAgentId sql.NullInt64 `db:"rebate_agent_id"` // 返佣代理ID(原直接上级)
|
||||
OperatorAgentId sql.NullInt64 `db:"operator_agent_id"` // 操作代理ID(如果是钻石升级下级,记录操作者)
|
||||
OrderNo sql.NullString `db:"order_no"` // 支付订单号(如果是自主付费)
|
||||
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"`
|
||||
FromLevel int64 `db:"from_level"` // 原等级:1=普通,2=黄金,3=钻石
|
||||
ToLevel int64 `db:"to_level"` // 目标等级:1=普通,2=黄金,3=钻石
|
||||
UpgradeType int64 `db:"upgrade_type"` // 升级类型:1=自主付费,2=钻石升级下级
|
||||
UpgradeFee float64 `db:"upgrade_fee"` // 升级费用
|
||||
RebateAmount float64 `db:"rebate_amount"` // 返佣金额(给原直接上级)
|
||||
RebateAgentId sql.NullString `db:"rebate_agent_id"`
|
||||
OperatorAgentId sql.NullString `db:"operator_agent_id"`
|
||||
OrderNo sql.NullString `db:"order_no"` // 支付订单号(如果是自主付费)
|
||||
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"` // 版本号(乐观锁)
|
||||
}
|
||||
)
|
||||
|
||||
@@ -83,17 +85,34 @@ func newAgentUpgradeModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentUpg
|
||||
|
||||
func (m *defaultAgentUpgradeModel) Insert(ctx context.Context, session sqlx.Session, data *AgentUpgrade) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentUpgradeIdKey := fmt.Sprintf("%s%v", cacheYccAgentUpgradeIdPrefix, 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, agentUpgradeRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentUpgradeRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.FromLevel, data.ToLevel, data.UpgradeType, data.UpgradeFee, data.RebateAmount, data.RebateAgentId, data.OperatorAgentId, data.OrderNo, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.FromLevel, data.ToLevel, data.UpgradeType, data.UpgradeFee, data.RebateAmount, data.RebateAgentId, data.OperatorAgentId, data.OrderNo, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.FromLevel, data.ToLevel, data.UpgradeType, data.UpgradeFee, data.RebateAmount, data.RebateAgentId, data.OperatorAgentId, data.OrderNo, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.FromLevel, data.ToLevel, data.UpgradeType, data.UpgradeFee, data.RebateAmount, data.RebateAgentId, data.OperatorAgentId, data.OrderNo, data.Status, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentUpgradeIdKey)
|
||||
}
|
||||
func (m *defaultAgentUpgradeModel) insertUUID(data *AgentUpgrade) {
|
||||
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 *defaultAgentUpgradeModel) FindOne(ctx context.Context, id int64) (*AgentUpgrade, error) {
|
||||
func (m *defaultAgentUpgradeModel) FindOne(ctx context.Context, id string) (*AgentUpgrade, error) {
|
||||
yccAgentUpgradeIdKey := fmt.Sprintf("%s%v", cacheYccAgentUpgradeIdPrefix, id)
|
||||
var resp AgentUpgrade
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentUpgradeIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -353,7 +372,7 @@ func (m *defaultAgentUpgradeModel) Trans(ctx context.Context, fn func(ctx contex
|
||||
func (m *defaultAgentUpgradeModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentUpgradeModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentUpgradeModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccAgentUpgradeIdKey := fmt.Sprintf("%s%v", cacheYccAgentUpgradeIdPrefix, 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)
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentWalletFieldNames = builder.RawFieldNames(&AgentWallet{})
|
||||
agentWalletRows = strings.Join(agentWalletFieldNames, ",")
|
||||
agentWalletRowsExpectAutoSet = strings.Join(stringx.Remove(agentWalletFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentWalletRowsExpectAutoSet = strings.Join(stringx.Remove(agentWalletFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentWalletRowsWithPlaceHolder = strings.Join(stringx.Remove(agentWalletFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentWalletIdPrefix = "cache:ycc:agentWallet:id:"
|
||||
@@ -33,8 +35,8 @@ var (
|
||||
type (
|
||||
agentWalletModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentWallet) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentWallet, error)
|
||||
FindOneByAgentId(ctx context.Context, agentId int64) (*AgentWallet, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentWallet, error)
|
||||
FindOneByAgentId(ctx context.Context, agentId string) (*AgentWallet, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentWallet) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentWallet) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -47,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentWallet, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentWallet, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentWallet, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentWalletModel struct {
|
||||
@@ -56,8 +58,8 @@ type (
|
||||
}
|
||||
|
||||
AgentWallet struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
Balance float64 `db:"balance"` // 可用余额
|
||||
FrozenBalance float64 `db:"frozen_balance"` // 冻结余额
|
||||
TotalEarnings float64 `db:"total_earnings"` // 累计收益
|
||||
@@ -79,18 +81,35 @@ func newAgentWalletModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentWall
|
||||
|
||||
func (m *defaultAgentWalletModel) Insert(ctx context.Context, session sqlx.Session, data *AgentWallet) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentWalletAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentWalletAgentIdPrefix, data.AgentId)
|
||||
yccAgentWalletIdKey := fmt.Sprintf("%s%v", cacheYccAgentWalletIdPrefix, 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, agentWalletRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentWalletRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.Balance, data.FrozenBalance, data.TotalEarnings, data.WithdrawnAmount, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.Balance, data.FrozenBalance, data.TotalEarnings, data.WithdrawnAmount, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.Balance, data.FrozenBalance, data.TotalEarnings, data.WithdrawnAmount, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.Balance, data.FrozenBalance, data.TotalEarnings, data.WithdrawnAmount, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentWalletAgentIdKey, yccAgentWalletIdKey)
|
||||
}
|
||||
func (m *defaultAgentWalletModel) insertUUID(data *AgentWallet) {
|
||||
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 *defaultAgentWalletModel) FindOne(ctx context.Context, id int64) (*AgentWallet, error) {
|
||||
func (m *defaultAgentWalletModel) FindOne(ctx context.Context, id string) (*AgentWallet, error) {
|
||||
yccAgentWalletIdKey := fmt.Sprintf("%s%v", cacheYccAgentWalletIdPrefix, id)
|
||||
var resp AgentWallet
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentWalletIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -107,7 +126,7 @@ func (m *defaultAgentWalletModel) FindOne(ctx context.Context, id int64) (*Agent
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultAgentWalletModel) FindOneByAgentId(ctx context.Context, agentId int64) (*AgentWallet, error) {
|
||||
func (m *defaultAgentWalletModel) FindOneByAgentId(ctx context.Context, agentId string) (*AgentWallet, error) {
|
||||
yccAgentWalletAgentIdKey := fmt.Sprintf("%s%v", cacheYccAgentWalletAgentIdPrefix, agentId)
|
||||
var resp AgentWallet
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentWalletAgentIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
@@ -380,7 +399,7 @@ func (m *defaultAgentWalletModel) Trans(ctx context.Context, fn func(ctx context
|
||||
func (m *defaultAgentWalletModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentWalletModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentWalletModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentWithdrawalFieldNames = builder.RawFieldNames(&AgentWithdrawal{})
|
||||
agentWithdrawalRows = strings.Join(agentWithdrawalFieldNames, ",")
|
||||
agentWithdrawalRowsExpectAutoSet = strings.Join(stringx.Remove(agentWithdrawalFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentWithdrawalRowsExpectAutoSet = strings.Join(stringx.Remove(agentWithdrawalFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentWithdrawalRowsWithPlaceHolder = strings.Join(stringx.Remove(agentWithdrawalFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentWithdrawalIdPrefix = "cache:ycc:agentWithdrawal:id:"
|
||||
@@ -33,7 +35,7 @@ var (
|
||||
type (
|
||||
agentWithdrawalModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentWithdrawal) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentWithdrawal, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentWithdrawal, error)
|
||||
FindOneByWithdrawNo(ctx context.Context, withdrawNo string) (*AgentWithdrawal, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentWithdrawal) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentWithdrawal) error
|
||||
@@ -47,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentWithdrawal, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentWithdrawal, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentWithdrawal, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentWithdrawalModel struct {
|
||||
@@ -56,8 +58,8 @@ type (
|
||||
}
|
||||
|
||||
AgentWithdrawal struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
WithdrawNo string `db:"withdraw_no"` // 提现单号
|
||||
PayeeAccount string `db:"payee_account"` // 收款账户
|
||||
PayeeName string `db:"payee_name"` // 收款人姓名
|
||||
@@ -83,18 +85,35 @@ func newAgentWithdrawalModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgent
|
||||
|
||||
func (m *defaultAgentWithdrawalModel) Insert(ctx context.Context, session sqlx.Session, data *AgentWithdrawal) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
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.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.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.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.WithdrawNo, data.PayeeAccount, 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) {
|
||||
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 *defaultAgentWithdrawalModel) FindOne(ctx context.Context, id int64) (*AgentWithdrawal, error) {
|
||||
func (m *defaultAgentWithdrawalModel) FindOne(ctx context.Context, id string) (*AgentWithdrawal, error) {
|
||||
yccAgentWithdrawalIdKey := fmt.Sprintf("%s%v", cacheYccAgentWithdrawalIdPrefix, id)
|
||||
var resp AgentWithdrawal
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentWithdrawalIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -384,7 +403,7 @@ func (m *defaultAgentWithdrawalModel) Trans(ctx context.Context, fn func(ctx con
|
||||
func (m *defaultAgentWithdrawalModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentWithdrawalModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentWithdrawalModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,9 +8,11 @@ import (
|
||||
"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"
|
||||
@@ -23,7 +25,7 @@ import (
|
||||
var (
|
||||
agentWithdrawalTaxFieldNames = builder.RawFieldNames(&AgentWithdrawalTax{})
|
||||
agentWithdrawalTaxRows = strings.Join(agentWithdrawalTaxFieldNames, ",")
|
||||
agentWithdrawalTaxRowsExpectAutoSet = strings.Join(stringx.Remove(agentWithdrawalTaxFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
agentWithdrawalTaxRowsExpectAutoSet = strings.Join(stringx.Remove(agentWithdrawalTaxFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
agentWithdrawalTaxRowsWithPlaceHolder = strings.Join(stringx.Remove(agentWithdrawalTaxFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccAgentWithdrawalTaxIdPrefix = "cache:ycc:agentWithdrawalTax:id:"
|
||||
@@ -32,7 +34,7 @@ var (
|
||||
type (
|
||||
agentWithdrawalTaxModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AgentWithdrawalTax) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AgentWithdrawalTax, error)
|
||||
FindOne(ctx context.Context, id string) (*AgentWithdrawalTax, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AgentWithdrawalTax) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AgentWithdrawalTax) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -45,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AgentWithdrawalTax, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AgentWithdrawalTax, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AgentWithdrawalTax, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAgentWithdrawalTaxModel struct {
|
||||
@@ -54,9 +56,9 @@ type (
|
||||
}
|
||||
|
||||
AgentWithdrawalTax struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
AgentId int64 `db:"agent_id"` // 代理ID
|
||||
WithdrawalId int64 `db:"withdrawal_id"` // 提现记录ID
|
||||
Id string `db:"id"`
|
||||
AgentId string `db:"agent_id"`
|
||||
WithdrawalId string `db:"withdrawal_id"`
|
||||
YearMonth int64 `db:"year_month"` // 年月(格式:YYYYMM)
|
||||
WithdrawalAmount float64 `db:"withdrawal_amount"` // 提现金额
|
||||
TaxableAmount float64 `db:"taxable_amount"` // 应税金额
|
||||
@@ -83,17 +85,34 @@ func newAgentWithdrawalTaxModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAg
|
||||
|
||||
func (m *defaultAgentWithdrawalTaxModel) Insert(ctx context.Context, session sqlx.Session, data *AgentWithdrawalTax) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccAgentWithdrawalTaxIdKey := fmt.Sprintf("%s%v", cacheYccAgentWithdrawalTaxIdPrefix, 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, agentWithdrawalTaxRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentWithdrawalTaxRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.AgentId, data.WithdrawalId, data.YearMonth, data.WithdrawalAmount, data.TaxableAmount, data.TaxRate, data.TaxAmount, data.ActualAmount, data.TaxStatus, data.TaxTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.AgentId, data.WithdrawalId, data.YearMonth, data.WithdrawalAmount, data.TaxableAmount, data.TaxRate, data.TaxAmount, data.ActualAmount, data.TaxStatus, data.TaxTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.AgentId, data.WithdrawalId, data.YearMonth, data.WithdrawalAmount, data.TaxableAmount, data.TaxRate, data.TaxAmount, data.ActualAmount, data.TaxStatus, data.TaxTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.AgentId, data.WithdrawalId, data.YearMonth, data.WithdrawalAmount, data.TaxableAmount, data.TaxRate, data.TaxAmount, data.ActualAmount, data.TaxStatus, data.TaxTime, data.Remark, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAgentWithdrawalTaxIdKey)
|
||||
}
|
||||
func (m *defaultAgentWithdrawalTaxModel) insertUUID(data *AgentWithdrawalTax) {
|
||||
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 *defaultAgentWithdrawalTaxModel) FindOne(ctx context.Context, id int64) (*AgentWithdrawalTax, error) {
|
||||
func (m *defaultAgentWithdrawalTaxModel) FindOne(ctx context.Context, id string) (*AgentWithdrawalTax, error) {
|
||||
yccAgentWithdrawalTaxIdKey := fmt.Sprintf("%s%v", cacheYccAgentWithdrawalTaxIdPrefix, id)
|
||||
var resp AgentWithdrawalTax
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAgentWithdrawalTaxIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -353,7 +372,7 @@ func (m *defaultAgentWithdrawalTaxModel) Trans(ctx context.Context, fn func(ctx
|
||||
func (m *defaultAgentWithdrawalTaxModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAgentWithdrawalTaxModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultAgentWithdrawalTaxModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccAgentWithdrawalTaxIdKey := fmt.Sprintf("%s%v", cacheYccAgentWithdrawalTaxIdPrefix, 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)
|
||||
|
||||
@@ -14,7 +14,7 @@ type (
|
||||
// and implement the added methods in customAuthorizationDocumentModel.
|
||||
AuthorizationDocumentModel interface {
|
||||
authorizationDocumentModel
|
||||
FindByOrderId(ctx context.Context, orderId int64) ([]*AuthorizationDocument, error)
|
||||
FindByOrderId(ctx context.Context, orderId string) ([]*AuthorizationDocument, error)
|
||||
}
|
||||
|
||||
customAuthorizationDocumentModel struct {
|
||||
@@ -30,14 +30,14 @@ func NewAuthorizationDocumentModel(conn sqlx.SqlConn, c cache.CacheConf) Authori
|
||||
}
|
||||
|
||||
// FindByOrderId 根据订单ID查询授权书列表
|
||||
func (m *customAuthorizationDocumentModel) FindByOrderId(ctx context.Context, orderId int64) ([]*AuthorizationDocument, error) {
|
||||
func (m *customAuthorizationDocumentModel) FindByOrderId(ctx context.Context, orderId string) ([]*AuthorizationDocument, error) {
|
||||
query := `SELECT * FROM authorization_document WHERE order_id = ? AND del_state = 0 ORDER BY create_time DESC`
|
||||
|
||||
|
||||
var authDocs []*AuthorizationDocument
|
||||
err := m.QueryRowsNoCacheCtx(ctx, &authDocs, query, orderId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
return authDocs, nil
|
||||
}
|
||||
|
||||
@@ -8,32 +8,33 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
authorizationDocumentFieldNames = builder.RawFieldNames(&AuthorizationDocument{})
|
||||
authorizationDocumentRows = strings.Join(authorizationDocumentFieldNames, ",")
|
||||
authorizationDocumentRowsExpectAutoSet = strings.Join(stringx.Remove(authorizationDocumentFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
authorizationDocumentRowsExpectAutoSet = strings.Join(stringx.Remove(authorizationDocumentFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
authorizationDocumentRowsWithPlaceHolder = strings.Join(stringx.Remove(authorizationDocumentFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmAuthorizationDocumentIdPrefix = "cache:ycc:authorizationDocument:id:"
|
||||
cacheYccAuthorizationDocumentIdPrefix = "cache:ycc:authorizationDocument:id:"
|
||||
)
|
||||
|
||||
type (
|
||||
authorizationDocumentModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *AuthorizationDocument) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*AuthorizationDocument, error)
|
||||
FindOne(ctx context.Context, id string) (*AuthorizationDocument, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *AuthorizationDocument) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AuthorizationDocument) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -46,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*AuthorizationDocument, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*AuthorizationDocument, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*AuthorizationDocument, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultAuthorizationDocumentModel struct {
|
||||
@@ -55,10 +56,10 @@ type (
|
||||
}
|
||||
|
||||
AuthorizationDocument struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
UserId int64 `db:"user_id"` // 用户ID
|
||||
OrderId int64 `db:"order_id"` // 订单ID
|
||||
QueryId int64 `db:"query_id"` // 查询ID
|
||||
Id string `db:"id"`
|
||||
UserId string `db:"user_id"`
|
||||
OrderId string `db:"order_id"`
|
||||
QueryId string `db:"query_id"`
|
||||
FileName string `db:"file_name"` // 文件名
|
||||
FilePath string `db:"file_path"` // 文件路径
|
||||
FileUrl string `db:"file_url"` // 文件访问URL
|
||||
@@ -83,20 +84,37 @@ func newAuthorizationDocumentModel(conn sqlx.SqlConn, c cache.CacheConf) *defaul
|
||||
|
||||
func (m *defaultAuthorizationDocumentModel) Insert(ctx context.Context, session sqlx.Session, data *AuthorizationDocument) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheHmAuthorizationDocumentIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheYccAuthorizationDocumentIdPrefix, 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, authorizationDocumentRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, authorizationDocumentRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}, hmAuthorizationDocumentIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version)
|
||||
}, yccAuthorizationDocumentIdKey)
|
||||
}
|
||||
func (m *defaultAuthorizationDocumentModel) insertUUID(data *AuthorizationDocument) {
|
||||
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 *defaultAuthorizationDocumentModel) FindOne(ctx context.Context, id int64) (*AuthorizationDocument, error) {
|
||||
hmAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheHmAuthorizationDocumentIdPrefix, id)
|
||||
func (m *defaultAuthorizationDocumentModel) FindOne(ctx context.Context, id string) (*AuthorizationDocument, error) {
|
||||
yccAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheYccAuthorizationDocumentIdPrefix, id)
|
||||
var resp AuthorizationDocument
|
||||
err := m.QueryRowCtx(ctx, &resp, hmAuthorizationDocumentIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccAuthorizationDocumentIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", authorizationDocumentRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -111,14 +129,14 @@ func (m *defaultAuthorizationDocumentModel) FindOne(ctx context.Context, id int6
|
||||
}
|
||||
|
||||
func (m *defaultAuthorizationDocumentModel) Update(ctx context.Context, session sqlx.Session, data *AuthorizationDocument) (sql.Result, error) {
|
||||
hmAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheHmAuthorizationDocumentIdPrefix, data.Id)
|
||||
yccAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheYccAuthorizationDocumentIdPrefix, 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, authorizationDocumentRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version, data.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version, data.Id)
|
||||
}, hmAuthorizationDocumentIdKey)
|
||||
}, yccAuthorizationDocumentIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultAuthorizationDocumentModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *AuthorizationDocument) error {
|
||||
@@ -129,14 +147,14 @@ func (m *defaultAuthorizationDocumentModel) UpdateWithVersion(ctx context.Contex
|
||||
var sqlResult sql.Result
|
||||
var err error
|
||||
|
||||
hmAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheHmAuthorizationDocumentIdPrefix, data.Id)
|
||||
yccAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheYccAuthorizationDocumentIdPrefix, 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, authorizationDocumentRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version, data.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.UserId, data.OrderId, data.QueryId, data.FileName, data.FilePath, data.FileUrl, data.FileSize, data.FileType, data.Status, data.ExpireTime, data.DeleteTime, data.DelState, data.Version, data.Id, oldVersion)
|
||||
}, hmAuthorizationDocumentIdKey)
|
||||
}, yccAuthorizationDocumentIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -353,19 +371,19 @@ func (m *defaultAuthorizationDocumentModel) Trans(ctx context.Context, fn func(c
|
||||
func (m *defaultAuthorizationDocumentModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultAuthorizationDocumentModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
hmAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheHmAuthorizationDocumentIdPrefix, id)
|
||||
func (m *defaultAuthorizationDocumentModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccAuthorizationDocumentIdKey := fmt.Sprintf("%s%v", cacheYccAuthorizationDocumentIdPrefix, 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)
|
||||
}, hmAuthorizationDocumentIdKey)
|
||||
}, yccAuthorizationDocumentIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultAuthorizationDocumentModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmAuthorizationDocumentIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccAuthorizationDocumentIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultAuthorizationDocumentModel) 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", authorizationDocumentRows, m.table)
|
||||
|
||||
@@ -8,36 +8,37 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
exampleFieldNames = builder.RawFieldNames(&Example{})
|
||||
exampleRows = strings.Join(exampleFieldNames, ",")
|
||||
exampleRowsExpectAutoSet = strings.Join(stringx.Remove(exampleFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
exampleRowsExpectAutoSet = strings.Join(stringx.Remove(exampleFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
exampleRowsWithPlaceHolder = strings.Join(stringx.Remove(exampleFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmExampleIdPrefix = "cache:ycc:example:id:"
|
||||
cacheHmExampleApiIdPrefix = "cache:ycc:example:apiId:"
|
||||
cacheHmExampleFeatureIdPrefix = "cache:ycc:example:featureId:"
|
||||
cacheYccExampleIdPrefix = "cache:ycc:example:id:"
|
||||
cacheYccExampleApiIdPrefix = "cache:ycc:example:apiId:"
|
||||
cacheYccExampleFeatureIdPrefix = "cache:ycc:example:featureId:"
|
||||
)
|
||||
|
||||
type (
|
||||
exampleModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *Example) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Example, error)
|
||||
FindOne(ctx context.Context, id string) (*Example, error)
|
||||
FindOneByApiId(ctx context.Context, apiId string) (*Example, error)
|
||||
FindOneByFeatureId(ctx context.Context, featureId int64) (*Example, error)
|
||||
FindOneByFeatureId(ctx context.Context, featureId string) (*Example, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *Example) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *Example) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -50,7 +51,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*Example, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*Example, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*Example, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultExampleModel struct {
|
||||
@@ -59,15 +60,17 @@ type (
|
||||
}
|
||||
|
||||
Example struct {
|
||||
Id int64 `db:"id"` // 主键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标识
|
||||
FeatureId int64 `db:"feature_id"` // 关联feature表的ID
|
||||
Content string `db:"content"` // 内容
|
||||
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标识
|
||||
FeatureId string `db:"feature_id"`
|
||||
Content string `db:"content"` // 内容
|
||||
ProductIdUuid sql.NullString `db:"product_id_uuid"`
|
||||
FeatureIdUuid sql.NullString `db:"feature_id_uuid"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -80,22 +83,39 @@ func newExampleModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultExampleModel
|
||||
|
||||
func (m *defaultExampleModel) Insert(ctx context.Context, session sqlx.Session, data *Example) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmExampleApiIdKey := fmt.Sprintf("%s%v", cacheHmExampleApiIdPrefix, data.ApiId)
|
||||
hmExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheHmExampleFeatureIdPrefix, data.FeatureId)
|
||||
hmExampleIdKey := fmt.Sprintf("%s%v", cacheHmExampleIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccExampleApiIdKey := fmt.Sprintf("%s%v", cacheYccExampleApiIdPrefix, data.ApiId)
|
||||
yccExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheYccExampleFeatureIdPrefix, data.FeatureId)
|
||||
yccExampleIdKey := fmt.Sprintf("%s%v", cacheYccExampleIdPrefix, 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, exampleRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, exampleRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.FeatureId, data.Content)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.FeatureId, data.Content, data.ProductIdUuid, data.FeatureIdUuid)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.FeatureId, data.Content)
|
||||
}, hmExampleApiIdKey, hmExampleFeatureIdKey, hmExampleIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.FeatureId, data.Content, data.ProductIdUuid, data.FeatureIdUuid)
|
||||
}, yccExampleApiIdKey, yccExampleFeatureIdKey, yccExampleIdKey)
|
||||
}
|
||||
func (m *defaultExampleModel) insertUUID(data *Example) {
|
||||
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 *defaultExampleModel) FindOne(ctx context.Context, id int64) (*Example, error) {
|
||||
hmExampleIdKey := fmt.Sprintf("%s%v", cacheHmExampleIdPrefix, id)
|
||||
func (m *defaultExampleModel) FindOne(ctx context.Context, id string) (*Example, error) {
|
||||
yccExampleIdKey := fmt.Sprintf("%s%v", cacheYccExampleIdPrefix, id)
|
||||
var resp Example
|
||||
err := m.QueryRowCtx(ctx, &resp, hmExampleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccExampleIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", exampleRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -110,9 +130,9 @@ func (m *defaultExampleModel) FindOne(ctx context.Context, id int64) (*Example,
|
||||
}
|
||||
|
||||
func (m *defaultExampleModel) FindOneByApiId(ctx context.Context, apiId string) (*Example, error) {
|
||||
hmExampleApiIdKey := fmt.Sprintf("%s%v", cacheHmExampleApiIdPrefix, apiId)
|
||||
yccExampleApiIdKey := fmt.Sprintf("%s%v", cacheYccExampleApiIdPrefix, apiId)
|
||||
var resp Example
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmExampleApiIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccExampleApiIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `api_id` = ? and del_state = ? limit 1", exampleRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, apiId, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -129,10 +149,10 @@ func (m *defaultExampleModel) FindOneByApiId(ctx context.Context, apiId string)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultExampleModel) FindOneByFeatureId(ctx context.Context, featureId int64) (*Example, error) {
|
||||
hmExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheHmExampleFeatureIdPrefix, featureId)
|
||||
func (m *defaultExampleModel) FindOneByFeatureId(ctx context.Context, featureId string) (*Example, error) {
|
||||
yccExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheYccExampleFeatureIdPrefix, featureId)
|
||||
var resp Example
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmExampleFeatureIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccExampleFeatureIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `feature_id` = ? and del_state = ? limit 1", exampleRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, featureId, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -154,16 +174,16 @@ func (m *defaultExampleModel) Update(ctx context.Context, session sqlx.Session,
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmExampleApiIdKey := fmt.Sprintf("%s%v", cacheHmExampleApiIdPrefix, data.ApiId)
|
||||
hmExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheHmExampleFeatureIdPrefix, data.FeatureId)
|
||||
hmExampleIdKey := fmt.Sprintf("%s%v", cacheHmExampleIdPrefix, data.Id)
|
||||
yccExampleApiIdKey := fmt.Sprintf("%s%v", cacheYccExampleApiIdPrefix, data.ApiId)
|
||||
yccExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheYccExampleFeatureIdPrefix, data.FeatureId)
|
||||
yccExampleIdKey := fmt.Sprintf("%s%v", cacheYccExampleIdPrefix, 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, exampleRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.Id)
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.ProductIdUuid, newData.FeatureIdUuid, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.Id)
|
||||
}, hmExampleApiIdKey, hmExampleFeatureIdKey, hmExampleIdKey)
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.ProductIdUuid, newData.FeatureIdUuid, newData.Id)
|
||||
}, yccExampleApiIdKey, yccExampleFeatureIdKey, yccExampleIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultExampleModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *Example) error {
|
||||
@@ -178,16 +198,16 @@ func (m *defaultExampleModel) UpdateWithVersion(ctx context.Context, session sql
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmExampleApiIdKey := fmt.Sprintf("%s%v", cacheHmExampleApiIdPrefix, data.ApiId)
|
||||
hmExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheHmExampleFeatureIdPrefix, data.FeatureId)
|
||||
hmExampleIdKey := fmt.Sprintf("%s%v", cacheHmExampleIdPrefix, data.Id)
|
||||
yccExampleApiIdKey := fmt.Sprintf("%s%v", cacheYccExampleApiIdPrefix, data.ApiId)
|
||||
yccExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheYccExampleFeatureIdPrefix, data.FeatureId)
|
||||
yccExampleIdKey := fmt.Sprintf("%s%v", cacheYccExampleIdPrefix, 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, exampleRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.Id, oldVersion)
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.ProductIdUuid, newData.FeatureIdUuid, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.Id, oldVersion)
|
||||
}, hmExampleApiIdKey, hmExampleFeatureIdKey, hmExampleIdKey)
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.FeatureId, newData.Content, newData.ProductIdUuid, newData.FeatureIdUuid, newData.Id, oldVersion)
|
||||
}, yccExampleApiIdKey, yccExampleFeatureIdKey, yccExampleIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -404,26 +424,26 @@ func (m *defaultExampleModel) Trans(ctx context.Context, fn func(ctx context.Con
|
||||
func (m *defaultExampleModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultExampleModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultExampleModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmExampleApiIdKey := fmt.Sprintf("%s%v", cacheHmExampleApiIdPrefix, data.ApiId)
|
||||
hmExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheHmExampleFeatureIdPrefix, data.FeatureId)
|
||||
hmExampleIdKey := fmt.Sprintf("%s%v", cacheHmExampleIdPrefix, id)
|
||||
yccExampleApiIdKey := fmt.Sprintf("%s%v", cacheYccExampleApiIdPrefix, data.ApiId)
|
||||
yccExampleFeatureIdKey := fmt.Sprintf("%s%v", cacheYccExampleFeatureIdPrefix, data.FeatureId)
|
||||
yccExampleIdKey := fmt.Sprintf("%s%v", cacheYccExampleIdPrefix, 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)
|
||||
}, hmExampleApiIdKey, hmExampleFeatureIdKey, hmExampleIdKey)
|
||||
}, yccExampleApiIdKey, yccExampleFeatureIdKey, yccExampleIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultExampleModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmExampleIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccExampleIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultExampleModel) 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", exampleRows, m.table)
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
featureFieldNames = builder.RawFieldNames(&Feature{})
|
||||
featureRows = strings.Join(featureFieldNames, ",")
|
||||
featureRowsExpectAutoSet = strings.Join(stringx.Remove(featureFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
featureRowsExpectAutoSet = strings.Join(stringx.Remove(featureFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
featureRowsWithPlaceHolder = strings.Join(stringx.Remove(featureFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmFeatureIdPrefix = "cache:ycc:feature:id:"
|
||||
cacheHmFeatureApiIdPrefix = "cache:ycc:feature:apiId:"
|
||||
cacheYccFeatureIdPrefix = "cache:ycc:feature:id:"
|
||||
cacheYccFeatureApiIdPrefix = "cache:ycc:feature:apiId:"
|
||||
)
|
||||
|
||||
type (
|
||||
featureModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *Feature) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Feature, error)
|
||||
FindOne(ctx context.Context, id string) (*Feature, error)
|
||||
FindOneByApiId(ctx context.Context, apiId string) (*Feature, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *Feature) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *Feature) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*Feature, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*Feature, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*Feature, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultFeatureModel struct {
|
||||
@@ -57,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
Feature struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"` // 创建时间
|
||||
UpdateTime time.Time `db:"update_time"` // 更新时间
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -77,21 +78,38 @@ func newFeatureModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultFeatureModel
|
||||
|
||||
func (m *defaultFeatureModel) Insert(ctx context.Context, session sqlx.Session, data *Feature) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmFeatureApiIdKey := fmt.Sprintf("%s%v", cacheHmFeatureApiIdPrefix, data.ApiId)
|
||||
hmFeatureIdKey := fmt.Sprintf("%s%v", cacheHmFeatureIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
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.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)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.Name)
|
||||
}, hmFeatureApiIdKey, hmFeatureIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ApiId, data.Name)
|
||||
}, yccFeatureApiIdKey, yccFeatureIdKey)
|
||||
}
|
||||
func (m *defaultFeatureModel) insertUUID(data *Feature) {
|
||||
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 *defaultFeatureModel) FindOne(ctx context.Context, id int64) (*Feature, error) {
|
||||
hmFeatureIdKey := fmt.Sprintf("%s%v", cacheHmFeatureIdPrefix, id)
|
||||
func (m *defaultFeatureModel) FindOne(ctx context.Context, id string) (*Feature, error) {
|
||||
yccFeatureIdKey := fmt.Sprintf("%s%v", cacheYccFeatureIdPrefix, id)
|
||||
var resp Feature
|
||||
err := m.QueryRowCtx(ctx, &resp, hmFeatureIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccFeatureIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", featureRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -106,9 +124,9 @@ func (m *defaultFeatureModel) FindOne(ctx context.Context, id int64) (*Feature,
|
||||
}
|
||||
|
||||
func (m *defaultFeatureModel) FindOneByApiId(ctx context.Context, apiId string) (*Feature, error) {
|
||||
hmFeatureApiIdKey := fmt.Sprintf("%s%v", cacheHmFeatureApiIdPrefix, apiId)
|
||||
yccFeatureApiIdKey := fmt.Sprintf("%s%v", cacheYccFeatureApiIdPrefix, apiId)
|
||||
var resp Feature
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmFeatureApiIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccFeatureApiIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `api_id` = ? and del_state = ? limit 1", featureRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, apiId, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -130,15 +148,15 @@ func (m *defaultFeatureModel) Update(ctx context.Context, session sqlx.Session,
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmFeatureApiIdKey := fmt.Sprintf("%s%v", cacheHmFeatureApiIdPrefix, data.ApiId)
|
||||
hmFeatureIdKey := fmt.Sprintf("%s%v", cacheHmFeatureIdPrefix, data.Id)
|
||||
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("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 conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ApiId, newData.Name, newData.Id)
|
||||
}, hmFeatureApiIdKey, hmFeatureIdKey)
|
||||
}, yccFeatureApiIdKey, yccFeatureIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultFeatureModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *Feature) error {
|
||||
@@ -153,15 +171,15 @@ func (m *defaultFeatureModel) UpdateWithVersion(ctx context.Context, session sql
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmFeatureApiIdKey := fmt.Sprintf("%s%v", cacheHmFeatureApiIdPrefix, data.ApiId)
|
||||
hmFeatureIdKey := fmt.Sprintf("%s%v", cacheHmFeatureIdPrefix, data.Id)
|
||||
yccFeatureApiIdKey := fmt.Sprintf("%s%v", cacheYccFeatureApiIdPrefix, data.ApiId)
|
||||
yccFeatureIdKey := fmt.Sprintf("%s%v", cacheYccFeatureIdPrefix, 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, featureRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.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.Id, oldVersion)
|
||||
}, hmFeatureApiIdKey, hmFeatureIdKey)
|
||||
}, yccFeatureApiIdKey, yccFeatureIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -378,25 +396,25 @@ func (m *defaultFeatureModel) Trans(ctx context.Context, fn func(ctx context.Con
|
||||
func (m *defaultFeatureModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultFeatureModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultFeatureModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmFeatureApiIdKey := fmt.Sprintf("%s%v", cacheHmFeatureApiIdPrefix, data.ApiId)
|
||||
hmFeatureIdKey := fmt.Sprintf("%s%v", cacheHmFeatureIdPrefix, id)
|
||||
yccFeatureApiIdKey := fmt.Sprintf("%s%v", cacheYccFeatureApiIdPrefix, data.ApiId)
|
||||
yccFeatureIdKey := fmt.Sprintf("%s%v", cacheYccFeatureIdPrefix, 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)
|
||||
}, hmFeatureApiIdKey, hmFeatureIdKey)
|
||||
}, yccFeatureApiIdKey, yccFeatureIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultFeatureModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmFeatureIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccFeatureIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultFeatureModel) 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", featureRows, m.table)
|
||||
|
||||
@@ -8,32 +8,33 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
globalNotificationsFieldNames = builder.RawFieldNames(&GlobalNotifications{})
|
||||
globalNotificationsRows = strings.Join(globalNotificationsFieldNames, ",")
|
||||
globalNotificationsRowsExpectAutoSet = strings.Join(stringx.Remove(globalNotificationsFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
globalNotificationsRowsExpectAutoSet = strings.Join(stringx.Remove(globalNotificationsFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
globalNotificationsRowsWithPlaceHolder = strings.Join(stringx.Remove(globalNotificationsFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmGlobalNotificationsIdPrefix = "cache:ycc:globalNotifications:id:"
|
||||
cacheYccGlobalNotificationsIdPrefix = "cache:ycc:globalNotifications:id:"
|
||||
)
|
||||
|
||||
type (
|
||||
globalNotificationsModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *GlobalNotifications) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*GlobalNotifications, error)
|
||||
FindOne(ctx context.Context, id string) (*GlobalNotifications, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *GlobalNotifications) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *GlobalNotifications) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -46,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*GlobalNotifications, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*GlobalNotifications, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*GlobalNotifications, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultGlobalNotificationsModel struct {
|
||||
@@ -55,7 +56,7 @@ type (
|
||||
}
|
||||
|
||||
GlobalNotifications struct {
|
||||
Id int64 `db:"id"`
|
||||
Id string `db:"id"`
|
||||
Title string `db:"title"`
|
||||
Content string `db:"content"`
|
||||
NotificationPage string `db:"notification_page"`
|
||||
@@ -81,20 +82,37 @@ func newGlobalNotificationsModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultG
|
||||
|
||||
func (m *defaultGlobalNotificationsModel) Insert(ctx context.Context, session sqlx.Session, data *GlobalNotifications) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheHmGlobalNotificationsIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheYccGlobalNotificationsIdPrefix, 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, globalNotificationsRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, globalNotificationsRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime)
|
||||
}, hmGlobalNotificationsIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime)
|
||||
}, yccGlobalNotificationsIdKey)
|
||||
}
|
||||
func (m *defaultGlobalNotificationsModel) insertUUID(data *GlobalNotifications) {
|
||||
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 *defaultGlobalNotificationsModel) FindOne(ctx context.Context, id int64) (*GlobalNotifications, error) {
|
||||
hmGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheHmGlobalNotificationsIdPrefix, id)
|
||||
func (m *defaultGlobalNotificationsModel) FindOne(ctx context.Context, id string) (*GlobalNotifications, error) {
|
||||
yccGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheYccGlobalNotificationsIdPrefix, id)
|
||||
var resp GlobalNotifications
|
||||
err := m.QueryRowCtx(ctx, &resp, hmGlobalNotificationsIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccGlobalNotificationsIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", globalNotificationsRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -109,14 +127,14 @@ func (m *defaultGlobalNotificationsModel) FindOne(ctx context.Context, id int64)
|
||||
}
|
||||
|
||||
func (m *defaultGlobalNotificationsModel) Update(ctx context.Context, session sqlx.Session, data *GlobalNotifications) (sql.Result, error) {
|
||||
hmGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheHmGlobalNotificationsIdPrefix, data.Id)
|
||||
yccGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheYccGlobalNotificationsIdPrefix, 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, globalNotificationsRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime, data.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime, data.Id)
|
||||
}, hmGlobalNotificationsIdKey)
|
||||
}, yccGlobalNotificationsIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultGlobalNotificationsModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *GlobalNotifications) error {
|
||||
@@ -127,14 +145,14 @@ func (m *defaultGlobalNotificationsModel) UpdateWithVersion(ctx context.Context,
|
||||
var sqlResult sql.Result
|
||||
var err error
|
||||
|
||||
hmGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheHmGlobalNotificationsIdPrefix, data.Id)
|
||||
yccGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheYccGlobalNotificationsIdPrefix, 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, globalNotificationsRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime, data.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.Title, data.Content, data.NotificationPage, data.StartDate, data.EndDate, data.StartTime, data.EndTime, data.Status, data.DelState, data.Version, data.DeleteTime, data.Id, oldVersion)
|
||||
}, hmGlobalNotificationsIdKey)
|
||||
}, yccGlobalNotificationsIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -351,19 +369,19 @@ func (m *defaultGlobalNotificationsModel) Trans(ctx context.Context, fn func(ctx
|
||||
func (m *defaultGlobalNotificationsModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultGlobalNotificationsModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
hmGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheHmGlobalNotificationsIdPrefix, id)
|
||||
func (m *defaultGlobalNotificationsModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccGlobalNotificationsIdKey := fmt.Sprintf("%s%v", cacheYccGlobalNotificationsIdPrefix, 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)
|
||||
}, hmGlobalNotificationsIdKey)
|
||||
}, yccGlobalNotificationsIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultGlobalNotificationsModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmGlobalNotificationsIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccGlobalNotificationsIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultGlobalNotificationsModel) 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", globalNotificationsRows, m.table)
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
@@ -12,6 +16,7 @@ type (
|
||||
// and implement the added methods in customOrderModel.
|
||||
OrderModel interface {
|
||||
orderModel
|
||||
UpdateUserIDWithSession(ctx context.Context, session sqlx.Session, sourceUserID, targetUserID string) error
|
||||
}
|
||||
|
||||
customOrderModel struct {
|
||||
@@ -25,3 +30,26 @@ func NewOrderModel(conn sqlx.SqlConn, c cache.CacheConf) OrderModel {
|
||||
defaultOrderModel: newOrderModel(conn, c),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *customOrderModel) UpdateUserIDWithSession(ctx context.Context, session sqlx.Session, sourceUserID, targetUserID string) error {
|
||||
builder := m.defaultOrderModel.SelectBuilder().Where("user_id = ?", sourceUserID)
|
||||
rows, err := m.defaultOrderModel.FindAll(ctx, builder, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
keys := make([]string, 0, len(rows)*2)
|
||||
for _, r := range rows {
|
||||
keys = append(keys, fmt.Sprintf("%s%v", cacheYccOrderIdPrefix, r.Id))
|
||||
keys = append(keys, fmt.Sprintf("%s%v", cacheYccOrderOrderNoPrefix, r.OrderNo))
|
||||
}
|
||||
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("UPDATE %s SET user_id = ? WHERE user_id = ?", m.defaultOrderModel.tableName())
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, targetUserID, sourceUserID)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, targetUserID, sourceUserID)
|
||||
}, keys...)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
orderFieldNames = builder.RawFieldNames(&Order{})
|
||||
orderRows = strings.Join(orderFieldNames, ",")
|
||||
orderRowsExpectAutoSet = strings.Join(stringx.Remove(orderFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
orderRowsExpectAutoSet = strings.Join(stringx.Remove(orderFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
orderRowsWithPlaceHolder = strings.Join(stringx.Remove(orderFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmOrderIdPrefix = "cache:ycc:order:id:"
|
||||
cacheHmOrderOrderNoPrefix = "cache:ycc:order:orderNo:"
|
||||
cacheYccOrderIdPrefix = "cache:ycc:order:id:"
|
||||
cacheYccOrderOrderNoPrefix = "cache:ycc:order:orderNo:"
|
||||
)
|
||||
|
||||
type (
|
||||
orderModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *Order) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Order, error)
|
||||
FindOne(ctx context.Context, id string) (*Order, error)
|
||||
FindOneByOrderNo(ctx context.Context, orderNo string) (*Order, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *Order) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *Order) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*Order, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*Order, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*Order, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultOrderModel struct {
|
||||
@@ -57,10 +58,10 @@ type (
|
||||
}
|
||||
|
||||
Order struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
OrderNo string `db:"order_no"` // 自生成的订单号
|
||||
UserId int64 `db:"user_id"` // 用户ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID(软关联到产品表)
|
||||
Id string `db:"id"`
|
||||
OrderNo string `db:"order_no"` // 自生成的订单号
|
||||
UserId string `db:"user_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
PaymentPlatform string `db:"payment_platform"` // 支付平台(支付宝、微信、苹果内购、其他)
|
||||
PaymentScene string `db:"payment_scene"` // 支付场景(App、H5、微信小程序、公众号)
|
||||
PlatformOrderId sql.NullString `db:"platform_order_id"` // 支付平台订单号
|
||||
@@ -86,21 +87,38 @@ func newOrderModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultOrderModel {
|
||||
|
||||
func (m *defaultOrderModel) Insert(ctx context.Context, session sqlx.Session, data *Order) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmOrderIdKey := fmt.Sprintf("%s%v", cacheHmOrderIdPrefix, data.Id)
|
||||
hmOrderOrderNoKey := fmt.Sprintf("%s%v", cacheHmOrderOrderNoPrefix, data.OrderNo)
|
||||
m.insertUUID(data)
|
||||
yccOrderIdKey := fmt.Sprintf("%s%v", cacheYccOrderIdPrefix, data.Id)
|
||||
yccOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccOrderOrderNoPrefix, 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, orderRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, orderRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.OrderNo, data.UserId, data.ProductId, data.PaymentPlatform, data.PaymentScene, data.PlatformOrderId, data.Amount, data.Status, data.DelState, data.Version, data.PayTime, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.OrderNo, data.UserId, data.ProductId, data.PaymentPlatform, data.PaymentScene, data.PlatformOrderId, data.Amount, data.Status, data.DelState, data.Version, data.PayTime, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.OrderNo, data.UserId, data.ProductId, data.PaymentPlatform, data.PaymentScene, data.PlatformOrderId, data.Amount, data.Status, data.DelState, data.Version, data.PayTime, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
}, hmOrderIdKey, hmOrderOrderNoKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.OrderNo, data.UserId, data.ProductId, data.PaymentPlatform, data.PaymentScene, data.PlatformOrderId, data.Amount, data.Status, data.DelState, data.Version, data.PayTime, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
}, yccOrderIdKey, yccOrderOrderNoKey)
|
||||
}
|
||||
func (m *defaultOrderModel) insertUUID(data *Order) {
|
||||
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 *defaultOrderModel) FindOne(ctx context.Context, id int64) (*Order, error) {
|
||||
hmOrderIdKey := fmt.Sprintf("%s%v", cacheHmOrderIdPrefix, id)
|
||||
func (m *defaultOrderModel) FindOne(ctx context.Context, id string) (*Order, error) {
|
||||
yccOrderIdKey := fmt.Sprintf("%s%v", cacheYccOrderIdPrefix, id)
|
||||
var resp Order
|
||||
err := m.QueryRowCtx(ctx, &resp, hmOrderIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccOrderIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", orderRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -115,9 +133,9 @@ func (m *defaultOrderModel) FindOne(ctx context.Context, id int64) (*Order, erro
|
||||
}
|
||||
|
||||
func (m *defaultOrderModel) FindOneByOrderNo(ctx context.Context, orderNo string) (*Order, error) {
|
||||
hmOrderOrderNoKey := fmt.Sprintf("%s%v", cacheHmOrderOrderNoPrefix, orderNo)
|
||||
yccOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccOrderOrderNoPrefix, orderNo)
|
||||
var resp Order
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmOrderOrderNoKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccOrderOrderNoKey, 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", orderRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, orderNo, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -139,15 +157,15 @@ func (m *defaultOrderModel) Update(ctx context.Context, session sqlx.Session, ne
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmOrderIdKey := fmt.Sprintf("%s%v", cacheHmOrderIdPrefix, data.Id)
|
||||
hmOrderOrderNoKey := fmt.Sprintf("%s%v", cacheHmOrderOrderNoPrefix, data.OrderNo)
|
||||
yccOrderIdKey := fmt.Sprintf("%s%v", cacheYccOrderIdPrefix, data.Id)
|
||||
yccOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccOrderOrderNoPrefix, 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, orderRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.OrderNo, newData.UserId, newData.ProductId, newData.PaymentPlatform, newData.PaymentScene, newData.PlatformOrderId, newData.Amount, newData.Status, newData.DelState, newData.Version, newData.PayTime, newData.RefundTime, newData.CloseTime, newData.DeleteTime, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.OrderNo, newData.UserId, newData.ProductId, newData.PaymentPlatform, newData.PaymentScene, newData.PlatformOrderId, newData.Amount, newData.Status, newData.DelState, newData.Version, newData.PayTime, newData.RefundTime, newData.CloseTime, newData.DeleteTime, newData.Id)
|
||||
}, hmOrderIdKey, hmOrderOrderNoKey)
|
||||
}, yccOrderIdKey, yccOrderOrderNoKey)
|
||||
}
|
||||
|
||||
func (m *defaultOrderModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *Order) error {
|
||||
@@ -162,15 +180,15 @@ func (m *defaultOrderModel) UpdateWithVersion(ctx context.Context, session sqlx.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmOrderIdKey := fmt.Sprintf("%s%v", cacheHmOrderIdPrefix, data.Id)
|
||||
hmOrderOrderNoKey := fmt.Sprintf("%s%v", cacheHmOrderOrderNoPrefix, data.OrderNo)
|
||||
yccOrderIdKey := fmt.Sprintf("%s%v", cacheYccOrderIdPrefix, data.Id)
|
||||
yccOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccOrderOrderNoPrefix, 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, orderRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.OrderNo, newData.UserId, newData.ProductId, newData.PaymentPlatform, newData.PaymentScene, newData.PlatformOrderId, newData.Amount, newData.Status, newData.DelState, newData.Version, newData.PayTime, newData.RefundTime, newData.CloseTime, newData.DeleteTime, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.OrderNo, newData.UserId, newData.ProductId, newData.PaymentPlatform, newData.PaymentScene, newData.PlatformOrderId, newData.Amount, newData.Status, newData.DelState, newData.Version, newData.PayTime, newData.RefundTime, newData.CloseTime, newData.DeleteTime, newData.Id, oldVersion)
|
||||
}, hmOrderIdKey, hmOrderOrderNoKey)
|
||||
}, yccOrderIdKey, yccOrderOrderNoKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -387,25 +405,25 @@ func (m *defaultOrderModel) Trans(ctx context.Context, fn func(ctx context.Conte
|
||||
func (m *defaultOrderModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultOrderModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultOrderModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmOrderIdKey := fmt.Sprintf("%s%v", cacheHmOrderIdPrefix, id)
|
||||
hmOrderOrderNoKey := fmt.Sprintf("%s%v", cacheHmOrderOrderNoPrefix, data.OrderNo)
|
||||
yccOrderIdKey := fmt.Sprintf("%s%v", cacheYccOrderIdPrefix, id)
|
||||
yccOrderOrderNoKey := fmt.Sprintf("%s%v", cacheYccOrderOrderNoPrefix, 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)
|
||||
}, hmOrderIdKey, hmOrderOrderNoKey)
|
||||
}, yccOrderIdKey, yccOrderOrderNoKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultOrderModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmOrderIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccOrderIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultOrderModel) 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", orderRows, m.table)
|
||||
|
||||
@@ -8,23 +8,24 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
orderRefundFieldNames = builder.RawFieldNames(&OrderRefund{})
|
||||
orderRefundRows = strings.Join(orderRefundFieldNames, ",")
|
||||
orderRefundRowsExpectAutoSet = strings.Join(stringx.Remove(orderRefundFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
orderRefundRowsExpectAutoSet = strings.Join(stringx.Remove(orderRefundFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
orderRefundRowsWithPlaceHolder = strings.Join(stringx.Remove(orderRefundFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheYccOrderRefundIdPrefix = "cache:ycc:orderRefund:id:"
|
||||
@@ -35,7 +36,7 @@ var (
|
||||
type (
|
||||
orderRefundModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *OrderRefund) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*OrderRefund, error)
|
||||
FindOne(ctx context.Context, id string) (*OrderRefund, error)
|
||||
FindOneByPlatformRefundId(ctx context.Context, platformRefundId sql.NullString) (*OrderRefund, error)
|
||||
FindOneByRefundNo(ctx context.Context, refundNo string) (*OrderRefund, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *OrderRefund) (sql.Result, error)
|
||||
@@ -50,7 +51,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*OrderRefund, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*OrderRefund, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*OrderRefund, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultOrderRefundModel struct {
|
||||
@@ -59,11 +60,11 @@ type (
|
||||
}
|
||||
|
||||
OrderRefund struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
RefundNo string `db:"refund_no"` // 退款单号
|
||||
OrderId int64 `db:"order_id"` // 关联的订单ID
|
||||
UserId int64 `db:"user_id"` // 用户ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID
|
||||
Id string `db:"id"`
|
||||
RefundNo string `db:"refund_no"` // 退款单号
|
||||
OrderId string `db:"order_id"`
|
||||
UserId string `db:"user_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
PlatformRefundId sql.NullString `db:"platform_refund_id"` // 支付平台退款单号
|
||||
RefundAmount float64 `db:"refund_amount"` // 退款金额
|
||||
RefundReason sql.NullString `db:"refund_reason"` // 退款原因
|
||||
@@ -87,19 +88,36 @@ func newOrderRefundModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultOrderRefu
|
||||
|
||||
func (m *defaultOrderRefundModel) Insert(ctx context.Context, session sqlx.Session, data *OrderRefund) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
m.insertUUID(data)
|
||||
yccOrderRefundIdKey := fmt.Sprintf("%s%v", cacheYccOrderRefundIdPrefix, data.Id)
|
||||
yccOrderRefundPlatformRefundIdKey := fmt.Sprintf("%s%v", cacheYccOrderRefundPlatformRefundIdPrefix, data.PlatformRefundId)
|
||||
yccOrderRefundRefundNoKey := fmt.Sprintf("%s%v", cacheYccOrderRefundRefundNoPrefix, data.RefundNo)
|
||||
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, orderRefundRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, orderRefundRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.RefundNo, data.OrderId, data.UserId, data.ProductId, data.PlatformRefundId, data.RefundAmount, data.RefundReason, data.Status, data.DelState, data.Version, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.RefundNo, data.OrderId, data.UserId, data.ProductId, data.PlatformRefundId, data.RefundAmount, data.RefundReason, data.Status, data.DelState, data.Version, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.RefundNo, data.OrderId, data.UserId, data.ProductId, data.PlatformRefundId, data.RefundAmount, data.RefundReason, data.Status, data.DelState, data.Version, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.RefundNo, data.OrderId, data.UserId, data.ProductId, data.PlatformRefundId, data.RefundAmount, data.RefundReason, data.Status, data.DelState, data.Version, data.RefundTime, data.CloseTime, data.DeleteTime)
|
||||
}, yccOrderRefundIdKey, yccOrderRefundPlatformRefundIdKey, yccOrderRefundRefundNoKey)
|
||||
}
|
||||
func (m *defaultOrderRefundModel) insertUUID(data *OrderRefund) {
|
||||
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 *defaultOrderRefundModel) FindOne(ctx context.Context, id int64) (*OrderRefund, error) {
|
||||
func (m *defaultOrderRefundModel) FindOne(ctx context.Context, id string) (*OrderRefund, error) {
|
||||
yccOrderRefundIdKey := fmt.Sprintf("%s%v", cacheYccOrderRefundIdPrefix, id)
|
||||
var resp OrderRefund
|
||||
err := m.QueryRowCtx(ctx, &resp, yccOrderRefundIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
@@ -411,7 +429,7 @@ func (m *defaultOrderRefundModel) Trans(ctx context.Context, fn func(ctx context
|
||||
func (m *defaultOrderRefundModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultOrderRefundModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultOrderRefundModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -8,34 +8,33 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
productFeatureFieldNames = builder.RawFieldNames(&ProductFeature{})
|
||||
productFeatureRows = strings.Join(productFeatureFieldNames, ",")
|
||||
productFeatureRowsExpectAutoSet = strings.Join(stringx.Remove(productFeatureFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
productFeatureRowsExpectAutoSet = strings.Join(stringx.Remove(productFeatureFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
productFeatureRowsWithPlaceHolder = strings.Join(stringx.Remove(productFeatureFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmProductFeatureIdPrefix = "cache:ycc:productFeature:id:"
|
||||
cacheHmProductFeatureProductIdFeatureIdPrefix = "cache:ycc:productFeature:productId:featureId:"
|
||||
cacheYccProductFeatureIdPrefix = "cache:ycc:productFeature:id:"
|
||||
)
|
||||
|
||||
type (
|
||||
productFeatureModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *ProductFeature) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*ProductFeature, error)
|
||||
FindOneByProductIdFeatureId(ctx context.Context, productId int64, featureId int64) (*ProductFeature, error)
|
||||
FindOne(ctx context.Context, id string) (*ProductFeature, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *ProductFeature) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ProductFeature) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -48,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*ProductFeature, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*ProductFeature, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*ProductFeature, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultProductFeatureModel struct {
|
||||
@@ -57,17 +56,19 @@ type (
|
||||
}
|
||||
|
||||
ProductFeature struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
ProductId int64 `db:"product_id"` // 产品ID
|
||||
FeatureId int64 `db:"feature_id"` // 功能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"` // 版本号
|
||||
Sort int64 `db:"sort"`
|
||||
IsImportant int64 `db:"is_important"`
|
||||
Enable int64 `db:"enable"`
|
||||
Id string `db:"id"`
|
||||
ProductId string `db:"product_id"`
|
||||
FeatureId string `db:"feature_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"` // 版本号
|
||||
Sort int64 `db:"sort"`
|
||||
IsImportant int64 `db:"is_important"`
|
||||
Enable int64 `db:"enable"`
|
||||
ProductIdUuid sql.NullString `db:"product_id_uuid"`
|
||||
FeatureIdUuid sql.NullString `db:"feature_id_uuid"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -80,21 +81,37 @@ func newProductFeatureModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultProduc
|
||||
|
||||
func (m *defaultProductFeatureModel) Insert(ctx context.Context, session sqlx.Session, data *ProductFeature) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmProductFeatureIdKey := fmt.Sprintf("%s%v", cacheHmProductFeatureIdPrefix, data.Id)
|
||||
hmProductFeatureProductIdFeatureIdKey := fmt.Sprintf("%s%v:%v", cacheHmProductFeatureProductIdFeatureIdPrefix, data.ProductId, data.FeatureId)
|
||||
m.insertUUID(data)
|
||||
yccProductFeatureIdKey := fmt.Sprintf("%s%v", cacheYccProductFeatureIdPrefix, 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, productFeatureRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, productFeatureRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable, data.ProductIdUuid, data.FeatureIdUuid)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable)
|
||||
}, hmProductFeatureIdKey, hmProductFeatureProductIdFeatureIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable, data.ProductIdUuid, data.FeatureIdUuid)
|
||||
}, yccProductFeatureIdKey)
|
||||
}
|
||||
func (m *defaultProductFeatureModel) insertUUID(data *ProductFeature) {
|
||||
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 *defaultProductFeatureModel) FindOne(ctx context.Context, id int64) (*ProductFeature, error) {
|
||||
hmProductFeatureIdKey := fmt.Sprintf("%s%v", cacheHmProductFeatureIdPrefix, id)
|
||||
func (m *defaultProductFeatureModel) FindOne(ctx context.Context, id string) (*ProductFeature, error) {
|
||||
yccProductFeatureIdKey := fmt.Sprintf("%s%v", cacheYccProductFeatureIdPrefix, id)
|
||||
var resp ProductFeature
|
||||
err := m.QueryRowCtx(ctx, &resp, hmProductFeatureIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccProductFeatureIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", productFeatureRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -108,63 +125,33 @@ func (m *defaultProductFeatureModel) FindOne(ctx context.Context, id int64) (*Pr
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultProductFeatureModel) FindOneByProductIdFeatureId(ctx context.Context, productId int64, featureId int64) (*ProductFeature, error) {
|
||||
hmProductFeatureProductIdFeatureIdKey := fmt.Sprintf("%s%v:%v", cacheHmProductFeatureProductIdFeatureIdPrefix, productId, featureId)
|
||||
var resp ProductFeature
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmProductFeatureProductIdFeatureIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `product_id` = ? and `feature_id` = ? and del_state = ? limit 1", productFeatureRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, productId, featureId, 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 *defaultProductFeatureModel) Update(ctx context.Context, session sqlx.Session, newData *ProductFeature) (sql.Result, error) {
|
||||
data, err := m.FindOne(ctx, newData.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmProductFeatureIdKey := fmt.Sprintf("%s%v", cacheHmProductFeatureIdPrefix, data.Id)
|
||||
hmProductFeatureProductIdFeatureIdKey := fmt.Sprintf("%s%v:%v", cacheHmProductFeatureProductIdFeatureIdPrefix, data.ProductId, data.FeatureId)
|
||||
func (m *defaultProductFeatureModel) Update(ctx context.Context, session sqlx.Session, data *ProductFeature) (sql.Result, error) {
|
||||
yccProductFeatureIdKey := fmt.Sprintf("%s%v", cacheYccProductFeatureIdPrefix, 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, productFeatureRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.ProductId, newData.FeatureId, newData.DeleteTime, newData.DelState, newData.Version, newData.Sort, newData.IsImportant, newData.Enable, newData.Id)
|
||||
return session.ExecCtx(ctx, query, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable, data.ProductIdUuid, data.FeatureIdUuid, data.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.ProductId, newData.FeatureId, newData.DeleteTime, newData.DelState, newData.Version, newData.Sort, newData.IsImportant, newData.Enable, newData.Id)
|
||||
}, hmProductFeatureIdKey, hmProductFeatureProductIdFeatureIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable, data.ProductIdUuid, data.FeatureIdUuid, data.Id)
|
||||
}, yccProductFeatureIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultProductFeatureModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *ProductFeature) error {
|
||||
func (m *defaultProductFeatureModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *ProductFeature) error {
|
||||
|
||||
oldVersion := newData.Version
|
||||
newData.Version += 1
|
||||
oldVersion := data.Version
|
||||
data.Version += 1
|
||||
|
||||
var sqlResult sql.Result
|
||||
var err error
|
||||
|
||||
data, err := m.FindOne(ctx, newData.Id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmProductFeatureIdKey := fmt.Sprintf("%s%v", cacheHmProductFeatureIdPrefix, data.Id)
|
||||
hmProductFeatureProductIdFeatureIdKey := fmt.Sprintf("%s%v:%v", cacheHmProductFeatureProductIdFeatureIdPrefix, data.ProductId, data.FeatureId)
|
||||
yccProductFeatureIdKey := fmt.Sprintf("%s%v", cacheYccProductFeatureIdPrefix, 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, productFeatureRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.ProductId, newData.FeatureId, newData.DeleteTime, newData.DelState, newData.Version, newData.Sort, newData.IsImportant, newData.Enable, newData.Id, oldVersion)
|
||||
return session.ExecCtx(ctx, query, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable, data.ProductIdUuid, data.FeatureIdUuid, data.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.ProductId, newData.FeatureId, newData.DeleteTime, newData.DelState, newData.Version, newData.Sort, newData.IsImportant, newData.Enable, newData.Id, oldVersion)
|
||||
}, hmProductFeatureIdKey, hmProductFeatureProductIdFeatureIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.ProductId, data.FeatureId, data.DeleteTime, data.DelState, data.Version, data.Sort, data.IsImportant, data.Enable, data.ProductIdUuid, data.FeatureIdUuid, data.Id, oldVersion)
|
||||
}, yccProductFeatureIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -381,25 +368,19 @@ func (m *defaultProductFeatureModel) Trans(ctx context.Context, fn func(ctx cont
|
||||
func (m *defaultProductFeatureModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultProductFeatureModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmProductFeatureIdKey := fmt.Sprintf("%s%v", cacheHmProductFeatureIdPrefix, id)
|
||||
hmProductFeatureProductIdFeatureIdKey := fmt.Sprintf("%s%v:%v", cacheHmProductFeatureProductIdFeatureIdPrefix, data.ProductId, data.FeatureId)
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
func (m *defaultProductFeatureModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccProductFeatureIdKey := fmt.Sprintf("%s%v", cacheYccProductFeatureIdPrefix, 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)
|
||||
}, hmProductFeatureIdKey, hmProductFeatureProductIdFeatureIdKey)
|
||||
}, yccProductFeatureIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultProductFeatureModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmProductFeatureIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccProductFeatureIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultProductFeatureModel) 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", productFeatureRows, m.table)
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
productFieldNames = builder.RawFieldNames(&Product{})
|
||||
productRows = strings.Join(productFieldNames, ",")
|
||||
productRowsExpectAutoSet = strings.Join(stringx.Remove(productFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
productRowsExpectAutoSet = strings.Join(stringx.Remove(productFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
productRowsWithPlaceHolder = strings.Join(stringx.Remove(productFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmProductIdPrefix = "cache:ycc:product:id:"
|
||||
cacheHmProductProductEnPrefix = "cache:ycc:product:productEn:"
|
||||
cacheYccProductIdPrefix = "cache:ycc:product:id:"
|
||||
cacheYccProductProductEnPrefix = "cache:ycc:product:productEn:"
|
||||
)
|
||||
|
||||
type (
|
||||
productModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *Product) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Product, error)
|
||||
FindOne(ctx context.Context, id string) (*Product, error)
|
||||
FindOneByProductEn(ctx context.Context, productEn string) (*Product, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *Product) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *Product) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*Product, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*Product, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*Product, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultProductModel struct {
|
||||
@@ -57,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
Product struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"` // 创建时间
|
||||
UpdateTime time.Time `db:"update_time"` // 更新时间
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -81,21 +82,38 @@ func newProductModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultProductModel
|
||||
|
||||
func (m *defaultProductModel) Insert(ctx context.Context, session sqlx.Session, data *Product) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmProductIdKey := fmt.Sprintf("%s%v", cacheHmProductIdPrefix, data.Id)
|
||||
hmProductProductEnKey := fmt.Sprintf("%s%v", cacheHmProductProductEnPrefix, data.ProductEn)
|
||||
m.insertUUID(data)
|
||||
yccProductIdKey := fmt.Sprintf("%s%v", cacheYccProductIdPrefix, data.Id)
|
||||
yccProductProductEnKey := fmt.Sprintf("%s%v", cacheYccProductProductEnPrefix, data.ProductEn)
|
||||
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, productRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, productRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ProductName, data.ProductEn, data.Description, data.Notes, data.CostPrice, data.SellPrice)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ProductName, data.ProductEn, data.Description, data.Notes, data.CostPrice, data.SellPrice)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ProductName, data.ProductEn, data.Description, data.Notes, data.CostPrice, data.SellPrice)
|
||||
}, hmProductIdKey, hmProductProductEnKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ProductName, data.ProductEn, data.Description, data.Notes, data.CostPrice, data.SellPrice)
|
||||
}, yccProductIdKey, yccProductProductEnKey)
|
||||
}
|
||||
func (m *defaultProductModel) insertUUID(data *Product) {
|
||||
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 *defaultProductModel) FindOne(ctx context.Context, id int64) (*Product, error) {
|
||||
hmProductIdKey := fmt.Sprintf("%s%v", cacheHmProductIdPrefix, id)
|
||||
func (m *defaultProductModel) FindOne(ctx context.Context, id string) (*Product, error) {
|
||||
yccProductIdKey := fmt.Sprintf("%s%v", cacheYccProductIdPrefix, id)
|
||||
var resp Product
|
||||
err := m.QueryRowCtx(ctx, &resp, hmProductIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccProductIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", productRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -110,9 +128,9 @@ func (m *defaultProductModel) FindOne(ctx context.Context, id int64) (*Product,
|
||||
}
|
||||
|
||||
func (m *defaultProductModel) FindOneByProductEn(ctx context.Context, productEn string) (*Product, error) {
|
||||
hmProductProductEnKey := fmt.Sprintf("%s%v", cacheHmProductProductEnPrefix, productEn)
|
||||
yccProductProductEnKey := fmt.Sprintf("%s%v", cacheYccProductProductEnPrefix, productEn)
|
||||
var resp Product
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmProductProductEnKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccProductProductEnKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `product_en` = ? and del_state = ? limit 1", productRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, productEn, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -134,15 +152,15 @@ func (m *defaultProductModel) Update(ctx context.Context, session sqlx.Session,
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmProductIdKey := fmt.Sprintf("%s%v", cacheHmProductIdPrefix, data.Id)
|
||||
hmProductProductEnKey := fmt.Sprintf("%s%v", cacheHmProductProductEnPrefix, data.ProductEn)
|
||||
yccProductIdKey := fmt.Sprintf("%s%v", cacheYccProductIdPrefix, data.Id)
|
||||
yccProductProductEnKey := fmt.Sprintf("%s%v", cacheYccProductProductEnPrefix, data.ProductEn)
|
||||
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, productRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ProductName, newData.ProductEn, newData.Description, newData.Notes, newData.CostPrice, newData.SellPrice, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ProductName, newData.ProductEn, newData.Description, newData.Notes, newData.CostPrice, newData.SellPrice, newData.Id)
|
||||
}, hmProductIdKey, hmProductProductEnKey)
|
||||
}, yccProductIdKey, yccProductProductEnKey)
|
||||
}
|
||||
|
||||
func (m *defaultProductModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *Product) error {
|
||||
@@ -157,15 +175,15 @@ func (m *defaultProductModel) UpdateWithVersion(ctx context.Context, session sql
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmProductIdKey := fmt.Sprintf("%s%v", cacheHmProductIdPrefix, data.Id)
|
||||
hmProductProductEnKey := fmt.Sprintf("%s%v", cacheHmProductProductEnPrefix, data.ProductEn)
|
||||
yccProductIdKey := fmt.Sprintf("%s%v", cacheYccProductIdPrefix, data.Id)
|
||||
yccProductProductEnKey := fmt.Sprintf("%s%v", cacheYccProductProductEnPrefix, data.ProductEn)
|
||||
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, productRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ProductName, newData.ProductEn, newData.Description, newData.Notes, newData.CostPrice, newData.SellPrice, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ProductName, newData.ProductEn, newData.Description, newData.Notes, newData.CostPrice, newData.SellPrice, newData.Id, oldVersion)
|
||||
}, hmProductIdKey, hmProductProductEnKey)
|
||||
}, yccProductIdKey, yccProductProductEnKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -382,25 +400,25 @@ func (m *defaultProductModel) Trans(ctx context.Context, fn func(ctx context.Con
|
||||
func (m *defaultProductModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultProductModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultProductModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmProductIdKey := fmt.Sprintf("%s%v", cacheHmProductIdPrefix, id)
|
||||
hmProductProductEnKey := fmt.Sprintf("%s%v", cacheHmProductProductEnPrefix, data.ProductEn)
|
||||
yccProductIdKey := fmt.Sprintf("%s%v", cacheYccProductIdPrefix, id)
|
||||
yccProductProductEnKey := fmt.Sprintf("%s%v", cacheYccProductProductEnPrefix, data.ProductEn)
|
||||
_, 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)
|
||||
}, hmProductIdKey, hmProductProductEnKey)
|
||||
}, yccProductIdKey, yccProductProductEnKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultProductModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmProductIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccProductIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultProductModel) 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", productRows, m.table)
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
queryCleanupConfigFieldNames = builder.RawFieldNames(&QueryCleanupConfig{})
|
||||
queryCleanupConfigRows = strings.Join(queryCleanupConfigFieldNames, ",")
|
||||
queryCleanupConfigRowsExpectAutoSet = strings.Join(stringx.Remove(queryCleanupConfigFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
queryCleanupConfigRowsExpectAutoSet = strings.Join(stringx.Remove(queryCleanupConfigFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
queryCleanupConfigRowsWithPlaceHolder = strings.Join(stringx.Remove(queryCleanupConfigFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmQueryCleanupConfigIdPrefix = "cache:ycc:queryCleanupConfig:id:"
|
||||
cacheHmQueryCleanupConfigConfigKeyPrefix = "cache:ycc:queryCleanupConfig:configKey:"
|
||||
cacheYccQueryCleanupConfigIdPrefix = "cache:ycc:queryCleanupConfig:id:"
|
||||
cacheYccQueryCleanupConfigConfigKeyPrefix = "cache:ycc:queryCleanupConfig:configKey:"
|
||||
)
|
||||
|
||||
type (
|
||||
queryCleanupConfigModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *QueryCleanupConfig) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*QueryCleanupConfig, error)
|
||||
FindOne(ctx context.Context, id string) (*QueryCleanupConfig, error)
|
||||
FindOneByConfigKey(ctx context.Context, configKey string) (*QueryCleanupConfig, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *QueryCleanupConfig) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *QueryCleanupConfig) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*QueryCleanupConfig, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*QueryCleanupConfig, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*QueryCleanupConfig, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultQueryCleanupConfigModel struct {
|
||||
@@ -57,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
QueryCleanupConfig struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"` // 创建时间
|
||||
UpdateTime time.Time `db:"update_time"` // 更新时间
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -79,21 +80,38 @@ func newQueryCleanupConfigModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultQu
|
||||
|
||||
func (m *defaultQueryCleanupConfigModel) Insert(ctx context.Context, session sqlx.Session, data *QueryCleanupConfig) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
hmQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
yccQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigIdPrefix, 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, queryCleanupConfigRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, queryCleanupConfigRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ConfigKey, data.ConfigValue, data.ConfigDesc, data.Status)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ConfigKey, data.ConfigValue, data.ConfigDesc, data.Status)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.ConfigKey, data.ConfigValue, data.ConfigDesc, data.Status)
|
||||
}, hmQueryCleanupConfigConfigKeyKey, hmQueryCleanupConfigIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.ConfigKey, data.ConfigValue, data.ConfigDesc, data.Status)
|
||||
}, yccQueryCleanupConfigConfigKeyKey, yccQueryCleanupConfigIdKey)
|
||||
}
|
||||
func (m *defaultQueryCleanupConfigModel) insertUUID(data *QueryCleanupConfig) {
|
||||
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 *defaultQueryCleanupConfigModel) FindOne(ctx context.Context, id int64) (*QueryCleanupConfig, error) {
|
||||
hmQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigIdPrefix, id)
|
||||
func (m *defaultQueryCleanupConfigModel) FindOne(ctx context.Context, id string) (*QueryCleanupConfig, error) {
|
||||
yccQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigIdPrefix, id)
|
||||
var resp QueryCleanupConfig
|
||||
err := m.QueryRowCtx(ctx, &resp, hmQueryCleanupConfigIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccQueryCleanupConfigIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", queryCleanupConfigRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -108,9 +126,9 @@ func (m *defaultQueryCleanupConfigModel) FindOne(ctx context.Context, id int64)
|
||||
}
|
||||
|
||||
func (m *defaultQueryCleanupConfigModel) FindOneByConfigKey(ctx context.Context, configKey string) (*QueryCleanupConfig, error) {
|
||||
hmQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigConfigKeyPrefix, configKey)
|
||||
yccQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigConfigKeyPrefix, configKey)
|
||||
var resp QueryCleanupConfig
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmQueryCleanupConfigConfigKeyKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccQueryCleanupConfigConfigKeyKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `config_key` = ? and del_state = ? limit 1", queryCleanupConfigRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, configKey, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -132,15 +150,15 @@ func (m *defaultQueryCleanupConfigModel) Update(ctx context.Context, session sql
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
hmQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigIdPrefix, data.Id)
|
||||
yccQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
yccQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigIdPrefix, 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, queryCleanupConfigRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ConfigKey, newData.ConfigValue, newData.ConfigDesc, newData.Status, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ConfigKey, newData.ConfigValue, newData.ConfigDesc, newData.Status, newData.Id)
|
||||
}, hmQueryCleanupConfigConfigKeyKey, hmQueryCleanupConfigIdKey)
|
||||
}, yccQueryCleanupConfigConfigKeyKey, yccQueryCleanupConfigIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultQueryCleanupConfigModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *QueryCleanupConfig) error {
|
||||
@@ -155,15 +173,15 @@ func (m *defaultQueryCleanupConfigModel) UpdateWithVersion(ctx context.Context,
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
hmQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigIdPrefix, data.Id)
|
||||
yccQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
yccQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigIdPrefix, 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, queryCleanupConfigRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ConfigKey, newData.ConfigValue, newData.ConfigDesc, newData.Status, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.ConfigKey, newData.ConfigValue, newData.ConfigDesc, newData.Status, newData.Id, oldVersion)
|
||||
}, hmQueryCleanupConfigConfigKeyKey, hmQueryCleanupConfigIdKey)
|
||||
}, yccQueryCleanupConfigConfigKeyKey, yccQueryCleanupConfigIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -380,25 +398,25 @@ func (m *defaultQueryCleanupConfigModel) Trans(ctx context.Context, fn func(ctx
|
||||
func (m *defaultQueryCleanupConfigModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultQueryCleanupConfigModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultQueryCleanupConfigModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
hmQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigIdPrefix, id)
|
||||
yccQueryCleanupConfigConfigKeyKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigConfigKeyPrefix, data.ConfigKey)
|
||||
yccQueryCleanupConfigIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigIdPrefix, 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)
|
||||
}, hmQueryCleanupConfigConfigKeyKey, hmQueryCleanupConfigIdKey)
|
||||
}, yccQueryCleanupConfigConfigKeyKey, yccQueryCleanupConfigIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultQueryCleanupConfigModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmQueryCleanupConfigIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccQueryCleanupConfigIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultQueryCleanupConfigModel) 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", queryCleanupConfigRows, m.table)
|
||||
|
||||
@@ -8,32 +8,33 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
queryCleanupDetailFieldNames = builder.RawFieldNames(&QueryCleanupDetail{})
|
||||
queryCleanupDetailRows = strings.Join(queryCleanupDetailFieldNames, ",")
|
||||
queryCleanupDetailRowsExpectAutoSet = strings.Join(stringx.Remove(queryCleanupDetailFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
queryCleanupDetailRowsExpectAutoSet = strings.Join(stringx.Remove(queryCleanupDetailFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
queryCleanupDetailRowsWithPlaceHolder = strings.Join(stringx.Remove(queryCleanupDetailFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmQueryCleanupDetailIdPrefix = "cache:ycc:queryCleanupDetail:id:"
|
||||
cacheYccQueryCleanupDetailIdPrefix = "cache:ycc:queryCleanupDetail:id:"
|
||||
)
|
||||
|
||||
type (
|
||||
queryCleanupDetailModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *QueryCleanupDetail) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*QueryCleanupDetail, error)
|
||||
FindOne(ctx context.Context, id string) (*QueryCleanupDetail, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *QueryCleanupDetail) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *QueryCleanupDetail) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -46,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*QueryCleanupDetail, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*QueryCleanupDetail, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*QueryCleanupDetail, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultQueryCleanupDetailModel struct {
|
||||
@@ -55,17 +56,17 @@ type (
|
||||
}
|
||||
|
||||
QueryCleanupDetail struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
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"` // 版本号
|
||||
CleanupLogId int64 `db:"cleanup_log_id"` // 关联的清理日志ID
|
||||
QueryId int64 `db:"query_id"` // 被清理的查询记录ID
|
||||
OrderId int64 `db:"order_id"` // 关联的订单ID
|
||||
UserId int64 `db:"user_id"` // 关联的用户ID
|
||||
ProductId int64 `db:"product_id"` // 关联的产品ID
|
||||
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"` // 删除状态:0-未删除,1-已删除
|
||||
Version int64 `db:"version"` // 版本号
|
||||
CleanupLogId string `db:"cleanup_log_id"`
|
||||
QueryId string `db:"query_id"`
|
||||
OrderId string `db:"order_id"`
|
||||
UserId string `db:"user_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
QueryState string `db:"query_state"` // 查询状态
|
||||
CreateTimeOld time.Time `db:"create_time_old"` // 原记录创建时间
|
||||
}
|
||||
@@ -80,20 +81,37 @@ func newQueryCleanupDetailModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultQu
|
||||
|
||||
func (m *defaultQueryCleanupDetailModel) Insert(ctx context.Context, session sqlx.Session, data *QueryCleanupDetail) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupDetailIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupDetailIdPrefix, 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, queryCleanupDetailRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, queryCleanupDetailRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld)
|
||||
}, hmQueryCleanupDetailIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld)
|
||||
}, yccQueryCleanupDetailIdKey)
|
||||
}
|
||||
func (m *defaultQueryCleanupDetailModel) insertUUID(data *QueryCleanupDetail) {
|
||||
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 *defaultQueryCleanupDetailModel) FindOne(ctx context.Context, id int64) (*QueryCleanupDetail, error) {
|
||||
hmQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupDetailIdPrefix, id)
|
||||
func (m *defaultQueryCleanupDetailModel) FindOne(ctx context.Context, id string) (*QueryCleanupDetail, error) {
|
||||
yccQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupDetailIdPrefix, id)
|
||||
var resp QueryCleanupDetail
|
||||
err := m.QueryRowCtx(ctx, &resp, hmQueryCleanupDetailIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccQueryCleanupDetailIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", queryCleanupDetailRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -108,14 +126,14 @@ func (m *defaultQueryCleanupDetailModel) FindOne(ctx context.Context, id int64)
|
||||
}
|
||||
|
||||
func (m *defaultQueryCleanupDetailModel) Update(ctx context.Context, session sqlx.Session, data *QueryCleanupDetail) (sql.Result, error) {
|
||||
hmQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupDetailIdPrefix, data.Id)
|
||||
yccQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupDetailIdPrefix, 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, queryCleanupDetailRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld, data.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld, data.Id)
|
||||
}, hmQueryCleanupDetailIdKey)
|
||||
}, yccQueryCleanupDetailIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultQueryCleanupDetailModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *QueryCleanupDetail) error {
|
||||
@@ -126,14 +144,14 @@ func (m *defaultQueryCleanupDetailModel) UpdateWithVersion(ctx context.Context,
|
||||
var sqlResult sql.Result
|
||||
var err error
|
||||
|
||||
hmQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupDetailIdPrefix, data.Id)
|
||||
yccQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupDetailIdPrefix, 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, queryCleanupDetailRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld, data.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupLogId, data.QueryId, data.OrderId, data.UserId, data.ProductId, data.QueryState, data.CreateTimeOld, data.Id, oldVersion)
|
||||
}, hmQueryCleanupDetailIdKey)
|
||||
}, yccQueryCleanupDetailIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -350,19 +368,19 @@ func (m *defaultQueryCleanupDetailModel) Trans(ctx context.Context, fn func(ctx
|
||||
func (m *defaultQueryCleanupDetailModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultQueryCleanupDetailModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
hmQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupDetailIdPrefix, id)
|
||||
func (m *defaultQueryCleanupDetailModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccQueryCleanupDetailIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupDetailIdPrefix, 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)
|
||||
}, hmQueryCleanupDetailIdKey)
|
||||
}, yccQueryCleanupDetailIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultQueryCleanupDetailModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmQueryCleanupDetailIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccQueryCleanupDetailIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultQueryCleanupDetailModel) 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", queryCleanupDetailRows, m.table)
|
||||
|
||||
@@ -8,32 +8,33 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
queryCleanupLogFieldNames = builder.RawFieldNames(&QueryCleanupLog{})
|
||||
queryCleanupLogRows = strings.Join(queryCleanupLogFieldNames, ",")
|
||||
queryCleanupLogRowsExpectAutoSet = strings.Join(stringx.Remove(queryCleanupLogFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
queryCleanupLogRowsExpectAutoSet = strings.Join(stringx.Remove(queryCleanupLogFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
queryCleanupLogRowsWithPlaceHolder = strings.Join(stringx.Remove(queryCleanupLogFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmQueryCleanupLogIdPrefix = "cache:ycc:queryCleanupLog:id:"
|
||||
cacheYccQueryCleanupLogIdPrefix = "cache:ycc:queryCleanupLog:id:"
|
||||
)
|
||||
|
||||
type (
|
||||
queryCleanupLogModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *QueryCleanupLog) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*QueryCleanupLog, error)
|
||||
FindOne(ctx context.Context, id string) (*QueryCleanupLog, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *QueryCleanupLog) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *QueryCleanupLog) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -46,7 +47,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*QueryCleanupLog, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*QueryCleanupLog, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*QueryCleanupLog, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultQueryCleanupLogModel struct {
|
||||
@@ -55,7 +56,7 @@ type (
|
||||
}
|
||||
|
||||
QueryCleanupLog struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"` // 创建时间
|
||||
UpdateTime time.Time `db:"update_time"` // 更新时间
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -79,20 +80,37 @@ func newQueryCleanupLogModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultQuery
|
||||
|
||||
func (m *defaultQueryCleanupLogModel) Insert(ctx context.Context, session sqlx.Session, data *QueryCleanupLog) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupLogIdPrefix, data.Id)
|
||||
m.insertUUID(data)
|
||||
yccQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupLogIdPrefix, 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, queryCleanupLogRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, queryCleanupLogRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark)
|
||||
}, hmQueryCleanupLogIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark)
|
||||
}, yccQueryCleanupLogIdKey)
|
||||
}
|
||||
func (m *defaultQueryCleanupLogModel) insertUUID(data *QueryCleanupLog) {
|
||||
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 *defaultQueryCleanupLogModel) FindOne(ctx context.Context, id int64) (*QueryCleanupLog, error) {
|
||||
hmQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupLogIdPrefix, id)
|
||||
func (m *defaultQueryCleanupLogModel) FindOne(ctx context.Context, id string) (*QueryCleanupLog, error) {
|
||||
yccQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupLogIdPrefix, id)
|
||||
var resp QueryCleanupLog
|
||||
err := m.QueryRowCtx(ctx, &resp, hmQueryCleanupLogIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccQueryCleanupLogIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", queryCleanupLogRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -107,14 +125,14 @@ func (m *defaultQueryCleanupLogModel) FindOne(ctx context.Context, id int64) (*Q
|
||||
}
|
||||
|
||||
func (m *defaultQueryCleanupLogModel) Update(ctx context.Context, session sqlx.Session, data *QueryCleanupLog) (sql.Result, error) {
|
||||
hmQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupLogIdPrefix, data.Id)
|
||||
yccQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupLogIdPrefix, 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, queryCleanupLogRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark, data.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark, data.Id)
|
||||
}, hmQueryCleanupLogIdKey)
|
||||
}, yccQueryCleanupLogIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultQueryCleanupLogModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, data *QueryCleanupLog) error {
|
||||
@@ -125,14 +143,14 @@ func (m *defaultQueryCleanupLogModel) UpdateWithVersion(ctx context.Context, ses
|
||||
var sqlResult sql.Result
|
||||
var err error
|
||||
|
||||
hmQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupLogIdPrefix, data.Id)
|
||||
yccQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupLogIdPrefix, 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, queryCleanupLogRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark, data.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.CleanupTime, data.CleanupBefore, data.AffectedRows, data.Status, data.ErrorMsg, data.Remark, data.Id, oldVersion)
|
||||
}, hmQueryCleanupLogIdKey)
|
||||
}, yccQueryCleanupLogIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -349,19 +367,19 @@ func (m *defaultQueryCleanupLogModel) Trans(ctx context.Context, fn func(ctx con
|
||||
func (m *defaultQueryCleanupLogModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultQueryCleanupLogModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
hmQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheHmQueryCleanupLogIdPrefix, id)
|
||||
func (m *defaultQueryCleanupLogModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
yccQueryCleanupLogIdKey := fmt.Sprintf("%s%v", cacheYccQueryCleanupLogIdPrefix, 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)
|
||||
}, hmQueryCleanupLogIdKey)
|
||||
}, yccQueryCleanupLogIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultQueryCleanupLogModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmQueryCleanupLogIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccQueryCleanupLogIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultQueryCleanupLogModel) 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", queryCleanupLogRows, m.table)
|
||||
|
||||
@@ -1,24 +1,26 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"context"
|
||||
"ycc-server/common/globalkey"
|
||||
"fmt"
|
||||
"time"
|
||||
"context"
|
||||
"database/sql"
|
||||
"ycc-server/common/globalkey"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/core/stores/cache"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
)
|
||||
|
||||
var _ QueryModel = (*customQueryModel)(nil)
|
||||
|
||||
type (
|
||||
// QueryModel is an interface to be customized, add more methods here,
|
||||
// and implement the added methods in customQueryModel.
|
||||
QueryModel interface {
|
||||
queryModel
|
||||
DeleteBefore(ctx context.Context, before time.Time) (int64, error)
|
||||
}
|
||||
// QueryModel is an interface to be customized, add more methods here,
|
||||
// and implement the added methods in customQueryModel.
|
||||
QueryModel interface {
|
||||
queryModel
|
||||
DeleteBefore(ctx context.Context, before time.Time) (int64, error)
|
||||
UpdateUserIDWithSession(ctx context.Context, session sqlx.Session, sourceUserID, targetUserID string) error
|
||||
}
|
||||
|
||||
customQueryModel struct {
|
||||
*defaultQueryModel
|
||||
@@ -27,9 +29,9 @@ type (
|
||||
|
||||
// NewQueryModel returns a model for the database table.
|
||||
func NewQueryModel(conn sqlx.SqlConn, c cache.CacheConf) QueryModel {
|
||||
return &customQueryModel{
|
||||
defaultQueryModel: newQueryModel(conn, c),
|
||||
}
|
||||
return &customQueryModel{
|
||||
defaultQueryModel: newQueryModel(conn, c),
|
||||
}
|
||||
}
|
||||
|
||||
func (m *customQueryModel) DeleteBefore(ctx context.Context, before time.Time) (int64, error) {
|
||||
@@ -58,3 +60,26 @@ func (m *customQueryModel) DeleteBefore(ctx context.Context, before time.Time) (
|
||||
|
||||
return affected, nil
|
||||
}
|
||||
|
||||
func (m *customQueryModel) UpdateUserIDWithSession(ctx context.Context, session sqlx.Session, sourceUserID, targetUserID string) error {
|
||||
builder := m.defaultQueryModel.SelectBuilder().Where("user_id = ?", sourceUserID)
|
||||
rows, err := m.defaultQueryModel.FindAll(ctx, builder, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
keys := make([]string, 0, len(rows)*2)
|
||||
for _, r := range rows {
|
||||
keys = append(keys, fmt.Sprintf("%s%v", cacheYccQueryIdPrefix, r.Id))
|
||||
keys = append(keys, fmt.Sprintf("%s%v", cacheYccQueryOrderIdPrefix, r.OrderId))
|
||||
}
|
||||
|
||||
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
|
||||
query := fmt.Sprintf("UPDATE %s SET user_id = ? WHERE user_id = ?", m.defaultQueryModel.tableName())
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, targetUserID, sourceUserID)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, targetUserID, sourceUserID)
|
||||
}, keys...)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -8,34 +8,35 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
queryFieldNames = builder.RawFieldNames(&Query{})
|
||||
queryRows = strings.Join(queryFieldNames, ",")
|
||||
queryRowsExpectAutoSet = strings.Join(stringx.Remove(queryFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
queryRowsExpectAutoSet = strings.Join(stringx.Remove(queryFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
queryRowsWithPlaceHolder = strings.Join(stringx.Remove(queryFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmQueryIdPrefix = "cache:ycc:query:id:"
|
||||
cacheHmQueryOrderIdPrefix = "cache:ycc:query:orderId:"
|
||||
cacheYccQueryIdPrefix = "cache:ycc:query:id:"
|
||||
cacheYccQueryOrderIdPrefix = "cache:ycc:query:orderId:"
|
||||
)
|
||||
|
||||
type (
|
||||
queryModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *Query) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*Query, error)
|
||||
FindOneByOrderId(ctx context.Context, orderId int64) (*Query, error)
|
||||
FindOne(ctx context.Context, id string) (*Query, error)
|
||||
FindOneByOrderId(ctx context.Context, orderId string) (*Query, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *Query) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *Query) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*Query, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*Query, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*Query, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultQueryModel struct {
|
||||
@@ -57,10 +58,10 @@ type (
|
||||
}
|
||||
|
||||
Query struct {
|
||||
Id int64 `db:"id"` // 主键ID
|
||||
OrderId int64 `db:"order_id"` // 订单ID(软关联到订单表)
|
||||
UserId int64 `db:"user_id"` // 用户ID(直接关联到用户)
|
||||
ProductId int64 `db:"product_id"` // 产品ID(直接关联到产品)
|
||||
Id string `db:"id"`
|
||||
OrderId string `db:"order_id"`
|
||||
UserId string `db:"user_id"`
|
||||
ProductId string `db:"product_id"`
|
||||
QueryParams string `db:"query_params"` // 查询params数据
|
||||
QueryData sql.NullString `db:"query_data"` // 查询结果数据
|
||||
QueryState string `db:"query_state"` // 查询状态
|
||||
@@ -81,21 +82,38 @@ func newQueryModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultQueryModel {
|
||||
|
||||
func (m *defaultQueryModel) Insert(ctx context.Context, session sqlx.Session, data *Query) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmQueryIdKey := fmt.Sprintf("%s%v", cacheHmQueryIdPrefix, data.Id)
|
||||
hmQueryOrderIdKey := fmt.Sprintf("%s%v", cacheHmQueryOrderIdPrefix, data.OrderId)
|
||||
m.insertUUID(data)
|
||||
yccQueryIdKey := fmt.Sprintf("%s%v", cacheYccQueryIdPrefix, data.Id)
|
||||
yccQueryOrderIdKey := fmt.Sprintf("%s%v", cacheYccQueryOrderIdPrefix, data.OrderId)
|
||||
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, queryRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, queryRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.OrderId, data.UserId, data.ProductId, data.QueryParams, data.QueryData, data.QueryState, data.DelState, data.Version, data.DeleteTime)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.OrderId, data.UserId, data.ProductId, data.QueryParams, data.QueryData, data.QueryState, data.DelState, data.Version, data.DeleteTime)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.OrderId, data.UserId, data.ProductId, data.QueryParams, data.QueryData, data.QueryState, data.DelState, data.Version, data.DeleteTime)
|
||||
}, hmQueryIdKey, hmQueryOrderIdKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.OrderId, data.UserId, data.ProductId, data.QueryParams, data.QueryData, data.QueryState, data.DelState, data.Version, data.DeleteTime)
|
||||
}, yccQueryIdKey, yccQueryOrderIdKey)
|
||||
}
|
||||
func (m *defaultQueryModel) insertUUID(data *Query) {
|
||||
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 *defaultQueryModel) FindOne(ctx context.Context, id int64) (*Query, error) {
|
||||
hmQueryIdKey := fmt.Sprintf("%s%v", cacheHmQueryIdPrefix, id)
|
||||
func (m *defaultQueryModel) FindOne(ctx context.Context, id string) (*Query, error) {
|
||||
yccQueryIdKey := fmt.Sprintf("%s%v", cacheYccQueryIdPrefix, id)
|
||||
var resp Query
|
||||
err := m.QueryRowCtx(ctx, &resp, hmQueryIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccQueryIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", queryRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -109,10 +127,10 @@ func (m *defaultQueryModel) FindOne(ctx context.Context, id int64) (*Query, erro
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultQueryModel) FindOneByOrderId(ctx context.Context, orderId int64) (*Query, error) {
|
||||
hmQueryOrderIdKey := fmt.Sprintf("%s%v", cacheHmQueryOrderIdPrefix, orderId)
|
||||
func (m *defaultQueryModel) FindOneByOrderId(ctx context.Context, orderId string) (*Query, error) {
|
||||
yccQueryOrderIdKey := fmt.Sprintf("%s%v", cacheYccQueryOrderIdPrefix, orderId)
|
||||
var resp Query
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmQueryOrderIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccQueryOrderIdKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `order_id` = ? and del_state = ? limit 1", queryRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, orderId, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -134,15 +152,15 @@ func (m *defaultQueryModel) Update(ctx context.Context, session sqlx.Session, ne
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmQueryIdKey := fmt.Sprintf("%s%v", cacheHmQueryIdPrefix, data.Id)
|
||||
hmQueryOrderIdKey := fmt.Sprintf("%s%v", cacheHmQueryOrderIdPrefix, data.OrderId)
|
||||
yccQueryIdKey := fmt.Sprintf("%s%v", cacheYccQueryIdPrefix, data.Id)
|
||||
yccQueryOrderIdKey := fmt.Sprintf("%s%v", cacheYccQueryOrderIdPrefix, data.OrderId)
|
||||
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, queryRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.OrderId, newData.UserId, newData.ProductId, newData.QueryParams, newData.QueryData, newData.QueryState, newData.DelState, newData.Version, newData.DeleteTime, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.OrderId, newData.UserId, newData.ProductId, newData.QueryParams, newData.QueryData, newData.QueryState, newData.DelState, newData.Version, newData.DeleteTime, newData.Id)
|
||||
}, hmQueryIdKey, hmQueryOrderIdKey)
|
||||
}, yccQueryIdKey, yccQueryOrderIdKey)
|
||||
}
|
||||
|
||||
func (m *defaultQueryModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *Query) error {
|
||||
@@ -157,15 +175,15 @@ func (m *defaultQueryModel) UpdateWithVersion(ctx context.Context, session sqlx.
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmQueryIdKey := fmt.Sprintf("%s%v", cacheHmQueryIdPrefix, data.Id)
|
||||
hmQueryOrderIdKey := fmt.Sprintf("%s%v", cacheHmQueryOrderIdPrefix, data.OrderId)
|
||||
yccQueryIdKey := fmt.Sprintf("%s%v", cacheYccQueryIdPrefix, data.Id)
|
||||
yccQueryOrderIdKey := fmt.Sprintf("%s%v", cacheYccQueryOrderIdPrefix, data.OrderId)
|
||||
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, queryRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.OrderId, newData.UserId, newData.ProductId, newData.QueryParams, newData.QueryData, newData.QueryState, newData.DelState, newData.Version, newData.DeleteTime, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.OrderId, newData.UserId, newData.ProductId, newData.QueryParams, newData.QueryData, newData.QueryState, newData.DelState, newData.Version, newData.DeleteTime, newData.Id, oldVersion)
|
||||
}, hmQueryIdKey, hmQueryOrderIdKey)
|
||||
}, yccQueryIdKey, yccQueryOrderIdKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -382,25 +400,25 @@ func (m *defaultQueryModel) Trans(ctx context.Context, fn func(ctx context.Conte
|
||||
func (m *defaultQueryModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultQueryModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultQueryModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmQueryIdKey := fmt.Sprintf("%s%v", cacheHmQueryIdPrefix, id)
|
||||
hmQueryOrderIdKey := fmt.Sprintf("%s%v", cacheHmQueryOrderIdPrefix, data.OrderId)
|
||||
yccQueryIdKey := fmt.Sprintf("%s%v", cacheYccQueryIdPrefix, id)
|
||||
yccQueryOrderIdKey := fmt.Sprintf("%s%v", cacheYccQueryOrderIdPrefix, data.OrderId)
|
||||
_, 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)
|
||||
}, hmQueryIdKey, hmQueryOrderIdKey)
|
||||
}, yccQueryIdKey, yccQueryOrderIdKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultQueryModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmQueryIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccQueryIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultQueryModel) 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", queryRows, m.table)
|
||||
|
||||
@@ -8,36 +8,37 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
userAuthFieldNames = builder.RawFieldNames(&UserAuth{})
|
||||
userAuthRows = strings.Join(userAuthFieldNames, ",")
|
||||
userAuthRowsExpectAutoSet = strings.Join(stringx.Remove(userAuthFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
userAuthRowsExpectAutoSet = strings.Join(stringx.Remove(userAuthFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
userAuthRowsWithPlaceHolder = strings.Join(stringx.Remove(userAuthFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmUserAuthIdPrefix = "cache:ycc:userAuth:id:"
|
||||
cacheHmUserAuthAuthTypeAuthKeyPrefix = "cache:ycc:userAuth:authType:authKey:"
|
||||
cacheHmUserAuthUserIdAuthTypePrefix = "cache:ycc:userAuth:userId:authType:"
|
||||
cacheYccUserAuthIdPrefix = "cache:ycc:userAuth:id:"
|
||||
cacheYccUserAuthAuthTypeAuthKeyPrefix = "cache:ycc:userAuth:authType:authKey:"
|
||||
cacheYccUserAuthUserIdAuthTypePrefix = "cache:ycc:userAuth:userId:authType:"
|
||||
)
|
||||
|
||||
type (
|
||||
userAuthModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *UserAuth) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*UserAuth, error)
|
||||
FindOne(ctx context.Context, id string) (*UserAuth, error)
|
||||
FindOneByAuthTypeAuthKey(ctx context.Context, authType string, authKey string) (*UserAuth, error)
|
||||
FindOneByUserIdAuthType(ctx context.Context, userId int64, authType string) (*UserAuth, error)
|
||||
FindOneByUserIdAuthType(ctx context.Context, userId string, authType string) (*UserAuth, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *UserAuth) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *UserAuth) error
|
||||
Trans(ctx context.Context, fn func(context context.Context, session sqlx.Session) error) error
|
||||
@@ -50,7 +51,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*UserAuth, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*UserAuth, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*UserAuth, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultUserAuthModel struct {
|
||||
@@ -59,13 +60,13 @@ type (
|
||||
}
|
||||
|
||||
UserAuth struct {
|
||||
Id int64 `db:"id"`
|
||||
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"` // 版本号
|
||||
UserId int64 `db:"user_id"`
|
||||
UserId string `db:"user_id"`
|
||||
AuthKey string `db:"auth_key"` // 平台唯一id
|
||||
AuthType string `db:"auth_type"` // 平台类型
|
||||
}
|
||||
@@ -80,22 +81,39 @@ func newUserAuthModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultUserAuthMode
|
||||
|
||||
func (m *defaultUserAuthModel) Insert(ctx context.Context, session sqlx.Session, data *UserAuth) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
hmUserAuthIdKey := fmt.Sprintf("%s%v", cacheHmUserAuthIdPrefix, data.Id)
|
||||
hmUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
m.insertUUID(data)
|
||||
yccUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
yccUserAuthIdKey := fmt.Sprintf("%s%v", cacheYccUserAuthIdPrefix, data.Id)
|
||||
yccUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
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, userAuthRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?)", m.table, userAuthRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.UserId, data.AuthKey, data.AuthType)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.UserId, data.AuthKey, data.AuthType)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.UserId, data.AuthKey, data.AuthType)
|
||||
}, hmUserAuthAuthTypeAuthKeyKey, hmUserAuthIdKey, hmUserAuthUserIdAuthTypeKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.UserId, data.AuthKey, data.AuthType)
|
||||
}, yccUserAuthAuthTypeAuthKeyKey, yccUserAuthIdKey, yccUserAuthUserIdAuthTypeKey)
|
||||
}
|
||||
func (m *defaultUserAuthModel) insertUUID(data *UserAuth) {
|
||||
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 *defaultUserAuthModel) FindOne(ctx context.Context, id int64) (*UserAuth, error) {
|
||||
hmUserAuthIdKey := fmt.Sprintf("%s%v", cacheHmUserAuthIdPrefix, id)
|
||||
func (m *defaultUserAuthModel) FindOne(ctx context.Context, id string) (*UserAuth, error) {
|
||||
yccUserAuthIdKey := fmt.Sprintf("%s%v", cacheYccUserAuthIdPrefix, id)
|
||||
var resp UserAuth
|
||||
err := m.QueryRowCtx(ctx, &resp, hmUserAuthIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccUserAuthIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", userAuthRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -110,9 +128,9 @@ func (m *defaultUserAuthModel) FindOne(ctx context.Context, id int64) (*UserAuth
|
||||
}
|
||||
|
||||
func (m *defaultUserAuthModel) FindOneByAuthTypeAuthKey(ctx context.Context, authType string, authKey string) (*UserAuth, error) {
|
||||
hmUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthAuthTypeAuthKeyPrefix, authType, authKey)
|
||||
yccUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthAuthTypeAuthKeyPrefix, authType, authKey)
|
||||
var resp UserAuth
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmUserAuthAuthTypeAuthKeyKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccUserAuthAuthTypeAuthKeyKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `auth_type` = ? and `auth_key` = ? and del_state = ? limit 1", userAuthRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, authType, authKey, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -129,10 +147,10 @@ func (m *defaultUserAuthModel) FindOneByAuthTypeAuthKey(ctx context.Context, aut
|
||||
}
|
||||
}
|
||||
|
||||
func (m *defaultUserAuthModel) FindOneByUserIdAuthType(ctx context.Context, userId int64, authType string) (*UserAuth, error) {
|
||||
hmUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthUserIdAuthTypePrefix, userId, authType)
|
||||
func (m *defaultUserAuthModel) FindOneByUserIdAuthType(ctx context.Context, userId string, authType string) (*UserAuth, error) {
|
||||
yccUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthUserIdAuthTypePrefix, userId, authType)
|
||||
var resp UserAuth
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmUserAuthUserIdAuthTypeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccUserAuthUserIdAuthTypeKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `user_id` = ? and `auth_type` = ? and del_state = ? limit 1", userAuthRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, userId, authType, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -154,16 +172,16 @@ func (m *defaultUserAuthModel) Update(ctx context.Context, session sqlx.Session,
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
hmUserAuthIdKey := fmt.Sprintf("%s%v", cacheHmUserAuthIdPrefix, data.Id)
|
||||
hmUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
yccUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
yccUserAuthIdKey := fmt.Sprintf("%s%v", cacheYccUserAuthIdPrefix, data.Id)
|
||||
yccUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
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, userAuthRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.AuthKey, newData.AuthType, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.AuthKey, newData.AuthType, newData.Id)
|
||||
}, hmUserAuthAuthTypeAuthKeyKey, hmUserAuthIdKey, hmUserAuthUserIdAuthTypeKey)
|
||||
}, yccUserAuthAuthTypeAuthKeyKey, yccUserAuthIdKey, yccUserAuthUserIdAuthTypeKey)
|
||||
}
|
||||
|
||||
func (m *defaultUserAuthModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *UserAuth) error {
|
||||
@@ -178,16 +196,16 @@ func (m *defaultUserAuthModel) UpdateWithVersion(ctx context.Context, session sq
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
hmUserAuthIdKey := fmt.Sprintf("%s%v", cacheHmUserAuthIdPrefix, data.Id)
|
||||
hmUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
yccUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
yccUserAuthIdKey := fmt.Sprintf("%s%v", cacheYccUserAuthIdPrefix, data.Id)
|
||||
yccUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
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, userAuthRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.AuthKey, newData.AuthType, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.UserId, newData.AuthKey, newData.AuthType, newData.Id, oldVersion)
|
||||
}, hmUserAuthAuthTypeAuthKeyKey, hmUserAuthIdKey, hmUserAuthUserIdAuthTypeKey)
|
||||
}, yccUserAuthAuthTypeAuthKeyKey, yccUserAuthIdKey, yccUserAuthUserIdAuthTypeKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -404,26 +422,26 @@ func (m *defaultUserAuthModel) Trans(ctx context.Context, fn func(ctx context.Co
|
||||
func (m *defaultUserAuthModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultUserAuthModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultUserAuthModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
hmUserAuthIdKey := fmt.Sprintf("%s%v", cacheHmUserAuthIdPrefix, id)
|
||||
hmUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheHmUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
yccUserAuthAuthTypeAuthKeyKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthAuthTypeAuthKeyPrefix, data.AuthType, data.AuthKey)
|
||||
yccUserAuthIdKey := fmt.Sprintf("%s%v", cacheYccUserAuthIdPrefix, id)
|
||||
yccUserAuthUserIdAuthTypeKey := fmt.Sprintf("%s%v:%v", cacheYccUserAuthUserIdAuthTypePrefix, data.UserId, data.AuthType)
|
||||
_, 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)
|
||||
}, hmUserAuthAuthTypeAuthKeyKey, hmUserAuthIdKey, hmUserAuthUserIdAuthTypeKey)
|
||||
}, yccUserAuthAuthTypeAuthKeyKey, yccUserAuthIdKey, yccUserAuthUserIdAuthTypeKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultUserAuthModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmUserAuthIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccUserAuthIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultUserAuthModel) 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", userAuthRows, m.table)
|
||||
|
||||
@@ -8,33 +8,34 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
"ycc-server/common/globalkey"
|
||||
|
||||
"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 (
|
||||
userFieldNames = builder.RawFieldNames(&User{})
|
||||
userRows = strings.Join(userFieldNames, ",")
|
||||
userRowsExpectAutoSet = strings.Join(stringx.Remove(userFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
|
||||
userRowsExpectAutoSet = strings.Join(stringx.Remove(userFieldNames, "`create_time`", "`update_time`"), ",")
|
||||
userRowsWithPlaceHolder = strings.Join(stringx.Remove(userFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
|
||||
|
||||
cacheHmUserIdPrefix = "cache:ycc:user:id:"
|
||||
cacheHmUserMobilePrefix = "cache:ycc:user:mobile:"
|
||||
cacheYccUserIdPrefix = "cache:ycc:user:id:"
|
||||
cacheYccUserMobilePrefix = "cache:ycc:user:mobile:"
|
||||
)
|
||||
|
||||
type (
|
||||
userModel interface {
|
||||
Insert(ctx context.Context, session sqlx.Session, data *User) (sql.Result, error)
|
||||
FindOne(ctx context.Context, id int64) (*User, error)
|
||||
FindOne(ctx context.Context, id string) (*User, error)
|
||||
FindOneByMobile(ctx context.Context, mobile sql.NullString) (*User, error)
|
||||
Update(ctx context.Context, session sqlx.Session, data *User) (sql.Result, error)
|
||||
UpdateWithVersion(ctx context.Context, session sqlx.Session, data *User) error
|
||||
@@ -48,7 +49,7 @@ type (
|
||||
FindPageListByPageWithTotal(ctx context.Context, rowBuilder squirrel.SelectBuilder, page, pageSize int64, orderBy string) ([]*User, int64, error)
|
||||
FindPageListByIdDESC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMinId, pageSize int64) ([]*User, error)
|
||||
FindPageListByIdASC(ctx context.Context, rowBuilder squirrel.SelectBuilder, preMaxId, pageSize int64) ([]*User, error)
|
||||
Delete(ctx context.Context, session sqlx.Session, id int64) error
|
||||
Delete(ctx context.Context, session sqlx.Session, id string) error
|
||||
}
|
||||
|
||||
defaultUserModel struct {
|
||||
@@ -57,7 +58,7 @@ type (
|
||||
}
|
||||
|
||||
User struct {
|
||||
Id int64 `db:"id"`
|
||||
Id string `db:"id"`
|
||||
CreateTime time.Time `db:"create_time"`
|
||||
UpdateTime time.Time `db:"update_time"`
|
||||
DeleteTime sql.NullTime `db:"delete_time"` // 删除时间
|
||||
@@ -80,21 +81,38 @@ func newUserModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultUserModel {
|
||||
|
||||
func (m *defaultUserModel) Insert(ctx context.Context, session sqlx.Session, data *User) (sql.Result, error) {
|
||||
data.DelState = globalkey.DelStateNo
|
||||
hmUserIdKey := fmt.Sprintf("%s%v", cacheHmUserIdPrefix, data.Id)
|
||||
hmUserMobileKey := fmt.Sprintf("%s%v", cacheHmUserMobilePrefix, data.Mobile)
|
||||
m.insertUUID(data)
|
||||
yccUserIdKey := fmt.Sprintf("%s%v", cacheYccUserIdPrefix, data.Id)
|
||||
yccUserMobileKey := fmt.Sprintf("%s%v", cacheYccUserMobilePrefix, data.Mobile)
|
||||
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, userRowsExpectAutoSet)
|
||||
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, userRowsExpectAutoSet)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info, data.Inside)
|
||||
return session.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info, data.Inside)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info, data.Inside)
|
||||
}, hmUserIdKey, hmUserMobileKey)
|
||||
return conn.ExecCtx(ctx, query, data.Id, data.DeleteTime, data.DelState, data.Version, data.Mobile, data.Password, data.Nickname, data.Info, data.Inside)
|
||||
}, yccUserIdKey, yccUserMobileKey)
|
||||
}
|
||||
func (m *defaultUserModel) insertUUID(data *User) {
|
||||
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 *defaultUserModel) FindOne(ctx context.Context, id int64) (*User, error) {
|
||||
hmUserIdKey := fmt.Sprintf("%s%v", cacheHmUserIdPrefix, id)
|
||||
func (m *defaultUserModel) FindOne(ctx context.Context, id string) (*User, error) {
|
||||
yccUserIdKey := fmt.Sprintf("%s%v", cacheYccUserIdPrefix, id)
|
||||
var resp User
|
||||
err := m.QueryRowCtx(ctx, &resp, hmUserIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
err := m.QueryRowCtx(ctx, &resp, yccUserIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
|
||||
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", userRows, m.table)
|
||||
return conn.QueryRowCtx(ctx, v, query, id, globalkey.DelStateNo)
|
||||
})
|
||||
@@ -109,9 +127,9 @@ func (m *defaultUserModel) FindOne(ctx context.Context, id int64) (*User, error)
|
||||
}
|
||||
|
||||
func (m *defaultUserModel) FindOneByMobile(ctx context.Context, mobile sql.NullString) (*User, error) {
|
||||
hmUserMobileKey := fmt.Sprintf("%s%v", cacheHmUserMobilePrefix, mobile)
|
||||
yccUserMobileKey := fmt.Sprintf("%s%v", cacheYccUserMobilePrefix, mobile)
|
||||
var resp User
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, hmUserMobileKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
err := m.QueryRowIndexCtx(ctx, &resp, yccUserMobileKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
|
||||
query := fmt.Sprintf("select %s from %s where `mobile` = ? and del_state = ? limit 1", userRows, m.table)
|
||||
if err := conn.QueryRowCtx(ctx, &resp, query, mobile, globalkey.DelStateNo); err != nil {
|
||||
return nil, err
|
||||
@@ -133,15 +151,15 @@ func (m *defaultUserModel) Update(ctx context.Context, session sqlx.Session, new
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
hmUserIdKey := fmt.Sprintf("%s%v", cacheHmUserIdPrefix, data.Id)
|
||||
hmUserMobileKey := fmt.Sprintf("%s%v", cacheHmUserMobilePrefix, data.Mobile)
|
||||
yccUserIdKey := fmt.Sprintf("%s%v", cacheYccUserIdPrefix, data.Id)
|
||||
yccUserMobileKey := fmt.Sprintf("%s%v", cacheYccUserMobilePrefix, data.Mobile)
|
||||
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, userRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id)
|
||||
}, hmUserIdKey, hmUserMobileKey)
|
||||
}, yccUserIdKey, yccUserMobileKey)
|
||||
}
|
||||
|
||||
func (m *defaultUserModel) UpdateWithVersion(ctx context.Context, session sqlx.Session, newData *User) error {
|
||||
@@ -156,15 +174,15 @@ func (m *defaultUserModel) UpdateWithVersion(ctx context.Context, session sqlx.S
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
hmUserIdKey := fmt.Sprintf("%s%v", cacheHmUserIdPrefix, data.Id)
|
||||
hmUserMobileKey := fmt.Sprintf("%s%v", cacheHmUserMobilePrefix, data.Mobile)
|
||||
yccUserIdKey := fmt.Sprintf("%s%v", cacheYccUserIdPrefix, data.Id)
|
||||
yccUserMobileKey := fmt.Sprintf("%s%v", cacheYccUserMobilePrefix, data.Mobile)
|
||||
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, userRowsWithPlaceHolder)
|
||||
if session != nil {
|
||||
return session.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id, oldVersion)
|
||||
}
|
||||
return conn.ExecCtx(ctx, query, newData.DeleteTime, newData.DelState, newData.Version, newData.Mobile, newData.Password, newData.Nickname, newData.Info, newData.Inside, newData.Id, oldVersion)
|
||||
}, hmUserIdKey, hmUserMobileKey)
|
||||
}, yccUserIdKey, yccUserMobileKey)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -381,25 +399,25 @@ func (m *defaultUserModel) Trans(ctx context.Context, fn func(ctx context.Contex
|
||||
func (m *defaultUserModel) SelectBuilder() squirrel.SelectBuilder {
|
||||
return squirrel.Select().From(m.table)
|
||||
}
|
||||
func (m *defaultUserModel) Delete(ctx context.Context, session sqlx.Session, id int64) error {
|
||||
func (m *defaultUserModel) Delete(ctx context.Context, session sqlx.Session, id string) error {
|
||||
data, err := m.FindOne(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
hmUserIdKey := fmt.Sprintf("%s%v", cacheHmUserIdPrefix, id)
|
||||
hmUserMobileKey := fmt.Sprintf("%s%v", cacheHmUserMobilePrefix, data.Mobile)
|
||||
yccUserIdKey := fmt.Sprintf("%s%v", cacheYccUserIdPrefix, id)
|
||||
yccUserMobileKey := fmt.Sprintf("%s%v", cacheYccUserMobilePrefix, data.Mobile)
|
||||
_, 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)
|
||||
}, hmUserIdKey, hmUserMobileKey)
|
||||
}, yccUserIdKey, yccUserMobileKey)
|
||||
return err
|
||||
}
|
||||
func (m *defaultUserModel) formatPrimary(primary interface{}) string {
|
||||
return fmt.Sprintf("%s%v", cacheHmUserIdPrefix, primary)
|
||||
return fmt.Sprintf("%s%v", cacheYccUserIdPrefix, primary)
|
||||
}
|
||||
func (m *defaultUserModel) 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", userRows, m.table)
|
||||
|
||||
Reference in New Issue
Block a user