生成门店 service 层代码

This commit is contained in:
2025-06-05 10:15:00 +08:00
parent 7faad8b3c4
commit a9dabbbe21
5 changed files with 130 additions and 5 deletions

View File

@ -78,6 +78,5 @@ func (s *sMerchant) Audit(ctx context.Context, in *model.MerchantAuditIn) (out *
} }
func (s *sMerchant) Create(ctx context.Context, in *model.MerchantCreateIn) (out *model.CreateOut, err error) { func (s *sMerchant) Create(ctx context.Context, in *model.MerchantCreateIn) (out *model.CreateOut, err error) {
return return
} }

View File

@ -1 +1,77 @@
package store package store
import (
"context"
"server/internal/dao"
"server/internal/model"
"server/internal/model/do"
"server/internal/service"
"server/utility/ecode"
"github.com/gogf/gf/v2/database/gdb"
)
type sStore struct {
}
func New() service.IStore {
return &sStore{}
}
func init() {
service.RegisterStore(New())
}
func (s *sStore) List(ctx context.Context, in *model.StoreListIn) (out *model.StoreListOut, err error) {
// 1. 初始化返回数据
return
}
func (s *sStore) Create(ctx context.Context, in *model.StoreCreateIn) (out *model.CreateOut, err error) {
// 1. 检查门店名称是否重复
exist, err := dao.Stores.Ctx(ctx).Where(do.Stores{Name: in.Name}).Exist()
if err != nil {
return nil, ecode.Fail.Sub("新增门店查重出现异常")
}
if exist {
return nil, ecode.Params.Sub("门店名称已存在")
}
// 2. 使用事务处理数据插入
if err = dao.Stores.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
// 2.1 生成唯一的门店编号
// 2.2 插入门店基本信息
// 2.3 创建门店管理员账号
// 2.4 初始化门店配置
return nil
}); err != nil {
return nil, err
}
return
}
func (s *sStore) Update(ctx context.Context, in *model.StoreUpdateIn) (out *model.UpdateOut, err error) {
// 1. 验证门店是否存在
// 2. 验证操作权限(商户管理员或门店管理员)
// 3. 检查更新后的门店名称是否重复
// 4. 使用事务更新门店信息
// 5. 记录操作日志
return
}
func (s *sStore) Delete(ctx context.Context, in *model.StoreDeleteIn) (out *model.DeleteOut, err error) {
// 1. 验证门店是否存在
// 2. 验证操作权限(仅允许商户管理员)
// 3. 检查门店状态(是否有关联数据)
// 4. 使用事务处理删除操作
// 5. 清理相关数据
// 6. 记录操作日志
return
}
func (s *sStore) Info(ctx context.Context, in *model.StoreInfoIn) (out *model.StoreInfoOut, err error) {
// 1. 验证门店是否存在
// 2. 验证访问权限
// 3. 获取门店基本信息
// 4. 获取门店配置信息
// 5. 获取门店管理员信息
// 6. 获取门店统计信息
// 7. 处理敏感信息
return
}

View File

@ -16,11 +16,32 @@ type Store struct {
Status int `json:"status" orm:"status,default:1" dc:"状态1=正常营业2=暂停营业3=已关闭"` Status int `json:"status" orm:"status,default:1" dc:"状态1=正常营业2=暂停营业3=已关闭"`
} }
type CreateIn struct { type StoreCreateIn struct {
Name string `json:"name" v:"required" dc:"门店名称"` Name string
} }
type UpdateIn struct { type StoreUpdateIn struct {
Id int Id int
Name string Name string
} }
type StoreListIn struct {
MerchantId int
Page int
Size int
Status int
}
type StoreListOut struct {
List []Store
Total int
}
type StoreInfoIn struct {
Id int
}
type StoreInfoOut struct {
}
type StoreDeleteIn struct {
Id int
}

View File

@ -5,4 +5,32 @@
package service package service
type () import (
"context"
"server/internal/model"
)
type (
IStore interface {
List(ctx context.Context, in *model.StoreListIn) (out *model.StoreListOut, err error)
Create(ctx context.Context, in *model.StoreCreateIn) (out *model.CreateOut, err error)
Update(ctx context.Context, in *model.StoreUpdateIn) (out *model.UpdateOut, err error)
Delete(ctx context.Context, in *model.StoreDeleteIn) (out *model.DeleteOut, err error)
Info(ctx context.Context, in *model.StoreInfoIn) (out *model.StoreInfoOut, err error)
}
)
var (
localStore IStore
)
func Store() IStore {
if localStore == nil {
panic("implement not found for interface IStore, forgot register?")
}
return localStore
}
func RegisterStore(i IStore) {
localStore = i
}

View File

@ -16,6 +16,7 @@ type (
Info(ctx context.Context, in *model.UserInfoIn) (out *model.UserInfoOut, err error) Info(ctx context.Context, in *model.UserInfoIn) (out *model.UserInfoOut, err error)
Update(ctx context.Context, in *model.UserUpdateIn) (out *model.UpdateOut, err error) Update(ctx context.Context, in *model.UserUpdateIn) (out *model.UpdateOut, err error)
BindPhone(ctx context.Context, in *model.UserBindPhoneIn) (out *model.UpdateOut, err error) BindPhone(ctx context.Context, in *model.UserBindPhoneIn) (out *model.UpdateOut, err error)
List(ctx context.Context, in *model.UserListIn) (out *model.UserListOut, err error)
} }
) )