zouxuan 3 年之前
父节点
当前提交
6e4ad1f7c8

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysTenantConfigDao.java

@@ -16,4 +16,6 @@ public interface SysTenantConfigDao extends BaseDAO<Integer, SysTenantConfig> {
     void delByConfigId(@Param("configIdList") List<Long> configIdList, @Param("tenantId") Integer tenantId);
 
     void batchInsert(@Param("sysConfigs") List<SysConfig> sysConfigs, @Param("tenantId") Integer tenantId);
+
+    String getConfigValue(@Param("paramName") String paramName, @Param("tenantId") Integer tenantId);
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -195,6 +195,16 @@ public class MusicGroup {
 	@ApiModelProperty(value = "有乐保的人数",required = true)
 	private Integer hasInstrumentNum;
 
+	private Integer tenantId;
+
+	public Integer getTenantId() {
+		return tenantId;
+	}
+
+	public void setTenantId(Integer tenantId) {
+		this.tenantId = tenantId;
+	}
+
 	public Integer getHasInstrumentNum() {
 		return hasInstrumentNum;
 	}

+ 12 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/SysConfigService.java

@@ -4,6 +4,18 @@ import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.common.service.BaseService;
 
 public interface SysConfigService extends BaseService<Long, SysConfig> {
+    //乐团基础规则
+
+    //是否开启乐团预报名
+    String MUSIC_PRE_APPLY_OPEN_FLAG = "music_pre_apply_open_flag";
+    //乐团预报名人数达到指定数量,可将乐团状态变更为创建缴费中
+    String MUSIC_MIN_STUDENT_NUM = "music_min_student_num";
+    //报名缴费阶段乐团若未合并学员,缴费人数达到指定人数时可确认开团(用于校验是否回访)
+    String NEW_MUSIC_PAYMENT_STUDENT_NUM = "new_music_payment_student_num";
+    //报名缴费阶段乐团若合并学员,缴费人数达到指定人数时可确认开团(用于校验是否回访)
+    String OLD_MUSIC_PAYMENT_STUDENT_NUM = "old_music_payment_student_num";
+    //乐团问卷调查编号
+    String MUSIC_GROUP_TOPIC_ID = "music_group_topic_id";
 
     public static final String BASE_API_URL = "base_api_url";
 
@@ -239,9 +251,6 @@ public interface SysConfigService extends BaseService<Long, SysConfig> {
     //云教练免费体验开关0关1开
     String FREE_CLOUD_OPEN_FLAG = "free_cloud_open_flag";
 
-    //乐团问卷调查编号
-    String MUSIC_GROUP_TOPIC_ID = "music_group_topic_id";
-
     //云教练试用时间最晚截止时间
     String EXPERIENCE_MEMBERSHIP_END_TIME = "experience_membership_end_time";
 

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysTenantConfigService.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.service;
 import com.ym.mec.biz.dal.entity.SysConfig;
 import com.ym.mec.biz.dal.entity.SysTenantConfig;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -12,4 +13,5 @@ public interface SysTenantConfigService extends BaseService<Integer, SysTenantCo
     List<SysConfig> queryAll(Map<String, Object> params);
 
     void batchUpSet(List<SysConfig> sysConfigs, Integer tenantId);
+
 }

+ 67 - 37
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -202,6 +202,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     private SysConfigDao sysConfigDao;
 
     @Autowired
+    private SysTenantConfigDao sysTenantConfigDao;
+
+    @Autowired
     private ClassGroupService classGroupService;
 
     @Autowired
@@ -511,19 +514,27 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public boolean finishPreApply(String musicGroupId, boolean isCheckStudentNum) {
         MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
         if (musicGroup == null) {
             throw new BizException("乐团信息查询失败");
         }
+        if (musicGroup.getTenantId() == null) {
+            throw new BizException("乐团机构信息异常,请联系管理员");
+        }
         if (musicGroup.getStatus() != MusicGroupStatusEnum.PRE_APPLY) {
             throw new BizException("操作失败:只有乐团在[{}]状态才能操作", MusicGroupStatusEnum.PRE_APPLY.getMsg());
         }
         if (isCheckStudentNum) {
-            // 查询乐团已报名人数
-            List<StudentPreRegistration> studentPreRegistrationList = studentPreRegistrationDao.queryByMusicGroupId(musicGroupId);
-            if (studentPreRegistrationList == null || studentPreRegistrationList.size() < 80) {
-                throw new BizException("操作失败:报名人数没有达到80人");
+            String configValue = sysTenantConfigDao.getConfigValue(SysConfigService.MUSIC_MIN_STUDENT_NUM, musicGroup.getTenantId());
+            if(StringUtils.isNotEmpty(configValue)){
+                Integer minStudentNum = Integer.parseInt(configValue);
+                // 查询乐团已报名人数
+                List<StudentPreRegistration> studentPreRegistrationList = studentPreRegistrationDao.queryByMusicGroupId(musicGroupId);
+                if (studentPreRegistrationList == null || studentPreRegistrationList.size() < minStudentNum) {
+                    throw new BizException("操作失败:报名人数没有达到{}人",minStudentNum);
+                }
             }
         }
         musicGroup.setStatus(MusicGroupStatusEnum.PRE_BUILD_FEE);
@@ -1446,39 +1457,51 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             throw new BizException("用户信息获取失败");
         }
         MusicGroup musicGroup = saveLog(musicGroupId, MusicGroupStatusEnum.AUDIT);
-        //记录操作日志
-        musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "审核通过(审核中 -> 预报名)", sysUser.getId(), ""));
-        musicGroup.setStatus(MusicGroupStatusEnum.PRE_APPLY);
-        musicGroupDao.update(musicGroup);
+        if(musicGroup.getTenantId() == null){
+            throw new BizException("乐团机构信息异常,请联系管理员");
+        }
+        //预报名开关
+        String configValue = sysTenantConfigDao.getConfigValue(SysConfigService.MUSIC_PRE_APPLY_OPEN_FLAG, musicGroup.getTenantId());
+        if(StringUtils.isNotEmpty(configValue) && configValue.equals(1)){
+            //记录操作日志
+            musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "审核通过(审核中 -> 预报名)", sysUser.getId(), ""));
+            musicGroup.setStatus(MusicGroupStatusEnum.PRE_APPLY);
+            musicGroupDao.update(musicGroup);
 
-        // 创建群
-        imGroupService.create(Long.parseLong(musicGroupId), null, "乐团预报名", null, musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode());
+            // 创建群
+            imGroupService.create(Long.parseLong(musicGroupId), null, "乐团预报名", null, musicGroup.getName(), musicGroup.getName(), null, GroupType.MUSIC.getCode());
 
-        Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
+            Map<Integer, String> userRoleMap = new HashMap<Integer, String>();
 
-        if (musicGroup.getTeamTeacherId() != null) {
-            userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
-        }
-        if (musicGroup.getEducationalTeacherId() != null) {
-            userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
-        }
-        if (musicGroup.getDirectorUserId() != null) {
-            userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
-        }
-        if (musicGroup.getTransactionTeacherId() != null) {
-            userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
-        }
-        // 添加成员
-        imGroupMemberService.join(Long.parseLong(musicGroupId), userRoleMap);
-        Set<Integer> roleIds = new HashSet<>(1);
-        roleIds.add(musicGroup.getEducationalTeacherId());
-        sysMessageService.batchSeoMessage(roleIds,
-                MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS, "", musicGroup.getName());
-        Map<Integer, String> map = new HashMap<>(1);
-        map.put(musicGroup.getEducationalTeacherId(), musicGroup.getEducationalTeacherId().toString());
-        if (map != null && map.size() > 0) {
-            sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS,
-                    map, null, 0, null, "SYSTEM", musicGroup.getName());
+            if (musicGroup.getTeamTeacherId() != null) {
+                userRoleMap.put(musicGroup.getTeamTeacherId(), "运营主管");
+            }
+            if (musicGroup.getEducationalTeacherId() != null) {
+                userRoleMap.put(musicGroup.getEducationalTeacherId(), "乐团主管");
+            }
+            if (musicGroup.getDirectorUserId() != null) {
+                userRoleMap.put(musicGroup.getDirectorUserId(), "乐队指导");
+            }
+            if (musicGroup.getTransactionTeacherId() != null) {
+                userRoleMap.put(musicGroup.getTransactionTeacherId(), "衔接老师");
+            }
+            // 添加成员
+            imGroupMemberService.join(Long.parseLong(musicGroupId), userRoleMap);
+            Set<Integer> roleIds = new HashSet<>(1);
+            roleIds.add(musicGroup.getEducationalTeacherId());
+            sysMessageService.batchSeoMessage(roleIds,
+                    MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS, "", musicGroup.getName());
+            Map<Integer, String> map = new HashMap<>(1);
+            map.put(musicGroup.getEducationalTeacherId(), musicGroup.getEducationalTeacherId().toString());
+            if (map != null && map.size() > 0) {
+                sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.BACKSTAGE_CREATE_MUSIC_GROUP_ADJUST_SUCCESS,
+                        map, null, 0, null, "SYSTEM", musicGroup.getName());
+            }
+        }else {
+            //记录操作日志
+            musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "审核通过(审核中 -> 创建缴费中)", sysUser.getId(), ""));
+            musicGroup.setStatus(MusicGroupStatusEnum.PRE_BUILD_FEE);
+            musicGroupDao.update(musicGroup);
         }
     }
 
@@ -3618,6 +3641,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (musicGroup == null) {
             throw new BizException("乐团信息不存在");
         }
+        if (musicGroup.getTenantId() == null) {
+            throw new BizException("乐团机构信息异常,请联系管理员");
+        }
         //记录操作日志
         String event;
         if (musicGroup.getStatus() == MusicGroupStatusEnum.APPLY) {
@@ -3634,15 +3660,19 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         }
 
         //新建团:(乐团合作单位没有进行中 、暂停、关闭 的乐团)
-        //若乐团新建团,则操作【确认开团】时,若【已缴费】学员达到98人,则无需对【未缴费】学员新增回访
-        //若乐团不是新建团,则操作【确认开团】时,若【已缴费】学员达到58人,则无需对【未缴费】学员新增回访
+
         //报名未交费的学生,完成回访才能到下一步
 
         //获取乐团合作单位乐团数量
         Integer cooperationMusicGroupNum = musicGroupDao.getCooperationMusicGroupNum(musicGroup.getCooperationOrganId(), musicGroupId);
         Integer paymentStudentNum = studentRegistrationDao.getPaymentStudentNum(musicGroupId);
 
-        if ((cooperationMusicGroupNum <= 0 && paymentStudentNum < 98) || (cooperationMusicGroupNum > 0 && paymentStudentNum < 58)) {
+        //若乐团新建团,则操作【确认开团】时,若【已缴费】学员达到98人,则无需对【未缴费】学员新增回访
+        String configValue = sysTenantConfigDao.getConfigValue(SysConfigService.NEW_MUSIC_PAYMENT_STUDENT_NUM, musicGroup.getTenantId());
+        //若乐团不是新建团,则操作【确认开团】时,若【已缴费】学员达到58人,则无需对【未缴费】学员新增回访
+        String configValue1 = sysTenantConfigDao.getConfigValue(SysConfigService.OLD_MUSIC_PAYMENT_STUDENT_NUM, musicGroup.getTenantId());
+        if ((StringUtils.isNotEmpty(configValue) && cooperationMusicGroupNum <= 0 && paymentStudentNum < Integer.parseInt(configValue)) ||
+                (StringUtils.isNotEmpty(configValue1) && cooperationMusicGroupNum > 0 && paymentStudentNum < Integer.parseInt(configValue1))) {
             checkStudentVisit(musicGroupId);
         }
 

+ 9 - 2
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -47,6 +47,7 @@
         <result column="musical_instruments_provide_status_" property="musicalInstrumentsProvideStatus"/>
         <result column="member_course_show_flag_" property="memberCourseShowFlag"/>
         <result column="homework_push_flag_" property="homeworkPushFlag"/>
+        <result column="tenant_id_" property="tenantId"/>
     </resultMap>
     
     <resultMap type="com.ym.mec.biz.dal.dto.MusicGroupBasicDto" id="MusicGroupBasicDto" extends="MusicGroup">
@@ -106,7 +107,7 @@
                  settlement_type_, cooperation_organ_id_, enlightenment_course_time_,
                  parent_meeting_time_, img_, director_user_id_, is_classroom_lessons_, memo_, expect_start_group_date_,
                  ownership_type_, repair_user_id_, del_flag_, payment_valid_start_date_, payment_valid_end_date_,
-                 payment_pattern_, course_view_type_, transaction_teacher_id_,homework_push_flag_,member_course_show_flag_)
+                 payment_pattern_, course_view_type_, transaction_teacher_id_,homework_push_flag_,member_course_show_flag_,tenant_id_)
         VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate}, #{preApplyExpireDate}, #{teamTeacherId},
                 #{educationalTeacherId},
                 #{chargeTypeId}, #{courseForm}, now(), now(),
@@ -118,13 +119,16 @@
                 #{isClassroomLessons}, #{memo}, #{expectStartGroupDate},
                 #{ownershipType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{repairUserId},
                 #{delFlag}, #{paymentValidStartDate}, #{paymentValidEndDate}, #{paymentPattern},
-                #{courseViewType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{transactionTeacherId},#{homeworkPushFlag},#{memberCourseShowFlag})
+                #{courseViewType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{transactionTeacherId},#{homeworkPushFlag},#{memberCourseShowFlag},#{tenantId})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroup">
         UPDATE music_group
         <set>
+            <if test="tenantId != null">
+                tenant_id_ = #{tenantId},
+            </if>
             <if test="homeworkPushFlag != null">
                 homework_push_flag_ = #{homeworkPushFlag},
             </if>
@@ -255,6 +259,9 @@
     <sql id="musicGroupQueryPageSql">
         <where>
             mg.del_flag_ = 0
+            <if test="tenantId != null">
+                AND mg.tenant_id_ = #{tenantId}
+            </if>
             <if test="organId != null">
                 AND FIND_IN_SET(mg.organ_id_,#{organId})
             </if>

+ 6 - 1
mec-biz/src/main/resources/config/mybatis/SysTenantConfigMapper.xml

@@ -80,11 +80,16 @@
   </select>
   <select id="queryALl" resultMap="com.ym.mec.biz.dal.dao.SysConfigDao.SysConfig">
     SELECT sc.id_,sc.param_name_,sc.group_,CASE WHEN stc.id_ IS NULL THEN sc.paran_value_ ELSE stc.param_value_ END paran_value_ FROM sys_config sc
-    LEFT JOIN sys_tenant_config stc ON sc.id_ = stc.sys_config_id_ AND sc.group_ = #{tenantId}
+    LEFT JOIN sys_tenant_config stc ON sc.id_ = stc.sys_config_id_ AND stc.tenant_id_ = #{tenantId}
     WHERE sc.group_ IS NOT NULL AND sc.group_ != ''
     <if test="group != null">
       AND sc.group_ = #{group}
     </if>
     ORDER BY sc.group_
   </select>
+  <select id="getConfigValue" resultType="java.lang.String">
+    SELECT CASE WHEN stc.id_ IS NULL THEN sc.paran_value_ ELSE stc.param_value_ END paran_value_ FROM sys_config sc
+    LEFT JOIN sys_tenant_config stc ON sc.id_ = stc.sys_config_id_ AND sc.group_ = #{tenantId}
+    WHERE sc.group_ IS NOT NULL AND sc.group_ != '' AND sc.param_name_ = #{paramName}
+  </select>
 </mapper>