Browse Source

企微用户uuid复用逻辑

刘立冬 2 months ago
parent
commit
633c086671

+ 21 - 1
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/impl/QwLoginServiceImpl.java

@@ -2,6 +2,7 @@ package com.tzld.piaoquan.risk.control.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.tzld.piaoquan.risk.control.config.QywxConfig;
+import com.tzld.piaoquan.risk.control.model.po.UserBase;
 import com.tzld.piaoquan.risk.control.model.qywx.QwCommonResModel;
 import com.tzld.piaoquan.risk.control.model.qywx.QwInitResponseModel;
 import com.tzld.piaoquan.risk.control.model.qywx.QwLoginCheckCode;
@@ -9,6 +10,7 @@ import com.tzld.piaoquan.risk.control.model.qywx.QwLoginQRCodeModel;
 import com.tzld.piaoquan.risk.control.service.QwLoginService;
 import com.tzld.piaoquan.risk.control.util.HttpClientUtil;
 import com.tzld.piaoquan.risk.control.util.HttpPoolClient;
+import org.apache.http.util.TextUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,13 +26,31 @@ public class QwLoginServiceImpl implements QwLoginService {
     private static final HttpPoolClient httpPoolClientDefault = HttpClientUtil.create(10000, 10000, 2000, 5000, 5, 10000);
     @Autowired
     private QywxConfig qywxConfig; // 注入配置类
+    @Autowired
+    private QywxUserService qwUserService;
     @Value("${qwcallback.url}")
     private String qwCallbackUrl;
     private static final Logger LOGGER = LoggerFactory.getLogger(QwLoginServiceImpl.class);
 
     @Override
     public QwCommonResModel<QwLoginQRCodeModel> getLoginQRCode(String phoneNumber) {
-        String uuid = initUUID(phoneNumber);
+        UserBase user = qwUserService.getUserByMobile(phoneNumber);
+        String uuid = "";
+        if (user != null && !TextUtils.isEmpty(user.getUuid())) {
+            LOGGER.info("User already exists, phoneNumber: {}", phoneNumber);
+            System.out.println("User already exists, phoneNumber: " + phoneNumber);
+            uuid = user.getUuid();
+        } else {
+            LOGGER.info("User not exists, phoneNumber: {}", phoneNumber);
+            uuid = initUUID(phoneNumber);
+            // Create a new user if UUID is generated
+            if (!TextUtils.isEmpty(uuid)) {
+                UserBase newUser = new UserBase();
+                newUser.setUuid(uuid);
+                newUser.setMobile(phoneNumber);
+                qwUserService.createUser(newUser);
+            }
+        }
         LOGGER.info("getLoginQRCode,uuid: {}", uuid);
         System.out.println("getLoginQRCode,uuid: " + uuid);
         setCallback(uuid);

+ 54 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/impl/QywxUserService.java

@@ -0,0 +1,54 @@
+package com.tzld.piaoquan.risk.control.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.tzld.piaoquan.risk.control.dao.mapper.UserBaseMapper;
+import com.tzld.piaoquan.risk.control.model.po.UserBase;
+import com.tzld.piaoquan.risk.control.model.po.UserBaseExample;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+// UserService.java
+@Service
+public class QywxUserService {
+
+    @Autowired
+    private UserBaseMapper userBaseMapper;
+
+    // 新增用户(自动生成ID)
+    public void createUser(UserBase user) {
+        user.setCreateTime(new Date()); // 自动设置创建时间
+        userBaseMapper.insertSelective(user);
+    }
+
+    // 根据ID删除用户
+    public void deleteUserById(Long id) {
+        userBaseMapper.deleteByPrimaryKey(id);
+    }
+
+    // 更新用户信息(选择性更新)
+    public void updateUser(UserBase user) {
+        userBaseMapper.updateByPrimaryKeySelective(user);
+    }
+
+    // 根据ID查询用户
+    public UserBase getUserById(Long id) {
+        return userBaseMapper.selectByPrimaryKey(id);
+    }
+
+    // 根据手机号查询用户
+    public UserBase getUserByMobile(String mobile) {
+        UserBaseExample example = new UserBaseExample();
+        example.createCriteria().andMobileEqualTo(mobile);
+        List<UserBase> users = userBaseMapper.selectByExample(example);
+        return users.isEmpty() ? null : users.get(0);
+    }
+
+    // 分页查询用户列表
+    public List<UserBase> listUsers(int pageNum, int pageSize) {
+        PageHelper.startPage(pageNum, pageSize);
+        return userBaseMapper.selectByExample(new UserBaseExample());
+    }
+}