yangdamao 1 년 전
부모
커밋
d6813e5a0a
41개의 변경된 파일1660개의 추가작업 그리고 48개의 파일을 삭제
  1. 116 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderRepController.java
  2. 1 1
      zhongzheng-admin-saas/src/main/resources/application-dev.yml
  3. 1 0
      zhongzheng-admin/src/main/resources/application-dev.yml
  4. 1 0
      zhongzheng-api/src/main/resources/application-dev.yml
  5. 2 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java
  6. 41 34
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java
  7. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  8. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java
  9. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  10. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  11. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java
  12. 8 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderGoods.java
  13. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderGoodsMapper.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java
  15. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderGoodsService.java
  16. 17 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java
  17. 7 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderGoodsServiceImpl.java
  18. 478 8
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  19. 31 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepDetailEditBo.java
  20. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepEditBo.java
  21. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepGoodsQueryBo.java
  22. 56 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepQueryBo.java
  23. 27 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepQuestionBo.java
  24. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRequestBo.java
  25. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRequestDetailBo.java
  26. 25 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopRepQuestionQueryBo.java
  27. 40 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOldOrderQuestion.java
  28. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOldOrderReplenish.java
  29. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOldOrderQuestionMapper.java
  30. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOldOrderReplenishMapper.java
  31. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOldOrderQuestionService.java
  32. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOldOrderReplenishService.java
  33. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOldOrderQuestionServiceImpl.java
  34. 18 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOldOrderReplenishServiceImpl.java
  35. 54 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderQuestionVo.java
  36. 75 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderRepDetailVo.java
  37. 126 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderRepVo.java
  38. 20 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderRequestVo.java
  39. 29 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml
  40. 23 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderGoodsMapper.xml
  41. 183 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

+ 116 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderRepController.java

@@ -0,0 +1,116 @@
+package com.zhongzheng.controller.order;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.framework.web.service.TopTokenService;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderQuestionVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 订单Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单控制器", tags = {"订单管理"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/order/rep")
+public class TopOldOrderRepController extends BaseController {
+
+    private final ITopOldOrderService iTopOldOrderService;
+
+    private final TopTokenService tokenService;
+    /**
+     * 查询订单列表
+     */
+    @ApiOperation("查询订单列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopOldOrderRepVo> list(TopOrderRepQueryBo bo) {
+        TopLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setLoginId(loginUser.getUser().getUserId());
+        startPage();
+        List<TopOldOrderRepVo> list = iTopOldOrderService.queryOrderRepList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询订单列表
+     */
+    @ApiOperation("查询订单详情")
+    @GetMapping("/goods/detail")
+    public TableDataInfo<TopOldOrderRepDetailVo> getOrderDetailList(TopOrderRepGoodsQueryBo queryBo) {
+        startPage();
+        List<TopOldOrderRepDetailVo> orderDetailList = iTopOldOrderService.getOrderDetailList(queryBo);
+        return getDataTable(orderDetailList);
+    }
+
+    /**
+     * 订单明细修改
+     */
+    @ApiOperation("订单明细修改")
+    @PostMapping("/edit")
+    public AjaxResult<Void> edit(@RequestBody TopOrderRepEditBo editBo) {
+        return toAjax(iTopOldOrderService.editOrderRepList(editBo) ? 1 : 0);
+    }
+
+    /**
+     * 订单明细修改
+     */
+    @ApiOperation("订单明细详情修改")
+    @PostMapping("/detail/edit")
+    public AjaxResult<Void> editOrderRepDetail(@RequestBody TopOrderRepDetailEditBo editBo) {
+        return toAjax(iTopOldOrderService.editOrderRepDetail(editBo) ? 1 : 0);
+    }
+
+    /**
+     * 订单题库开通列表
+     */
+    @ApiOperation("订单题库开通列表")
+    @GetMapping("/question/list")
+    public AjaxResult<List<TopOldOrderQuestionVo>> getOrderQuestionList(TopRepQuestionQueryBo queryBo) {
+        List<TopOldOrderQuestionVo> list =  iTopOldOrderService.getOrderQuestionList(queryBo);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 订单题库开通详情
+     */
+    @ApiOperation("订单题库开通详情")
+    @GetMapping("/question/detail")
+    public AjaxResult<TopOldOrderQuestionVo> getOrderQuestionDetail(TopRepQuestionQueryBo queryBo) {
+        TopOldOrderQuestionVo vo =  iTopOldOrderService.getOrderQuestionDetail(queryBo);
+        return AjaxResult.success(vo);
+    }
+
+    /**
+     * 新增订单题库开通记录
+     */
+    @ApiOperation("新增订单题库开通记录")
+    @PostMapping("/save/question")
+    public AjaxResult<Void> saveOrderQuestion(@RequestBody TopOrderRepQuestionBo bo) {
+        return toAjax(iTopOldOrderService.saveOrderQuestion(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除订单题库开通记录
+     */
+    @ApiOperation("删除订单题库开通记录")
+    @GetMapping("/del/question/{id}")
+    public AjaxResult<Void> delOrderQuestion(@PathVariable("id") Long id) {
+        return toAjax(iTopOldOrderService.delOrderQuestion(id) ? 1 : 0);
+    }
+}

+ 1 - 1
zhongzheng-admin-saas/src/main/resources/application-dev.yml

@@ -167,7 +167,7 @@ oldOrder:
     refundPay: http://192.168.1.222:5030/common/platform/pay
     refundPayHandle: http://192.168.1.222:5030/common/platform/pay/handle
     updateRemark: http://gdxypx.xy.com/WitSystem/BussinessApi/UpdateOrderAuditRemark
-
+    getResitTimes: http://gdxypx.xy.com/System/BussinessApi/GetResitTimes
 oldSys:
     host: http://gdxypx.xy.com
     goods: http://gdxypx.xy.com/WitSystem/BussinessApi/NewYxtLogin

+ 1 - 0
zhongzheng-admin/src/main/resources/application-dev.yml

@@ -168,6 +168,7 @@ oldOrder:
     refundPay: http://192.168.1.222:5030/common/platform/pay
     refundPayHandle: http://192.168.1.222:5030/common/platform/pay/handle
     updateRemark: http://gdxypx.xy.com/WitSystem/BussinessApi/UpdateOrderAuditRemark
+    getResitTimes: http://gdxypx.xy.com/System/BussinessApi/GetResitTimes
 
 oldSys:
     host: http://gdxypx.xy.com

+ 1 - 0
zhongzheng-api/src/main/resources/application-dev.yml

@@ -170,6 +170,7 @@ oldOrder:
     refundPay: http://192.168.1.222:5030/common/platform/pay
     refundPayHandle: http://192.168.1.222:5030/common/platform/pay/handle
     updateRemark: http://gdxypx.xy.com/WitSystem/BussinessApi/UpdateOrderAuditRemark
+    getResitTimes: http://gdxypx.xy.com/System/BussinessApi/GetResitTimes
 
 oldSys:
     host: http://gdxypx.xy.com

+ 2 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java

@@ -147,6 +147,8 @@ public class HttpUtils
             s.setContentType("application/json");
             post.setEntity(s);
             post.addHeader("content-type", "application/json");
+            System.out.println("url = " + url);
+            System.out.println("param = " + param);
             HttpResponse res = client.execute(post);
             if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                 if (res.getEntity().getContentType().getValue().equalsIgnoreCase("image/jpeg")) {

+ 41 - 34
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -1198,41 +1198,48 @@ public class WxLoginService implements IWxLoginService {
     @Override
     public String getWxSmallLink() {
         initData();
-        String wxGzhAccessToken = getWxSmallAccessToken();
-        String param = String.format(small_LinkParam, wxGzhAccessToken);
-        String url = small_LinkUrl + "?" + param;
-        JSONObject obj = new JSONObject();
-        obj.put("path", "pages/index/index");
-        obj.put("is_expire",true);
-        obj.put("expire_type",1);
-        obj.put("expire_interval",1);
-        obj.put("env_version",enCodeVersion);
-        String result = HttpUtils.sendPost(url, obj);
-        if (result.contains("errcode")){
-            List<String> codes = Arrays.asList("40001", "42001");
-            JSONObject jsonObject = JSONObject.parseObject(result);
-            if(ObjectUtils.isNotNull(jsonObject.get("errcode")) && codes.contains(jsonObject.get("errcode").toString())){
-                //微信access_token 过期或者失效,刷新access_token
-                String key = "WX_SMALL_ACCESS_TOKEN";
-                redisCache.deleteObject(key);
-                String wxGzhAccessTokenTo = getWxSmallAccessToken();
-                String paramTo = String.format(small_LinkParam, wxGzhAccessTokenTo);
-                String urlTo = small_LinkUrl + "?" + paramTo;
-                result = HttpUtils.sendPost(urlTo, obj);
-            }
-        }
-        JSONObject jsonObject = JSONObject.parseObject(result);
-        if(jsonObject.containsKey("url_link")){
-            return jsonObject.get("url_link").toString();
-        }else{
-            String tenantId = ServletUtils.getRequest().getHeader("TenantId");
-            SysTenant sysTenant = iSysTenantService.getOne(new LambdaQueryWrapper<SysTenant>()
-                    .eq(SysTenant::getTenantId,tenantId).last("limit 1"));
-            if(Validator.isNotEmpty(sysTenant)){
-                return "https://"+sysTenant.getHostH5();
-            }
-            return null;
+//        String wxGzhAccessToken = getWxSmallAccessToken();
+//        String param = String.format(small_LinkParam, wxGzhAccessToken);
+//        String url = small_LinkUrl + "?" + param;
+//        JSONObject obj = new JSONObject();
+//        obj.put("path", "pages/index/index");
+//        obj.put("is_expire",true);
+//        obj.put("expire_type",1);
+//        obj.put("expire_interval",1);
+//        obj.put("env_version",enCodeVersion);
+//        String result = HttpUtils.sendPost(url, obj);
+//        if (result.contains("errcode")){
+//            List<String> codes = Arrays.asList("40001", "42001");
+//            JSONObject jsonObject = JSONObject.parseObject(result);
+//            if(ObjectUtils.isNotNull(jsonObject.get("errcode")) && codes.contains(jsonObject.get("errcode").toString())){
+//                //微信access_token 过期或者失效,刷新access_token
+//                String key = "WX_SMALL_ACCESS_TOKEN";
+//                redisCache.deleteObject(key);
+//                String wxGzhAccessTokenTo = getWxSmallAccessToken();
+//                String paramTo = String.format(small_LinkParam, wxGzhAccessTokenTo);
+//                String urlTo = small_LinkUrl + "?" + paramTo;
+//                result = HttpUtils.sendPost(urlTo, obj);
+//            }
+//        }
+//        JSONObject jsonObject = JSONObject.parseObject(result);
+//        if(jsonObject.containsKey("url_link")){
+//            return jsonObject.get("url_link").toString();
+//        }else{
+//            String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+//            SysTenant sysTenant = iSysTenantService.getOne(new LambdaQueryWrapper<SysTenant>()
+//                    .eq(SysTenant::getTenantId,tenantId).last("limit 1"));
+//            if(Validator.isNotEmpty(sysTenant)){
+//                return "https://"+sysTenant.getHostH5();
+//            }
+//            return null;
+//        }
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        SysTenant sysTenant = iSysTenantService.getOne(new LambdaQueryWrapper<SysTenant>()
+                .eq(SysTenant::getTenantId,tenantId).last("limit 1"));
+        if(Validator.isNotEmpty(sysTenant)){
+            return "https://"+sysTenant.getHostH5();
         }
+        return null;
 
     }
 

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java

@@ -122,4 +122,11 @@ private static final long serialVersionUID=1L;
     /** 商品试卷数量 */
     private Integer examNum;
 
+    /** 完成日期 */
+    private Long finishTime;
+    /** 公示日期 */
+    private Long publicityTime;
+    /** 领证日期 */
+    private Long acquireTime;
+
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderGoodsMapper.java

@@ -13,6 +13,8 @@ import com.zhongzheng.modules.order.vo.MailOrderVo;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -88,4 +90,6 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
 
     @InterceptorIgnore(tenantLine = "true")
     int upBatchNumById(OrderGoods orderGoods);
+
+    List<TopOldOrderRepDetailVo> listRepByOrderSn(TopOrderRepGoodsQueryBo queryBo);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java

@@ -15,6 +15,8 @@ import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderUserGoodsVo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -143,4 +145,7 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     Boolean upBatchNumById(OrderGoods orderGoods);
 
     List<OrderUserGoodsVo> listUserSubjectGoodsNew(OrderSubjectUserBuyBo bo);
+
+    List<TopOldOrderRepDetailVo> listRepByOrderSn(TopOrderRepGoodsQueryBo queryBo);
+
 }

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -80,6 +80,8 @@ import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.tencentcloud.service.IFaceOcrService;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserExamGoodsQueryBo;
 import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
@@ -994,6 +996,11 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return allList;
     }
 
+    @Override
+    public List<TopOldOrderRepDetailVo> listRepByOrderSn(TopOrderRepGoodsQueryBo queryBo) {
+        return baseMapper.listRepByOrderSn(queryBo);
+    }
+
     private boolean checkUnique(Long GoodsId,Long UserId) {
         ShoppingCart info = iShoppingCartService.getOne(new LambdaQueryWrapper<ShoppingCart>()
                 .eq(ShoppingCart::getUserId,UserId).eq(ShoppingCart::getGoodsId,GoodsId).last("limit 1"));

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java

@@ -92,6 +92,8 @@ public class TopOldOrderGoodsAddBo {
     private Long relSignId;
     @ApiModelProperty("学员名称")
     private String userName;
+    @ApiModelProperty("学员性别")
+    private String userSex;
     @ApiModelProperty("学员身份证")
     private String userCard;
     @ApiModelProperty("学员手机号码")

+ 8 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrderGoods.java

@@ -87,6 +87,8 @@ private static final long serialVersionUID=1L;
     private Long relSignId;
     @ApiModelProperty("学员名称")
     private String userName;
+    @ApiModelProperty("学员性别")
+    private String userSex;
     @ApiModelProperty("学员身份证")
     private String userCard;
     @ApiModelProperty("学员手机号码")
@@ -106,6 +108,11 @@ private static final long serialVersionUID=1L;
     private String repairProve;
     @ApiModelProperty("订单课程所属机构")
     private String ownInstitutionId;
-
+    /** 完成日期 */
+    private Long finishTime;
+    /** 公示日期 */
+    private Long publicityTime;
+    /** 领证日期 */
+    private Long acquireTime;
 
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderGoodsMapper.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQuery;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderGoods;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo;
 
 import java.util.List;
 
@@ -16,4 +18,6 @@ import java.util.List;
 public interface TopOldOrderGoodsMapper extends BaseMapper<TopOldOrderGoods> {
 
     List<TopOldOrderGoodsListVo> getListByQuery(TopOldOrderGoodsQuery query);
+
+    List<TopOldOrderRepDetailVo> listRepByOrderSn(TopOrderRepGoodsQueryBo queryBo);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java

@@ -12,6 +12,7 @@ import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
 import com.zhongzheng.modules.top.order.bo.TopDetailStatisticsTotal;
 import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
 import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepQueryBo;
 import com.zhongzheng.modules.top.order.vo.*;
 import org.apache.ibatis.annotations.Param;
 
@@ -110,4 +111,5 @@ public interface TopOldOrderMapper extends BaseMapper<TopOldOrder> {
 
     List<TopOrderStatisticsTwoVo> getTenantCreateList(TopOrderStatisticsViewBo bo);
 
+    List<TopOldOrderRepVo> queryOrderRepList(TopOrderRepQueryBo bo);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderGoodsService.java

@@ -8,6 +8,8 @@ import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsQueryBo;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderGoods;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsVo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo;
 
 import java.util.Collection;
 import java.util.List;
@@ -53,4 +55,6 @@ public interface ITopOldOrderGoodsService extends IService<TopOldOrderGoods> {
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
 
     List<TopOldOrderGoodsListVo> getListByQuery(TopOldOrderGoodsQuery query);
+
+    List<TopOldOrderRepDetailVo> listRepByOrderSn(TopOrderRepGoodsQueryBo queryBo);
 }

+ 17 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java

@@ -8,10 +8,7 @@ import com.zhongzheng.modules.top.financial.vo.*;
 import com.zhongzheng.modules.top.goods.bo.*;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.goods.vo.*;
-import com.zhongzheng.modules.top.order.bo.PayOrderCallBackBo;
-import com.zhongzheng.modules.top.order.bo.TopOldOrderCustomerBo;
-import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsBo;
-import com.zhongzheng.modules.top.order.bo.TopOrderStatisticsViewBo;
+import com.zhongzheng.modules.top.order.bo.*;
 import com.zhongzheng.modules.top.order.vo.*;
 
 import java.util.Collection;
@@ -197,4 +194,20 @@ public interface ITopOldOrderService extends IService<TopOldOrder> {
 	TopOrderOrgVo getTopOrderGoodsList(TopOldOrderQueryBo bo);
 
     void importOldOrderCustomer(List<TopOldOrderCustomerBo> customerBos);
+
+    List<TopOldOrderRepVo> queryOrderRepList(TopOrderRepQueryBo bo);
+
+	List<TopOldOrderRepDetailVo> getOrderDetailList(TopOrderRepGoodsQueryBo orderSn);
+
+    boolean editOrderRepList(TopOrderRepEditBo editBo);
+
+	boolean editOrderRepDetail(TopOrderRepDetailEditBo editBo);
+
+    List<TopOldOrderQuestionVo> getOrderQuestionList(TopRepQuestionQueryBo queryBo);
+
+	TopOldOrderQuestionVo getOrderQuestionDetail(TopRepQuestionQueryBo queryBo);
+
+	boolean saveOrderQuestion(TopOrderRepQuestionBo bo);
+
+	boolean delOrderQuestion(Long id);
 }

+ 7 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderGoodsServiceImpl.java

@@ -16,6 +16,8 @@ import com.zhongzheng.modules.top.goods.mapper.TopOldOrderGoodsMapper;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderGoodsService;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
 import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsVo;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo;
+import com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo;
 import org.springframework.stereotype.Service;
 
 import java.util.Collection;
@@ -117,4 +119,9 @@ public class TopOldOrderGoodsServiceImpl extends ServiceImpl<TopOldOrderGoodsMap
     public List<TopOldOrderGoodsListVo> getListByQuery(TopOldOrderGoodsQuery query) {
         return baseMapper.getListByQuery(query);
     }
+
+    @Override
+    public List<TopOldOrderRepDetailVo> listRepByOrderSn(TopOrderRepGoodsQueryBo queryBo) {
+        return baseMapper.listRepByOrderSn(queryBo);
+    }
 }

+ 478 - 8
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

@@ -21,11 +21,10 @@ import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
 import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
-import com.zhongzheng.modules.course.domain.CourseSubject;
-import com.zhongzheng.modules.course.service.ICourseSubjectService;
+import com.zhongzheng.modules.course.domain.*;
+import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
@@ -60,7 +59,12 @@ import com.zhongzheng.modules.top.goods.mapper.TopOldOrderMapper;
 import com.zhongzheng.modules.top.goods.service.*;
 import com.zhongzheng.modules.top.goods.vo.*;
 import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderQuestion;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderReplenish;
 import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
+import com.zhongzheng.modules.top.order.bo.TopOrderRepQueryBo;
+import com.zhongzheng.modules.top.order.service.ITopOldOrderQuestionService;
+import com.zhongzheng.modules.top.order.service.ITopOldOrderReplenishService;
 import com.zhongzheng.modules.top.order.service.ITopOrderBankPayService;
 import com.zhongzheng.modules.top.order.vo.*;
 import com.zhongzheng.modules.top.order.vo.TopOrderStatisticsTwoVo;
@@ -74,8 +78,9 @@ import com.zhongzheng.modules.top.user.service.ITopSysRoleService;
 import com.zhongzheng.modules.top.user.service.ITopSysUserRoleService;
 import com.zhongzheng.modules.top.user.service.ITopSysUserService;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.domain.UserSubscribe;
 import com.zhongzheng.modules.user.service.IUserService;
-import org.springframework.beans.BeanUtils;
+import com.zhongzheng.modules.user.service.IUserSubscribeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -84,7 +89,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -107,6 +111,9 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Autowired
     private IOrderGoodsService orderGoodsService;
 
+    @Autowired
+    private IOrderGoodsRefundService orderGoodsRefundService;
+
     @Autowired
     private ICourseSubjectService courseSubjectService;
 
@@ -161,6 +168,18 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Autowired
     private IGoodsService goodsService;
 
+    @Autowired
+    private IMajorService majorService;
+
+    @Autowired
+    private ICourseEducationTypeService courseEducationTypeService;
+
+    @Autowired
+    private ICourseProjectTypeService courseProjectTypeService;
+
+    @Autowired
+    private ICourseBusinessService courseBusinessService;
+
     @Autowired
     private ITopOldOrderCheckService topOldOrderCheckService;
 
@@ -206,9 +225,6 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Autowired
     private ITopOrderBankPayService topOrderBankPayService;
 
-    @Autowired
-    private IOrderGoodsRefundService orderGoodsRefundService;
-
     @Autowired
     private ITopSysConfigService topConfigService;
 
@@ -233,6 +249,15 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Autowired
     private ISysOldOrgService iSysOldOrgService;
 
+    @Autowired
+    private ITopOldOrderReplenishService topOldOrderReplenishService;
+
+    @Autowired
+    private ITopOldOrderQuestionService topOldOrderQuestionService;
+
+    @Autowired
+    private IUserSubscribeService userSubscribeService;
+
     @Value("${oldOrder.studyRecord}")
     private String ORDER_STUDY;
 
@@ -266,6 +291,9 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Value("${oldOrder.updateRemark}")
     private String UPDATE_REMARK;
 
+    @Value("${oldOrder.getResitTimes}")
+    private String GET_RESIT_TIMES;
+
     @Value("${shared.statistics}")
     private String SHARED_STATISTICS;
 
@@ -4456,6 +4484,448 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         }
     }
 
+    @Override
+    public List<TopOldOrderRepVo> queryOrderRepList(TopOrderRepQueryBo bo) {
+        //查询视图 v_top_order
+        if (ObjectUtils.isNotNull(bo.getEducationTypeId())) {
+            TopCourseEducationType educationType = topCourseEducationTypeService.getById(bo.getEducationTypeId());
+            if (StringUtils.isNotBlank(educationType.getSchemeName())) {
+                bo.setBusinessFullName(educationType.getSchemeName() + educationType.getEducationName());
+            } else {
+                bo.setBusinessFullName(educationType.getEducationName());
+            }
+        }
+        if (ObjectUtils.isNotNull(bo.getBusinessId())) {
+            String name = topCourseBusinessService.getBusinessFullName(bo.getBusinessId());
+            bo.setBusinessFullName(name);
+        }
+
+        List<TopOldOrderRepVo> orderRepList = baseMapper.queryOrderRepList(bo);
+        if (CollectionUtils.isEmpty(orderRepList)){
+            return new ArrayList<>();
+        }
+        for (TopOldOrderRepVo vo : orderRepList) {
+            //成交数量
+            Integer count = topOrderGoodsService.count(new LambdaQueryWrapper<TopOldOrderGoods>()
+                    .eq(TopOldOrderGoods::getOrderSn, vo.getOrderSn())
+                    .eq(TopOldOrderGoods::getStatus, 1)
+                    .eq(TopOldOrderGoods::getCheckStatus, 1));
+            vo.setConcludeNum(count);
+            //业务层次
+            if (StringUtils.isNotBlank(vo.getBusinessFullName())){
+                String substring = vo.getBusinessFullName().substring(4, 8);
+                String substring2 = vo.getBusinessFullName().substring(8);
+                vo.setBusinessName(substring2);
+                vo.setEduName(substring);
+            }
+            //每月收款明细
+            TopOldOrderReplenish replenish = topOldOrderReplenishService
+                    .getOne(new LambdaQueryWrapper<TopOldOrderReplenish>()
+                    .eq(TopOldOrderReplenish::getOrderSn, vo.getOrderSn())
+                    .eq(TopOldOrderReplenish::getStatus, 1)
+                    .last("limit 1"));
+            if (ObjectUtils.isNotNull(replenish)){
+                if (StringUtils.isNotBlank(replenish.getProceedsJson())){
+                    String proceedsJson = replenish.getProceedsJson();
+                    Map map = JSON.parseObject(proceedsJson, Map.class);
+                    vo.setProceedsJsonMap((Map<String,BigDecimal>)map);
+                }
+                BigDecimal uncollected = ObjectUtils.isNotNull(replenish.getOrderResidue())?replenish.getOrderResidue():new BigDecimal(0.00);
+                vo.setUncollected(uncollected);
+                vo.setReceived(vo.getPriceTotal().subtract(uncollected));
+                vo.setProceedsRecord(replenish.getProceedsRecord());
+                //已退
+                BigDecimal refunded = new BigDecimal("0.00");
+                TopOldOrder orderBySn = baseMapper.getOrderBySn(vo.getOrderSn());
+                if (orderBySn.getOrderFrom() == 1 || orderBySn.getOrderFrom() == 4){
+                    //新系统订单
+                    List<OrderGoodsRefund> list = orderGoodsRefundService.list(new LambdaQueryWrapper<OrderGoodsRefund>()
+                            .eq(OrderGoodsRefund::getOrderSn, orderBySn.getOrderSn())
+                            .eq(OrderGoodsRefund::getStatus, 1)
+                            .eq(OrderGoodsRefund::getPeriodStatus, 3));
+                    if (CollectionUtils.isNotEmpty(list)){
+                        refunded = list.stream().map(OrderGoodsRefund::getRefundFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    }
+                }else {
+                    List<TopOldOrderRefund> list = topOldOrderRefundService.list(new LambdaQueryWrapper<TopOldOrderRefund>()
+                            .eq(TopOldOrderRefund::getOrderSn, orderBySn.getOrderSn())
+                            .eq(TopOldOrderRefund::getStatus, 1)
+                            .eq(TopOldOrderRefund::getPeriodStatus, 3));
+                    if (CollectionUtils.isNotEmpty(list)){
+                        refunded = list.stream().map(TopOldOrderRefund::getRefundFee).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    }
+                }
+                vo.setRefunded(refunded);
+                vo.setPractical(vo.getPriceTotal().subtract(refunded));
+                //发票
+                List<TopNuoMplatformLog> fromLogs = topNuoMplatformLogService
+                        .list(new LambdaQueryWrapper<TopNuoMplatformLog>()
+                                .like(TopNuoMplatformLog::getOrderNoList, vo.getOrderSn())
+                                .eq(TopNuoMplatformLog::getStatus, 2));
+                if (CollectionUtils.isNotEmpty(fromLogs)){
+                    for (TopNuoMplatformLog fromLog : fromLogs) {
+                        OrderInvoiceHostBo invoiceBo = JSONObject.parseObject(fromLog.getContent(), OrderInvoiceHostBo.class);
+                        if (ObjectUtils.isNotNull(invoiceBo) && ObjectUtils.isNotNull(invoiceBo.getOrder())){
+                            OrderInvoiceBo order = invoiceBo.getOrder();
+                            vo.setInvoiceApplyTime(order.getInvoiceDate());
+                            vo.setInvoiceType(
+                                    StringUtils.isNotBlank(order.getInvoiceLine()) && order.getInvoiceLine().equals("bs")?"专票":"普票"
+                            );
+                        }
+                    }
+                }
+                vo.setIntegral(replenish.getIntegral());
+                vo.setProceedsDate(replenish.getProceedsDate());
+                vo.setProceedsCheckDate(replenish.getProceedsCheckDate());
+                vo.setProceedsChange(replenish.getProceedsChange());
+                vo.setCost(replenish.getCost());
+            }
+        }
+        return orderRepList;
+    }
+
+    @Override
+    public List<TopOldOrderRepDetailVo> getOrderDetailList(TopOrderRepGoodsQueryBo queryBo) {
+        List<TopOldOrderRepDetailVo> list;
+        if (queryBo.getOrderForm() == 1) {
+            //新系统订单
+            list = orderGoodsService.listRepByOrderSn(queryBo);
+            if (CollectionUtils.isNotEmpty(list)) {
+                for (TopOldOrderRepDetailVo item : list) {
+                    item.setApplyNum(0);
+                    item.setUserCard(EncryptHandler.decryptTwo(item.getUserCard()));
+                    //补考次数
+                    int count = userSubscribeService.count(new LambdaQueryWrapper<UserSubscribe>()
+                            .eq(UserSubscribe::getOrderGoodsId, item.getOrderGoodsId())
+                            .eq(UserSubscribe::getSubscribeStatus, 1)
+                            .ne(UserSubscribe::getExamStatus, 0));
+                    if (count > 0){
+                        item.setApplyNum(count - 1);
+                    }
+                    List<TopOldOrderQuestion> questions = topOldOrderQuestionService
+                            .list(new LambdaQueryWrapper<TopOldOrderQuestion>()
+                            .eq(TopOldOrderQuestion::getOrderSn, item.getOrderSn())
+                            .eq(TopOldOrderQuestion::getOrderGoodsId, item.getOrderGoodsId())
+                            .eq(TopOldOrderQuestion::getStatus, 1));
+                    if (CollectionUtils.isNotEmpty(questions)){
+                        item.setQuestionRecord(questions.size());
+                    }
+                }
+            }
+        } else {
+            //旧系统订单
+            list = topOrderGoodsService.listRepByOrderSn(queryBo);
+            if (CollectionUtils.isNotEmpty(list)) {
+                List<TopOrderRequestVo> requestVos = new ArrayList<>();
+                if (queryBo.getOrderBase() != 1){
+                    List<TopOrderRequestDetailBo> collect = list.stream().map(x -> {
+                        TopOrderRequestDetailBo requestBo = new TopOrderRequestDetailBo();
+                        requestBo.setIdNum(EncryptHandler.decryptTwo(x.getUserCard()));
+                        requestBo.setMajorName(x.getMajorName());
+                        return requestBo;
+                    }).collect(Collectors.toList());
+                    //旧系统查询补考次数
+                    TopOrderRequestBo requestBo = new TopOrderRequestBo();
+                    Long nowTime = DateUtils.getNowTime();
+                    String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");
+                    requestBo.setSign(sign);
+                    requestBo.setStamp(nowTime);
+                    requestBo.setQueryList(collect);
+                    String respone = "";
+                    try {
+                        respone = HttpUtils.sendPost(GET_RESIT_TIMES, JSONObject.parseObject(JSON.toJSONString(requestBo)));
+                        if (!respone.contains("\"Status\":true")) {
+                            throw new CustomException("旧系统查询补考次数接口请求错误!");
+                        }
+                        JSONObject jsonObject = JSONObject.parseObject(respone);
+                        if (ObjectUtils.isNotNull(jsonObject) && ObjectUtils.isNotNull(jsonObject.get("Data"))){
+                            requestVos = JSONArray.parseArray(JSONArray.toJSONString(jsonObject.get("Data")),TopOrderRequestVo.class);
+                        }
+                    } catch (Exception e) {
+                        log.error("旧系统修改备注接口请求错误" + respone);
+                        throw new CustomException("旧系统修改备注接口请求错误");
+                    }
+                }
+                for (TopOldOrderRepDetailVo item : list) {
+                    item.setUserCard(EncryptHandler.decryptTwo(item.getUserCard()));
+                    item.setApplyNum(0);
+                    //补考次数
+                    if (queryBo.getOrderBase() == 1){
+                        TopOldOrder order = getOne(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getOrderSn, queryBo.getOrderSn()));
+                        User user = userService.getByCardNoTenant(EncryptHandler.decrypt(item.getUserCard()));
+                        Order orderOne = orderService.getOne(new LambdaQueryWrapper<Order>()
+                                .eq(Order::getInputOrderSn, order.getInputOrderSn())
+                                .eq(Order::getUserId,user.getUserId())
+                                .last("limit 1"));
+                        if (ObjectUtils.isNotNull(orderOne)){
+                            OrderGoods orderGoodsOne = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>()
+                                    .eq(OrderGoods::getOrderSn, orderOne.getOrderSn())
+                                    .eq(OrderGoods::getGoodsId, item.getGoodsId())
+                                    .ne(OrderGoods::getRefundStatus,2)
+                                    .ne(OrderGoods::getPayStatus,1)
+                                    .last("limit 1"));
+                            if (ObjectUtils.isNotNull(orderGoodsOne)){
+                                int count = userSubscribeService.count(new LambdaQueryWrapper<UserSubscribe>()
+                                        .eq(UserSubscribe::getOrderGoodsId, orderGoodsOne.getOrderGoodsId())
+                                        .eq(UserSubscribe::getSubscribeStatus, 1)
+                                        .ne(UserSubscribe::getExamStatus, 0));
+                                if (count > 0){
+                                    item.setApplyNum(count - 1);
+                                }
+                            }
+                        }
+                    }else if (CollectionUtils.isNotEmpty(requestVos)){
+                        TopOrderRequestVo topOrderRequestVo = requestVos.stream()
+                                .filter(x -> x.getIdNum().equals(item.getUserCard()) && x.getMajorName().equals(item.getMajorName())).findFirst().orElse(null);
+                        if (ObjectUtils.isNotNull(topOrderRequestVo)){
+                            item.setApplyNum(topOrderRequestVo.getCount());
+                        }
+                    }
+                    List<TopOldOrderQuestion> questions = topOldOrderQuestionService
+                            .list(new LambdaQueryWrapper<TopOldOrderQuestion>()
+                                    .eq(TopOldOrderQuestion::getOrderSn, item.getOrderSn())
+                                    .eq(TopOldOrderQuestion::getOrderGoodsId, item.getOrderGoodsId())
+                                    .eq(TopOldOrderQuestion::getStatus, 1));
+                    if (CollectionUtils.isNotEmpty(questions)){
+                        item.setQuestionRecord(questions.size());
+                    }
+                    //退款状态
+                    List<TopOldOrderRefund> oldOrderRefunds = topOldOrderRefundService
+                            .list(new LambdaQueryWrapper<TopOldOrderRefund>()
+                                    .eq(TopOldOrderRefund::getOrderSn, item.getOrderSn())
+                                    .eq(TopOldOrderRefund::getOrderGoodsId, item.getOrderGoodsId())
+                                    .eq(TopOldOrderRefund::getStatus, 1));
+                    if (CollectionUtils.isNotEmpty(oldOrderRefunds) &&
+                            oldOrderRefunds.stream().anyMatch(x -> x.getPeriodStatus() == 3)){
+                        Long refundTime = oldOrderRefunds.stream().filter(x -> x.getPeriodStatus() == 3).findFirst().get().getRefundTime();
+                        item.setRefundStatus(2);
+                        item.setRefundTime(refundTime);
+                    }
+                }
+            }
+        }
+        return list;
+    }
+
+    @Override
+    public boolean editOrderRepList(TopOrderRepEditBo editBo) {
+        TopOldOrder orderBySn = baseMapper.getOrderBySn(editBo.getOrderSn());
+        if (ObjectUtils.isNull(orderBySn)){
+            throw new CustomException("订单号不存在!");
+        }
+        TopOldOrderReplenish replenish = topOldOrderReplenishService
+                .getOne(new LambdaQueryWrapper<TopOldOrderReplenish>()
+                .eq(TopOldOrderReplenish::getOrderSn, editBo.getOrderSn())
+                .last("limit 1"));
+        if (ObjectUtils.isNull(replenish)){
+            //新增
+            TopOldOrderReplenish orderReplenish = new TopOldOrderReplenish();
+            orderReplenish.setOrderSn(editBo.getOrderSn());
+            orderReplenish.setOrderFrom(orderBySn.getOrderFrom());
+            orderReplenish.setProceedsRecord(editBo.getProceedsRecord());
+            orderReplenish.setIntegral(editBo.getIntegral());
+            orderReplenish.setProceedsDate(editBo.getProceedsDate());
+            orderReplenish.setProceedsCheckDate(editBo.getProceedsCheckDate());
+            orderReplenish.setProceedsChange(editBo.getProceedsChange());
+            orderReplenish.setCost(editBo.getCost());
+            //每月收款记录
+            if (CollectionUtils.isNotEmpty(editBo.getProceedsJson())){
+                //总收款
+                BigDecimal reduce = editBo.getProceedsJson().values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
+                //未收
+                orderReplenish.setOrderResidue(orderBySn.getOrderPrice().subtract(reduce));
+                orderReplenish.setProceedsJson(JSON.toJSONString(editBo.getProceedsJson()));
+            }
+            orderReplenish.setStatus(1);
+            orderReplenish.setCreateTime(DateUtils.getNowTime());
+            orderReplenish.setUpdateTime(DateUtils.getNowTime());
+            topOldOrderReplenishService.save(orderReplenish);
+        }else {
+            //修改
+            replenish.setOrderSn(editBo.getOrderSn());
+            replenish.setOrderFrom(orderBySn.getOrderFrom());
+            replenish.setProceedsRecord(editBo.getProceedsRecord());
+            replenish.setIntegral(editBo.getIntegral());
+            replenish.setProceedsDate(editBo.getProceedsDate());
+            replenish.setProceedsCheckDate(editBo.getProceedsCheckDate());
+            replenish.setProceedsChange(editBo.getProceedsChange());
+            replenish.setCost(editBo.getCost());
+            //每月收款记录
+            if (CollectionUtils.isNotEmpty(editBo.getProceedsJson())){
+                if (StringUtils.isNotBlank(replenish.getProceedsJson())){
+                    Map map = JSON.parseObject(replenish.getProceedsJson(), Map.class);
+                    editBo.getProceedsJson().forEach((k,v) -> {
+                        map.put(k,v);
+                    });
+                    //总收款
+                    BigDecimal reduce = new BigDecimal("0.00");
+                    for (Object value : map.values()) {
+                        reduce = reduce.add(new BigDecimal(value.toString()));
+                    }
+                    //未收
+                    replenish.setOrderResidue(orderBySn.getOrderPrice().subtract(reduce));
+                    replenish.setProceedsJson(JSON.toJSONString(map));
+                }else {
+                    //总收款
+                    BigDecimal reduce = editBo.getProceedsJson().values().stream().reduce(BigDecimal.ZERO, BigDecimal::add);
+                    //未收
+                    replenish.setOrderResidue(orderBySn.getOrderPrice().subtract(reduce));
+                    replenish.setProceedsJson(JSON.toJSONString(editBo.getProceedsJson()));
+                }
+
+            }
+            replenish.setUpdateTime(DateUtils.getNowTime());
+            topOldOrderReplenishService.updateById(replenish);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean editOrderRepDetail(TopOrderRepDetailEditBo editBo) {
+        TopOldOrder oldOrder = baseMapper.getOrderBySn(editBo.getOrderSn());
+        if (ObjectUtils.isNull(oldOrder)){
+            throw new CustomException("订单查询有误");
+        }
+        if (oldOrder.getOrderFrom() == 1){
+            orderGoodsService.update(new LambdaUpdateWrapper<OrderGoods>()
+                    .eq(OrderGoods::getOrderSn,editBo.getOrderSn())
+                    .eq(OrderGoods::getOrderGoodsId,editBo.getOrderGoodsId())
+                    .set(ObjectUtils.isNotNull(editBo.getFinishTime()),OrderGoods::getFinishTime,editBo.getFinishTime())
+                    .set(ObjectUtils.isNotNull(editBo.getAcquireTime()),OrderGoods::getAcquireTime,editBo.getAcquireTime())
+                    .set(ObjectUtils.isNotNull(editBo.getPublicityTime()),OrderGoods::getPublicityTime,editBo.getPublicityTime())
+            );
+        }else {
+            topOrderGoodsService.update(new LambdaUpdateWrapper<TopOldOrderGoods>()
+                    .eq(TopOldOrderGoods::getOrderSn,editBo.getOrderSn())
+                    .eq(TopOldOrderGoods::getOrderGoodsId,editBo.getOrderGoodsId())
+                    .set(ObjectUtils.isNotNull(editBo.getFinishTime()),TopOldOrderGoods::getFinishTime,editBo.getFinishTime())
+                    .set(ObjectUtils.isNotNull(editBo.getAcquireTime()),TopOldOrderGoods::getAcquireTime,editBo.getAcquireTime())
+                    .set(ObjectUtils.isNotNull(editBo.getPublicityTime()),TopOldOrderGoods::getPublicityTime,editBo.getPublicityTime())
+            );
+
+        }
+        return true;
+    }
+
+    @Override
+    public List<TopOldOrderQuestionVo> getOrderQuestionList(TopRepQuestionQueryBo queryBo) {
+        List<TopOldOrderQuestion> questions = topOldOrderQuestionService
+                .list(new LambdaQueryWrapper<TopOldOrderQuestion>()
+                .eq(TopOldOrderQuestion::getOrderSn, queryBo.getOrderSn())
+                .eq(TopOldOrderQuestion::getOrderGoodsId, queryBo.getOrderGoodsId())
+                .eq(TopOldOrderQuestion::getStatus, 1));
+        if (CollectionUtils.isEmpty(questions)){
+            return new ArrayList<>();
+        }
+        TopOldOrder orderBySn = baseMapper.getOrderBySn(queryBo.getOrderSn());
+        String majorName = "";
+        String eduName = "";
+        String businessName = "";
+        String userName = "";
+        String userCard = "";
+        if (orderBySn.getOrderFrom() == 1){
+            OrderGoods orderGoods = orderGoodsService.getById(queryBo.getOrderGoodsId());
+            Goods goods = goodsService.getById(orderGoods.getGoodsId());
+            Major major = majorService.getById(goods.getMajorId());
+            majorName = major.getCategoryName();
+            CourseEducationType educationType = courseEducationTypeService.getById(goods.getEducationTypeId());
+            eduName = educationType.getEducationName();
+            CourseProjectType projectType = courseProjectTypeService.getById(goods.getProjectId());
+            CourseBusiness business = courseBusinessService.getById(goods.getBusinessId());
+            businessName = business.getBusinessName()+projectType.getProjectName();
+            Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, queryBo.getOrderSn()));
+            User user = userService.getById(order.getUserId());
+            userCard = EncryptHandler.decryptTwo(user.getIdCard());
+            userName = user.getRealname();
+        }else {
+            TopOldOrderGoods orderGoods = topOrderGoodsService.getById(queryBo.getOrderGoodsId());
+            majorName = orderGoods.getMajorName();
+            String businessFullName = orderGoods.getBusinessFullName();
+            eduName = businessFullName.substring(4,8);
+            businessName = businessFullName.substring(8);
+            userCard = EncryptHandler.decryptTwo(orderGoods.getUserCard());
+            userName = orderGoods.getUserName();
+        }
+
+        List<TopOldOrderQuestionVo> resultList = new ArrayList<>();
+        for (TopOldOrderQuestion s : questions) {
+            TopOldOrderQuestionVo questionVo = new TopOldOrderQuestionVo();
+            questionVo.setId(s.getId());
+            questionVo.setUserName(userName);
+            questionVo.setUserCard(userCard);
+            questionVo.setBusinessName(businessName);
+            questionVo.setEduName(eduName);
+            questionVo.setOrderSn(s.getOrderSn());
+            questionVo.setOrderGoodsId(s.getOrderGoodsId());
+            questionVo.setMajorName(majorName);
+            questionVo.setOpenDate(s.getOpenDate());
+            questionVo.setRemark(s.getRemark());
+            resultList.add(questionVo);
+        }
+        return resultList;
+    }
+
+    @Override
+    public TopOldOrderQuestionVo getOrderQuestionDetail(TopRepQuestionQueryBo queryBo) {
+        TopOldOrderQuestionVo vo = new TopOldOrderQuestionVo();
+        TopOldOrder orderBySn = baseMapper.getOrderBySn(queryBo.getOrderSn());
+        String majorName = "";
+        String eduName = "";
+        String businessName = "";
+        String userName = "";
+        String userCard = "";
+        if (orderBySn.getOrderFrom() == 1){
+            OrderGoods orderGoods = orderGoodsService.getById(queryBo.getOrderGoodsId());
+            Goods goods = goodsService.getById(orderGoods.getGoodsId());
+            Major major = majorService.getById(goods.getMajorId());
+            majorName = major.getCategoryName();
+            CourseEducationType educationType = courseEducationTypeService.getById(goods.getEducationTypeId());
+            eduName = educationType.getEducationName();
+            CourseProjectType projectType = courseProjectTypeService.getById(goods.getProjectId());
+            CourseBusiness business = courseBusinessService.getById(goods.getBusinessId());
+            businessName = business.getBusinessName()+projectType.getProjectName();
+            Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, queryBo.getOrderSn()));
+            User user = userService.getById(order.getUserId());
+            userName = user.getRealname();
+            userCard = EncryptHandler.decryptTwo(user.getIdCard());
+        }else {
+            TopOldOrderGoods orderGoods = topOrderGoodsService.getById(queryBo.getOrderGoodsId());
+            majorName = orderGoods.getMajorName();
+            String businessFullName = orderGoods.getBusinessFullName();
+            eduName = businessFullName.substring(4,8);
+            businessName = businessFullName.substring(8);
+            userName = orderGoods.getUserName();
+            userCard = EncryptHandler.decryptTwo(orderGoods.getUserCard());
+        }
+        vo.setUserName(userName);
+        vo.setUserCard(userCard);
+        vo.setBusinessName(businessName);
+        vo.setEduName(eduName);
+        vo.setOrderSn(queryBo.getOrderSn());
+        vo.setOrderGoodsId(queryBo.getOrderGoodsId());
+        vo.setMajorName(majorName);
+        return vo;
+    }
+
+    @Override
+    public boolean saveOrderQuestion(TopOrderRepQuestionBo bo) {
+        TopOldOrderQuestion question = BeanUtil.toBean(bo, TopOldOrderQuestion.class);
+        question.setStatus(1);
+        question.setCreateTime(DateUtils.getNowTime());
+        question.setUpdateTime(DateUtils.getNowTime());
+        return topOldOrderQuestionService.save(question);
+    }
+
+    @Override
+    public boolean delOrderQuestion(Long id) {
+        TopOldOrderQuestion orderQuestion = topOldOrderQuestionService.getById(id);
+        if (ObjectUtils.isNull(orderQuestion)){
+            throw new CustomException("数据有误!");
+        }
+        orderQuestion.setStatus(0);
+        return topOldOrderQuestionService.updateById(orderQuestion);
+    }
+
     private List<Long> getDayTime(Long startTime,Long endTime){
         List<Long> tiemList = new ArrayList<>();
         Long zeroTime = DateUtils.getScheduleTimeZeroTime(startTime);

+ 31 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepDetailEditBo.java

@@ -0,0 +1,31 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Map;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRepDetailEditBo implements Serializable {
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+
+    @ApiModelProperty("完成日期")
+    private Long finishTime;
+
+    @ApiModelProperty("公示日期")
+    private Long publicityTime;
+
+    @ApiModelProperty("领证日期")
+    private Long acquireTime;
+}

+ 35 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepEditBo.java

@@ -0,0 +1,35 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRepEditBo implements Serializable {
+
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    @ApiModelProperty("每月收款记录")
+    private Map<String, BigDecimal> proceedsJson;
+    @ApiModelProperty("收款记录")
+    private String proceedsRecord;
+    @ApiModelProperty("积分")
+    private Integer integral;
+    @ApiModelProperty("日期")
+    private Long proceedsDate;
+    @ApiModelProperty("收入核对日期")
+    private Long proceedsCheckDate;
+    @ApiModelProperty("变化")
+    private String proceedsChange;
+    @ApiModelProperty("成本支付")
+    private BigDecimal cost;
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepGoodsQueryBo.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRepGoodsQueryBo implements Serializable {
+
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+    /** 排序列 */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+    /** 排序的方向desc或者asc */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    @ApiModelProperty("订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单,4新系统后台题库订单,5新B端订单")
+    private Integer orderForm;
+    @ApiModelProperty("底单:1新系统,2旧系统")
+    private Integer orderBase;
+    @ApiModelProperty("C端订单过滤时间")
+    private Long filtrationTime = 1685449126L;
+}

+ 56 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepQueryBo.java

@@ -0,0 +1,56 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRepQueryBo implements Serializable {
+
+    /** 分页大小 */
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+    /** 排序列 */
+    @ApiModelProperty("排序列")
+    private String orderByColumn;
+    /** 排序的方向desc或者asc */
+    @ApiModelProperty(value = "排序的方向", example = "asc,desc")
+    private String isAsc;
+
+    @ApiModelProperty("当前登入人员ID")
+    private Long loginId;
+    @ApiModelProperty("教育类型ID")
+    private Long educationTypeId;
+    @ApiModelProperty("业务层次ID")
+    private Long businessId;
+    @ApiModelProperty("业务名称")
+    private String businessFullName;
+    @ApiModelProperty("订单来源")
+    private String orderOrg;
+    @ApiModelProperty("账款状态:0未结清,1已结清")
+    private Integer creditStatus;
+    @ApiModelProperty("开始时间")
+    private Long startTime;
+    @ApiModelProperty("结束时间")
+    private Long endTime;
+    @ApiModelProperty("审核开始时间")
+    private Long checkStartTime;
+    @ApiModelProperty("审核结束时间")
+    private Long checkEndTime;
+    @ApiModelProperty("关键字")
+    private String keyword;
+    @ApiModelProperty("身份证")
+    private String userCard;
+    @ApiModelProperty("姓名")
+    private String userName;
+    @ApiModelProperty("C端订单过滤时间")
+    private Long filtrationTime = 1685449126L;
+}

+ 27 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRepQuestionBo.java

@@ -0,0 +1,27 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Map;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRepQuestionBo implements Serializable {
+
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+    @ApiModelProperty("开通时间")
+    private Long openDate;
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRequestBo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRequestBo implements Serializable {
+
+    private Long stamp;
+
+    private String sign;
+
+    private List<TopOrderRequestDetailBo> queryList;
+
+}

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderRequestDetailBo.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRequestDetailBo implements Serializable {
+
+    private String idNum;
+
+    private String majorName;
+
+}

+ 25 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopRepQuestionQueryBo.java

@@ -0,0 +1,25 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopRepQuestionQueryBo implements Serializable {
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
+    @ApiModelProperty("名称")
+    private String userName;
+    @ApiModelProperty("身份证")
+    private String userCard;
+    @ApiModelProperty("关键字")
+    private String keyword;
+}

+ 40 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOldOrderQuestion.java

@@ -0,0 +1,40 @@
+package com.zhongzheng.modules.top.order.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 14:48
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_old_order_question")
+public class TopOldOrderQuestion implements Serializable {
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 订单编号 */
+    private String orderSn;
+    /** 订单商品ID */
+    private Long orderGoodsId;
+    /** 开通日期 */
+    private Long openDate;
+    /** 备注 */
+    private String remark;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+}

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOldOrderReplenish.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.top.order.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 14:48
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_old_order_replenish")
+public class TopOldOrderReplenish implements Serializable {
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 订单编号 */
+    private String orderSn;
+    /** 订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单,4新系统后台题库订单,5新B端订单 */
+    private Integer orderFrom;
+    /** 收款json */
+    private String proceedsJson;
+    /** 收款记录 */
+    private String proceedsRecord;
+    /** 积分*/
+    private Integer integral;
+    /** 日期 */
+    private Long proceedsDate;
+    /** 收入核对日期 */
+    private Long proceedsCheckDate;
+    /** 未收(订单明细用) */
+    private BigDecimal orderResidue;
+    /** 变化 */
+    private String proceedsChange;
+    /** 成本支付 */
+    private BigDecimal cost;
+    /** 1有效 0无效 */
+    private Integer status;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+}

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOldOrderQuestionMapper.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.modules.top.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderQuestion;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderReplenish;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface TopOldOrderQuestionMapper extends BaseMapper<TopOldOrderQuestion> {
+
+}

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOldOrderReplenishMapper.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.top.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.TopAcceptanceOrderBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderAcceptanceBo;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderReplenish;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+
+import java.util.List;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface TopOldOrderReplenishMapper extends BaseMapper<TopOldOrderReplenish> {
+
+}

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOldOrderQuestionService.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.modules.top.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderQuestion;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderReplenish;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface ITopOldOrderQuestionService extends IService<TopOldOrderQuestion> {
+
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOldOrderReplenishService.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.top.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderReplenish;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface ITopOldOrderReplenishService extends IService<TopOldOrderReplenish> {
+
+}

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOldOrderQuestionServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.top.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderQuestion;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderReplenish;
+import com.zhongzheng.modules.top.order.mapper.TopOldOrderQuestionMapper;
+import com.zhongzheng.modules.top.order.mapper.TopOldOrderReplenishMapper;
+import com.zhongzheng.modules.top.order.service.ITopOldOrderQuestionService;
+import com.zhongzheng.modules.top.order.service.ITopOldOrderReplenishService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:04
+ */
+@Service
+public class TopOldOrderQuestionServiceImpl extends ServiceImpl<TopOldOrderQuestionMapper, TopOldOrderQuestion> implements ITopOldOrderQuestionService {
+}

+ 18 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOldOrderReplenishServiceImpl.java

@@ -0,0 +1,18 @@
+package com.zhongzheng.modules.top.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.top.order.domain.TopOldOrderReplenish;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+import com.zhongzheng.modules.top.order.mapper.TopOldOrderReplenishMapper;
+import com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceRelMapper;
+import com.zhongzheng.modules.top.order.service.ITopOldOrderReplenishService;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceRelService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:04
+ */
+@Service
+public class TopOldOrderReplenishServiceImpl extends ServiceImpl<TopOldOrderReplenishMapper, TopOldOrderReplenish> implements ITopOldOrderReplenishService {
+}

+ 54 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderQuestionVo.java

@@ -0,0 +1,54 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+
+/**
+ * 订单视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Data
+@ApiModel("订单视图对象")
+public class TopOldOrderQuestionVo implements Serializable {
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	/** 订单编号 */
+	@ApiModelProperty("订单编号")
+	private String orderSn;
+
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
+
+	@ApiModelProperty("订单商品ID")
+	private Long goodsId;
+
+	@ApiModelProperty("姓名")
+	private String userName;
+
+	@ApiModelProperty("身份证号")
+	private String userCard;
+
+	@ApiModelProperty("教育类型")
+	private String eduName;
+
+	@ApiModelProperty("业务类型")
+	private String businessName;
+
+	@ApiModelProperty("专业")
+	private String majorName;
+
+	@ApiModelProperty("开通时间")
+	private Long openDate;
+
+	@ApiModelProperty("备注")
+	private String remark;
+
+}

+ 75 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderRepDetailVo.java

@@ -0,0 +1,75 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 订单视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Data
+@ApiModel("订单视图对象")
+public class TopOldOrderRepDetailVo {
+	private static final long serialVersionUID = 1L;
+
+	/** 订单编号 */
+	@ApiModelProperty("订单编号")
+	private String orderSn;
+
+	@ApiModelProperty("订单商品ID")
+	private Long orderGoodsId;
+
+	@ApiModelProperty("订单商品ID")
+	private Long goodsId;
+
+	@ApiModelProperty("姓名")
+	private String userName;
+
+	@ApiModelProperty("性别 1男 2女")
+	private Integer sex;
+
+	@ApiModelProperty("身份证号")
+	private String userCard;
+
+	@ApiModelProperty("商品名称")
+	private String goodsName;
+
+	@ApiModelProperty("年份")
+	private String goodsYear;
+
+	@ApiModelProperty("专业")
+	private String majorName;
+
+	@ApiModelProperty("成交单价")
+	private BigDecimal goodsPrice;
+
+	@ApiModelProperty("完成日期")
+	private Long finishTime;
+
+	@ApiModelProperty("公示日期")
+	private Long publicityTime;
+
+	@ApiModelProperty("领证日期")
+	private Long acquireTime;
+
+	@ApiModelProperty("补考次数")
+	private Integer applyNum;
+
+	@ApiModelProperty("题库记录")
+	private Integer questionRecord;
+
+	@ApiModelProperty("状态 1正常 2已退款 ")
+	private Integer refundStatus;
+
+	@ApiModelProperty("退款时间")
+	private Long refundTime;
+
+}

+ 126 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderRepVo.java

@@ -0,0 +1,126 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 订单视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Data
+@ApiModel("订单视图对象")
+public class TopOldOrderRepVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long orderId;
+
+	/** 订单编号 */
+	@ApiModelProperty("订单编号")
+	private String orderSn;
+
+	@ApiModelProperty("订单来源")
+	private String orderOrg;
+
+	@ApiModelProperty("底单:1新系统,2旧系统")
+	private Integer orderBase;
+
+	@ApiModelProperty("订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单,4新系统后台题库订单,5新B端订单")
+	private Integer orderFrom;
+
+	@ApiModelProperty("申请时间")
+	private Long orderTime;
+
+	@ApiModelProperty("审核时间")
+	private Long checkTime;
+
+	@ApiModelProperty("业务员名称")
+	private String createUsername;
+
+	@ApiModelProperty("业务号")
+	private String createNo;
+
+	@ApiModelProperty("所属机构")
+	private String tenantName;
+
+	@ApiModelProperty("所属客户")
+	private String purchaseOrg;
+
+	@ApiModelProperty("业务类型简称")
+	private String businessAbbreviation;
+
+	@ApiModelProperty("教育类型")
+	private String businessFullName;
+
+	@ApiModelProperty("教育类型")
+	private String eduName;
+
+	@ApiModelProperty("业务类型")
+	private String businessName;
+
+	@ApiModelProperty("成交单价")
+	private BigDecimal unitPrice;
+
+	@ApiModelProperty("成交数量")
+	private Integer concludeNum;
+
+	@ApiModelProperty("成交总价")
+	private BigDecimal priceTotal;
+
+	@ApiModelProperty("收款JSON")
+	private Map<String, BigDecimal> proceedsJsonMap;
+
+	@ApiModelProperty("已收")
+	private BigDecimal received;
+
+	@ApiModelProperty("已退")
+	private BigDecimal refunded;
+
+	@ApiModelProperty("实际")
+	private BigDecimal practical;
+
+	@ApiModelProperty("未收")
+	private BigDecimal uncollected;
+
+	@ApiModelProperty("收款记录")
+	private String proceedsRecord;
+
+	@ApiModelProperty("发票申请日期")
+	private String invoiceApplyTime;
+
+	@ApiModelProperty("发票类型")
+	private String invoiceType;
+
+	@ApiModelProperty("积分")
+	private Integer integral;
+
+	@ApiModelProperty("日期")
+	private Long proceedsDate;
+
+	@ApiModelProperty("收入核对日期")
+	private Long proceedsCheckDate;
+
+	@ApiModelProperty("变化")
+	private String proceedsChange;
+
+	@ApiModelProperty("成本支付")
+	private BigDecimal cost;
+
+	@ApiModelProperty("1有效 0无效")
+	private Integer status;
+
+	private Long createTime;
+
+	private Long updateTime;
+
+}

+ 20 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderRequestVo.java

@@ -0,0 +1,20 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2024年05月28日 15:54
+ */
+@Data
+public class TopOrderRequestVo implements Serializable {
+
+    private String idNum;
+
+    private String majorName;
+
+    private Integer count;
+
+}

+ 29 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderGoodsMapper.xml

@@ -1001,4 +1001,33 @@
         UPDATE order_goods SET course_num = #{courseNum}, exam_num = #{examNum} WHERE order_goods_id = #{orderGoodsId}
     </update>
 
+    <select id="listRepByOrderSn" parameterType="com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo"
+            resultType="com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo">
+        SELECT
+            og.order_sn
+            og.order_goods_id,
+            og.goods_id,
+            u.user_id,
+            u.realname as userName,
+            u.sex,
+            u.id_card,
+            g.goods_name,
+            og.goods_price,
+            og.goods_year,
+            m.category_name as majorName,
+            og.refund_status,
+            og.finish_time,
+            og.publicity_time,
+            og.acquire_time,
+            (SELECT ogr.refund_time FROM order_goods_refund ogr WHERE ogr.order_goods_id = og.order_goods_id AND ogr.`status` = 1 AND ogr.period_status = 3 LIMIT 1) AS refund_time
+        FROM
+            order_goods og
+                LEFT JOIN goods g ON og.goods_id = g.goods_id
+                LEFT JOIN `order` o ON og.order_sn = o.order_sn
+                LEFT JOIN `user` u ON o.user_id = u.user_id
+                LEFT JOIN major m ON g.major_id = m.id
+        WHERE
+            og.order_sn = #{orderSn}
+          AND og.`status` = 1
+    </select>
 </mapper>

+ 23 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderGoodsMapper.xml

@@ -101,4 +101,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           ORDER BY check_status ASC
     </select>
 
+    <select id="listRepByOrderSn" parameterType="com.zhongzheng.modules.top.order.bo.TopOrderRepGoodsQueryBo"
+            resultType="com.zhongzheng.modules.top.order.vo.TopOldOrderRepDetailVo">
+        SELECT
+        order_sn,
+        order_goods_id,
+        goods_id,
+        user_name,
+        user_sex,
+        user_card,
+        goods_name,
+        major_name,
+        finish_time,
+        publicity_time,
+        acquire_time,
+        goods_real_price as goodsPrice,
+        goods_year
+        FROM
+        top_old_order_goods
+        WHERE
+        order_sn = #{orderSn}
+        AND `status` = 1
+    </select>
+
 </mapper>

+ 183 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

@@ -2635,4 +2635,187 @@
             create_sys_user_id,
             create_username
     </select>
+
+    <select id="queryOrderRepList" parameterType="com.zhongzheng.modules.top.order.bo.TopOrderRepQueryBo"
+            resultType="com.zhongzheng.modules.top.order.vo.TopOldOrderRepVo">
+        SELECT
+            vto.order_id,
+            vto.order_org,
+            vto.order_sn,
+            vto.order_from,
+            vto.order_base,
+            vto.create_time as orderTime,
+            vto.check_time,
+            vto.create_username,
+            vto.create_no,
+            vto.tenant_name,
+            vto.purchase_org,
+            vto.business_full_name,
+            vto.order_price as priceTotal
+        FROM
+        <if test="((userCard != null and userCard != '') or (userName != null and userName != ''))">
+            ( SELECT DISTINCT order_sn
+            FROM `v_top_order_card` where 1=1
+            <if test="userCard != null and userCard != ''">
+                AND user_card = #{userCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
+            </if>
+            <if test="userName != null and userName != ''">
+                AND user_name LIKE CONCAT( '%', #{userName}, '%' )
+            </if>
+            ) a
+            LEFT JOIN v_top_order vto ON a.order_sn = vto.order_sn
+        </if>
+        <if test="(userCard == null or userCard == '') and (userName == null or userName == '')">
+            v_top_order vto
+        </if>
+        WHERE vto.`status` in (0,1) AND vto.operation_type = 1 AND vto.check_status = 1
+        <if test="businessFullName != null and businessFullName != ''">
+            AND INSTR(vto.business_full_name,#{businessFullName})
+        </if>
+        <if test="creditStatus != null and creditStatus == 0">
+            AND (SELECT IFNULL(SUM(order_residue),1) FROM top_old_order_replenish tor WHERE tor.order_sn = vto.order_sn ) <![CDATA[ > ]]> 0
+        </if>
+        <if test="creditStatus != null and creditStatus == 1">
+            AND (SELECT IFNULL(SUM(order_residue),1) FROM top_old_order_replenish tor WHERE tor.order_sn = vto.order_sn ) <![CDATA[ <= ]]> 0
+        </if>
+        <if test="orderOrg != null and orderOrg != ''">
+            AND vto.order_org  = #{orderOrg}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND vto.create_time <![CDATA[ >= ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND vto.create_time <![CDATA[ <= ]]> #{endTime}
+        </if>
+        <if test="checkStartTime != null and checkStartTime != ''">
+            AND vto.check_time <![CDATA[ >= ]]> #{checkStartTime}
+        </if>
+        <if test="checkEndTime != null and checkEndTime != ''">
+            AND vto.check_time <![CDATA[ <= ]]> #{checkEndTime}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            AND (
+            vto.order_sn LIKE CONCAT( '%', #{keyword}, '%' )
+            OR vto.create_no LIKE CONCAT( '%', #{keyword}, '%' )
+            OR vto.create_username LIKE CONCAT( '%', #{keyword}, '%' )
+            OR vto.purchase_org LIKE CONCAT( '%', #{keyword}, '%' ))
+        </if>
+        order by vto.update_time DESC
+    </select>
+
+    <select id="queryOrderRepList_COUNT" resultType="Long">
+        SELECT
+        ((SELECT
+        COUNT( DISTINCT ot.order_sn ) AS num
+        FROM
+        top_old_order ot
+        LEFT JOIN top_old_order_goods otg ON ot.order_sn = otg.order_sn
+        WHERE
+        1 = 1 AND ot.`status` = 1 AND ot.operation_type = 1 AND ot.check_status = 1
+        <if test="businessFullName != null and businessFullName != ''">
+            AND INSTR( otg.business_full_name , #{businessFullName} ) > 0
+        </if>
+        <if test="userCard != null and userCard != ''">
+            AND otg.user_card = #{userCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
+        </if>
+        <if test="userName != null and userName != ''">
+            AND otg.user_name LIKE CONCAT( '%', #{userName}, '%' )
+        </if>
+        <if test="orderOrg != null and orderOrg != ''">
+            AND ot.order_org = #{orderOrg}
+        </if>
+        <if test="checkStartTime != null and checkStartTime != ''">
+            AND ot.check_time <![CDATA[ >= ]]> #{checkStartTime}
+        </if>
+        <if test="checkEndTime != null and checkEndTime != ''">
+            AND ot.check_time <![CDATA[ <= ]]> #{checkEndTime}
+        </if>
+        <if test="creditStatus != null and creditStatus == 0">
+            AND (SELECT IFNULL(SUM(order_residue),1) FROM top_old_order_replenish tor WHERE tor.order_sn = ot.order_sn ) <![CDATA[ > ]]> 0
+        </if>
+        <if test="creditStatus != null and creditStatus == 1">
+            AND (SELECT IFNULL(SUM(order_residue),1) FROM top_old_order_replenish tor WHERE tor.order_sn = ot.order_sn ) <![CDATA[ <= ]]> 0
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND ot.create_time <![CDATA[ >= ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND ot.create_time <![CDATA[ <= ]]> #{endTime}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            AND (
+            ot.order_sn LIKE CONCAT( '%', #{keyword}, '%' )
+            OR ot.create_no LIKE CONCAT( '%', #{keyword}, '%' )
+            OR ot.create_username LIKE CONCAT( '%', #{keyword}, '%' )
+            OR ot.purchase_org LIKE CONCAT( '%', #{keyword}, '%' ))
+        </if>
+        ) + (SELECT
+        COUNT( DISTINCT o.order_sn ) AS num
+        FROM
+        `order` o
+        LEFT JOIN order_goods og ON o.order_sn = og.order_sn
+        LEFT JOIN `user` u ON o.user_id = u.user_id
+        WHERE
+        1 = 1 AND o.`status` IN (0,1)
+        AND ( `o`.`order_type` != 4 )
+        AND ( `o`.`org_sign` != 1 )
+        AND o.operation_type = 1
+        AND o.check_status = 1
+        <if test="businessFullName != null and businessFullName != ''">
+            AND (
+            SELECT
+            COUNT(g.goods_id)
+            FROM
+            goods g
+            LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+            LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+            LEFT JOIN course_business cb ON g.business_id = cb.id
+            WHERE
+            og.goods_id = g.goods_id
+            AND
+            INSTR( CONCAT('学校业务', cet.education_name, cb.business_name, cpt.project_name),#{businessFullName}) > 0) > 0
+        </if>
+        <if test="userCard != null and userCard != ''">
+            AND u.id_card = #{userCard,typeHandler=com.zhongzheng.common.type.EncryptHandler}
+        </if>
+        <if test="userName != null and userName != ''">
+            AND u.realname LIKE CONCAT( '%', #{userName}, '%' )
+        </if>
+        <choose>
+            <when test="orderOrg != null and orderOrg != '' and orderOrg == 'C端云学堂线上'">
+                AND o.input_order_sn IS NULL
+            </when>
+            <when test="orderOrg != null and orderOrg != '' and orderOrg == 'C端云学堂线下'">
+                AND o.input_order_sn IS NOT NULL
+            </when>
+            <when test="orderOrg != null and orderOrg != ''">
+                AND o.order_org = #{orderOrg}
+            </when>
+        </choose>
+        <if test="checkStartTime != null and checkStartTime != ''">
+            AND o.pay_time <![CDATA[ >= ]]> #{checkStartTime}
+        </if>
+        <if test="checkEndTime != null and checkEndTime != ''">
+            AND o.pay_time <![CDATA[ <= ]]> #{checkEndTime}
+        </if>
+        <if test="creditStatus != null and creditStatus == 0">
+            AND (SELECT IFNULL(SUM(order_residue),1) FROM top_old_order_replenish tor WHERE tor.order_sn = o.order_sn ) <![CDATA[ > ]]> 0
+        </if>
+        <if test="creditStatus != null and creditStatus == 1">
+            AND (SELECT IFNULL(SUM(order_residue),1) FROM top_old_order_replenish tor WHERE tor.order_sn = o.order_sn ) <![CDATA[ <= ]]> 0
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND o.create_time <![CDATA[ >= ]]> #{startTime}
+        </if>
+        <if test="startTime == null">
+            AND o.create_time <![CDATA[ > ]]> #{filtrationTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND o.create_time <![CDATA[ <= ]]> #{endTime}
+        </if>
+        <if test="keyword != null and keyword != ''">
+            AND o.order_sn LIKE CONCAT( '%', #{keyword}, '%' )
+        </if>
+        )) as number
+    </select>
 </mapper>