yangdamao 2 gadi atpakaļ
vecāks
revīzija
8409b28faa
16 mainītis faili ar 353 papildinājumiem un 147 dzēšanām
  1. 11 0
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  2. 5 0
      zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java
  3. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/mapper/GoodsMapper.java
  4. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  5. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  6. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeOpenBo.java
  7. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java
  8. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeService.java
  9. 218 141
      zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java
  10. 45 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  11. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/mapper/SysTenantMapper.java
  12. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/ISysTenantService.java
  13. 5 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  14. 20 0
      zhongzheng-system/src/main/resources/mapper/modules/goods/GoodsMapper.xml
  15. 12 0
      zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml
  16. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/system/SysTenantMapper.xml

+ 11 - 0
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -434,6 +434,17 @@ public class CommonController extends BaseController {
         return AjaxResult.success(iClassGradeService.getOfficialGradeNum(bo));
     }
 
+    @ApiOperation("新增二建班级")
+    @PostMapping("common/free/save/class")
+    public AjaxResult openOfficialSaveGrade(@RequestBody ClassGradeOpenBo bo) {
+        if (!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(), bo.getSign())) {
+            return AjaxResult.error("签名错误");
+        }
+        iClassGradeService.openOfficialSaveGrade(bo);
+        return AjaxResult.success();
+    }
+
+
     @ApiOperation("预报名班级开班")
     @PostMapping("common/free/open/class")
     public AjaxResult openOfficialGrade(@RequestBody ClassGradeOpenBo bo) {

+ 5 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/SysTenantServiceImpl.java

@@ -491,6 +491,11 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
         .set(SysTenant::getStatus,-1));
     }
 
+    @Override
+    public List<SysTenant> getListNoTenant(Long tenantId) {
+        return baseMapper.getListNoTenant(tenantId);
+    }
+
     private void initRoles(Long newTenantId,Long tenantId) {
         List<String> roleKey = new ArrayList<>();
         roleKey.add("seller");

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

@@ -14,6 +14,7 @@ import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
 import com.zhongzheng.modules.goods.bo.UserGoodsListAllBo;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.vo.*;
+import com.zhongzheng.modules.system.domain.SysTenant;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.security.core.parameters.P;
 
@@ -99,4 +100,7 @@ public interface GoodsMapper extends BaseMapper<Goods> {
 
     @InterceptorIgnore(tenantLine = "true")
     List<Goods> getRelevanceGoodsNoTenant(@Param("businessName") String businessName,@Param("majName")String majName,@Param("goodsId")Long goodsId);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<Goods> getRelGoodsNoTenant(@Param("businessName") String businessName,@Param("categoryName") String categoryName,@Param("tenantId") Long tenantId);
 }

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

@@ -4,6 +4,7 @@ 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.bo.ReplenishExamBo;
+import com.zhongzheng.modules.course.domain.Major;
 import com.zhongzheng.modules.course.vo.CourseModuleFreeExamVo;
 import com.zhongzheng.modules.course.vo.ExternalQuestionVo;
 import com.zhongzheng.modules.course.vo.ReplenishExamVo;
@@ -13,6 +14,7 @@ import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.domain.Goods;
 import com.zhongzheng.modules.goods.vo.*;
 import com.zhongzheng.modules.grade.vo.SyncGoodsExport;
+import com.zhongzheng.modules.system.domain.SysTenant;
 
 import java.util.Collection;
 import java.util.List;
@@ -158,4 +160,6 @@ public interface IGoodsService extends IService<Goods> {
 	List<ReplenishExamVo> getReplenishExam(ReplenishExamBo bo);
 
 	List<Goods> getRelevanceGoodsNoTenant(String businessName,String majName,Long goodsId);
+
+	List<Goods> getRelGoodsNoTenant(String businessName, String categoryName, Long tenantId);
 }

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

@@ -5194,6 +5194,11 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         return baseMapper.getRelevanceGoodsNoTenant(businessName, majName, goodsId);
     }
 
+    @Override
+    public List<Goods> getRelGoodsNoTenant(String businessName, String categoryName, Long tenantId) {
+        return baseMapper.getRelGoodsNoTenant(businessName,categoryName,tenantId);
+    }
+
     private void updateHandoutsId(Long goodsId, Long tenantId, Long handoutsId) {
         baseMapper.updateHandoutsId(goodsId,tenantId,handoutsId);
     }

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/bo/ClassGradeOpenBo.java

@@ -42,4 +42,10 @@ public class ClassGradeOpenBo implements Serializable {
     private Integer learningStatus;
 
     private Long learningTimeStart;
+
+    @ApiModelProperty("业务层次")
+    private String businessName;
+
+    @ApiModelProperty("专业名称")
+    private String majorName;
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/mapper/ClassGradeMapper.java

@@ -105,4 +105,7 @@ public interface ClassGradeMapper extends BaseMapper<ClassGrade> {
 
     @InterceptorIgnore(tenantLine = "true")
     void updateByIdNoTenant(ClassGrade update);
+
+    @InterceptorIgnore(tenantLine = "true")
+    ClassGrade getCodeNoTenant(@Param("registerCode") String registerCode,@Param("tenantId") Long tenantId);
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/IClassGradeService.java

@@ -109,4 +109,8 @@ public interface IClassGradeService extends IService<ClassGrade> {
 	List<ClassGradeVo> searchGradeList(ClassGradeQueryBo bo);
 
     List<ClassGrade> listByIdsNoTenant(List<Long> ids);
+
+    ClassGrade getCodeNoTenant(String registerCode, Long tenantId);
+
+	void openOfficialSaveGrade(ClassGradeOpenBo bo);
 }

+ 218 - 141
zhongzheng-system/src/main/java/com/zhongzheng/modules/grade/service/impl/ClassGradeServiceImpl.java

@@ -27,6 +27,7 @@ import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.domain.CourseEducationType;
 import com.zhongzheng.modules.course.domain.CourseSubject;
+import com.zhongzheng.modules.course.domain.Major;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.*;
 import com.zhongzheng.modules.goods.domain.Goods;
@@ -259,30 +260,11 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
         add.setGradeCode(ServletUtils.getEncoded("BJ"));
-        /*LambdaQueryWrapper<ClassGrade> lqw = Wrappers.lambdaQuery();
-        lqw.eq(ClassGrade::getClassName, add.getClassName());
-        lqw.eq(ClassGrade::getStatus, 1);
-        List<ClassGrade> list = this.list(lqw);
-        if (CollectionUtils.isNotEmpty(list)) {
-            throw new RuntimeException("班级名称不能重复");
-        }*/
+
         //企业ID
         String tenant = ServletUtils.getRequest().getHeader("TenantId");
-        SysOldOrg org = sysOldOrgService.list(new LambdaQueryWrapper<SysOldOrg>()
-                .eq(SysOldOrg::getTenantId, tenant)
-                .last("limit 1")).stream().findFirst().orElse(null);
-//        //校验是否二建/二造商品创建班级
-//        if (bo.getClassGradeGoodsAddBos() != null &&
-//                (ObjectUtils.isNull(bo.getClassStatus()) || 1 == bo.getClassStatus()) && org.getShareClass() == 1) {
-//            Long goodsId = bo.getClassGradeGoodsAddBos()[0];
-//            Goods goods = iGoodsService.getById(goodsId);
-//            CourseBusinessQueryBo businessQueryBo = new CourseBusinessQueryBo();
-//            businessQueryBo.setId(goods.getBusinessId());
-//            String fullName = iCourseBusinessService.queryFullName(businessQueryBo);
-//            if (("继续教育二级建造师".equals(fullName)) || ("继续教育二级造价师".equals(fullName))) {
-//                throw new CustomException("二建/二造不允许直接创建开班班级!");
-//            }
-//        }
+        SysTenant sysTenant = sysTenantService.getById(Long.valueOf(tenant));
+
         //班级绑定学员资料推送和学时推送
         List<ClassGradeInterface> list = iClassGradeInterfaceService.list(new LambdaQueryWrapper<ClassGradeInterface>()
                 .eq(ClassGradeInterface::getStatus, 1)
@@ -296,6 +278,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                 }
             });
         }
+        Boolean erJfalg = false;
         //七大员继教班级默认学时推送和报名推送
         if (bo.getClassGradeGoodsAddBos() != null ) {
             Long goodsId = bo.getClassGradeGoodsAddBos()[0];
@@ -323,108 +306,115 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                 }
                 String sevenCode = getSevenCode(goodsId);
                 add.setSevenCode(sevenCode);
+            }else if (("继续教育二级建造师".equals(businessName)) || ("继续教育二级造价师".equals(businessName))){
+                erJfalg = true;
+                add.setRegisterCode(ServletUtils.getEncoded("PIY"));
             }
         }
         //是否创建官方班级编号
-        if (bo.getClassGradeGoodsAddBos() != null &&
-                (ObjectUtils.isNull(bo.getClassStatus()) || 0 == bo.getClassStatus()) && org.getShareClass() == 1) {
-            Long goodsId = bo.getClassGradeGoodsAddBos()[0];
-            Goods goods = iGoodsService.getById(goodsId);
-            CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
-            CourseBusinessQueryBo businessQueryBo = new CourseBusinessQueryBo();
-            businessQueryBo.setId(goods.getBusinessId());
-            String fullName = iCourseBusinessService.queryFullName(businessQueryBo);
-            if (("继续教育二级建造师".equals(fullName)) || ("继续教育二级造价师".equals(fullName))) {
-                List<Goods> goodsList = iGoodsService.list(new LambdaQueryWrapper<Goods>()
-                        .eq(Goods::getEducationTypeId, goods.getEducationTypeId())
-                        .eq(Goods::getBusinessId, goods.getBusinessId())
-                        .eq(Goods::getStatus, 1)
-                        .eq(Goods::getGoodsStatus, 1)
-                        .eq(Goods::getProjectId, goods.getProjectId())
-                        .eq(Goods::getSubjectIds, goods.getSubjectIds()));
-                if (goodsList.size() > 1) {
-                    //该业务层次下有多个商品
-                    List<Long> goodsIds = goodsList.stream().filter(item -> !item.getGoodsId().equals(goodsId)).map(Goods::getGoodsId).collect(Collectors.toList());
-                    List<ClassGradeGoods> goodsGradeList = iClassGradeGoodsService
-                            .list(new LambdaQueryWrapper<ClassGradeGoods>()
-                                    .in(ClassGradeGoods::getGoodsId, goodsIds));
-                    if (CollectionUtils.isNotEmpty(goodsGradeList)) {
-                        Map<Long, List<ClassGradeGoods>> map = goodsGradeList.stream().collect(Collectors.groupingBy(ClassGradeGoods::getGoodsId));
-                        List<ClassGradeSortBo> sortList = new ArrayList<>();
-                        map.forEach((k, v) -> {
-                            ClassGradeSortBo sortBo = new ClassGradeSortBo();
-                            sortBo.setKey(k);
-                            sortBo.setSize(v.size());
-                            sortList.add(sortBo);
-                        });
-                        ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
-                        List<ClassGradeGoods> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGradeGoods::getCreateTime)).collect(Collectors.toList());
-                        //班级信息
-                        List<ClassGrade> listGrade = listByIds(classGradesMax.stream().map(ClassGradeGoods::getGradeId).collect(Collectors.toList()));
-                        //获取当前机构商品下的班级
-                        List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goods.getGoodsId());
-                        if (gradeGoods.size() < listGrade.size()) {
-                            ClassGrade grade = listGrade.get(gradeGoods.size());
-                            if (checkEjjjPeopleNumLimit(business.getId(), grade.getGradeId())) {
-                                add.setOfficialName(listGrade.get(gradeGoods.size()).getOfficialName());
-                                add.setClassStatus(0);
-                            } else {
-                                add.setOfficialName(ServletUtils.getEncoded("PIY"));
-                                add.setClassStatus(0);
-                            }
-                        }
-                    }
-                }
-
-                if (StringUtils.isBlank(add.getOfficialName())) {
-                    List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(goods.getSubjectIds().split(",")));
-                    List<String> subNames = courseSubjectList.stream().map(CourseSubject::getSubjectName).collect(Collectors.toList());
-                    List<Long> subIds = iCourseSubjectService.getIdsByTenant(subNames);
-                    //获取业务层次下所有班级
-                    ClassGradeListBo bgListBo = new ClassGradeListBo();
-                    bgListBo.setAliasName(business.getAliasName());
-                    bgListBo.setSubIds(subIds);
-                    List<ClassGrade> classGrades = baseMapper.getGradeListByTenant(bgListBo);
-                    if (CollectionUtils.isEmpty(classGrades)) {
-                        //生成预报名官方编号
-                        add.setOfficialName(ServletUtils.getEncoded("PIY"));
-                        add.setClassStatus(0);
-                    } else {
-                        //获取班级创建最多的机构
-                        Map<Long, List<ClassGrade>> map = classGrades.stream().collect(Collectors.groupingBy(ClassGrade::getTenantId));
-                        List<ClassGradeSortBo> sortList = new ArrayList<>();
-                        map.forEach((k, v) -> {
-                            ClassGradeSortBo sortBo = new ClassGradeSortBo();
-                            sortBo.setKey(k);
-                            Map<String, List<ClassGrade>> collect = v.stream().collect(Collectors.groupingBy(ClassGrade::getOfficialName));
-                            sortBo.setSize(collect.keySet().size());
-                            sortList.add(sortBo);
-                        });
-                        ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
-                        List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
-                        //去重
-                        List<String> codeStrs = new ArrayList<>();
-                        for (ClassGrade gradesMax : classGradesMax) {
-                            if (codeStrs.contains(gradesMax.getOfficialName())) {
-                                continue;
-                            }
-                            codeStrs.add(gradesMax.getOfficialName());
-                        }
-                        //获取当前机构商品下的班级
-                        List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goodsId);
-                        if (gradeGoods.size() < codeStrs.size()) {
-                            add.setOfficialName(codeStrs.get(gradeGoods.size()));
-                            add.setClassStatus(0);
-                        } else {
-                            //生成预报名官方编号
-                            add.setOfficialName(ServletUtils.getEncoded("PIY"));
-                            add.setClassStatus(0);
-                        }
-                    }
-                }
-            }
-        }
+//        if (bo.getClassGradeGoodsAddBos() != null &&
+//                (ObjectUtils.isNull(bo.getClassStatus()) || 0 == bo.getClassStatus()) && org.getShareClass() == 1) {
+//            Long goodsId = bo.getClassGradeGoodsAddBos()[0];
+//            Goods goods = iGoodsService.getById(goodsId);
+//            CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
+//            CourseBusinessQueryBo businessQueryBo = new CourseBusinessQueryBo();
+//            businessQueryBo.setId(goods.getBusinessId());
+//            String fullName = iCourseBusinessService.queryFullName(businessQueryBo);
+//            if (("继续教育二级建造师".equals(fullName)) || ("继续教育二级造价师".equals(fullName))) {
+//                List<Goods> goodsList = iGoodsService.list(new LambdaQueryWrapper<Goods>()
+//                        .eq(Goods::getEducationTypeId, goods.getEducationTypeId())
+//                        .eq(Goods::getBusinessId, goods.getBusinessId())
+//                        .eq(Goods::getStatus, 1)
+//                        .eq(Goods::getGoodsStatus, 1)
+//                        .eq(Goods::getProjectId, goods.getProjectId())
+//                        .eq(Goods::getSubjectIds, goods.getSubjectIds()));
+//                if (goodsList.size() > 1) {
+//                    //该业务层次下有多个商品
+//                    List<Long> goodsIds = goodsList.stream().filter(item -> !item.getGoodsId().equals(goodsId)).map(Goods::getGoodsId).collect(Collectors.toList());
+//                    List<ClassGradeGoods> goodsGradeList = iClassGradeGoodsService
+//                            .list(new LambdaQueryWrapper<ClassGradeGoods>()
+//                                    .in(ClassGradeGoods::getGoodsId, goodsIds));
+//                    if (CollectionUtils.isNotEmpty(goodsGradeList)) {
+//                        Map<Long, List<ClassGradeGoods>> map = goodsGradeList.stream().collect(Collectors.groupingBy(ClassGradeGoods::getGoodsId));
+//                        List<ClassGradeSortBo> sortList = new ArrayList<>();
+//                        map.forEach((k, v) -> {
+//                            ClassGradeSortBo sortBo = new ClassGradeSortBo();
+//                            sortBo.setKey(k);
+//                            sortBo.setSize(v.size());
+//                            sortList.add(sortBo);
+//                        });
+//                        ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
+//                        List<ClassGradeGoods> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGradeGoods::getCreateTime)).collect(Collectors.toList());
+//                        //班级信息
+//                        List<ClassGrade> listGrade = listByIds(classGradesMax.stream().map(ClassGradeGoods::getGradeId).collect(Collectors.toList()));
+//                        //获取当前机构商品下的班级
+//                        List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goods.getGoodsId());
+//                        if (gradeGoods.size() < listGrade.size()) {
+//                            ClassGrade grade = listGrade.get(gradeGoods.size());
+//                            if (checkEjjjPeopleNumLimit(business.getId(), grade.getGradeId())) {
+//                                add.setOfficialName(listGrade.get(gradeGoods.size()).getOfficialName());
+//                                add.setClassStatus(0);
+//                            } else {
+//                                add.setOfficialName(ServletUtils.getEncoded("PIY"));
+//                                add.setClassStatus(0);
+//                            }
+//                        }
+//                    }
+//                }
+//
+//                if (StringUtils.isBlank(add.getOfficialName())) {
+//                    List<CourseSubject> courseSubjectList = iCourseSubjectService.listByIds(Arrays.asList(goods.getSubjectIds().split(",")));
+//                    List<String> subNames = courseSubjectList.stream().map(CourseSubject::getSubjectName).collect(Collectors.toList());
+//                    List<Long> subIds = iCourseSubjectService.getIdsByTenant(subNames);
+//                    //获取业务层次下所有班级
+//                    ClassGradeListBo bgListBo = new ClassGradeListBo();
+//                    bgListBo.setAliasName(business.getAliasName());
+//                    bgListBo.setSubIds(subIds);
+//                    List<ClassGrade> classGrades = baseMapper.getGradeListByTenant(bgListBo);
+//                    if (CollectionUtils.isEmpty(classGrades)) {
+//                        //生成预报名官方编号
+//                        add.setOfficialName(ServletUtils.getEncoded("PIY"));
+//                        add.setClassStatus(0);
+//                    } else {
+//                        //获取班级创建最多的机构
+//                        Map<Long, List<ClassGrade>> map = classGrades.stream().collect(Collectors.groupingBy(ClassGrade::getTenantId));
+//                        List<ClassGradeSortBo> sortList = new ArrayList<>();
+//                        map.forEach((k, v) -> {
+//                            ClassGradeSortBo sortBo = new ClassGradeSortBo();
+//                            sortBo.setKey(k);
+//                            Map<String, List<ClassGrade>> collect = v.stream().collect(Collectors.groupingBy(ClassGrade::getOfficialName));
+//                            sortBo.setSize(collect.keySet().size());
+//                            sortList.add(sortBo);
+//                        });
+//                        ClassGradeSortBo sortBo = sortList.stream().sorted(Comparator.comparing(ClassGradeSortBo::getSize).reversed()).findFirst().orElse(null);
+//                        List<ClassGrade> classGradesMax = map.get(sortBo.getKey()).stream().sorted(Comparator.comparing(ClassGrade::getCreateTime)).collect(Collectors.toList());
+//                        //去重
+//                        List<String> codeStrs = new ArrayList<>();
+//                        for (ClassGrade gradesMax : classGradesMax) {
+//                            if (codeStrs.contains(gradesMax.getOfficialName())) {
+//                                continue;
+//                            }
+//                            codeStrs.add(gradesMax.getOfficialName());
+//                        }
+//                        //获取当前机构商品下的班级
+//                        List<ClassGradeGoods> gradeGoods = iClassGradeGoodsService.getGradeGoodsList(goodsId);
+//                        if (gradeGoods.size() < codeStrs.size()) {
+//                            add.setOfficialName(codeStrs.get(gradeGoods.size()));
+//                            add.setClassStatus(0);
+//                        } else {
+//                            //生成预报名官方编号
+//                            add.setOfficialName(ServletUtils.getEncoded("PIY"));
+//                            add.setClassStatus(0);
+//                        }
+//                    }
+//                }
+//            }
+//        }
         boolean save = this.save(add);
+        if (erJfalg && bo.getClassGradeGoodsAddBos() != null){
+            //二建继教班级创建,所有共享班级机构同步创建
+            synchronousCreation(add,sysTenant,bo.getClassGradeGoodsAddBos()[0]);
+        }
         //添加班级商品
         if (bo.getClassGradeGoodsAddBos() != null) {
             for (Long classGradeGoodsAddBo : bo.getClassGradeGoodsAddBos()) {
@@ -453,6 +443,46 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
         return save;
     }
 
+
+    private void synchronousCreation(ClassGrade classGrade, SysTenant sysTenant,Long goodsId) {
+        List<SysTenant> tenantList = sysTenantService.getListNoTenant(sysTenant.getTenantId());
+        if (CollectionUtils.isEmpty(tenantList)){
+            return;
+        }
+        Goods goods = iGoodsService.getById(goodsId);
+        String businessName = iGoodsService.getGoodsBusinessName(goodsId);
+        Major major = iMajorService.getById(goods.getMajorId());
+        tenantList.forEach(tenant -> {
+            //是否存在对应课程商品
+            List<Goods> relGoods = iGoodsService.getRelGoodsNoTenant(businessName,major.getCategoryName(),tenant.getTenantId());
+            if (CollectionUtils.isEmpty(relGoods)){
+                return;
+            }
+            //班级是否存在
+            ClassGrade grade = baseMapper.getCodeNoTenant(classGrade.getRegisterCode(),tenant.getTenantId());
+            if (ObjectUtils.isNotNull(grade)){
+                //已经存在 不创建
+                return;
+            }
+
+            //同步班级
+            classGrade.setGradeId(null);
+            classGrade.setTenantId(tenant.getTenantId());
+            save(classGrade);
+
+            List<ClassGradeGoods> gradeGoods = relGoods.stream().map(item -> {
+                ClassGradeGoods classGradeGoods = new ClassGradeGoods();
+                classGradeGoods.setGradeId(classGrade.getGradeId());
+                classGradeGoods.setGoodsId(item.getGoodsId());
+                classGradeGoods.setCreateTime(DateUtils.getNowTime());
+                classGradeGoods.setUpdateTime(DateUtils.getNowTime());
+                classGradeGoods.setTenantId(tenant.getTenantId());
+                return classGradeGoods;
+            }).collect(Collectors.toList());
+            iClassGradeGoodsService.saveBatch(gradeGoods);
+        });
+    }
+
     private String getSevenCode(Long goodsId) {
         Goods g = iGoodsService.getById(goodsId);
         List<Goods> list = iGoodsService.list(new LambdaQueryWrapper<Goods>()
@@ -507,10 +537,6 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
                 if (!checkClassUserNum(goods.getBusinessId(), update.getGradeId())) {
                     throw new RuntimeException("班级人数超过上限,不能开班,请检查!");
                 }
-                ClassGrade gradeGrade = getById(update.getGradeId());
-                if (StringUtils.isNotBlank(gradeGrade.getOfficialName())) {
-                    update.setRegisterCode(gradeGrade.getOfficialName());
-                }
                 //二建/二造官方信息推送开关打开
                 List<ClassGradeInterface> interfaceList = iClassGradeInterfaceService
                         .list(new LambdaQueryWrapper<ClassGradeInterface>()
@@ -625,21 +651,7 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
 
         ClassGrade grade = getById(update.getGradeId());
         if ((("继续教育二级建造师".equals(fullName)) || ("继续教育二级造价师".equals(fullName))) && org.getShareClass() == 1) {
-            if (ObjectUtils.isNotNull(grade) && ObjectUtils.isNotNull(grade.getClassStatus())
-                    && StringUtils.isNotBlank(grade.getOfficialName()) && grade.getClassStatus() == 1) {
-//                List<ClassGrade> list = list(new LambdaQueryWrapper<ClassGrade>().eq(ClassGrade::getOfficialName, update.getRegisterCode()));
-//                if (CollectionUtils.isNotEmpty(list)){
-//                    update(new LambdaUpdateWrapper<ClassGrade>()
-//                            .set(ClassGrade::getOfficialName,update.getOfficialName())
-//                            .set(ClassGrade::getRegisterCode,update.getRegisterCode())
-//                            .set(ClassGrade::getClassStartTime,update.getClassStartTime())
-//                            .set(ClassGrade::getClassEndTime,update.getClassEndTime())
-//                            .set(ClassGrade::getClassStatus,update.getClassStatus())
-//                            .set(ClassGrade::getLearningStatus,update.getLearningStatus())
-//                            .set(ClassGrade::getInterfacePushId,update.getInterfacePushId())
-//                            .in(ClassGrade::getGradeId,list.stream().map(ClassGrade::getGradeId).collect(Collectors.toList())));
-//                }
-
+            if (ObjectUtils.isNotNull(grade) && ObjectUtils.isNotNull(grade.getClassStatus()) && grade.getClassStatus() == 1) {
                 ClassGradeOpenBo openBo = new ClassGradeOpenBo();
                 openBo.setOfficialName(grade.getOfficialName());
                 openBo.setRegisterCode(grade.getRegisterCode());
@@ -1440,8 +1452,8 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
             return;
         }
         List<Long> ids = list.stream().map(ClassGrade::getGradeId).collect(Collectors.toList());
-        //保留预报名编号
-        baseMapper.UpGradeCodeByIdTenant(ids);
+//        //保留预报名编号
+//        baseMapper.UpGradeCodeByIdTenant(ids);
 
         ClassGradeOpenUpBo openUpBo = new ClassGradeOpenUpBo();
         openUpBo.setGradeIds(ids);
@@ -1562,6 +1574,71 @@ public class ClassGradeServiceImpl extends ServiceImpl<ClassGradeMapper, ClassGr
         return baseMapper.listByIdsNoTenant(ids);
     }
 
+    @Override
+    public ClassGrade getCodeNoTenant(String registerCode, Long tenantId) {
+        return baseMapper.getCodeNoTenant(registerCode,tenantId);
+    }
+
+    @Override
+    public void openOfficialSaveGrade(ClassGradeOpenBo bo) {
+        List<SysTenant> tenantList = sysTenantService.getListNoTenant(0L);
+        if (CollectionUtils.isEmpty(tenantList)){
+            return;
+        }
+        tenantList.forEach(tenant -> {
+            //是否存在对应课程商品
+            List<Goods> relGoods = iGoodsService.getRelGoodsNoTenant(bo.getBusinessName(),bo.getMajorName(),tenant.getTenantId());
+            if (CollectionUtils.isEmpty(relGoods)){
+                return;
+            }
+            //班级是否存在
+            ClassGrade grade = baseMapper.getCodeNoTenant(bo.getRegisterCode(),tenant.getTenantId());
+            if (ObjectUtils.isNotNull(grade)){
+                //已经存在 不创建
+                return;
+            }
+            ClassGrade classGrade = new ClassGrade();
+            classGrade.setCreateTime(DateUtils.getNowTime());
+            if (bo.getClassStatus() == 1){
+                //开班
+                classGrade.setClassStatus(1);
+                classGrade.setOfficialName(bo.getOfficialName());
+                classGrade.setLearningStatus(1);
+                classGrade.setClassStartTime(bo.getClassStartTime());
+                classGrade.setClassEndTime(bo.getClassEndTime());
+                //二建/二造官方信息推送开关打开
+                List<ClassGradeInterface> interfaceList = iClassGradeInterfaceService
+                        .list(new LambdaQueryWrapper<ClassGradeInterface>()
+                                .eq(ClassGradeInterface::getType, 1).last("limit 1"));
+                if (CollectionUtils.isNotEmpty(interfaceList)) {
+                    classGrade.setInterfacePushId(interfaceList.get(0).getId());
+                }
+            }else {
+                classGrade.setClassStatus(0);
+                classGrade.setLearningStatus(2);//待定
+            }
+            classGrade.setStudentUpper(ClassGrade.INIT_UPPER); //上限300
+            classGrade.setUpdateTime(DateUtils.getNowTime());
+            classGrade.setStatus(1);
+            String gradeCode = ServletUtils.getEncoded("BJ");
+            classGrade.setGradeCode(gradeCode);
+            classGrade.setClassName(bo.getClassName());
+            classGrade.setTenantId(tenant.getTenantId());
+            classGrade.setRegisterCode(bo.getRegisterCode());
+            save(classGrade);
+            List<ClassGradeGoods> gradeGoods = relGoods.stream().map(item -> {
+                ClassGradeGoods classGradeGoods = new ClassGradeGoods();
+                classGradeGoods.setGradeId(classGrade.getGradeId());
+                classGradeGoods.setGoodsId(item.getGoodsId());
+                classGradeGoods.setCreateTime(DateUtils.getNowTime());
+                classGradeGoods.setUpdateTime(DateUtils.getNowTime());
+                classGradeGoods.setTenantId(tenant.getTenantId());
+                return classGradeGoods;
+            }).collect(Collectors.toList());
+            iClassGradeGoodsService.saveBatch(gradeGoods);
+        });
+    }
+
     //创建预开班班级
     private void creatClass(List<Long> goodsIds, Long tenantId, String code) {
         goodsIds.forEach(goodsId -> {

+ 45 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -2485,7 +2485,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             String fullName = iCourseBusinessService.queryFullName(businessQueryBo);
             if ((("继续教育二级建造师".equals(fullName)) || ("继续教育二级造价师".equals(fullName))) && org.getShareClass() == 1) {
                 //生成预开班编号
-                classGrade.setOfficialName(createGradeCode(goodsId, businessVo));
+//                classGrade.setOfficialName(createGradeCode(goodsId, businessVo));
+                classGrade.setRegisterCode(ServletUtils.getEncoded("PIY"));
             }
 
         } else {
@@ -2561,6 +2562,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         }
 
         boolean save = iClassGradeService.save(classGrade);
+        if ((("继续教育二级建造师".equals(businessFull)) || ("继续教育二级造价师".equals(businessFull))) && sysTenant.getShareClass() == 1) {
+            //二建继教班级创建,所有共享班级机构同步创建
+            synchronousCreation(classGrade,sysTenant,goodsId);
+        }
         //绑定班级商品
         ClassGradeGoods classGradeGoods = new ClassGradeGoods();
         classGradeGoods.setGradeId(classGrade.getGradeId());
@@ -2573,6 +2578,45 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return true;
     }
 
+    private void synchronousCreation(ClassGrade classGrade, SysTenant sysTenant,Long goodsId) {
+        List<SysTenant> tenantList = iSysTenantService.getListNoTenant(sysTenant.getTenantId());
+        if (CollectionUtils.isEmpty(tenantList)){
+            return;
+        }
+        Goods goods = iGoodsService.getById(goodsId);
+        String businessName = iGoodsService.getGoodsBusinessName(goodsId);
+        Major major = iMajorService.getById(goods.getMajorId());
+        tenantList.forEach(tenant -> {
+            //是否存在对应课程商品
+            List<Goods> relGoods = iGoodsService.getRelGoodsNoTenant(businessName,major.getCategoryName(),tenant.getTenantId());
+            if (CollectionUtils.isEmpty(relGoods)){
+                return;
+            }
+            //班级是否存在
+            ClassGrade grade = iClassGradeService.getCodeNoTenant(classGrade.getRegisterCode(),tenant.getTenantId());
+            if (ObjectUtils.isNotNull(grade)){
+                //已经存在 不创建
+                return;
+            }
+
+            //同步班级
+            classGrade.setGradeId(null);
+            classGrade.setTenantId(tenant.getTenantId());
+            iClassGradeService.save(classGrade);
+
+            List<ClassGradeGoods> gradeGoods = relGoods.stream().map(item -> {
+                ClassGradeGoods classGradeGoods = new ClassGradeGoods();
+                classGradeGoods.setGradeId(classGrade.getGradeId());
+                classGradeGoods.setGoodsId(item.getGoodsId());
+                classGradeGoods.setCreateTime(DateUtils.getNowTime());
+                classGradeGoods.setUpdateTime(DateUtils.getNowTime());
+                classGradeGoods.setTenantId(tenant.getTenantId());
+                return classGradeGoods;
+            }).collect(Collectors.toList());
+            iClassGradeGoodsService.saveBatch(gradeGoods);
+        });
+    }
+
     private String getSevenCode(Long goodsId) {
         Goods g = iGoodsService.getById(goodsId);
         List<Goods> list = iGoodsService.list(new LambdaQueryWrapper<Goods>()

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/mapper/SysTenantMapper.java

@@ -1,11 +1,14 @@
 package com.zhongzheng.modules.system.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
 import com.zhongzheng.modules.system.domain.SysConfig;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 系统商户Mapper接口
  *
@@ -14,4 +17,7 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface SysTenantMapper extends BaseMapper<SysTenant> {
     Long findTenantId(SysTenantQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    List<SysTenant> getListNoTenant(Long tenantId);
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/ISysTenantService.java

@@ -70,4 +70,5 @@ public interface ISysTenantService extends IService<SysTenant> {
 
 	boolean deleteTopTenant(SysTopTenantEditBo bo);
 
+    List<SysTenant> getListNoTenant(Long tenantId);
 }

+ 5 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -795,7 +795,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
 
             //是否关联题库
             GoodsQuestionRel questionRel = iGoodsQuestionRelService.getOne(new LambdaQueryWrapper<GoodsQuestionRel>()
-                    .eq(GoodsQuestionRel::getOrderGoodsId, bo.getOrderGoodsId())
+                    .eq(GoodsQuestionRel::getOrderGoodsId, userSubscribeVo.getOrderGoodsId())
                     .eq(GoodsQuestionRel::getStatus, 1)
                     .gt(GoodsQuestionRel::getQuestionDoNum, 0));
             if (ObjectUtils.isNotNull(questionRel)){
@@ -805,9 +805,9 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
 
             //取消预约推送新B端
             CdExamSubscribeBo cdExamSubscribeBo = new CdExamSubscribeBo();
-            cdExamSubscribeBo.setUserId(bo.getUserId());
-            cdExamSubscribeBo.setOrderGoodsId(bo.getOrderGoodsId());
-            cdExamSubscribeBo.setExamApplyId(bo.getApplyId());
+            cdExamSubscribeBo.setUserId(userSubscribeVo.getUserId());
+            cdExamSubscribeBo.setOrderGoodsId(userSubscribeVo.getOrderGoodsId());
+            cdExamSubscribeBo.setExamApplyId(userSubscribeVo.getApplyId());
             cdExamSubscribeBo.setSign(1);
             cdExamSubscribeBo.setTenantId(Long.valueOf(ServletUtils.getRequest().getHeader("TenantId")));
             cdExamSubscribeBo.setDataFrom(1);
@@ -2469,7 +2469,7 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
         add.setApplySiteEndTime(bo.getApplyEndTime());
         add.setApplySiteExamTime(bo.getApplyTime());
         add.setSiteId(site.getSiteId());
-        add.setExamExpend(1);
+        add.setExamExpend(0);
         add.setApplySiteAddress(site.getSiteAddress());
         add.setSubscribeStatus(1);
         add.setExamStatus(0);

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

@@ -855,6 +855,26 @@
           AND g.goods_id != #{goodsId}
     </select>
 
+
+    <select id="getRelGoodsNoTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
+        SELECT
+            g.*
+        FROM
+            goods g
+                LEFT JOIN course_education_type cet ON g.education_type_id = cet.id
+                LEFT JOIN course_project_type cpt ON g.project_id = cpt.id
+                LEFT JOIN course_business cb ON g.business_id = cb.id
+                LEFT JOIN major m ON g.major_id = m.id
+        WHERE
+            g.`status` = 1
+            AND INSTR(#{businessName}, cet.education_name)
+            AND INSTR(#{businessName}, cpt.project_name)
+            AND INSTR(#{majName}, m.category_name)
+            AND INSTR(#{businessName},cb.business_name)
+            AND g.tenant_id = #{tenantId}
+            AND INSTR(g.goods_name,'测试') &lt;= 0
+    </select>
+
     <select id="queryGoodsByTenant" parameterType="map" resultType="com.zhongzheng.modules.goods.domain.Goods">
         SELECT *
         FROM `goods`

+ 12 - 0
zhongzheng-system/src/main/resources/mapper/modules/grade/ClassGradeMapper.xml

@@ -1334,4 +1334,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             grade_id = #{gradeId}
     </update>
 
+    <select id="getCodeNoTenant" resultType="com.zhongzheng.modules.grade.domain.ClassGrade" parameterType="map">
+        SELECT
+            *
+        FROM
+            class_grade
+        WHERE
+            `status` = 1
+            AND register_code = #{registerCode}
+            AND tenant_id = #{tenantId}
+            LIMIT 1
+    </select>
+
 </mapper>

+ 4 - 0
zhongzheng-system/src/main/resources/mapper/modules/system/SysTenantMapper.xml

@@ -36,5 +36,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         from sys_tenant where (host_pc = #{hostPc} or host_h5 = #{hostH5} or host_live = #{hostLive} or host_h5_seller = #{hostH5Seller} or host_admin = #{hostAdmin})
     </select>
 
+    <select id="getListNoTenant" parameterType="java.lang.Long" resultType="com.zhongzheng.modules.system.domain.SysTenant">
+        SELECT * FROM sys_tenant WHERE share_class = 1 AND `status` = 1 AND tenant_id != #{tenantId}
+    </select>
+
 
 </mapper>