package admin_user import ( "context" "tydata-server/app/main/api/internal/svc" "tydata-server/app/main/api/internal/types" "tydata-server/app/main/model" "tydata-server/common/xerr" "tydata-server/pkg/lzkit/crypto" "github.com/pkg/errors" "github.com/zeromicro/go-zero/core/logx" ) type AdminResetPasswordLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewAdminResetPasswordLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AdminResetPasswordLogic { return &AdminResetPasswordLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *AdminResetPasswordLogic) AdminResetPassword(req *types.AdminResetPasswordReq) (resp *types.AdminResetPasswordResp, err error) { // 检查用户是否存在 user, err := l.svcCtx.AdminUserModel.FindOne(l.ctx, req.Id) if err != nil { if err == model.ErrNotFound { return nil, errors.Wrapf(xerr.NewErrMsg("用户不存在"), "用户ID: %d", req.Id) } return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "查询用户失败: %v", err) } // 检查用户状态 if user.Status != 1 { return nil, errors.Wrapf(xerr.NewErrMsg("用户已被禁用,无法重置密码"), "用户ID: %d", req.Id) } // 对密码进行加密 hashedPassword, err := crypto.PasswordHash(req.Password) if err != nil { return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "密码加密失败: %v", err) } // 更新用户密码 user.Password = hashedPassword _, err = l.svcCtx.AdminUserModel.Update(l.ctx, nil, user) if err != nil { return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "更新密码失败: %v", err) } l.Infof("管理员密码重置成功,用户ID: %d, 用户名: %s", req.Id, user.Username) return &types.AdminResetPasswordResp{ Success: true, }, nil }