package cn.stylefeng.guns.modular.business.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdByIdRequest;
|
import cn.stylefeng.guns.modular.business.dto.request.SysUserResetPwdRequest;
|
import cn.stylefeng.guns.modular.business.service.ISysUserBusinessService;
|
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
|
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
|
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
|
import cn.stylefeng.roses.kernel.rule.enums.DeleteEnum;
|
import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.ErrorResponseData;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService;
|
import cn.stylefeng.roses.kernel.system.api.expander.SystemConfigExpander;
|
import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest;
|
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
|
import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserMapper;
|
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
|
@Service
|
public class SysUserBusinessServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserBusinessService {
|
|
@Resource
|
private SysSmsInfoService sysSmsInfoService;
|
@Resource
|
private SysUserService sysUserService;
|
@Resource
|
private CustomerService customerService;
|
@Resource
|
private PasswordStoredEncryptApi passwordStoredEncryptApi;
|
|
@Override
|
public ResponseData resetPwd(SysUserResetPwdRequest req) {
|
// 验证码通过
|
sysSmsInfoService.validateSmsInfo(req);
|
|
SysUser sysUser = sysUserService.getOne(
|
Wrappers.<SysUser>lambdaQuery()
|
.and(w -> w.eq(SysUser::getAccount, req.getPhone())
|
.or().eq(SysUser::getPhone, req.getPhone())
|
)
|
.eq(SysUser::getStatusFlag, StatusEnum.ENABLE.getCode())
|
.eq(SysUser::getDelFlag, DeleteEnum.NOT_DELETE.getCode())
|
.last("LIMIT 1")
|
);
|
if (sysUser == null || (!req.getPhone().equals(sysUser.getAccount()) && !req.getPhone().equals(sysUser.getPhone()))) {
|
return new ErrorResponseData<>("手机号验证错误");
|
}
|
|
SysUserRequest sysUserRequest = BeanUtil.toBean(req, SysUserRequest.class);
|
return resetPwdOption(sysUserRequest, sysUser);
|
}
|
|
@Override
|
public ResponseData resetPwdById(SysUserResetPwdByIdRequest req) {
|
SysUser sysUser = sysUserService.getById(req.getUserId());
|
SysUserRequest sysUserRequest = BeanUtil.toBean(req, SysUserRequest.class);
|
return resetPwdOption(sysUserRequest, sysUser);
|
}
|
public ResponseData resetPwdOption(SysUserRequest sysUserRequest, SysUser sysUser) {
|
sysUserRequest.setUserId(sysUser.getUserId());
|
sysUserService.resetPassword(sysUserRequest);
|
|
// C端用户更新
|
Customer user = customerService.getOne(Wrappers.<Customer>lambdaQuery().eq(Customer::getSysUserId, sysUserRequest.getUserId()).last("LIMIT 1"));
|
Customer customer = new Customer();
|
customer.setCustomerId(user.getCustomerId());
|
customer.setAccount(user.getAccount());
|
|
String password = sysUserRequest.getNewPassword();
|
if (StrUtil.isBlank(password)) {
|
if (customer.getAccount().length() >= 6) {
|
// 密码设置为手机号后六位
|
password = StrUtil.sub(customer.getAccount(), -6, customer.getAccount().length());
|
} else {
|
// 默认密码
|
password = SystemConfigExpander.getDefaultPassWord();
|
}
|
}
|
customer.setPassword(passwordStoredEncryptApi.encrypt(password));
|
customerService.updateCustomerRemoveCache(customer);
|
return new SuccessResponseData<>();
|
}
|
}
|