From d209270630a91368033c7abf968e76566d3d9e16 Mon Sep 17 00:00:00 2001 From: Mrx <18278715334@163.com> Date: Thu, 12 Mar 2026 14:29:53 +0800 Subject: [PATCH] f --- app/main/api/desc/admin/admin_agent.api | 12 ++++ .../adminupdateagentmobilehandler.go | 30 ++++++++ app/main/api/internal/handler/routes.go | 5 ++ .../adminupdateagentmobilelogic.go | 69 +++++++++++++++++++ app/main/api/internal/types/types.go | 10 +++ 5 files changed, 126 insertions(+) create mode 100644 app/main/api/internal/handler/admin_agent/adminupdateagentmobilehandler.go create mode 100644 app/main/api/internal/logic/admin_agent/adminupdateagentmobilelogic.go diff --git a/app/main/api/desc/admin/admin_agent.api b/app/main/api/desc/admin/admin_agent.api index c71cc26..5550f04 100644 --- a/app/main/api/desc/admin/admin_agent.api +++ b/app/main/api/desc/admin/admin_agent.api @@ -82,6 +82,10 @@ service main { // 邀请码列表查询 @handler AdminGetInviteCodeList get /invite_code/list (AdminGetInviteCodeListReq) returns (AdminGetInviteCodeListResp) + + // 代理手机号修改 + @handler AdminUpdateAgentMobile + post /mobile/update (AdminUpdateAgentMobileReq) returns (AdminUpdateAgentMobileResp) } type ( @@ -431,5 +435,13 @@ type ( Total int64 `json:"total"` // 总数 Items []InviteCodeListItem `json:"items"` // 列表数据 } + // 代理手机号修改 + AdminUpdateAgentMobileReq { + AgentId string `json:"agent_id"` // 代理ID + Mobile string `json:"mobile"` // 新手机号 + } + AdminUpdateAgentMobileResp { + Success bool `json:"success"` + } ) diff --git a/app/main/api/internal/handler/admin_agent/adminupdateagentmobilehandler.go b/app/main/api/internal/handler/admin_agent/adminupdateagentmobilehandler.go new file mode 100644 index 0000000..c8fcb8a --- /dev/null +++ b/app/main/api/internal/handler/admin_agent/adminupdateagentmobilehandler.go @@ -0,0 +1,30 @@ +package admin_agent + +import ( + "net/http" + + "ycc-server/app/main/api/internal/logic/admin_agent" + "ycc-server/app/main/api/internal/svc" + "ycc-server/app/main/api/internal/types" + "ycc-server/common/result" + "ycc-server/pkg/lzkit/validator" + + "github.com/zeromicro/go-zero/rest/httpx" +) + +func AdminUpdateAgentMobileHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.AdminUpdateAgentMobileReq + if err := httpx.Parse(r, &req); err != nil { + result.ParamErrorResult(r, w, err) + return + } + if err := validator.Validate(req); err != nil { + result.ParamValidateErrorResult(r, w, err) + return + } + l := admin_agent.NewAdminUpdateAgentMobileLogic(r.Context(), svcCtx) + resp, err := l.AdminUpdateAgentMobile(&req) + result.HttpResult(r, w, resp, err) + } +} diff --git a/app/main/api/internal/handler/routes.go b/app/main/api/internal/handler/routes.go index e591e41..a717918 100644 --- a/app/main/api/internal/handler/routes.go +++ b/app/main/api/internal/handler/routes.go @@ -94,6 +94,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { Path: "/product_config/update", Handler: admin_agent.AdminUpdateAgentProductConfigHandler(serverCtx), }, + { + Method: http.MethodPost, + Path: "/mobile/update", + Handler: admin_agent.AdminUpdateAgentMobileHandler(serverCtx), + }, { Method: http.MethodGet, Path: "/real_name/list", diff --git a/app/main/api/internal/logic/admin_agent/adminupdateagentmobilelogic.go b/app/main/api/internal/logic/admin_agent/adminupdateagentmobilelogic.go new file mode 100644 index 0000000..33d164a --- /dev/null +++ b/app/main/api/internal/logic/admin_agent/adminupdateagentmobilelogic.go @@ -0,0 +1,69 @@ +package admin_agent + +import ( + "context" + "regexp" + + "ycc-server/app/main/model" + "ycc-server/common/xerr" + "ycc-server/pkg/lzkit/crypto" + + "github.com/pkg/errors" + + "ycc-server/app/main/api/internal/svc" + "ycc-server/app/main/api/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +// 手机号正则:11 位大陆手机号 +var mobileRegexp = regexp.MustCompile(`^1[3-9]\d{9}$`) + +type AdminUpdateAgentMobileLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewAdminUpdateAgentMobileLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AdminUpdateAgentMobileLogic { + return &AdminUpdateAgentMobileLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *AdminUpdateAgentMobileLogic) AdminUpdateAgentMobile(req *types.AdminUpdateAgentMobileReq) (resp *types.AdminUpdateAgentMobileResp, err error) { + // 1. 校验手机号格式 + if req.Mobile == "" { + return nil, errors.Wrapf(xerr.NewErrMsg("手机号不能为空"), "") + } + if !mobileRegexp.MatchString(req.Mobile) { + return nil, errors.Wrapf(xerr.NewErrMsg("手机号格式不正确"), "") + } + + // 2. 查询代理 + agent, err := l.svcCtx.AgentModel.FindOne(l.ctx, req.AgentId) + if err != nil { + if errors.Is(err, model.ErrNotFound) { + return nil, errors.Wrapf(xerr.NewErrMsg("代理不存在"), "") + } + return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询代理失败, %v", err) + } + + // 3. 加密新手机号 + encryptedMobile, err := crypto.EncryptMobile(req.Mobile, l.svcCtx.Config.Encrypt.SecretKey) + if err != nil { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "加密手机号失败, %v", err) + } + + // 4. 更新代理手机号 + agent.Mobile = encryptedMobile + if err := l.svcCtx.AgentModel.UpdateWithVersion(l.ctx, nil, agent); err != nil { + return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "更新手机号失败, %v", err) + } + + return &types.AdminUpdateAgentMobileResp{ + Success: true, + }, nil +} diff --git a/app/main/api/internal/types/types.go b/app/main/api/internal/types/types.go index bea6ded..701cc5a 100644 --- a/app/main/api/internal/types/types.go +++ b/app/main/api/internal/types/types.go @@ -872,6 +872,16 @@ type AdminUpdateAgentProductConfigResp struct { Success bool `json:"success"` } +// 代理手机号修改 +type AdminUpdateAgentMobileReq struct { + AgentId string `json:"agent_id"` // 代理ID + Mobile string `json:"mobile"` // 新手机号 +} + +type AdminUpdateAgentMobileResp struct { + Success bool `json:"success"` +} + type AdminUpdateApiReq struct { Id string `path:"id"` ApiName string `json:"api_name"`