Browse Source

submit:商品复制

yangdamao 2 years ago
parent
commit
b6a5559dde
100 changed files with 2158 additions and 110 deletions
  1. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionController.java
  2. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/base/CertificateTpController.java
  3. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/base/ProfileTpController.java
  4. 1 1
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseChapterController.java
  5. 11 2
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/goods/GoodsController.java
  6. 6 0
      zhongzheng-common/src/main/java/com/zhongzheng/common/core/redis/RedisCache.java
  7. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Exam.java
  8. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/ExamQuestion.java
  9. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Question.java
  10. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionBusiness.java
  11. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapter.java
  12. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapterExam.java
  13. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModule.java
  14. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModuleChapter.java
  15. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionMapper.java
  16. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java
  17. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java
  18. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/Certificate.java
  19. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/CertificateCommon.java
  20. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/CertificateTp.java
  21. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ProfileField.java
  22. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ProfileTp.java
  23. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ProfileTpBusiness.java
  24. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/mapper/CertificateTpMapper.java
  25. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/mapper/ProfileTpMapper.java
  26. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/ICertificateTpService.java
  27. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/IProfileTpService.java
  28. 3 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java
  29. 4 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/ProfileTpServiceImpl.java
  30. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Course.java
  31. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseBusiness.java
  32. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseChapter.java
  33. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseChapterBusiness.java
  34. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseChapterSection.java
  35. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseEducationTier.java
  36. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseHandouts.java
  37. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseHandoutsBusiness.java
  38. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseMenu.java
  39. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseMenuExam.java
  40. 2 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java
  41. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModuleBusiness.java
  42. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModuleChapter.java
  43. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseProjectType.java
  44. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSection.java
  45. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSectionBusiness.java
  46. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseStreaming.java
  47. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseStreamingBusiness.java
  48. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSubject.java
  49. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSubjectProject.java
  50. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Major.java
  51. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/MajorProject.java
  52. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseBusinessMapper.java
  53. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseChapterMapper.java
  54. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseModuleMapper.java
  55. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseProjectTypeMapper.java
  56. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseStreamingMapper.java
  57. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/MajorMapper.java
  58. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseBusinessService.java
  59. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseChapterService.java
  60. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseProjectTypeService.java
  61. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/IMajorService.java
  62. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseBusinessServiceImpl.java
  63. 2 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseChapterServiceImpl.java
  64. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseModuleServiceImpl.java
  65. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseProjectTypeServiceImpl.java
  66. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseStreamingServiceImpl.java
  67. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/MajorServiceImpl.java
  68. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamPaper.java
  69. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/Goods.java
  70. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsCourse.java
  71. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsCourseTeacher.java
  72. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsSpec.java
  73. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsSpecAttribute.java
  74. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsSpecAttributeRelation.java
  75. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsSpecTemplate.java
  76. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsService.java
  77. 1838 71
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  78. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/pay/domain/PayServe.java
  79. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvCata.java
  80. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvVideo.java
  81. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/impl/PolyvVideoServiceImpl.java
  82. 46 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/bo/GoodsCopyEnum.java
  83. 40 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysGoodsCopyRecord.java
  84. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/mapper/SysGoodsCopyRecordMapper.java
  85. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/ISysGoodsCopyRecordService.java
  86. 17 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysGoodsCopyRecordServiceImpl.java
  87. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/School.java
  88. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/SchoolMapper.java
  89. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/ISchoolService.java
  90. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/SchoolServiceImpl.java
  91. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml
  92. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/base/CertificateTpMapper.xml
  93. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/base/ProfileTpMapper.xml
  94. 3 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseBusinessMapper.xml
  95. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterMapper.xml
  96. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleMapper.xml
  97. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseProjectTypeMapper.xml
  98. 1 1
      zhongzheng-system/src/main/resources/mapper/modules/course/CourseStreamingMapper.xml
  99. 4 0
      zhongzheng-system/src/main/resources/mapper/modules/course/MajorMapper.xml
  100. 5 0
      zhongzheng-system/src/main/resources/mapper/modules/user/SchoolMapper.xml

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/bank/QuestionController.java

@@ -76,7 +76,7 @@ public class QuestionController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<QuestionVo> list(QuestionQueryBo bo) {
         startPage();
-        List<QuestionVo> list = iQuestionService.selectList(bo);
+        List<QuestionVo> list = iQuestionService.selectListByBo(bo);
         return getDataTable(list);
     }
 

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/base/CertificateTpController.java

@@ -51,7 +51,7 @@ public class CertificateTpController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<CertificateTpVo> list(CertificateTpQueryBo bo) {
         startPage();
-        List<CertificateTpVo> list = iCertificateTpService.selectList(bo);
+        List<CertificateTpVo> list = iCertificateTpService.selectListByBo(bo);
         return getDataTable(list);
     }
 

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

@@ -50,7 +50,7 @@ public class ProfileTpController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<ProfileTpVo> list(ProfileTpQueryBo bo) {
         startPage();
-        List<ProfileTpVo> list = iProfileTpService.selectList(bo);
+        List<ProfileTpVo> list = iProfileTpService.selectListByBo(bo);
         return getDataTable(list);
     }
 

+ 1 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/course/CourseChapterController.java

@@ -57,7 +57,7 @@ public class CourseChapterController extends BaseController {
     @GetMapping("/list")
     public TableDataInfo<CourseChapterVo> list(CourseChapterQueryBo bo) {
         startPage();
-        List<CourseChapterVo> list = iCourseChapterService.selectList(bo);
+        List<CourseChapterVo> list = iCourseChapterService.selectListByBo(bo);
         return getDataTable(list);
     }
 

+ 11 - 2
zhongzheng-admin/src/main/java/com/zhongzheng/controller/goods/GoodsController.java

@@ -324,9 +324,18 @@ public class GoodsController extends BaseController {
     /**
      * 商品批量复制(新机构)
      */
-    @ApiOperation("商品批量复制")
-    @PostMapping("/goods/batch/copy")
+    @ApiOperation("商品批量复制(全量)")
+    @PostMapping("/batch/copy/all")
     public AjaxResult<Void> goodsBatchCopyTenant(@RequestBody GoodsBatchCopyTenantBo bo) {
         return toAjax(iGoodsService.goodsBatchCopyTenant(bo) ? 1 : 0);
     }
+
+    /**
+     * 商品关系ID处理(全量复制后的处理方法)
+     */
+    @ApiOperation("商品关系ID处理(全量复制后的处理方法)")
+    @GetMapping("/batch/copy/dispose")
+    public AjaxResult<Void> goodsBatchCopyDisposeTenant() {
+        return toAjax(iGoodsService.goodsBatchCopyDisposeTenant() ? 1 : 0);
+    }
 }

+ 6 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/redis/RedisCache.java

@@ -69,6 +69,12 @@ public class RedisCache
 
     }
 
+    public <T> void setCacheObjectTenant(final String key, final T value, final Integer timeout, final TimeUnit timeUnit)
+    {
+        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
+
+    }
+
     /**
      * 设置有效时间
      *

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Exam.java

@@ -69,6 +69,8 @@ private static final long serialVersionUID=1L;
     /** 开启模拟考 1启动(考试类型才能启动) 0关闭 */
     private Integer simulateStatus;
 
+    private Long tenantId;
+
     /** 模拟考配置参数 */
     @TableField(exist = false)
     private ExamSimulateConfigBo simulateConfig;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/ExamQuestion.java

@@ -36,4 +36,6 @@ private static final long serialVersionUID=1L;
     private BigDecimal score;
     /** 多选 每项部分分,默认0分则不开启 */
     private BigDecimal partScore;
+
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/Question.java

@@ -61,4 +61,5 @@ private static final long serialVersionUID=1L;
     private String importNo;
     /** 导入顺序 */
     private Long importSort;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionBusiness.java

@@ -42,6 +42,7 @@ private static final long serialVersionUID=1L;
     /** $column.columnComment */
     private Long majorId;
 
+    private Long tenantId;
     private Integer type;
 
     @TableField(exist = false)

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapter.java

@@ -44,4 +44,6 @@ private static final long serialVersionUID=1L;
     private Long publishStatus;
     /** 编码 */
     private String code;
+
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionChapterExam.java

@@ -32,4 +32,6 @@ private static final long serialVersionUID=1L;
     /** $column.columnComment */
     @TableId(value = "id")
     private Long id;
+
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModule.java

@@ -42,4 +42,6 @@ private static final long serialVersionUID=1L;
     private Integer status;
     /** 编码 */
     private String code;
+
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/domain/QuestionModuleChapter.java

@@ -32,4 +32,6 @@ private static final long serialVersionUID=1L;
     private Long chapterExamId;
     /** 排序 */
     private Long sort;
+    private Long tenantId;
+
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/mapper/QuestionMapper.java

@@ -20,7 +20,7 @@ import java.util.List;
  * @date 2021-10-21
  */
 public interface QuestionMapper extends BaseMapper<Question> {
-    List<QuestionVo> selectList(QuestionQueryBo bo);
+    List<QuestionVo> selectListByBo(QuestionQueryBo bo);
 
     List<GoodsUserQuestionVo> listGoodsUserQuestionVo(GoodsQueryBo bo);
 

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/IQuestionService.java

@@ -35,7 +35,7 @@ public interface IQuestionService extends IService<Question> {
 	 */
 	QuestionVo queryById(Long questionId);
 
-	List<QuestionVo> selectList(QuestionQueryBo bo);
+	List<QuestionVo> selectListByBo(QuestionQueryBo bo);
 
 
 	List<GoodsUserQuestionVo> listUserFreeGoodsList(GoodsQueryBo bo);

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/bank/service/impl/QuestionServiceImpl.java

@@ -155,8 +155,8 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
     }
 
     @Override
-    public List<QuestionVo> selectList(QuestionQueryBo bo) {
-        return questionMapper.selectList(bo);
+    public List<QuestionVo> selectListByBo(QuestionQueryBo bo) {
+        return questionMapper.selectListByBo(bo);
     }
 
     @Override

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/Certificate.java

@@ -40,4 +40,6 @@ private static final long serialVersionUID=1L;
     private String code;
     /** 备注 */
     private String remark;
+
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/CertificateCommon.java

@@ -42,4 +42,6 @@ private static final long serialVersionUID=1L;
     private String remark;
     /** 证书类型ID */
     private Long certificateTypeId;
+
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/CertificateTp.java

@@ -48,4 +48,6 @@ private static final long serialVersionUID=1L;
     private String keyValue;
     /** 证书ID */
     private Long certificateId;
+
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ProfileField.java

@@ -40,4 +40,5 @@ private static final long serialVersionUID=1L;
     private Long updateTime;
     /** 输入类型 1输入框 2下拉选择 3上传文件 4下载文件 5时间选择器 */
     private Long inputType;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ProfileTp.java

@@ -47,4 +47,5 @@ private static final long serialVersionUID=1L;
     /** 商品id拼接,多个,拼接 */
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String goodsIds;
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/domain/ProfileTpBusiness.java

@@ -34,4 +34,6 @@ private static final long serialVersionUID=1L;
     private Long businessId;
     /** 项目ID */
     private Long projectId;
+
+    private Long tenantId;
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/mapper/CertificateTpMapper.java

@@ -16,5 +16,5 @@ import java.util.List;
  * @date 2022-02-16
  */
 public interface CertificateTpMapper extends BaseMapper<CertificateTp> {
-    List<CertificateTpVo> selectList(CertificateTpQueryBo bo);
+    List<CertificateTpVo> selectListByBo(CertificateTpQueryBo bo);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/mapper/ProfileTpMapper.java

@@ -16,5 +16,5 @@ import java.util.List;
  * @date 2021-11-19
  */
 public interface ProfileTpMapper extends BaseMapper<ProfileTp> {
-    List<ProfileTpVo> selectList(ProfileTpQueryBo bo);
+    List<ProfileTpVo> selectListByBo(ProfileTpQueryBo bo);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/ICertificateTpService.java

@@ -45,7 +45,7 @@ public interface ICertificateTpService extends IService<CertificateTp> {
 
 	String makeCertificatePhoto(ClassGradeUserQueryBo bo);
 
-	List<CertificateTpVo> selectList(CertificateTpQueryBo bo);
+	List<CertificateTpVo> selectListByBo(CertificateTpQueryBo bo);
 
 	/**
 	 * 校验并删除数据

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/IProfileTpService.java

@@ -28,7 +28,7 @@ public interface IProfileTpService extends IService<ProfileTp> {
 	 */
 	List<ProfileTpVo> queryList(ProfileTpQueryBo bo);
 
-	List<ProfileTpVo> selectList(ProfileTpQueryBo bo);
+	List<ProfileTpVo> selectListByBo(ProfileTpQueryBo bo);
 
 	List<String> selectAllUseGoods(ProfileTpQueryBo bo);
 

+ 3 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/CertificateTpServiceImpl.java

@@ -180,7 +180,7 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
             CertificateTpQueryBo queryBo = new CertificateTpQueryBo();
             queryBo.setTpIds(tpIds);
             queryBo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
-            List<CertificateTpVo> list = selectList(queryBo);
+            List<CertificateTpVo> list = selectListByBo(queryBo);
             String nowDate = DateUtils.getDate();
             for(CertificateTpVo tpVo : list){
                 if("certificate01".equals(tpVo.getKeyValue())){
@@ -662,8 +662,8 @@ public class CertificateTpServiceImpl extends ServiceImpl<CertificateTpMapper, C
     }
 
     @Override
-    public List<CertificateTpVo> selectList(CertificateTpQueryBo bo) {
-        return this.baseMapper.selectList(bo);
+    public List<CertificateTpVo> selectListByBo(CertificateTpQueryBo bo) {
+        return this.baseMapper.selectListByBo(bo);
     }
 
     /**

+ 4 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/base/service/impl/ProfileTpServiceImpl.java

@@ -61,13 +61,13 @@ public class ProfileTpServiceImpl extends ServiceImpl<ProfileTpMapper, ProfileTp
     }
 
     @Override
-    public List<ProfileTpVo> selectList(ProfileTpQueryBo bo) {
-        return profileTpMapper.selectList(bo);
+    public List<ProfileTpVo> selectListByBo(ProfileTpQueryBo bo) {
+        return profileTpMapper.selectListByBo(bo);
     }
 
     @Override
     public List<String> selectAllUseGoods(ProfileTpQueryBo bo) {
-        List<ProfileTpVo> list = profileTpMapper.selectList(bo);
+        List<ProfileTpVo> list = profileTpMapper.selectListByBo(bo);
         List<String> strList = new ArrayList<>();
         for(int i=0;i<list.size();i++){
             if(Validator.isNotEmpty(list.get(i).getGoodsIds())){
@@ -163,7 +163,7 @@ public class ProfileTpServiceImpl extends ServiceImpl<ProfileTpMapper, ProfileTp
         ProfileTpQueryBo profileTpQueryBo = new ProfileTpQueryBo();
         profileTpQueryBo.setGoodsId(goodsId);
         profileTpQueryBo.setStatus(new ArrayList<Integer>(Arrays.asList(1)));
-        List<ProfileTpVo> profileTpVos = profileTpMapper.selectList(profileTpQueryBo);
+        List<ProfileTpVo> profileTpVos = profileTpMapper.selectListByBo(profileTpQueryBo);
         if (!CollectionUtils.isEmpty(profileTpVos)){
             return profileTpVos.get(0);
         }else {

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Course.java

@@ -69,4 +69,5 @@ private static final long serialVersionUID=1L;
     private Long projectId;
     /** 1显示 0隐藏 */
     private Integer courseShow;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseBusiness.java

@@ -72,4 +72,5 @@ private static final long serialVersionUID=1L;
     private Integer periodType;
     /** 学时审核层级:1初审,2初审和复审 */
     private Integer periodNumber;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseChapter.java

@@ -48,4 +48,5 @@ private static final long serialVersionUID=1L;
     private String code;
     /** 导入编号 */
     private String importNo;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseChapterBusiness.java

@@ -36,6 +36,7 @@ private static final long serialVersionUID=1L;
     private Long subjectId;
     /** 项目ID */
     private Long projectId;
+    private Long tenantId;
 
     @TableField(exist = false)
     private String educationName;

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseChapterSection.java

@@ -31,6 +31,7 @@ private static final long serialVersionUID=1L;
     private Long sectionId;
     /** 章ID */
     private Long chapterId;
+    private Long tenantId;
 
     private Long sort;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseEducationTier.java

@@ -30,4 +30,5 @@ private static final long serialVersionUID=1L;
     private Long educationId;
     /** 1,2,3,4 逗号隔开 代表层次1项目类型,2业务类型,3院校,4专业 */
     private String tireStatus;
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseHandouts.java

@@ -49,4 +49,6 @@ private static final long serialVersionUID=1L;
 
     /** 0不可下载 1下载 */
     private Integer canDownload;
+
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseHandoutsBusiness.java

@@ -42,4 +42,6 @@ private static final long serialVersionUID=1L;
 
     /** 科目ID */
     private Long subjectId;
+
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseMenu.java

@@ -44,4 +44,5 @@ private static final long serialVersionUID=1L;
     private Integer status;
     /** 排序 */
     private Integer sort;
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseMenuExam.java

@@ -44,4 +44,6 @@ private static final long serialVersionUID=1L;
     /** 修改时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
+
+    private Long tenantId;
 }

+ 2 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModule.java

@@ -24,7 +24,7 @@ public class CourseModule implements Serializable {
 private static final long serialVersionUID=1L;
 
     /** $column.columnComment */
-    @TableId(value = "module_id")
+    @TableId(value = "module_id", type = IdType.AUTO)
     private Long moduleId;
     /** 前缀名称 */
     private String prefixName;
@@ -48,4 +48,5 @@ private static final long serialVersionUID=1L;
     private Integer examType;
     /** 赠送卷ID */
     private Long freeExamId;
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModuleBusiness.java

@@ -37,6 +37,8 @@ private static final long serialVersionUID=1L;
     /** 项目ID */
     private Long projectId;
 
+    private Long tenantId;
+
     @TableField(exist = false)
     private String educationName;
     @TableField(exist = false)

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseModuleChapter.java

@@ -24,12 +24,14 @@ public class CourseModuleChapter implements Serializable {
 private static final long serialVersionUID=1L;
 
     /** $column.columnComment */
-    @TableId(value = "id")
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
     /** 模块id */
     private Long moduleId;
     /** 章ID */
     private Long chapterId;
 
+    private Long tenantId;
+
     private Long sort;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseProjectType.java

@@ -44,4 +44,5 @@ private static final long serialVersionUID=1L;
     private Long updateTime;
     /** 排序 */
     private Integer sort;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSection.java

@@ -73,4 +73,5 @@ private static final long serialVersionUID=1L;
     private Long realDuration;
     /** 讲师ID */
     private Long teacherId;
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSectionBusiness.java

@@ -37,6 +37,8 @@ private static final long serialVersionUID=1L;
     /** 项目ID */
     private Long projectId;
 
+    private Long tenantId;
+
     @TableField(exist = false)
     private String educationName;
     @TableField(exist = false)

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseStreaming.java

@@ -58,4 +58,6 @@ private static final long serialVersionUID=1L;
     private Integer status;
     /** 本地保利威视频ID */
     private Long polyvId;
+
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseStreamingBusiness.java

@@ -34,6 +34,7 @@ private static final long serialVersionUID=1L;
     private Long businessId;
     /** 项目ID */
     private Long projectId;
+    private Long tenantId;
 
     @TableField(exist = false)
     private String educationName;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSubject.java

@@ -42,4 +42,6 @@ private static final long serialVersionUID=1L;
     private String subjectName;
     /** 排序 */
     private Integer sort;
+
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/CourseSubjectProject.java

@@ -31,6 +31,8 @@ private static final long serialVersionUID=1L;
     /** 科目ID */
     private Long subjectId;
 
+    private Long tenantId;
+
     @TableField(fill = FieldFill.INSERT)
     private Long createTime;
     /** 修改时间 */

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/Major.java

@@ -46,4 +46,5 @@ private static final long serialVersionUID=1L;
     private String encoder;
     /** 排序 */
     private Integer sort;
+    private Long tenantId;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/domain/MajorProject.java

@@ -30,6 +30,8 @@ private static final long serialVersionUID=1L;
     private Long projectId;
     /** 科目ID */
     private Long majorId;
+
+    private Long tenantId;
     /** 添加时间 */
     @TableField(fill = FieldFill.INSERT)
     private Long createTime;

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseBusinessMapper.java

@@ -1,9 +1,11 @@
 package com.zhongzheng.modules.course.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.bo.CourseBusinessQueryBo;
 import com.zhongzheng.modules.course.domain.CourseBusiness;
 import com.zhongzheng.modules.course.vo.CourseBusinessVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.Collection;
 
@@ -18,4 +20,7 @@ public interface CourseBusinessMapper extends BaseMapper<CourseBusiness> {
     Collection<CourseBusinessVo> queryList(CourseBusinessQueryBo bo);
 
     String queryFullName(CourseBusinessQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    CourseBusiness getBusinessByTenant(@Param("encoder") String encoder,@Param("newTenantId") Long newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseChapterMapper.java

@@ -17,6 +17,6 @@ import java.util.List;
  * @date 2021-10-09
  */
 public interface CourseChapterMapper extends BaseMapper<CourseChapter> {
-    List<CourseChapterVo> selectList(CourseChapterQueryBo bo);
+    List<CourseChapterVo> selectListByBo(CourseChapterQueryBo bo);
     CourseChapterVo getInfo(Long chapterId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseModuleMapper.java

@@ -17,5 +17,5 @@ import java.util.List;
  * @date 2021-10-09
  */
 public interface CourseModuleMapper extends BaseMapper<CourseModule> {
-    List<CourseModuleVo> selectList(CourseModuleQueryBo bo);
+    List<CourseModuleVo> selectListByBo(CourseModuleQueryBo bo);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseProjectTypeMapper.java

@@ -1,9 +1,11 @@
 package com.zhongzheng.modules.course.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
 import com.zhongzheng.modules.course.domain.CourseProjectType;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.vo.CourseProjectTypeVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.Collection;
 
@@ -16,4 +18,7 @@ import java.util.Collection;
 public interface CourseProjectTypeMapper extends BaseMapper<CourseProjectType> {
 
     Collection<CourseProjectTypeVo> queryList(CourseProjectTypeQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    CourseProjectType getProjectByTenant(@Param("encoder") String encoder,@Param("newTenantId") Long newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/CourseStreamingMapper.java

@@ -16,5 +16,5 @@ import java.util.List;
  * @date 2021-10-11
  */
 public interface CourseStreamingMapper extends BaseMapper<CourseStreaming> {
-    List<CourseStreamingVo> selectList(CourseStreamingQueryBo bo);
+    List<CourseStreamingVo> selectListByBo(CourseStreamingQueryBo bo);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/mapper/MajorMapper.java

@@ -1,11 +1,13 @@
 package com.zhongzheng.modules.course.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
 import com.zhongzheng.modules.course.bo.MajorQueryBo;
 import com.zhongzheng.modules.course.domain.Major;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.course.vo.CourseProjectTypeVo;
 import com.zhongzheng.modules.course.vo.MajorProjectVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.Collection;
 import java.util.List;
@@ -23,4 +25,7 @@ public interface MajorMapper extends BaseMapper<Major> {
     Collection<Major> queryList(MajorQueryBo bo);
 
     Integer countNum(MajorQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    Major getMajorByTenant(@Param("encoder") String encoder,@Param("newTenantId") Long newTenantId);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseBusinessService.java

@@ -61,4 +61,6 @@ public interface ICourseBusinessService extends IService<CourseBusiness> {
 	boolean editRefundPeriodUserIds(CourseBusinessEditBo bo);
 
 	String queryFullName(CourseBusinessQueryBo bo);
+
+    CourseBusiness getBusinessByTenant(String encoder, Long newTenantId);
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseChapterService.java

@@ -31,7 +31,7 @@ public interface ICourseChapterService extends IService<CourseChapter> {
 	 */
 	List<CourseChapterVo> queryList(CourseChapterQueryBo bo);
 
-	List<CourseChapterVo> selectList(CourseChapterQueryBo bo);
+	List<CourseChapterVo> selectListByBo(CourseChapterQueryBo bo);
 
 	/**
 	 * 根据新增业务对象插入课程大章

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/ICourseProjectTypeService.java

@@ -49,4 +49,6 @@ public interface ICourseProjectTypeService extends IService<CourseProjectType> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    CourseProjectType getProjectByTenant(String encoder, Long newTenantId);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/IMajorService.java

@@ -49,4 +49,6 @@ public interface IMajorService extends IService<Major> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    Major getMajorByTenant(String encoder, Long newTenantId);
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseBusinessServiceImpl.java

@@ -232,4 +232,9 @@ public class CourseBusinessServiceImpl extends ServiceImpl<CourseBusinessMapper,
         return baseMapper.queryFullName(bo);
     }
 
+    @Override
+    public CourseBusiness getBusinessByTenant(String encoder, Long newTenantId) {
+        return baseMapper.getBusinessByTenant(encoder,newTenantId);
+    }
+
 }

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseChapterServiceImpl.java

@@ -77,8 +77,8 @@ public class CourseChapterServiceImpl extends ServiceImpl<CourseChapterMapper, C
     }
 
     @Override
-    public List<CourseChapterVo> selectList(CourseChapterQueryBo bo) {
-        return courseChapterMapper.selectList(bo);
+    public List<CourseChapterVo> selectListByBo(CourseChapterQueryBo bo) {
+        return courseChapterMapper.selectListByBo(bo);
     }
 
     /**

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

@@ -63,7 +63,7 @@ public class CourseModuleServiceImpl extends ServiceImpl<CourseModuleMapper, Cou
 
     @Override
     public List<CourseModuleVo> selectList(CourseModuleQueryBo bo) {
-        return courseModuleMapper.selectList(bo);
+        return courseModuleMapper.selectListByBo(bo);
     }
 
     @Override

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseProjectTypeServiceImpl.java

@@ -128,4 +128,9 @@ public class CourseProjectTypeServiceImpl extends ServiceImpl<CourseProjectTypeM
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public CourseProjectType getProjectByTenant(String encoder, Long newTenantId) {
+        return baseMapper.getProjectByTenant(encoder,newTenantId);
+    }
 }

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

@@ -59,7 +59,7 @@ public class CourseStreamingServiceImpl extends ServiceImpl<CourseStreamingMappe
 
     @Override
     public List<CourseStreamingVo> selectList(CourseStreamingQueryBo bo) {
-        return courseStreamingMapper.selectList(bo);
+        return courseStreamingMapper.selectListByBo(bo);
     }
 
     @Override

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/MajorServiceImpl.java

@@ -172,4 +172,9 @@ public class MajorServiceImpl extends ServiceImpl<MajorMapper, Major> implements
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public Major getMajorByTenant(String encoder, Long newTenantId) {
+        return baseMapper.getMajorByTenant(encoder,newTenantId);
+    }
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/exam/domain/ExamPaper.java

@@ -40,4 +40,6 @@ private static final long serialVersionUID=1L;
     private String remark;
     /** 编码SJ */
     private String encoder;
+
+    private Long tenantId;
 }

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

@@ -145,4 +145,5 @@ private static final long serialVersionUID=1L;
     private Integer showStatus;
     /** 显示排序字段 */
     private Long showSort;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsCourse.java

@@ -37,4 +37,5 @@ private static final long serialVersionUID=1L;
     private Integer courseShow;
     /** 别名 */
     private String aliasName;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsCourseTeacher.java

@@ -40,4 +40,5 @@ private static final long serialVersionUID=1L;
     private Integer status;
     /** 商品ID */
     private Long goodsId;
+    private Long tenantId;
 }

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

@@ -42,4 +42,6 @@ private static final long serialVersionUID=1L;
     /** 更新时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
+
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsSpecAttribute.java

@@ -42,4 +42,5 @@ private static final long serialVersionUID=1L;
     /** 更新时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsSpecAttributeRelation.java

@@ -40,4 +40,5 @@ private static final long serialVersionUID=1L;
     /** 更新时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
+    private Long tenantId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/domain/GoodsSpecTemplate.java

@@ -42,4 +42,5 @@ private static final long serialVersionUID=1L;
     /** 更新时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
+    private Long tenantId;
 }

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

@@ -105,4 +105,5 @@ public interface IGoodsService extends IService<Goods> {
 
     boolean goodsBatchCopyTenant(GoodsBatchCopyTenantBo bo);
 
+	boolean goodsBatchCopyDisposeTenant();
 }

+ 1838 - 71
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -15,7 +16,11 @@ import com.zhongzheng.common.core.redis.RedisCache;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.modules.bank.domain.*;
 import com.zhongzheng.modules.bank.mapper.QuestionMapper;
+import com.zhongzheng.modules.bank.service.*;
+import com.zhongzheng.modules.base.domain.*;
+import com.zhongzheng.modules.base.service.*;
 import com.zhongzheng.modules.course.bo.CourseMenuAddBo;
 import com.zhongzheng.modules.course.bo.CourseMenuListAddBo;
 import com.zhongzheng.modules.course.bo.CourseMenuQueryBo;
@@ -25,6 +30,8 @@ import com.zhongzheng.modules.course.mapper.CourseMapper;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.*;
 import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
+import com.zhongzheng.modules.exam.domain.ExamPaper;
+import com.zhongzheng.modules.exam.service.IExamPaperService;
 import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
 import com.zhongzheng.modules.goods.bo.*;
 import com.zhongzheng.modules.goods.domain.*;
@@ -35,13 +42,25 @@ import com.zhongzheng.modules.grade.vo.ClassGradeVo;
 import com.zhongzheng.modules.grade.vo.SyncGoodsExport;
 import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.pay.domain.PayServe;
 import com.zhongzheng.modules.pay.domain.PaySupply;
+import com.zhongzheng.modules.pay.service.IPayServeService;
 import com.zhongzheng.modules.pay.service.IPaySupplyService;
+import com.zhongzheng.modules.polyv.domain.PolyvCata;
+import com.zhongzheng.modules.polyv.domain.PolyvVideo;
+import com.zhongzheng.modules.polyv.service.IPolyvCataService;
+import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
+import com.zhongzheng.modules.polyv.service.IPolyvVideoService;
+import com.zhongzheng.modules.system.bo.GoodsCopyEnum;
 import com.zhongzheng.modules.system.domain.SysConfig;
+import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
 import com.zhongzheng.modules.system.service.ISysConfigService;
+import com.zhongzheng.modules.system.service.ISysGoodsCopyRecordService;
 import com.zhongzheng.modules.user.bo.SubjectStudyRecordQueryBo;
 import com.zhongzheng.modules.user.bo.UserPhoneBo;
+import com.zhongzheng.modules.user.domain.School;
 import com.zhongzheng.modules.user.domain.User;
+import com.zhongzheng.modules.user.service.ISchoolService;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.service.IUserStudyRecordService;
 import com.zhongzheng.modules.user.vo.SubjectStudyRecordVo;
@@ -85,13 +104,21 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Autowired
     private CourseMapper courseMapper;
 
+    @Autowired
+    private ICourseService iCourseService;
+
     @Autowired
     private IOrderGoodsService iOrderGoodsService;
 
 
     @Autowired
     private ICourseMenuService iCourseMenuService;
-
+    @Autowired
+    private ICourseMenuExamService iCourseMenuExamService;
+    @Autowired
+    private ICourseModuleService iCourseModuleService;
+    @Autowired
+    private ICourseModuleBusinessService iCourseModuleBusinessService;
     @Autowired
     private ICourseChapterSectionService iCourseChapterSectionService;
 
@@ -103,26 +130,61 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Autowired
     private IGoodsSpecTemplateService goodsSpecTemplateService;
     @Autowired
+    private IGoodsSpecAttributeService goodsSpecAttributeService;
+    @Autowired
     private IGoodsSpecAttributeRelationService goodsSpecAttributeRelationService;
 
     @Autowired
     private ICourseEducationTypeService iCourseEducationTypeService;
+    @Autowired
+    private ICourseHandoutsService iCourseHandoutsService;
+    @Autowired
+    private ICourseHandoutsBusinessService iCourseHandoutsBusinessService;
 
     @Autowired
-    private ICourseProjectTypeService iCourseProjectTypeService;
+    private ICourseEducationTierService iCourseEducationTierService;
 
+    @Autowired
+    private ICourseProjectTypeService iCourseProjectTypeService;
+    @Autowired
+    private ICourseSectionService iCourseSectionService;
+    @Autowired
+    private ICourseSectionBusinessService iCourseSectionBusinessService;
     @Autowired
     private ICourseBusinessService iCourseBusinessService;
 
     @Autowired
     private ICourseSubjectService iCourseSubjectService;
-
+    @Autowired
+    private ICourseSubjectProjectService iCourseSubjectProjectService;
+    @Autowired
+    private IExamService iExamService;
+    @Autowired
+    private IExamPaperService iExamPaperService;
+    @Autowired
+    private IExamQuestionService iExamQuestionService;
     @Autowired
     private IGoodsSpecService goodsSpecService;
-
+    @Autowired
+    private IQuestionService iQuestionService;
     @Autowired
     private QuestionMapper questionMapper;
-
+    @Autowired
+    private IQuestionBusinessService iQuestionBusinessService;
+    @Autowired
+    private IQuestionChapterService iQuestionChapterService;
+    @Autowired
+    private IQuestionChapterExamService iQuestionChapterExamService;
+    @Autowired
+    private IQuestionModuleService iQuestionModuleService;
+    @Autowired
+    private IQuestionModuleChapterService iQuestionModuleChapterService;
+    @Autowired
+    private ICertificateService iCertificateService;
+    @Autowired
+    private ICertificateCommonService iCertificateCommonService;
+    @Autowired
+    private ICertificateTpService iCertificateTpService;
     @Autowired
     private IUserService iUserService;
 
@@ -132,11 +194,49 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     @Autowired
     private ISysConfigService iSysConfigService;
 
+    @Autowired
+    private ISysGoodsCopyRecordService iSysGoodsCopyRecordService;
+
     @Autowired
     private RedisCache redisCache;
 
+    @Autowired
+    private IGoodsCourseTeacherService goodsCourseTeacherService;
+
+    @Autowired
+    private ICourseChapterService iCourseChapterService;
+
+    @Autowired
+    private ICourseChapterBusinessService iCourseChapterBusinessService;
+
     @Autowired
     private IPaySupplyService iPaySupplyService;
+    @Autowired
+    private ICourseStreamingService iCourseStreamingService;
+    @Autowired
+    private ICourseStreamingBusinessService iCourseStreamingBusinessService;
+    @Autowired
+    private IPolyvVideoService iPolyvVideoService;
+    @Autowired
+    private IPolyvCataService iPolyvCataService;
+    @Autowired
+    private ISchoolService iSchoolService;
+    @Autowired
+    private IProfileFieldService iProfileFieldService;
+    @Autowired
+    private IProfileTpService iProfileTpService;
+    @Autowired
+    private IProfileTpBusinessService iProfileTpBusinessService;
+    @Autowired
+    private IMajorService iMajorService;
+    @Autowired
+    private IMajorProjectService iMajorProjectService;
+
+    @Autowired
+    private IPayServeService iPayServeService;
+
+    @Autowired
+    private ISysGoodsCopyRecordService iGoodsCopyRecordService;
 
     @Override
     public GoodsVo queryById(Long goodsId) {
@@ -908,7 +1008,7 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
             if (goodsVo.getCourseType() == 1) {
                 //视频商品
                 //获得当前所在班级
-                ClassGradeVo classGradeVo = courseMapper.gradeIdSelectTenant(user.getUserId(), goodsVo.getGoodsId(), goodsVo.getGradeId(),goodsVo.getTenantId());
+                ClassGradeVo classGradeVo = courseMapper.gradeIdSelectTenant(user.getUserId(), goodsVo.getGoodsId(), goodsVo.getGradeId(), goodsVo.getTenantId());
                 if (ObjectUtils.isNotNull(classGradeVo)) {
                     goodsVo.setPeriodStatus(classGradeVo.getPeriodStatus());
                 }
@@ -917,11 +1017,11 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                 goodsVo.setStatusName("未学习");
             } else if (studyLong < secLong) {
                 goodsVo.setStatusName("学习中");
-            } else if (studyLong.equals(secLong) && ObjectUtils.isNotNull(goodsVo.getPeriodStatus()) && goodsVo.getPeriodStatus() == 1){
+            } else if (studyLong.equals(secLong) && ObjectUtils.isNotNull(goodsVo.getPeriodStatus()) && goodsVo.getPeriodStatus() == 1) {
                 goodsVo.setStatusName("已学完");
-            }else if (studyLong.equals(secLong) && ObjectUtils.isNotNull(goodsVo.getPeriodStatus()) && goodsVo.getPeriodStatus() == 2){
+            } else if (studyLong.equals(secLong) && ObjectUtils.isNotNull(goodsVo.getPeriodStatus()) && goodsVo.getPeriodStatus() == 2) {
                 goodsVo.setStatusName("审核中");
-            }else if (studyLong.equals(secLong) && ObjectUtils.isNotNull(goodsVo.getPeriodStatus()) && goodsVo.getPeriodStatus() == 0){
+            } else if (studyLong.equals(secLong) && ObjectUtils.isNotNull(goodsVo.getPeriodStatus()) && goodsVo.getPeriodStatus() == 0) {
                 goodsVo.setStatusName("不通过");
             }
 
@@ -929,26 +1029,26 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
             SysConfig sysConfig = iSysConfigService.getOne(new LambdaQueryWrapper<SysConfig>()
                     .eq(SysConfig::getConfigKey, "wx.small.appid")
                     .eq(SysConfig::getTenantId, goodsVo.getTenantId()));
-            if (ObjectUtils.isNull(sysConfig)){
+            if (ObjectUtils.isNull(sysConfig)) {
                 throw new CustomException("获取小程序appId失败");
             }
             //课程
-            List<Long> courseIds = iGoodsCourseService.getCourseIdsByGoodsAndTenant(goodsVo.getGoodsId(),goodsVo.getTenantId());
-            if (CollectionUtils.isNotEmpty(courseIds) && courseIds.size() == 1){
+            List<Long> courseIds = iGoodsCourseService.getCourseIdsByGoodsAndTenant(goodsVo.getGoodsId(), goodsVo.getTenantId());
+            if (CollectionUtils.isNotEmpty(courseIds) && courseIds.size() == 1) {
                 goodsVo.setCourseId(courseIds.get(0));
             }
             goodsVo.setWeAppId(sysConfig.getConfigValue());
-            if (goodsVo.getCourseType() == 2){
+            if (goodsVo.getCourseType() == 2) {
                 //题库
                 goodsVo.setToWeAppPagePath("/pages/questionBank/index");
-            }else if (goodsVo.getCourseType() == 6){
+            } else if (goodsVo.getCourseType() == 6) {
                 //直播
                 goodsVo.setToWeAppPagePath(String.format("/pages3/live/detail?orderGoodsId=%s&goodsId=%s&gradeId=0&courseId=%s",
-                        goodsVo.getOrderGoodsId(),goodsVo.getGoodsId(),goodsVo.getCourseId()));
-            }else {
+                        goodsVo.getOrderGoodsId(), goodsVo.getGoodsId(), goodsVo.getCourseId()));
+            } else {
                 //视频
                 goodsVo.setToWeAppPagePath(String.format("/pages3/polyv/detail?id=%s&goodsId=%s&orderGoodsId=%s&gradeId=%s",
-                        goodsVo.getCourseId(),goodsVo.getGoodsId(),goodsVo.getOrderGoodsId(),goodsVo.getGradeId()));
+                        goodsVo.getCourseId(), goodsVo.getGoodsId(), goodsVo.getOrderGoodsId(), goodsVo.getGradeId()));
             }
 
         });
@@ -961,110 +1061,1777 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
         String url = "";
         String domain = "http://192.168.1.222:6002/";
         String domainH5 = "https://h.xyyxt.net";
-        GoodsVo goods = baseMapper.queryGoodsByIdTenant(bo.getGoodsId(),bo.getTenantId());
-        if (ObjectUtils.isNull(goods)){
+        GoodsVo goods = baseMapper.queryGoodsByIdTenant(bo.getGoodsId(), bo.getTenantId());
+        if (ObjectUtils.isNull(goods)) {
             throw new CustomException("商品不存在!");
         }
-        User user = iUserService.queryUserByTelphoneTenant(bo.getTelphone(),bo.getTenantId());
-        if (ObjectUtils.isNull(user)){
+        User user = iUserService.queryUserByTelphoneTenant(bo.getTelphone(), bo.getTenantId());
+        if (ObjectUtils.isNull(user)) {
             throw new CustomException("用户不存在!");
         }
         //校验当前商品是否用户购买
-        UserOrderGoodsVo vo = baseMapper.countUserOrderGoods(bo.getGoodsId(),user.getUserId(),bo.getTenantId());
-        if (ObjectUtils.isNull(vo)){
+        UserOrderGoodsVo vo = baseMapper.countUserOrderGoods(bo.getGoodsId(), user.getUserId(), bo.getTenantId());
+        if (ObjectUtils.isNull(vo)) {
             throw new CustomException("用户没有购买该商品!");
         }
         //商品课程
         Long courseId = 0L;
-        List<Long> courseIds =  iGoodsCourseService.getCourseIdsByGoodsAndTenant(bo.getGoodsId(),bo.getTenantId());
-        if (CollectionUtils.isNotEmpty(courseIds) && courseIds.size() == 1){
+        List<Long> courseIds = iGoodsCourseService.getCourseIdsByGoodsAndTenant(bo.getGoodsId(), bo.getTenantId());
+        if (CollectionUtils.isNotEmpty(courseIds) && courseIds.size() == 1) {
             courseId = courseIds.get(0);
         }
         //当前时间戳
         Long nowTime = DateUtils.getNowTime();
-        if (bo.getSkipPort() == 1){
+        if (bo.getSkipPort() == 1) {
             //PC端
-            if (goods.getGoodsType() == 2){
+            if (goods.getGoodsType() == 2) {
                 //题库
-                url = String.format("%sperson-center/my-bank/index?goodsId=%s&skipPort=%s",domain,vo.getGoodsId(),nowTime);
-            }else if (goods.getGoodsType() == 6){
+                url = String.format("%sperson-center/my-bank/index?goodsId=%s&skipPort=%s", domain, vo.getGoodsId(), nowTime);
+            } else if (goods.getGoodsType() == 6) {
                 //直播
-                url = String.format("%sperson-center/my-live?goodsId=%s&skipPort=%s",domain,vo.getGoodsId(),nowTime);
-            }else {
+                url = String.format("%sperson-center/my-live?goodsId=%s&skipPort=%s", domain, vo.getGoodsId(), nowTime);
+            } else {
                 //视频
-                url = String.format("%smy-course-detail/%s?gradeId=%s&orderGoodsId=%s&skipPort=%s",domain,vo.getGoodsId(),vo.getGradeId(),vo.getOrderGoodsId(),nowTime);
+                url = String.format("%smy-course-detail/%s?gradeId=%s&orderGoodsId=%s&skipPort=%s", domain, vo.getGoodsId(), vo.getGradeId(), vo.getOrderGoodsId(), nowTime);
             }
-        }else {
+        } else {
             //H5
-            if (goods.getGoodsType() == 2){
+            if (goods.getGoodsType() == 2) {
                 //题库
-                url = String.format("%s/pages/questionBank/index&skipPort=%s",domainH5,nowTime);
-            }else if (goods.getGoodsType() == 6){
+                url = String.format("%s/pages/questionBank/index&skipPort=%s", domainH5, nowTime);
+            } else if (goods.getGoodsType() == 6) {
                 //直播
                 url = String.format("%s/pages3/live/detail?orderGoodsId=%s&goodsId=%s&gradeId=0&courseId=%s&skipPort=%s",
-                        domainH5,vo.getOrderGoodsId(),vo.getGoodsId(),courseId,nowTime);
-            }else {
+                        domainH5, vo.getOrderGoodsId(), vo.getGoodsId(), courseId, nowTime);
+            } else {
                 //视频
                 url = String.format("%s/pages3/polyv/detail?id=%s&goodsId=%s&orderGoodsId=%s&gradeId=%s&skipPort=%s",
-                        domainH5,courseId,vo.getGoodsId(),vo.getOrderGoodsId(),vo.getGradeId(),nowTime);
+                        domainH5, courseId, vo.getGoodsId(), vo.getOrderGoodsId(), vo.getGradeId(), nowTime);
             }
         }
         UserPhoneBo phoneBo = new UserPhoneBo();
         phoneBo.setTelphone(user.getTelphone());
         phoneBo.setTenantId(bo.getTenantId());
         //缓存用户手机号码 30分钟失效
-        redisCache.setCacheObject(nowTime.toString(), JSONObject.toJSONString(phoneBo),30, TimeUnit.MINUTES);
+        redisCache.setCacheObjectTenant(nowTime.toString(), JSONObject.toJSONString(phoneBo), 30, TimeUnit.MINUTES);
         return url;
     }
 
+//    @Override
+//    public boolean goodsBatchCopyTenant(GoodsBatchCopyTenantBo bo) {
+//        //获取商品信息
+//        List<Goods> goodsList = list(new LambdaQueryWrapper<Goods>()
+//                .in(CollectionUtils.isNotEmpty(bo.getGoodsIds()), Goods::getGoodsId, bo.getGoodsIds()));
+//        if (CollectionUtils.isEmpty(goodsList)){
+//            return true;
+//        }
+//        Long tenantId = 867735392558919680L;
+//        Long newTenantId = bo.getTenantId();
+//        List<Goods> oldGoodsList = goodsList.stream().map(x -> BeanUtil.toBean(x, Goods.class)).collect(Collectors.toList());
+//        for (Goods goods : goodsList) {
+//            goods.setGoodsId(null);
+//            goods.setTeacherId(newTenantId);
+//            //供应方ID
+//            if (ObjectUtil.isNotNull(goods.getSupplyId())){
+//                PaySupply supply = iPaySupplyService.getById(goods.getSupplyId());
+//                if (ObjectUtils.isNotNull(supply)){
+//                    //新机构是否存在
+//                    PaySupply newSupply = iPaySupplyService.getSupplyByTenant(supply.getSupplyName(),newTenantId);
+//                    if (ObjectUtil.isNotNull(newSupply)){
+//                        goods.setSupplyId(newSupply.getSupplyId());
+//                    }else {
+//                        supply.setSupplyId(null);
+//                        supply.setTenantId(newTenantId);
+//                        iPaySupplyService.save(supply);
+//                        goods.setSupplyId(supply.getSupplyId());
+//                    }
+//                }
+//            }
+//
+//            //教育类型
+//            if (ObjectUtil.isNotNull(goods.getEducationTypeId())){
+//                CourseEducationType type = iCourseEducationTypeService.getById(goods.getEducationTypeId());
+//                if (ObjectUtil.isNotNull(type)){
+//                    CourseEducationType newType = iCourseEducationTypeService.getEducationTypeBytenant(type.getEncoder(),newTenantId);
+//                    if (ObjectUtil.isNotNull(newType)){
+//                        goods.setEducationTypeId(newType.getId());
+//                    }else {
+//                        type.setId(null);
+//                        type.setTenantId(newTenantId);
+//                        iCourseEducationTypeService.save(type);
+//                        goods.setEducationTypeId(type.getId());
+//                    }
+//                }
+//            }
+//
+//            //业务层次
+//            if (ObjectUtil.isNotNull(goods.getBusinessId())){
+//                CourseBusiness business = iCourseBusinessService.getById(goods.getBusinessId());
+//                if (ObjectUtil.isNotNull(business)){
+//                    CourseBusiness newBusiness = iCourseBusinessService.getBusinessByTenant(business.getEncoder(),newTenantId);
+//                    if (ObjectUtil.isNotNull(newBusiness)){
+//                        goods.setBusinessId(newBusiness.getId());
+//                    }else {
+//                        business.setId(null);
+//                        business.setTenantId(newTenantId);
+//                        iCourseBusinessService.save(business);
+//                        goods.setBusinessId(business.getId());
+//                    }
+//
+//                }
+//            }
+//
+//            //所属院校
+//            if (ObjectUtil.isNotNull(goods.getSchoolId())){
+//                School school = iSchoolService.getById(goods.getSchoolId());
+//                if (ObjectUtil.isNotNull(school)){
+//                    School newSchool = iSchoolService.getSchoolByTenant(school.getEncoder(),newTenantId);
+//                    if (ObjectUtil.isNotNull(newSchool)){
+//                        goods.setBusinessId(newSchool.getId());
+//                    }else {
+//                        school.setId(null);
+//                        school.setTenantId(newTenantId);
+//                        iSchoolService.save(school);
+//                        goods.setBusinessId(school.getId());
+//                    }
+//                }
+//            }
+//
+//            //所属专业
+//            if (ObjectUtil.isNotNull(goods.getMajorId())){
+//                Major major = iMajorService.getById(goods.getMajorId());
+//                if (ObjectUtil.isNotNull(major)){
+//                    Major newMajor = iMajorService.getMajorByTenant(major.getEncoder(),newTenantId);
+//                    if (ObjectUtil.isNotNull(newMajor)){
+//                        goods.setMajorId(newMajor.getId());
+//                    }else {
+//                        major.setId(null);
+//                        major.setTenantId(newTenantId);
+//                        iMajorService.save(major);
+//                        goods.setBusinessId(major.getId());
+//                    }
+//                }
+//            }
+//
+//            //项目
+//            if (ObjectUtil.isNotNull(goods.getProjectId())){
+//                CourseProjectType project = iCourseProjectTypeService.getById(goods.getProjectId());
+//                if (ObjectUtil.isNotNull(project)){
+//                    CourseProjectType newProject = iCourseProjectTypeService.getProjectByTenant(project.getEncoder(),newTenantId);
+//                    if (ObjectUtil.isNotNull(newProject)){
+//                        goods.setMajorId(newProject.getId());
+//                    }else {
+//                        project.setId(null);
+//                        project.setTenantId(newTenantId);
+//                        iCourseProjectTypeService.save(project);
+//                        goods.setBusinessId(project.getId());
+//                    }
+//                }
+//            }
+//
+//        }
+//        return false;
+//    }
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean goodsBatchCopyTenant(GoodsBatchCopyTenantBo bo) {
-        //获取商品信息
-        List<Goods> goodsList = list(new LambdaQueryWrapper<Goods>()
-                .in(CollectionUtils.isNotEmpty(bo.getGoodsIds()), Goods::getGoodsId, bo.getGoodsIds()));
+        String tenantId = ServletUtils.getRequest().getHeader("TenantId");
+        Long newTenantId = bo.getTenantId();
+        List<SysGoodsCopyRecord> copyRecordList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(bo.getGoodsIds())) {
+            //增量
+            return true;
+        }
+
+        //全量同步
+        // 1 goods
+        List<Goods> goodsList = list();
         if (CollectionUtils.isEmpty(goodsList)){
             return true;
         }
-        Long tenantId = 867735392558919680L;
-        Long newTenantId = bo.getTenantId();
-        List<Goods> oldGoodsList = goodsList.stream().map(x -> BeanUtil.toBean(x, Goods.class)).collect(Collectors.toList());
+        List<Goods> newGoodsList = goodsList.stream().map(x -> {
+            Goods goods = BeanUtil.toBean(x, Goods.class);
+            goods.setGoodsId(null);
+            goods.setTenantId(newTenantId);
+            return goods;
+        }).collect(Collectors.toList());
+        saveBatch(newGoodsList);
+        //记录
+        newGoodsList.forEach(item -> {
+            SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+            record.setType(GoodsCopyEnum.GOODS.getType());
+            record.setNewId(item.getGoodsId());
+            Goods goods = goodsList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+            if (ObjectUtils.isNotNull(goods)){
+                record.setOldId(goods.getGoodsId());
+            }
+            record.setCreateTime(DateUtils.getNowTime());
+            record.setUpdateTime(DateUtils.getNowTime());
+            record.setTenantId(newTenantId);
+            copyRecordList.add(record);
+        });
+
+        //2 商品规格
+        List<GoodsSpec> goodsSpecList = goodsSpecService.list();
+        if (CollectionUtils.isNotEmpty(goodsSpecList)){
+            List<GoodsSpec> newGoodsSpecList = goodsSpecList.stream().map(x -> {
+                GoodsSpec goodsSpec = BeanUtil.toBean(x, GoodsSpec.class);
+                goodsSpec.setSpecId(null);
+                goodsSpec.setTenantId(newTenantId);
+                return goodsSpec;
+            }).collect(Collectors.toList());
+            goodsSpecService.saveBatch(newGoodsSpecList);
+            //记录
+            newGoodsSpecList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.GOODS_SPEC.getType());
+                record.setNewId(item.getSpecId());
+                GoodsSpec spec = goodsSpecList.stream().filter(x -> x.getName().equals(item.getName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(spec)){
+                    record.setOldId(spec.getSpecId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //3 规格模板
+        List<GoodsSpecTemplate> specTemplateList = goodsSpecTemplateService.list();
+        if (CollectionUtils.isNotEmpty(specTemplateList)){
+            List<GoodsSpecTemplate> newSpecTemplateList = specTemplateList.stream().map(x -> {
+                GoodsSpecTemplate specTemplate = BeanUtil.toBean(x, GoodsSpecTemplate.class);
+                specTemplate.setSpecTemplateId(null);
+                specTemplate.setTenantId(newTenantId);
+                return specTemplate;
+            }).collect(Collectors.toList());
+            goodsSpecTemplateService.saveBatch(newSpecTemplateList);
+            //记录
+            newSpecTemplateList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.GOODS_SPEC_TEMPLATE.getType());
+                record.setNewId(item.getSpecTemplateId());
+                GoodsSpecTemplate template = specTemplateList.stream().filter(x -> x.getName().equals(item.getName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(template)){
+                    record.setOldId(template.getSpecTemplateId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //4 规格属性
+        List<GoodsSpecAttribute> attributeList = goodsSpecAttributeService.list();
+        if (CollectionUtils.isNotEmpty(attributeList)){
+            List<GoodsSpecAttribute> newAttributeList = attributeList.stream().map(x -> {
+                GoodsSpecAttribute attribute = BeanUtil.toBean(x, GoodsSpecAttribute.class);
+                attribute.setSpecAttributeId(null);
+                attribute.setTenantId(newTenantId);
+                return attribute;
+            }).collect(Collectors.toList());
+            goodsSpecAttributeService.saveBatch(newAttributeList);
+            //记录
+            newAttributeList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.GOODS_SPEC_ATTRIBUTE.getType());
+                record.setNewId(item.getSpecAttributeId());
+                GoodsSpecAttribute attribute = attributeList.stream().filter(x -> x.getName().equals(item.getName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(attribute)){
+                    record.setOldId(attribute.getSpecAttributeId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //5 规格属性关联
+        List<GoodsSpecAttributeRelation> attributeRelationList = goodsSpecAttributeRelationService.list();
+        if (CollectionUtils.isNotEmpty(attributeRelationList)){
+            List<GoodsSpecAttributeRelation> newAttributeRelationList = attributeRelationList.stream().map(x -> {
+                GoodsSpecAttributeRelation relation = BeanUtil.toBean(x, GoodsSpecAttributeRelation.class);
+                relation.setId(null);
+                relation.setTenantId(newTenantId);
+                return relation;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            goodsSpecAttributeRelationService.saveBatch(newAttributeRelationList);
+        }
+
+        //6 商品课程关联
+        List<GoodsCourse> goodsCourseList = iGoodsCourseService.list();
+        if (CollectionUtils.isNotEmpty(goodsCourseList)){
+            List<GoodsCourse> newGoodsCourseList = goodsCourseList.stream().map(x -> {
+                GoodsCourse goodsCourse = BeanUtil.toBean(x, GoodsCourse.class);
+                goodsCourse.setId(null);
+                goodsCourse.setTenantId(newTenantId);
+                return goodsCourse;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iGoodsCourseService.saveBatch(newGoodsCourseList);
+        }
+
+        //7 课程老师关联
+        List<GoodsCourseTeacher> teacherList = goodsCourseTeacherService.list();
+        if (CollectionUtils.isNotEmpty(teacherList)){
+            List<GoodsCourseTeacher> newTeacherList = teacherList.stream().map(x -> {
+                GoodsCourseTeacher courseTeacher = BeanUtil.toBean(x, GoodsCourseTeacher.class);
+                courseTeacher.setId(null);
+                courseTeacher.setTenantId(newTenantId);
+                return courseTeacher;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            goodsCourseTeacherService.saveBatch(newTeacherList);
+        }
+
+        //8 课程
+        List<Course> courseList = iCourseService.list();
+        if (CollectionUtils.isNotEmpty(courseList)){
+            List<Course> newCourseList = courseList.stream().map(x -> {
+                Course course = BeanUtil.toBean(x, Course.class);
+                course.setCourseId(null);
+                course.setTenantId(newTenantId);
+                return course;
+            }).collect(Collectors.toList());
+            iCourseService.saveBatch(newCourseList);
+            //记录
+            newCourseList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE.getType());
+                record.setNewId(item.getCourseId());
+                Course course = courseList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(course)){
+                    record.setOldId(course.getCourseId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+        
+        //9 业务层次
+        List<CourseBusiness> businessList = iCourseBusinessService.list();
+        if (CollectionUtils.isNotEmpty(businessList)){
+            List<CourseBusiness> newBusinessList = businessList.stream().map(x -> {
+                CourseBusiness business = BeanUtil.toBean(x, CourseBusiness.class);
+                business.setId(null);
+                business.setTenantId(newTenantId);
+                return business;
+            }).collect(Collectors.toList());
+            iCourseBusinessService.saveBatch(newBusinessList);
+            //记录
+            newBusinessList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_BUSINESS.getType());
+                record.setNewId(item.getId());
+                CourseBusiness business = businessList.stream().filter(x -> x.getBusinessName().equals(item.getBusinessName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(business)){
+                    record.setOldId(business.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //10 课程章
+        List<CourseChapter> chapterList = iCourseChapterService.list();
+        if (CollectionUtils.isNotEmpty(chapterList)){
+            List<CourseChapter> newChapterList = chapterList.stream().map(x -> {
+                CourseChapter courseChapter = BeanUtil.toBean(x, CourseChapter.class);
+                courseChapter.setChapterId(null);
+                courseChapter.setTenantId(newTenantId);
+                return courseChapter;
+            }).collect(Collectors.toList());
+            iCourseChapterService.saveBatch(newChapterList);
+            //记录
+            newChapterList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_CHAPTER.getType());
+                record.setNewId(item.getChapterId());
+                CourseChapter chapter = chapterList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(chapter)){
+                    record.setOldId(chapter.getChapterId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //11 课程章业务层次关联
+        List<CourseChapterBusiness> chapterBusinesseList = iCourseChapterBusinessService.list();
+        if (CollectionUtils.isNotEmpty(chapterBusinesseList)){
+            List<CourseChapterBusiness> newChapterBusinesseList = chapterBusinesseList.stream().map(x -> {
+                CourseChapterBusiness courseChapterBusiness = BeanUtil.toBean(x, CourseChapterBusiness.class);
+                courseChapterBusiness.setId(null);
+                courseChapterBusiness.setTenantId(newTenantId);
+                return courseChapterBusiness;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseChapterBusinessService.saveBatch(newChapterBusinesseList);
+        }
+        
+        //12 课程章节关联
+        List<CourseChapterSection> chapterSectionList = iCourseChapterSectionService.list();
+        if (CollectionUtils.isNotEmpty(chapterSectionList)){
+            List<CourseChapterSection> newChapterSectionList = chapterSectionList.stream().map(x -> {
+                CourseChapterSection courseChapterSection = BeanUtil.toBean(x, CourseChapterSection.class);
+                courseChapterSection.setId(null);
+                courseChapterSection.setTenantId(newTenantId);
+                return courseChapterSection;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseChapterSectionService.saveBatch(newChapterSectionList);
+        }
+        
+        //13 教育类型关联
+        List<CourseEducationTier> educationTiers = iCourseEducationTierService.list();
+        if (CollectionUtils.isNotEmpty(educationTiers)){
+            List<CourseEducationTier> newEducationTiers = educationTiers.stream().map(x -> {
+                CourseEducationTier courseEducationTier = BeanUtil.toBean(x, CourseEducationTier.class);
+                courseEducationTier.setId(null);
+                courseEducationTier.setTenantId(newTenantId);
+                return courseEducationTier;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseEducationTierService.saveBatch(newEducationTiers);
+        }
+
+        //14 教育类型
+        List<CourseEducationType> educationTypeList = iCourseEducationTypeService.list();
+        if (CollectionUtils.isNotEmpty(educationTypeList)){
+            List<CourseEducationType> newEducationTypeList = educationTypeList.stream().map(x -> {
+                CourseEducationType educationType = BeanUtil.toBean(x, CourseEducationType.class);
+                educationType.setId(null);
+                educationType.setTenantId(newTenantId);
+                return educationType;
+            }).collect(Collectors.toList());
+            iCourseEducationTypeService.saveBatch(newEducationTypeList);
+            //记录
+            newEducationTypeList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType());
+                record.setNewId(item.getId());
+                CourseEducationType educationType = educationTypeList.stream().filter(x -> x.getEncoder().equals(item.getEncoder())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(educationType)){
+                    record.setOldId(educationType.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //15 课程讲义
+        List<CourseHandouts> handoutsList = iCourseHandoutsService.list();
+        if (CollectionUtils.isNotEmpty(handoutsList)){
+            List<CourseHandouts> newHandoutsList = handoutsList.stream().map(x -> {
+                CourseHandouts handouts = BeanUtil.toBean(x, CourseHandouts.class);
+                handouts.setHandoutsId(null);
+                handouts.setTenantId(newTenantId);
+                return handouts;
+            }).collect(Collectors.toList());
+            iCourseHandoutsService.saveBatch(newHandoutsList);
+            //记录
+            newHandoutsList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_HANDOUTS.getType());
+                record.setNewId(item.getHandoutsId());
+                CourseHandouts handouts = handoutsList.stream().filter(x -> x.getEncoder().equals(item.getEncoder())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(handouts)){
+                    record.setOldId(handouts.getHandoutsId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //16 讲义业务层次关联
+        List<CourseHandoutsBusiness> handoutsBusinessList = iCourseHandoutsBusinessService.list();
+        if (CollectionUtils.isNotEmpty(handoutsBusinessList)){
+            List<CourseHandoutsBusiness> newHandoutsBusinessList = handoutsBusinessList.stream().map(x -> {
+                CourseHandoutsBusiness handoutsBusiness = BeanUtil.toBean(x, CourseHandoutsBusiness.class);
+                handoutsBusiness.setId(null);
+                handoutsBusiness.setTenantId(newTenantId);
+                return handoutsBusiness;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseHandoutsBusinessService.saveBatch(newHandoutsBusinessList);
+        }
+
+        //17 课程目录关联
+        List<CourseMenu> courseMenuList = iCourseMenuService.list();
+        if (CollectionUtils.isNotEmpty(courseMenuList)){
+            List<CourseMenu> newCourseMenuList = courseMenuList.stream().map(x -> {
+                CourseMenu courseMenu = BeanUtil.toBean(x, CourseMenu.class);
+                courseMenu.setId(null);
+                courseMenu.setTenantId(newTenantId);
+                return courseMenu;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseMenuService.saveBatch(newCourseMenuList);
+        }
+
+       //18 课程目录试卷关联 course_menu_exam
+        List<CourseMenuExam> menuExamList = iCourseMenuExamService.list();
+        if (CollectionUtils.isNotEmpty(menuExamList)){
+            List<CourseMenuExam> newMenuExamList = menuExamList.stream().map(x -> {
+                CourseMenuExam menuExam = BeanUtil.toBean(x, CourseMenuExam.class);
+                menuExam.setId(null);
+                menuExam.setTenantId(newTenantId);
+                return menuExam;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseMenuExamService.saveBatch(newMenuExamList);
+        }
+
+        //19 课程模块
+        List<CourseModule> moduleList = iCourseModuleService.list();
+        if (CollectionUtils.isNotEmpty(moduleList)){
+            List<CourseModule> newModuleList = moduleList.stream().map(x -> {
+                CourseModule module = BeanUtil.toBean(x, CourseModule.class);
+                module.setModuleId(null);
+                module.setTenantId(newTenantId);
+                return module;
+            }).collect(Collectors.toList());
+            iCourseModuleService.saveBatch(newModuleList);
+            //记录
+            newModuleList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_MODULE.getType());
+                record.setNewId(item.getModuleId());
+                CourseModule courseModule = moduleList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(courseModule)){
+                    record.setOldId(courseModule.getModuleId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+        
+        //20 课程模块业务关联
+        List<CourseModuleBusiness> moduleBusinessList = iCourseModuleBusinessService.list();
+        if (CollectionUtils.isNotEmpty(moduleBusinessList)){
+            List<CourseModuleBusiness> newModuleBusinessList = moduleBusinessList.stream().map(x -> {
+                CourseModuleBusiness moduleBusiness = BeanUtil.toBean(x, CourseModuleBusiness.class);
+                moduleBusiness.setId(null);
+                moduleBusiness.setTenantId(newTenantId);
+                return moduleBusiness;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseModuleBusinessService.saveBatch(newModuleBusinessList);
+        }
+
+        //21 课程模块章关联
+        List<CourseModuleChapter> moduleChapterList = iCourseModuleChapterService.list();
+        if (CollectionUtils.isNotEmpty(moduleChapterList)){
+            List<CourseModuleChapter> newModuleChapterList = moduleChapterList.stream().map(x -> {
+                CourseModuleChapter moduleChapter = BeanUtil.toBean(x, CourseModuleChapter.class);
+                moduleChapter.setId(null);
+                moduleChapter.setTenantId(newTenantId);
+                return moduleChapter;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseModuleChapterService.saveBatch(newModuleChapterList);
+        }
+
+        //22 课程项目
+        List<CourseProjectType> projectTypeList = iCourseProjectTypeService.list();
+        if (CollectionUtils.isNotEmpty(projectTypeList)){
+            List<CourseProjectType> newProjectTypeList = projectTypeList.stream().map(x -> {
+                CourseProjectType projectType = BeanUtil.toBean(x, CourseProjectType.class);
+                projectType.setId(null);
+                projectType.setTenantId(newTenantId);
+                return projectType;
+            }).collect(Collectors.toList());
+            iCourseProjectTypeService.saveBatch(newProjectTypeList);
+            //记录
+            newProjectTypeList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_PROJECT_TYPE.getType());
+                record.setNewId(item.getId());
+                CourseProjectType projectType = projectTypeList.stream().filter(x -> x.getEncoder().equals(item.getEncoder())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(projectType)){
+                    record.setOldId(projectType.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //23 课程节
+        List<CourseSection> sectionList = iCourseSectionService.list();
+        if (CollectionUtils.isNotEmpty(sectionList)){
+            List<CourseSection> newSectionList = sectionList.stream().map(x -> {
+                CourseSection section = BeanUtil.toBean(x, CourseSection.class);
+                section.setSectionId(null);
+                section.setTenantId(newTenantId);
+                return section;
+            }).collect(Collectors.toList());
+            iCourseSectionService.saveBatch(newSectionList);
+            //记录
+            newSectionList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_SECTION.getType());
+                record.setNewId(item.getSectionId());
+                CourseSection courseSection = sectionList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(courseSection)){
+                    record.setOldId(courseSection.getSectionId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //24 课程节业务关联
+        List<CourseSectionBusiness> sectionBusinessList = iCourseSectionBusinessService.list();
+        if (CollectionUtils.isNotEmpty(sectionBusinessList)){
+            List<CourseSectionBusiness> newSectionBusinessList = sectionBusinessList.stream().map(x -> {
+                CourseSectionBusiness sectionBusiness = BeanUtil.toBean(x, CourseSectionBusiness.class);
+                sectionBusiness.setId(null);
+                sectionBusiness.setTenantId(newTenantId);
+                return sectionBusiness;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseSectionBusinessService.saveBatch(newSectionBusinessList);
+        }
+        
+        //25 课程节观看权限关联
+        List<CourseSectionWatchPer> sectionWatchPerList = iCourseSectionWatchPerService.list();
+        if (CollectionUtils.isNotEmpty(sectionWatchPerList)){
+            List<CourseSectionWatchPer> newSectionWatchPerList = sectionWatchPerList.stream().map(x -> {
+                CourseSectionWatchPer sectionWatchPer = BeanUtil.toBean(x, CourseSectionWatchPer.class);
+                sectionWatchPer.setId(null);
+                sectionWatchPer.setTenantId(newTenantId);
+                return sectionWatchPer;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseSectionWatchPerService.saveBatch(newSectionWatchPerList);
+        }
+
+        //26 课程科目
+        List<CourseSubject> subjectList = iCourseSubjectService.list();
+        if (CollectionUtils.isNotEmpty(subjectList)){
+            List<CourseSubject> newSubjectList = subjectList.stream().map(x -> {
+                CourseSubject subject = BeanUtil.toBean(x, CourseSubject.class);
+                subject.setId(null);
+                subject.setTenantId(newTenantId);
+                return subject;
+            }).collect(Collectors.toList());
+            iCourseSubjectService.saveBatch(newSubjectList);
+            //记录
+            newSubjectList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_SUBJECT.getType());
+                record.setNewId(item.getId());
+                CourseSubject courseSubject = subjectList.stream().filter(x -> x.getEncoder().equals(item.getEncoder())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(courseSubject)){
+                    record.setOldId(courseSubject.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //27 课程科目项目关联
+        List<CourseSubjectProject> subjectProjectList = iCourseSubjectProjectService.list();
+        if (CollectionUtils.isNotEmpty(subjectProjectList)){
+            List<CourseSubjectProject> newSubjectProjectList = subjectProjectList.stream().map(x -> {
+                CourseSubjectProject subjectProject = BeanUtil.toBean(x, CourseSubjectProject.class);
+                subjectProject.setId(null);
+                subjectProject.setTenantId(newTenantId);
+                return subjectProject;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseSubjectProjectService.saveBatch(newSubjectProjectList);
+        }
+
+        //28 试卷
+        List<Exam> examList = iExamService.list();
+        if (CollectionUtils.isNotEmpty(examList)){
+            List<Exam> newExamList = examList.stream().map(x -> {
+                Exam exam = BeanUtil.toBean(x, Exam.class);
+                exam.setExamId(null);
+                exam.setTenantId(newTenantId);
+                return exam;
+            }).collect(Collectors.toList());
+            iExamService.saveBatch(newExamList);
+            //记录
+            newExamList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.EXAM.getType());
+                record.setNewId(item.getExamId());
+                Exam exam = examList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(exam)){
+                    record.setOldId(exam.getExamId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //29 试卷类型
+        List<ExamPaper> examPaperList = iExamPaperService.list();
+        if (CollectionUtils.isNotEmpty(examPaperList)){
+            List<ExamPaper> newExamPaperList = examPaperList.stream().map(x -> {
+                ExamPaper examPaper = BeanUtil.toBean(x, ExamPaper.class);
+                examPaper.setPaperId(null);
+                examPaper.setTenantId(newTenantId);
+                return examPaper;
+            }).collect(Collectors.toList());
+            iExamPaperService.saveBatch(newExamPaperList);
+            //记录
+            newExamPaperList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.EXAM_PAPER.getType());
+                record.setNewId(item.getPaperId());
+                ExamPaper examPaper = examPaperList.stream().filter(x -> x.getPaperName().equals(item.getPaperName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(examPaper)){
+                    record.setOldId(examPaper.getPaperId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //30 试卷题目关联
+        List<ExamQuestion> examQuestionList = iExamQuestionService.list();
+        if (CollectionUtils.isNotEmpty(examQuestionList)){
+            List<ExamQuestion> newExamQuestionList = examQuestionList.stream().map(x -> {
+                ExamQuestion examQuestion = BeanUtil.toBean(x, ExamQuestion.class);
+                examQuestion.setId(null);
+                examQuestion.setTenantId(newTenantId);
+                return examQuestion;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iExamQuestionService.saveBatch(newExamQuestionList);
+        }
+
+        //31 专业
+        List<Major> majorList = iMajorService.list();
+        if (CollectionUtils.isNotEmpty(majorList)){
+            List<Major> newMajorList = majorList.stream().map(x -> {
+                Major major = BeanUtil.toBean(x, Major.class);
+                major.setId(null);
+                major.setTenantId(newTenantId);
+                return major;
+            }).collect(Collectors.toList());
+            iMajorService.saveBatch(newMajorList);
+            //记录
+            newMajorList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.MAJOR.getType());
+                record.setNewId(item.getId());
+                Major major = majorList.stream().filter(x -> x.getEncoder().equals(item.getEncoder())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(major)){
+                    record.setOldId(major.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //32 专业项目关联
+        List<MajorProject> majorProjectList = iMajorProjectService.list();
+        if (CollectionUtils.isNotEmpty(majorProjectList)){
+            List<MajorProject> newMajorProjectList = majorProjectList.stream().map(x -> {
+                MajorProject majorProject = BeanUtil.toBean(x, MajorProject.class);
+                majorProject.setId(null);
+                majorProject.setTenantId(newTenantId);
+                return majorProject;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iMajorProjectService.saveBatch(newMajorProjectList);
+        }
+        
+        //33 服务
+        List<PayServe> serveList = iPayServeService.list();
+        if (CollectionUtils.isNotEmpty(serveList)){
+            List<PayServe> newServeList = serveList.stream().map(x -> {
+                PayServe serve = BeanUtil.toBean(x, PayServe.class);
+                serve.setServeId(null);
+                serve.setTenantId(newTenantId);
+                return serve;
+            }).collect(Collectors.toList());
+            iPayServeService.saveBatch(newServeList);
+            //记录
+            newServeList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.PAY_SERVE.getType());
+                record.setNewId(item.getServeId());
+                PayServe payServe = serveList.stream().filter(x -> x.getServeName().equals(item.getServeName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(payServe)){
+                    record.setOldId(payServe.getServeId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //34 服务供应
+        List<PaySupply> paySup = iPaySupplyService.list();
+        if (CollectionUtils.isNotEmpty(paySup)){
+            List<PaySupply> newPaySup = paySup.stream().map(x -> {
+                PaySupply supply = BeanUtil.toBean(x, PaySupply.class);
+                supply.setSupplyId(null);
+                supply.setTenantId(newTenantId);
+                return supply;
+            }).collect(Collectors.toList());
+            iPaySupplyService.saveBatch(newPaySup);
+            //记录
+            newPaySup.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.PAY_SUPPLY.getType());
+                record.setNewId(item.getSupplyId());
+                PaySupply sup = paySup.stream().filter(x -> x.getSupplyName().equals(item.getSupplyName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(sup)){
+                    record.setOldId(sup.getSupplyId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //35 课程流
+        List<CourseStreaming> streamingList = iCourseStreamingService.list();
+        if (CollectionUtils.isNotEmpty(streamingList)){
+            List<CourseStreaming> newStreamingList = streamingList.stream().map(x -> {
+                CourseStreaming streaming = BeanUtil.toBean(x, CourseStreaming.class);
+                streaming.setId(null);
+                streaming.setTenantId(newTenantId);
+                return streaming;
+            }).collect(Collectors.toList());
+            iCourseStreamingService.saveBatch(newStreamingList);
+            //记录
+            newStreamingList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.COURSE_STREAMING.getType());
+                record.setNewId(item.getId());
+                CourseStreaming streaming = streamingList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(streaming)){
+                    record.setOldId(streaming.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //36 课程流业务层次
+        List<CourseStreamingBusiness> streamingBusinessList = iCourseStreamingBusinessService.list();
+        if (CollectionUtils.isNotEmpty(streamingBusinessList)){
+            List<CourseStreamingBusiness> newStreamingBusinessList = streamingBusinessList.stream().map(x -> {
+                CourseStreamingBusiness streamingBusiness = BeanUtil.toBean(x, CourseStreamingBusiness.class);
+                streamingBusiness.setId(null);
+                streamingBusiness.setTenantId(newTenantId);
+                return streamingBusiness;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iCourseStreamingBusinessService.saveBatch(newStreamingBusinessList);
+        }
+
+        //37 保利威资源类型
+        List<PolyvCata> polyvCataList = iPolyvCataService.list();
+        if (CollectionUtils.isNotEmpty(polyvCataList)){
+            List<PolyvCata> newPolyvCataList = polyvCataList.stream().map(x -> {
+                PolyvCata cata = BeanUtil.toBean(x, PolyvCata.class);
+                cata.setId(null);
+                cata.setTenantId(newTenantId);
+                return cata;
+            }).collect(Collectors.toList());
+            iPolyvCataService.saveBatch(newPolyvCataList);
+            //记录
+            newPolyvCataList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.POLYV_CATA.getType());
+                record.setNewId(item.getId());
+                PolyvCata cata = polyvCataList.stream().filter(x -> x.getCataname().equals(item.getCataname()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(cata)){
+                    record.setOldId(cata.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //38 保利威视频资源
+        List<PolyvVideo> polyvVideoList = iPolyvVideoService.list();
+        if (CollectionUtils.isNotEmpty(polyvVideoList)){
+            List<PolyvVideo> newPolyvVideoList = polyvVideoList.stream().map(x -> {
+                PolyvVideo video = BeanUtil.toBean(x, PolyvVideo.class);
+                video.setPolyvId(null);
+                video.setTenantId(newTenantId);
+                return video;
+            }).collect(Collectors.toList());
+            iPolyvVideoService.saveBatch(newPolyvVideoList);
+            //记录
+            newPolyvVideoList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.POLYV_VIDEO.getType());
+                record.setNewId(item.getPolyvId());
+                PolyvVideo video = polyvVideoList.stream().filter(x -> x.getTitle().equals(item.getTitle()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(video)){
+                    record.setOldId(video.getPolyvId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //39 资料字段
+        List<ProfileField> fieldList = iProfileFieldService.list();
+        if (CollectionUtils.isNotEmpty(fieldList)){
+            List<ProfileField> newFieldList = fieldList.stream().map(x -> {
+                ProfileField field = BeanUtil.toBean(x, ProfileField.class);
+                field.setFieldId(null);
+                field.setTenantId(newTenantId);
+                return field;
+            }).collect(Collectors.toList());
+            iProfileFieldService.saveBatch(newFieldList);
+            //记录
+            newFieldList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.PROFILE_FIELD.getType());
+                record.setNewId(item.getFieldId());
+                ProfileField field = fieldList.stream().filter(x -> x.getFieldName().equals(item.getFieldName()) && x.getCreateTime().equals(item.getCreateTime())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(field)){
+                    record.setOldId(field.getFieldId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //40 资料模板
+        List<ProfileTp> fProfileTpList = iProfileTpService.list();
+        if (CollectionUtils.isNotEmpty(fProfileTpList)){
+            List<ProfileTp> newFProfileTpList = fProfileTpList.stream().map(x -> {
+                ProfileTp fProfileTp = BeanUtil.toBean(x, ProfileTp.class);
+                fProfileTp.setProfileTpId(null);
+                fProfileTp.setTenantId(newTenantId);
+                return fProfileTp;
+            }).collect(Collectors.toList());
+            iProfileTpService.saveBatch(newFProfileTpList);
+            //记录
+            newFProfileTpList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.PROFILE_TP.getType());
+                record.setNewId(item.getProfileTpId());
+                ProfileTp tp = fProfileTpList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(tp)){
+                    record.setOldId(tp.getProfileTpId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+        
+        //41 资料模板业务层次关联
+        List<ProfileTpBusiness> tpBusinessList = iProfileTpBusinessService.list();
+        if (CollectionUtils.isNotEmpty(tpBusinessList)){
+            List<ProfileTpBusiness> newTpBusinessList = tpBusinessList.stream().map(x -> {
+                ProfileTpBusiness tpBusiness = BeanUtil.toBean(x, ProfileTpBusiness.class);
+                tpBusiness.setId(null);
+                tpBusiness.setTenantId(newTenantId);
+                return tpBusiness;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iProfileTpBusinessService.saveBatch(newTpBusinessList);
+        }
+
+        //42 题目
+        List<Question> questionList = iQuestionService.list();
+        if (CollectionUtils.isNotEmpty(questionList)){
+            List<Question> newQuestionList = questionList.stream().map(x -> {
+                Question question = BeanUtil.toBean(x, Question.class);
+                question.setQuestionId(null);
+                question.setTenantId(newTenantId);
+                return question;
+            }).collect(Collectors.toList());
+            iQuestionService.saveBatch(newQuestionList);
+            //记录
+            newQuestionList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.QUESTION.getType());
+                record.setNewId(item.getQuestionId());
+                Question question = questionList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(question)){
+                    record.setOldId(question.getQuestionId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //43 题目业务层次关联
+        List<QuestionBusiness> questionBusinessList = iQuestionBusinessService.list();
+        if (CollectionUtils.isNotEmpty(questionBusinessList)){
+            List<QuestionBusiness> newQuestionBusinessList = questionBusinessList.stream().map(x -> {
+                QuestionBusiness questionBusiness = BeanUtil.toBean(x, QuestionBusiness.class);
+                questionBusiness.setId(null);
+                questionBusiness.setTenantId(newTenantId);
+                return questionBusiness;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iQuestionBusinessService.saveBatch(newQuestionBusinessList);
+        }
+
+        //44 题目章
+        List<QuestionChapter> questionChapterList = iQuestionChapterService.list();
+        if (CollectionUtils.isNotEmpty(questionChapterList)){
+            List<QuestionChapter> newQuestionChapterList = questionChapterList.stream().map(x -> {
+                QuestionChapter questionChapter = BeanUtil.toBean(x, QuestionChapter.class);
+                questionChapter.setChapterExamId(null);
+                questionChapter.setTenantId(newTenantId);
+                return questionChapter;
+            }).collect(Collectors.toList());
+            iQuestionChapterService.saveBatch(newQuestionChapterList);
+            //记录
+            newQuestionChapterList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.QUESTION_CHAPTER.getType());
+                record.setNewId(item.getChapterExamId());
+                QuestionChapter questionChapter = questionChapterList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(questionChapter)){
+                    record.setOldId(questionChapter.getChapterExamId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //45 题库章试卷关联
+        List<QuestionChapterExam> questionChapterExamList = iQuestionChapterExamService.list();
+        if (CollectionUtils.isNotEmpty(questionChapterExamList)){
+            List<QuestionChapterExam> newQuestionChapterExamList = questionChapterExamList.stream().map(x -> {
+                QuestionChapterExam questionChapterExam = BeanUtil.toBean(x, QuestionChapterExam.class);
+                questionChapterExam.setId(null);
+                questionChapterExam.setTenantId(newTenantId);
+                return questionChapterExam;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iQuestionChapterExamService.saveBatch(newQuestionChapterExamList);
+        }
+        
+        //46 题库模块
+        List<QuestionModule> questionModuleList = iQuestionModuleService.list();
+        if (CollectionUtils.isNotEmpty(questionModuleList)){
+            List<QuestionModule> newQuestionModuleList = questionModuleList.stream().map(x -> {
+                QuestionModule questionModule = BeanUtil.toBean(x, QuestionModule.class);
+                questionModule.setModuleExamId(null);
+                questionModule.setTenantId(newTenantId);
+                return questionModule;
+            }).collect(Collectors.toList());
+            iQuestionModuleService.saveBatch(newQuestionModuleList);
+            //记录
+            newQuestionModuleList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.QUESTION_MODULE.getType());
+                record.setNewId(item.getModuleExamId());
+                QuestionModule questionModule = questionModuleList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(questionModule)){
+                    record.setOldId(questionModule.getModuleExamId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //47 题库模块章关联
+        List<QuestionModuleChapter> questionModuleChapterList = iQuestionModuleChapterService.list();
+        if (CollectionUtils.isNotEmpty(questionModuleChapterList)){
+            List<QuestionModuleChapter> newQuestionModuleChapterList = questionModuleChapterList.stream().map(x -> {
+                QuestionModuleChapter questionModuleChapter = BeanUtil.toBean(x, QuestionModuleChapter.class);
+                questionModuleChapter.setId(null);
+                questionModuleChapter.setTenantId(newTenantId);
+                return questionModuleChapter;
+            }).collect(Collectors.toList());
+            //关联表不需要记录(后续修改ID)
+            iQuestionModuleChapterService.saveBatch(newQuestionModuleChapterList);
+        }
+
+        //48 证书
+        List<CertificateCommon> certificateCommonList = iCertificateCommonService.list();
+        if (CollectionUtils.isNotEmpty(certificateCommonList)){
+            List<CertificateCommon> newCertificateCommonList = certificateCommonList.stream().map(x -> {
+                CertificateCommon common = BeanUtil.toBean(x, CertificateCommon.class);
+                common.setId(null);
+                common.setTenantId(newTenantId);
+                return common;
+            }).collect(Collectors.toList());
+            iCertificateCommonService.saveBatch(newCertificateCommonList);
+            //记录
+            newCertificateCommonList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.CERTIFICATE_COMMON.getType());
+                record.setNewId(item.getId());
+                CertificateCommon common = certificateCommonList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(common)){
+                    record.setOldId(common.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //49 证书类型
+        List<Certificate> certificateList = iCertificateService.list();
+        if (CollectionUtils.isNotEmpty(certificateList)){
+            List<Certificate> newCertificateList = certificateList.stream().map(x -> {
+                Certificate certificate = BeanUtil.toBean(x, Certificate.class);
+                certificate.setId(null);
+                certificate.setTenantId(newTenantId);
+                return certificate;
+            }).collect(Collectors.toList());
+            iCertificateService.saveBatch(newCertificateList);
+            //记录
+            newCertificateList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.CERTIFICATE.getType());
+                record.setNewId(item.getId());
+                Certificate certificate = certificateList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(certificate)){
+                    record.setOldId(certificate.getId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //50 证书模板
+        List<CertificateTp> certificateTpList = iCertificateTpService.list();
+        if (CollectionUtils.isNotEmpty(certificateTpList)){
+            List<CertificateTp> newCertificateTpList = certificateTpList.stream().map(x -> {
+                CertificateTp certificateTp = BeanUtil.toBean(x, CertificateTp.class);
+                certificateTp.setTpId(null);
+                certificateTp.setTenantId(newTenantId);
+                return certificateTp;
+            }).collect(Collectors.toList());
+            iCertificateTpService.saveBatch(newCertificateTpList);
+            //记录
+            newCertificateTpList.forEach(item -> {
+                SysGoodsCopyRecord record = new SysGoodsCopyRecord();
+                record.setType(GoodsCopyEnum.CERTIFICATE_TP.getType());
+                record.setNewId(item.getTpId());
+                CertificateTp certificateTp = certificateTpList.stream().filter(x -> x.getCode().equals(item.getCode())).findFirst().orElse(null);
+                if (ObjectUtils.isNotNull(certificateTp)){
+                    record.setOldId(certificateTp.getTpId());
+                }
+                record.setCreateTime(DateUtils.getNowTime());
+                record.setUpdateTime(DateUtils.getNowTime());
+                record.setTenantId(newTenantId);
+                copyRecordList.add(record);
+            });
+        }
+
+        //保存记录
+        iSysGoodsCopyRecordService.saveBatch(copyRecordList);
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean goodsBatchCopyDisposeTenant() {
+        List<Goods> goodsList = list();
+        if (CollectionUtils.isEmpty(goodsList)){
+            return true;
+        }
+        //处理关联ID
         for (Goods goods : goodsList) {
             //供应方ID
-            if (ObjectUtil.isNotNull(goods.getSupplyId())){
-                PaySupply supply = iPaySupplyService.getById(goods.getSupplyId());
-                if (ObjectUtils.isNotNull(supply)){
-                    //新机构是否存在
-                    PaySupply newSupply = iPaySupplyService.getSupplyByTenant(supply.getSupplyName(),newTenantId);
-                    if (ObjectUtil.isNotNull(newSupply)){
-                        goods.setSupplyId(newSupply.getSupplyId());
-                    }else {
-                        supply.setSupplyId(null);
-                        supply.setTenantId(newTenantId);
-                        iPaySupplyService.save(supply);
-                        goods.setSupplyId(supply.getSupplyId());
+            goods.setSupplyId(getNewId(goods.getSupplyId(), GoodsCopyEnum.PAY_SUPPLY.getType()));
+            //教育类型
+            goods.setEducationTypeId(getNewId(goods.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+            //业务层次
+            goods.setBusinessId(getNewId(goods.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+            //所属专业
+            goods.setMajorId(getNewId(goods.getMajorId(), GoodsCopyEnum.MAJOR.getType()));
+            //项目
+            if (ObjectUtils.isNotNull(goods.getProjectId())){
+                Long newId = getNewId(goods.getProjectId().longValue(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType());
+                goods.setProjectId(ObjectUtils.isNull(newId)?null :newId.intValue());
+            }
+            //讲义
+            goods.setHandoutsId(getNewId(goods.getHandoutsId(), GoodsCopyEnum.COURSE_HANDOUTS.getType()));
+            //科目
+            goods.setSubjectIds(getNewIds(goods.getSubjectIds(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+            //证书类型
+            goods.setCertificateTypeId(getNewId(goods.getCertificateTypeId(), GoodsCopyEnum.CERTIFICATE.getType()));
+            //证书
+            goods.setCertificateId(getNewId(goods.getCertificateId(), GoodsCopyEnum.CERTIFICATE_COMMON.getType()));
+            //证书模板
+            goods.setCertificateTpId(getNewId(goods.getCertificateTpId(), GoodsCopyEnum.CERTIFICATE_TP.getType()));
+            //规格模板
+            goods.setSpecTemplateId(getNewId(goods.getSpecTemplateId(), GoodsCopyEnum.GOODS_SPEC_TEMPLATE.getType()));
+        }
+
+        updateBatchById(goodsList);
+
+
+        //2 商品规格
+        List<GoodsSpec> specList = goodsSpecService.list();
+        if (CollectionUtils.isNotEmpty(specList)){
+            for (GoodsSpec item : specList) {
+                //规格模板ID
+                item.setSpecTemplateId(getNewId(item.getSpecTemplateId(), GoodsCopyEnum.GOODS_SPEC_TEMPLATE.getType()));
+            }
+            goodsSpecService.updateBatchById(specList);
+        }
+
+        //3 规格模板
+        List<GoodsSpecTemplate> specTemplateList = goodsSpecTemplateService.list();
+        if (CollectionUtils.isNotEmpty(specTemplateList)){
+            for (GoodsSpecTemplate item : specTemplateList) {
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+            }
+            goodsSpecTemplateService.updateBatchById(specTemplateList);
+        }
+
+        //4 规格属性
+        List<GoodsSpecAttribute> specAttributeList = goodsSpecAttributeService.list();
+        if (CollectionUtils.isNotEmpty(specAttributeList)){
+            for (GoodsSpecAttribute item : specAttributeList) {
+                //规格ID
+                item.setSpecId(getNewId(item.getSpecId(), GoodsCopyEnum.GOODS_SPEC.getType()));
+            }
+            goodsSpecAttributeService.updateBatchById(specAttributeList);
+        }
+
+        //5 规格属性关联
+        List<GoodsSpecAttributeRelation> attributeRelationList = goodsSpecAttributeRelationService.list();
+        if (CollectionUtils.isNotEmpty(attributeRelationList)){
+            for (GoodsSpecAttributeRelation item : attributeRelationList) {
+                //规格属性IDs
+                item.setSpecAttributeIds(getNewIds(item.getSpecAttributeIds(), GoodsCopyEnum.GOODS_SPEC_ATTRIBUTE.getType()));
+                //商品ID
+                item.setGoodsId(getNewId(item.getGoodsId(),GoodsCopyEnum.GOODS.getType()));
+                //规格模板ID
+                item.setSpecTemplateId(getNewId(item.getSpecTemplateId(),GoodsCopyEnum.GOODS_SPEC_TEMPLATE.getType()));
+            }
+            goodsSpecAttributeRelationService.updateBatchById(attributeRelationList);
+        }
+
+        //6 商品课程关联
+        List<GoodsCourse> goodsCourseList = iGoodsCourseService.list();
+        if (CollectionUtils.isNotEmpty(goodsCourseList)){
+            for (GoodsCourse item : goodsCourseList) {
+                //商品ID
+                item.setGoodsId(getNewId(item.getGoodsId(), GoodsCopyEnum.GOODS.getType()));
+                //课程ID
+                item.setCourseId(getNewId(item.getCourseId(),GoodsCopyEnum.COURSE.getType()));
+            }
+            iGoodsCourseService.updateBatchById(goodsCourseList);
+        }
+
+        //7 课程老师关联
+        List<GoodsCourseTeacher> courseTeacherList = goodsCourseTeacherService.list();
+        if (CollectionUtils.isNotEmpty(courseTeacherList)){
+            for (GoodsCourseTeacher item : courseTeacherList) {
+                //商品ID
+                item.setGoodsId(getNewId(item.getGoodsId(), GoodsCopyEnum.GOODS.getType()));
+                //课程IDS
+                item.setCourseIds(getNewIds(item.getCourseIds(),GoodsCopyEnum.COURSE.getType()));
+            }
+            goodsCourseTeacherService.updateBatchById(courseTeacherList);
+        }
+
+        //8 课程
+        List<Course> courseList = iCourseService.list();
+        if (CollectionUtils.isNotEmpty(courseList)){
+            for (Course item : courseList) {
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //所属专业
+                item.setMajorId(getNewId(item.getMajorId(), GoodsCopyEnum.MAJOR.getType()));
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+                //科目
+                item.setSubjectId(getNewId(item.getSubjectId(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+            }
+            iCourseService.updateBatchById(courseList);
+        }
+
+        //9 业务层次
+        List<CourseBusiness> businessList = iCourseBusinessService.list();
+        if (CollectionUtils.isNotEmpty(businessList)){
+            for (CourseBusiness item : businessList) {
+                //项目
+                if (ObjectUtils.isNotNull(item.getProjectId())){
+                    Long newId = getNewId(item.getProjectId().longValue(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType());
+                    item.setProjectId(ObjectUtils.isNull(newId)?null:newId.intValue());
+                }
+            }
+            iCourseBusinessService.updateBatchById(businessList);
+        }
+
+        //10 课程章
+        //11 课程章业务层次关联
+        List<CourseChapterBusiness> courseChapterBusinessList = iCourseChapterBusinessService.list();
+        if (CollectionUtils.isNotEmpty(courseChapterBusinessList)){
+            for (CourseChapterBusiness item : courseChapterBusinessList) {
+                //章ID
+                item.setChapterId(getNewId(item.getChapterId(),GoodsCopyEnum.COURSE_CHAPTER.getType()));
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+                //科目
+                item.setSubjectId(getNewId(item.getSubjectId(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+            }
+            iCourseChapterBusinessService.updateBatchById(courseChapterBusinessList);
+        }
+
+        //12 课程章节关联
+        List<CourseChapterSection> chapterSectionList = iCourseChapterSectionService.list();
+        if (CollectionUtils.isNotEmpty(chapterSectionList)){
+            for (CourseChapterSection item : chapterSectionList) {
+                //章ID
+                item.setChapterId(getNewId(item.getChapterId(),GoodsCopyEnum.COURSE_CHAPTER.getType()));
+                //节ID
+                item.setSectionId(getNewId(item.getSectionId(), GoodsCopyEnum.COURSE_SECTION.getType()));
+            }
+            iCourseChapterSectionService.updateBatchById(chapterSectionList);
+        }
+
+        //13 教育类型关联
+        List<CourseEducationTier> educationTierList = iCourseEducationTierService.list();
+        if (CollectionUtils.isNotEmpty(educationTierList)){
+            for (CourseEducationTier item : educationTierList) {
+                //教育类型ID
+                item.setEducationId(getNewId(item.getEducationId(),GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+            }
+            iCourseEducationTierService.updateBatchById(educationTierList);
+        }
+
+        //14 教育类型
+        //15 课程讲义
+        //16 讲义业务层次关联
+        List<CourseHandoutsBusiness> handoutsBusinessList = iCourseHandoutsBusinessService.list();
+        if (CollectionUtils.isNotEmpty(handoutsBusinessList)){
+            for (CourseHandoutsBusiness item : handoutsBusinessList) {
+                //教育类型
+                item.setEducationId(getNewId(item.getEducationId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //科目
+                item.setSubjectId(getNewId(item.getSubjectId(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+                //讲义ID
+                item.setHandoutsId(getNewId(item.getHandoutsId(), GoodsCopyEnum.COURSE_HANDOUTS.getType()));
+            }
+            iCourseHandoutsBusinessService.updateBatchById(handoutsBusinessList);
+        }
+
+        //17 课程目录关联
+        List<CourseMenu> courseMenuList = iCourseMenuService.list();
+        if (CollectionUtils.isNotEmpty(courseMenuList)){
+            for (CourseMenu item : courseMenuList) {
+                //课程ID
+                item.setCourseId(getNewId(item.getCourseId(), GoodsCopyEnum.COURSE.getType()));
+                //目录ID
+                if (ObjectUtils.isNotNull(item.getType())){
+                    if (item.getType() == 1){
+                        //模快
+                        item.setMenuId(getNewId(item.getMenuId(), GoodsCopyEnum.COURSE_MODULE.getType()));
+                    }else if (item.getType() == 2){
+                        //章
+                        item.setMenuId(getNewId(item.getMenuId(), GoodsCopyEnum.COURSE_CHAPTER.getType()));
+                    }else if (item.getType() == 3){
+                        //节
+                        item.setMenuId(getNewId(item.getMenuId(), GoodsCopyEnum.COURSE_SECTION.getType()));
                     }
                 }
             }
+            iCourseMenuService.updateBatchById(courseMenuList);
+        }
 
-            //教育类型
-            if (ObjectUtil.isNotNull(goods.getEducationTypeId())){
-                CourseEducationType type = iCourseEducationTypeService.getById(goods.getEducationTypeId());
-                if (ObjectUtil.isNotNull(type)){
-                    CourseEducationType newType = iCourseEducationTypeService.getEducationTypeBytenant(type.getEncoder(),newTenantId);
-                    if (ObjectUtil.isNotNull(newType)){
-                        goods.setEducationTypeId(newType.getId());
-                    }else {
-                        type.setId(null);
-                        type.setTenantId(newTenantId);
-                        iCourseEducationTypeService.save(type);
-                        goods.setEducationTypeId(type.getId());
+        //18 课程目录试卷关联
+        List<CourseMenuExam> courseMenuExamList = iCourseMenuExamService.list();
+        if (CollectionUtils.isNotEmpty(courseMenuExamList)){
+            for (CourseMenuExam item : courseMenuExamList) {
+                //课程ID
+                item.setCourseId(getNewId(item.getCourseId(), GoodsCopyEnum.COURSE.getType()));
+                //模快
+                item.setModuleId(getNewId(item.getModuleId(), GoodsCopyEnum.COURSE_MODULE.getType()));
+                //章
+                item.setChapterId(getNewId(item.getChapterId(), GoodsCopyEnum.COURSE_CHAPTER.getType()));
+                //节
+                item.setSectionId(getNewId(item.getSectionId(), GoodsCopyEnum.COURSE_SECTION.getType()));
+                //试卷
+                item.setExamId(getNewId(item.getExamId(), GoodsCopyEnum.EXAM.getType()));
+            }
+            iCourseMenuExamService.updateBatchById(courseMenuExamList);
+        }
+
+        //19 课程模块
+        //20 课程模块业务关联
+        List<CourseModuleBusiness> moduleBusinessList = iCourseModuleBusinessService.list();
+        if (CollectionUtils.isNotEmpty(moduleBusinessList)){
+            for (CourseModuleBusiness item : moduleBusinessList) {
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //科目
+                item.setSubjectId(getNewId(item.getSubjectId(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+                //模块
+                item.setModuleId(getNewId(item.getModuleId(), GoodsCopyEnum.COURSE_MODULE.getType()));
+            }
+            iCourseModuleBusinessService.updateBatchById(moduleBusinessList);
+        }
+
+        //21 课程模块章关联
+        List<CourseModuleChapter> moduleChapterList = iCourseModuleChapterService.list();
+        if (CollectionUtils.isNotEmpty(moduleChapterList)){
+            for (CourseModuleChapter item : moduleChapterList) {
+                //模块
+                item.setModuleId(getNewId(item.getModuleId(), GoodsCopyEnum.COURSE_MODULE.getType()));
+                //模块
+                item.setChapterId(getNewId(item.getChapterId(), GoodsCopyEnum.COURSE_CHAPTER.getType()));
+            }
+            iCourseModuleChapterService.updateBatchById(moduleChapterList);
+        }
+
+        //22 课程项目
+        List<CourseProjectType> projectTypeList = iCourseProjectTypeService.list();
+        if (CollectionUtils.isNotEmpty(projectTypeList)){
+            for (CourseProjectType item : projectTypeList) {
+                //教育类型
+                if (ObjectUtils.isNotNull(item.getEducationId())){
+                    Long newId = getNewId(item.getEducationId().longValue(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType());
+                    item.setEducationId(ObjectUtils.isNull(newId)?null:newId.intValue());
+                }
+            }
+            iCourseProjectTypeService.updateBatchById(projectTypeList);
+        }
+
+        //23 课程节
+        //24 课程节业务关联
+        List<CourseSectionBusiness> sectionBusinessList = iCourseSectionBusinessService.list();
+        if (CollectionUtils.isNotEmpty(sectionBusinessList)){
+            for (CourseSectionBusiness item : sectionBusinessList) {
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //科目
+                item.setSubjectId(getNewId(item.getSubjectId(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+                //节
+                item.setSectionId(getNewId(item.getSectionId(), GoodsCopyEnum.COURSE_SECTION.getType()));
+            }
+            iCourseSectionBusinessService.updateBatchById(sectionBusinessList);
+        }
+
+        //25 课程节观看权限关联
+        List<CourseSectionWatchPer> sectionWatchPerList = iCourseSectionWatchPerService.list();
+        if (CollectionUtils.isNotEmpty(sectionWatchPerList)){
+            for (CourseSectionWatchPer item : sectionWatchPerList) {
+                //课程ID
+                item.setCourseId(getNewId(item.getCourseId(), GoodsCopyEnum.COURSE.getType()));
+                //模快
+                item.setModuleId(getNewId(item.getModuleId(), GoodsCopyEnum.COURSE_MODULE.getType()));
+                //章
+                item.setChapterId(getNewId(item.getChapterId(), GoodsCopyEnum.COURSE_CHAPTER.getType()));
+                //节
+                item.setSectionId(getNewId(item.getSectionId(), GoodsCopyEnum.COURSE_SECTION.getType()));
+                //商品
+                item.setGoodsId(getNewId(item.getGoodsId(), GoodsCopyEnum.GOODS.getType()));
+            }
+            iCourseSectionWatchPerService.updateBatchById(sectionWatchPerList);
+        }
+
+        //26 课程科目
+        //27 课程科目项目关联
+        List<CourseSubjectProject> subjectProjectList = iCourseSubjectProjectService.list();
+        if (CollectionUtils.isNotEmpty(subjectProjectList)){
+            for (CourseSubjectProject item : subjectProjectList) {
+                //科目
+                item.setSubjectId(getNewId(item.getSubjectId(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+            }
+            iCourseSubjectProjectService.updateBatchById(subjectProjectList);
+        }
+
+        //28 试卷
+        List<Exam> examList = iExamService.list();
+        if (CollectionUtils.isNotEmpty(examList)){
+            for (Exam item : examList) {
+                //试卷类型
+                item.setExamPaperId(getNewId(item.getExamPaperId(), GoodsCopyEnum.EXAM_PAPER.getType()));
+            }
+            iExamService.updateBatchById(examList);
+        }
+
+        //29 试卷类型
+        //30 试卷题目关联
+        List<ExamQuestion> examQuestionList = iExamQuestionService.list();
+        if (CollectionUtils.isNotEmpty(examQuestionList)){
+            for (ExamQuestion item : examQuestionList) {
+                //试卷
+                item.setExamId(getNewId(item.getExamId(), GoodsCopyEnum.EXAM.getType()));
+                //题目
+                item.setQuestionId(getNewId(item.getQuestionId(), GoodsCopyEnum.QUESTION.getType()));
+            }
+            iExamQuestionService.updateBatchById(examQuestionList);
+        }
+
+        //31 专业
+        //32 专业项目关联
+        List<MajorProject> majorProjectList = iMajorProjectService.list();
+        if (CollectionUtils.isNotEmpty(majorProjectList)){
+            for (MajorProject item : majorProjectList) {
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+                //专业
+                item.setMajorId(getNewId(item.getMajorId(), GoodsCopyEnum.MAJOR.getType()));
+            }
+            iMajorProjectService.updateBatchById(majorProjectList);
+        }
+
+        //33 服务
+        //34 服务供应
+        List<PaySupply> paySupplyList = iPaySupplyService.list();
+        if (CollectionUtils.isNotEmpty(paySupplyList)){
+            for (PaySupply item : paySupplyList) {
+                //服务类型
+                item.setServerId(getNewId(item.getServerId(), GoodsCopyEnum.PAY_SERVE.getType()));
+            }
+            iPaySupplyService.updateBatchById(paySupplyList);
+        }
+
+        //35 课程流
+        List<CourseStreaming> streamingList = iCourseStreamingService.list();
+        if (CollectionUtils.isNotEmpty(streamingList)){
+            for (CourseStreaming item : streamingList) {
+                //本地保利威视频ID
+                item.setPolyvId(getNewId(item.getPolyvId(), GoodsCopyEnum.POLYV_VIDEO.getType()));
+            }
+            iCourseStreamingService.updateBatchById(streamingList);
+        }
+
+        //36 课程流业务层次
+        List<CourseStreamingBusiness> streamingBusinessList = iCourseStreamingBusinessService.list();
+        if (CollectionUtils.isNotEmpty(streamingBusinessList)){
+            for (CourseStreamingBusiness item : streamingBusinessList) {
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //流ID
+                item.setStreamingId(getNewId(item.getStreamingId(), GoodsCopyEnum.COURSE_STREAMING.getType()));
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+            }
+            iCourseStreamingBusinessService.updateBatchById(streamingBusinessList);
+        }
+
+        //37 保利威资源类型
+        //38 保利威视频资源
+        //39 资料字段
+        //40 资料模板
+        List<ProfileTp> profileTpList = iProfileTpService.list();
+        if (CollectionUtils.isNotEmpty(profileTpList)){
+            for (ProfileTp item : profileTpList) {
+                //商品
+                item.setGoodsIds(getNewIds(item.getGoodsIds(), GoodsCopyEnum.GOODS.getType()));
+            }
+            iProfileTpService.updateBatchById(profileTpList);
+        }
+
+        //41 资料模板业务层次关联
+        List<ProfileTpBusiness> profileTpBusinessList = iProfileTpBusinessService.list();
+        if (CollectionUtils.isNotEmpty(profileTpBusinessList)){
+            for (ProfileTpBusiness item : profileTpBusinessList) {
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //资料模板ID
+                item.setProfileTpId(getNewId(item.getProfileTpId(), GoodsCopyEnum.PROFILE_TP.getType()));
+            }
+            iProfileTpBusinessService.updateBatchById(profileTpBusinessList);
+        }
+
+        //42 题目
+        //43 题目业务层次关联
+        List<QuestionBusiness> questionBusinessList = iQuestionBusinessService.list();
+        if (CollectionUtils.isNotEmpty(questionBusinessList)){
+            for (QuestionBusiness item : questionBusinessList) {
+                //教育类型
+                item.setEducationTypeId(getNewId(item.getEducationTypeId(), GoodsCopyEnum.COURSE_EDUCATION_TYPE.getType()));
+                //业务层次
+                item.setBusinessId(getNewId(item.getBusinessId(), GoodsCopyEnum.COURSE_BUSINESS.getType()));
+                //科目
+                item.setSubjectId(getNewId(item.getSubjectId(), GoodsCopyEnum.COURSE_SUBJECT.getType()));
+                //项目
+                item.setProjectId(getNewId(item.getProjectId(), GoodsCopyEnum.COURSE_PROJECT_TYPE.getType()));
+                if (ObjectUtils.isNotNull(item.getType())){
+                    if (item.getType() == 1){
+                        //题目
+                        item.setMajorId(getNewId(item.getMajorId(), GoodsCopyEnum.QUESTION.getType()));
+                    }else if (item.getType() == 2){
+                        //试卷
+                        item.setMajorId(getNewId(item.getMajorId(), GoodsCopyEnum.EXAM.getType()));
+                    }else if (item.getType() == 3){
+                        //章卷
+                        item.setMajorId(getNewId(item.getMajorId(), GoodsCopyEnum.QUESTION_CHAPTER.getType()));
+                    }else if (item.getType() == 4){
+                        //模块卷
+                        item.setMajorId(getNewId(item.getMajorId(), GoodsCopyEnum.QUESTION_MODULE.getType()));
                     }
+
                 }
             }
+            iQuestionBusinessService.updateBatchById(questionBusinessList);
+        }
+
+        //44 题目章
+        //45 题库章试卷关联
+        List<QuestionChapterExam> chapterExamList = iQuestionChapterExamService.list();
+        if (CollectionUtils.isNotEmpty(chapterExamList)){
+            for (QuestionChapterExam item : chapterExamList) {
+                //章卷
+                item.setChapterExamId(getNewId(item.getChapterExamId(), GoodsCopyEnum.QUESTION_CHAPTER.getType()));
+                //试卷
+                item.setExamId(getNewId(item.getExamId(), GoodsCopyEnum.EXAM.getType()));
+            }
+            iQuestionChapterExamService.updateBatchById(chapterExamList);
+        }
+
+        //46 题库模块
+        //47 题库模块章关联
+        List<QuestionModuleChapter> questionModuleChapterList = iQuestionModuleChapterService.list();
+        if (CollectionUtils.isNotEmpty(questionModuleChapterList)){
+            for (QuestionModuleChapter item : questionModuleChapterList) {
+                //章卷
+                item.setChapterExamId(getNewId(item.getChapterExamId(), GoodsCopyEnum.QUESTION_CHAPTER.getType()));
+                //模块卷
+                item.setModuleExamId(getNewId(item.getModuleExamId(), GoodsCopyEnum.QUESTION_MODULE.getType()));
+            }
+            iQuestionModuleChapterService.updateBatchById(questionModuleChapterList);
+        }
+
+        //48 证书
+        List<CertificateCommon> certificateCommonList = iCertificateCommonService.list();
+        if (CollectionUtils.isNotEmpty(certificateCommonList)){
+            for (CertificateCommon item : certificateCommonList) {
+                //证书类型
+                item.setCertificateTypeId(getNewId(item.getCertificateTypeId(), GoodsCopyEnum.CERTIFICATE.getType()));
+            }
+            iCertificateCommonService.updateBatchById(certificateCommonList);
+        }
+
+        //49 证书类型
+        //50 证书模板
+        List<CertificateTp> certificateTpList = iCertificateTpService.list();
+        if (CollectionUtils.isNotEmpty(certificateTpList)){
+            for (CertificateTp item : certificateTpList) {
+                //证书类型
+                item.setTypeId(getNewId(item.getTypeId(), GoodsCopyEnum.CERTIFICATE.getType()));
+                //证书
+                item.setCertificateId(getNewId(item.getCertificateId(), GoodsCopyEnum.CERTIFICATE_COMMON.getType()));
+            }
+            iCertificateTpService.updateBatchById(certificateTpList);
+        }
+
+        return true;
+    }
 
+    private Long getNewId(Long oldId, Integer type){
+        if (ObjectUtils.isNull(oldId) || oldId <= 0L){
+            return null;
+        }
+        try {
+            SysGoodsCopyRecord record = iSysGoodsCopyRecordService.getOne(new LambdaQueryWrapper<SysGoodsCopyRecord>()
+                    .eq(SysGoodsCopyRecord::getOldId, oldId)
+                    .eq(SysGoodsCopyRecord::getType, type));
+            if (ObjectUtils.isEmpty(record)){
+//                throw new CustomException(String.format("新ID查找失败old:%s,type:%s",oldId,type));
+                return null;
+            }
+            return record.getNewId();
+        }catch (Exception e){
+//            throw new CustomException(String.format("(getone报错)新ID查找失败old:%s,type:%s",oldId,type));
+            return null;
+        }
+    }
 
+    private String getNewIds(String oldIds, Integer type){
+        if (StringUtils.isBlank(oldIds)){
+            return null;
+        }
+        List<Long> collect = Arrays.asList(oldIds.split(",")).stream().map(x -> Long.valueOf(x)).collect(Collectors.toList());
+        List<Long> ids = collect.stream().filter(x -> x > 0L).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(ids)){
+            return null;
+        }
+        List<SysGoodsCopyRecord> records = iSysGoodsCopyRecordService.list(new LambdaQueryWrapper<SysGoodsCopyRecord>()
+                .in(SysGoodsCopyRecord::getOldId, ids)
+                .eq(SysGoodsCopyRecord::getType, type));
+        if (ObjectUtils.isEmpty(records)){
+            throw new CustomException(String.format("新ID查找失败old:%s,type:%s",oldIds,type));
         }
-        return false;
+        return records.stream().map(x -> x.getNewId().toString()).collect(Collectors.joining(","));
     }
 
     /**

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/pay/domain/PayServe.java

@@ -30,6 +30,8 @@ private static final long serialVersionUID=1L;
     private String serveName;
     /** 0 禁用 1启用 */
     private Integer status;
+
+    private Long tenantId;
     /** 添加时间 */
     @TableField(fill = FieldFill.INSERT)
     private Long createTime;

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvCata.java

@@ -34,6 +34,7 @@ private static final long serialVersionUID=1L;
     private Long cataid;
     /** $column.columnComment */
     private Long parentid;
+    private Long tenantId;
     /** $column.columnComment */
     private String videos;
     /** 添加时间 */

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/domain/PolyvVideo.java

@@ -59,7 +59,7 @@ private static final long serialVersionUID=1L;
     private String cataid;
 
     /** 超清码率mp4格式视频地址 */
-    private String map4_3;
+    private String mp4_3;
 
     /** 返回flash连接 */
     private String swfLink;
@@ -162,4 +162,6 @@ private static final long serialVersionUID=1L;
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
 
+    private Long tenantId;
+
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/polyv/service/impl/PolyvVideoServiceImpl.java

@@ -422,7 +422,7 @@ public class PolyvVideoServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVi
         lqw.eq(StrUtil.isNotBlank(bo.getMp4_1()), PolyvVideo::getMp4_1, bo.getMp4_1());
         lqw.eq(StrUtil.isNotBlank(bo.getMp4_2()), PolyvVideo::getMp4_2, bo.getMp4_2());
         lqw.eq(bo.getCataid() != null, PolyvVideo::getCataid, bo.getCataid());
-        lqw.eq(StrUtil.isNotBlank(bo.getMp4_3()), PolyvVideo::getMap4_3, bo.getMp4_3());
+        lqw.eq(StrUtil.isNotBlank(bo.getMp4_3()), PolyvVideo::getMp4_1, bo.getMp4_3());
         lqw.eq(StrUtil.isNotBlank(bo.getSwfLink()), PolyvVideo::getSwfLink, bo.getSwfLink());
         lqw.eq(StrUtil.isNotBlank(bo.getStatus()), PolyvVideo::getStatus, bo.getStatus());
         lqw.eq(bo.getSeed() != null, PolyvVideo::getSeed, bo.getSeed());

+ 46 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/bo/GoodsCopyEnum.java

@@ -0,0 +1,46 @@
+package com.zhongzheng.modules.system.bo;
+
+public enum GoodsCopyEnum {
+
+    GOODS(1),
+    GOODS_SPEC(2),
+    GOODS_SPEC_TEMPLATE(3),
+    GOODS_SPEC_ATTRIBUTE(4),
+    COURSE(8),
+    COURSE_BUSINESS(9),
+    COURSE_CHAPTER(10),
+    COURSE_EDUCATION_TYPE(14),
+    COURSE_HANDOUTS(15),
+    COURSE_MODULE(19),
+    COURSE_SECTION(20),
+    COURSE_PROJECT_TYPE(22),
+    COURSE_SUBJECT(26),
+    EXAM(28),
+    EXAM_PAPER(29),
+    MAJOR(31),
+    PAY_SERVE(33),
+    PAY_SUPPLY(34),
+    COURSE_STREAMING(35),
+    POLYV_CATA(37),
+    POLYV_VIDEO(38),
+    PROFILE_FIELD(39),
+    PROFILE_TP(40),
+    QUESTION(42),
+    QUESTION_CHAPTER(44),
+    QUESTION_MODULE(46),
+    CERTIFICATE_COMMON(48),
+    CERTIFICATE(49),
+    CERTIFICATE_TP(50),
+    ;
+    private Integer type;
+
+    GoodsCopyEnum(Integer type)
+    {
+        this.type = type;
+    }
+
+    public Integer getType()
+    {
+        return type;
+    }
+}

+ 40 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/domain/SysGoodsCopyRecord.java

@@ -0,0 +1,40 @@
+package com.zhongzheng.modules.system.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 系统商户对象 sys_tenant
+ *
+ * @author hjl
+ * @date 2021-08-03
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("sys_goods_copy_record")
+public class SysGoodsCopyRecord implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+
+    /** 租户ID */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private Long oldId;
+
+    private Long newId;
+
+    private Integer type;
+
+    private Long createTime;
+
+    private Long updateTime;
+
+    private Long tenantId ;
+}

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/mapper/SysGoodsCopyRecordMapper.java

@@ -0,0 +1,13 @@
+package com.zhongzheng.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
+
+/**
+ * 参数配置 数据层
+ *
+ * @author zhongzheng
+ */
+public interface SysGoodsCopyRecordMapper extends BaseMapper<SysGoodsCopyRecord> {
+
+}

+ 12 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/ISysGoodsCopyRecordService.java

@@ -0,0 +1,12 @@
+package com.zhongzheng.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
+
+/**
+ * 参数配置 服务层
+ *
+ * @author zhongzheng
+ */
+public interface ISysGoodsCopyRecordService extends IService<SysGoodsCopyRecord> {
+}

+ 17 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysGoodsCopyRecordServiceImpl.java

@@ -0,0 +1,17 @@
+package com.zhongzheng.modules.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.system.domain.SysGoodsCopyRecord;
+import com.zhongzheng.modules.system.mapper.SysGoodsCopyRecordMapper;
+import com.zhongzheng.modules.system.service.ISysGoodsCopyRecordService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 参数配置 服务层实现
+ *
+ * @author zhongzheng
+ */
+@Service
+public class SysGoodsCopyRecordServiceImpl extends ServiceImpl<SysGoodsCopyRecordMapper, SysGoodsCopyRecord> implements ISysGoodsCopyRecordService {
+
+}

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/domain/School.java

@@ -45,4 +45,5 @@ private static final long serialVersionUID=1L;
     private Long schoolCityId;
     /** 备注 */
     private String remark;
+    private Long tenantId;
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/mapper/SchoolMapper.java

@@ -1,11 +1,13 @@
 package com.zhongzheng.modules.user.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.zhongzheng.modules.course.bo.CourseProjectTypeQueryBo;
 import com.zhongzheng.modules.course.vo.CourseProjectTypeVo;
 import com.zhongzheng.modules.user.bo.SchoolQueryBo;
 import com.zhongzheng.modules.user.domain.School;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.user.vo.SchoolVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -20,4 +22,7 @@ public interface SchoolMapper extends BaseMapper<School> {
     List<CourseProjectTypeVo> selectProject(CourseProjectTypeQueryBo courseProjectTypeQueryBo);
 
     List<SchoolVo> queryList(SchoolQueryBo bo);
+
+    @InterceptorIgnore(tenantLine = "true")
+    School getSchoolByTenant(@Param("encoder") String encoder,@Param("newTenantId") Long newTenantId);
 }

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/ISchoolService.java

@@ -49,4 +49,7 @@ public interface ISchoolService extends IService<School> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    School getSchoolByTenant(String encoder, Long newTenantId);
+
 }

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

@@ -145,4 +145,9 @@ public class SchoolServiceImpl extends ServiceImpl<SchoolMapper, School> impleme
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public School getSchoolByTenant(String encoder, Long newTenantId) {
+        return baseMapper.getSchoolByTenant(encoder,newTenantId);
+    }
 }

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/bank/QuestionMapper.xml

@@ -174,7 +174,7 @@
         <result property="subjectNames" column="subject_names"/>
     </resultMap>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.bank.bo.QuestionQueryBo" resultMap="QuestionResultVo">
+    <select id="selectListByBo" parameterType="com.zhongzheng.modules.bank.bo.QuestionQueryBo" resultMap="QuestionResultVo">
        SELECT
         q.*
         FROM

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/base/CertificateTpMapper.xml

@@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="certificateId" column="certificate_id"/>
     </resultMap>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.base.bo.CertificateTpQueryBo" resultMap="CertificateTpVoResult">
+    <select id="selectListByBo" parameterType="com.zhongzheng.modules.base.bo.CertificateTpQueryBo" resultMap="CertificateTpVoResult">
         SELECT
             ct.*,
             c.certificate_name as certificate_type_name,

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/base/ProfileTpMapper.xml

@@ -74,7 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             b.profile_tp_id=#{profile_tp_id}
     </select>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.base.bo.ProfileTpQueryBo" resultMap="ProfileTpVoResult">
+    <select id="selectListByBo" parameterType="com.zhongzheng.modules.base.bo.ProfileTpQueryBo" resultMap="ProfileTpVoResult">
         SELECT
             *
         FROM

+ 3 - 0
zhongzheng-system/src/main/resources/mapper/modules/course/CourseBusinessMapper.xml

@@ -99,4 +99,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             b.id = #{id}
     </select>
 
+    <select id="getBusinessByTenant" parameterType="map"  resultType="com.zhongzheng.modules.course.domain.CourseBusiness">
+        SELECT * FROM course_business WHERE encoder = #{encoder} and tenant_id = #{newTenantId}
+    </select>
 </mapper>

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/course/CourseChapterMapper.xml

@@ -104,7 +104,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             ccb.chapter_id=#{chapter_id}
     </select>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.course.bo.CourseChapterQueryBo" resultMap="CourseChapterResultVo">
+    <select id="selectListByBo" parameterType="com.zhongzheng.modules.course.bo.CourseChapterQueryBo" resultMap="CourseChapterResultVo">
         SELECT
         c.*
         FROM

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/course/CourseModuleMapper.xml

@@ -88,7 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             cmb.module_id=#{module_id}
     </select>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.course.bo.CourseModuleQueryBo" resultMap="CourseModuleResultVo">
+    <select id="selectListByBo" parameterType="com.zhongzheng.modules.course.bo.CourseModuleQueryBo" resultMap="CourseModuleResultVo">
         SELECT
         c.*
         FROM

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

@@ -55,4 +55,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </if>
         order by p.sort
     </select>
+
+    <select id="getProjectByTenant" parameterType="map"  resultType="com.zhongzheng.modules.course.domain.CourseProjectType">
+        SELECT * FROM course_project_type where encoder = #{encoder} and tenant_id = #{newTenantId}
+    </select>
 </mapper>

+ 1 - 1
zhongzheng-system/src/main/resources/mapper/modules/course/CourseStreamingMapper.xml

@@ -73,7 +73,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             csb.streaming_id=#{id}
     </select>
 
-    <select id="selectList" parameterType="com.zhongzheng.modules.course.bo.CourseStreamingQueryBo" resultMap="CourseStreamingResultVo">
+    <select id="selectListByBo" parameterType="com.zhongzheng.modules.course.bo.CourseStreamingQueryBo" resultMap="CourseStreamingResultVo">
         SELECT
         cs.*,
         pv.mp4 AS polyv_url

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

@@ -103,4 +103,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             and m.id != #{id}
         </if>
     </select>
+
+    <select id="getMajorByTenant" parameterType="com.zhongzheng.modules.course.bo.MajorQueryBo"  resultType="Integer">
+        SELECT * FROM major where encoder = #{encoder} and tenant_id = #{newTenantId}
+    </select>
 </mapper>

+ 5 - 0
zhongzheng-system/src/main/resources/mapper/modules/user/SchoolMapper.xml

@@ -113,4 +113,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY s.id
         order by s.update_time desc
     </select>
+
+    <select id="getSchoolByTenant" parameterType="map"  resultType="com.zhongzheng.modules.user.domain.School">
+        SELECT * from school where encoder = #{encoder} and tenant_id = #{newTenantId}
+
+    </select>
 </mapper>