Sfoglia il codice sorgente

Merge branch 'dev' into pre

yangdamao 2 anni fa
parent
commit
caaa3ab908
27 ha cambiato i file con 408 aggiunte e 55 eliminazioni
  1. 22 3
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  2. 21 7
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java
  3. 45 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/utils/http/HttpUtils.java
  4. 1 1
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/TokenService.java
  5. 7 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java
  6. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/ExternalQuestionBo.java
  7. 38 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/ExternalQuestionVo.java
  8. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/CdUserSubscribeBo.java
  9. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionOpenBo.java
  10. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java
  11. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  12. 26 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  13. 14 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsSpecTemplateServiceImpl.java
  14. 10 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/SpecAttrPriceVo.java
  15. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClientPostAddBo.java
  16. 2 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java
  17. 54 17
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java
  18. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java
  19. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java
  20. 4 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java
  21. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java
  22. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  23. 23 10
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  24. 18 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  25. 6 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml
  26. 0 1
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml
  27. 2 2
      zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

+ 22 - 3
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -29,6 +29,8 @@ import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.bank.service.IExamService;
 import com.zhongzheng.modules.bank.service.IQuestionOtherService;
 import com.zhongzheng.modules.base.bo.ConfigQueryBo;
+import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
+import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 import com.zhongzheng.modules.distribution.bo.DistributionActivityGoodsQueryBo;
 import com.zhongzheng.modules.distribution.bo.DistributionCashWithdrawalPayBo;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
@@ -341,13 +343,23 @@ public class CommonController extends BaseController {
     @ApiOperation("学员学时图片修改")
     @PostMapping("common/student/image/update")
     public AjaxResult updateStudentImage(@RequestBody UpdateStudentImageBo bo) {
-//        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
-//            return AjaxResult.error("签名错误");
-//        }
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
         String base = iUserSubscribeService.updateStudentImage(bo);
         return AjaxResult.success(base);
     }
 
+    @ApiOperation("获取外部题库商品(山东题库)")
+    @PostMapping("common/external/question")
+    public AjaxResult getExternalQuestion(@RequestBody ExternalQuestionBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        List<ExternalQuestionVo> questionVos = iGoodsService.getExternalQuestion(bo);
+        return AjaxResult.success(questionVos);
+    }
+
 
     @ApiOperation("获取某场考试信息")
     @PostMapping("common/apply/detail")
@@ -715,6 +727,7 @@ public class CommonController extends BaseController {
     public AjaxResult pushPeriod(@RequestBody List<ClassGradeUserQueryBo>  list) {
         return AjaxResult.success(iClassGradeUserService.pushOfficialPeriodMore(list));
     }
+
     @ApiOperation("测试获取山东题库")
     @PreAuthorize("@ss.hasPermi('system:withdrawal:add')")
     @Log(title = "测试获取山东题库", businessType = BusinessType.INSERT)
@@ -724,4 +737,10 @@ public class CommonController extends BaseController {
         return AjaxResult.success();
     }
 
+
+    @ApiOperation("旧系统post请求")
+    @PostMapping("/common/free/clientPost")
+    public AjaxResult<Void> clientPost(@RequestBody ClientPostAddBo bo) {
+        return AjaxResult.success(iClassGradeUserService.sendClientPost(bo));
+    }
 }

+ 21 - 7
zhongzheng-admin/src/main/java/com/zhongzheng/controller/order/OrderController.java

@@ -5,29 +5,28 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 import cn.hutool.core.lang.Validator;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.core.domain.model.LoginUser;
-import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.SecurityUtils;
 import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.TokenService;
+import com.zhongzheng.modules.goods.bo.QuestionOpenBo;
 import com.zhongzheng.modules.goods.bo.QuestionOpenImportBo;
 import com.zhongzheng.modules.goods.vo.QuestionOpenImportVo;
-import com.zhongzheng.modules.grade.vo.ClassPeriodStudentExportAllVo;
 import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
 import com.zhongzheng.modules.order.vo.OrderVo;
-import com.zhongzheng.modules.user.bo.UserSubscribeExportBo;
-import com.zhongzheng.modules.user.vo.UserSubscribeImport;
+import com.zhongzheng.modules.user.domain.UserSubscribe;
+import com.zhongzheng.modules.user.service.IUserSubscribeService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -58,6 +57,8 @@ public class OrderController extends BaseController {
 
     private final IOrderGoodsService iOrderGoodsService;
 
+    private final IUserSubscribeService iUserSubscribeService;
+
     private final TokenService tokenService;
 
     /**
@@ -150,6 +151,19 @@ public class OrderController extends BaseController {
     @PostMapping("/inputOrder")
     public AjaxResult addInputOrder(@RequestBody OrderAddBo bo) {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        if (ObjectUtils.isNotNull(bo.getOpenQuestionSign()) && bo.getOpenQuestionSign() == 1){
+            //新B端外部题库开通
+            QuestionOpenBo questionOpenBo = new QuestionOpenBo();
+            questionOpenBo.setCreateSysUserId(loginUser.getUser().getUserId());
+            questionOpenBo.setCreateBy(SecurityUtils.getUsername());
+            questionOpenBo.setGoodsId(bo.getGoodsList().get(0).getGoodsId());
+            UserSubscribe userSubscribe = iUserSubscribeService.getOne(new LambdaQueryWrapper<UserSubscribe>()
+                    .eq(UserSubscribe::getUserId, bo.getUserId())
+                    .eq(UserSubscribe::getOrderGoodsId, bo.getSubOrderGoodsId())
+                    .last("limit 1"));
+            questionOpenBo.setUserSubscribeIds(Arrays.asList(userSubscribe.getSubscribeId()));
+            return AjaxResult.success(iOrderService.questionGoodsOpen(questionOpenBo));
+        }
         if(Validator.isEmpty(bo.getCreateUsername())){
             bo.setCreateSysUserId(loginUser.getUser().getUserId());
             bo.setCreateBy(SecurityUtils.getUsername());
@@ -179,7 +193,7 @@ public class OrderController extends BaseController {
      */
     @ApiOperation("七大员题库商品开通")
     @PostMapping("/question/open")
-    public AjaxResult<Void> questionGoodsOpen(@RequestBody questionOpenBo bo) {
+    public AjaxResult<Void> questionGoodsOpen(@RequestBody QuestionOpenBo bo) {
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         bo.setCreateSysUserId(loginUser.getUser().getUserId());
         bo.setCreateBy(SecurityUtils.getUsername());

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

@@ -125,6 +125,16 @@ public class HttpUtils
 
     }
 
+    public static String postFormBodyHeader(String url, Map<String, String> paramMap, Map<String, String> headersMap) throws IOException{
+        try{
+            String result = postHead(url, paramMap, null,headersMap);
+            return result;
+        }catch (Exception e){
+            return null;
+        }
+
+    }
+
     public static String sendPost(String url, JSONObject param)
     {
         HttpClient client = HttpClients.createDefault();
@@ -472,6 +482,41 @@ public class HttpUtils
         return url;
     }
 
+    private static String postHead(String url, Map<String, String> paramMap, String encoding, Map<String, String> headersMap) throws IOException, NoSuchAlgorithmException, KeyManagementException {
+        log.debug("http 请求 url: {} , 请求参数: {}", url, appendUrl("", paramMap).replace("?", ""));
+        encoding = encoding == null ? UTF8 : encoding;
+        // 创建post方式请求对象
+        HttpPost httpPost = new HttpPost(url);
+        // 装填参数
+        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
+        if (paramMap != null) {
+            for (Map.Entry<String, String> entry : paramMap.entrySet()) {
+                String value = entry.getValue();
+                //去掉如下判断会造成String类型的value为null时
+                if (value != null) {
+                    nameValuePairs.add(new BasicNameValuePair(entry.getKey(), value));
+                }
+            }
+        }
+        // 设置参数到请求对象中
+        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, encoding));
+        // 设置header信息
+        // 指定报文头【Content-type】、【User-Agent】
+        httpPost.setHeader("Content-type", APPLICATION_FORM_URLENCODED);
+        headersMap.forEach(httpPost::setHeader);
+        return post(url, httpPost, encoding, new DataParse<String>() {
+            @Override
+            public String parseData(HttpEntity httpEntity, String encoding) throws IOException {
+                if(Validator.isNotEmpty(httpEntity)){
+                    return EntityUtils.toString(httpEntity, encoding);
+                }else{
+                    return null;
+                }
+
+            }
+        });
+    }
+
     /**
      * 向url发送post请求表单提交数据
      * @param url 请求url

+ 1 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/TokenService.java

@@ -98,7 +98,7 @@ public class TokenService
         {
             // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
             authentication = authenticationManager
-                    .authenticate(new UsernamePasswordAuthenticationToken("admin", "admin123"));
+                    .authenticate(new UsernamePasswordAuthenticationToken("admin", "admin159"));
         }
         catch (Exception e)
         {

+ 7 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/UserProfileServiceImpl.java

@@ -501,7 +501,7 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
         String keyValue = bo.getKeyValue();
         if (Validator.isNotEmpty(keyValue)) {
             Map<String, String> maps = JSONObject.parseObject(keyValue, Map.class);
-            String recent_photos, idcard_face_photo, idcard_national_photo,work_unit,idcard,name,education,apply_post,telphone;
+            String recent_photos, idcard_face_photo, idcard_national_photo,work_unit,idcard,name,education,apply_post,telphone,sex;
             LambdaUpdateWrapper<User> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
             objectLambdaUpdateWrapper.eq(User::getUserId, bo.getUserId());
             UserVo user = iUserService.queryById(bo.getUserId());
@@ -576,6 +576,12 @@ public class UserProfileServiceImpl extends ServiceImpl<UserProfileMapper, UserP
                     objectLambdaUpdateWrapper.set(User::getJob, apply_post);
                 }
             }
+            if (maps.containsKey("sex")) {
+                sex = JSONObject.parseObject(String.valueOf(maps.get("sex")), UserProfileFit.class).getValue();
+                if(Validator.isNotEmpty(sex)){
+                    objectLambdaUpdateWrapper.set(User::getSex, sex.equals("男")?1:2);
+                }
+            }
             objectLambdaUpdateWrapper.set(User::getUpdateTime, DateUtils.getNowTime());
             iUserService.update(null, objectLambdaUpdateWrapper);
         }

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/bo/ExternalQuestionBo.java

@@ -0,0 +1,26 @@
+package com.zhongzheng.modules.course.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月12日 8:52
+ */
+@Data
+public class ExternalQuestionBo implements Serializable {
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+    private Long tenantId;
+
+}

+ 38 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/vo/ExternalQuestionVo.java

@@ -0,0 +1,38 @@
+package com.zhongzheng.modules.course.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月12日 8:52
+ */
+@Data
+public class ExternalQuestionVo implements Serializable {
+
+    @ApiModelProperty("商品ID")
+    private Long goodsId;
+
+    @ApiModelProperty("商家ID")
+    private Long merchantId;
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("商家名称")
+    private String merchantName;
+
+    @ApiModelProperty("做题次数")
+    private Integer doNum;
+
+    @ApiModelProperty("商品价格")
+    private BigDecimal goodsPrice;
+
+    @ApiModelProperty("封面地址")
+    private String coverUrl;
+
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/bo/CdUserSubscribeBo.java

@@ -27,6 +27,9 @@ public class CdUserSubscribeBo implements Serializable {
     /** 商品名称 */
     @ApiModelProperty("商品名称")
     private String goodsName;
+    /** 订单商品ID */
+    @ApiModelProperty("订单商品ID")
+    private Long orderGoodsId;
     /** 业务层次名称 */
     @ApiModelProperty("业务层次名称")
     private String businessName;

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/QuestionOpenBo.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.goods.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年09月12日 17:19
+ */
+@Data
+public class QuestionOpenBo implements Serializable {
+
+    private Long goodsId;
+
+    private List<Long> userSubscribeIds;
+
+    private Long createSysUserId;
+
+    private String createBy;
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java

@@ -3,7 +3,9 @@ package com.zhongzheng.modules.goods.mapper;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
+import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
 import com.zhongzheng.modules.course.vo.CourseVo;
+import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
@@ -86,4 +88,7 @@ public interface GoodsMapper extends BaseMapper<Goods> {
 
     @InterceptorIgnore(tenantLine = "true")
     List<UserOrderGoodsListVo> getUserOrderGoodsList(Long userId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<ExternalQuestionVo> getExternalQuestion(ExternalQuestionBo bo);
 }

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

@@ -2,7 +2,9 @@ package com.zhongzheng.modules.goods.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.course.bo.CourseQueryBo;
+import com.zhongzheng.modules.course.bo.ExternalQuestionBo;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
+import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.*;
@@ -148,4 +150,6 @@ public interface IGoodsService extends IService<Goods> {
 	List<UserOrderGoodsListVo> getUserOrderGoods(UserGoodsListBo bo);
 
 	Map<String,String> checkUserAccount(UserGoodsListBo bo);
+
+    List<ExternalQuestionVo> getExternalQuestion(ExternalQuestionBo bo);
 }

+ 26 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -283,6 +283,9 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Value("${liveGotoURL}")
     private String URL_PREFIX;
 
+    @Value("${aliyun.oss.endpoint}")
+    private String OSS_PREFIX;
+
     private static Logger log = LoggerFactory.getLogger(GoodsServiceImpl.class);
 
     @Override
@@ -467,6 +470,19 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                 goodsVo.setMaxPrice(collect.get(collect.size() - 1).getStandPrice());
             }
         }
+        CourseBusinessQueryBo queryBo = new CourseBusinessQueryBo();
+        queryBo.setId(goodsVo.getBusinessId());
+        String fullName = iCourseBusinessService.queryFullName(queryBo);
+        goodsVo.setErJianErZao(false);
+        goodsVo.setJjShiGongYuan(false);
+        if(Validator.isNotEmpty(fullName)){
+            if(fullName.equals("继续教育二级建造师")||fullName.equals("继续教育二级造价师")){
+                goodsVo.setErJianErZao(true);
+            }
+            if(fullName.contains("继续教育")&&fullName.contains("施工现场专业人员")){
+                goodsVo.setJjShiGongYuan(true);
+            }
+        }
         return goodsVo;
     }
 
@@ -5127,6 +5143,16 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return map;
     }
 
+    @Override
+    public List<ExternalQuestionVo> getExternalQuestion(ExternalQuestionBo bo) {
+        List<ExternalQuestionVo> questionVos = baseMapper.getExternalQuestion(bo);
+        //商品封面地址前缀 OSS_PREFIX
+        if (CollectionUtils.isNotEmpty(questionVos)){
+            questionVos.forEach(item -> item.setCoverUrl(String.format("%s/%s",OSS_PREFIX,item.getCoverUrl())));
+        }
+        return questionVos;
+    }
+
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
         baseMapper.updateHandoutsId(goodsId,tenantId,handoutsId);
     }

+ 14 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsSpecTemplateServiceImpl.java

@@ -15,9 +15,11 @@ import com.zhongzheng.modules.activity.domain.ActivityGoodsPrice;
 import com.zhongzheng.modules.activity.service.IActivityGoodsPriceService;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseEducationType;
+import com.zhongzheng.modules.course.domain.CourseProjectType;
 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.ICourseProjectTypeService;
 import com.zhongzheng.modules.course.service.ICourseSubjectService;
 import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.domain.*;
@@ -54,6 +56,8 @@ public class GoodsSpecTemplateServiceImpl extends ServiceImpl<GoodsSpecTemplateM
     @Autowired
     public ICourseEducationTypeService courseEducationTypeService;
     @Autowired
+    public ICourseProjectTypeService courseProjectTypeService;
+    @Autowired
     public ICourseBusinessService courseBusinessService;
     @Autowired
     private IActivityGoodsPriceService iActivityGoodsPriceService;
@@ -96,17 +100,25 @@ public class GoodsSpecTemplateServiceImpl extends ServiceImpl<GoodsSpecTemplateM
                             SpecAttrPriceVo priceVo = BeanUtil.toBean(goods,SpecAttrPriceVo.class);
                             priceVo.setSpecAttrIds(x.getSpecAttributeIds());
                             priceVo.setSpecialGoods(0);
-                            priceVo.setSpecialGoods(0);
+                            CourseEducationType educationType = courseEducationTypeService.getById(goods.getEducationTypeId());
+                            priceVo.setEducationName(educationType.getEducationName());
+                            CourseProjectType projectType = courseProjectTypeService.getById(goods.getProjectId());
+                            priceVo.setProjectName(projectType.getProjectName());
                             CourseBusiness business = courseBusinessService.getById(goods.getBusinessId());
+                            priceVo.setBusinessName(business.getBusinessName());
                             if (ObjectUtils.isNotNull(business.getTemplateStatus()) && business.getTemplateStatus() == 1){
                                 priceVo.setTemplateType("class");
                             }
+                            priceVo.setErJianErZao(false);
+                            priceVo.setJjShiGongYuan(false);
                             //商品业务类型
                             String businessName = goodsService.getGoodsBusinessName(x.getGoodsId());
-                            if (businessName.contains("继续教育二级建造师")){
+                            if (businessName.contains("继续教育二级建造师") || businessName.equals("继续教育二级造价师")){
                                 priceVo.setSpecialGoods(1);
+                                priceVo.setErJianErZao(true);
                             }else if (businessName.contains("继续教育") && businessName.contains("施工现场专业人员")){
                                 vo.setSign(1);
+                                priceVo.setJjShiGongYuan(true);
                             }
                             return priceVo;
                         }).collect(Collectors.toList());

+ 10 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/vo/SpecAttrPriceVo.java

@@ -35,8 +35,12 @@ public class SpecAttrPriceVo implements Serializable {
     private Integer goodsType;
     /** 教育类型id */
     private Long educationTypeId;
+    /** 教育类型id */
+    private String educationName;
     /** 业务层次id */
     private Long businessId;
+    /** 业务层次id */
+    private String businessName;
     /** 所属院校 */
     private Long schoolId;
     /** 所属专业 */
@@ -82,7 +86,8 @@ public class SpecAttrPriceVo implements Serializable {
     private String supplyName;
     /** 项目id */
     private Integer projectId;
-
+    /** 项目id */
+    private String projectName;
     /** 试听设置 */
     private String goodsAuditionConfig;
     /** 拍照设置 */
@@ -140,6 +145,10 @@ public class SpecAttrPriceVo implements Serializable {
     private Integer specialGoods;
     /** 模版类型 */
     private String templateType;
+    @ApiModelProperty("是否是继教施工员")
+    private Boolean jjShiGongYuan;
+    @ApiModelProperty("是否是二建二造")
+    private Boolean erJianErZao;
 
 
 }

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClientPostAddBo.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.grade.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+
+/**
+ * 班级添加对象 class_grade
+ *
+ * @author ruoyi
+ * @date 2021-11-10
+ */
+@Data
+@ApiModel("班级添加对象")
+public class ClientPostAddBo {
+
+    @ApiModelProperty("请求文本")
+    @NotBlank(message = "请求文本")
+    private String content;
+
+    @ApiModelProperty("当前时间戳")
+    @NotBlank(message = "当前时间戳不能为空")
+    private Long stamp;
+
+    @ApiModelProperty("签名")
+    @NotBlank(message = "签名不能为空")
+    private String sign;
+
+    @ApiModelProperty("请求文本")
+    @NotBlank(message = "请求文本")
+    private String token;
+
+    @ApiModelProperty("url")
+    @NotBlank(message = "url")
+    private String url;
+}

+ 2 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeUserService.java

@@ -1,21 +1,16 @@
 package com.zhongzheng.modules.grade.service;
 
-import com.zhongzheng.common.core.domain.AjaxResult;
-import com.zhongzheng.modules.base.bo.UserProfileQueryBo;
-import com.zhongzheng.modules.base.vo.UserProfileExportGaiVo;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
 import com.zhongzheng.modules.grade.bo.*;
 import com.zhongzheng.modules.grade.domain.ClassGradeUser;
 import com.zhongzheng.modules.grade.vo.*;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.user.bo.UserQueryBo;
-import com.zhongzheng.modules.user.bo.UserStudyRecordQueryBo;
 import com.zhongzheng.modules.user.domain.User;
 
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.zip.ZipOutputStream;
 
 /**
  * 学员记录Service接口
@@ -70,6 +65,8 @@ public interface IClassGradeUserService extends IService<ClassGradeUser> {
 
 	Map<String,Object> exportWeekPo(ClassGradeUserQueryBo bo);
 
+	String sendClientPost(ClientPostAddBo bo);
+
 
 	/**
 	 * 根据编辑业务对象修改学员记录

+ 54 - 17
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeUserServiceImpl.java

@@ -36,7 +36,6 @@ import com.zhongzheng.modules.course.vo.CourseBusinessVo;
 import com.zhongzheng.modules.course.vo.CourseChapterVo;
 import com.zhongzheng.modules.course.vo.CourseProjectTypeVo;
 import com.zhongzheng.modules.goods.domain.Goods;
-import com.zhongzheng.modules.goods.domain.GoodsCourse;
 import com.zhongzheng.modules.goods.service.IGoodsService;
 import com.zhongzheng.modules.goods.vo.GoodsVo;
 import com.zhongzheng.modules.grade.bo.*;
@@ -72,7 +71,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.security.core.token.TokenService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -635,10 +633,10 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         params.put("bmrq", DateUtils.timestampToDate(bmrq));
         String dataTxt = params.get("zh") + params.get("bh") + params.get("xm") + params.get("sfz") + params.get("dh") + params.get("bmrq");
         log.info("报名信息推送参数"+ dataTxt);
-        String encrypted = dataSign(dataTxt, OFFICIALPUSH_TOKEN);
-        params.put("SignMsg", encrypted);
-        String respone = "";
         try {
+            String encrypted = dataSign(dataTxt, OFFICIALPUSH_TOKEN);
+            params.put("SignMsg", encrypted);
+            String respone = "";
             respone = HttpUtils.postFormBody(OFFICIALPUSH_INFOPATH, params);
             if (Validator.isEmpty(respone)) {
                 return "响应信息空";
@@ -733,6 +731,9 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         if (Validator.isEmpty(userVo.getRealName()) || Validator.isEmpty(userVo.getIdCard()) || Validator.isEmpty(userVo.getTelPhone())) {
             return "用户信息缺失";
         }
+        if (Validator.isEmpty(userVo.getEduLevel()) || Validator.isEmpty(userVo.getCompanyName()) || Validator.isEmpty(userVo.getSex())) {
+            return "用户详细信息缺失";
+        }
         if (Validator.isEmpty(orderGoods.getSevenYear())) {
             return "商品年份缺失";
         }
@@ -748,12 +749,15 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         params.put("sfz", userVo.getIdCard());
         params.put("dh", userVo.getTelPhone());
         params.put("bmrq", DateUtils.timestampToDate(bmrq));
-        String dataTxt = params.get("zh") + params.get("bh") + params.get("year") + params.get("xm") + params.get("sfz") + params.get("dh") + params.get("bmrq");
+        params.put("dw", userVo.getCompanyName());
+        params.put("xl", userVo.getEduLevel());
+        params.put("xb", userVo.getSex()==1?"男":"女");
+        String dataTxt = params.get("zh") + params.get("bh") + params.get("year") + params.get("xm") + params.get("sfz") + params.get("dh") + params.get("dw") + params.get("xl") + params.get("xb") + params.get("bmrq");
         log.info("报名信息推送参数"+ dataTxt);
-        String encrypted = dataSign(dataTxt, SEVEN_OFFICIALPUSH_TOKEN);
-        params.put("SignMsg", encrypted);
-        String respone = "";
         try {
+            String encrypted = dataSign(dataTxt, SEVEN_OFFICIALPUSH_TOKEN);
+            params.put("SignMsg", encrypted);
+            String respone = "";
             respone = HttpUtils.postFormBody(OFFICIALPUSH_SEVEN_INFOPATH, params);
             if (Validator.isEmpty(respone)) {
                 return "响应信息空";
@@ -1100,12 +1104,15 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         params.put("ksrq", DateUtils.timestampToDate(startTime));
         params.put("jsrq", DateUtils.timestampToDate(endTime));
         String dataTxt = params.get("zh") + params.get("bh") + params.get("xm") + params.get("sfz") + params.get("ksrq") + params.get("jsrq");
-        String encrypted = dataSign(dataTxt, OFFICIALPUSH_TOKEN);
-        params.put("SignMsg", encrypted);
-        String respone = "";
-        log.info("学时信息推送参数"+ dataTxt);
         try {
+            String encrypted = dataSign(dataTxt, OFFICIALPUSH_TOKEN);
+            params.put("SignMsg", encrypted);
+            String respone = "";
+            log.info("学时信息推送参数"+ dataTxt);
             respone = HttpUtils.postFormBody(OFFICIALPUSH_PERIODPATH, params);
+            if (Validator.isEmpty(respone)) {
+                return "响应信息空";
+            }
             log.info("学时信息推送参数结果"+ respone);
             String[] split = respone.split("\\|");
             if (split.length < 2) {
@@ -1215,13 +1222,19 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         params.put("ksrq", DateUtils.timestampToDate(startTime));
         params.put("jsrq", DateUtils.timestampToDate(endTime));
         String dataTxt = params.get("zh") + params.get("bh") + params.get("year") + params.get("xm") + params.get("sfz") + params.get("ksrq") + params.get("jsrq");
-        String encrypted = dataSign(dataTxt, SEVEN_OFFICIALPUSH_TOKEN);
-        params.put("SignMsg", encrypted);
-        String respone = "";
-        log.info("学时信息推送参数"+ dataTxt);
         try {
+            String encrypted = dataSign(dataTxt, SEVEN_OFFICIALPUSH_TOKEN);
+            params.put("SignMsg", encrypted);
+            String respone = "";
+            log.info("学时信息推送参数"+ dataTxt);
             respone = HttpUtils.postFormBody(OFFICIALPUSH_SEVEN_PERIODPATH, params);
+            if (Validator.isEmpty(respone)) {
+                return "响应信息空";
+            }
             log.info("学时信息推送参数结果"+ respone);
+            if(Validator.isEmpty(respone)){
+                return null;
+            }
             String[] split = respone.split("\\|");
             if (split.length < 2) {
                 return "推送接口返回数据错误";
@@ -1434,6 +1447,30 @@ public class ClassGradeUserServiceImpl extends ServiceImpl<ClassGradeUserMapper,
         return totalRs;
     }
 
+    @Override
+    public String sendClientPost(ClientPostAddBo bo) {
+        if(Validator.isEmpty(bo.getContent())){
+            throw new CustomException("参数错误");
+        }
+        String respone = "";
+        try {
+            Map<String, String> params = Splitter.on("&").withKeyValueSeparator("=").split(bo.getContent());
+            Map<String, String> head = new HashMap<>();
+            if(Validator.isNotEmpty(bo.getToken())){
+                head.put("token", bo.getToken());
+            }
+            respone = HttpUtils.postFormBodyHeader(bo.getUrl(), params,head);
+            if (Validator.isEmpty(respone)) {
+                return "响应信息空";
+            }
+            return respone;
+
+        } catch (IOException e) {
+            //    throw new CustomException("请求错误");
+            return null;
+        }
+    }
+
     //填充满列表的用户信息
     private Map<String, Object> fillListWeek(List<ClassPeriodStudentExportVo> list) {
         List<ClassPeriodStudentExportWeekAllVo> newList = new ArrayList<>();

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/UserPeriodServiceImpl.java

@@ -540,6 +540,7 @@ public class UserPeriodServiceImpl extends ServiceImpl<UserPeriodMapper, UserPer
             subscribeBo.setUserCard(EncryptHandler.decrypt(user.getIdCard()));
             subscribeBo.setUserPhone(EncryptHandler.decrypt(user.getTelphone()));
             subscribeBo.setUserName(user.getRealname());
+            subscribeBo.setOrderGoodsId(bo.getOrderGoodsId());
             subscribeBo.setGoodsName(goods.getGoodsName());
             CourseBusinessQueryBo courseBusinessQueryBo = new CourseBusinessQueryBo();
             courseBusinessQueryBo.setId(goods.getBusinessId());

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/vo/ClassGradeUserVo.java

@@ -160,4 +160,16 @@ public class ClassGradeUserVo {
 	@ApiModelProperty("学习记录同步到老系统时间")
 	private Long toOldTime;
 	private Long orderGoodsId;
+	/** 教育层次 */
+	@cn.afterturn.easypoi.excel.annotation.Excel(name = "教育层次")
+	@ApiModelProperty("教育层次")
+	private String eduLevel;
+	/** 公司名称 */
+	@cn.afterturn.easypoi.excel.annotation.Excel(name = "公司名称")
+	@ApiModelProperty("公司名称")
+	private String companyName;
+	/** 性别 */
+	@cn.afterturn.easypoi.excel.annotation.Excel(name = "性别1男2女")
+	@ApiModelProperty("性别1男2女")
+	private Integer sex;
 }

+ 4 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/bo/OrderAddBo.java

@@ -101,15 +101,16 @@ public class OrderAddBo {
     /** 旧企业ID */
     @ApiModelProperty("旧企业ID")
     private String oldCompanyId;
-
     /** 旧机构ID */
     @ApiModelProperty("旧机构ID")
     private String oldInstitutionId;
-
     @ApiModelProperty("旧客户ID")
     private String oldCustomerId;
-
     /** 培训计划ID */
     @ApiModelProperty("计划ID")
     private Integer planId;
+    @ApiModelProperty("预约订单商品ID")
+    private Long subOrderGoodsId;
+    @ApiModelProperty("新B端题库开通标识")
+    private Integer openQuestionSign;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java

@@ -50,5 +50,5 @@ public interface OrderMapper extends BaseMapper<Order> {
 
     Integer getStudeCountByCode(String sevenCode);
 
-    ClassGrade getClassNameByGoods(@Param("educationTypeId") Long educationTypeId,@Param("projectId") Long projectId,@Param("businessId") Long businessId,@Param("majorId") Long majorId);
+    List<ClassGrade> getClassNameByGoods(@Param("educationTypeId") Long educationTypeId,@Param("projectId") Long projectId,@Param("businessId") Long businessId,@Param("majorId") Long majorId);
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -2,6 +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.goods.bo.QuestionOpenBo;
 import com.zhongzheng.modules.goods.bo.QuestionOpenImportBo;
 import com.zhongzheng.modules.goods.vo.QuestionOpenImportVo;
 import com.zhongzheng.modules.order.bo.*;
@@ -115,7 +116,7 @@ public interface IOrderService extends IService<Order> {
 
 	List<String> queryBusinessFullNameBySn(String orderSn);
 
-	boolean questionGoodsOpen(questionOpenBo bo);
+	boolean questionGoodsOpen(QuestionOpenBo bo);
 
     Boolean studyCheck(Long orderGoodsId, Long userId);
 

+ 23 - 10
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -35,10 +35,7 @@ import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
 import com.zhongzheng.modules.distribution.domain.DistributionActivity;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityGoodsService;
 import com.zhongzheng.modules.distribution.service.IDistributionActivityService;
-import com.zhongzheng.modules.goods.bo.GoodsAttachedAddBo;
-import com.zhongzheng.modules.goods.bo.GoodsBankAddBo;
-import com.zhongzheng.modules.goods.bo.GoodsFreeBankAddBo;
-import com.zhongzheng.modules.goods.bo.QuestionOpenImportBo;
+import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.domain.GoodsFreeBank;
 import com.zhongzheng.modules.goods.domain.GoodsQuestionRel;
@@ -76,7 +73,6 @@ 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;
@@ -2419,9 +2415,26 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         //七大员继教同一个专业下同一个班级名称
         Boolean classFlag = true;
         if (businessFull.contains("继续教育") && businessFull.contains("施工现场专业人员")){
-            ClassGrade gradeName = baseMapper.getClassNameByGoods(goods.getEducationTypeId(),goods.getProjectId().longValue(),goods.getBusinessId(),goods.getMajorId());
-            if (ObjectUtils.isNotNull(gradeName)){
-                classGrade.setClassName(gradeName.getClassName());
+            List<ClassGrade> gradeName = baseMapper.getClassNameByGoods(goods.getEducationTypeId(),goods.getProjectId().longValue(),goods.getBusinessId(),goods.getMajorId());
+            if (CollectionUtils.isNotEmpty(gradeName)){
+                ClassGrade grade = gradeName.stream().filter(x -> ObjectUtils.isNotNull(x.getClassStatus()) && x.getClassStatus() == 1).findFirst().orElse(null);
+                if (ObjectUtils.isNotEmpty(grade)){
+                    //存在已开班的班级
+                    classGrade.setClassStatus(grade.getClassStatus());
+                    classGrade.setOfficialName(grade.getOfficialName());
+                    classGrade.setClassName(grade.getClassName());
+                    classGrade.setLearningStatus(grade.getLearningStatus());
+                    if (grade.getLearningStatus() == 3){
+                        classGrade.setLearningTimeStart(grade.getLearningTimeStart());
+                    }
+                    classGrade.setClassStartTime(grade.getClassStartTime());
+                    classGrade.setClassEndTime(grade.getClassEndTime());
+                    classGrade.setInterfacePeriodId(grade.getInterfacePeriodId());
+                    classGrade.setInterfacePushId(grade.getInterfacePushId());
+                }else {
+                    String name = gradeName.stream().findFirst().get().getClassName();
+                    classGrade.setClassName(name);
+                }
                 classFlag = false;
             }
         }
@@ -3124,7 +3137,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean questionGoodsOpen(questionOpenBo bo) {
+    public boolean questionGoodsOpen(QuestionOpenBo bo) {
         //开通校验
         questionGoodsOpenCheck(bo);
         //创建录单信息
@@ -3210,7 +3223,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return iOrderInputService.save(orderInput);
     }
 
-    private void questionGoodsOpenCheck(questionOpenBo bo) {
+    private void questionGoodsOpenCheck(QuestionOpenBo bo) {
         for (Long userSubscribeId : bo.getUserSubscribeIds()) {
             //校验学员是否已经购买题库
             UserSubscribe userSubscribe = iUserSubscribeService.getById(userSubscribeId);

+ 18 - 0
zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml

@@ -799,6 +799,24 @@
           AND og.tenant_id = #{tenantId}
     </select>
 
+    <select id="getExternalQuestion" parameterType="com.zhongzheng.modules.course.bo.ExternalQuestionBo" resultType="com.zhongzheng.modules.course.vo.ExternalQuestionVo">
+        SELECT
+            g.goods_id,
+            qm.merchant_id,
+            g.goods_name,
+            qm.merchant_name,
+            qm.do_num,
+            g.stand_price AS goodsPrice,
+            g.cover_url
+        FROM
+            question_merchant qm
+                LEFT JOIN goods g ON qm.merchant_id = g.question_merchant_id
+        WHERE
+            qm.`status` = 1
+          AND qm.tenant_id = #{tenantId}
+          AND g.`status` = 1
+    </select>
+
     <select id="queryGoodsByIdTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
         SELECT *
         FROM `goods`

+ 6 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeUserMapper.xml

@@ -67,6 +67,9 @@
         <result property="toOldResult" column="to_old_result"/>
         <result property="toOldTime" column="to_old_time"/>
         <result property="orderGoodsId" column="order_goods_id"/>
+        <result property="sex" column="sex"/>
+        <result property="eduLevel" column="edu_level"/>
+        <result property="companyName" column="company_name"/>
     </resultMap>
 
 
@@ -247,6 +250,9 @@
         u.realname,
         u.id_card,
         u.telphone,
+        u.sex,
+        u.edu_level,
+        u.company_name,
         cg.class_name,
         cg.official_name,
         cg.class_status,

+ 0 - 1
zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

@@ -513,6 +513,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                       AND cgu.change_grade = 0
                 ) + ( SELECT COUNT( DISTINCT cgut.user_id ) FROM class_grade_user_temp cgut WHERE cgut.grade_id = cg.grade_id AND cgut.`status` = 1 )
             ) <![CDATA[ < ]]>  cg.student_upper
-            LIMIT 1
     </select>
 </mapper>

+ 2 - 2
zhongzheng-system/src/main/resources/mapper/modules/user/UserStudyRecordMapper.xml

@@ -828,7 +828,7 @@
             </otherwise>
         </choose>
         <if test="orderGoodsId != null and orderGoodsId != '' ">
-            AND up.order_goods_id =  #{orderGoodsId}
+            AND (up.order_goods_id =  #{orderGoodsId} or up.order_goods_id is null)
         </if>
         AND up.user_id = #{userId}
     </select>
@@ -905,7 +905,7 @@
             and up.type = 3
         </if>
         <if test="orderGoodsId != null and orderGoodsId != '' ">
-            AND up.order_goods_id =  #{orderGoodsId}
+            AND (up.order_goods_id =  #{orderGoodsId} or up.order_goods_id is null)
         </if>
         AND up.user_id = #{userId}
     </select>