guohongjin
2024-05-15 5b7639f0bd9e056738ec15100ed0532e965c6cd5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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<>();
    }
}