goupan
2024-04-25 9d8cd5255cec12ba1caa1a1fbe6351f7699079fa
代码提交
6个文件已修改
169 ■■■■■ 已修改文件
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java
@@ -1,20 +1,21 @@
package cn.stylefeng.guns.modular.business.dto.request;
import cn.stylefeng.roses.kernel.rule.annotation.ChineseDescription;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "微信OpenId登录-请求参数")
public class CustomerWxOpenIdLoginRequest {
public class CustomerWxOpenIdLoginRequest extends SysSmsVerifyParam {
    @ApiModelProperty(value = "微信OpenId", required = true)
    @ChineseDescription("微信OpenId")
    private String wxOpenId;
    @ApiModelProperty(value = "手机号")
    @ChineseDescription("手机号")
    private String phone;
    @ApiModelProperty(value = "顾问工号")
    @ChineseDescription("顾问工号")
    private String workerNo;
}
rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java
@@ -46,6 +46,7 @@
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.sms.modular.param.SysSmsVerifyParam;
import cn.stylefeng.roses.kernel.sms.modular.service.SysSmsInfoService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -150,8 +151,8 @@
        return new SuccessResponseData(openId);
    }
    @ApiOperation(value = "绑定微信OpenId")
    @PostResource(name = "绑定微信OpenId", path = "/bindOpenId")
    @ApiOperation(value = "绑定/解绑微信OpenId")
    @PostResource(name = "绑定/解绑微信OpenId", path = "/bindOpenId")
    public ResponseData<Boolean> bindOpenId(@RequestBody CustomerBindOpenIdRequest req) {
        // 获取当前登录用户信息
        LoginUser loginUser = LoginContext.me().getLoginUser();
@@ -283,38 +284,15 @@
        if (StrUtil.isNotBlank(req.getWorkerNo())) {
            // 获取绑定顾问岗位ID(这里做校验)
            customerService.getBindWorkerPostIds(req.getWorkerNo(), PostIdEnum.PO_11, PostIdEnum.PO_21);
            //绑定工号
            // 幸福顾问
            PostIdEnum post11Enum = PostIdEnum.PO_11;
            // 咨询顾问
            PostIdEnum post21Enum = PostIdEnum.PO_21;
            // 获取绑定顾问岗位ID
            String[] bindWorkerPostIds = customerService.getBindWorkerPostIds(req.getWorkerNo(), post11Enum, post21Enum);
            Customer workerByNo = customerService.getOne(
                    Wrappers.<Customer>lambdaUpdate().eq(Customer::getWorkerNo, req.getWorkerNo()).last("LIMIT 1")
            );
            LambdaUpdateWrapper<Customer> wrapper = Wrappers.<Customer>lambdaUpdate().eq(Customer::getCustomerId, validCustomer.getCustomerId());
            for (String postId : bindWorkerPostIds) {
                if (postId.equals(post11Enum.getCode().toString())) {
                    wrapper.set(Customer::getClassWorkerId, workerByNo.getCustomerId());
                } else if (postId.equals(post21Enum.getCode().toString())) {
                    wrapper.set(Customer::getConsultWorkerId, workerByNo.getCustomerId());
                }
            }
            // 修改用户信息
            Boolean update = customerService.update(wrapper);
        }
        // 验证码通过
        sysSmsInfoService.validateSmsInfo(req);
        if (StrUtil.isNotBlank(req.getWorkerNo())) {
            // 绑定顾问岗位ID数据
            customerService.userBindClassConsultWorkerId(validCustomer.getCustomerId(), req.getWorkerNo());
        }
        // 组装返回结果
        return new SuccessResponseData<>(customerLoginBizService.phoneLogin(req.getPhone(), CustomerUserTypeEnum.USER));
@@ -328,18 +306,37 @@
        String phoneMd5 = MD5.create().digestHex(md5Salt + req.getPhone());
        Assert.isTrue(phoneMd5.equals(req.getPhoneMd5()), "手机号验证失败");
        // 组装返回结果
        return new SuccessResponseData<>(customerLoginBizService.phoneLogin(req.getPhone(), CustomerUserTypeEnum.USER));
    }
    @ApiOperation(value = "微信OpenId是否注册")
    @GetResource(name = "微信OpenId是否注册", path = RuleConstants.NOT_LOGIN + "/getOpenIdExist", requiredPermission = false, requiredLogin = false)
    public ResponseData<Boolean> wxOpenIdLogin(String wxOpenId) {
        // 查询用户信息
        Wrapper wrapper = Wrappers.<Customer>lambdaQuery()
                .eq(Customer::getUserType, CustomerUserTypeEnum.USER.getCode())
                .eq(Customer::getWxOpenId, wxOpenId);
        long count = customerService.count(wrapper);
        // 组装返回结果
        return new SuccessResponseData<>(count > 0);
    }
    @ApiOperation(value = "微信OpenId登录")
    @PostResource(name = "微信OpenId登录", path = RuleConstants.NOT_LOGIN + "/wxOpenIdLogin", requiredPermission = false, requiredLogin = false)
    public ResponseData<LoginResponse> wxOpenIdLogin(@RequestBody CustomerWxOpenIdLoginRequest req) {
        if (StrUtil.isNotBlank(req.getWorkerNo())) {
            // 获取绑定顾问岗位ID(这里做校验)
            customerService.getBindWorkerPostIds(req.getWorkerNo(), PostIdEnum.PO_11, PostIdEnum.PO_21);
        }
        if (StrUtil.isNotBlank(req.getPhone())) {
            // 验证码通过
            sysSmsInfoService.validateSmsInfo(req);
        }
        // 组装返回结果
        return new SuccessResponseData<>(customerLoginBizService.wxOpenIdLogin(req.getWxOpenId(), req.getPhone(), CustomerUserTypeEnum.USER));
        return new SuccessResponseData<>(customerLoginBizService.wxOpenIdLogin(req.getWxOpenId(), req.getPhone(), req.getWorkerNo(), CustomerUserTypeEnum.USER));
    }
    @ApiOperation("获取帮助列表(分页)")
rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java
@@ -49,7 +49,7 @@
        return loginResponse;
    }
    public LoginResponse wxOpenIdLogin(String wxOpenId, String phone, CustomerUserTypeEnum userType) {
    public LoginResponse wxOpenIdLogin(String wxOpenId, String phone, String workerNo, CustomerUserTypeEnum userType) {
        // 查询用户信息
        Wrapper wrapper = Wrappers.<Customer>lambdaQuery()
                .eq(Customer::getUserType, userType.getCode())
@@ -63,6 +63,12 @@
            // 可能已经注册的用户,再获取一次用户
            customer = customerService.getOne(wrapper, false);
        }
        if (StrUtil.isNotBlank(workerNo)) {
            // 绑定顾问岗位ID数据
            customerService.userBindClassConsultWorkerId(customer.getCustomerId(), workerNo);
        }
        // 用户登录信息
        LoginResponse loginResponse = customerService.wrapperLoginResponse(customer, new LoginRequest());
        return loginResponse;
rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java
@@ -49,6 +49,7 @@
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -178,8 +179,8 @@
        return new SuccessResponseData(openId);
    }
    @ApiOperation(value = "绑定微信OpenId")
    @PostResource(name = "绑定微信OpenId", path = "/bindOpenId")
    @ApiOperation(value = "绑定/解绑微信OpenId")
    @PostResource(name = "绑定/解绑微信OpenId", path = "/bindOpenId")
    public ResponseData<Boolean> bindOpenId(@RequestBody CustomerBindOpenIdRequest req) {
        // 获取当前登录用户信息
        LoginUser loginUser = LoginContext.me().getLoginUser();
@@ -278,33 +279,6 @@
        // 验证码通过
        sysSmsInfoService.validateSmsInfo(req);
//        //绑定工号
//        // 幸福顾问
//        PostIdEnum post11Enum = PostIdEnum.PO_11;
//        // 咨询顾问
//        PostIdEnum post21Enum = PostIdEnum.PO_21;
//
//        // 获取绑定顾问岗位ID
//        String[] bindWorkerPostIds = customerService.getBindWorkerPostIds(req.getWorkerNo(), post11Enum, post21Enum);
//        Customer workerByNo = customerService.getOne(
//                Wrappers.<Customer>lambdaUpdate().eq(Customer::getWorkerNo, req.getWorkerNo()).last("LIMIT 1")
//        );
//
//        LambdaUpdateWrapper<Customer> wrapper = Wrappers.<Customer>lambdaUpdate().eq(Customer::getCustomerId, validCustomer.getCustomerId());
//        for (String postId : bindWorkerPostIds) {
//            if (postId.equals(post11Enum.getCode().toString())) {
//                wrapper.set(Customer::getClassWorkerId, workerByNo.getCustomerId());
//            } else if (postId.equals(post21Enum.getCode().toString())) {
//                wrapper.set(Customer::getConsultWorkerId, workerByNo.getCustomerId());
//            }
//        }
//
//        // 修改用户信息
//        Boolean update = customerService.update(wrapper);
        // 组装返回结果
        return new SuccessResponseData<>(customerLoginBizService.phoneLogin(req.getPhone(), CustomerUserTypeEnum.WORKER));
    }
@@ -329,11 +303,28 @@
        return new SuccessResponseData<>(customerLoginBizService.phoneLogin(req.getPhone(), CustomerUserTypeEnum.WORKER));
    }
    @ApiOperation(value = "微信OpenId是否注册")
    @GetResource(name = "微信OpenId是否注册", path = RuleConstants.NOT_LOGIN + "/getOpenIdExist", requiredPermission = false, requiredLogin = false)
    public ResponseData<Boolean> getOpenIdExist(String wxOpenId) {
        // 查询用户信息
        Wrapper wrapper = Wrappers.<Customer>lambdaQuery()
                .eq(Customer::getUserType, CustomerUserTypeEnum.WORKER.getCode())
                .eq(Customer::getWxOpenId, wxOpenId);
        long count = customerService.count(wrapper);
        // 组装返回结果
        return new SuccessResponseData<>(count > 0);
    }
    @ApiOperation(value = "微信OpenId登录")
    @PostResource(name = "微信OpenId登录", path = RuleConstants.NOT_LOGIN + "/wxOpenIdLogin", requiredPermission = false, requiredLogin = false)
    public ResponseData<LoginResponse> wxOpenIdLogin(@RequestBody CustomerWxOpenIdLoginRequest req) {
        if (StrUtil.isNotBlank(req.getPhone())) {
            // 验证码通过
            sysSmsInfoService.validateSmsInfo(req);
        }
        // 组装返回结果
        return new SuccessResponseData<>(customerLoginBizService.wxOpenIdLogin(req.getWxOpenId(), req.getPhone(), CustomerUserTypeEnum.WORKER));
        return new SuccessResponseData<>(customerLoginBizService.wxOpenIdLogin(req.getWxOpenId(), req.getPhone(), req.getWorkerNo(), CustomerUserTypeEnum.WORKER));
    }
    @ApiOperation(value = "更换手机号")
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java
@@ -196,4 +196,9 @@
     */
    String[] getBindWorkerPostIds(String workerNo, PostIdEnum post11Enum, PostIdEnum post21Enum);
    /**
     * 绑定顾问岗位ID数据
     */
    Boolean userBindClassConsultWorkerId(Long customerId, String workerNo);
}
roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java
@@ -13,7 +13,6 @@
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.exception.AuthException;
import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum;
import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi;
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest;
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse;
@@ -736,4 +735,36 @@
        return postIds;
    }
    @Override
    public Boolean userBindClassConsultWorkerId(Long customerId, String workerNo) {
        // 幸福顾问
        PostIdEnum post11Enum = PostIdEnum.PO_11;
        // 咨询顾问
        PostIdEnum post21Enum = PostIdEnum.PO_21;
        // 获取绑定顾问岗位ID
        String[] bindWorkerPostIds = this.getBindWorkerPostIds(workerNo, post11Enum, post21Enum);
        Customer workerByNo = this.getOne(
                Wrappers.<Customer>lambdaUpdate().eq(Customer::getWorkerNo, workerNo).last("LIMIT 1")
        );
        Customer newCustomer = new Customer();
        newCustomer.setCustomerId(customerId);
        for (String postId : bindWorkerPostIds) {
            if (postId.equals(post11Enum.getCode().toString())) {
                newCustomer.setClassWorkerId(workerByNo.getCustomerId());
            } else if (postId.equals(post21Enum.getCode().toString())) {
                newCustomer.setConsultWorkerId(workerByNo.getCustomerId());
            }
        }
        Boolean update = false;
        if (customerId != null && (newCustomer.getClassWorkerId() != null || newCustomer.getConsultWorkerId() != null)) {
            // 修改用户信息
            update = this.updateCustomerRemoveCache(newCustomer);
        }
        return update;
    }
}