Просмотр исходного кода

fix:"优化汇聚商户入网接口,修复子账户修改名称问题"

soobin 3 месяцев назад
Родитель
Сommit
28fe05703c

+ 2 - 2
src/main/java/com/szwl/constant/OperationType.java

@@ -9,8 +9,8 @@ public enum OperationType implements IEnum<String> {
 
     UPDATE_TAX_STATUS("updateTaxStatus","修改税费开关"),
     UPDATE_TAX_RATE("updateTaxRate","修改税率"),
-    UPDATE("UPDATE","修改"),
-    DELETE("DELETE","删除"),
+    LOG("log","上传日志"),
+    UPLOAD_ORDER("uploadOrder","上传线下订单"),
     LOGIN("LOGIN","登录"),
     OFFLINE("OFFLINE","脱机"),
     PAY_ORDER("PAY_ORDER", "支付订单");

+ 1 - 1
src/main/java/com/szwl/controller/TAdminController.java

@@ -301,7 +301,7 @@ public class TAdminController {
 //            if (CollUtil.isNotEmpty(userRoleList)) {
 //                sysUserRoleService.saveBatch(userRoleList);
 //            }
-
+            admin.setName(param.getName());
             admin.setIsEnabled(param.getIsEnabled());
             admin.setPhone(param.getPhone());
             admin.setEmail(param.getEmail());

+ 31 - 32
src/main/java/com/szwl/controller/TEquipmentController.java

@@ -1902,39 +1902,38 @@ public class TEquipmentController {
         return R.ok();
     }
 
-
-    @ApiOperation("导出设备列表")
-    @GetMapping("/exportEquipment")
-    public void exportEquipment(HttpServletResponse response) {
-        LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
-        query.between(TEquipment::getLastUpdateTime, "2024-10-01", "2024-11-08");
-        List<TEquipment> list = tEquipmentService.list(query);
-        ExportParams exportParams = new ExportParams("设备列表", "sheet1");
-        List<EquipmentParam> orderByAdminTargetList = list.stream().map(tEquipment -> {
-            EquipmentParam equipmentParam = new EquipmentParam();
-            equipmentParam.setEquipmentName(tEquipment.getName());
-            equipmentParam.setAreaName(tEquipment.getFullName());
-            equipmentParam.setClientId(tEquipment.getClientId());
-            return equipmentParam;
-        }).collect(Collectors.toList());
-        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, EquipmentParam.class, orderByAdminTargetList);
-        if (workbook != null) {
-            OutputStream os = null;
-            try {
-                os = response.getOutputStream();
-                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("设备列表" + ".xls", "UTF-8"));
-                workbook.write(os);
-            } catch (Exception e) {
-                e.printStackTrace();
-            } finally {
-                try {
-                    os.close();
-                    workbook.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-            }
+    /**
+     * 上传日志
+     *
+     * @param equipmentId 设备ID,用于标识上传日志的设备
+     * @param day         日期,指定要上传日志的日期
+     * @return 返回操作结果,成功则返回成功信息,失败则返回失败原因
+     */
+    @ApiOperation(value = "上传日志")
+    @GetMapping("/newUploadLog")
+    public ResponseModel<?> newUploadLog(String equipmentId, String day) {
+        // 检查设备ID是否为空
+        if (StringUtils.isEmpty(equipmentId)) {
+            return R.fail(A0001);
         }
+        // 根据设备ID查询设备信息
+        TEquipment tEquipment = tEquipmentService.getById(equipmentId);
+        // 检查设备信息是否存在
+        if (tEquipment == null) {
+            return R.fail(A0001, "该设备不存在");
+        }
+        // 组装日志信息的标识
+        String clientId = tEquipment.getClientId();
+        String kind = day + "-" + clientId;
+        String key = "log/" + kind + ".txt";
+        // 生成Token
+        Auth auth = Auth.create(ConfigConsts.QINIU_CLOUD_ACCESS_KEY, ConfigConsts.QINIU_CLOUD_SECRET_KEY);
+        String upToken = auth.uploadToken(ConfigConsts.QINIU_CLOUD_BUCKET, key);
+        // 生成发送消息
+        String message = PushUtils.buildJsonLog(OperationType.LOG.getCode(), kind, upToken, key).toString();
+        tEquipmentService.sendRemoteMessage(clientId, OperationType.LOG, message);
+        // 返回操作成功信息
+        return R.ok();
     }
 
 }

+ 19 - 3
src/main/java/com/szwl/controller/TJoinpayMchController.java

@@ -271,14 +271,14 @@ public class TJoinpayMchController {
                 return R.ok();
             case 1:
                 // 提交结算信息
-                joinpayMch.setBindingSteps(2);
-                joinpayMch.setModifyDate(new Date());
                 BeanUtil.copyProperties(joinpayMch, tJoinpayMch,
                         CopyOptions.create()
                                 .setIgnoreNullValue(true)  // 忽略源对象中的 null 值
                                 .setIgnoreError(true)     // 忽略类型不匹配等错误
-                                .setIgnoreProperties("id", "createDate", "modifyDate", "bindingSteps", "altMchNo")
+                                .setIgnoreProperties("id", "createDate", "altMchNo")
                 );
+                tJoinpayMch.setBindingSteps(2);
+                tJoinpayMch.setModifyDate(new Date());
                 tJoinpayMchService.updateById(tJoinpayMch);
                 return R.ok();
             case 2:
@@ -325,6 +325,14 @@ public class TJoinpayMchController {
         return R.ok();
     }
 
+    @ApiOperation("更新商户认证状态")
+    @PostMapping("/updateMchApproveStatus")
+    public ResponseModel<?> updateMchApproveStatus(@RequestBody TJoinpayMch mch) {
+        TJoinpayMch joinpayMch = tJoinpayMchService.getById(mch.getId());
+        String authStauts = tJoinpayMchService.updateMchApproveStatus(joinpayMch);
+        return R.ok(authStauts);
+    }
+
     @ApiOperation(value = "更新图片审核状态")
     @PostMapping("/updateApproveStatus")
     public ResponseModel<?> updateApproveStatus(@RequestBody TJoinpayMch mch) {
@@ -333,5 +341,13 @@ public class TJoinpayMchController {
         return R.ok(str);
     }
 
+    @ApiOperation("更新签约状态")
+    @PostMapping("/updateMchSignStatus")
+    public ResponseModel<?> updateMchSignStatus(@RequestBody TJoinpayMch mch) {
+        TJoinpayMch joinpayMch = tJoinpayMchService.getById(mch.getId());
+        String signStatus = tJoinpayMchService.updateMchSignStatus(joinpayMch);
+        return R.ok(signStatus);
+    }
+
 }
 

+ 0 - 5
src/main/java/com/szwl/handle/response/UpdateTaxRateProcessor.java

@@ -39,11 +39,6 @@ public class UpdateTaxRateProcessor implements ResponseProcessor{
                 equipmentDesc.setTaxRate(new BigDecimal(responseContent).setScale(2));
                 tEquipmentDescService.updateById(equipmentDesc);
             }
-            if (direction != null && direction == 2) {
-                log.info("更新 taxes 状态成功");
-                // TODO 响应消息给设备
-                tEquipmentService.sendRemoteMessage(clientId, OperationType.UPDATE_TAX_RATE, "");
-            }
         }
     }
 

+ 0 - 5
src/main/java/com/szwl/handle/response/UpdateTaxStatusProcessor.java

@@ -38,11 +38,6 @@ public class UpdateTaxStatusProcessor implements ResponseProcessor{
                 equipmentDesc.setTaxStatus(responseContent.equals("1"));
                 tEquipmentDescService.updateById(equipmentDesc);
             }
-            if (direction != null && direction == 2) {
-                log.info("更新 taxes 状态成功");
-                // TODO 响应消息给设备
-                tEquipmentService.sendRemoteMessage(clientId, OperationType.UPDATE_TAX_STATUS, "");
-            }
         }
     }
 

+ 27 - 0
src/main/java/com/szwl/handle/response/UploadOrderProcessor.java

@@ -0,0 +1,27 @@
+package com.szwl.handle.response;
+
+import com.szwl.constant.OperationType;
+import com.szwl.model.entity.MessageLog;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+public class UploadOrderProcessor implements ResponseProcessor{
+
+
+
+    @Override
+    public void process(MessageLog messageLog) {
+        Integer statusCode = messageLog.getStatusCode();
+        if (statusCode == 200) {
+            String dataContent = messageLog.getDataContent();
+
+        }
+    }
+
+    @Override
+    public String getSupportedOperationType() {
+        return OperationType.UPLOAD_ORDER.getCode();
+    }
+}

+ 16 - 3
src/main/java/com/szwl/model/utils/PushUtils.java

@@ -287,7 +287,20 @@ public class PushUtils {
         return jsonObject;
     }
 
-//    public static void main(String[] args) {
-//        push("71963777bd63e0f0a5b6490f04bf1ae4", "niai", "123", buildJson("editNo", "123456789").toString());
-//    }
+    public static JSONObject buildJsonLog(String kind, String kindData, String token, String key) {
+        JSONObject jsonObject = new JSONObject();
+        if (kind != null) {
+            jsonObject.put("kind", kind);
+            jsonObject.put("kind_data", kindData);
+            jsonObject.put("token", token);
+            jsonObject.put("key", key);
+        }else{
+            jsonObject.put("kind", "");
+            jsonObject.put("kind_data", "");
+            jsonObject.put("token", "");
+            jsonObject.put("key", key);
+        }
+        return jsonObject;
+    }
+
 }

+ 14 - 0
src/main/java/com/szwl/service/TJoinpayMchService.java

@@ -103,4 +103,18 @@ public interface TJoinpayMchService extends MyIService<TJoinpayMch> {
      * @return
      */
     String newUpdateMch(TJoinpayMch tJoinpayMch);
+
+    /**
+     * 更新商户认证状态
+     * @param joinpayMch
+     * @return
+     */
+    String updateMchApproveStatus(TJoinpayMch joinpayMch);
+
+    /**
+     * 更新签约状态
+     * @param joinpayMch
+     * @return
+     */
+    String updateMchSignStatus(TJoinpayMch joinpayMch);
 }

+ 114 - 1
src/main/java/com/szwl/service/impl/TJoinpayMchServiceImpl.java

@@ -613,7 +613,7 @@ public class TJoinpayMchServiceImpl extends ServiceImpl<TJoinpayMchMapper, TJoin
                     } else if (JoinpayConstant.APPROVE_STATUS_P2000.equals(approveStatus)) {
                         mch.setApproveStatus("审核不通过");
                         mch.setApproveNote(approveNote);
-                        back = approveStatus;
+                        back = approveNote;
                     }
                 }
                 updateById(mch);
@@ -1104,6 +1104,119 @@ public class TJoinpayMchServiceImpl extends ServiceImpl<TJoinpayMchMapper, TJoin
         return result;
     }
 
+    @Override
+    public String updateMchApproveStatus(TJoinpayMch joinpayMch) {
+        String url = "https://www.joinpay.com/allocFunds";
+
+        JSONObject requestData = new JSONObject(new LinkedHashMap());
+        // data参数
+        requestData.put("alt_mch_no", joinpayMch.getAltMchNo());
+
+        JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
+        requestJson.put("method", "altmch.query");
+        requestJson.put("version", "1.1");
+        requestJson.put("data", requestData);
+        // 32位随机字符串
+        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
+        requestJson.put("rand_str", uuid);
+        requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
+        requestJson.put("mch_no", JoinpayConstant.mch_no);
+
+        String sign = createMD5Sign(requestJson, JoinpayConstant.key);
+        requestJson.put("sign", sign.toUpperCase());
+
+        String result = "";
+        try {
+            org.json.JSONObject jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
+            log.info("查询商户认证结果:{}", jsonObject);
+            String respCode = jsonObject.getString("resp_code");
+            String respMsg = jsonObject.getString("resp_msg");
+            joinpayMch.setRespCode(respCode);
+            if (JoinpayConstant.resp_code1.equals(respCode)) {
+                // 受理成功
+                if (jsonObject.has("data")) {
+                    org.json.JSONObject data = jsonObject.getJSONObject("data");
+                    String authStatus = data.getString("auth_status");
+                    if (JoinpayConstant.AUTH_STATUS_R4004.equals(authStatus)) {
+                        // 认证成功
+                        joinpayMch.setStatus("1");
+                        result = authStatus;
+                    } else if (JoinpayConstant.AUTH_STATUS_R4002.equals(authStatus)) {
+                        // 认证中
+                        joinpayMch.setStatus("0");
+                        result = authStatus;
+                    } else if (JoinpayConstant.AUTH_STATUS_R4003.equals(authStatus)){
+                        // 认证失败
+                        String bizMsg = data.getString("biz_msg");
+                        joinpayMch.setRemarks(bizMsg);
+                        joinpayMch.setStatus("2");
+                        result = authStatus;
+                    }
+                    updateById(joinpayMch);
+                    return result;
+                }
+
+            }
+            return respMsg;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    @Override
+    public String updateMchSignStatus(TJoinpayMch joinpayMch) {
+        String url = "https://www.joinpay.com/allocFunds";
+
+        JSONObject requestData = new JSONObject(new LinkedHashMap());
+
+        // data参数
+        requestData.put("alt_mch_no", joinpayMch.getAltMchNo());
+
+        JSONObject requestJson = new JSONObject(new TreeMap<String, Object>());
+        requestJson.put("method", "altMchSign.querySignRecord");
+        requestJson.put("version", "1.0");
+        requestJson.put("data", requestData);
+        // 32位随机字符串
+        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");
+        requestJson.put("rand_str", uuid);
+        requestJson.put("sign_type", JoinpayConstant.sign_type_MD5);
+        requestJson.put("mch_no", JoinpayConstant.mch_no);
+
+        String sign = createMD5Sign(requestJson, JoinpayConstant.key);
+        requestJson.put("sign", sign.toUpperCase());
+
+        String result = "";
+        try {
+            org.json.JSONObject jsonObject = HttpClientUtils.postJson(url, requestJson.toString());
+            log.info("查询商户签约结果:{}", jsonObject);
+            String respCode = jsonObject.getString("resp_code");
+            String respMsg = jsonObject.getString("resp_msg");
+            joinpayMch.setRespCode(respCode);
+            if (JoinpayConstant.resp_code1.equals(respCode)) {
+                // 受理成功
+                if (jsonObject.has("data")) {
+                    org.json.JSONObject data = jsonObject.getJSONObject("data");
+                    String signStatus = data.getString("sign_status");
+                    if (JoinpayConstant.APPROVE_STATUS_P1000.equals(signStatus)) {
+                        // 签约成功
+                        joinpayMch.setSignStatus("签约成功");
+                        String signTrxNo = data.getString("sign_trx_no");
+                        joinpayMch.setSignTrxNo(signTrxNo);
+                        result = signStatus;
+                    }
+                    updateById(joinpayMch);
+                    return result;
+                }
+
+            }
+            return respMsg;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
 
     /**
      * 获取随机字符串