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

@@ -0,0 +1,48 @@
package model
// ShopAccountListRequest 代理商账号列表查询请求
type ShopAccountListRequest 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"` // 每页数量
ShopID *uint `json:"shop_id" query:"shop_id" validate:"omitempty,min=1"` // 店铺ID过滤
Username string `json:"username" query:"username" validate:"omitempty,max=50"` // 用户名(模糊查询)
Phone string `json:"phone" query:"phone" validate:"omitempty,len=11"` // 手机号(精确查询)
Status *int `json:"status" query:"status" validate:"omitempty,oneof=0 1"` // 状态
}
// CreateShopAccountRequest 创建代理商账号请求
type CreateShopAccountRequest struct {
ShopID uint `json:"shop_id" validate:"required,min=1"` // 店铺ID
Username string `json:"username" validate:"required,min=3,max=50"` // 用户名
Phone string `json:"phone" validate:"required,len=11"` // 手机号
Password string `json:"password" validate:"required,min=8,max=32"` // 密码
}
// UpdateShopAccountRequest 更新代理商账号请求
type UpdateShopAccountRequest struct {
Username string `json:"username" validate:"required,min=3,max=50"` // 用户名
// 注意:不包含 phone 和 password按照业务规则不允许修改
}
// UpdateShopAccountPasswordRequest 修改代理商账号密码请求(管理员重置)
type UpdateShopAccountPasswordRequest struct {
NewPassword string `json:"new_password" validate:"required,min=8,max=32"` // 新密码
}
// UpdateShopAccountStatusRequest 修改代理商账号状态请求
type UpdateShopAccountStatusRequest struct {
Status int `json:"status" validate:"required,oneof=0 1"` // 状态0=禁用 1=启用)
}
// ShopAccountResponse 代理商账号响应
type ShopAccountResponse struct {
ID uint `json:"id"`
ShopID uint `json:"shop_id"`
ShopName string `json:"shop_name,omitempty"` // 关联查询时填充
Username string `json:"username"`
Phone string `json:"phone"`
UserType int `json:"user_type"`
Status int `json:"status"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}