Переглянути джерело

初始化项目,基础的配置和接口

刘立冬 2 місяців тому
батько
коміт
79a0b8baaf
15 змінених файлів з 396 додано та 1 видалено
  1. 12 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/common/base/CommonResponse.java
  2. 21 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/config/QywxConfig.java
  3. 49 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwCommonResModel.java
  4. 9 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwInitResponseModel.java
  5. 10 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwLoginCheckCode.java
  6. 11 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwLoginQRCodeModel.java
  7. 4 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwUuidResponse.java
  8. 11 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/QwLoginService.java
  9. 106 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/impl/QwLoginServiceImpl.java
  10. 36 0
      risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/qywx/Constant.java
  11. 18 0
      risk-control-server/src/main/java/com/tzld/piaoquan/risk/control/controller/QwCallbackController.java
  12. 91 0
      risk-control-server/src/main/java/com/tzld/piaoquan/risk/control/controller/QwLoginController.java
  13. 5 0
      risk-control-server/src/main/java/com/tzld/piaoquan/risk/control/controller/ReceiveRiskInfoController.java
  14. 1 1
      risk-control-server/src/main/resources/application-prod.yml
  15. 12 0
      risk-control-server/src/main/resources/application.yml

+ 12 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/common/base/CommonResponse.java

@@ -8,6 +8,10 @@ import java.util.UUID;
 public class CommonResponse<T> {
 
     private static final int SUCCESS_CODE = 0;
+    private static final int ERROR_CODE = -1;
+    private static final String ERROR_MSG = "failed";
+
+
     private static final String SUCCESS_MSG = "success";
 
     /** 返回状态码,0 表示业务成功 */
@@ -42,6 +46,14 @@ public class CommonResponse<T> {
         return commonResponse;
     }
 
+    public static <T> CommonResponse<T> error(T data) {
+        CommonResponse<T> commonResponse = new CommonResponse<>();
+        commonResponse.setCode(ERROR_CODE);
+        commonResponse.setMsg(ERROR_MSG);
+        commonResponse.setData(data);
+        return commonResponse;
+    }
+
     public static <T> CommonResponse<T> create() {
         return create(SUCCESS_CODE, SUCCESS_MSG, null);
     }

+ 21 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/config/QywxConfig.java

@@ -0,0 +1,21 @@
+package com.tzld.piaoquan.risk.control.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+@ConfigurationProperties(prefix = "qywx") // 绑定 qywx 开头的配置
+@Data // Lombok 自动生成 getter/setter
+public class QywxConfig {
+    private String domain;
+    private Map<String, String> paths = new HashMap<>(); // 动态绑定 paths 下的所有键值对
+
+    public String getPath(String key) {
+        return paths.get(key);
+    }
+
+}

+ 49 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwCommonResModel.java

@@ -0,0 +1,49 @@
+package com.tzld.piaoquan.risk.control.model.qywx;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+
+public class QwCommonResModel<T> {
+    private int errcode;
+    private String errmsg;
+    private T data;
+    // 添加静态方法:通用解析方法
+    public static <T> QwCommonResModel<T> parseResponse(String json, Class<T> dataType) {
+        return JSON.parseObject(
+                json,
+                new TypeReference<QwCommonResModel<T>>(dataType) {}
+        );
+    }
+    public QwCommonResModel() {
+    }
+
+    public QwCommonResModel(int errcode, String errmsg, T data) {
+        this.errcode = errcode;
+        this.errmsg = errmsg;
+        this.data = data;
+    }
+
+    public int getErrcode() {
+        return errcode;
+    }
+
+    public void setErrcode(int errcode) {
+        this.errcode = errcode;
+    }
+
+    public String getErrmsg() {
+        return errmsg;
+    }
+
+    public void setErrmsg(String errmsg) {
+        this.errmsg = errmsg;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+}

+ 9 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwInitResponseModel.java

@@ -0,0 +1,9 @@
+package com.tzld.piaoquan.risk.control.model.qywx;
+
+import lombok.Data;
+
+@Data
+public class QwInitResponseModel {
+    String uuid;
+    String is_Login;
+}

+ 10 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwLoginCheckCode.java

@@ -0,0 +1,10 @@
+package com.tzld.piaoquan.risk.control.model.qywx;
+
+import lombok.Data;
+
+@Data
+public class QwLoginCheckCode {
+    private String uuid;
+    private String qrcodeKey;
+    private String code;
+}

+ 11 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwLoginQRCodeModel.java

@@ -0,0 +1,11 @@
+package com.tzld.piaoquan.risk.control.model.qywx;
+
+import lombok.Data;
+
+@Data
+public class QwLoginQRCodeModel {
+    private String qrcode;
+    private String qrcode_data;
+    private int ttl;
+    private String key;
+}

+ 4 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/model/qywx/QwUuidResponse.java

@@ -0,0 +1,4 @@
+package com.tzld.piaoquan.risk.control.model.qywx;
+
+public class QwUuidResponse {
+}

+ 11 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/QwLoginService.java

@@ -0,0 +1,11 @@
+package com.tzld.piaoquan.risk.control.service;
+
+import com.tzld.piaoquan.risk.control.common.base.CommonResponse;
+import com.tzld.piaoquan.risk.control.model.qywx.QwCommonResModel;
+import com.tzld.piaoquan.risk.control.model.qywx.QwLoginCheckCode;
+import com.tzld.piaoquan.risk.control.model.qywx.QwLoginQRCodeModel;
+
+public interface QwLoginService {
+    QwCommonResModel<QwLoginQRCodeModel> getLoginQRCode(String phoneNumber);
+    int checkQRCode(QwLoginCheckCode checkQrcode);
+}

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

@@ -0,0 +1,106 @@
+package com.tzld.piaoquan.risk.control.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.tzld.piaoquan.risk.control.common.base.CommonResponse;
+import com.tzld.piaoquan.risk.control.config.QywxConfig;
+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;
+import com.tzld.piaoquan.risk.control.model.qywx.QwLoginQRCodeModel;
+import com.tzld.piaoquan.risk.control.service.QwLoginService;
+import com.tzld.piaoquan.risk.control.service.qywx.Constant;
+import com.tzld.piaoquan.risk.control.util.HttpClientUtil;
+import com.tzld.piaoquan.risk.control.util.HttpPoolClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+@Service
+public class QwLoginServiceImpl implements QwLoginService {
+    private static final HttpPoolClient httpPoolClientDefault = HttpClientUtil.create(10000, 10000, 2000, 5000, 5, 10000);
+    @Autowired
+    private QywxConfig qywxConfig; // 注入配置类
+    private static final Logger LOGGER = LoggerFactory.getLogger(QwLoginServiceImpl.class);
+
+    @Override
+    public QwCommonResModel<QwLoginQRCodeModel> getLoginQRCode(String phoneNumber) {
+        String uuid = initUUID(phoneNumber);
+        LOGGER.info("getLoginQRCode,uuid: {}", uuid);
+        System.out.println("getLoginQRCode,uuid: " + uuid);
+        setCallback(uuid);
+        if (uuid != null) {
+            String url = qywxConfig.getDomain() + qywxConfig.getPath("login-qrcode");
+            Map<String, Object> requestBody = new HashMap<>();
+            requestBody.put("uuid", uuid);
+            String params = JSON.toJSONString(requestBody);
+            Optional<String> response = httpPoolClientDefault.postJson(url, params);
+            if (response.isPresent()) {
+                QwCommonResModel<QwLoginQRCodeModel> qrCodeModel = QwCommonResModel.parseResponse(response.get(), QwLoginQRCodeModel.class);
+                return qrCodeModel;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public int checkQRCode(QwLoginCheckCode checkQrcode) {
+        String url = qywxConfig.getDomain() + qywxConfig.getPath("login-checkcode");
+        Optional<String> response =  httpPoolClientDefault.postJson(url, JSON.toJSONString(checkQrcode));
+        System.out.println("checkQRCode,response: " + response);
+        if (response.isPresent()) {
+            QwCommonResModel<Object> model = QwCommonResModel.parseResponse(response.get(), Object.class);
+            return model.getErrcode();
+        }
+        return -1;
+    }
+
+    private String initUUID(String phoneNumber){
+        Map<String, Object> requestBody = new HashMap<>();
+        requestBody.put("vid", ""); // Add vid if available,二次登录使用上一次结果
+        requestBody.put("ip", ""); // Add proxy IP if available
+        requestBody.put("port", ""); // Add proxy port if available
+        requestBody.put("proxyType", ""); // Add proxy type if available
+        requestBody.put("userName", ""); // Add proxy username if available
+        requestBody.put("passward", ""); // Add proxy password if available
+        requestBody.put("proxySituation", 0); // Default value
+        requestBody.put("deverType", "ipad"); // Default device type
+        // Convert the request body to JSON string
+        String params = JSON.toJSONString(requestBody);
+        String url = qywxConfig.getDomain() + qywxConfig.getPath("init-uuid");
+        Optional<String> response =  httpPoolClientDefault.postJson(url, params);
+        // 直接解析 JSON
+        if (response.isPresent()) {
+            System.out.println("init,response: " + response);
+            QwCommonResModel<QwInitResponseModel> initModel = QwCommonResModel.parseResponse(response.get(), QwInitResponseModel.class);
+            return initModel.getData().getUuid();
+        } else {
+            return "";
+        }
+    }
+
+    private void setCallback(String uuid) {
+        String callbackUrl = Constant.TEST_CALLBACK_URL; // Replace with your actual callback URL
+        String url = qywxConfig.getDomain() + qywxConfig.getPath("add-qwcallback");
+        Map<String, Object> requestBody = new HashMap<>();
+        requestBody.put("uuid", uuid);
+        requestBody.put("url", callbackUrl); // Add callback URL if available
+        String params = JSON.toJSONString(requestBody);
+        Optional<String> response = httpPoolClientDefault.postJson(url, params);
+        if (response.isPresent()) {
+            QwCommonResModel<Object> model = QwCommonResModel.parseResponse(response.get(), Object.class);
+            System.out.println("setCallback success,response: " + response);
+            if (model.getErrcode() == 0) {
+                System.out.println("Callback set successfully");
+            } else {
+                System.out.println("Failed to set callback: " + model.getErrmsg());
+            }
+        } else {
+            System.out.println("Failed to set callback: No response");
+        }
+    }
+}

+ 36 - 0
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/qywx/Constant.java

@@ -0,0 +1,36 @@
+package com.tzld.piaoquan.risk.control.service.qywx;
+
+public class Constant {
+    public static String QWDOMAIN = "http://47.96.102.58:8089/";
+    public static String INIT_UUID = "/wxwork/init";
+    public static String LOGIN_QRCODE_PATH = "wxwork/getQrCode";
+    public static String LOGIN_QRCODE_CHECK = "wxwork/CheckCode";
+    public static String ADD_QW_CALLBACK = "wxwork/SetCallbackUrl";
+    public static String TEST_CALLBACK_URL = "http://localhost:8080/risk-control/qw/callback";
+    //聊天消息
+    public static int RECV_MSG_CODE = 102000;
+
+    //好友申请通知
+    public static int CONTACT_ADD_REQ_MSG = 116001;
+
+    //群新增通知
+    public static int ROOM_ADD_MSG = 115001;
+
+    //移除群成员通知
+    public static int ROOM_USER_DELETE=115002;
+
+    //邀请进群通知
+    public static int ROOM_USER_ADD=115003;
+
+    //群成员自己退群通知
+    public static int ROOM_USER_OUT=115004;
+
+    //群名变换通知
+    public static int ROOM_NAME_MSG=115005;
+
+    //转让群主通知
+    public static int ROOM_ADMIN_UPDATE=115006;
+
+
+
+}

+ 18 - 0
risk-control-server/src/main/java/com/tzld/piaoquan/risk/control/controller/QwCallbackController.java

@@ -0,0 +1,18 @@
+package com.tzld.piaoquan.risk.control.controller;
+
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/qw")
+public class QwCallbackController {
+
+    @PostMapping("/callback")
+    public void onMessage(@RequestBody String requestBody) {
+        // Handle the message
+        System.out.println("Received message: " + requestBody);
+
+    }
+}

+ 91 - 0
risk-control-server/src/main/java/com/tzld/piaoquan/risk/control/controller/QwLoginController.java

@@ -0,0 +1,91 @@
+package com.tzld.piaoquan.risk.control.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.tzld.piaoquan.risk.control.common.base.CommonResponse;
+import com.tzld.piaoquan.risk.control.config.QywxConfig;
+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;
+import com.tzld.piaoquan.risk.control.model.qywx.QwLoginQRCodeModel;
+import com.tzld.piaoquan.risk.control.service.QwLoginService;
+import com.tzld.piaoquan.risk.control.service.qywx.Constant;
+import com.tzld.piaoquan.risk.control.util.HttpClientUtil;
+import com.tzld.piaoquan.risk.control.util.HttpPoolClient;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/qw")
+@Slf4j
+public class QwLoginController {
+    private static final HttpPoolClient httpPoolClientDefault = HttpClientUtil.create(10000, 10000, 2000, 5000, 5, 10000);
+    @Autowired
+    private QywxConfig qywxConfig; // 注入配置类
+    @Autowired
+    private QwLoginService qwLoginService;
+    private static final Logger LOGGER = LoggerFactory.getLogger(QwLoginController.class);
+
+
+    @PostMapping("/getQrCode")
+    public CommonResponse<QwLoginQRCodeModel> getQrCode(@RequestBody String phoneNumber) {
+        QwCommonResModel<QwLoginQRCodeModel> loginModel = qwLoginService.getLoginQRCode(phoneNumber);
+
+        return CommonResponse.success(loginModel.getData());
+    }
+
+    @PostMapping("/checkQRCode ")
+    public CommonResponse<String> checkQRCode(@RequestBody QwLoginCheckCode checkCode) {
+        String url = Constant.QWDOMAIN + Constant.LOGIN_QRCODE_PATH;
+        String response =  httpPoolClientDefault.postJson(url, JSON.toJSONString(checkCode)).toString();
+        System.out.println("checkQRCode,response: " + response);
+        if (response.contains("qrcode_not need verify")) {
+            return CommonResponse.success("qrcode_not need verify");
+        } else {
+            return CommonResponse.success();
+        }
+    }
+
+    @PostMapping("/automaticLogin")
+    public CommonResponse<String> automaticLogin(@RequestBody QwLoginCheckCode checkCode) {
+        String url = qywxConfig.getDomain() + qywxConfig.getPath("login-qrcode");
+        String response =  httpPoolClientDefault.postJson(url, JSON.toJSONString(checkCode)).toString();
+        System.out.println("checkQRCode,response: " + response);
+        return CommonResponse.success();
+    }
+
+    @PostMapping("/quiteLogin")
+    public CommonResponse<String> quiteLogin(@RequestBody String uuid) {
+        String url = qywxConfig.getDomain() + qywxConfig.getPath("quit-login");
+        String response =  httpPoolClientDefault.postJson(url, uuid).toString();
+        System.out.println("quiteLogin,response: " + response);
+        QwCommonResModel<QwLoginQRCodeModel> QRCODE = JSON.parseObject(response, new TypeReference<QwCommonResModel<QwLoginQRCodeModel>>() {});
+        return CommonResponse.success();
+
+    }
+
+
+    @PostMapping("/checkLogin")//前端轮训检测是否登录成功
+    public CommonResponse<String> checkLogin(@RequestBody String uuid) {
+        if(true) {
+            return new CommonResponse<>();
+        } else if(false) {
+            return CommonResponse.success();
+        } else {
+            return CommonResponse.success();
+        }
+//        String url = Constant.QWDOMAIN + Constant.LOGIN_QRCODE_PATH;
+//        String response =  httpPoolClientDefault.postJson(url, uuid).toString();
+//        QwLoginQRCodeModel QRCODE = JSON.parseObject(response, QwLoginQRCodeModel.class);
+//        return CommonResponse.success("ok");
+    }
+
+}

+ 5 - 0
risk-control-server/src/main/java/com/tzld/piaoquan/risk/control/controller/ReceiveRiskInfoController.java

@@ -0,0 +1,5 @@
+package com.tzld.piaoquan.risk.control.controller;
+
+public class ReceiveRiskInfoController {
+
+}

+ 1 - 1
risk-control-server/src/main/resources/application-prod.yml

@@ -32,7 +32,7 @@ app:
   id: risk-control
 apollo:
   bootstrap:
-    enabled: true
+    enabled: false
     namespaces: application
   meta: http://apolloconfig-internal.piaoquantv.com
   cacheDir: /datalog/apollo-cache-dir

+ 12 - 0
risk-control-server/src/main/resources/application.yml

@@ -24,3 +24,15 @@ mybatis:
 
 pagehelper:
   helper-dialect: mysql
+qywx:
+  domain: http://47.110.132.222:8083
+  paths:
+    init-uuid: /wxwork/init
+    login-qrcode: /wxwork/getQrCode
+    login-checkcode: /wxwork/CheckCode
+    add-qwcallback: /wxwork/SetCallbackUrl
+    auto-login: wxwork/automaticLogin
+    quit-login: wxwork/LoginOut
+    # 其他路径可继续添加,例如:
+    # login: /login
+    # send-msg: /send-msg