feat(customer):增加机构重置密码的功能

This commit is contained in:
JIAN
2024-08-15 21:56:23 +08:00
parent 1b41879c42
commit 2a8830feb7
3 changed files with 54 additions and 12 deletions

View File

@@ -25,11 +25,15 @@ public class ServeProviderController {
@Resource
private IServeProviderService serveProviderService;
@PostMapping("/institution/resetPassword")
@ApiOperation("机构端忘记密码")
public void institutionResetPassword(@RequestBody InstitutionResetPasswordReqDTO institutionResetPasswordReqDTO) {
serveProviderService.institutionResetPassword(institutionResetPasswordReqDTO);
}
@GetMapping("/currentUserInfo")
@ApiOperation("获取当前用户信息")
public ServeProviderInfoResDTO currentUserInfo() {
return serveProviderService.currentUserInfo();
}
}
}

View File

@@ -7,6 +7,7 @@ import com.jzo2o.api.customer.dto.response.ServeProviderSimpleResDTO;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.customer.model.domain.ServeProvider;
import com.jzo2o.customer.model.dto.request.InstitutionRegisterReqDTO;
import com.jzo2o.customer.model.dto.request.InstitutionResetPasswordReqDTO;
import com.jzo2o.customer.model.dto.request.ServeProviderPageQueryReqDTO;
import com.jzo2o.customer.model.dto.response.CertificationStatusDTO;
import com.jzo2o.customer.model.dto.response.ServeProviderBasicInformationResDTO;
@@ -125,4 +126,9 @@ public interface IServeProviderService extends IService<ServeProvider> {
* 机构使用手机号等信息注册
*/
ServeProvider registerForInstitution(InstitutionRegisterReqDTO institutionRegisterReqDTO);
/**
* 机构使用手机号重置密码
*/
void institutionResetPassword(InstitutionResetPasswordReqDTO institutionResetPasswordReqDTO);
}

View File

@@ -15,12 +15,15 @@ import com.jzo2o.common.constants.UserType;
import com.jzo2o.common.enums.EnableStatusEnum;
import com.jzo2o.common.enums.SmsBusinessTypeEnum;
import com.jzo2o.common.expcetions.BadRequestException;
import com.jzo2o.common.expcetions.CommonException;
import com.jzo2o.common.expcetions.ForbiddenOperationException;
import com.jzo2o.common.model.PageResult;
import com.jzo2o.common.utils.*;
import com.jzo2o.customer.mapper.ServeProviderMapper;
import com.jzo2o.customer.model.domain.*;
import com.jzo2o.customer.model.dto.ServeSkillSimpleDTO;
import com.jzo2o.customer.model.dto.request.InstitutionRegisterReqDTO;
import com.jzo2o.customer.model.dto.request.InstitutionResetPasswordReqDTO;
import com.jzo2o.customer.model.dto.request.ServeProviderPageQueryReqDTO;
import com.jzo2o.customer.model.dto.response.CertificationStatusDTO;
import com.jzo2o.customer.model.dto.response.ServeProviderBasicInformationResDTO;
@@ -63,9 +66,6 @@ public class ServeProviderServiceImpl extends ServiceImpl<ServeProviderMapper, S
private IAgencyCertificationService agencyCertificationService;
@Resource
private IWorkerCertificationService workerCertificationService;
@Resource
private IServeProviderService owner;
@Resource
private SmsCodeApi smsCodeApi;
@@ -201,21 +201,26 @@ public class ServeProviderServiceImpl extends ServiceImpl<ServeProviderMapper, S
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public ServeProvider registerForInstitution(InstitutionRegisterReqDTO institutionRegisterReqDTO) {
private void checkVerifyCode(String verifyCode, String phone, SmsBusinessTypeEnum businessType) {
// 数据校验
String verifyCode = institutionRegisterReqDTO.getVerifyCode();
if (StringUtils.isEmpty(verifyCode)) {
if (StringUtils.isEmpty(verifyCode) || StringUtils.isEmpty(phone) || ObjectUtils.isEmpty(businessType)) {
throw new BadRequestException("验证码错误,请重新获取");
}
// 远程调用publics服务校验验证码是否正确
String phone = institutionRegisterReqDTO.getPhone();
if (!smsCodeApi.verify(phone, SmsBusinessTypeEnum.INSTITUTION_REGISTER, verifyCode)
if (!smsCodeApi.verify(phone, businessType, verifyCode)
.getIsSuccess()) {
throw new BadRequestException("验证码错误,请重新获取");
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public ServeProvider registerForInstitution(InstitutionRegisterReqDTO institutionRegisterReqDTO) {
// 数据校验
String phone = institutionRegisterReqDTO.getPhone();
checkVerifyCode(institutionRegisterReqDTO.getVerifyCode(),
phone, SmsBusinessTypeEnum.INSTITUTION_REGISTER);
// 密码加密
String password = passwordEncoder.encode(institutionRegisterReqDTO.getPassword());
@@ -224,6 +229,33 @@ public class ServeProviderServiceImpl extends ServiceImpl<ServeProviderMapper, S
return add(phone, UserType.INSTITUTION, password);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void institutionResetPassword(InstitutionResetPasswordReqDTO institutionResetPasswordReqDTO) {
// 数据校验
String phone = institutionResetPasswordReqDTO.getPhone();
checkVerifyCode(institutionResetPasswordReqDTO.getVerifyCode(),
phone, SmsBusinessTypeEnum.INSTITUTION_RESET_PASSWORD);
ServeProvider serveProvider = lambdaQuery().eq(ServeProvider::getPhone, phone).one();
if (ObjectUtils.isEmpty(serveProvider)) {
throw new ForbiddenOperationException("手机号对应用户不存在");
}
String password = institutionResetPasswordReqDTO.getPassword();
if (passwordEncoder.matches(password, serveProvider.getPassword())) {
throw new ForbiddenOperationException("新密码和原密码相同无法修改");
}
// 校验通过更新密码
if (!lambdaUpdate()
.eq(ServeProvider::getPhone, phone)
.set(ServeProvider::getPassword, passwordEncoder.encode(password))
.update()) {
throw new CommonException("密码更新失败");
}
}
/**
* 根据服务人员/机构id查询基本信息
*