refactor: 将 DTO 文件从 internal/model 移动到 internal/model/dto 目录
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m22s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m22s
- 移动 17 个 DTO 文件到 internal/model/dto/ 目录 - 更新所有 DTO 文件的 package 声明从 model 改为 dto - 更新所有引用文件的 import 和类型引用 - Handler 层:admin 和 h5 所有处理器 - Service 层:所有业务服务 - Routes 层:所有路由定义 - Tests 层:单元测试和集成测试 - 清理未使用的 import 语句 - 验证:项目构建成功,测试编译通过,LSP 无错误
This commit is contained in:
94
internal/model/dto/account_dto.go
Normal file
94
internal/model/dto/account_dto.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package dto
|
||||
|
||||
// CreateAccountRequest 创建账号请求
|
||||
type CreateAccountRequest struct {
|
||||
Username string `json:"username" validate:"required,min=3,max=50" required:"true" minLength:"3" maxLength:"50" description:"用户名"`
|
||||
Phone string `json:"phone" validate:"required,len=11" required:"true" minLength:"11" maxLength:"11" description:"手机号"`
|
||||
Password string `json:"password" validate:"required,min=8,max=32" required:"true" minLength:"8" maxLength:"32" description:"密码"`
|
||||
UserType int `json:"user_type" validate:"required,min=1,max=4" required:"true" minimum:"1" maximum:"4" description:"用户类型 (1:超级管理员, 2:平台用户, 3:代理账号, 4:企业账号)"`
|
||||
ShopID *uint `json:"shop_id" description:"关联店铺ID(代理账号必填)"`
|
||||
EnterpriseID *uint `json:"enterprise_id" description:"关联企业ID(企业账号必填)"`
|
||||
}
|
||||
|
||||
// UpdateAccountRequest 更新账号请求
|
||||
type UpdateAccountRequest struct {
|
||||
Username *string `json:"username" validate:"omitempty,min=3,max=50" minLength:"3" maxLength:"50" description:"用户名"`
|
||||
Phone *string `json:"phone" validate:"omitempty,len=11" minLength:"11" maxLength:"11" description:"手机号"`
|
||||
Password *string `json:"password" validate:"omitempty,min=8,max=32" minLength:"8" maxLength:"32" description:"密码"`
|
||||
Status *int `json:"status" validate:"omitempty,min=0,max=1" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// AccountListRequest 账号列表查询请求
|
||||
type AccountListRequest struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
Username string `json:"username" query:"username" validate:"omitempty,max=50" maxLength:"50" description:"用户名模糊查询"`
|
||||
Phone string `json:"phone" query:"phone" validate:"omitempty,max=20" maxLength:"20" description:"手机号模糊查询"`
|
||||
UserType *int `json:"user_type" query:"user_type" validate:"omitempty,min=1,max=4" minimum:"1" maximum:"4" description:"用户类型 (1:超级管理员, 2:平台用户, 3:代理账号, 4:企业账号)"`
|
||||
Status *int `json:"status" query:"status" validate:"omitempty,min=0,max=1" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// AccountResponse 账号响应
|
||||
type AccountResponse struct {
|
||||
ID uint `json:"id" description:"账号ID"`
|
||||
Username string `json:"username" description:"用户名"`
|
||||
Phone string `json:"phone" description:"手机号"`
|
||||
UserType int `json:"user_type" description:"用户类型 (1:超级管理员, 2:平台用户, 3:代理账号, 4:企业账号)"`
|
||||
ShopID *uint `json:"shop_id,omitempty" description:"关联店铺ID"`
|
||||
EnterpriseID *uint `json:"enterprise_id,omitempty" description:"关联企业ID"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
Creator uint `json:"creator" description:"创建人ID"`
|
||||
Updater uint `json:"updater" description:"更新人ID"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
UpdatedAt string `json:"updated_at" description:"更新时间"`
|
||||
}
|
||||
|
||||
// AssignRolesRequest 分配角色请求
|
||||
// 支持传递空数组以清空账号的所有角色
|
||||
type AssignRolesRequest struct {
|
||||
RoleIDs []uint `json:"role_ids" validate:"omitempty" description:"角色ID列表,传空数组可清空所有角色"`
|
||||
}
|
||||
|
||||
// AccountPageResult 账号分页响应
|
||||
type AccountPageResult struct {
|
||||
Items []AccountResponse `json:"items" description:"账号列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// ========== 平台账号管理专用 DTO ==========
|
||||
|
||||
// UpdatePasswordRequest 修改密码请求
|
||||
// 用于管理员重置密码场景,无需验证旧密码
|
||||
type UpdatePasswordRequest struct {
|
||||
NewPassword string `json:"new_password" validate:"required,min=8,max=32" required:"true" minLength:"8" maxLength:"32" description:"新密码(8-32位)"`
|
||||
}
|
||||
|
||||
// UpdateStatusRequest 状态切换请求
|
||||
// 用于启用/禁用账号
|
||||
type UpdateStatusRequest struct {
|
||||
Status int `json:"status" validate:"required,min=0,max=1" required:"true" minimum:"0" maximum:"1" description:"状态(0:禁用,1:启用)"`
|
||||
}
|
||||
|
||||
// PlatformAccountListRequest 平台账号列表查询请求
|
||||
// 自动筛选 user_type IN (1, 2) 的账号
|
||||
type PlatformAccountListRequest struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
Username string `json:"username" query:"username" validate:"omitempty,max=50" maxLength:"50" description:"用户名模糊查询"`
|
||||
Phone string `json:"phone" query:"phone" validate:"omitempty,max=20" maxLength:"20" description:"手机号模糊查询"`
|
||||
Status *int `json:"status" query:"status" validate:"omitempty,min=0,max=1" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// UpdatePasswordParams 修改密码参数(用于 OpenAPI 生成)
|
||||
type UpdatePasswordParams struct {
|
||||
IDReq
|
||||
UpdatePasswordRequest
|
||||
}
|
||||
|
||||
// UpdateStatusParams 状态切换参数(用于 OpenAPI 生成)
|
||||
type UpdateStatusParams struct {
|
||||
IDReq
|
||||
UpdateStatusRequest
|
||||
}
|
||||
16
internal/model/dto/account_role_dto.go
Normal file
16
internal/model/dto/account_role_dto.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package dto
|
||||
|
||||
// AccountRoleResponse 账号-角色关联响应
|
||||
type AccountRoleResponse struct {
|
||||
ID uint `json:"id" description:"关联ID"`
|
||||
AccountID uint `json:"account_id" description:"账号ID"`
|
||||
RoleID uint `json:"role_id" description:"角色ID"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
}
|
||||
|
||||
// AccountRolesResponse 账号的角色列表响应
|
||||
type AccountRolesResponse struct {
|
||||
AccountID uint `json:"account_id" description:"账号ID"`
|
||||
Roles []*RoleResponse `json:"roles" description:"角色列表"`
|
||||
}
|
||||
41
internal/model/dto/auth_dto.go
Normal file
41
internal/model/dto/auth_dto.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package dto
|
||||
|
||||
type LoginRequest struct {
|
||||
Username string `json:"username" validate:"required"`
|
||||
Password string `json:"password" validate:"required"`
|
||||
Device string `json:"device" validate:"omitempty,oneof=web h5 mobile"`
|
||||
}
|
||||
|
||||
type LoginResponse struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
RefreshToken string `json:"refresh_token"`
|
||||
ExpiresIn int64 `json:"expires_in"`
|
||||
User UserInfo `json:"user"`
|
||||
Permissions []string `json:"permissions"`
|
||||
}
|
||||
|
||||
type UserInfo struct {
|
||||
ID uint `json:"id" description:"用户ID"`
|
||||
Username string `json:"username" description:"用户名"`
|
||||
Phone string `json:"phone" description:"手机号"`
|
||||
UserType int `json:"user_type" description:"用户类型 (1:超级管理员, 2:平台用户, 3:代理账号, 4:企业账号)"`
|
||||
UserTypeName string `json:"user_type_name" description:"用户类型名称"`
|
||||
ShopID uint `json:"shop_id,omitempty" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name,omitempty" description:"店铺名称"`
|
||||
EnterpriseID uint `json:"enterprise_id,omitempty" description:"企业ID"`
|
||||
EnterpriseName string `json:"enterprise_name,omitempty" description:"企业名称"`
|
||||
}
|
||||
|
||||
type RefreshTokenRequest struct {
|
||||
RefreshToken string `json:"refresh_token" validate:"required"`
|
||||
}
|
||||
|
||||
type RefreshTokenResponse struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
ExpiresIn int64 `json:"expires_in"`
|
||||
}
|
||||
|
||||
type ChangePasswordRequest struct {
|
||||
OldPassword string `json:"old_password" validate:"required"`
|
||||
NewPassword string `json:"new_password" validate:"required,min=8,max=32"`
|
||||
}
|
||||
74
internal/model/dto/commission_withdrawal_dto.go
Normal file
74
internal/model/dto/commission_withdrawal_dto.go
Normal file
@@ -0,0 +1,74 @@
|
||||
package dto
|
||||
|
||||
// WithdrawalRequestListReq 提现申请列表查询请求
|
||||
type WithdrawalRequestListReq struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码(默认1)"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量(默认20,最大100)"`
|
||||
Status *int `json:"status" query:"status" validate:"omitempty,min=1,max=4" minimum:"1" maximum:"4" description:"状态 (1:待审核, 2:已通过, 3:已拒绝, 4:已到账)"`
|
||||
WithdrawalNo string `json:"withdrawal_no" query:"withdrawal_no" validate:"omitempty,max=50" maxLength:"50" description:"提现单号(精确查询)"`
|
||||
ShopName string `json:"shop_name" query:"shop_name" validate:"omitempty,max=100" maxLength:"100" description:"店铺名称(模糊查询)"`
|
||||
StartTime string `json:"start_time" query:"start_time" validate:"omitempty" description:"申请开始时间(格式:2006-01-02 15:04:05)"`
|
||||
EndTime string `json:"end_time" query:"end_time" validate:"omitempty" description:"申请结束时间(格式:2006-01-02 15:04:05)"`
|
||||
}
|
||||
|
||||
// WithdrawalRequestItem 提现申请列表项
|
||||
type WithdrawalRequestItem struct {
|
||||
ID uint `json:"id" description:"提现申请ID"`
|
||||
WithdrawalNo string `json:"withdrawal_no" description:"提现单号"`
|
||||
Amount int64 `json:"amount" description:"提现金额(分)"`
|
||||
FeeRate int64 `json:"fee_rate" description:"手续费比率(基点,100=1%)"`
|
||||
Fee int64 `json:"fee" description:"手续费(分)"`
|
||||
ActualAmount int64 `json:"actual_amount" description:"实际到账金额(分)"`
|
||||
Status int `json:"status" description:"状态 (1:待审核, 2:已通过, 3:已拒绝, 4:已到账)"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
ShopID uint `json:"shop_id" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name" description:"店铺名称"`
|
||||
ShopHierarchy string `json:"shop_hierarchy" description:"店铺层级路径"`
|
||||
ApplicantID uint `json:"applicant_id" description:"申请人账号ID"`
|
||||
ApplicantName string `json:"applicant_name" description:"申请人用户名"`
|
||||
ProcessorID *uint `json:"processor_id,omitempty" description:"处理人账号ID"`
|
||||
ProcessorName string `json:"processor_name,omitempty" description:"处理人用户名"`
|
||||
WithdrawalMethod string `json:"withdrawal_method" description:"提现方式 (alipay:支付宝, wechat:微信, bank:银行卡)"`
|
||||
PaymentType string `json:"payment_type" description:"放款类型 (manual:人工打款)"`
|
||||
AccountName string `json:"account_name" description:"收款账户名称"`
|
||||
AccountNumber string `json:"account_number" description:"收款账号"`
|
||||
BankName string `json:"bank_name,omitempty" description:"银行名称"`
|
||||
RejectReason string `json:"reject_reason,omitempty" description:"拒绝原因"`
|
||||
Remark string `json:"remark,omitempty" description:"备注"`
|
||||
CreatedAt string `json:"created_at" description:"申请时间"`
|
||||
ProcessedAt string `json:"processed_at,omitempty" description:"处理时间"`
|
||||
}
|
||||
|
||||
// WithdrawalRequestPageResult 提现申请列表分页响应
|
||||
type WithdrawalRequestPageResult struct {
|
||||
Items []WithdrawalRequestItem `json:"items" description:"提现申请列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// ApproveWithdrawalReq 审批通过提现申请请求
|
||||
type ApproveWithdrawalReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" description:"提现申请ID"`
|
||||
PaymentType string `json:"payment_type" validate:"required,oneof=manual" required:"true" description:"放款类型(目前只支持manual人工打款)"`
|
||||
Amount *int64 `json:"amount" validate:"omitempty,min=1" minimum:"1" description:"修正后的提现金额(分),不填则使用原金额"`
|
||||
WithdrawalMethod *string `json:"withdrawal_method" validate:"omitempty,oneof=alipay wechat bank" description:"修正后的收款类型 (alipay:支付宝, wechat:微信, bank:银行卡)"`
|
||||
AccountName *string `json:"account_name" validate:"omitempty,max=100" maxLength:"100" description:"修正后的收款人姓名"`
|
||||
AccountNumber *string `json:"account_number" validate:"omitempty,max=100" maxLength:"100" description:"修正后的收款账号"`
|
||||
Remark string `json:"remark" validate:"omitempty,max=500" maxLength:"500" description:"备注"`
|
||||
}
|
||||
|
||||
// RejectWithdrawalReq 拒绝提现申请请求
|
||||
type RejectWithdrawalReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" description:"提现申请ID"`
|
||||
Remark string `json:"remark" validate:"required,max=500" required:"true" maxLength:"500" description:"拒绝原因(必填)"`
|
||||
}
|
||||
|
||||
// WithdrawalApprovalResp 审批响应
|
||||
type WithdrawalApprovalResp struct {
|
||||
ID uint `json:"id" description:"提现申请ID"`
|
||||
WithdrawalNo string `json:"withdrawal_no" description:"提现单号"`
|
||||
Status int `json:"status" description:"状态 (1:待审核, 2:已通过, 3:已拒绝, 4:已到账)"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
ProcessedAt string `json:"processed_at" description:"处理时间"`
|
||||
}
|
||||
31
internal/model/dto/commission_withdrawal_setting_dto.go
Normal file
31
internal/model/dto/commission_withdrawal_setting_dto.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package dto
|
||||
|
||||
type CreateWithdrawalSettingReq struct {
|
||||
DailyWithdrawalLimit int `json:"daily_withdrawal_limit" validate:"required,min=1,max=100" required:"true" minimum:"1" maximum:"100" description:"每日提现次数限制"`
|
||||
MinWithdrawalAmount int64 `json:"min_withdrawal_amount" validate:"required,min=1" required:"true" minimum:"1" description:"最低提现金额(分)"`
|
||||
FeeRate int64 `json:"fee_rate" validate:"required,min=0,max=10000" required:"true" minimum:"0" maximum:"10000" description:"手续费比率(基点,100=1%)"`
|
||||
}
|
||||
|
||||
type WithdrawalSettingListReq struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码(默认1)"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量(默认20,最大100)"`
|
||||
}
|
||||
|
||||
type WithdrawalSettingItem struct {
|
||||
ID uint `json:"id" description:"配置ID"`
|
||||
DailyWithdrawalLimit int `json:"daily_withdrawal_limit" description:"每日提现次数限制"`
|
||||
MinWithdrawalAmount int64 `json:"min_withdrawal_amount" description:"最低提现金额(分)"`
|
||||
FeeRate int64 `json:"fee_rate" description:"手续费比率(基点,100=1%)"`
|
||||
ArrivalDays int `json:"arrival_days" description:"到账天数"`
|
||||
IsActive bool `json:"is_active" description:"是否生效"`
|
||||
CreatorID uint `json:"creator_id" description:"创建人ID"`
|
||||
CreatorName string `json:"creator_name" description:"创建人用户名"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
}
|
||||
|
||||
type WithdrawalSettingPageResult struct {
|
||||
Items []WithdrawalSettingItem `json:"items" description:"配置列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
24
internal/model/dto/common.go
Normal file
24
internal/model/dto/common.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package dto
|
||||
|
||||
// IDReq 通用 ID 路径参数请求
|
||||
type IDReq struct {
|
||||
ID uint `path:"id" description:"ID" required:"true"`
|
||||
}
|
||||
|
||||
// UpdateAccountParams 更新账号聚合参数 (用于文档生成)
|
||||
type UpdateAccountParams struct {
|
||||
IDReq
|
||||
UpdateAccountRequest
|
||||
}
|
||||
|
||||
// AssignRolesParams 分配角色聚合参数 (用于文档生成)
|
||||
type AssignRolesParams struct {
|
||||
IDReq
|
||||
AssignRolesRequest
|
||||
}
|
||||
|
||||
// RemoveRoleParams 移除角色聚合参数
|
||||
type RemoveRoleParams struct {
|
||||
AccountID uint `path:"account_id" description:"账号ID" required:"true"`
|
||||
RoleID uint `path:"role_id" description:"角色ID" required:"true"`
|
||||
}
|
||||
72
internal/model/dto/customer_account_dto.go
Normal file
72
internal/model/dto/customer_account_dto.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package dto
|
||||
|
||||
type CustomerAccountListReq struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
Username string `json:"username" query:"username" description:"用户名(模糊查询)"`
|
||||
Phone string `json:"phone" query:"phone" description:"手机号(模糊查询)"`
|
||||
UserType *int `json:"user_type" query:"user_type" description:"用户类型(3=代理账号, 4=企业账号)"`
|
||||
ShopID *uint `json:"shop_id" query:"shop_id" description:"店铺ID"`
|
||||
EnterpriseID *uint `json:"enterprise_id" query:"enterprise_id" description:"企业ID"`
|
||||
Status *int `json:"status" query:"status" description:"状态(0=禁用, 1=启用)"`
|
||||
}
|
||||
|
||||
type CustomerAccountItem struct {
|
||||
ID uint `json:"id" description:"账号ID"`
|
||||
Username string `json:"username" description:"用户名"`
|
||||
Phone string `json:"phone" description:"手机号"`
|
||||
UserType int `json:"user_type" description:"用户类型(3=代理账号, 4=企业账号)"`
|
||||
UserTypeName string `json:"user_type_name" description:"用户类型名称"`
|
||||
ShopID *uint `json:"shop_id,omitempty" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name" description:"店铺名称"`
|
||||
EnterpriseID *uint `json:"enterprise_id,omitempty" description:"企业ID"`
|
||||
EnterpriseName string `json:"enterprise_name" description:"企业名称"`
|
||||
Status int `json:"status" description:"状态(0=禁用, 1=启用)"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
}
|
||||
|
||||
type CustomerAccountPageResult struct {
|
||||
Items []CustomerAccountItem `json:"items" description:"账号列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
type CreateCustomerAccountReq struct {
|
||||
Username string `json:"username" validate:"required,min=2,max=50" required:"true" minimum:"2" maximum:"50" description:"用户名"`
|
||||
Phone string `json:"phone" validate:"required,len=11" required:"true" description:"手机号"`
|
||||
Password string `json:"password" validate:"required,min=6,max=20" required:"true" minimum:"6" maximum:"20" description:"密码"`
|
||||
ShopID uint `json:"shop_id" validate:"required" required:"true" description:"店铺ID"`
|
||||
}
|
||||
|
||||
type UpdateCustomerAccountRequest struct {
|
||||
Username *string `json:"username" validate:"omitempty,min=2,max=50" minimum:"2" maximum:"50" description:"用户名"`
|
||||
Phone *string `json:"phone" validate:"omitempty,len=11" description:"手机号"`
|
||||
}
|
||||
|
||||
// UpdateCustomerAccountReq 更新客户账号请求(用于文档生成,包含路径参数)
|
||||
type UpdateCustomerAccountReq struct {
|
||||
IDReq
|
||||
UpdateCustomerAccountRequest
|
||||
}
|
||||
|
||||
type UpdateCustomerAccountPasswordRequest struct {
|
||||
Password string `json:"password" validate:"required,min=6,max=20" required:"true" minimum:"6" maximum:"20" description:"新密码"`
|
||||
}
|
||||
|
||||
// UpdateCustomerAccountPasswordReq 修改客户账号密码请求(用于文档生成,包含路径参数)
|
||||
type UpdateCustomerAccountPasswordReq struct {
|
||||
IDReq
|
||||
UpdateCustomerAccountPasswordRequest
|
||||
}
|
||||
|
||||
type UpdateCustomerAccountStatusRequest struct {
|
||||
Status int `json:"status" validate:"required,oneof=0 1" required:"true" enum:"0,1" description:"状态(0=禁用, 1=启用)"`
|
||||
}
|
||||
|
||||
// UpdateCustomerAccountStatusReq 修改客户账号状态请求(用于文档生成,包含路径参数)
|
||||
type UpdateCustomerAccountStatusReq struct {
|
||||
IDReq
|
||||
UpdateCustomerAccountStatusRequest
|
||||
}
|
||||
131
internal/model/dto/enterprise_card_authorization_dto.go
Normal file
131
internal/model/dto/enterprise_card_authorization_dto.go
Normal file
@@ -0,0 +1,131 @@
|
||||
package dto
|
||||
|
||||
type AllocateCardsPreviewReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" required:"true" description:"企业ID"`
|
||||
ICCIDs []string `json:"iccids" validate:"required,min=1,max=1000,dive,required" required:"true" description:"需要授权的 ICCID 列表(最多1000个)"`
|
||||
}
|
||||
|
||||
type StandaloneCard struct {
|
||||
ICCID string `json:"iccid" description:"ICCID"`
|
||||
IotCardID uint `json:"iot_card_id" description:"卡ID"`
|
||||
MSISDN string `json:"msisdn" description:"手机号"`
|
||||
CarrierID uint `json:"carrier_id" description:"运营商ID"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
}
|
||||
|
||||
type DeviceBundle struct {
|
||||
DeviceID uint `json:"device_id" description:"设备ID"`
|
||||
DeviceNo string `json:"device_no" description:"设备号"`
|
||||
TriggerCard DeviceBundleCard `json:"trigger_card" description:"触发卡(用户选择的卡)"`
|
||||
BundleCards []DeviceBundleCard `json:"bundle_cards" description:"连带卡(同设备的其他卡)"`
|
||||
}
|
||||
|
||||
type DeviceBundleCard struct {
|
||||
ICCID string `json:"iccid" description:"ICCID"`
|
||||
IotCardID uint `json:"iot_card_id" description:"卡ID"`
|
||||
MSISDN string `json:"msisdn" description:"手机号"`
|
||||
}
|
||||
|
||||
type FailedItem struct {
|
||||
ICCID string `json:"iccid" description:"ICCID"`
|
||||
Reason string `json:"reason" description:"失败原因"`
|
||||
}
|
||||
|
||||
type AllocatePreviewSummary struct {
|
||||
StandaloneCardCount int `json:"standalone_card_count" description:"独立卡数量"`
|
||||
DeviceCount int `json:"device_count" description:"设备数量"`
|
||||
DeviceCardCount int `json:"device_card_count" description:"设备卡数量"`
|
||||
TotalCardCount int `json:"total_card_count" description:"总卡数量"`
|
||||
FailedCount int `json:"failed_count" description:"失败数量"`
|
||||
}
|
||||
|
||||
type AllocateCardsPreviewResp struct {
|
||||
StandaloneCards []StandaloneCard `json:"standalone_cards" description:"可直接授权的卡(未绑定设备)"`
|
||||
DeviceBundles []DeviceBundle `json:"device_bundles" description:"需要整体授权的设备包"`
|
||||
FailedItems []FailedItem `json:"failed_items" description:"失败的卡"`
|
||||
Summary AllocatePreviewSummary `json:"summary" description:"汇总信息"`
|
||||
}
|
||||
|
||||
type AllocateCardsReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" required:"true" description:"企业ID"`
|
||||
ICCIDs []string `json:"iccids" validate:"required,min=1,max=1000,dive,required" required:"true" description:"需要授权的 ICCID 列表"`
|
||||
ConfirmDeviceBundles bool `json:"confirm_device_bundles" description:"确认整体授权设备下所有卡"`
|
||||
}
|
||||
|
||||
type AllocatedDevice struct {
|
||||
DeviceID uint `json:"device_id" description:"设备ID"`
|
||||
DeviceNo string `json:"device_no" description:"设备号"`
|
||||
CardCount int `json:"card_count" description:"卡数量"`
|
||||
ICCIDs []string `json:"iccids" description:"卡ICCID列表"`
|
||||
}
|
||||
|
||||
type AllocateCardsResp struct {
|
||||
SuccessCount int `json:"success_count" description:"成功数量"`
|
||||
FailCount int `json:"fail_count" description:"失败数量"`
|
||||
FailedItems []FailedItem `json:"failed_items" description:"失败详情"`
|
||||
AllocatedDevices []AllocatedDevice `json:"allocated_devices" description:"连带授权的设备列表"`
|
||||
}
|
||||
|
||||
type RecallCardsReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" required:"true" description:"企业ID"`
|
||||
ICCIDs []string `json:"iccids" validate:"required,min=1,max=1000,dive,required" required:"true" description:"需要回收授权的 ICCID 列表"`
|
||||
}
|
||||
|
||||
type RecalledDevice struct {
|
||||
DeviceID uint `json:"device_id" description:"设备ID"`
|
||||
DeviceNo string `json:"device_no" description:"设备号"`
|
||||
CardCount int `json:"card_count" description:"卡数量"`
|
||||
ICCIDs []string `json:"iccids" description:"卡ICCID列表"`
|
||||
}
|
||||
|
||||
type RecallCardsResp struct {
|
||||
SuccessCount int `json:"success_count" description:"成功数量"`
|
||||
FailCount int `json:"fail_count" description:"失败数量"`
|
||||
FailedItems []FailedItem `json:"failed_items" description:"失败详情"`
|
||||
RecalledDevices []RecalledDevice `json:"recalled_devices" description:"连带回收的设备列表"`
|
||||
}
|
||||
|
||||
type EnterpriseCardListReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" required:"true" description:"企业ID"`
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
Status *int `json:"status" query:"status" description:"卡状态"`
|
||||
CarrierID *uint `json:"carrier_id" query:"carrier_id" description:"运营商ID"`
|
||||
ICCID string `json:"iccid" query:"iccid" description:"ICCID(模糊查询)"`
|
||||
DeviceNo string `json:"device_no" query:"device_no" description:"设备号(模糊查询)"`
|
||||
}
|
||||
|
||||
type EnterpriseCardItem struct {
|
||||
ID uint `json:"id" description:"卡ID"`
|
||||
ICCID string `json:"iccid" description:"ICCID"`
|
||||
MSISDN string `json:"msisdn" description:"手机号"`
|
||||
DeviceID *uint `json:"device_id,omitempty" description:"设备ID"`
|
||||
DeviceNo string `json:"device_no" description:"设备号"`
|
||||
CarrierID uint `json:"carrier_id" description:"运营商ID"`
|
||||
CarrierName string `json:"carrier_name" description:"运营商名称"`
|
||||
PackageID *uint `json:"package_id,omitempty" description:"套餐ID"`
|
||||
PackageName string `json:"package_name" description:"套餐名称"`
|
||||
Status int `json:"status" description:"状态"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
NetworkStatus int `json:"network_status" description:"网络状态"`
|
||||
NetworkStatusName string `json:"network_status_name" description:"网络状态名称"`
|
||||
}
|
||||
|
||||
type EnterpriseCardPageResult struct {
|
||||
Items []EnterpriseCardItem `json:"items" description:"卡列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// SuspendCardReq 停机卡请求
|
||||
type SuspendCardReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" required:"true" description:"企业ID"`
|
||||
CardID uint `json:"-" params:"card_id" path:"card_id" validate:"required" required:"true" description:"卡ID"`
|
||||
}
|
||||
|
||||
// ResumeCardReq 复机卡请求
|
||||
type ResumeCardReq struct {
|
||||
ID uint `json:"-" params:"id" path:"id" validate:"required" required:"true" description:"企业ID"`
|
||||
CardID uint `json:"-" params:"card_id" path:"card_id" validate:"required" required:"true" description:"卡ID"`
|
||||
}
|
||||
105
internal/model/dto/enterprise_dto.go
Normal file
105
internal/model/dto/enterprise_dto.go
Normal file
@@ -0,0 +1,105 @@
|
||||
package dto
|
||||
|
||||
type CreateEnterpriseReq struct {
|
||||
EnterpriseName string `json:"enterprise_name" validate:"required,max=100" required:"true" maximum:"100" description:"企业名称"`
|
||||
EnterpriseCode string `json:"enterprise_code" validate:"required,max=50" required:"true" maximum:"50" description:"企业编号(唯一)"`
|
||||
OwnerShopID *uint `json:"owner_shop_id" description:"归属店铺ID(可不填则归属平台)"`
|
||||
LegalPerson string `json:"legal_person" validate:"max=50" maximum:"50" description:"法人代表"`
|
||||
ContactName string `json:"contact_name" validate:"required,max=50" required:"true" maximum:"50" description:"联系人姓名"`
|
||||
ContactPhone string `json:"contact_phone" validate:"required,max=20" required:"true" maximum:"20" description:"联系人电话"`
|
||||
LoginPhone string `json:"login_phone" validate:"required,len=11" required:"true" description:"登录手机号(作为企业账号)"`
|
||||
Password string `json:"password" validate:"required,min=6,max=20" required:"true" minimum:"6" maximum:"20" description:"登录密码"`
|
||||
BusinessLicense string `json:"business_license" validate:"max=100" maximum:"100" description:"营业执照号"`
|
||||
Province string `json:"province" validate:"max=50" maximum:"50" description:"省份"`
|
||||
City string `json:"city" validate:"max=50" maximum:"50" description:"城市"`
|
||||
District string `json:"district" validate:"max=50" maximum:"50" description:"区县"`
|
||||
Address string `json:"address" validate:"max=255" maximum:"255" description:"详细地址"`
|
||||
}
|
||||
|
||||
type UpdateEnterpriseBody struct {
|
||||
OwnerShopID *uint `json:"owner_shop_id" description:"归属店铺ID"`
|
||||
EnterpriseName *string `json:"enterprise_name" validate:"omitempty,max=100" maximum:"100" description:"企业名称"`
|
||||
EnterpriseCode *string `json:"enterprise_code" validate:"omitempty,max=50" maximum:"50" description:"企业编号"`
|
||||
LegalPerson *string `json:"legal_person" validate:"omitempty,max=50" maximum:"50" description:"法人代表"`
|
||||
ContactName *string `json:"contact_name" validate:"omitempty,max=50" maximum:"50" description:"联系人姓名"`
|
||||
ContactPhone *string `json:"contact_phone" validate:"omitempty,max=20" maximum:"20" description:"联系人电话"`
|
||||
BusinessLicense *string `json:"business_license" validate:"omitempty,max=100" maximum:"100" description:"营业执照号"`
|
||||
Province *string `json:"province" validate:"omitempty,max=50" maximum:"50" description:"省份"`
|
||||
City *string `json:"city" validate:"omitempty,max=50" maximum:"50" description:"城市"`
|
||||
District *string `json:"district" validate:"omitempty,max=50" maximum:"50" description:"区县"`
|
||||
Address *string `json:"address" validate:"omitempty,max=255" maximum:"255" description:"详细地址"`
|
||||
}
|
||||
|
||||
type UpdateEnterpriseReq struct {
|
||||
IDReq
|
||||
UpdateEnterpriseBody
|
||||
}
|
||||
|
||||
type EnterpriseListReq struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码(默认1)"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量(默认20,最大100)"`
|
||||
EnterpriseName string `json:"enterprise_name" query:"enterprise_name" description:"企业名称(模糊查询)"`
|
||||
LoginPhone string `json:"login_phone" query:"login_phone" description:"登录手机号(模糊查询)"`
|
||||
ContactPhone string `json:"contact_phone" query:"contact_phone" description:"联系人电话(模糊查询)"`
|
||||
OwnerShopID *uint `json:"owner_shop_id" query:"owner_shop_id" description:"归属店铺ID"`
|
||||
Status *int `json:"status" query:"status" description:"状态(0=禁用, 1=启用)"`
|
||||
}
|
||||
|
||||
type EnterpriseItem struct {
|
||||
ID uint `json:"id" description:"企业ID"`
|
||||
EnterpriseName string `json:"enterprise_name" description:"企业名称"`
|
||||
EnterpriseCode string `json:"enterprise_code" description:"企业编号"`
|
||||
OwnerShopID *uint `json:"owner_shop_id,omitempty" description:"归属店铺ID"`
|
||||
OwnerShopName string `json:"owner_shop_name" description:"归属店铺名称"`
|
||||
LegalPerson string `json:"legal_person" description:"法人代表"`
|
||||
ContactName string `json:"contact_name" description:"联系人姓名"`
|
||||
ContactPhone string `json:"contact_phone" description:"联系人电话"`
|
||||
LoginPhone string `json:"login_phone" description:"登录手机号"`
|
||||
BusinessLicense string `json:"business_license" description:"营业执照号"`
|
||||
Province string `json:"province" description:"省份"`
|
||||
City string `json:"city" description:"城市"`
|
||||
District string `json:"district" description:"区县"`
|
||||
Address string `json:"address" description:"详细地址"`
|
||||
Status int `json:"status" description:"状态(0=禁用, 1=启用)"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
}
|
||||
|
||||
type EnterprisePageResult struct {
|
||||
Items []EnterpriseItem `json:"items" description:"企业列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
type UpdateEnterpriseStatusBody struct {
|
||||
Status int `json:"status" validate:"required,oneof=0 1" required:"true" enum:"0,1" description:"状态(0=禁用, 1=启用)"`
|
||||
}
|
||||
|
||||
type UpdateEnterpriseStatusReq struct {
|
||||
IDReq
|
||||
UpdateEnterpriseStatusBody
|
||||
}
|
||||
|
||||
type UpdateEnterprisePasswordBody struct {
|
||||
Password string `json:"password" validate:"required,min=6,max=20" required:"true" minimum:"6" maximum:"20" description:"新密码"`
|
||||
}
|
||||
|
||||
type UpdateEnterprisePasswordReq struct {
|
||||
IDReq
|
||||
UpdateEnterprisePasswordBody
|
||||
}
|
||||
|
||||
type CreateEnterpriseResp struct {
|
||||
Enterprise EnterpriseItem `json:"enterprise" description:"企业信息"`
|
||||
AccountID uint `json:"account_id" description:"账号ID"`
|
||||
}
|
||||
|
||||
// CreateEnterpriseRequest 创建企业请求(兼容旧接口)
|
||||
type CreateEnterpriseRequest = CreateEnterpriseReq
|
||||
|
||||
// UpdateEnterpriseRequest 更新企业请求(兼容旧接口)
|
||||
type UpdateEnterpriseRequest = UpdateEnterpriseBody
|
||||
|
||||
// EnterpriseResponse 企业响应(兼容旧接口)
|
||||
type EnterpriseResponse = EnterpriseItem
|
||||
66
internal/model/dto/my_commission_dto.go
Normal file
66
internal/model/dto/my_commission_dto.go
Normal file
@@ -0,0 +1,66 @@
|
||||
package dto
|
||||
|
||||
type MyCommissionSummaryResp struct {
|
||||
ShopID uint `json:"shop_id" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name" description:"店铺名称"`
|
||||
TotalCommission int64 `json:"total_commission" description:"累计佣金(分)"`
|
||||
WithdrawnCommission int64 `json:"withdrawn_commission" description:"已提现佣金(分)"`
|
||||
UnwithdrawCommission int64 `json:"unwithdraw_commission" description:"未提现佣金(分)"`
|
||||
FrozenCommission int64 `json:"frozen_commission" description:"冻结佣金(分)"`
|
||||
WithdrawingCommission int64 `json:"withdrawing_commission" description:"提现中佣金(分)"`
|
||||
AvailableCommission int64 `json:"available_commission" description:"可提现佣金(分)"`
|
||||
}
|
||||
|
||||
type CreateMyWithdrawalReq struct {
|
||||
Amount int64 `json:"amount" validate:"required,min=1" required:"true" minimum:"1" description:"提现金额(分)"`
|
||||
WithdrawalMethod string `json:"withdrawal_method" validate:"required,oneof=alipay" required:"true" enum:"alipay" description:"收款类型"`
|
||||
AccountName string `json:"account_name" validate:"required,max=50" required:"true" maximum:"50" description:"收款人姓名"`
|
||||
AccountNumber string `json:"account_number" validate:"required,max=100" required:"true" maximum:"100" description:"收款账号"`
|
||||
}
|
||||
|
||||
type CreateMyWithdrawalResp struct {
|
||||
ID uint `json:"id" description:"提现申请ID"`
|
||||
WithdrawalNo string `json:"withdrawal_no" description:"提现单号"`
|
||||
Amount int64 `json:"amount" description:"提现金额(分)"`
|
||||
FeeRate int64 `json:"fee_rate" description:"手续费比率(基点)"`
|
||||
Fee int64 `json:"fee" description:"手续费(分)"`
|
||||
ActualAmount int64 `json:"actual_amount" description:"实际到账金额(分)"`
|
||||
Status int `json:"status" description:"状态"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
CreatedAt string `json:"created_at" description:"申请时间"`
|
||||
}
|
||||
|
||||
type MyWithdrawalListReq struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
Status *int `json:"status" query:"status" description:"状态(1=待审批, 2=已通过, 3=已拒绝)"`
|
||||
StartTime string `json:"start_time" query:"start_time" description:"申请开始时间"`
|
||||
EndTime string `json:"end_time" query:"end_time" description:"申请结束时间"`
|
||||
}
|
||||
|
||||
type MyCommissionRecordListReq struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
CommissionType *string `json:"commission_type" query:"commission_type" description:"佣金类型"`
|
||||
ICCID string `json:"iccid" query:"iccid" description:"ICCID(模糊查询)"`
|
||||
DeviceNo string `json:"device_no" query:"device_no" description:"设备号(模糊查询)"`
|
||||
OrderNo string `json:"order_no" query:"order_no" description:"订单号(模糊查询)"`
|
||||
}
|
||||
|
||||
type MyCommissionRecordItem struct {
|
||||
ID uint `json:"id" description:"佣金记录ID"`
|
||||
ShopID uint `json:"shop_id" description:"店铺ID"`
|
||||
OrderID uint `json:"order_id" description:"订单ID"`
|
||||
CommissionType string `json:"commission_type" description:"佣金类型 (one_time:一次性, long_term:长期)"`
|
||||
Amount int64 `json:"amount" description:"佣金金额(分)"`
|
||||
Status int `json:"status" description:"状态 (1:已冻结, 2:解冻中, 3:已发放, 4:已失效)"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
}
|
||||
|
||||
type MyCommissionRecordPageResult struct {
|
||||
Items []MyCommissionRecordItem `json:"items" description:"佣金记录列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
81
internal/model/dto/permission_dto.go
Normal file
81
internal/model/dto/permission_dto.go
Normal file
@@ -0,0 +1,81 @@
|
||||
package dto
|
||||
|
||||
// CreatePermissionRequest 创建权限请求
|
||||
type CreatePermissionRequest struct {
|
||||
PermName string `json:"perm_name" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"权限名称"`
|
||||
PermCode string `json:"perm_code" validate:"required,min=1,max=100" required:"true" minLength:"1" maxLength:"100" description:"权限编码"`
|
||||
PermType int `json:"perm_type" validate:"required,min=1,max=2" required:"true" minimum:"1" maximum:"2" description:"权限类型 (1:菜单, 2:按钮)"`
|
||||
Platform string `json:"platform" validate:"omitempty,oneof=all web h5" description:"适用端口 (all:全部, web:Web后台, h5:H5端),默认为 all"`
|
||||
URL string `json:"url" validate:"omitempty,max=255" maxLength:"255" description:"请求路径"`
|
||||
ParentID *uint `json:"parent_id" description:"父权限ID"`
|
||||
Sort int `json:"sort" validate:"omitempty,min=0" minimum:"0" description:"排序值"`
|
||||
}
|
||||
|
||||
// UpdatePermissionRequest 更新权限请求
|
||||
type UpdatePermissionRequest struct {
|
||||
PermName *string `json:"perm_name" validate:"omitempty,min=1,max=50" minLength:"1" maxLength:"50" description:"权限名称"`
|
||||
PermCode *string `json:"perm_code" validate:"omitempty,min=1,max=100" minLength:"1" maxLength:"100" description:"权限编码"`
|
||||
Platform *string `json:"platform" validate:"omitempty,oneof=all web h5" description:"适用端口 (all:全部, web:Web后台, h5:H5端)"`
|
||||
URL *string `json:"url" validate:"omitempty,max=255" maxLength:"255" description:"请求路径"`
|
||||
ParentID *uint `json:"parent_id" description:"父权限ID"`
|
||||
Sort *int `json:"sort" validate:"omitempty,min=0" minimum:"0" description:"排序值"`
|
||||
Status *int `json:"status" validate:"omitempty,min=0,max=1" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// UpdatePermissionParams 更新权限参数聚合
|
||||
type UpdatePermissionParams struct {
|
||||
IDReq
|
||||
UpdatePermissionRequest
|
||||
}
|
||||
|
||||
// PermissionListRequest 权限列表查询请求
|
||||
type PermissionListRequest struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
PermName string `json:"perm_name" query:"perm_name" validate:"omitempty,max=50" maxLength:"50" description:"权限名称模糊查询"`
|
||||
PermCode string `json:"perm_code" query:"perm_code" validate:"omitempty,max=100" maxLength:"100" description:"权限编码模糊查询"`
|
||||
PermType *int `json:"perm_type" query:"perm_type" validate:"omitempty,min=1,max=2" minimum:"1" maximum:"2" description:"权限类型 (1:菜单, 2:按钮)"`
|
||||
Platform string `json:"platform" query:"platform" validate:"omitempty,oneof=all web h5" description:"适用端口 (all:全部, web:Web后台, h5:H5端)"`
|
||||
AvailableForRoleType *int `json:"available_for_role_type" query:"available_for_role_type" validate:"omitempty,min=1,max=2" minimum:"1" maximum:"2" description:"可用角色类型 (1:平台角色, 2:客户角色)"`
|
||||
ParentID *uint `json:"parent_id" query:"parent_id" description:"父权限ID"`
|
||||
Status *int `json:"status" query:"status" validate:"omitempty,min=0,max=1" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// PermissionResponse 权限响应
|
||||
type PermissionResponse struct {
|
||||
ID uint `json:"id" description:"权限ID"`
|
||||
PermName string `json:"perm_name" description:"权限名称"`
|
||||
PermCode string `json:"perm_code" description:"权限编码"`
|
||||
PermType int `json:"perm_type" description:"权限类型 (1:菜单, 2:按钮)"`
|
||||
Platform string `json:"platform" description:"适用端口 (all:全部, web:Web后台, h5:H5端)"`
|
||||
AvailableForRoleTypes string `json:"available_for_role_types" description:"可用角色类型 (1:平台角色, 2:客户角色)"`
|
||||
URL string `json:"url,omitempty" description:"请求路径"`
|
||||
ParentID *uint `json:"parent_id,omitempty" description:"父权限ID"`
|
||||
Sort int `json:"sort" description:"排序值"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
Creator uint `json:"creator" description:"创建人ID"`
|
||||
Updater uint `json:"updater" description:"更新人ID"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
UpdatedAt string `json:"updated_at" description:"更新时间"`
|
||||
}
|
||||
|
||||
// PermissionPageResult 权限分页响应
|
||||
type PermissionPageResult struct {
|
||||
Items []PermissionResponse `json:"items" description:"权限列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// PermissionTreeNode 权限树节点(用于层级展示)
|
||||
type PermissionTreeNode struct {
|
||||
ID uint `json:"id" description:"权限ID"`
|
||||
PermName string `json:"perm_name" description:"权限名称"`
|
||||
PermCode string `json:"perm_code" description:"权限编码"`
|
||||
PermType int `json:"perm_type" description:"权限类型 (1:菜单, 2:按钮)"`
|
||||
Platform string `json:"platform" description:"适用端口 (all:全部, web:Web后台, h5:H5端)"`
|
||||
AvailableForRoleTypes string `json:"available_for_role_types" description:"可用角色类型 (1:平台角色, 2:客户角色)"`
|
||||
URL string `json:"url,omitempty" description:"请求路径"`
|
||||
Sort int `json:"sort" description:"排序值"`
|
||||
Children []*PermissionTreeNode `json:"children,omitempty" description:"子权限列表"`
|
||||
}
|
||||
30
internal/model/dto/personal_customer_dto.go
Normal file
30
internal/model/dto/personal_customer_dto.go
Normal file
@@ -0,0 +1,30 @@
|
||||
package dto
|
||||
|
||||
// CreatePersonalCustomerRequest 创建个人客户请求
|
||||
type CreatePersonalCustomerRequest struct {
|
||||
Phone string `json:"phone" validate:"required" required:"true" description:"手机号"`
|
||||
Nickname string `json:"nickname" description:"昵称"`
|
||||
AvatarURL string `json:"avatar_url" description:"头像URL"`
|
||||
WxOpenID string `json:"wx_open_id" description:"微信OpenID"`
|
||||
WxUnionID string `json:"wx_union_id" description:"微信UnionID"`
|
||||
}
|
||||
|
||||
// UpdatePersonalCustomerRequest 更新个人客户请求
|
||||
type UpdatePersonalCustomerRequest struct {
|
||||
Phone *string `json:"phone" description:"手机号"`
|
||||
Nickname *string `json:"nickname" description:"昵称"`
|
||||
AvatarURL *string `json:"avatar_url" description:"头像URL"`
|
||||
}
|
||||
|
||||
// PersonalCustomerResponse 个人客户响应
|
||||
type PersonalCustomerResponse struct {
|
||||
ID uint `json:"id" description:"客户ID"`
|
||||
Phone string `json:"phone" description:"手机号"`
|
||||
Nickname string `json:"nickname" description:"昵称"`
|
||||
AvatarURL string `json:"avatar_url" description:"头像URL"`
|
||||
WxOpenID string `json:"wx_open_id" description:"微信OpenID"`
|
||||
WxUnionID string `json:"wx_union_id" description:"微信UnionID"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
UpdatedAt string `json:"updated_at" description:"更新时间"`
|
||||
}
|
||||
79
internal/model/dto/role_dto.go
Normal file
79
internal/model/dto/role_dto.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package dto
|
||||
|
||||
// CreateRoleRequest 创建角色请求
|
||||
type CreateRoleRequest struct {
|
||||
RoleName string `json:"role_name" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"角色名称"`
|
||||
RoleDesc string `json:"role_desc" validate:"omitempty,max=255" maxLength:"255" description:"角色描述"`
|
||||
RoleType int `json:"role_type" validate:"required,min=1,max=2" required:"true" minimum:"1" maximum:"2" description:"角色类型 (1:平台角色, 2:客户角色)"`
|
||||
}
|
||||
|
||||
// UpdateRoleRequest 更新角色请求
|
||||
type UpdateRoleRequest struct {
|
||||
RoleName *string `json:"role_name" validate:"omitempty,min=1,max=50" minLength:"1" maxLength:"50" description:"角色名称"`
|
||||
RoleDesc *string `json:"role_desc" validate:"omitempty,max=255" maxLength:"255" description:"角色描述"`
|
||||
Status *int `json:"status" validate:"omitempty,min=0,max=1" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// UpdateRoleParams 更新角色参数聚合
|
||||
type UpdateRoleParams struct {
|
||||
IDReq
|
||||
UpdateRoleRequest
|
||||
}
|
||||
|
||||
// RoleListRequest 角色列表查询请求
|
||||
type RoleListRequest struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
RoleName string `json:"role_name" query:"role_name" validate:"omitempty,max=50" maxLength:"50" description:"角色名称模糊查询"`
|
||||
RoleType *int `json:"role_type" query:"role_type" validate:"omitempty,min=1,max=2" minimum:"1" maximum:"2" description:"角色类型 (1:平台角色, 2:客户角色)"`
|
||||
Status *int `json:"status" query:"status" validate:"omitempty,min=0,max=1" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// RoleResponse 角色响应
|
||||
type RoleResponse struct {
|
||||
ID uint `json:"id" description:"角色ID"`
|
||||
RoleName string `json:"role_name" description:"角色名称"`
|
||||
RoleDesc string `json:"role_desc" description:"角色描述"`
|
||||
RoleType int `json:"role_type" description:"角色类型 (1:平台角色, 2:客户角色)"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
Creator uint `json:"creator" description:"创建人ID"`
|
||||
Updater uint `json:"updater" description:"更新人ID"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
UpdatedAt string `json:"updated_at" description:"更新时间"`
|
||||
}
|
||||
|
||||
// RolePageResult 角色分页响应
|
||||
type RolePageResult struct {
|
||||
Items []RoleResponse `json:"items" description:"角色列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// AssignPermissionsRequest 分配权限请求
|
||||
type AssignPermissionsRequest struct {
|
||||
PermIDs []uint `json:"perm_ids" validate:"required,min=1" required:"true" minItems:"1" description:"权限ID列表"`
|
||||
}
|
||||
|
||||
// AssignPermissionsParams 分配权限参数聚合
|
||||
type AssignPermissionsParams struct {
|
||||
IDReq
|
||||
AssignPermissionsRequest
|
||||
}
|
||||
|
||||
// RemovePermissionParams 移除权限参数聚合
|
||||
type RemovePermissionParams struct {
|
||||
RoleID uint `path:"role_id" required:"true" description:"角色ID"`
|
||||
PermID uint `path:"perm_id" required:"true" description:"权限ID"`
|
||||
}
|
||||
|
||||
// UpdateRoleStatusRequest 更新角色状态请求
|
||||
type UpdateRoleStatusRequest struct {
|
||||
Status int `json:"status" validate:"required,min=0,max=1" required:"true" minimum:"0" maximum:"1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// UpdateRoleStatusParams 更新角色状态参数聚合
|
||||
type UpdateRoleStatusParams struct {
|
||||
IDReq
|
||||
UpdateRoleStatusRequest
|
||||
}
|
||||
16
internal/model/dto/role_permission_dto.go
Normal file
16
internal/model/dto/role_permission_dto.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package dto
|
||||
|
||||
// RolePermissionResponse 角色-权限关联响应
|
||||
type RolePermissionResponse struct {
|
||||
ID uint `json:"id" description:"关联ID"`
|
||||
RoleID uint `json:"role_id" description:"角色ID"`
|
||||
PermID uint `json:"perm_id" description:"权限ID"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
}
|
||||
|
||||
// RolePermissionsResponse 角色的权限列表响应
|
||||
type RolePermissionsResponse struct {
|
||||
RoleID uint `json:"role_id" description:"角色ID"`
|
||||
Permissions []*PermissionResponse `json:"permissions" description:"权限列表"`
|
||||
}
|
||||
73
internal/model/dto/shop_account_dto.go
Normal file
73
internal/model/dto/shop_account_dto.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package dto
|
||||
|
||||
// ShopAccountListRequest 代理商账号列表查询请求
|
||||
type ShopAccountListRequest struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
ShopID *uint `json:"shop_id" query:"shop_id" validate:"omitempty,min=1" minimum:"1" description:"店铺ID过滤"`
|
||||
Username string `json:"username" query:"username" validate:"omitempty,max=50" maxLength:"50" description:"用户名(模糊查询)"`
|
||||
Phone string `json:"phone" query:"phone" validate:"omitempty,len=11" minLength:"11" maxLength:"11" description:"手机号(精确查询)"`
|
||||
Status *int `json:"status" query:"status" validate:"omitempty,oneof=0 1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// CreateShopAccountRequest 创建代理商账号请求
|
||||
type CreateShopAccountRequest struct {
|
||||
ShopID uint `json:"shop_id" validate:"required,min=1" required:"true" minimum:"1" description:"店铺ID"`
|
||||
Username string `json:"username" validate:"required,min=3,max=50" required:"true" minLength:"3" maxLength:"50" description:"用户名"`
|
||||
Phone string `json:"phone" validate:"required,len=11" required:"true" minLength:"11" maxLength:"11" description:"手机号"`
|
||||
Password string `json:"password" validate:"required,min=8,max=32" required:"true" minLength:"8" maxLength:"32" description:"密码"`
|
||||
}
|
||||
|
||||
// UpdateShopAccountRequest 更新代理商账号请求(不包含 phone 和 password,按照业务规则不允许修改)
|
||||
type UpdateShopAccountRequest struct {
|
||||
Username string `json:"username" validate:"required,min=3,max=50" required:"true" minLength:"3" maxLength:"50" description:"用户名"`
|
||||
}
|
||||
|
||||
// UpdateShopAccountPasswordRequest 修改代理商账号密码请求(管理员重置)
|
||||
type UpdateShopAccountPasswordRequest struct {
|
||||
NewPassword string `json:"new_password" validate:"required,min=8,max=32" required:"true" minLength:"8" maxLength:"32" description:"新密码"`
|
||||
}
|
||||
|
||||
// UpdateShopAccountStatusRequest 修改代理商账号状态请求
|
||||
type UpdateShopAccountStatusRequest struct {
|
||||
Status int `json:"status" validate:"required,oneof=0 1" required:"true" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// ShopAccountResponse 代理商账号响应
|
||||
type ShopAccountResponse struct {
|
||||
ID uint `json:"id" description:"账号ID"`
|
||||
ShopID uint `json:"shop_id" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name,omitempty" description:"店铺名称"`
|
||||
Username string `json:"username" description:"用户名"`
|
||||
Phone string `json:"phone" description:"手机号"`
|
||||
UserType int `json:"user_type" description:"用户类型 (1:超级管理员, 2:平台用户, 3:代理账号, 4:企业账号)"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
UpdatedAt string `json:"updated_at" description:"更新时间"`
|
||||
}
|
||||
|
||||
// ShopAccountPageResult 代理账号分页响应
|
||||
type ShopAccountPageResult struct {
|
||||
Items []ShopAccountResponse `json:"items" description:"代理账号列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// UpdateShopAccountParams 更新代理账号聚合参数 (用于文档生成)
|
||||
type UpdateShopAccountParams struct {
|
||||
IDReq
|
||||
UpdateShopAccountRequest
|
||||
}
|
||||
|
||||
// UpdateShopAccountPasswordParams 修改代理账号密码聚合参数 (用于文档生成)
|
||||
type UpdateShopAccountPasswordParams struct {
|
||||
IDReq
|
||||
UpdateShopAccountPasswordRequest
|
||||
}
|
||||
|
||||
// UpdateShopAccountStatusParams 修改代理账号状态聚合参数 (用于文档生成)
|
||||
type UpdateShopAccountStatusParams struct {
|
||||
IDReq
|
||||
UpdateShopAccountStatusRequest
|
||||
}
|
||||
136
internal/model/dto/shop_commission_dto.go
Normal file
136
internal/model/dto/shop_commission_dto.go
Normal file
@@ -0,0 +1,136 @@
|
||||
package dto
|
||||
|
||||
// ========================================
|
||||
// 代理商佣金查询 DTO
|
||||
// ========================================
|
||||
|
||||
// ShopCommissionSummaryListReq 代理商佣金列表查询请求
|
||||
type ShopCommissionSummaryListReq struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码(默认1)"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量(默认20,最大100)"`
|
||||
ShopName string `json:"shop_name" query:"shop_name" validate:"omitempty,max=100" maxLength:"100" description:"店铺名称(模糊查询)"`
|
||||
Username string `json:"username" query:"username" validate:"omitempty,max=50" maxLength:"50" description:"主账号用户名(模糊查询)"`
|
||||
}
|
||||
|
||||
// ShopCommissionSummaryItem 代理商佣金汇总项
|
||||
type ShopCommissionSummaryItem struct {
|
||||
ShopID uint `json:"shop_id" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name" description:"店铺名称"`
|
||||
ShopCode string `json:"shop_code" description:"店铺编码"`
|
||||
Username string `json:"username" description:"主账号用户名"`
|
||||
Phone string `json:"phone" description:"主账号手机号"`
|
||||
TotalCommission int64 `json:"total_commission" description:"总佣金(分)"`
|
||||
WithdrawnCommission int64 `json:"withdrawn_commission" description:"已提现佣金(分)"`
|
||||
UnwithdrawCommission int64 `json:"unwithdraw_commission" description:"未提现佣金(分)"`
|
||||
FrozenCommission int64 `json:"frozen_commission" description:"冻结中佣金(分)"`
|
||||
WithdrawingCommission int64 `json:"withdrawing_commission" description:"提现中佣金(分)"`
|
||||
AvailableCommission int64 `json:"available_commission" description:"可提现佣金(分)"`
|
||||
CreatedAt string `json:"created_at" description:"店铺创建时间"`
|
||||
}
|
||||
|
||||
// ShopCommissionSummaryPageResult 代理商佣金列表分页响应
|
||||
type ShopCommissionSummaryPageResult struct {
|
||||
Items []ShopCommissionSummaryItem `json:"items" description:"代理商佣金列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// 代理商提现记录查询 DTO
|
||||
// ========================================
|
||||
|
||||
// ShopWithdrawalRequestListReq 代理商提现记录查询请求
|
||||
type ShopWithdrawalRequestListReq struct {
|
||||
ShopID uint `json:"-" params:"shop_id" path:"shop_id" validate:"required" description:"店铺ID"`
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码(默认1)"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量(默认20,最大100)"`
|
||||
WithdrawalNo string `json:"withdrawal_no" query:"withdrawal_no" validate:"omitempty,max=50" maxLength:"50" description:"提现单号(精确查询)"`
|
||||
StartTime string `json:"start_time" query:"start_time" validate:"omitempty" description:"申请开始时间(格式:2006-01-02 15:04:05)"`
|
||||
EndTime string `json:"end_time" query:"end_time" validate:"omitempty" description:"申请结束时间(格式:2006-01-02 15:04:05)"`
|
||||
}
|
||||
|
||||
// ShopWithdrawalRequestItem 代理商提现记录项
|
||||
type ShopWithdrawalRequestItem struct {
|
||||
ID uint `json:"id" description:"提现申请ID"`
|
||||
WithdrawalNo string `json:"withdrawal_no" description:"提现单号"`
|
||||
Amount int64 `json:"amount" description:"提现金额(分)"`
|
||||
FeeRate int64 `json:"fee_rate" description:"手续费比率(基点,100=1%)"`
|
||||
Fee int64 `json:"fee" description:"手续费(分)"`
|
||||
ActualAmount int64 `json:"actual_amount" description:"实际到账金额(分)"`
|
||||
Status int `json:"status" description:"状态 (1:待审核, 2:已通过, 3:已拒绝, 4:已到账)"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
ShopID uint `json:"shop_id" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name" description:"店铺名称"`
|
||||
ShopHierarchy string `json:"shop_hierarchy" description:"店铺层级路径(格式:上上级_上级_本身,最多两层上级)"`
|
||||
ApplicantID uint `json:"applicant_id" description:"申请人账号ID"`
|
||||
ApplicantName string `json:"applicant_name" description:"申请人用户名"`
|
||||
ProcessorID *uint `json:"processor_id,omitempty" description:"处理人账号ID"`
|
||||
ProcessorName string `json:"processor_name,omitempty" description:"处理人用户名"`
|
||||
WithdrawalMethod string `json:"withdrawal_method" description:"提现方式 (alipay:支付宝, wechat:微信, bank:银行卡)"`
|
||||
PaymentType string `json:"payment_type" description:"放款类型 (manual:人工打款)"`
|
||||
AccountName string `json:"account_name" description:"收款账户名称"`
|
||||
AccountNumber string `json:"account_number" description:"收款账号"`
|
||||
BankName string `json:"bank_name,omitempty" description:"银行名称(银行卡提现时)"`
|
||||
RejectReason string `json:"reject_reason,omitempty" description:"拒绝原因"`
|
||||
Remark string `json:"remark,omitempty" description:"备注"`
|
||||
CreatedAt string `json:"created_at" description:"申请时间"`
|
||||
ProcessedAt string `json:"processed_at,omitempty" description:"处理时间"`
|
||||
PaidAt string `json:"paid_at,omitempty" description:"到账时间"`
|
||||
}
|
||||
|
||||
// ShopWithdrawalRequestPageResult 代理商提现记录分页响应
|
||||
type ShopWithdrawalRequestPageResult struct {
|
||||
Items []ShopWithdrawalRequestItem `json:"items" description:"提现记录列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// 代理商佣金明细查询 DTO
|
||||
// ========================================
|
||||
|
||||
// ShopCommissionRecordListReq 代理商佣金明细查询请求
|
||||
type ShopCommissionRecordListReq struct {
|
||||
ShopID uint `json:"-" params:"shop_id" path:"shop_id" validate:"required" description:"店铺ID"`
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码(默认1)"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量(默认20,最大100)"`
|
||||
CommissionType string `json:"commission_type" query:"commission_type" validate:"omitempty,oneof=one_time long_term" description:"佣金类型 (one_time:一次性, long_term:长期)"`
|
||||
ICCID string `json:"iccid" query:"iccid" validate:"omitempty,max=50" maxLength:"50" description:"ICCID(模糊查询)"`
|
||||
DeviceNo string `json:"device_no" query:"device_no" validate:"omitempty,max=50" maxLength:"50" description:"设备号(模糊查询)"`
|
||||
OrderNo string `json:"order_no" query:"order_no" validate:"omitempty,max=50" maxLength:"50" description:"订单号(模糊查询)"`
|
||||
}
|
||||
|
||||
// ShopCommissionRecordItem 代理商佣金明细项
|
||||
type ShopCommissionRecordItem struct {
|
||||
ID uint `json:"id" description:"佣金记录ID"`
|
||||
Amount int64 `json:"amount" description:"佣金金额(分)"`
|
||||
BalanceAfter int64 `json:"balance_after" description:"入账后佣金余额(分)"`
|
||||
CommissionType string `json:"commission_type" description:"佣金类型 (one_time:一次性, long_term:长期)"`
|
||||
Status int `json:"status" description:"状态 (1:已冻结, 2:解冻中, 3:已发放, 4:已失效)"`
|
||||
StatusName string `json:"status_name" description:"状态名称"`
|
||||
OrderID uint `json:"order_id" description:"订单ID"`
|
||||
OrderNo string `json:"order_no" description:"订单号"`
|
||||
DeviceNo string `json:"device_no,omitempty" description:"设备号"`
|
||||
ICCID string `json:"iccid,omitempty" description:"ICCID"`
|
||||
OrderCreatedAt string `json:"order_created_at" description:"订单创建时间"`
|
||||
CreatedAt string `json:"created_at" description:"佣金入账时间"`
|
||||
}
|
||||
|
||||
// ShopCommissionRecordPageResult 代理商佣金明细分页响应
|
||||
type ShopCommissionRecordPageResult struct {
|
||||
Items []ShopCommissionRecordItem `json:"items" description:"佣金明细列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// ========================================
|
||||
// 路由参数 DTO
|
||||
// ========================================
|
||||
|
||||
// ShopIDPathParam 店铺ID路径参数
|
||||
type ShopIDPathParam struct {
|
||||
ShopID uint `path:"shop_id" description:"店铺ID" required:"true"`
|
||||
}
|
||||
70
internal/model/dto/shop_dto.go
Normal file
70
internal/model/dto/shop_dto.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package dto
|
||||
|
||||
type ShopListRequest struct {
|
||||
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
|
||||
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
|
||||
ShopName string `json:"shop_name" query:"shop_name" validate:"omitempty,max=100" maxLength:"100" description:"店铺名称模糊查询"`
|
||||
ShopCode string `json:"shop_code" query:"shop_code" validate:"omitempty,max=50" maxLength:"50" description:"店铺编号模糊查询"`
|
||||
ParentID *uint `json:"parent_id" query:"parent_id" validate:"omitempty,min=1" minimum:"1" description:"上级店铺ID"`
|
||||
Level *int `json:"level" query:"level" validate:"omitempty,min=1,max=7" minimum:"1" maximum:"7" description:"店铺层级 (1-7级)"`
|
||||
Status *int `json:"status" query:"status" validate:"omitempty,oneof=0 1" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
type CreateShopRequest struct {
|
||||
ShopName string `json:"shop_name" validate:"required,min=1,max=100" required:"true" minLength:"1" maxLength:"100" description:"店铺名称"`
|
||||
ShopCode string `json:"shop_code" validate:"required,min=1,max=50" required:"true" minLength:"1" maxLength:"50" description:"店铺编号"`
|
||||
ParentID *uint `json:"parent_id" validate:"omitempty,min=1" minimum:"1" description:"上级店铺ID(一级店铺可不填)"`
|
||||
ContactName string `json:"contact_name" validate:"omitempty,max=50" maxLength:"50" description:"联系人姓名"`
|
||||
ContactPhone string `json:"contact_phone" validate:"omitempty,len=11" minLength:"11" maxLength:"11" description:"联系人电话"`
|
||||
Province string `json:"province" validate:"omitempty,max=50" maxLength:"50" description:"省份"`
|
||||
City string `json:"city" validate:"omitempty,max=50" maxLength:"50" description:"城市"`
|
||||
District string `json:"district" validate:"omitempty,max=50" maxLength:"50" description:"区县"`
|
||||
Address string `json:"address" validate:"omitempty,max=255" maxLength:"255" description:"详细地址"`
|
||||
InitPassword string `json:"init_password" validate:"required,min=8,max=32" required:"true" minLength:"8" maxLength:"32" description:"初始账号密码"`
|
||||
InitUsername string `json:"init_username" validate:"required,min=3,max=50" required:"true" minLength:"3" maxLength:"50" description:"初始账号用户名"`
|
||||
InitPhone string `json:"init_phone" validate:"required,len=11" required:"true" minLength:"11" maxLength:"11" description:"初始账号手机号"`
|
||||
}
|
||||
|
||||
type UpdateShopRequest struct {
|
||||
ShopName string `json:"shop_name" validate:"required,min=1,max=100" required:"true" minLength:"1" maxLength:"100" description:"店铺名称"`
|
||||
ContactName string `json:"contact_name" validate:"omitempty,max=50" maxLength:"50" description:"联系人姓名"`
|
||||
ContactPhone string `json:"contact_phone" validate:"omitempty,len=11" minLength:"11" maxLength:"11" description:"联系人电话"`
|
||||
Province string `json:"province" validate:"omitempty,max=50" maxLength:"50" description:"省份"`
|
||||
City string `json:"city" validate:"omitempty,max=50" maxLength:"50" description:"城市"`
|
||||
District string `json:"district" validate:"omitempty,max=50" maxLength:"50" description:"区县"`
|
||||
Address string `json:"address" validate:"omitempty,max=255" maxLength:"255" description:"详细地址"`
|
||||
Status int `json:"status" validate:"required,oneof=0 1" required:"true" description:"状态 (0:禁用, 1:启用)"`
|
||||
}
|
||||
|
||||
// ShopResponse 店铺响应
|
||||
type ShopResponse struct {
|
||||
ID uint `json:"id" description:"店铺ID"`
|
||||
ShopName string `json:"shop_name" description:"店铺名称"`
|
||||
ShopCode string `json:"shop_code" description:"店铺编号"`
|
||||
ParentID *uint `json:"parent_id,omitempty" description:"上级店铺ID"`
|
||||
Level int `json:"level" description:"店铺层级 (1-7级)"`
|
||||
ContactName string `json:"contact_name" description:"联系人姓名"`
|
||||
ContactPhone string `json:"contact_phone" description:"联系人电话"`
|
||||
Province string `json:"province" description:"省份"`
|
||||
City string `json:"city" description:"城市"`
|
||||
District string `json:"district" description:"区县"`
|
||||
Address string `json:"address" description:"详细地址"`
|
||||
Status int `json:"status" description:"状态 (0:禁用, 1:启用)"`
|
||||
CreatedAt string `json:"created_at" description:"创建时间"`
|
||||
UpdatedAt string `json:"updated_at" description:"更新时间"`
|
||||
}
|
||||
|
||||
// ShopPageResult 店铺分页响应
|
||||
// ShopPageResult 店铺分页响应
|
||||
type ShopPageResult struct {
|
||||
Items []ShopResponse `json:"items" description:"店铺列表"`
|
||||
Total int64 `json:"total" description:"总记录数"`
|
||||
Page int `json:"page" description:"当前页码"`
|
||||
Size int `json:"size" description:"每页数量"`
|
||||
}
|
||||
|
||||
// UpdateShopParams 更新店铺聚合参数 (用于文档生成)
|
||||
type UpdateShopParams struct {
|
||||
IDReq
|
||||
UpdateShopRequest
|
||||
}
|
||||
Reference in New Issue
Block a user