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; } }