diff --git a/api/rewardType/rewardType.go b/api/rewardType/rewardType.go new file mode 100644 index 0000000..af9e483 --- /dev/null +++ b/api/rewardType/rewardType.go @@ -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) +} diff --git a/api/rewardType/v1/rewardType.go b/api/rewardType/v1/rewardType.go new file mode 100644 index 0000000..6add211 --- /dev/null +++ b/api/rewardType/v1/rewardType.go @@ -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:"是否成功"` +} diff --git a/hack/config.yaml b/hack/config.yaml index bb811f0..125fe0d 100644 --- a/hack/config.yaml +++ b/hack/config.yaml @@ -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" \ No newline at end of file diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index df94f4a..6f7a76f 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -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(), ) }) }) diff --git a/internal/controller/rewardType/rewardType.go b/internal/controller/rewardType/rewardType.go new file mode 100644 index 0000000..2455c5d --- /dev/null +++ b/internal/controller/rewardType/rewardType.go @@ -0,0 +1,5 @@ +// ================================================================================= +// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish. +// ================================================================================= + +package rewardType diff --git a/internal/controller/rewardType/rewardType_new.go b/internal/controller/rewardType/rewardType_new.go new file mode 100644 index 0000000..e0dc7f6 --- /dev/null +++ b/internal/controller/rewardType/rewardType_new.go @@ -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{} +} diff --git a/internal/controller/rewardType/rewardType_v1_create.go b/internal/controller/rewardType/rewardType_v1_create.go new file mode 100644 index 0000000..151c7b8 --- /dev/null +++ b/internal/controller/rewardType/rewardType_v1_create.go @@ -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 +} diff --git a/internal/controller/rewardType/rewardType_v1_delete.go b/internal/controller/rewardType/rewardType_v1_delete.go new file mode 100644 index 0000000..73e6e98 --- /dev/null +++ b/internal/controller/rewardType/rewardType_v1_delete.go @@ -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 +} diff --git a/internal/controller/rewardType/rewardType_v1_list.go b/internal/controller/rewardType/rewardType_v1_list.go new file mode 100644 index 0000000..a61dc4a --- /dev/null +++ b/internal/controller/rewardType/rewardType_v1_list.go @@ -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 +} diff --git a/internal/controller/rewardType/rewardType_v1_update.go b/internal/controller/rewardType/rewardType_v1_update.go new file mode 100644 index 0000000..62ae9e4 --- /dev/null +++ b/internal/controller/rewardType/rewardType_v1_update.go @@ -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 +} diff --git a/internal/logic/logic.go b/internal/logic/logic.go index 024e05f..a018f76 100644 --- a/internal/logic/logic.go +++ b/internal/logic/logic.go @@ -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" diff --git a/internal/logic/rewardType/rewardType.go b/internal/logic/rewardType/rewardType.go new file mode 100644 index 0000000..9af04dc --- /dev/null +++ b/internal/logic/rewardType/rewardType.go @@ -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 +} diff --git a/internal/model/rewardType.go b/internal/model/rewardType.go new file mode 100644 index 0000000..7a96ee1 --- /dev/null +++ b/internal/model/rewardType.go @@ -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 +} diff --git a/internal/service/reward_type.go b/internal/service/reward_type.go new file mode 100644 index 0000000..6b5da7d --- /dev/null +++ b/internal/service/reward_type.go @@ -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 +} diff --git a/manifest/config/config.yaml b/manifest/config/config.yaml index 572fa37..d3c6544 100644 --- a/manifest/config/config.yaml +++ b/manifest/config/config.yaml @@ -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. diff --git a/utility/myCasbin/casbin.go b/utility/myCasbin/casbin.go index bc07771..d27e161 100644 --- a/utility/myCasbin/casbin.go +++ b/utility/myCasbin/casbin.go @@ -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