修改用户反馈信息,新增系统奖励

This commit is contained in:
chy
2025-06-09 09:52:03 +08:00
parent e83a173ed0
commit e07b3dd0e1
23 changed files with 303 additions and 127 deletions

View File

@ -75,7 +75,7 @@ type ListStoreRewardRes struct {
// UpdateSystemRewardReq 更新系统奖励请求 // UpdateSystemRewardReq 更新系统奖励请求
type UpdateSystemRewardReq struct { type UpdateSystemRewardReq struct {
g.Meta `path:"/reward/system/{id}" method:"put" tags:"Reward" summary:"更新系统奖励"` g.Meta `path:"/reward/system" method:"put" tags:"Reward" summary:"更新系统奖励"`
Id uint64 `v:"required|min:1#奖励ID不能为空|奖励ID无效" json:"id" dc:"奖励ID"` Id uint64 `v:"required|min:1#奖励ID不能为空|奖励ID无效" json:"id" dc:"奖励ID"`
RewardTypeId int64 `v:"required|min:1#奖励类型ID不能为空|奖励类型ID无效" json:"rewardTypeId" dc:"奖励类型ID"` RewardTypeId int64 `v:"required|min:1#奖励类型ID不能为空|奖励类型ID无效" json:"rewardTypeId" dc:"奖励类型ID"`
Name string `v:"required|length:1,100#奖励名称不能为空|奖励名称长度为1-100" json:"name" dc:"奖励名称"` Name string `v:"required|length:1,100#奖励名称不能为空|奖励名称长度为1-100" json:"name" dc:"奖励名称"`

View File

@ -9,6 +9,7 @@ import (
"server/internal/controller/auth" "server/internal/controller/auth"
"server/internal/controller/feedback" "server/internal/controller/feedback"
"server/internal/controller/merchant" "server/internal/controller/merchant"
"server/internal/controller/reward"
"server/internal/controller/rewardType" "server/internal/controller/rewardType"
"server/internal/controller/role" "server/internal/controller/role"
"server/internal/controller/upload" "server/internal/controller/upload"
@ -42,6 +43,7 @@ var (
rewardType.NewV1(), rewardType.NewV1(),
feedback.NewV1(), feedback.NewV1(),
user.NewV1(), user.NewV1(),
reward.NewV1(),
) )
}) })
}) })

View File

@ -2,13 +2,25 @@ package reward
import ( import (
"context" "context"
"server/internal/model"
"github.com/gogf/gf/v2/errors/gcode" "server/internal/service"
"github.com/gogf/gf/v2/errors/gerror"
"server/api/reward/v1" "server/api/reward/v1"
) )
func (c *ControllerV1) CreateSystemReward(ctx context.Context, req *v1.CreateSystemRewardReq) (res *v1.CreateSystemRewardRes, err error) { func (c *ControllerV1) CreateSystemReward(ctx context.Context, req *v1.CreateSystemRewardReq) (res *v1.CreateSystemRewardRes, err error) {
return nil, gerror.NewCode(gcode.CodeNotImplemented) out, err := service.Reward().CreateSystemReward(ctx, &model.RewardCreateIn{
Description: req.Description,
ExpireAt: req.ExpireAt,
Name: req.Name,
RewardTypeID: req.RewardTypeId,
StartAt: req.StartAt,
Status: req.Status,
Stock: req.Stock,
})
if err != nil {
return nil, err
}
return &v1.CreateSystemRewardRes{Id: out.Id}, nil
} }

View File

@ -2,13 +2,21 @@ package reward
import ( import (
"context" "context"
"server/internal/model"
"github.com/gogf/gf/v2/errors/gcode" "server/internal/service"
"github.com/gogf/gf/v2/errors/gerror"
"server/api/reward/v1" "server/api/reward/v1"
) )
func (c *ControllerV1) DeleteSystemReward(ctx context.Context, req *v1.DeleteSystemRewardReq) (res *v1.DeleteSystemRewardRes, err error) { func (c *ControllerV1) DeleteSystemReward(ctx context.Context, req *v1.DeleteSystemRewardReq) (res *v1.DeleteSystemRewardRes, err error) {
return nil, gerror.NewCode(gcode.CodeNotImplemented)
out, err := service.Reward().DeleteSystemReward(ctx, &model.RewardDeleteIn{
ID: int64(req.Id),
})
if err != nil {
return nil, err
}
return &v1.DeleteSystemRewardRes{
Success: out.Success,
}, nil
} }

View File

@ -2,13 +2,26 @@ package reward
import ( import (
"context" "context"
"server/internal/model"
"github.com/gogf/gf/v2/errors/gcode" "server/internal/service"
"github.com/gogf/gf/v2/errors/gerror"
"server/api/reward/v1" "server/api/reward/v1"
) )
func (c *ControllerV1) ListSystemReward(ctx context.Context, req *v1.ListSystemRewardReq) (res *v1.ListSystemRewardRes, err error) { func (c *ControllerV1) ListSystemReward(ctx context.Context, req *v1.ListSystemRewardReq) (res *v1.ListSystemRewardRes, err error) {
return nil, gerror.NewCode(gcode.CodeNotImplemented)
out, err := service.Reward().ListSystemReward(ctx, &model.RewardListIn{
Name: req.Name,
Page: req.Page,
Size: req.PageSize,
Status: req.Status,
RewardTypeID: req.RewardTypeId,
})
if err != nil {
return nil, err
}
return &v1.ListSystemRewardRes{
List: out.List,
Total: out.Total,
}, nil
} }

View File

@ -2,13 +2,26 @@ package reward
import ( import (
"context" "context"
"server/internal/model"
"github.com/gogf/gf/v2/errors/gcode" "server/internal/service"
"github.com/gogf/gf/v2/errors/gerror"
"server/api/reward/v1" "server/api/reward/v1"
) )
func (c *ControllerV1) UpdateSystemReward(ctx context.Context, req *v1.UpdateSystemRewardReq) (res *v1.UpdateSystemRewardRes, err error) { func (c *ControllerV1) UpdateSystemReward(ctx context.Context, req *v1.UpdateSystemRewardReq) (res *v1.UpdateSystemRewardRes, err error) {
return nil, gerror.NewCode(gcode.CodeNotImplemented)
out, err := service.Reward().UpdateSystemReward(ctx, &model.RewardUpdateIn{
ID: int64(req.Id),
Name: req.Name,
Description: req.Description,
StartAt: req.StartAt,
ExpireAt: req.ExpireAt,
Status: req.Status,
Stock: req.Stock,
RewardTypeID: req.RewardTypeId,
})
if err != nil {
return nil, err
}
return &v1.UpdateSystemRewardRes{Success: out.Success}, nil
} }

View File

@ -16,6 +16,7 @@ type AdminsDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns AdminsColumns // columns contains all the column names of Table for convenient usage. columns AdminsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// AdminsColumns defines and stores column names for the table admins. // AdminsColumns defines and stores column names for the table admins.
@ -49,11 +50,12 @@ var adminsColumns = AdminsColumns{
} }
// NewAdminsDao creates and returns a new DAO object for table data access. // NewAdminsDao creates and returns a new DAO object for table data access.
func NewAdminsDao() *AdminsDao { func NewAdminsDao(handlers ...gdb.ModelHandler) *AdminsDao {
return &AdminsDao{ return &AdminsDao{
group: "default", group: "default",
table: "admins", table: "admins",
columns: adminsColumns, columns: adminsColumns,
handlers: handlers,
} }
} }
@ -79,7 +81,11 @@ func (dao *AdminsDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *AdminsDao) Ctx(ctx context.Context) *gdb.Model { func (dao *AdminsDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type FeedbacksDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns FeedbacksColumns // columns contains all the column names of Table for convenient usage. columns FeedbacksColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// FeedbacksColumns defines and stores column names for the table feedbacks. // FeedbacksColumns defines and stores column names for the table feedbacks.
@ -31,7 +32,7 @@ type FeedbacksColumns struct {
UpdatedAt string // 反馈更新时间 UpdatedAt string // 反馈更新时间
DeletedAt string // 软删除时间戳 DeletedAt string // 软删除时间戳
StoreId string // 门店唯一 id StoreId string // 门店唯一 id
MerchatId string // 商户唯一 id MerchantId string // 商户唯一 id
} }
// feedbacksColumns holds the columns for the table feedbacks. // feedbacksColumns holds the columns for the table feedbacks.
@ -47,15 +48,16 @@ var feedbacksColumns = FeedbacksColumns{
UpdatedAt: "updated_at", UpdatedAt: "updated_at",
DeletedAt: "deleted_at", DeletedAt: "deleted_at",
StoreId: "store_id", StoreId: "store_id",
MerchatId: "merchat_id", MerchantId: "merchant_id",
} }
// NewFeedbacksDao creates and returns a new DAO object for table data access. // NewFeedbacksDao creates and returns a new DAO object for table data access.
func NewFeedbacksDao() *FeedbacksDao { func NewFeedbacksDao(handlers ...gdb.ModelHandler) *FeedbacksDao {
return &FeedbacksDao{ return &FeedbacksDao{
group: "default", group: "default",
table: "feedbacks", table: "feedbacks",
columns: feedbacksColumns, columns: feedbacksColumns,
handlers: handlers,
} }
} }
@ -81,7 +83,11 @@ func (dao *FeedbacksDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *FeedbacksDao) Ctx(ctx context.Context) *gdb.Model { func (dao *FeedbacksDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type MerchantAdminsDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns MerchantAdminsColumns // columns contains all the column names of Table for convenient usage. columns MerchantAdminsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// MerchantAdminsColumns defines and stores column names for the table merchant_admins. // MerchantAdminsColumns defines and stores column names for the table merchant_admins.
@ -59,11 +60,12 @@ var merchantAdminsColumns = MerchantAdminsColumns{
} }
// NewMerchantAdminsDao creates and returns a new DAO object for table data access. // NewMerchantAdminsDao creates and returns a new DAO object for table data access.
func NewMerchantAdminsDao() *MerchantAdminsDao { func NewMerchantAdminsDao(handlers ...gdb.ModelHandler) *MerchantAdminsDao {
return &MerchantAdminsDao{ return &MerchantAdminsDao{
group: "default", group: "default",
table: "merchant_admins", table: "merchant_admins",
columns: merchantAdminsColumns, columns: merchantAdminsColumns,
handlers: handlers,
} }
} }
@ -89,7 +91,11 @@ func (dao *MerchantAdminsDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *MerchantAdminsDao) Ctx(ctx context.Context) *gdb.Model { func (dao *MerchantAdminsDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type MerchantsDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns MerchantsColumns // columns contains all the column names of Table for convenient usage. columns MerchantsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// MerchantsColumns defines and stores column names for the table merchants. // MerchantsColumns defines and stores column names for the table merchants.
@ -71,11 +72,12 @@ var merchantsColumns = MerchantsColumns{
} }
// NewMerchantsDao creates and returns a new DAO object for table data access. // NewMerchantsDao creates and returns a new DAO object for table data access.
func NewMerchantsDao() *MerchantsDao { func NewMerchantsDao(handlers ...gdb.ModelHandler) *MerchantsDao {
return &MerchantsDao{ return &MerchantsDao{
group: "default", group: "default",
table: "merchants", table: "merchants",
columns: merchantsColumns, columns: merchantsColumns,
handlers: handlers,
} }
} }
@ -101,7 +103,11 @@ func (dao *MerchantsDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *MerchantsDao) Ctx(ctx context.Context) *gdb.Model { func (dao *MerchantsDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type RewardTypesDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns RewardTypesColumns // columns contains all the column names of Table for convenient usage. columns RewardTypesColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// RewardTypesColumns defines and stores column names for the table reward_types. // RewardTypesColumns defines and stores column names for the table reward_types.
@ -43,11 +44,12 @@ var rewardTypesColumns = RewardTypesColumns{
} }
// NewRewardTypesDao creates and returns a new DAO object for table data access. // NewRewardTypesDao creates and returns a new DAO object for table data access.
func NewRewardTypesDao() *RewardTypesDao { func NewRewardTypesDao(handlers ...gdb.ModelHandler) *RewardTypesDao {
return &RewardTypesDao{ return &RewardTypesDao{
group: "default", group: "default",
table: "reward_types", table: "reward_types",
columns: rewardTypesColumns, columns: rewardTypesColumns,
handlers: handlers,
} }
} }
@ -73,7 +75,11 @@ func (dao *RewardTypesDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *RewardTypesDao) Ctx(ctx context.Context) *gdb.Model { func (dao *RewardTypesDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type RewardsDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns RewardsColumns // columns contains all the column names of Table for convenient usage. columns RewardsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// RewardsColumns defines and stores column names for the table rewards. // RewardsColumns defines and stores column names for the table rewards.
@ -53,11 +54,12 @@ var rewardsColumns = RewardsColumns{
} }
// NewRewardsDao creates and returns a new DAO object for table data access. // NewRewardsDao creates and returns a new DAO object for table data access.
func NewRewardsDao() *RewardsDao { func NewRewardsDao(handlers ...gdb.ModelHandler) *RewardsDao {
return &RewardsDao{ return &RewardsDao{
group: "default", group: "default",
table: "rewards", table: "rewards",
columns: rewardsColumns, columns: rewardsColumns,
handlers: handlers,
} }
} }
@ -83,7 +85,11 @@ func (dao *RewardsDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *RewardsDao) Ctx(ctx context.Context) *gdb.Model { func (dao *RewardsDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type RolesDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns RolesColumns // columns contains all the column names of Table for convenient usage. columns RolesColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// RolesColumns defines and stores column names for the table roles. // RolesColumns defines and stores column names for the table roles.
@ -45,11 +46,12 @@ var rolesColumns = RolesColumns{
} }
// NewRolesDao creates and returns a new DAO object for table data access. // NewRolesDao creates and returns a new DAO object for table data access.
func NewRolesDao() *RolesDao { func NewRolesDao(handlers ...gdb.ModelHandler) *RolesDao {
return &RolesDao{ return &RolesDao{
group: "default", group: "default",
table: "roles", table: "roles",
columns: rolesColumns, columns: rolesColumns,
handlers: handlers,
} }
} }
@ -75,7 +77,11 @@ func (dao *RolesDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *RolesDao) Ctx(ctx context.Context) *gdb.Model { func (dao *RolesDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type StoreAdminsDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns StoreAdminsColumns // columns contains all the column names of Table for convenient usage. columns StoreAdminsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// StoreAdminsColumns defines and stores column names for the table store_admins. // StoreAdminsColumns defines and stores column names for the table store_admins.
@ -55,11 +56,12 @@ var storeAdminsColumns = StoreAdminsColumns{
} }
// NewStoreAdminsDao creates and returns a new DAO object for table data access. // NewStoreAdminsDao creates and returns a new DAO object for table data access.
func NewStoreAdminsDao() *StoreAdminsDao { func NewStoreAdminsDao(handlers ...gdb.ModelHandler) *StoreAdminsDao {
return &StoreAdminsDao{ return &StoreAdminsDao{
group: "default", group: "default",
table: "store_admins", table: "store_admins",
columns: storeAdminsColumns, columns: storeAdminsColumns,
handlers: handlers,
} }
} }
@ -85,7 +87,11 @@ func (dao *StoreAdminsDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *StoreAdminsDao) Ctx(ctx context.Context) *gdb.Model { func (dao *StoreAdminsDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type StoreRewardsDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns StoreRewardsColumns // columns contains all the column names of Table for convenient usage. columns StoreRewardsColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// StoreRewardsColumns defines and stores column names for the table store_rewards. // StoreRewardsColumns defines and stores column names for the table store_rewards.
@ -33,11 +34,12 @@ var storeRewardsColumns = StoreRewardsColumns{
} }
// NewStoreRewardsDao creates and returns a new DAO object for table data access. // NewStoreRewardsDao creates and returns a new DAO object for table data access.
func NewStoreRewardsDao() *StoreRewardsDao { func NewStoreRewardsDao(handlers ...gdb.ModelHandler) *StoreRewardsDao {
return &StoreRewardsDao{ return &StoreRewardsDao{
group: "default", group: "default",
table: "store_rewards", table: "store_rewards",
columns: storeRewardsColumns, columns: storeRewardsColumns,
handlers: handlers,
} }
} }
@ -63,7 +65,11 @@ func (dao *StoreRewardsDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *StoreRewardsDao) Ctx(ctx context.Context) *gdb.Model { func (dao *StoreRewardsDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type StoresDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns StoresColumns // columns contains all the column names of Table for convenient usage. columns StoresColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// StoresColumns defines and stores column names for the table stores. // StoresColumns defines and stores column names for the table stores.
@ -49,11 +50,12 @@ var storesColumns = StoresColumns{
} }
// NewStoresDao creates and returns a new DAO object for table data access. // NewStoresDao creates and returns a new DAO object for table data access.
func NewStoresDao() *StoresDao { func NewStoresDao(handlers ...gdb.ModelHandler) *StoresDao {
return &StoresDao{ return &StoresDao{
group: "default", group: "default",
table: "stores", table: "stores",
columns: storesColumns, columns: storesColumns,
handlers: handlers,
} }
} }
@ -79,7 +81,11 @@ func (dao *StoresDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *StoresDao) Ctx(ctx context.Context) *gdb.Model { func (dao *StoresDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -16,6 +16,7 @@ type UsersDao struct {
table string // table is the underlying table name of the DAO. table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of the current DAO. group string // group is the database configuration group name of the current DAO.
columns UsersColumns // columns contains all the column names of Table for convenient usage. columns UsersColumns // columns contains all the column names of Table for convenient usage.
handlers []gdb.ModelHandler // handlers for customized model modification.
} }
// UsersColumns defines and stores column names for the table users. // UsersColumns defines and stores column names for the table users.
@ -59,11 +60,12 @@ var usersColumns = UsersColumns{
} }
// NewUsersDao creates and returns a new DAO object for table data access. // NewUsersDao creates and returns a new DAO object for table data access.
func NewUsersDao() *UsersDao { func NewUsersDao(handlers ...gdb.ModelHandler) *UsersDao {
return &UsersDao{ return &UsersDao{
group: "default", group: "default",
table: "users", table: "users",
columns: usersColumns, columns: usersColumns,
handlers: handlers,
} }
} }
@ -89,7 +91,11 @@ func (dao *UsersDao) Group() string {
// Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation. // Ctx creates and returns a Model for the current DAO. It automatically sets the context for the current operation.
func (dao *UsersDao) Ctx(ctx context.Context) *gdb.Model { func (dao *UsersDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx) model := dao.DB().Model(dao.table)
for _, handler := range dao.handlers {
model = handler(model)
}
return model.Safe().Ctx(ctx)
} }
// Transaction wraps the transaction logic using function f. // Transaction wraps the transaction logic using function f.

View File

@ -35,7 +35,7 @@ func (s *sFeedback) List(ctx context.Context, in *model.FeedbackIn) (out *model.
// 判断角色 // 判断角色
if in.Role == consts.MerchantRoleCode { if in.Role == consts.MerchantRoleCode {
m = m.Where(do.Feedbacks{ m = m.Where(do.Feedbacks{
MerchatId: in.OperatorId, MerchantId: in.OperatorId,
}) })
} else if in.Role == consts.StoreRoleCode { } else if in.Role == consts.StoreRoleCode {
m = m.Where(do.Feedbacks{ m = m.Where(do.Feedbacks{
@ -87,7 +87,7 @@ func (s *sFeedback) Create(ctx context.Context, in *model.FeedbackCreateIn) (out
FeedbackType: in.FeedbackType, FeedbackType: in.FeedbackType,
UserId: in.OperatorId, UserId: in.OperatorId,
StoreId: in.StoreId, StoreId: in.StoreId,
MerchatId: in.MerchantId, MerchantId: in.MerchantId,
}) })
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -45,7 +45,7 @@ func (s *sReward) CreateSystemReward(ctx context.Context, in *model.RewardCreate
RewardTypeId: in.RewardTypeID, RewardTypeId: in.RewardTypeID,
RewardScope: consts.SystemReward, // 系统奖励 RewardScope: consts.SystemReward, // 系统奖励
Name: in.Name, Name: in.Name,
Code: "", Code: "xmax",
Description: in.Description, Description: in.Description,
Status: in.Status, Status: in.Status,
Stock: in.Stock, Stock: in.Stock,
@ -139,7 +139,28 @@ func (s *sReward) CreateStoreReward(ctx context.Context, in *model.RewardCreateI
// ListSystemReward 查询系统奖励列表 // ListSystemReward 查询系统奖励列表
func (s *sReward) ListSystemReward(ctx context.Context, in *model.RewardListIn) (out *model.RewardListOut, err error) { func (s *sReward) ListSystemReward(ctx context.Context, in *model.RewardListIn) (out *model.RewardListOut, err error) {
return m := dao.Rewards.Ctx(ctx)
// 构建查询条件
if in.Name != "" {
m = m.WhereLike(dao.Rewards.Columns().Name, "%"+in.Name+"%")
}
if in.RewardTypeID != 0 {
m = m.Where(do.Rewards{RewardTypeId: in.RewardTypeID})
}
list := make([]model.Reward, 0)
var total int
err = m.Page(in.Page, in.Size).Where(do.Rewards{RewardScope: 1, Status: in.Status}).OrderDesc(dao.Rewards.Columns().CreatedAt).OrderDesc(dao.Rewards.Columns().Id).ScanAndCount(&list, &total, false)
if err != nil {
return nil, ecode.Fail.Sub("查询系统奖励失败")
}
return &model.RewardListOut{
List: list,
Total: total,
}, nil
} }
// ListStoreReward 查询门店奖励列表 // ListStoreReward 查询门店奖励列表
@ -201,7 +222,28 @@ func (s *sReward) ListStoreReward(ctx context.Context, in *model.RewardListIn) (
// UpdateSystemReward 更新系统奖励 // UpdateSystemReward 更新系统奖励
func (s *sReward) UpdateSystemReward(ctx context.Context, in *model.RewardUpdateIn) (out *model.UpdateOut, err error) { func (s *sReward) UpdateSystemReward(ctx context.Context, in *model.RewardUpdateIn) (out *model.UpdateOut, err error) {
return exist, err := dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: in.ID}).Exist()
if err != nil {
return nil, ecode.Fail.Sub("查询该奖励失败")
}
if !exist {
return nil, ecode.Params.Sub("该奖励不存在")
}
_, err = dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: in.ID, RewardScope: 1}).Update(do.Rewards{
RewardTypeId: in.RewardTypeID,
Name: in.Name,
Description: in.Description,
Status: in.Status,
Stock: in.Stock,
StartAt: in.StartAt,
ExpireAt: in.ExpireAt,
})
if err != nil {
return nil, ecode.Fail.Sub("更新奖励失败")
}
return &model.UpdateOut{Success: true}, nil
} }
// UpdateStoreReward 更新门店奖励 // UpdateStoreReward 更新门店奖励
@ -295,7 +337,22 @@ func (s *sReward) UpdateStoreReward(ctx context.Context, in *model.RewardUpdateI
// DeleteSystemReward 删除系统奖励 // DeleteSystemReward 删除系统奖励
func (s *sReward) DeleteSystemReward(ctx context.Context, in *model.RewardDeleteIn) (out *model.DeleteOut, err error) { func (s *sReward) DeleteSystemReward(ctx context.Context, in *model.RewardDeleteIn) (out *model.DeleteOut, err error) {
return
exist, err := dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: in.ID}).Exist()
if err != nil {
return nil, ecode.Fail.Sub("查询该奖励失败")
}
if !exist {
return nil, ecode.Params.Sub("该奖励不存在")
}
_, err = dao.Rewards.Ctx(ctx).Where(do.Rewards{Id: in.ID}).Delete()
if err != nil {
return nil, ecode.Fail.Sub("删除奖励失败")
}
return &model.DeleteOut{Success: true}, nil
} }
// DeleteStoreReward 删除门店奖励 // DeleteStoreReward 删除门店奖励

View File

@ -23,5 +23,5 @@ type Feedbacks struct {
UpdatedAt *gtime.Time // 反馈更新时间 UpdatedAt *gtime.Time // 反馈更新时间
DeletedAt *gtime.Time // 软删除时间戳 DeletedAt *gtime.Time // 软删除时间戳
StoreId interface{} // 门店唯一 id StoreId interface{} // 门店唯一 id
MerchatId interface{} // 商户唯一 id MerchantId interface{} // 商户唯一 id
} }

View File

@ -21,5 +21,5 @@ type Feedbacks struct {
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"反馈更新时间"` // 反馈更新时间 UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"反馈更新时间"` // 反馈更新时间
DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间戳"` // 软删除时间戳 DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间戳"` // 软删除时间戳
StoreId int64 `json:"storeId" orm:"store_id" description:"门店唯一 id"` // 门店唯一 id StoreId int64 `json:"storeId" orm:"store_id" description:"门店唯一 id"` // 门店唯一 id
MerchatId int64 `json:"merchatId" orm:"merchat_id" description:"商户唯一 id"` // 商户唯一 id MerchantId int64 `json:"merchantId" orm:"merchant_id" description:"商户唯一 id"` // 商户唯一 id
} }

View File

@ -7,18 +7,18 @@ import (
type Feedback struct { type Feedback struct {
g.Meta `orm:"table:feedback"` g.Meta `orm:"table:feedback"`
Id int64 `json:"id" dc:"ID" orm:"id,primary"` Id int64 `json:"id" orm:"id" description:"反馈唯一标识符"` // 反馈唯一标识符
UserId int64 `json:"user_id" dc:"用户ID" orm:"user_id"` UserId int64 `json:"userId" orm:"user_id" description:"提交者用户ID"` // 提交者用户ID
Title string `json:"title" dc:"反馈标题" orm:"title"` Title string `json:"title" orm:"title" description:"反馈标题"` // 反馈标题
Content string `json:"content" dc:"反馈内容" orm:"content"` Content string `json:"content" orm:"content" description:"反馈内容"` // 反馈内容
FeedbackType int `json:"feedback_type" dc:"反馈类型" orm:"feedback_type"` FeedbackType int `json:"feedbackType" orm:"feedback_type" description:"反馈类型1=BUG2=建议3=投诉4=其他"` // 反馈类型1=BUG2=建议3=投诉4=其他
Status int `json:"status" dc:"状态1=处理2=处理" orm:"status"` Status int `json:"status" orm:"status" description:"处理状态1=处理2=处理3=已处理4=已驳回"` // 处理状态1=待处理2=处理中3=已处理4=已驳回
Reply string `json:"reply" dc:"管理员回复" orm:"reply"` Reply string `json:"reply" orm:"reply" description:"管理员回复内容"` // 管理员回复内容
CreateTime *gtime.Time `json:"create_time" dc:"创建时间" orm:"create_time"` CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"反馈提交时间"` // 反馈提交时间
UpdateTime *gtime.Time `json:"update_time" dc:"更新时间" orm:"update_time"` UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"反馈更新时间"` // 反馈更新时间
DeleteTime *gtime.Time `json:"delete_time" dc:"删除时间" orm:"delete_time"` DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间戳"` // 软删除时间戳
StoreId int64 `json:"store_id" dc:"店铺ID" orm:"store_id"` StoreId int64 `json:"storeId" orm:"store_id" description:"门店唯一 id"` // 门店唯一 id
MerchantId int64 `json:"merchant_id" dc:"商户ID" orm:"merchant_id"` MerchantId int64 `json:"merchantId" orm:"merchant_id" description:"商户唯一 id"` // 商户唯一 id
} }
type FeedbackIn struct { type FeedbackIn struct {

View File

@ -93,6 +93,11 @@ func init() {
enforcer.AddPolicy("admin", "/x/merchant", "GET", "管理员获取商户列表") enforcer.AddPolicy("admin", "/x/merchant", "GET", "管理员获取商户列表")
enforcer.AddPolicy("admin", "/x/merchant/audit", "POST", "管理员审核商户申请") enforcer.AddPolicy("admin", "/x/merchant/audit", "POST", "管理员审核商户申请")
// 奖励
enforcer.AddPolicy("admin", "/x/reward/system", "POST", "管理员创建系统奖励")
enforcer.AddPolicy("admin", "/x/reward/system", "GET", "管理员获取系统奖励列表")
enforcer.AddPolicy("admin", "/x/reward/system/*", "DELETE", "管理员删除系统单个奖励")
enforcer.AddPolicy("admin", "/x/reward/system", "PUT", "管理员修改单个系统奖励")
} }
instance = &myCasbin{Enforcer: enforcer} instance = &myCasbin{Enforcer: enforcer}