新增奖励类型的 CRUD

This commit is contained in:
chy
2025-06-05 10:11:59 +08:00
parent 1db01717fe
commit ba389a1011
16 changed files with 405 additions and 2 deletions

View File

@ -0,0 +1,18 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package rewardType
import (
"context"
"server/api/rewardType/v1"
)
type IRewardTypeV1 interface {
List(ctx context.Context, req *v1.ListReq) (res *v1.ListRes, err error)
Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error)
Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error)
Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, err error)
}

View File

@ -0,0 +1,49 @@
package v1
import "github.com/gogf/gf/v2/frame/g"
type ListReq struct {
g.Meta `path:"/rewardType" method:"get" tags:"奖励类型" summary:"获取奖励类型列表"`
Page int `json:"page" v:"required#页码不能为空" dc:"页码"`
Size int `json:"size" v:"required#页大小不能为空" dc:"页大小"`
}
type ListRes struct {
List interface{} `json:"list" dc:"奖励类型列表"`
Total int `json:"total" dc:"总条数"`
}
type CreateReq struct {
g.Meta `path:"/rewardType" method:"post" tags:"奖励类型" summary:"创建奖励类型"`
Name string `json:"name" v:"required#名称不能为空" dc:"名称"`
//Sort int `json:"sort" v:"required#排序不能为空" dc:"排序"`
Code string `json:"code" v:"required#代号不能为空" dc:"代号"`
Description string `json:"description" v:"required#描述不能为空" dc:"描述"`
//Status int `json:"status" v:"required#状态不能为空" dc:"状态"`
}
type CreateRes struct {
Id int64 `json:"id" dc:"ID"`
}
type UpdateReq struct {
g.Meta `path:"/rewardType" method:"put" tags:"奖励类型" summary:"更新奖励类型"`
Id int64 `json:"id" v:"required#ID不能为空" dc:"ID"`
Name string `json:"name" v:"required#名称不能为空" dc:"名称"`
Code string `json:"code" v:"required#代号不能为空" dc:"代号"`
Description string `json:"description" v:"required#描述不能为空" dc:"描述"`
Status int `json:"status" v:"required#状态不能为空" dc:"状态"`
}
type UpdateRes struct {
Success bool `json:"success" dc:"是否成功"`
}
type DeleteReq struct {
g.Meta `path:"/rewardType/{id}" method:"delete" tags:"奖励类型" summary:"删除奖励类型"`
Id int64 `path:"id" v:"required#ID不能为空" dc:"ID"`
}
type DeleteRes struct {
Success bool `json:"success" dc:"是否成功"`
}

View File

@ -4,6 +4,6 @@
gfcli:
gen:
dao:
- link: "mysql:root:MSms0427@tcp(127.0.0.1:3306)/arenax"
- link: "mysql:root:MSms0427@tcp(192.168.3.132:3306)/arenax"
descriptionTag: true
tablesEx: "casbin_rule"

View File

@ -9,6 +9,7 @@ import (
"server/internal/controller/auth"
"server/internal/controller/menu"
"server/internal/controller/merchant"
"server/internal/controller/rewardType"
"server/internal/controller/role"
"server/internal/controller/wx"
"server/internal/middleware"
@ -36,6 +37,7 @@ var (
role.NewV1(),
menu.NewV1(),
merchant.NewV1(),
rewardType.NewV1(),
)
})
})

View File

@ -0,0 +1,5 @@
// =================================================================================
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
// =================================================================================
package rewardType

View File

@ -0,0 +1,15 @@
// =================================================================================
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
// =================================================================================
package rewardType
import (
"server/api/rewardType"
)
type ControllerV1 struct{}
func NewV1() rewardType.IRewardTypeV1 {
return &ControllerV1{}
}

View File

@ -0,0 +1,23 @@
package rewardType
import (
"context"
"server/internal/model"
"server/internal/service"
"server/api/rewardType/v1"
)
func (c *ControllerV1) Create(ctx context.Context, req *v1.CreateReq) (res *v1.CreateRes, err error) {
out, err := service.RewardType().CreateRewardType(ctx, &model.CreateRewardTypeIn{
Code: req.Code,
Description: req.Description,
Name: req.Name,
})
if err != nil {
return nil, err
}
return &v1.CreateRes{
Id: out.Id,
}, err
}

View File

@ -0,0 +1,19 @@
package rewardType
import (
"context"
"server/internal/model"
"server/internal/service"
"server/api/rewardType/v1"
)
func (c *ControllerV1) Delete(ctx context.Context, req *v1.DeleteReq) (res *v1.DeleteRes, err error) {
out, err := service.RewardType().DeleteRewardType(ctx, &model.DeleteRewardTypeIn{Id: req.Id})
if err != nil {
return nil, err
}
return &v1.DeleteRes{
Success: out.Success,
}, err
}

View File

@ -0,0 +1,20 @@
package rewardType
import (
"context"
"server/internal/model"
"server/internal/service"
"server/api/rewardType/v1"
)
func (c *ControllerV1) List(ctx context.Context, req *v1.ListReq) (res *v1.ListRes, err error) {
out, err := service.RewardType().List(ctx, &model.RewardTypeIn{Page: req.Page, Size: req.Size})
if err != nil {
return nil, err
}
return &v1.ListRes{
List: out.List,
Total: out.Total,
}, nil
}

View File

@ -0,0 +1,26 @@
package rewardType
import (
"context"
"server/internal/model"
"server/internal/service"
"server/api/rewardType/v1"
)
func (c *ControllerV1) Update(ctx context.Context, req *v1.UpdateReq) (res *v1.UpdateRes, err error) {
out, err := service.RewardType().UpdateRewardType(ctx, &model.UpdateRewardTypeIn{
Id: req.Id,
Name: req.Name,
Code: req.Code,
Status: req.Status,
Description: req.Description,
})
if err != nil {
return nil, err
}
return &v1.UpdateRes{
Success: out.Success,
}, err
}

View File

@ -9,6 +9,7 @@ import (
_ "server/internal/logic/menu"
_ "server/internal/logic/merchant"
_ "server/internal/logic/merchantAdmin"
_ "server/internal/logic/rewardType"
_ "server/internal/logic/role"
_ "server/internal/logic/store"
_ "server/internal/logic/storeAdmin"

View File

@ -0,0 +1,127 @@
package rewardType
import (
"context"
"server/internal/dao"
"server/internal/model"
"server/internal/model/do"
"server/internal/service"
"server/utility/ecode"
)
type sRewardType struct {
}
func New() service.IRewardType {
return &sRewardType{}
}
func init() {
service.RegisterRewardType(New())
}
func (s *sRewardType) List(ctx context.Context, in *model.RewardTypeIn) (out *model.RewardTypeOut, err error) {
m := dao.RewardTypes.Ctx(ctx)
// 默认分页
if in.Page == 0 {
in.Page = 1
}
if in.Size == 0 {
in.Size = 10
}
list := make([]model.RewardType, 0)
var total int
err = m.Page(in.Page, in.Size).OrderDesc(dao.RewardTypes.Columns().CreatedAt).ScanAndCount(&list, &total, false)
if err != nil {
return nil, err
}
return &model.RewardTypeOut{
List: list,
Total: total,
}, nil
}
func (s *sRewardType) CreateRewardType(ctx context.Context, in *model.CreateRewardTypeIn) (out *model.CreateRewardTypeOut, err error) {
// 检查类型名称是否存在
exist, err := dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Name: in.Name}).Exist()
if err != nil {
return nil, err
}
if exist {
return nil, ecode.Params.Sub("类型名称已存在")
}
exist, err = dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Code: in.Code}).Exist()
if err != nil {
return nil, err
}
if exist {
return nil, ecode.Params.Sub("类型代号已存在")
}
id, err := dao.RewardTypes.Ctx(ctx).InsertAndGetId(do.RewardTypes{
Name: in.Name,
Code: in.Code,
Description: in.Description,
})
if err != nil {
return nil, err
}
return &model.CreateRewardTypeOut{Id: id}, nil
}
func (s *sRewardType) UpdateRewardType(ctx context.Context, in *model.UpdateRewardTypeIn) (out *model.UpdateRewardTypeOut, err error) {
// 检查更新的是否存在
exist, err := dao.RewardTypes.Ctx(ctx).WherePri(in.Id).Exist()
if err != nil {
return nil, ecode.Params.Sub("查询奖励失败")
}
if !exist {
return nil, ecode.Params.Sub("更新的奖励不存在")
}
exist, err = dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Name: in.Name}).Exist()
if err != nil {
return nil, ecode.Params.Sub("查询奖励类型失败")
}
if exist {
return nil, ecode.Params.Sub("奖励类型名称已存在")
}
// 更新奖励类型
_, err = dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Id: in.Id}).Update(do.RewardTypes{
Name: in.Name,
Status: in.Status,
Code: in.Code,
Description: in.Description,
})
if err != nil {
return nil, err
}
return &model.UpdateRewardTypeOut{Success: true}, nil
}
func (s *sRewardType) DeleteRewardType(ctx context.Context, in *model.DeleteRewardTypeIn) (out *model.DeleteRewardTypeOut, err error) {
exist, err := dao.RewardTypes.Ctx(ctx).WherePri(do.RewardTypes{
Id: in.Id,
}).Exist()
if err != nil {
return nil, ecode.Params.Sub("查询删除奖励类型失败")
}
if !exist {
return nil, ecode.Params.Sub("删除的奖励类型不存在")
}
_, err = dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Id: in.Id}).Delete()
if err != nil {
return nil, err
}
return &model.DeleteRewardTypeOut{Success: true}, nil
}

View File

@ -0,0 +1,55 @@
package model
import "github.com/gogf/gf/v2/frame/g"
type RewardType struct {
g.Meta `orm:"table:reward_type"`
Id int64 `json:"id" dc:"ID" orm:"id,primary"`
Name string `json:"name" dc:"名称" orm:"name"`
Sort int `json:"sort" dc:"排序" orm:"sort"`
Status int `json:"status" dc:"状态1=启用2=禁用" orm:"status"`
}
type RewardTypeIn struct {
Page int
Size int
}
type RewardTypeOut struct {
List []RewardType
Total int
}
type CreateRewardTypeIn struct {
Name string
Code string
Description string
Status int
}
type CreateRewardTypeOut struct {
Id int64
}
// UpdateRewardTypeIn 更新奖励类型传入参数
type UpdateRewardTypeIn struct {
Id int64
Name string
Code string
Description string
Status int
}
// UpdateRewardTypeOut 更新奖励类型返回参数
type UpdateRewardTypeOut struct {
Success bool
}
// DeleteRewardTypeIn 删除奖励类型传入参数
type DeleteRewardTypeIn struct {
Id int64
}
// DeleteRewardTypeOut 删除奖励类型返回参数
type DeleteRewardTypeOut struct {
Success bool
}

View File

@ -0,0 +1,35 @@
// ================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// You can delete these comments if you wish manually maintain this interface file.
// ================================================================================
package service
import (
"context"
"server/internal/model"
)
type (
IRewardType interface {
List(ctx context.Context, in *model.RewardTypeIn) (out *model.RewardTypeOut, err error)
CreateRewardType(ctx context.Context, in *model.CreateRewardTypeIn) (out *model.CreateRewardTypeOut, err error)
UpdateRewardType(ctx context.Context, in *model.UpdateRewardTypeIn) (out *model.UpdateRewardTypeOut, err error)
DeleteRewardType(ctx context.Context, in *model.DeleteRewardTypeIn) (out *model.DeleteRewardTypeOut, err error)
}
)
var (
localRewardType IRewardType
)
func RewardType() IRewardType {
if localRewardType == nil {
panic("implement not found for interface IRewardType, forgot register?")
}
return localRewardType
}
func RegisterRewardType(i IRewardType) {
localRewardType = i
}

View File

@ -15,7 +15,7 @@ database:
level: "all"
stdout: true
default:
link: "mysql:root:MSms0427@tcp(127.0.0.1:3306)/arenax?loc=Local&charset=utf8mb4"
link: "mysql:root:MSms0427@tcp(192.168.3.132:3306)/arenax?loc=Local&charset=utf8mb4"
debug: true
# Redis configuration.

View File

@ -38,6 +38,14 @@ func init() {
enforcer.AddGroupingPolicy(consts.MerchantRoleCode, consts.StoreRoleCode) // 商户继承门店角色权限
enforcer.AddGroupingPolicy(consts.AdminRoleCode, consts.MerchantRoleCode) // 管理员继承商户角色权限
// 门店
{
// 奖励类型
enforcer.AddPolicy("store", "/x/rewardType", "GET", "获取奖励类型列表")
enforcer.AddPolicy("store", "/x/rewardType", "POST", "添加奖励类型")
enforcer.AddPolicy("store", "/x/rewardType", "PUT", "更新奖励类型")
enforcer.AddPolicy("store", "/x/rewardType/*", "DELETE", "删除奖励类型")
}
// 管理员
{
// admin