From 9d8cd5255cec12ba1caa1a1fbe6351f7699079fa Mon Sep 17 00:00:00 2001
From: goupan <goupan@chinapopin.com>
Date: 星期四, 25 四月 2024 11:10:40 +0800
Subject: [PATCH] 代码提交

---
 roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java |   33 ++++++++++
 rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java                                                   |    8 ++
 rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java                                                     |   51 +++++++----------
 rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java                                                   |   63 ++++++++++-----------
 common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java                            |    9 +-
 roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java          |    5 +
 6 files changed, 100 insertions(+), 69 deletions(-)

diff --git a/common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java b/common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java
index f895d9f..d2cce81 100644
--- a/common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CustomerWxOpenIdLoginRequest.java
+++ b/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;
 
 }
diff --git a/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java b/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java
index 9b7bc72..e7ac952 100644
--- a/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/UserCenterController.java
+++ b/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("获取帮助列表(分页)")
diff --git a/rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java b/rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java
index bbce75a..c8a78b9 100644
--- a/rest/src/main/java/cn/stylefeng/rest/modular/user/service/CustomerLoginBizService.java
+++ b/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;
diff --git a/rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java b/rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java
index a223554..265bdd8 100644
--- a/rest/src/main/java/cn/stylefeng/rest/modular/worker/controller/WorkerController.java
+++ b/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 = "更换手机号")
diff --git a/roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java b/roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java
index f3c6edb..8bb8aa7 100644
--- a/roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/CustomerService.java
+++ b/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);
+
 }
\ No newline at end of file
diff --git a/roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java b/roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java
index c26fbff..c090c4c 100644
--- a/roses/kernel-s-customer/customer-business/src/main/java/cn/stylefeng/roses/kernel/customer/modular/service/impl/CustomerServiceImpl.java
+++ b/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;
+    }
 }

--
Gitblit v1.7.1