Quellcode durchsuchen

修改缴费项目设置

Bingo vor 4 Jahren
Ursprung
Commit
3045d027e5

+ 0 - 66
package.json

@@ -1,66 +0,0 @@
-{
-  "name": "vue-admin-template",
-  "version": "4.4.0",
-  "description": "A vue admin template with Element UI & axios & iconfont & permission control & lint",
-  "author": "1452635110@qq.com 小新",
-  "scripts": {
-    "dev": "vue-cli-service serve",
-    "build:prod": "vue-cli-service build",
-    "build:stage": "vue-cli-service build --mode staging",
-    "preview": "node build/index.js --preview",
-    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
-    "lint": "eslint --ext .js,.vue src",
-    "test:unit": "jest --clearCache && vue-cli-service test:unit",
-    "test:ci": "npm run lint && npm run test:unit"
-  },
-  "dependencies": {
-    "axios": "0.18.1",
-    "core-js": "3.6.5",
-    "element-ui": "2.13.2",
-    "file-saver": "^2.0.5",
-    "js-cookie": "2.2.0",
-    "normalize.css": "7.0.0",
-    "nprogress": "0.2.0",
-    "path-to-regexp": "2.4.0",
-    "vue": "2.6.10",
-    "vue-quill-editor": "^3.0.6",
-    "vue-router": "3.0.6",
-    "vuex": "3.1.0",
-    "xlsx": "^0.18.5"
-  },
-  "devDependencies": {
-    "@vue/cli-plugin-babel": "4.4.4",
-    "@vue/cli-plugin-eslint": "4.4.4",
-    "@vue/cli-plugin-unit-jest": "4.4.4",
-    "@vue/cli-service": "4.4.4",
-    "@vue/test-utils": "1.0.0-beta.29",
-    "autoprefixer": "9.5.1",
-    "babel-eslint": "10.1.0",
-    "babel-jest": "23.6.0",
-    "babel-plugin-dynamic-import-node": "2.3.3",
-    "chalk": "2.4.2",
-    "connect": "3.6.6",
-    "eslint": "6.7.2",
-    "eslint-plugin-vue": "6.2.2",
-    "html-webpack-plugin": "3.2.0",
-    "mockjs": "1.0.1-beta3",
-    "runjs": "4.3.2",
-    "sass": "1.26.8",
-    "sass-loader": "8.0.2",
-    "script-ext-html-webpack-plugin": "2.1.3",
-    "script-loader": "^0.7.2",
-    "serve-static": "1.13.2",
-    "svg-sprite-loader": "4.1.3",
-    "svgo": "1.2.2",
-    "vue-template-compiler": "2.6.10"
-  },
-  "browserslist": [
-    "> 1%",
-    "last 2 versions"
-  ],
-  "engines": {
-    "node": ">=8.9",
-    "npm": ">= 3.0.0"
-  },
-  "license": "MIT"
-}

+ 5 - 5
pom.xml

@@ -105,11 +105,11 @@
         </dependency>
 
         <!-- 建行支付工具类 -->
-        <dependency>
-            <groupId>com.ccb.pay</groupId>
-            <artifactId>netpay</artifactId>
-            <version>0.0.1</version>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>com.ccb.pay</groupId>-->
+<!--            <artifactId>netpay</artifactId>-->
+<!--            <version>0.0.1</version>-->
+<!--        </dependency>-->
 
         <!-- 密码加密 -->
         <dependency>

+ 2 - 1
src/main/java/com/chuanghai/smartschool/tuitionpayment/common/exception/BizCodeEnume.java

@@ -37,7 +37,8 @@ public enum BizCodeEnume {
     PAY_GRADE_IS_NOT_EXIT(10019, "缴费年级不存在"),
     FILE_IMPORT_ERROR(10020, "文件导入失败"),
     BATCH_EXECUTOR_ERROR(10100, "批量操作数据库失败"),
-    PAY_AMOUNT_ERROR(10021,"付款金额错误");
+    PAY_AMOUNT_ERROR(10021,"付款金额错误"),
+    PAY_ITEM_EXIST(10022,"缴费项目已存在");
 
     private int code;
     private String msg;

+ 8 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayItemController.java

@@ -3,6 +3,8 @@ package com.chuanghai.smartschool.tuitionpayment.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
+import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
+import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayItem;
 import com.chuanghai.smartschool.tuitionpayment.service.PayItemService;
@@ -43,6 +45,12 @@ public class PayItemController {
             payItem.setItemAskDay("7");
             payItem.setItemAskCount("2");
             payItem.setRequestCount("0");
+            QueryWrapper<PayItem> wrapper = new QueryWrapper<>();
+            wrapper.eq("item_name", payItem.getItemName());
+            PayItem one = payItemService.getOne(wrapper);
+            if (one != null) {
+                throw new RRException(BizCodeEnume.PAY_ITEM_EXIST);
+            }
             payItemService.saveOrUpdate(payItem);
             return CommonResult.ok();
         } catch (NullPointerException n) {

+ 7 - 20
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayOrderController.java

@@ -1,6 +1,5 @@
 package com.chuanghai.smartschool.tuitionpayment.controller;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
@@ -9,38 +8,27 @@ import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageParam;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayItem;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayOrderEntity;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity;
-import com.chuanghai.smartschool.tuitionpayment.service.PayItemService;
 import com.chuanghai.smartschool.tuitionpayment.service.PayOrderService;
 import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoService;
 import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterService;
 import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
-import com.chuanghai.smartschool.tuitionpayment.vo.*;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import net.sf.jsqlparser.statement.execute.Execute;
+import com.chuanghai.smartschool.tuitionpayment.vo.CreateOrderResultVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.OrderStatusVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.PayOrderListVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.PayOrderReceiveVO;
 import org.apache.poi.ss.formula.functions.T;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.xmlbeans.impl.xb.xsdschema.Public;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.configurationprocessor.json.JSONException;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.lang.reflect.Array;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.NumberFormat;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.List;
 
 /**
  * 缴费订单
@@ -334,8 +322,7 @@ public class PayOrderController {
 
 
         payOrderEntity.setRealPayAmount(payAmount.setScale(2, RoundingMode.HALF_UP));
-        System.out.println(payOrderEntity);
-        System.out.println( notPayAmount);
+
     }
 
 }

+ 117 - 17
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java

@@ -3,20 +3,18 @@ package com.chuanghai.smartschool.tuitionpayment.controller;
 
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageParam;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils;
+import com.chuanghai.smartschool.tuitionpayment.entity.PayOrderEntity;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity;
 import com.chuanghai.smartschool.tuitionpayment.listener.aliexcel.MyStudentNoImportListener;
-import com.chuanghai.smartschool.tuitionpayment.service.PayItemDetailService;
 import com.chuanghai.smartschool.tuitionpayment.service.PayOrderService;
 import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoService;
 import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterService;
@@ -24,11 +22,7 @@ import com.chuanghai.smartschool.tuitionpayment.to.DeletePayableInfoTO;
 import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
 import com.chuanghai.smartschool.tuitionpayment.utils.ListPageUtil;
 import com.chuanghai.smartschool.tuitionpayment.vo.*;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import jdk.nashorn.internal.scripts.JS;
 import org.apache.poi.ss.formula.functions.T;
-import org.ehcache.impl.internal.classes.commonslang.ArrayUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
@@ -41,21 +35,22 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
-//import cn.afterturn.easypoi.excel.ExcelExportUtil;
-//import cn.afterturn.easypoi.excel.ExcelImportUtil;
-//import cn.afterturn.easypoi.excel.entity.ExportParams;
 
-import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.net.URLEncoder;
 import java.time.LocalDateTime;
-import java.util.*;
-import java.util.concurrent.ExecutionException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
 import java.util.stream.Collectors;
 
+//import cn.afterturn.easypoi.excel.ExcelExportUtil;
+//import cn.afterturn.easypoi.excel.ExcelImportUtil;
+//import cn.afterturn.easypoi.excel.entity.ExportParams;
+
 /**
  * 学生应缴数据
  *
@@ -78,6 +73,7 @@ public class PayableInfoController {
     @Autowired
     private WechatController wechatController;
 
+
     /**
      * 根据card_number获取缴费信息 整合各缴费项目的集合
      *
@@ -514,6 +510,8 @@ public class PayableInfoController {
             }
             payInfoDetailVO.setRealPayAmount(water.getRealPayAmount());
             payInfoDetailVO.setNotPayDetailAmount(water.getRealPayAmount());
+            payInfoDetailVO.setPayDetailAmount(water.getRealPayAmount());
+            payInfoDetailVO.setNotPaySize(0);
         } else {
             QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
             wrapper.eq("id", id)
@@ -530,7 +528,7 @@ public class PayableInfoController {
             }
 
             String[] realPayDetailStr;
-            String realPayDetail1= "";
+            String realPayDetail1 = "";
             // 缴费订单的已缴费明细不为null
             if (StringUtils.hasText(payableInfoEntity.getPayDetail())) {
                 if (StringUtils.hasText(realPayDetail)) {
@@ -545,7 +543,7 @@ public class PayableInfoController {
                 //缴费订单所有已交的项目明细
                 if (StringUtils.hasText(payableInfoEntity.getPayDetail())) {
                     realPayDetail1 = payableInfoEntity.getPayDetail() + "/" + realPayDetail;
-                }else {
+                } else {
                     realPayDetail1 = realPayDetail;
                 }
             }
@@ -555,7 +553,6 @@ public class PayableInfoController {
 //                realPayDetail1 =  realPayDetail1.substring(0,realPayDetail1.length()/2);
 //            }
 
-System.out.println(realPayDetail1);
             String notPayDetail = "";
             if (StringUtils.hasText(payableInfoEntity.getNotMustMoney())) {
 
@@ -732,4 +729,107 @@ System.out.println(realPayDetail1);
 
         return CommonResult.ok().setResult(payableInfoStudentResultVO);
     }
+
+    /**
+     * 根据订单编号修改相应的缴费订单
+     *
+     * @param orderNo
+     */
+    public void updatePayinfoByOrder(String orderNo) {
+        QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("order_no", orderNo);
+        PayOrderEntity one = payOrderService.getOne(wrapper);
+        if (one.getParentOrder() == null) {
+            if (one.getNotPaySize() == 0) {
+                one.setStatus("2");
+            } else {
+                one.setStatus("3");
+            }
+        } else {
+            one.setStatus("2");
+        }
+        payOrderService.updateById(one);
+        String payDetail = "";
+        if (StringUtils.hasText(one.getPayDetail())) {
+            payDetail = one.getPayDetail();
+        }
+        String notPayDetail = "";
+        if (StringUtils.hasText(one.getNotPayDetail())) {
+            notPayDetail = one.getNotPayDetail();
+        }
+
+        Integer notPaySize = one.getNotPaySize();
+        String payYear = one.getPayYear();
+        String studentName = one.getStudentName();
+        String payForIdentify = one.getPayForIdentify();
+        String payItem = one.getPayItem();
+        BigDecimal payOrderLoan = one.getPayOrderLoan();
+        PayableInfoEntity payableInfoEntity = new PayableInfoEntity();
+        PayableInfoWaterEntity payableInfoWaterEntity = new PayableInfoWaterEntity();
+        if (!payItem.equals("水费缴纳")) {
+            QueryWrapper<PayableInfoEntity> wrapper1 = new QueryWrapper<>();
+            wrapper1.eq("student_no", payForIdentify)
+                    .eq("student_name", studentName)
+                    .eq("years", payYear);
+            PayableInfoEntity pInfo = payableInfoService.getOne(wrapper1);
+            String notPayDetail1 = "";
+            String payDetail1 = "";
+
+            List<PayOrderEntity> payOrderList = payOrderService.queryAllOrderByParent(one.getOrderNo(), new PageParam()).getList();
+            for (int i = 0; i< payOrderList.size(); i++) {
+                // parentOrderLone  = parentOrderLone.add(payOrderList.get(i).getPayOrderLoan()).setScale(2,BigDecimal.ROUND_HALF_UP);
+//                if (StringUtils.hasText(payOrderList.get(i).getNotPayDetail() )) {
+//                    notPayDetail1 = payOrderList.get(i).getNotPayDetail() + "/";
+//                }
+
+
+
+                if (StringUtils.hasText(payOrderList.get(i).getPayDetail())) {
+                    payDetail1 += payOrderList.get(i).getPayDetail() + "/";
+                }
+                PayInfoDetailVO payInfoDetailVO =(PayInfoDetailVO) queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), payDetail1).getData();
+                System.out.println(payInfoDetailVO);
+//                if (StringUtils.hasText(payOrderList.get(i).getPayOrderLoan())) {
+//
+//                }
+                payOrderLoan = payOrderLoan.add(payOrderList.get(i).getPayOrderLoan());
+                pInfo.setPayOrderLoan(payOrderLoan);
+            }
+//            if (StringUtils.hasText(pInfo.getNotPayDetail())) {
+//                notPayDetail1 += notPayDetail +"/";
+//            }
+//            if (StringUtils.hasText(pInfo.getPayDetail())) {
+//                payDetail1 += payDetail + "/";
+//            }
+
+            payDetail1 =  payDetail1.endsWith("/") == true ? payDetail1.substring(0,payDetail1.length() -1 ) : payDetail1;
+            notPayDetail1 =  notPayDetail1.endsWith("/") == true ? notPayDetail1.substring(0,notPayDetail1.length()  -1 ) : notPayDetail1;
+           // notPayDetail1= notPayDetail1.startsWith("/") == true ? notPayDetail1.substring(1) : notPayDetail1;
+          //  payDetail1= payDetail1.startsWith("/") == true ? payDetail1.substring(1) : payDetail1;
+            PayInfoDetailVO payInfoDetailVO = (PayInfoDetailVO) this.queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), one.getPayDetail()).getData();
+
+            pInfo.setPayDetail(payDetail1);
+            pInfo.setNotPayDetail(notPayDetail1);
+            pInfo.setNotPaySize(notPaySize);
+
+            if (pInfo.getPayFinishTime() == null) {
+                pInfo.setPayFinishTime(LocalDateTime.now());
+            }
+            //当所有待缴费明细的数量为0 时表示该订单已经完成缴费
+            QueryWrapper<PayOrderEntity> wrapper2 = new QueryWrapper<>();
+            wrapper2.eq("order_no", one.getParentOrder());
+            PayOrderEntity one1 = payOrderService.getOne(wrapper2);
+            if (one1 != null) {
+                if (notPaySize == 0) {
+                    pInfo.setPayItemType("2");
+                } else {
+                    pInfo.setPayItemType("3");
+                }
+            }
+            System.out.println(pInfo);
+            payableInfoService.updateById(pInfo);
+        }
+    }
+
+    // public CommonResult<T> query
 }

+ 10 - 10
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java

@@ -252,7 +252,7 @@ public class WechatController {
      * @return
      */
     @ResponseBody
-    public CommonResult<T> sendException(String itemName) {
+    public CommonResult<T> sendException(String itemName, String orderNo) {
         QueryWrapper<PayItem> wrapper1 = new QueryWrapper<>();
         wrapper1.eq("item_name", itemName);
         PayItem payItem = payItemService.getOne(wrapper1);
@@ -262,16 +262,16 @@ public class WechatController {
             wrapper.eq("status", "1");
             wrapper.eq("except_type", "1");
             wrapper.eq("pay_item", itemName);
-            List<PayOrderEntity> payOrderList = payOrderService.list(wrapper);
+            wrapper.eq("order_no", orderNo);
+            PayOrderEntity payOrder = payOrderService.getOne(wrapper);
             List<String> cardNumberList = new ArrayList<>();
             WeixiaoVO weixiaoVO = new WeixiaoVO();
-            if (payOrderList.size() > 0) {
-                payOrderList.forEach(payOrderEntity -> {
-                    payOrderEntity.setExceptType("2");
-                    String cardNumber = payOrderEntity.getPayerIdentify();
-                    cardNumberList.add(cardNumber);
-                    weixiaoVO.setTitle(payOrderEntity.getPayItem() + "缴纳异常通知");
-                });
+            if (payOrder != null) {
+                payOrder.setExceptType("2");
+                String cardNumber = payOrder.getPayerIdentify();
+                cardNumberList.add(cardNumber);
+                weixiaoVO.setTitle(payOrder.getPayItem() + "缴纳异常通知");
+
             }
             weixiaoVO.setCardNumberList(cardNumberList);
             weixiaoVO.setContent("同学你好,你的" + weixiaoVO.getTitle() + "缴费订单异常缴费失败,请尽快查看缴费详情,并再次缴费。若为系统原因,请及时反馈!");
@@ -279,7 +279,7 @@ public class WechatController {
             JSONObject jsonObject = (JSONObject) JSONObject.toJSON(weixiaoVO);
             notice(jsonObject);
             //更新订单异常推送的状态
-            payOrderService.updateBatchById(payOrderList);
+            payOrderService.updateById(payOrder);
         }
 
         return CommonResult.ok();

+ 1 - 1
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/AdminInfoEntity.java

@@ -13,7 +13,7 @@ import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Pattern;
 
 /**
- * 管理员信息 
+ * 管理员信息
  * @author codingliang
  * @email codingliang@gmail.com
  * @date 2021-08-12 15:52:41

+ 8 - 6
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayableInfoEntity.java

@@ -3,17 +3,14 @@ package com.chuanghai.smartschool.tuitionpayment.entity;
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
 
-import java.math.BigDecimal;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Date;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
 
 /**
  * 学生应缴数据
@@ -166,5 +163,10 @@ public class PayableInfoEntity implements Serializable {
 	 */
 	@ExcelIgnore
 	private Integer notPaySize;
+	/**
+	 * 助学贷款金额
+	 */
+	@ExcelIgnore
+	private BigDecimal payOrderLoan;
 
 }

+ 2 - 1
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/AdminInfoServiceImpl.java

@@ -3,6 +3,7 @@ package com.chuanghai.smartschool.tuitionpayment.service.impl;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.JwtOperator;
+import com.chuanghai.smartschool.tuitionpayment.entity.AdminInfoEntity;
 import com.chuanghai.smartschool.tuitionpayment.vo.UserTokenVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -15,7 +16,7 @@ import com.chuanghai.smartschool.tuitionpayment.common.utils.MyQuery;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageParam;
 
 import com.chuanghai.smartschool.tuitionpayment.dao.AdminInfoDao;
-import com.chuanghai.smartschool.tuitionpayment.entity.AdminInfoEntity;
+
 import com.chuanghai.smartschool.tuitionpayment.service.AdminInfoService;
 
 import java.time.LocalDateTime;

+ 66 - 59
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayOrderServiceImpl.java

@@ -1,7 +1,6 @@
 package com.chuanghai.smartschool.tuitionpayment.service.impl;
 
 import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.util.CollectionUtils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -10,7 +9,6 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
-import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.MyQuery;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageParam;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils;
@@ -29,9 +27,11 @@ import com.chuanghai.smartschool.tuitionpayment.service.*;
 import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
 import com.chuanghai.smartschool.tuitionpayment.utils.MyUtil;
 import com.chuanghai.smartschool.tuitionpayment.utils.OutputTxt;
-import com.chuanghai.smartschool.tuitionpayment.vo.*;
+import com.chuanghai.smartschool.tuitionpayment.vo.CreateOrderResultVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.OrderStatusVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.PayInfoDetailVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.PayOrderReceiveVO;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -40,11 +40,11 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
-import java.util.*;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 @Slf4j
 @Service("payOrderService")
@@ -179,10 +179,8 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         String payDetial = payOrderReceiveVO.getPayDetail();
         String payYear = payOrderReceiveVO.getPayYear();
         String orderNotice = payOrderReceiveVO.getOrderNotice();
-
-
         String id = payOrderReceiveVO.getId().toString();
-        //     String payItemType = payOrderReceiveVO.getPayItemType();
+
         // 查询用户是否已经缴费
         boolean alreadyPay = isAlreadyPay(studentNo, itemName, payYear, payOrderReceiveVO.getNotPaySize());
         if (alreadyPay) {
@@ -191,19 +189,15 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         PayableInfoEntity payableInfo = null;
         PayableInfoWaterEntity payableInfoWater = null;
         String grade = "";
-        //     String notPayDetail = "";
-        //     String totalDetail = "";
         if (itemName.equals("水费缴纳")) {
             payableInfoWater = payableInfoWaterService.getByStudentNo(studentNo, itemName, payYear);
             // 获取学生入学年份
             grade = payableInfoWater.getGrade();
-            //     totalDetail = payableInfoWater.getPayAmountDetail();
         } else {
             // 查询支付金额、被支付用户信息
             payableInfo = payableInfoService.getByStudentNo(studentNo, itemName, payYear);
             // 获取学生入学年份
             grade = payableInfo.getGrade();
-            //     notPayDetail = payableInfo.getNotPayDetail();
         }
 
         Integer currentGrade = MyUtil.calcStudentGrade(Integer.valueOf(grade.trim()));
@@ -249,35 +243,15 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         CreateOrderResultVO createOrderResultVO = new CreateOrderResultVO();
         if (payOrderEntity == null) {
             createOrderResultVO.setMsg("新创建订单");
-
             payOrderEntity = new PayOrderEntity();
-
             //判断该订单是否为多次支付
             PayInfoDetailVO payInfoDetailVO = new PayInfoDetailVO();
             int count = Integer.parseInt(payOrderReceiveVO.getPayCount());
             if (count == 1) {
                 payOrderEntity.setIsParent(Boolean.TRUE);
                 // payInfoDetailVO =  payableInfoController.queryPayDetail(id, itemName, payOrderReceiveVO.getPayDetail());
-            } else {
-                //获取缴费明细
-                // String payDetail = payOrderReceiveVO.getPayDetail();
-
-                //判断是否有未支付的明细
-
-//                if (!itemName.equals("水费缴纳")) {
-//                    if (StringUtils.hasText(payInfoDetailVO.getNotMustMoney())) {
-//                        totalDetail = payInfoDetailVO.getMustMoney() + "/" + payInfoDetailVO.getNotMustMoney();
-//                    }else {
-//                        totalDetail = payInfoDetailVO.getMustMoney();
-//                    }
-//                }
-//                if (totalDetail.equals(payDetail)) {
-//                } else {
-//                    payOrderEntity.setIsParent(Boolean.FALSE);
-//                }
             }
             payInfoDetailVO = (PayInfoDetailVO) payableInfoController.queryPayInfoDetail(id, itemName, payOrderReceiveVO.getPayDetail()).getData();
-
             payOrderEntity.setNotPayDetail(payInfoDetailVO.getNotPayDetail());
 
             payOrderEntity.setOrderNo(generateOrderNo());
@@ -296,6 +270,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             payOrderEntity.setPayBank(payItemController.queryPayItemByName(itemName));
             //计算助学贷款相关的费用
             String payOrderLoan = payOrderReceiveVO.getPayOrderLoan();
+            payOrderLoan = payOrderLoan.equals("") ? "0": payOrderLoan;
             BigDecimal orderLoan = BigDecimal.ZERO;
 //            if (StringUtils.hasText(payOrderLoan)) {
 //                orderLoan = orderLoan.add(new BigDecimal(payOrderLoan)).setScale(2,BigDecimal.ROUND_HALF_UP);
@@ -309,16 +284,14 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             // 支付金额、被支付用户信息
             if (itemName.equals("水费缴纳")) {
                 //更新对应项目的缴费参数
-
                 payOrderEntity.setDrom(drom.isEmpty() ? "" : drom);
                 payOrderEntity.setRealPayAmount(payableInfoWater.getRealPayAmount());
-                payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
+                //payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
                 payOrderEntity.setStudentName(payableInfoWater.getStudentName());
                 payOrderEntity.setClassName(payableInfoWater.getClassName());
             } else {
-                payOrderEntity.setRealPayAmount(payableInfo.getRealPayAmount().subtract(orderLoan).setScale(2, BigDecimal.ROUND_UP));
-                System.out.println(payInfoDetailVO.getPayDetailAmount());
-                payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount());
+                payOrderEntity.setRealPayAmount(payableInfo.getRealPayAmount());
+               // payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount());
                 payOrderEntity.setStudentName(payableInfo.getStudentName());
                 payOrderEntity.setClassName(payableInfo.getClassName());
                 //更新缴费名单的缴费明细
@@ -329,10 +302,11 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 }
                 payableInfo.setNotPayDetail(payOrderEntity.getNotPayDetail());
                 payableInfo.setNotPaySize(payOrderReceiveVO.getNotPaySize());
-              //  payableInfoService.updateById(payableInfo);
+                //  payableInfoService.updateById(payableInfo);
 
             }
             BigDecimal parentNowPayDetailAmount = BigDecimal.ZERO;
+            BigDecimal  parentOrderLone =  BigDecimal.ZERO;
             if (count > 1) {
                 QueryWrapper<PayOrderEntity> wrapper1 = new QueryWrapper<>();
                 wrapper1.eq("payer_identify", cardNumber);
@@ -343,32 +317,63 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
 //                wrapper1.orderByAsc("create_time");
 //                wrapper1.last("limit 1");
                 PayOrderEntity one = this.getOne(wrapper1);
-                payOrderEntity.setParentOrder(one.getOrderNo());
-                parentNowPayDetailAmount =  parentNowPayDetailAmount.add(one.getNowPayAmount()).setScale(2,BigDecimal.ROUND_HALF_UP);
+                if (one != null) {
+
+                    List<PayOrderEntity> payOrderList = queryAllOrderByParent(one.getOrderNo(), new PageParam()).getList();
+                    for (int i = 0; i< payOrderList.size(); i++) {
+                        System.out.println(payOrderList.get(i));
+                       // parentOrderLone  = parentOrderLone.add(payOrderList.get(i).getPayOrderLoan()).setScale(2,BigDecimal.ROUND_HALF_UP);
+                        parentNowPayDetailAmount = parentNowPayDetailAmount.add(payOrderList.get(i).getNowPayAmount()).setScale(2,BigDecimal.ROUND_HALF_UP);
+                    }
+
+                    System.out.println(parentOrderLone);
+                  //  parentNowPayDetailAmount = parentNowPayDetailAmount.add(parentOrderLone);
+                    System.out.println(parentNowPayDetailAmount);
+                    System.out.println(payInfoDetailVO+"------------1111111111111111111111");
+                    BigDecimal notPayDetailAmount = payInfoDetailVO.getNotPayDetailAmount();
+                    // parentOrderLone = one.getPayOrderLoan().setScale(2, BigDecimal.ROUND_HALF_UP);
+                    payOrderEntity.setParentOrder(one.getOrderNo());
+                   // parentNowPayDetailAmount = (parentNowPayDetailAmount.add(one.getNowPayAmount())).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    System.out.println(payOrderEntity.getRealPayAmount()+ " --- "+parentNowPayDetailAmount +"     "+notPayDetailAmount);
+                    payOrderEntity.setNowPayAmount(payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP).subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
+                        .subtract(notPayDetailAmount));
+                }
 
+            }else{
+                payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount().subtract(payOrderEntity.getPayOrderLoan().setScale(2,BigDecimal.ROUND_HALF_UP)));
             }
+          //  System.out.println(payOrderEntity.getNowPayAmount()+"     sjdhfuhsbdf getNowPayAmount");
             //校验订单的支付金额是否异常
-            int i = 1;
-            if (itemName.equals("水费缴纳")) {
-                i = payOrderEntity.getNowPayAmount().compareTo(payableInfoWater.getRealPayAmount());
-            }else {
-                i = payOrderEntity.getNowPayAmount().add(payOrderEntity.getPayOrderLoan()).add(payInfoDetailVO.getNotPayDetailAmount()).compareTo(payableInfo.getRealPayAmount());
+            Boolean flag = Boolean.TRUE;
+            //前端实付金额
+            BigDecimal realPayAmount = payOrderReceiveVO.getNowRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP);
 
+            // payInfoDetailVO.setPayDetailAmount(payOrderEntity.getNowPayAmount());
+            if (itemName.equals("水费缴纳")) {
+                flag = payOrderEntity.getNowPayAmount().compareTo(payableInfoWater.getRealPayAmount()) == 0? Boolean.TRUE : Boolean.FALSE;
+            } else {
+              //  System.out.println(payOrderReceiveVO);
+              //  System.out.println(payInfoDetailVO);
+              //  System.out.println(payOrderEntity);
+              //  System.out.println(payOrderEntity.getPayOrderLoan()+"       getPayOrderLoan");
+                BigDecimal aBoolean = payOrderEntity.getNowPayAmount().add(payOrderEntity.getPayOrderLoan()).add(payInfoDetailVO.getNotPayDetailAmount());
+
+                BigDecimal bBoolean = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(parentOrderLone).subtract(parentNowPayDetailAmount);
+                flag = aBoolean.compareTo(bBoolean) == 0 ? Boolean.TRUE : Boolean.FALSE;
                 //i = payOrderEntity.getNowPayAmount().add(payOrderEntity.getPayOrderLoan()).compareTo(payableInfo.getRealPayAmount());
+                System.out.println(payOrderEntity.getNowPayAmount()+"  payOrderEntity");
+                System.out.println(aBoolean+"---------- "+bBoolean);
+                System.out.println(2+"      "+flag);
+
             }
-            //前端实付金额
-            BigDecimal realPayAmount = payInfoDetailVO.getRealPayAmount().setScale(2,BigDecimal.ROUND_HALF_UP);
-            if (count > 1){
-                payOrderEntity.setNowPayAmount(payOrderEntity.getNowPayAmount().subtract(parentNowPayDetailAmount).setScale(2,BigDecimal.ROUND_HALF_UP));
-            }
-            if (realPayAmount == payOrderEntity.getNowPayAmount()) {
-                i = 1;
+            System.out.println(realPayAmount);
+            System.out.println(payOrderEntity.getNowPayAmount());
+            if (!(realPayAmount.compareTo(payOrderEntity.getNowPayAmount()) == 0)) {
+                flag = Boolean.FALSE;
+                System.out.println(3+"      "+flag);
             }
-
-            if (i != 0) {
+            if (!flag) {
                 throw new RRException(BizCodeEnume.PAY_AMOUNT_ERROR, "支付金额异常。");
-                //检测该订单是否异常,订单异常自动发送 订单异常微校通知
-              //  wechatController.sendException(itemName);
             }
 
           /*  首次订单支付成功之后如果还有未支付的 状态为 3 无未支付的状态为 2
@@ -377,6 +382,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
               检测该订单是否异常,订单异常自动发送 订单异常微校通知
               wechatController.sendException(itemName);
           */
+
             this.save(payOrderEntity);
 
 
@@ -422,7 +428,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     @Override
     public OrderStatusVO queryOrderStatus(String cardNumber, String orderNo) {
         OrderStatusVO orderStatusVO = queryOrderStatus(orderNo);
-
         if (!orderStatusVO.getPayerId().equals(cardNumber)) {
             throw new RRException(BizCodeEnume.NO_PERMISSION);
         }
@@ -449,6 +454,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                         LocalDateTime localDateTime = new MyUtil().changeTime(orderdate);
                         payOrder.setFinishTime(localDateTime);
                         payOrder.setStatus(PayStatus.ALREADY_PAY.getCode());
+                        payableInfoController.updatePayinfoByOrder(orderNo);
                         this.updateById(payOrder);
                     }
                 } else if (PayMethod.JXNXS_PAY.getCode().equals(payOrder.getPayMethod())) {
@@ -463,6 +469,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                             payOrder.setStatus(PayStatus.ALREADY_PAY.getCode());
                             // TODO 完成时间应该改成实际完成支付时间
                             payOrder.setFinishTime(LocalDateTime.now());
+                            payableInfoController.updatePayinfoByOrder(orderNo);
                             this.updateById(payOrder);
                         }
                     }

+ 75 - 76
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayServiceImpl.java

@@ -7,9 +7,8 @@ import com.chuanghai.smartschool.tuitionpayment.config.CCBPayConfig;
 import com.chuanghai.smartschool.tuitionpayment.config.JXNXSPayConfig;
 import com.chuanghai.smartschool.tuitionpayment.config.WechatConfig;
 import com.chuanghai.smartschool.tuitionpayment.controller.PayableInfoController;
+import com.chuanghai.smartschool.tuitionpayment.controller.WechatController;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayOrderEntity;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity;
 import com.chuanghai.smartschool.tuitionpayment.enume.PayMethod;
 import com.chuanghai.smartschool.tuitionpayment.enume.PayStatus;
 import com.chuanghai.smartschool.tuitionpayment.service.PayOrderService;
@@ -19,24 +18,17 @@ import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterService;
 import com.chuanghai.smartschool.tuitionpayment.utils.CCBRSASig;
 import com.chuanghai.smartschool.tuitionpayment.utils.JXNXSPayUtil;
 import com.chuanghai.smartschool.tuitionpayment.utils.MySignatureUtil;
-import com.chuanghai.smartschool.tuitionpayment.vo.PayInfoDetailVO;
 import com.chuanghai.smartschool.tuitionpayment.vo.WechatJsApiPayParamVO;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
+import org.springframework.http.*;
 import org.springframework.stereotype.Service;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
-import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -50,11 +42,7 @@ import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Author: codingliang
@@ -80,6 +68,8 @@ public class PayServiceImpl implements PayService {
     private PayableInfoWaterService payableInfoWaterService;
     @Autowired
     private PayableInfoController payableInfoController;
+    @Autowired
+    private WechatController wechatController;
 
     /**
      * 【建行】获取微信jsapi支付的参数
@@ -155,6 +145,8 @@ public class PayServiceImpl implements PayService {
                     .paySign(payParam.get("paySign"))
                     .build();
         } catch (Exception e) {
+            //订单异常发送异常通知
+            wechatController.sendException(payOrder.getPayItem(), orderNo);
             throw new RRException(BizCodeEnume.GET_JSAPI_PAY_PARAM_ERROR);
         }
     }
@@ -195,67 +187,68 @@ public class PayServiceImpl implements PayService {
         boolean verifySigature = CCBRSASig.verifySigature(sign, s, ccbPayConfig.getPub());
         if (verifySigature) { // 验签成功
             if ("Y".equalsIgnoreCase(success)) { // success 返回 Y 代表支付成功
-                QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
-                wrapper.eq("order_no",orderNo);
-                PayOrderEntity one = payOrderService.getOne(wrapper);
-                String payDetail = "";
-                if (StringUtils.hasText(one.getPayDetail())) {
-                    payDetail = one.getPayDetail();
-                }
-                String notPayDetail = "";
-                if (StringUtils.hasText(one.getNotPayDetail())) {
-                    notPayDetail = one.getNotPayDetail();
-                }
-                //  BigDecimal nowPayAmount = one.getNowPayAmount();
-                //  BigDecimal realPayAmount = one.getRealPayAmount();
-                Integer notPaySize = one.getNotPaySize();
-                String payYear = one.getPayYear();
-                String studentName = one.getStudentName();
-                String payForIdentify = one.getPayForIdentify();
-                String payItem = one.getPayItem();
-                PayableInfoEntity payableInfoEntity = new PayableInfoEntity();
-                PayableInfoWaterEntity payableInfoWaterEntity = new PayableInfoWaterEntity();
-                if (!payItem.equals("水费缴纳")) {
-                    QueryWrapper<PayableInfoEntity> wrapper1 = new QueryWrapper<>();
-                    wrapper1.eq("student_no", payForIdentify)
-                            .eq("student_name", studentName)
-                            .eq("years", payYear);
-                    PayableInfoEntity pInfo = payableInfoService.getOne(wrapper1);
-                    String notPayDetail1 = "";
-                    if (StringUtils.hasText(pInfo.getNotPayDetail())) {
-                       // notPayDetail1 = pInfo.getNotPayDetail() + "/" + notPayDetail;
-                        notPayDetail1 = notPayDetail;
-                    }
-                    String payDetail1 = "";
-                    if (StringUtils.hasText(pInfo.getPayDetail())) {
-                        //payDetail1 = pInfo.getPayDetail() + "/" + payDetail;
-                        payDetail1 = payDetail;
-                    }
-
-//                    notPayDetail1 = notPayDetail1.endsWith("/") == true ? notPayDetail1.substring(0,notPayDetail1.length() -1) :notPayDetail1;
-//                    payDetail1 = payDetail1.endsWith("/") == true ? payDetail1.substring(0,payDetail1.length() -1) :payDetail1;
-
-
-                    PayInfoDetailVO payInfoDetailVO = (PayInfoDetailVO) payableInfoController.queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), one.getPayDetail()).getData();
-
-                    pInfo.setPayDetail(payDetail);
-                    pInfo.setNotPayDetail(payInfoDetailVO.getNotPayDetail());
-                    pInfo.setNotPaySize(notPaySize);
-                    pInfo.setPayFinishTime(LocalDateTime.now());
-                    //当所有待缴费明细的数量为0 时表示该订单已经完成缴费
-                    if (notPaySize == 0) {
-                        pInfo.setPayItemType("2");
-                        QueryWrapper<PayOrderEntity> wrapper2 = new QueryWrapper<>();
-                        wrapper2.eq("order_no", one.getParentOrder());
-                        PayOrderEntity one1 = payOrderService.getOne(wrapper2);
-                        one1.setStatus("2");
-                        payOrderService.updateById(one1);
-                    }else {
-                        pInfo.setPayItemType("3");
-                    }
-                    payableInfoService.updateById(pInfo);
-                }
-
+//                QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+//                wrapper.eq("order_no",orderNo);
+//                PayOrderEntity one = payOrderService.getOne(wrapper);
+//                String payDetail = "";
+//                if (StringUtils.hasText(one.getPayDetail())) {
+//                    payDetail = one.getPayDetail();
+//                }
+//                String notPayDetail = "";
+//                if (StringUtils.hasText(one.getNotPayDetail())) {
+//                    notPayDetail = one.getNotPayDetail();
+//                }
+//                //  BigDecimal nowPayAmount = one.getNowPayAmount();
+//                //  BigDecimal realPayAmount = one.getRealPayAmount();
+//                Integer notPaySize = one.getNotPaySize();
+//                String payYear = one.getPayYear();
+//                String studentName = one.getStudentName();
+//                String payForIdentify = one.getPayForIdentify();
+//                String payItem = one.getPayItem();
+//                PayableInfoEntity payableInfoEntity = new PayableInfoEntity();
+//                PayableInfoWaterEntity payableInfoWaterEntity = new PayableInfoWaterEntity();
+//                if (!payItem.equals("水费缴纳")) {
+//                    QueryWrapper<PayableInfoEntity> wrapper1 = new QueryWrapper<>();
+//                    wrapper1.eq("student_no", payForIdentify)
+//                            .eq("student_name", studentName)
+//                            .eq("years", payYear);
+//                    PayableInfoEntity pInfo = payableInfoService.getOne(wrapper1);
+//                    String notPayDetail1 = "";
+//                    if (StringUtils.hasText(pInfo.getNotPayDetail())) {
+//                       // notPayDetail1 = pInfo.getNotPayDetail() + "/" + notPayDetail;
+//                        notPayDetail1 = notPayDetail;
+//                    }
+//                    String payDetail1 = "";
+//                    if (StringUtils.hasText(pInfo.getPayDetail())) {
+//                        //payDetail1 = pInfo.getPayDetail() + "/" + payDetail;
+//                        payDetail1 = payDetail;
+//                    }
+//
+////                    notPayDetail1 = notPayDetail1.endsWith("/") == true ? notPayDetail1.substring(0,notPayDetail1.length() -1) :notPayDetail1;
+////                    payDetail1 = payDetail1.endsWith("/") == true ? payDetail1.substring(0,payDetail1.length() -1) :payDetail1;
+//
+//
+//                    PayInfoDetailVO payInfoDetailVO = (PayInfoDetailVO) payableInfoController.queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), one.getPayDetail()).getData();
+//
+//                    pInfo.setPayDetail(payDetail);
+//                    pInfo.setNotPayDetail(payInfoDetailVO.getNotPayDetail());
+//                    pInfo.setNotPaySize(notPaySize);
+//                    pInfo.setPayFinishTime(LocalDateTime.now());
+//                    //当所有待缴费明细的数量为0 时表示该订单已经完成缴费
+//                    if (notPaySize == 0) {
+//                        pInfo.setPayItemType("2");
+//                        QueryWrapper<PayOrderEntity> wrapper2 = new QueryWrapper<>();
+//                        wrapper2.eq("order_no", one.getParentOrder());
+//                        PayOrderEntity one1 = payOrderService.getOne(wrapper2);
+//                        one1.setStatus("2");
+//                        payOrderService.updateById(one1);
+//                    }else {
+//                        pInfo.setPayItemType("3");
+//                    }
+//                    payableInfoService.updateById(pInfo);
+//                }
+
+                payableInfoController.updatePayinfoByOrder(orderNo);
 
                 updateOrderStatus(orderNo, payment);
             }
@@ -356,6 +349,12 @@ public class PayServiceImpl implements PayService {
                 isHandleSuccess = true;
                 String realPayAmount = new BigDecimal(amount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_UP).toString(); // 分转成元
                 updateOrderStatus(orderNo, realPayAmount);
+            }else {
+                QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+                wrapper.eq("order_no", orderNo);
+                PayOrderEntity payOrder = payOrderService.getByOrderNo(orderNo);
+                //订单异常发送异常通知
+                wechatController.sendException(payOrder.getPayItem(), orderNo);
             }
         }
 

+ 3 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoServiceImpl.java

@@ -345,4 +345,7 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
 
         return list;
     }
+
+
+
 }

+ 2 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/to/PayOrderQueryTO.java

@@ -1,6 +1,8 @@
 package com.chuanghai.smartschool.tuitionpayment.to;
 
 import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.util.List;
 

+ 6 - 1
src/main/java/com/chuanghai/smartschool/tuitionpayment/utils/MyUtil.java

@@ -59,6 +59,11 @@ public class MyUtil {
         LocalDateTime localDateTime = new MyUtil().changeTime("20220708091308");
         System.out.println(localDateTime);
 
-        System.out.println(calcStudentGrade(2022));
+
     }
+
+
+
+
+
 }

+ 1 - 1
src/main/resources/application.yml

@@ -9,7 +9,7 @@ spring:
 #    url: jdbc:mysql://192.168.1.38:3306/tuition_payment
     driver-class-name: com.mysql.cj.jdbc.Driver
     password: root
-    url: jdbc:mysql://127.0.0.1:3309/tuition_payment
+    url: jdbc:mysql://127.0.0.1:3306/tuition_payment
 
 # mybatis plus
 mybatis-plus:

+ 1 - 0
src/main/resources/mapper/tuitionpayment/PayableInfoDao.xml

@@ -26,6 +26,7 @@
         <result property="payDetail" column="pay_detail"/>
         <result property="notPayDetail" column="not_pay_detail"/>
         <result property="notPaySize" column="not_pay_size"/>
+        <result property="payOrderLoan" column="pay_order_loan"/>
     </resultMap>
 
     <update id="truncateTable" >