xuhy
2025-08-19 f69463ba6fd8b6672fe58aaaa811a5bc7e5ae8c0
bug修改
3个文件已修改
149 ■■■■ 已修改文件
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -115,17 +115,58 @@
    @Override
    public Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails) {
//        List<TAccountingStrategyDetail> sortedDetails = accountingStrategyDetails.stream()
//                .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime))
//                .collect(Collectors.toList());
//
//        boolean isFirstElementValid = sortedDetails.isEmpty() || !sortedDetails.get(0).getStartTime().equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime());
//        if(isFirstElementValid){
//            return true;
//        }
//
//        boolean eqTime = sortedDetails.stream().allMatch(detail -> detail.getStartTime().equals(detail.getEndTime()));
//        if(eqTime){
//            return true;
//        }
//
//        boolean isTimeContinuous = sortedDetails.stream()
//                .skip(1)
//                .allMatch(detail -> detail.getStartTime().equals(sortedDetails.get(sortedDetails.indexOf(detail) - 1).getEndTime()));
//
//        return !isTimeContinuous;
        // 处理空列表情况
        if (accountingStrategyDetails == null || accountingStrategyDetails.isEmpty()) {
            return false;
        }
        // 按开始时间排序
        List<TAccountingStrategyDetail> sortedDetails = accountingStrategyDetails.stream()
                .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime))
                .collect(Collectors.toList());
        boolean isFirstElementValid = sortedDetails.isEmpty() || !sortedDetails.get(0).getStartTime().equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime());
        // 检查是否形成完整的24小时循环
        // 第一个时间段的开始时间应该等于最后一个时间段的结束时间(形成闭环)
        TAccountingStrategyDetail firstDetail = sortedDetails.get(0);
        TAccountingStrategyDetail lastDetail = sortedDetails.get(sortedDetails.size() - 1);
        boolean isTimeContinuous = sortedDetails.stream()
                .skip(1)
                .allMatch(detail -> detail.getStartTime().equals(sortedDetails.get(sortedDetails.indexOf(detail) - 1).getEndTime()));
        // 首尾时间不匹配,不能构成24小时周期
        if (!firstDetail.getStartTime().equals(lastDetail.getEndTime())) {
            return false;
        }
        return isFirstElementValid || !isTimeContinuous;
        // 检查中间时间段是否连续
        for (int i = 1; i < sortedDetails.size(); i++) {
            TAccountingStrategyDetail current = sortedDetails.get(i);
            TAccountingStrategyDetail previous = sortedDetails.get(i - 1);
            // 当前时间段的开始时间必须等于前一个时间段的结束时间
            if (!current.getStartTime().equals(previous.getEndTime())) {
                return false;
            }
        }
        return true;
    }
    @Override
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralController.java
@@ -146,7 +146,12 @@
        integralVO.setIntegral(integral);
        return R.ok(integralVO);
    }
    @ApiOperation(tags = {"2.0-积分钱包"}, value = "获取积分充值比例")
    @PostMapping(value = "/getPointPercent")
    public R getPointPercent() {
        SysConfig data1 = sysConfigClient.getInfo(8L).getData();
        return R.ok(data1.getConfigValue());
    }
    @ApiOperation(tags = {"2.0-积分钱包"}, value = "查询支付结果 true成功 false失败")
    @PostMapping(value = "/queryPayStatus")
    public R buy(@RequestParam Integer id) {
@@ -282,15 +287,19 @@
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
        ServicePay servicePay = new ServicePay();
        servicePay.setUserId(data.getUserId());
        servicePay.setAmount(site.getAnnualServiceFee());
        servicePay.setCode(code);
        servicePay.setPayStatus(1);
        servicePay.setPayType(1);
        servicePay.setDelFlag(0);
        servicePay.setCreateTime(LocalDateTime.now());
        servicePayService.save(servicePay);
        IntegralPay integralPay = new IntegralPay();
        integralPay.setUserId(data.getUserId());
        SysConfig data1 = sysConfigClient.getInfo(8L).getData();
        BigDecimal bigDecimal = amount.multiply(new BigDecimal(data1.getConfigValue())).setScale(2, RoundingMode.HALF_DOWN);
        integralPay.setIntegralCount(bigDecimal.intValue());
        integralPay.setAmount(amount);
        integralPay.setCode(code);
        integralPay.setPayStatus(1);
        integralPay.setDelFlag(0);
        integralPay.setCreateTime(LocalDateTime.now());
        integralPayService.save(integralPay);
//        return wechatPayService.unifiedOrderApplet(servicePay.getId()+"",code, site.getAnnualServiceFee()+"", "服务费缴纳",data.getOpenId(), "/other/wx/serviceCallback");
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/WXCallBackController.java
@@ -30,6 +30,7 @@
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
@@ -79,11 +80,24 @@
            requestBody.append(line);
        }
        System.err.println("全部请求体"+requestBody);
        JSONObject jsonObject = JSONObject.parseObject(requestBody.toString());
        JSONObject resp_data = jsonObject.getJSONObject("resp_data");
        // URL解码
        String decodedBody = URLDecoder.decode(requestBody.toString(), "UTF-8");
        System.err.println("解码后请求体: " + decodedBody);
        String[] paramsArray = decodedBody.split("&");
        String respDataJson = "";
        for (String param : paramsArray) {
            if (param.startsWith("resp_data=")) {
                respDataJson = param.substring(10); // 去掉"resp_data="前缀
                break;
            }
        }
        System.err.println("处理后的"+respDataJson);
        // 转换为JSONObject
        JSONObject resp_data = JSONObject.parseObject(respDataJson);
        System.err.println(resp_data);
        String string = resp_data.getString("trans_stat");
        if (!string.equals("S")){
            return R.ok();
            System.err.println("陈工");
        }
        String req_seq_id = resp_data.getString("req_seq_id");
        String hf_seq_id = resp_data.getString("hf_seq_id");
@@ -111,6 +125,55 @@
        return R.ok(null, "error");
    }
    public static void main(String[] args) {
        String s = "resp_desc=交易成功[000]&resp_code=00000000&sign=PymKvUt5iBSn1EmBHu41ESxygYl80rHVRZVFlmipqg5zYSF/Yeq30ZJm0l5ztvIaGvUQChYQ5DAVkN/N+TYg1WU+FhMi/RTP15OpBAj8gGtYPyk7Z4lF9FLwiSGmX0RvCYWI5+LVsk10i7+j9332kAuB5GpKm0tOaDGULHZYlfrt5D5BgJ8RKdjYJ4OOV1Ex5J5PNLPYE5uc8rdzTQ9HHTu4N+sBOBV+tXJFYtSOoAaiDsRmv5Er8X8ogSlNODmaj7zBbZQHrPTTs8rtBl+YbQo28cmgykwdl9pPTMtAjkL9dX6/JVApquKgm9M+v8+CDT0MKjn/nyVE4J2EWc/7LQ==&" +
                "resp_data={\"acct_date\":\"20250816\",\"acct_id\":\"F10004674\",\"acct_split_bunch\":{\"acct_infos\":[{\"acct_date\":\"20250816\",\"acct_id\":\"F10004674\",\"div_amt\":\"0.01\",\"huifu_id\":\"6666000174575407\"}],\"fee_acct_date\":\"20250816\",\"fee_acct_id\":\"F10004674\",\"fee_amt\":\"0.00\",\"fee_huifu_id\":\"6666000174575407\"},\"acct_stat\":\"S\",\"atu_sub_mer_id\":\"797542530\",\"avoid_sms_flag\":\"\",\"bagent_id\":\"6666000167477678\",\"bank_desc\":\"支付成功\",\"bank_message\":\"支付成功\",\"bank_order_no\":\"4200002762202508169050647775\"" +
                ",\"bank_seq_id\":\"273346\",\"bank_type\":\"OTHERS\",\"base_acct_id\":\"F10004674\"," +
                "\"batch_id\":\"250816\",\"channel_type\":\"N\",\"charge_flags\":\"758_0\",\"debit_type\"" +
                ":\"0\",\"delay_acct_flag\":\"N\",\"div_flag\":\"0\",\"end_time\":\"20250816153144\"," +
                "\"fee_amount\":\"0.00\",\"fee_amt\":\"0.00\",\"fee_flag\":2,\"fee_formula_infos\"" +
                ":[{\"fee_formula\":\"MAX(0.00,AMT*0.005)\",\"fee_type\":\"TRANS_FEE\"}],\"fee_rec_type" +
                "\":\"1\",\"fee_type\":\"INNER\",\"gate_id\":\"IB\",\"hf_seq_id\":\"002900TOP1B250816153133P665ac139cd300000\"" +
                ",\"huifu_id\":\"6666000174575407\",\"is_delay_acct\":\"0\",\"is_div\":\"0\",\"maze_resp_code\":\"\",\"mer_nam" +
                "e\":\"贵州中嘉瑞祺新能源科技有限公司\",\"mer_ord_id\":\"2025081615313312273346\",\"mypaytsf_discount\":\"0.00\",\"" +
                "need_big_object\":false,\"notify_type\":2,\"org_auth_no\":\"\",\"org_huifu_seq_id\":\"\",\"org_t" +
                "rans_date\":\"\",\"out_ord_id\":\"4200002762202508169050647775\",\"out_trans_id\":\"42" +
                "00002762202508169050647775\",\"party_order_id\":\"032425081655893847103301\",\"pay" +
                "_amt\":\"0.01\",\"pay_scene\":\"02\",\"posp_seq_id\":\"032425081655893847103301\"" +
                ",\"product_id\":\"KAZX\",\"ref_no\":\"153133273346\",\"req_date\":\"202508" +
                "16\",\"req_seq_id\":\"2025081615313312273346\",\"resp_code\":\"00000000" +
                "\",\"resp_desc\":\"交易成功\",\"risk_check_data\":{},\"risk_check_info\":{" +
                "},\"settlement_amt\":\"0.01\",\"sub_resp_code\":\"00000000\",\"sub_resp_desc\"" +
                ":\"交易成功\",\"subsidy_stat\":\"I\",\"sys_id\":\"6666000174575407\",\"" +
                "trade_type\":\"T_MINIAPP\",\"trans_amt\":\"0.01\",\"trans_date\":\"2025081" +
                "6\",\"trans_fee_allowance_info\":{\"actual_fee_amt\":\"0.00\",\"allowance_fee_" +
                "amt\":\"0.00\",\"allowance_type\":\"0\",\"receivable_fee_amt\":\"0.00\"},\"trans_s" +
                "tat\":\"S\",\"trans_time\":\"153133\",\"trans_type\":\"T_MINIAPP\",\"ts_encash_detail\":[" +
                "],\"wx_response\":{\"bank_type\":\"OTHERS\",\"coupon_fee\":\"0.00\",\"openid\":\"o8jhot3gj5UeqqT" +
                "-od35bM6rJOYk\",\"sub_appid\":\"wx049faf9c5234f31c\",\"sub_openid\":\"oJiKr7Rm5v3qGzOSy5WQp8_qrvic\"}}";
        // 解析参数
        String[] paramsArray = s.split("&");
        String respDataJson = "";
        for (String param : paramsArray) {
            if (param.startsWith("resp_data=")) {
                respDataJson = param.substring(10); // 去掉"resp_data="前缀
                break;
            }
        }
        // 转换为JSONObject
        JSONObject resp_data = JSONObject.parseObject(respDataJson);
        System.err.println(resp_data);
        String string = resp_data.getString("trans_stat");
        if (!string.equals("S")){
            System.err.println("陈工");
        }
        String req_seq_id = resp_data.getString("req_seq_id");
        String hf_seq_id = resp_data.getString("hf_seq_id");
        System.err.println(req_seq_id);
        System.err.println(hf_seq_id);
    }
    @ResponseBody
    @PostMapping("/serviceCallback")
    public void serviceCallback(HttpServletRequest request, HttpServletResponse response) {