feat: 完成B端认证系统和商户管理模块测试补全

主要变更:
- 新增B端认证系统(后台+H5):登录、登出、Token刷新、密码修改
- 完善商户管理和商户账号管理功能
- 补全单元测试(ShopService: 72.5%, ShopAccountService: 79.8%)
- 新增集成测试(商户管理+商户账号管理)
- 归档OpenSpec提案(add-shop-account-management, implement-b-end-auth-system)
- 完善文档(使用指南、API文档、认证架构说明)

测试统计:
- 13个测试套件,37个测试用例,100%通过率
- 平均覆盖率76.2%,达标

OpenSpec验证:通过(strict模式)
This commit is contained in:
2026-01-15 18:15:17 +08:00
parent 7ccd3d146c
commit 18f35f3ef4
64 changed files with 11875 additions and 242 deletions

View File

@@ -1,28 +1,39 @@
package model
// CreateShopRequest 创建店铺请求
type CreateShopRequest struct {
ShopName string `json:"shop_name" validate:"required"` // 店铺名称
ShopCode string `json:"shop_code"` // 店铺编号
ParentID *uint `json:"parent_id"` // 上级店铺ID
ContactName string `json:"contact_name"` // 联系人姓名
ContactPhone string `json:"contact_phone" validate:"omitempty"` // 联系人电话
Province string `json:"province"` // 省份
City string `json:"city"` // 城市
District string `json:"district"` // 区县
Address string `json:"address"` // 详细地址
type ShopListRequest struct {
Page int `json:"page" query:"page" validate:"omitempty,min=1"`
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100"`
ShopName string `json:"shop_name" query:"shop_name" validate:"omitempty,max=100"`
ShopCode string `json:"shop_code" query:"shop_code" validate:"omitempty,max=50"`
ParentID *uint `json:"parent_id" query:"parent_id" validate:"omitempty,min=1"`
Level *int `json:"level" query:"level" validate:"omitempty,min=1,max=7"`
Status *int `json:"status" query:"status" validate:"omitempty,oneof=0 1"`
}
type CreateShopRequest struct {
ShopName string `json:"shop_name" validate:"required,min=1,max=100"`
ShopCode string `json:"shop_code" validate:"required,min=1,max=50"`
ParentID *uint `json:"parent_id" validate:"omitempty,min=1"`
ContactName string `json:"contact_name" validate:"omitempty,max=50"`
ContactPhone string `json:"contact_phone" validate:"omitempty,len=11"`
Province string `json:"province" validate:"omitempty,max=50"`
City string `json:"city" validate:"omitempty,max=50"`
District string `json:"district" validate:"omitempty,max=50"`
Address string `json:"address" validate:"omitempty,max=255"`
InitPassword string `json:"init_password" validate:"required,min=8,max=32"`
InitUsername string `json:"init_username" validate:"required,min=3,max=50"`
InitPhone string `json:"init_phone" validate:"required,len=11"`
}
// UpdateShopRequest 更新店铺请求
type UpdateShopRequest struct {
ShopName *string `json:"shop_name"` // 店铺名称
ShopCode *string `json:"shop_code"` // 店铺编号
ContactName *string `json:"contact_name"` // 联系人姓名
ContactPhone *string `json:"contact_phone"` // 联系人电话
Province *string `json:"province"` // 省份
City *string `json:"city"` // 城市
District *string `json:"district"` // 区县
Address *string `json:"address"` // 详细地址
ShopName string `json:"shop_name" validate:"required,min=1,max=100"`
ContactName string `json:"contact_name" validate:"omitempty,max=50"`
ContactPhone string `json:"contact_phone" validate:"omitempty,len=11"`
Province string `json:"province" validate:"omitempty,max=50"`
City string `json:"city" validate:"omitempty,max=50"`
District string `json:"district" validate:"omitempty,max=50"`
Address string `json:"address" validate:"omitempty,max=255"`
Status int `json:"status" validate:"required,oneof=0 1"`
}
// ShopResponse 店铺响应