he2802 2 years ago
parent
commit
100590484e
20 changed files with 504 additions and 29 deletions
  1. 13 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java
  2. 1 1
      zhongzheng-admin/src/main/resources/templates/wordPhone.ftl
  3. 1 1
      zhongzheng-api/src/main/java/com/zhongzheng/controller/base/ProfileTpController.java
  4. 22 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java
  5. 19 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  6. 92 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java
  7. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java
  8. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserVo.java
  9. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java
  10. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/questionOpenBo.java
  11. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderGoods.java
  12. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderInput.java
  13. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderGoodsService.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderInputService.java
  15. 3 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  16. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  17. 108 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderInputServiceImpl.java
  18. 163 11
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  19. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderAddBo.java
  20. 23 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

+ 13 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -170,4 +170,17 @@ public class OrderController extends BaseController {
         return AjaxResult.success(map);
     }
 
+    /**
+     * 七大员题库商品开通
+     */
+    @ApiOperation("七大员题库商品开通")
+    @PostMapping("/question/open")
+    public AjaxResult<Void> questionGoodsOpen(@RequestBody questionOpenBo bo) {
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        bo.setCreateSysUserId(loginUser.getUser().getUserId());
+        bo.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(iOrderService.questionGoodsOpen(bo) ? 1 : 0);
+    }
+
+
 }

+ 1 - 1
zhongzheng-admin/src/main/resources/templates/wordPhone.ftl

@@ -49,7 +49,7 @@
 		<table border="1" class="tabsty">
 			<tr>
 				<td class="strong">姓 名</td>
-				<td>${name}</td>
+				<td>${username}</td>
 				<td class="strong">性别</td>
 				<td>${s}</td>
 				<td class="strong">培训岗位</td>

+ 1 - 1
zhongzheng-api/src/main/java/com/zhongzheng/controller/base/ProfileTpController.java

@@ -70,7 +70,7 @@ public class ProfileTpController extends BaseController {
      */
     @ApiOperation("学员上传承诺书")
     @PostMapping("/commitment/upload")
-    public AjaxResult<Void> commitmentSealUpload(CommitmentSealBo bo) {
+    public AjaxResult<Void> commitmentSealUpload(@RequestBody CommitmentSealBo bo) {
         ClientLoginUser loginUser = wxTokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
         return toAjax(iProfileTpService.commitmentSealUpload(bo) ? 1:0 );

+ 22 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/utils/DateUtils.java

@@ -542,6 +542,28 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
     }
 
 
+    public static Long getAppointTime(Long millisecond, Integer day) {
+        for (Integer i = 0; i < day; i++) {
+            Long dayAfter = getDayBefore(millisecond, 1);
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(timeToDate(dayAfter));
+            int index = calendar.get(Calendar.DAY_OF_WEEK) - 1;
+            String[] weeks = new String[]{"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
+
+            if (weeks[index].equals("星期六") || weeks[index].equals("星期天")) {
+                day += 1;
+
+            }
+            //判断当前是否为工作日
+            if (!isWorkingDay(dayAfter)) {
+                day += 1;
+            }
+            millisecond = dayAfter;
+        }
+
+        return millisecond;
+    }
+
     /**
      * 指定时间往前或往后推n天
      *

+ 19 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -31,8 +31,10 @@ import com.zhongzheng.modules.exam.domain.*;
 import com.zhongzheng.modules.exam.service.*;
 import com.zhongzheng.modules.exam.vo.ExamApplyGoodsVo;
 import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
+import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.GoodsCourse;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
+import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodStatusVo;
 import com.zhongzheng.modules.goods.vo.GoodsPeriodVo;
 import com.zhongzheng.modules.goods.vo.GoodsUserVo;
@@ -127,6 +129,8 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
 
     @Autowired
     private IUserProfileService iUserProfileService;
+    @Autowired
+    private IGoodsService iGoodsService;
 
 
 
@@ -462,7 +466,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             if(Validator.isNotEmpty(fullName)){
                 if(fullName.equals("继续教育二级建造师")||fullName.equals("继续教育二级造价师")){
                     goodsUserVo.setErJianErZao(true);
-                }else if (fullName.contains("考前培训施工现场专业人员")){
+                }else if (goodsUserVo.getEducationName().equals("考前培训") && goodsUserVo.getProjectName().equals("施工现场专业人员")){
                     //七大员新考 判断是否提交学员资料
                     int count = iUserProfileService.count(new LambdaQueryWrapper<UserProfile>()
                             .notIn(UserProfile::getStatus, Arrays.asList(3, -1))
@@ -493,6 +497,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             goodsUserVo.setPeriodPlush(classGradeVo.getPeriodPlush());
             goodsUserVo.setOfficialName(classGradeVo.getOfficialName());
             goodsUserVo.setPeriodWaitTime(classGradeVo.getPeriodWaitTime());
+            goodsUserVo.setOpenQuestion(0);
             Long secLong = 0L;
             Long studyLong = 0L;
             SubjectStudyRecordQueryBo subjectStudyRecordQueryBo = new SubjectStudyRecordQueryBo();
@@ -597,11 +602,24 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                         goodsUserVo.setBeforeEndTime(examBefore.getBeforeEndTime());
                     }
                 }
+
+                //预约考试是否可以购买题库(该商品没有关联题库且预约考试的时间提前7个工作日)
+                Goods goods = iGoodsService.getById(goodsUserVo.getGoodsId());
+                if (ObjectUtils.isNull(goods.getQuestionGoodsId())){
+                    //没有关联题库
+                    //考试时间往前推7个工作日
+                    Long appointTime = DateUtils.getAppointTime(userSubscribe.getApplySiteExamTime(), 7);
+                    if (DateUtils.getNowTime() < appointTime){
+                        goodsUserVo.setOpenQuestion(1);
+                        goodsUserVo.setQuestionGoodsId(goods.getQuestionGoodsId());
+                    }
+                }
             }
         }
         return goodsUserVos;
     }
 
+
     @Override
     public List<GoodsUserVo> goodsStudyProgressList(CourseQueryBo bo) {
         List<GoodsUserVo> goodsUserVos = baseMapper.goodsStudyProgressList(bo);

+ 92 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/service/impl/ExamApplyServiceImpl.java

@@ -1,7 +1,10 @@
 package com.zhongzheng.modules.exam.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.lang.Validator;
+import cn.hutool.extra.template.TemplateException;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -11,6 +14,8 @@ import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.Page;
+import com.openhtmltopdf.swing.Java2DRenderer;
+import com.openhtmltopdf.util.FSImageWriter;
 import com.zhongzheng.common.core.page.TableDataInfo;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.type.EncryptHandler;
@@ -31,6 +36,7 @@ import com.zhongzheng.modules.bank.domain.Exam;
 import com.zhongzheng.modules.bank.domain.QuestionBusiness;
 import com.zhongzheng.modules.bank.service.IExamService;
 import com.zhongzheng.modules.bank.service.IQuestionBusinessService;
+import com.zhongzheng.modules.base.bo.UserProfileFit;
 import com.zhongzheng.modules.base.bo.UserProfileQueryBo;
 import com.zhongzheng.modules.base.domain.UserProfile;
 import com.zhongzheng.modules.base.service.IUserProfileService;
@@ -55,6 +61,8 @@ import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserSubscribeService;
 import com.zhongzheng.modules.user.vo.UserStudyRecordExport;
 import com.zhongzheng.modules.user.vo.UserVo;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
 import org.apache.commons.io.IOUtils;
 import org.apache.http.entity.ContentType;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -68,6 +76,7 @@ import javax.activation.DataHandler;
 import javax.mail.*;
 import javax.mail.internet.*;
 import javax.mail.util.ByteArrayDataSource;
+import java.awt.image.BufferedImage;
 import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;
@@ -119,6 +128,11 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
     private IUserProfileService iUserProfileService;
     @Value("${exam.applyDelete}")
     private String EXAM_APPLY_DELETE;
+    @Value("${aliyun.oss.endpoint}")
+    private String ALIYUN_OSS_ENDPOINT;
+
+    @Value("${zhongzheng.profile}")
+    private String ZHONGZHENG_PROFILE;
 
     @Override
     public ExamApplyVo queryById(Long applyId) {
@@ -407,6 +421,26 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
 
     @Override
     public ExamUserApplyVo subscribe(ExamApplyQueryBo bo) {
+        //校验预约学员资料信息
+        UserProfile userProfile = iUserProfileService.getOne(new LambdaQueryWrapper<UserProfile>()
+                .eq(UserProfile::getUserId, bo.getUserId())
+                .eq(UserProfile::getOrderGoodsId, bo.getOrderGoodsId())
+                .eq(UserProfile::getGoodsId, bo.getGoodsId())
+                .eq(UserProfile::getStatus, 1)
+                .eq(UserProfile::getChangeStatus, 1)
+                .last("limit 1"));
+        if (ObjectUtils.isNull(userProfile) || ObjectUtils.isNull(userProfile.getKeyValue())){
+            throw new CustomException("学员资料不完善,请先完善学员资料");
+        }
+        JSONObject jsonObject = JSONObject.parseObject(userProfile.getKeyValue());
+        if (ObjectUtils.isNull(jsonObject.get("commitment_seal"))){
+            throw new CustomException("缺少带有公司印章的承诺书,请先上传!");
+        }
+        JSONObject commitmentSeal = JSONObject.parseObject(JSONObject.toJSONString(jsonObject.get("commitment_seal")));
+        if (ObjectUtils.isNull(commitmentSeal.get("value"))){
+            throw new CustomException("缺少带有公司印章的承诺书,请先上传!");
+        }
+
         //查询学时通过情况
         Integer countGradePeriod = baseMapper.countGradePeriod(bo);
         if (countGradePeriod < 1) {
@@ -440,7 +474,7 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
         if (ObjectUtils.isNotNull(subscribe)) {
             Long examTime = subscribe.getApplySiteExamTime();
             //向后推15个工作日
-            Long applyEndTime = getApplyEndTime(examTime, 20);
+            Long applyEndTime = getApplyEndTime(examTime, 15);
             if (DateUtils.getNowTime() < applyEndTime){
                 throw new CustomException("成绩审核中,请等待15个工作日后再预约!");
             }
@@ -465,7 +499,6 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
             calendar.setTime(DateUtils.timeToDate(dayAfter));
             int index = calendar.get(Calendar.DAY_OF_WEEK) - 1;
             String[] weeks = new String[]{"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
-
             if (weeks[index].equals("星期六") || weeks[index].equals("星期天")) {
                 day += 1;
 
@@ -1153,9 +1186,12 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
                     Goods goods = iGoodsService.getById(userProfile.getGoodsId());
                     Major major = iMajorService.getById(goods.getMajorId());
                     if (ObjectUtils.isNotNull(major)){
-                        JSONObject json = JSONObject.parseObject(userProfile.getKeyValue());
-                        JSONObject sign = JSONObject.parseObject(JSONObject.toJSONString(json.get("commitment_electr_signature")));
-                        handleFile(sign,idCard,toPath,"commitment_electr_signature",major.getCategoryName());
+                        try {
+                            generateCommitment(userProfile.getKeyValue(),toPath,idCard,major.getCategoryName());
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                            throw new CustomException("承诺书生成失败");
+                        }
                     }
                 }
             });
@@ -1185,6 +1221,57 @@ public class ExamApplyServiceImpl extends ServiceImpl<ExamApplyMapper, ExamApply
         return content;
     }
 
+    //生成承诺书
+    private void generateCommitment(String keyValue,String toPath,String idCard,String major)throws IOException {
+        int imgIndex=(int)(Math.random() * 10 );
+        //第一种方式
+        Map<String, String> maps = JSONObject.parseObject(keyValue, Map.class);
+
+        //给模板绑定数据
+        Calendar rightNow = Calendar.getInstance();
+        Map<String, Object> bindingMap = new HashMap<>();
+        bindingMap.put("username", JSONObject.parseObject(String.valueOf(maps.get("name")), UserProfileFit.class).getValue());
+        bindingMap.put("s", JSONObject.parseObject(String.valueOf(maps.get("sex")), UserProfileFit.class).getValue());
+        bindingMap.put("post", JSONObject.parseObject(String.valueOf(maps.get("apply_post")), UserProfileFit.class).getValue());
+        bindingMap.put("idcard", JSONObject.parseObject(String.valueOf(maps.get("idcard")), UserProfileFit.class).getValue());
+        bindingMap.put("phone", JSONObject.parseObject(String.valueOf(maps.get("telphone")), UserProfileFit.class).getValue());
+        bindingMap.put("school", JSONObject.parseObject(String.valueOf(maps.get("school")), UserProfileFit.class).getValue());
+        bindingMap.put("edu", JSONObject.parseObject(String.valueOf(maps.get("education")), UserProfileFit.class).getValue());
+        bindingMap.put("major", JSONObject.parseObject(String.valueOf(maps.get("major")), UserProfileFit.class).getValue());
+        bindingMap.put("cname", JSONObject.parseObject(String.valueOf(maps.get("unit_contact")), UserProfileFit.class).getValue());
+        bindingMap.put("cphone", JSONObject.parseObject(String.valueOf(maps.get("unit_tel")), UserProfileFit.class).getValue());
+        bindingMap.put("image", ALIYUN_OSS_ENDPOINT + "/" + JSONObject.parseObject(String.valueOf(maps.get("commitment_electr_signature")), UserProfileFit.class).getValue());
+        bindingMap.put("y", Convert.toStr(rightNow.get(Calendar.YEAR)));
+        bindingMap.put("m", rightNow.get(Calendar.MONTH) + 1);
+        bindingMap.put("d", rightNow.get(Calendar.DAY_OF_MONTH));
+        bindingMap.put("time", JSONObject.parseObject(String.valueOf(maps.get("graduation_time")), UserProfileFit.class).getValue());
+        bindingMap.put("year", JSONObject.parseObject(String.valueOf(maps.get("working_years")), UserProfileFit.class).getValue());
+        File touch = FileUtil.touch(ZHONGZHENG_PROFILE + imgIndex+"word.html");
+        //默认freemake配置
+        Configuration configuration = new Configuration();
+        configuration.setDefaultEncoding("UTF-8");
+        configuration.setClassForTemplateLoading(this.getClass(), "/templates");
+        Template template = configuration.getTemplate("wordPhone.ftl");
+        Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(touch), "UTF-8"));
+        try {
+            //写入数据
+            template.process(bindingMap, out);
+            out.flush();
+            out.close();
+        } catch (TemplateException | freemarker.template.TemplateException e) {
+            e.printStackTrace();
+        }
+        //将模板输出为图片
+        final Java2DRenderer renderer = new Java2DRenderer(touch, 1000, 1000);
+        final BufferedImage img = renderer.getImage();
+        final FSImageWriter imageWriter = new FSImageWriter();
+        imageWriter.setWriteCompressionQuality(1.0f);
+        String fileName = idCard+"$承诺书$"+major+".jpg";
+        String filePath = toPath+"/"+fileName;
+        imageWriter.write(img, filePath);//输出路径
+
+    }
+
     private void handleFile(JSONObject recentPhotos,String idCard,String toPath,String key,String major){
         try {
             if (ObjectUtils.isNotNull(recentPhotos.get("value"))){

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java

@@ -160,7 +160,7 @@ private static final long serialVersionUID=1L;
     /** 班级类型 1基础班 2强化班 3私塾班 */
     private Integer gradeType;
     /** 题库商家ID */
-    private Integer questionMerchantId;
+    private Long questionMerchantId;
     /** 第三方题库商品ID */
-    private Integer questionGoodsId;
+    private Long questionGoodsId;
 }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/GoodsUserVo.java

@@ -418,4 +418,10 @@ public class GoodsUserVo {
 
 	@ApiModelProperty("学员资料是否已提交(七大员):1是 0否")
 	private Integer userProfile;
+
+	@ApiModelProperty("学员是否可以购买题库:1是 0否")
+	private Integer openQuestion;
+
+	@ApiModelProperty("关联题库商品ID")
+	private Long questionGoodsId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderGoodsAddBo.java

@@ -87,4 +87,6 @@ public class OrderGoodsAddBo {
     private String distributionCode;
     @ApiModelProperty("分销链编码")
     private String distributionLinkCode;
+    @ApiModelProperty("关联的订单商品ID")
+    private Long relevanceId;
 }

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/questionOpenBo.java

@@ -0,0 +1,26 @@
+package com.zhongzheng.modules.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年08月09日 13:58
+ */
+@ApiModel("七大员题库商品开通BO")
+@Data
+public class questionOpenBo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("学员预约ID")
+    private List<Long> userSubscribeIds;
+
+    private Long createSysUserId;
+    private String createBy;
+}

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

@@ -94,4 +94,6 @@ private static final long serialVersionUID=1L;
     private Integer divideModel;
     @ApiModelProperty("分成钱")
     private BigDecimal divideMoney;
+
+    private Long tenantId;
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/OrderInput.java

@@ -51,4 +51,8 @@ private static final long serialVersionUID=1L;
     private String oldOrderSn;
     /** 录单来源 1普通录单 2B端下单 */
     private Integer inputFrom;
+    /** 审核状态:1待审核 2已通过 3不通过 */
+    private Integer checkStauts;
+    /** 审核意见 */
+    private String checkReason;
 }

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

@@ -118,4 +118,6 @@ public interface IOrderGoodsService extends IService<OrderGoods> {
     String getBusinessById(Long orderGoodsId);
 
     List<OrderGoods> getApplyOrderGoods(List<Long> goodsIds, Long userId);
+
+
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderInputService.java

@@ -59,4 +59,6 @@ public interface IOrderInputService extends IService<OrderInput> {
 	List<OrderInputVo> getUserList(OrderInputQueryBo bo);
 
 	List<OrderInputVo> getUserGoodsList(OrderInputQueryBo bo);
+
+    void questionOrderOpen(String orderSn,Long tenantId);
 }

+ 3 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -2,10 +2,7 @@ package com.zhongzheng.modules.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
-import com.zhongzheng.modules.order.bo.OrderAddBo;
-import com.zhongzheng.modules.order.bo.OrderEditBo;
-import com.zhongzheng.modules.order.bo.OrderQueryBo;
-import com.zhongzheng.modules.order.bo.OrderUserCheckBuyBo;
+import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
@@ -115,4 +112,6 @@ public interface IOrderService extends IService<Order> {
 	Map<String, String> getActivityGoods(OrderAddBo bo);
 
 	List<String> queryBusinessFullNameBySn(String orderSn);
+
+	boolean questionGoodsOpen(questionOpenBo bo);
 }

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

@@ -36,7 +36,9 @@ import com.zhongzheng.modules.goods.bo.GoodsCourseQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.GoodsSectionListBo;
 import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.domain.GoodsQuestionRel;
 import com.zhongzheng.modules.goods.service.IGoodsCourseService;
+import com.zhongzheng.modules.goods.service.IGoodsQuestionRelService;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsSectionListVo;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
@@ -48,9 +50,12 @@ import com.zhongzheng.modules.grade.service.IClassGradeUserService;
 import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import com.zhongzheng.modules.grade.vo.ClassPeriodVo;
 import com.zhongzheng.modules.order.bo.*;
+import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.order.domain.OrderInput;
 import com.zhongzheng.modules.order.mapper.OrderGoodsMapper;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.order.service.IOrderInputService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
@@ -155,6 +160,12 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
     @Autowired
     private CourseMenuMapper courseMenuMapper;
 
+    @Autowired
+    private IGoodsQuestionRelService iGoodsQuestionRelService;
+
+    @Autowired
+    private IOrderInputService iOrderInputService;
+
     @Override
     public OrderGoodsVo queryById(Long orderGoodsId) {
         OrderGoods db = this.baseMapper.selectById(orderGoodsId);
@@ -724,6 +735,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
         return baseMapper.getApplyOrderGoods(goodsIds,userId);
     }
 
+
     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"));

+ 108 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderInputServiceImpl.java

@@ -3,15 +3,31 @@ package com.zhongzheng.modules.order.service.impl;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.goods.domain.Goods;
+import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.order.bo.OrderInputAddBo;
 import com.zhongzheng.modules.order.bo.OrderInputEditBo;
 import com.zhongzheng.modules.order.bo.OrderInputQueryBo;
+import com.zhongzheng.modules.order.domain.Order;
+import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.domain.OrderInput;
 import com.zhongzheng.modules.order.mapper.OrderInputMapper;
+import com.zhongzheng.modules.order.service.IOrderGoodsFreeService;
+import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderInputService;
+import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderInputVo;
+import com.zhongzheng.modules.system.domain.SysOldOrg;
+import com.zhongzheng.modules.system.service.ISysOldOrgService;
+import com.zhongzheng.modules.top.goods.domain.TopOldOrderGoods;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderGoodsService;
+import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -32,6 +48,20 @@ import java.util.stream.Collectors;
 @Service
 public class OrderInputServiceImpl extends ServiceImpl<OrderInputMapper, OrderInput> implements IOrderInputService {
 
+    @Autowired
+    private ITopOldOrderGoodsService topOldOrderGoodsService;
+    @Autowired
+    private IOrderService iOrderService;
+    @Autowired
+    private IOrderGoodsService iOrderGoodsService;
+    @Autowired
+    private IGoodsService iGoodsService;
+    @Autowired
+    private IUserService iUserService;
+    @Autowired
+    private ISysOldOrgService iSysOldOrgService;
+
+
     @Override
     public OrderInputVo queryById(Long id){
         OrderInput db = this.baseMapper.selectById(id);
@@ -134,4 +164,82 @@ public class OrderInputServiceImpl extends ServiceImpl<OrderInputMapper, OrderIn
     public List<OrderInputVo> getUserGoodsList(OrderInputQueryBo bo) {
         return this.baseMapper.getUserGoodsList(bo);
     }
+
+    @Override
+    public void questionOrderOpen(String orderSn,Long tenantId) {
+        OrderInput orderInput = getOne(new LambdaQueryWrapper<OrderInput>().eq(OrderInput::getInputOrderSn, orderSn));
+        if (ObjectUtils.isNull(orderInput)){
+            throw new CustomException("订单信息获取有误");
+        }
+
+        //创建学员订单
+        List<TopOldOrderGoods> orderGoodsList = topOldOrderGoodsService
+                .list(new LambdaQueryWrapper<TopOldOrderGoods>()
+                .eq(TopOldOrderGoods::getOrderSn, orderSn)
+                .eq(TopOldOrderGoods::getStatus, 1));
+        if (CollectionUtils.isEmpty(orderGoodsList)){
+            return;
+        }
+        SysOldOrg oldOrg = iSysOldOrgService.getOne(new LambdaQueryWrapper<SysOldOrg>()
+                .eq(SysOldOrg::getTenantId, tenantId)
+                .eq(SysOldOrg::getStatus, 1)
+                .last("limit 1"));
+
+        for (TopOldOrderGoods orderGoods : orderGoodsList) {
+            Order order = new Order();
+            //生成订单号
+            String out_trade_no = DateUtils.getDateOrderSn();
+            order.setOrderSn(out_trade_no);
+            User user = iUserService.getOne(new LambdaQueryWrapper<User>()
+                    .eq(User::getIdCard, orderGoods.getUserCard())
+                    .eq(User::getTenantId, tenantId));
+            if (ObjectUtils.isNull(user)){
+                throw new CustomException("学员【"+user.getRealname()+"】信息不存在");
+            }
+            order.setUserId(user.getUserId());
+            order.setOrderPrice(orderGoods.getGoodsRealPrice());
+            order.setOrderStatus(1);
+            order.setCreateTime(DateUtils.getNowTime());
+            order.setUpdateTime(DateUtils.getNowTime());
+            order.setPayTime(DateUtils.getNowTime());
+            order.setPayType(8);
+            order.setFinishTime(DateUtils.getNowTime());
+            order.setOrderType(4);
+            order.setPayPrice(orderGoods.getGoodsRealPrice());
+            order.setTenantId(tenantId);
+            order.setOrderFrom(9);
+            order.setCreateUsername(orderInput.getCreateUsername());
+            order.setStatus(1);
+            order.setCreateSysUserId(orderInput.getCreateSysUserId());
+            order.setOrderBase(1);
+            order.setInputOrderSn(order.getOrderSn());
+            order.setPayStatus(2);
+            order.setCheckStatus(1);
+            order.setOrderRefundStatus(1);
+            order.setInvoiceStatus(0);
+            order.setFinishStatus(1);
+            order.setAccomplishTime(DateUtils.getNowTime());
+            order.setOrderOrg(oldOrg.getOrgId());
+            order.setOperationType(oldOrg.getOperationType());
+            iOrderService.save(order);
+            //订单商品
+            OrderGoods add = new OrderGoods();
+            add.setOrderSn(out_trade_no);
+            Goods goods = iGoodsService.getById(orderGoods.getGoodsId());
+            add.setGoodsId(goods.getGoodsId());
+            add.setGoodsYear(goods.getYear().toString());
+            add.setGoodsRealPrice(goods.getStandPrice());
+            add.setGoodsPrice(goods.getStandPrice());
+            add.setCreateTime(DateUtils.getNowTime());
+            add.setUpdateTime(DateUtils.getNowTime());
+            add.setTenantId(tenantId);
+            add.setStatus(1);
+            add.setGoodsReceived(order.getOrderPrice());
+            add.setRefundStatus(0);
+            add.setPayStatus(3);
+            iOrderGoodsService.save(add);
+        }
+        orderInput.setCheckStauts(2);
+        updateById(orderInput);
+    }
 }

+ 163 - 11
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -28,12 +28,8 @@ import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
 import com.zhongzheng.modules.base.service.IProfileTpService;
 import com.zhongzheng.modules.base.service.IShoppingCartService;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
-import com.zhongzheng.modules.course.domain.CourseEducationType;
-import com.zhongzheng.modules.course.domain.CourseSubject;
-import com.zhongzheng.modules.course.service.ICourseBusinessService;
-import com.zhongzheng.modules.course.service.ICourseEducationTypeService;
-import com.zhongzheng.modules.course.service.ICourseMenuService;
-import com.zhongzheng.modules.course.service.ICourseSubjectService;
+import com.zhongzheng.modules.course.domain.*;
+import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.CourseBusinessVo;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
 import com.zhongzheng.modules.distribution.domain.DistributionActivity;
@@ -82,17 +78,22 @@ import com.zhongzheng.modules.top.financial.service.ITopCostTpItemService;
 import com.zhongzheng.modules.top.financial.service.ITopCostTpService;
 import com.zhongzheng.modules.top.financial.vo.TopCostTpItemVo;
 import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderGoodsAddBo;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheck;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheckLog;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckLogService;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckService;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
 import com.zhongzheng.modules.top.settle.domian.TopInstSettle;
 import com.zhongzheng.modules.top.settle.service.ITopInstSettleService;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
+import com.zhongzheng.modules.user.domain.UserSubscribe;
 import com.zhongzheng.modules.user.service.IUserExamGoodsService;
 import com.zhongzheng.modules.user.service.IUserService;
+import com.zhongzheng.modules.user.service.IUserSubscribeService;
 import com.zhongzheng.modules.user.vo.UserVo;
 import com.zhongzheng.modules.wx.service.IWxPayService;
 import net.polyv.common.v1.util.StringUtils;
@@ -147,7 +148,12 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
     @Autowired
     private IShoppingCartService iShoppingCartService;
-
+    @Autowired
+    private ICourseEducationTypeService iCourseEducationTypeService;
+    @Autowired
+    private ICourseProjectTypeService iCourseProjectTypeService;
+    @Autowired
+    private IMajorService iMajorService;
     @Autowired
     private ICourseBusinessService iCourseBusinessService;
 
@@ -206,7 +212,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private IGoodsQuestionRelService iGoodsQuestionRelService;
     @Autowired
     private IQuestionMerchantService iQuestionMerchantService;
-
+    @Autowired
+    private IUserSubscribeService iUserSubscribeService;
+    @Autowired
+    private ITopOldOrderService topOldOrderService;
 
     @Override
     public OrderVo queryById(Long orderId) {
@@ -845,6 +854,30 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         iGoodsQuestionRelService.save(rel);
     }
 
+
+    private void questionOrderHandle(Long orderGoodsId,Long goodsId) {
+        //第三方题库商品
+        Goods questionGoods = iGoodsService.getById(goodsId);
+        if (ObjectUtils.isNull(questionGoods) || questionGoods.getGoodsType() != 9){
+            //商品类型不符合
+            return;
+        }
+        //添加第三方关联记录
+        QuestionMerchant merchant = iQuestionMerchantService.getById(questionGoods.getQuestionMerchantId());
+        if (ObjectUtils.isNull(merchant)){
+            //商家不存在
+            return;
+        }
+        GoodsQuestionRel rel = new GoodsQuestionRel();
+        rel.setOrderGoodsId(orderGoodsId);
+        rel.setQuestionGoodsId(questionGoods.getGoodsId());
+        rel.setStatus(1);
+        rel.setQuestionDoNum(merchant.getDoNum());
+        rel.setCreateTime(DateUtils.getNowTime());
+        rel.setUpdateTime(DateUtils.getNowTime());
+        iGoodsQuestionRelService.save(rel);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Map<String, String> placeSmallOrder(OrderAddBo bo) {
@@ -934,7 +967,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 payPrice = payPrice.add(goods.getStandPrice());
             }
             boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
-
+            if (ObjectUtils.isNotNull(g.getRelevanceId())){
+                //购买关联题库商品
+                questionOrderHandle(g.getRelevanceId(),g.getGoodsId());
+            }
             boolean canRepeatBuy = false;
             validUserBeforeBuy(goods, bo.getUserId());
             //判断是否有购买过
@@ -1329,7 +1365,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 payPrice = payPrice.add(goods.getStandPrice());
             }
             boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
-
+            if (ObjectUtils.isNotNull(g.getRelevanceId())){
+                //购买关联题库商品
+                questionOrderHandle(g.getRelevanceId(),g.getGoodsId());
+            }
             boolean canRepeatBuy = false;
             validUserBeforeBuy(goods, bo.getUserId());
             //判断是否有购买过
@@ -1487,7 +1526,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             //暂不计算优惠券
             payPrice = payPrice.add(goods.getStandPrice());
             boolean orderGoodsRs = iOrderGoodsService.save(orderGoods);
-
+            if (ObjectUtils.isNotNull(g.getRelevanceId())){
+                //购买关联题库商品
+                questionOrderHandle(g.getRelevanceId(),g.getGoodsId());
+            }
             boolean canRepeatBuy = false;
             validUserBeforeBuy(goods, bo.getUserId());
             //判断是否有购买过
@@ -1960,6 +2002,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
     //判断视频商品是否购买过且服务期是否过期
     public Long getHaveBuyGoods(Long goodsId, Long userId) {
+        Goods goods = iGoodsService.getById(goodsId);
+        if (goods.getGoodsType() == 9){
+            //七大员题库类商品
+            return null;
+        }
         OrderGoodsQueryBo orderGoodsQueryBo = new OrderGoodsQueryBo();
         orderGoodsQueryBo.setUserId(userId);
         orderGoodsQueryBo.setGoodsId(goodsId);
@@ -2624,4 +2671,109 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         iClassGradeService.gradeChangeEjjjPeople(goods.getBusinessId(), gradeId);
         return true;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean questionGoodsOpen(questionOpenBo bo) {
+        //开通校验
+        questionGoodsOpenCheck(bo);
+        //创建录单信息
+        OrderInput orderInput = new OrderInput();
+        String orderInputSn = DateUtils.getDateInputOrderSn();
+        orderInput.setInputOrderSn(orderInputSn);
+        orderInput.setCreateUsername(bo.getCreateBy());
+        orderInput.setStatus(1);
+        orderInput.setCreateSysUserId(bo.getCreateSysUserId());
+        orderInput.setUpdateTime(DateUtils.getNowTime());
+        orderInput.setCreateTime(DateUtils.getNowTime());
+        Goods goods = iGoodsService.getById(bo.getGoodsId());
+        BigDecimal standPrice = goods.getStandPrice();
+        orderInput.setEducationTypeId(goods.getEducationTypeId());
+        orderInput.setProjectId(goods.getProjectId().longValue());
+        orderInput.setBusinessId(goods.getBusinessId());
+        orderInput.setInputFrom(4);
+        orderInput.setCheckStauts(1);
+
+
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        SysTenant sysTenant = sysTenantService.getById(Long.valueOf(tenantId));
+        //学员人数
+        Integer num = bo.getUserSubscribeIds().size();
+        //订单推送总平台审核
+        TopOldOrderAddBo addBo = new TopOldOrderAddBo();
+        addBo.setOrderSn(orderInputSn);
+        addBo.setOrderPrice(standPrice.multiply(new BigDecimal(num)));
+        addBo.setOrderStatus(1);
+        addBo.setCreateTime(DateUtils.getNowTime());
+        addBo.setUpdateTime(DateUtils.getNowTime());
+        addBo.setPayTime(DateUtils.getNowTime());
+        addBo.setPayType(3);
+        addBo.setOrderType(1);
+        addBo.setOrderBase(1);
+        addBo.setPayPrice(standPrice.multiply(new BigDecimal(num)));
+        addBo.setOrderFrom(4);
+        addBo.setCreateUsername(bo.getCreateBy());
+        addBo.setStatus(1);
+        addBo.setPayStatus(3);
+        addBo.setOrderReceived(standPrice.multiply(new BigDecimal(num)));
+        addBo.setRemark("七大员题库商品订单");
+        addBo.setOrderOrg(sysTenant.getTenantName());
+        addBo.setTenantId(Long.valueOf(tenantId));
+        addBo.setBuyTime(DateUtils.getNowTime());
+        addBo.setPurchaseOrg(sysTenant.getTenantName());
+
+        //业务层次
+        CourseEducationType educationType = iCourseEducationTypeService.getById(goods.getEducationTypeId());
+        CourseProjectType projectType = iCourseProjectTypeService.getById(goods.getProjectId());
+        CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
+        Major major = iMajorService.getById(goods.getMajorId());
+
+        //订单商品
+        List<TopOldOrderGoodsAddBo> collect = bo.getUserSubscribeIds().stream().map(userSubscribeId -> {
+            TopOldOrderGoodsAddBo goodsAddBo = new TopOldOrderGoodsAddBo();
+            goodsAddBo.setOrderSn(orderInputSn);
+            goodsAddBo.setGoodsId(bo.getGoodsId());
+            goodsAddBo.setGoodsPrice(goods.getStandPrice());
+            goodsAddBo.setGoodsRealPrice(goods.getStandPrice());
+            goodsAddBo.setCreateTime(DateUtils.getNowTime());
+            goodsAddBo.setUpdateTime(DateUtils.getNowTime());
+            goodsAddBo.setStatus(1);
+            goodsAddBo.setGoodsReceived(goods.getStandPrice());
+            goodsAddBo.setRefundStatus(0);
+            goodsAddBo.setPayStatus(3);
+            goodsAddBo.setGoodsName(goods.getGoodsName());
+            goodsAddBo.setMajorName(major.getCategoryName());
+            goodsAddBo.setBusinessName(business.getBusinessName() + projectType.getProjectName());
+            goodsAddBo.setBusinessFullName("学校业务" + educationType.getEducationName() + business.getBusinessName() + projectType.getProjectName());
+
+            UserSubscribe userSubscribe = iUserSubscribeService.getById(userSubscribeId);
+            User user = iUserService.getById(userSubscribe.getUserId());
+            goodsAddBo.setUserName(user.getRealname());
+            goodsAddBo.setUserCard(EncryptHandler.decrypt(user.getIdCard()));
+            goodsAddBo.setUserPhone(EncryptHandler.decrypt(user.getTelphone()));
+            return goodsAddBo;
+        }).collect(Collectors.toList());
+        addBo.setOrderGoodsList(collect);
+        topOldOrderService.insertByAddBo(addBo);
+        return iOrderInputService.save(orderInput);
+    }
+
+    private void questionGoodsOpenCheck(questionOpenBo bo) {
+        for (Long userSubscribeId : bo.getUserSubscribeIds()) {
+            //校验学员是否已经购买题库
+            UserSubscribe userSubscribe = iUserSubscribeService.getById(userSubscribeId);
+            User user = iUserService.getById(userSubscribe.getUserId());
+            if (ObjectUtils.isNull(userSubscribe)){
+                throw new CustomException(String.format("学员【%s】预约信息有误",user.getRealname()));
+            }
+            int count = iGoodsQuestionRelService.count(new LambdaQueryWrapper<GoodsQuestionRel>()
+                    .eq(GoodsQuestionRel::getOrderGoodsId, userSubscribe.getOrderGoodsId())
+                    .eq(GoodsQuestionRel::getQuestionGoodsId, bo.getGoodsId())
+                    .eq(GoodsQuestionRel::getStatus, 1)
+                    .gt(GoodsQuestionRel::getQuestionDoNum, 0));
+            if (count > 0) {
+                throw new CustomException(String.format("学员【】已购买当前题库商品,请勿重复开通!",user.getRealname()));
+            }
+        }
+    }
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderAddBo.java

@@ -73,7 +73,7 @@ public class TopOldOrderAddBo {
     @ApiModelProperty("支付价格(成交价)")
     private BigDecimal payPrice;
     /** 订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单  */
-    @ApiModelProperty("订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单 ")
+    @ApiModelProperty("订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单 4新系统后台题库订单")
     private Integer orderFrom;
     /** 业务员名称 */
     @ApiModelProperty("业务员名称")

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

@@ -213,6 +213,9 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Autowired
     private ITopInstSettleRelationService topInstSettleRelationService;
 
+    @Autowired
+    private IOrderInputService orderInputService;
+
     @Value("${oldOrder.studyRecord}")
     private String ORDER_STUDY;
 
@@ -323,7 +326,8 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 BigDecimal cost = getInstTimeSettleCost(item);
                 if (ObjectUtils.isNotNull(cost)){
                     BigDecimal instCost = ObjectUtils.isNotNull(item.getInstCost())?item.getInstCost():BigDecimal.ZERO;
-                    BigDecimal add = item.getOrderCost().add(cost).add(instCost);
+                    BigDecimal orderCost = ObjectUtils.isNotNull(item.getOrderCost())?item.getOrderCost():BigDecimal.ZERO;
+                    BigDecimal add = orderCost.add(cost).add(instCost);
                     item.setOrderCost(add);
                 }
                 //退款审核角色
@@ -434,7 +438,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         }
         add.setRefundStatus(1);//退款状态:正常
         add.setFinishStatus(0);//完单状态:未完单
-        if (bo.getOrderFrom() == 3) {
+        if (bo.getOrderFrom() == 3 || bo.getOrderFrom() == 4) {
             add.setCheckStatus(0);//待审核
         } else {
             add.setCheckStatus(1);//C端不需要审核
@@ -456,7 +460,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         // 获取企业默认成本模板
         TopCostTp costTp = topCostTpService.getOne(new LambdaQueryWrapper<TopCostTp>()
                 .eq(TopCostTp::getTenantId, bo.getTenantId()).eq(TopCostTp::getDefaultStatus, 1).last("limit 1"));
-        if (ObjectUtils.isNotNull(costTp)) {
+        if (ObjectUtils.isNotNull(costTp) && bo.getOrderFrom() != 4) {
             TopCostTpVo topCostTpVo = BeanUtil.toBean(costTp, TopCostTpVo.class);
             //成本项
             BigDecimal costTotal = new BigDecimal("0.00");//成本
@@ -1188,6 +1192,22 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             //处理供应商时间结算单
             instTimeSettleOrder(oldOrder, checkTime);
         }
+        if (oldOrder.getOrderFrom() == 4){
+            //新系统七大员开通题库订单
+            switch (bo.getCheckStatus()){
+                case 1://审核通过
+                    orderInputService.questionOrderOpen(oldOrder.getOrderSn(),oldOrder.getTenantId());
+                    break;
+                case 2://审核不通过
+                    OrderInput orderInput = orderInputService.getOne(new LambdaQueryWrapper<OrderInput>()
+                            .eq(OrderInput::getInputOrderSn, oldOrder.getOrderSn()));
+                    orderInput.setCheckStauts(3);
+                    orderInput.setCheckReason(bo.getCheckReason());
+                    orderInputService.updateById(orderInput);
+                    break;
+            }
+            return true;
+        }
 
         if (bo.getCheckStatus() == 1 && oldOrder.getFinishSign() == 0 && oldOrder.getOrderUncollected().compareTo(BigDecimal.ZERO) == 0) {
             //订单审核通过,账款已结清,满足完单条件