Ver Fonte

Merge remote-tracking branch 'origin/master'

周箭河 há 5 anos atrás
pai
commit
be93ac09de
51 ficheiros alterados com 478 adições e 159 exclusões
  1. 2 2
      cms/src/main/resources/bootstrap-prod.properties
  2. 22 0
      mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java
  3. 8 8
      mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/MenuController.java
  4. 2 2
      mec-auth/mec-auth-server/src/main/resources/bootstrap-prod.properties
  5. 5 1
      mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java
  7. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherSalaryDao.java
  8. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
  9. 18 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  10. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java
  11. 20 2
      mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountService.java
  12. 10 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java
  13. 28 18
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java
  14. 26 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java
  15. 2 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  16. 6 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
  17. 28 6
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  18. 2 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java
  19. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
  20. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java
  21. 44 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java
  22. 8 14
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  23. 4 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java
  24. 27 7
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  25. 2 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupMapper.xml
  26. 12 0
      mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml
  27. 5 2
      mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml
  28. 17 13
      mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml
  29. 1 0
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  30. 8 3
      mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml
  31. 1 0
      mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml
  32. 5 1
      mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
  33. 22 1
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  34. 5 3
      mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml
  35. 2 2
      mec-education/src/main/resources/bootstrap-prod.properties
  36. 2 2
      mec-eureka/src/main/resources/bootstrap-prod.properties
  37. 2 2
      mec-gateway/mec-gateway-web/src/main/resources/bootstrap-prod.properties
  38. 1 1
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  39. 2 2
      mec-im/src/main/resources/bootstrap-prod.properties
  40. 2 2
      mec-monitor/src/main/resources/bootstrap-prod.properties
  41. 58 28
      mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java
  42. 2 2
      mec-student/src/main/resources/bootstrap-prod.properties
  43. 2 2
      mec-task/src/main/resources/bootstrap-prod.properties
  44. 2 2
      mec-teacher/src/main/resources/bootstrap-prod.properties
  45. 8 6
      mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java
  46. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentApplyRefundsController.java
  47. 3 1
      mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java
  48. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentRechargeController.java
  49. 2 0
      mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java
  50. 2 2
      mec-web/src/main/resources/bootstrap-prod.properties
  51. 2 2
      mec-zipkin/src/main/resources/bootstrap-prod.properties

+ 2 - 2
cms/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 22 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/entity/SysUser.java

@@ -99,12 +99,34 @@ public class SysUser implements Serializable{
 	@ApiModelProperty(value = "真实姓名",required = false)
 	private String realName;
 
+	@ApiModelProperty(value = "年级",required = false)
+	private String currentGrade;
+
+	@ApiModelProperty(value = "班级",required = false)
+	private String currentClass;
+
 	@ApiModelProperty(value = "微信号",required = false)
 	private String wechatId;
 	
 	@ApiModelProperty(value = "是否是超管",required = false)
 	private Boolean isSuperAdmin;
 
+	public String getCurrentGrade() {
+		return currentGrade;
+	}
+
+	public void setCurrentGrade(String currentGrade) {
+		this.currentGrade = currentGrade;
+	}
+
+	public String getCurrentClass() {
+		return currentClass;
+	}
+
+	public void setCurrentClass(String currentClass) {
+		this.currentClass = currentClass;
+	}
+
 	public String getOrganName() {
 		return organName;
 	}

+ 8 - 8
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/MenuController.java

@@ -30,10 +30,10 @@ public class MenuController extends BaseController {
     @PutMapping(value = "/add",consumes = MediaType.APPLICATION_JSON_VALUE)
     @PreAuthorize("@pcs.hasPermissions('menu/add')")
     public Object getMenu(@RequestBody SysMenu sysMenu) {
-        SysMenu menuByPermission = sysMenuService.findMenuByPermission(sysMenu.getPermission());
-        if(menuByPermission != null){
-            return failed("权限标识不能重复");
-        }
+//        SysMenu menuByPermission = sysMenuService.findMenuByPermission(sysMenu.getPermission());
+//        if(menuByPermission != null){
+//            return failed("权限标识不能重复");
+//        }
         return succeed(sysMenuService.insert(sysMenu));
     }
 
@@ -49,10 +49,10 @@ public class MenuController extends BaseController {
     @PutMapping(value = "/update",consumes = MediaType.APPLICATION_JSON_VALUE)
     @PreAuthorize("@pcs.hasPermissions('menu/update')")
     public Object updateMenu(@RequestBody SysMenu sysMenu) {
-        SysMenu menuByPermission = sysMenuService.findMenuByPermission(sysMenu.getPermission());
-        if(menuByPermission != null && !menuByPermission.getId().equals(sysMenu.getId())){
-            return failed("权限标识不能重复");
-        }
+//        SysMenu menuByPermission = sysMenuService.findMenuByPermission(sysMenu.getPermission());
+//        if(menuByPermission != null && !menuByPermission.getId().equals(sysMenu.getId())){
+//            return failed("权限标识不能重复");
+//        }
         Date date = new Date();
         sysMenu.setUpdateTime(date);
         return succeed(sysMenuService.update(sysMenu));

+ 2 - 2
mec-auth/mec-auth-server/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 5 - 1
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -29,6 +29,8 @@
         <result column="id_card_no_" property="idCardNo"/>
         <result column="wechat_id_" property="wechatId"/>
         <result column="is_super_admin_" property="isSuperAdmin"/>
+        <result column="current_grade_" property="currentGrade"/>
+        <result column="current_class_" property="currentClass"/>
     </resultMap>
 
     <!-- 查询条件 -->
@@ -49,7 +51,9 @@
 
     <!-- 根据主键查询一条记录 -->
     <select id="get" resultMap="SysUser">
-		SELECT * FROM sys_user WHERE id_ = #{id}
+		SELECT su.*,sr.current_class_,sr.current_grade_
+        FROM sys_user su LEFT JOIN student_registration sr ON su.id_ = sr.user_id_
+        WHERE su.id_ = #{id} LIMIT 1
 	</select>
 
     <!-- 全查询 -->

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupStudentMapperDao.java

@@ -168,4 +168,15 @@ public interface ClassGroupStudentMapperDao extends BaseDAO<Long, ClassGroupStud
      * @date 2019/11/21
      */
     Integer countClassGroupStudentNum(@Param("classGroupId") Integer classGroupId);
+
+    /**
+     * @describe 统计指定班级的重复人数
+     * @author Joburgess
+     * @date 2019/11/22
+     * @param classGroupId: 班级编号
+     * @param userIds: 学生编号
+     * @return java.lang.Integer
+     */
+    Integer countClassGroupExitStudentNum(@Param("classGroupId") Integer classGroupId,
+                                          @Param("userIds") List<Integer> userIds);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ClassGroupTeacherSalaryDao.java

@@ -26,4 +26,15 @@ public interface ClassGroupTeacherSalaryDao extends BaseDAO<Long, ClassGroupTeac
      */
     ClassGroupTeacherSalary findByVipGoupAndTeacher(@Param("vipGroupId") Integer vipGroupId,
                                                     @Param("teacherId") Integer teacherId);
+
+    /**
+     * @describe 根据班级获取老师课酬
+     * @author Joburgess
+     * @date 2019/11/22
+     * @param classGroupId: 班级编号
+     * @param teacherId: 教师编号
+     * @return com.ym.mec.biz.dal.entity.ClassGroupTeacherSalary
+     */
+    ClassGroupTeacherSalary findByClassGroupAndTeacher(@Param("classGroupId") Integer classGroupId,
+                                                       @Param("teacherId") Integer teacherId);
 }

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -278,4 +278,10 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
      * @return
      */
     StudentRegistration queryUserByPhone(String mobile);
+
+    /**
+     * 批量修改学生年级班级
+     * @param studentRegistration
+     */
+    void updateCurrentClass(StudentRegistration studentRegistration);
 }

+ 18 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java

@@ -106,4 +106,22 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
 	 * @return
 	 */
 	int updateViPSignOutStatus(String courseScheduleIdList);
+
+	/**
+	 * @describe 获取班级上已结束课程的课次
+	 * @author Joburgess
+	 * @date 2019/11/22
+	 * @param classGroupId: 班级编号
+	 * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+	 */
+	List<Map<Integer,Integer>> findCourseTimeByClassGroup(Integer classGroupId);
+
+    /**
+     * @describe 获取指定课程的课次
+     * @author Joburgess
+     * @date 2019/11/22
+     * @param courseScheduleIds: 课程编号列表
+     * @return java.util.List<java.util.Map<java.lang.Integer,java.lang.Integer>>
+     */
+    List<Map<Integer,Integer>> findCourseTimeByCourseSchedules(@Param("courseScheduleIds") List<Integer> courseScheduleIds);
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/MusicGroupService.java

@@ -113,9 +113,10 @@ public interface MusicGroupService extends BaseService<String, MusicGroup> {
 	 *  续费
 	 * @param musicGroupId 乐团编号
 	 * @param userId 用户编号
+	 * @param isUseBalancePayment 是否使用余额付款
 	 * @return
 	 */
-	Map renew(String musicGroupId, Integer userId);
+	Map renew(String musicGroupId, Integer userId, boolean isUseBalancePayment);
 
 	/**
 	 * 学生支付订单

+ 20 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountService.java

@@ -1,10 +1,11 @@
 package com.ym.mec.biz.service;
 
+import java.math.BigDecimal;
+
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.common.service.BaseService;
 
-import java.math.BigDecimal;
-
 public interface SysUserCashAccountService extends BaseService<Integer, SysUserCashAccount> {
 
 	/**
@@ -16,6 +17,16 @@ public interface SysUserCashAccountService extends BaseService<Integer, SysUserC
 	boolean updateBalance(Integer userId, BigDecimal decimal);
 
 	/**
+	 * 更新指定用户的账户余额
+	 * @param userId 用户编号
+	 * @param decimal 交易金额(支持负数)
+	 * @param type 交易类型
+	 * @param memo 备注
+	 * @return
+	 */
+	boolean updateBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String memo);
+
+	/**
 	 * 更新指定用户的账户课程余额
 	 * @param userId 用户编号
 	 * @param decimal 交易金额(支持负数)
@@ -29,4 +40,11 @@ public interface SysUserCashAccountService extends BaseService<Integer, SysUserC
 	 * @return
 	 */
 	boolean transferCourseBalanceToBalance(Integer userId);
+
+	/**
+	 * 获取行级锁
+	 * @param userId
+	 * @return
+	 */
+	SysUserCashAccount getLocked(Integer userId);
 }

+ 10 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupTeacherMapperServiceImpl.java

@@ -199,9 +199,10 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
         Date date=new Date();
         MusicGroup musicGroup = musicGroupService.get(musicGroupId);
         //老师默认的课酬
-        Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
+//        Map<String, TeacherDefaultMusicGroupSalary> teacherDefaultSalary = new HashMap<>();
         for (CourseSchedule classGroupNoStartCourseSchedule : courseSchedules) {
             List<CourseScheduleTeacherSalary> courseScheduleTeacherSalaryList = new ArrayList<>();
+            List<TeacherAttendance> teacherAttendances=new ArrayList<>();
             //课时长度
             int duration = DateUtil.minutesBetween(classGroupNoStartCourseSchedule.getStartClassTime(), classGroupNoStartCourseSchedule.getEndClassTime());
             List<ClassGroupTeacherMapper> byClassGroup = classGroupTeacherMapperDao.findByClassGroup(classGroupNoStartCourseSchedule.getClassGroupId());
@@ -261,8 +262,16 @@ public class ClassGroupTeacherMapperServiceImpl extends BaseServiceImpl<Long, Cl
                 courseScheduleTeacherSalary.setUpdateTime(date);
                 courseScheduleTeacherSalary.setClassGroupId(classGroupTeacherMapper.getClassGroupId());
                 courseScheduleTeacherSalaryList.add(courseScheduleTeacherSalary);
+
+                TeacherAttendance teacherAttendance=new TeacherAttendance();
+                teacherAttendance.setMusicGroupId(courseScheduleTeacherSalary.getMusicGroupId());
+                teacherAttendance.setGroupType(courseScheduleTeacherSalary.getGroupType());
+                teacherAttendance.setCourseScheduleId(courseScheduleTeacherSalary.getCourseScheduleId());
+                teacherAttendance.setCreateTime(date);
+                teacherAttendances.add(teacherAttendance);
             }
             courseScheduleTeacherSalaryDao.batchInsert(courseScheduleTeacherSalaryList);
+            teacherAttendanceDao.batchInsert(teacherAttendances);
         }
     }
 

+ 28 - 18
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseHomeworkServiceImpl.java

@@ -1,17 +1,8 @@
 package com.ym.mec.biz.service.impl;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.biz.dal.dao.CourseHomeworkDao;
+import com.ym.mec.biz.dal.dao.TeacherAttendanceDao;
 import com.ym.mec.biz.dal.dto.Mapper;
 import com.ym.mec.biz.dal.dto.TeacherHomeworkListDto;
 import com.ym.mec.biz.dal.entity.CourseHomework;
@@ -24,6 +15,14 @@ import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.ym.mec.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomework> implements CourseHomeworkService {
@@ -36,6 +35,8 @@ public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomew
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private SysMessageService sysMessageService;
+	@Autowired
+	private TeacherAttendanceDao teacherAttendanceDao;
 
 	@Override
 	public BaseDAO<Long, CourseHomework> getDAO() {
@@ -51,13 +52,22 @@ public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomew
 		int count = courseHomeworkDao.countByClassGroupAndTeacher(params);
 		if (count > 0) {
 			dataList = courseHomeworkDao.findByClassGroupAndTeacher(params);
-			List<Integer> courseScheduleIds = dataList.stream().map(TeacherHomeworkListDto::getCourseScheduleId).collect(Collectors.toList());
-			if (!CollectionUtils.isEmpty(courseScheduleIds)) {
-				Map<Integer, Integer> courseScheduleCurrentTimes = courseScheduleService.findCourseScheduleCurrentTimes(courseScheduleIds);
-				dataList.forEach(teacherHomeworkListDto -> {
-					teacherHomeworkListDto.setCurrentClassTimes(courseScheduleCurrentTimes.get(teacherHomeworkListDto.getCourseScheduleId()));
-				});
-			}
+			List<Integer> courseScheduleIds=dataList.stream()
+					.map(TeacherHomeworkListDto::getCourseScheduleId)
+					.distinct()
+					.collect(Collectors.toList());
+			List<Map<Integer, Integer>> courseTimeByClassGroup = teacherAttendanceDao.findCourseTimeByCourseSchedules(courseScheduleIds);
+			Map<Integer, Integer> map = MapUtil.convertIntegerMap(courseTimeByClassGroup);
+			dataList.forEach(teacherHomeworkListDto -> {
+				teacherHomeworkListDto.setCurrentClassTimes(map.get(teacherHomeworkListDto.getCourseScheduleId().longValue()));
+			});
+//			List<Integer> courseScheduleIds = dataList.stream().map(TeacherHomeworkListDto::getCourseScheduleId).collect(Collectors.toList());
+//			if (!CollectionUtils.isEmpty(courseScheduleIds)) {
+//				Map<Integer, Integer> courseScheduleCurrentTimes = courseScheduleService.findCourseScheduleCurrentTimes(courseScheduleIds);
+//				dataList.forEach(teacherHomeworkListDto -> {
+//					teacherHomeworkListDto.setCurrentClassTimes(courseScheduleCurrentTimes.get(teacherHomeworkListDto.getCourseScheduleId()));
+//				});
+//			}
 		}
 		if (count != 0) {
 			Map<String, List<TeacherHomeworkListDto>> collect = dataList.stream().collect(Collectors.groupingBy(TeacherHomeworkListDto::getDay));
@@ -83,4 +93,4 @@ public class CourseHomeworkServiceImpl extends BaseServiceImpl<Long, CourseHomew
 			sysMessageService.batchSendMessage(MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_JOB_WAIT_REPLY, receivers, null, 0, "6?", mapper.getValue());
 		}
 	}
-}
+}

+ 26 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -75,6 +76,8 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 	private MusicGroupDao musicGroupDao;
 	@Autowired
 	private SubjectDao subjectDao;
+	@Autowired
+	private ClassGroupTeacherSalaryDao classGroupTeacherSalaryDao;
 
 	@Override
 	public BaseDAO<Long, CourseSchedule> getDAO() {
@@ -633,6 +636,10 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			if(oldCourseSchedule.getType()== CourseSchedule.CourseScheduleType.VIP){
 				boolean oldTeacherIsNull=Objects.isNull(oldCourseSchedule.getActualTeacherId());
 				boolean newTeacherIsNull=Objects.isNull(newCourseSchedule.getActualTeacherId());
+				if(newTeacherIsNull&&!oldTeacherIsNull){
+					newCourseSchedule.setActualTeacherId(oldCourseSchedule.getActualTeacherId());
+					newCourseSchedule.setTeachMode(oldCourseSchedule.getTeachMode());
+				}
 				boolean oldSchoolIsNull=Objects.isNull(oldCourseSchedule.getSchoolId());
 				boolean newSchoolIsNull=Objects.isNull(newCourseSchedule.getSchoolId());
 				boolean teacherIsChange=oldTeacherIsNull||(!newTeacherIsNull&&!oldCourseSchedule.getActualTeacherId().equals(newCourseSchedule.getActualTeacherId()));
@@ -640,13 +647,28 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 
 				if(teacherIsChange||schoolIsChange){
 					VipGroup byCourseSchedule = vipGroupDao.findByCourseSchedule(newCourseSchedule.getId().intValue());
-					TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId());
+
+					BigDecimal onlineTeacherSalary=new BigDecimal(0),offlineTeacherSalary=new BigDecimal(0);
+
+					if(teacherIsChange){
+						TeacherDefaultVipGroupSalary byTeacherAndCategory = teacherDefaultVipGroupSalaryDao.findByTeacherAndCategory(newCourseSchedule.getActualTeacherId(), byCourseSchedule.getVipGroupCategoryId());
+						if(Objects.nonNull(byTeacherAndCategory)){
+							onlineTeacherSalary=byTeacherAndCategory.getOnlineClassesSalary();
+							offlineTeacherSalary=byTeacherAndCategory.getOfflineClassesSalary();
+						}
+					}else{
+						ClassGroupTeacherSalary byClassGroupAndTeacher = classGroupTeacherSalaryDao.findByClassGroupAndTeacher(oldCourseSchedule.getClassGroupId(), newCourseSchedule.getActualTeacherId());
+						if(Objects.nonNull(byClassGroupAndTeacher)){
+							onlineTeacherSalary=byClassGroupAndTeacher.getOnlineClassesSalary();
+							offlineTeacherSalary=byClassGroupAndTeacher.getSalary();
+						}
+					}
+
 					List<CourseSchedule> courseSchedules=new ArrayList<>();
 					courseSchedules.add(newCourseSchedule);
 					courseScheduleTeacherSalaryService.createCourseScheduleTeacherVipSalary(byCourseSchedule,
 							courseSchedules,
-							byTeacherAndCategory.getOnlineClassesSalary(),
-							byTeacherAndCategory.getOfflineClassesSalary());
+							onlineTeacherSalary,offlineTeacherSalary);
 					if(Objects.nonNull(oldCourseSchedule.getActualTeacherId())){
 						beReplaceTeacherIds.add(oldCourseSchedule.getActualTeacherId().intValue());
 					}
@@ -713,6 +735,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			}
 			teacherIds.addAll(oldCourseScheduleList.stream().map(e -> e.getActualTeacherId()).collect(Collectors.toSet()));
 			Map<Integer,String> map = new HashMap<>(teacherIds.size());
+			teacherIds.removeAll(Collections.singleton(null));
 			teacherIds.forEach(e->{
 				map.put(e,e.toString());
 			});

+ 2 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java

@@ -151,18 +151,14 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         List<TeacherAttendance> teacherAttendances=new ArrayList<>();
         courseScheduleTeacherSalaries.forEach(courseScheduleTeacherSalary -> {
             List<TeacherAttendance> teacherAttendancesTemp=courseScheduleTeacherAttendanceMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
-            ClassGroup classGroup = classGroupMap.get(courseScheduleTeacherSalary.getClassGroupId());
             List<Integer> collect = new ArrayList<>();
             if(!CollectionUtils.isEmpty(teacherAttendancesTemp)){
                 collect = teacherAttendancesTemp.stream().map(TeacherAttendance::getTeacherId).collect(Collectors.toList());
             }
             TeacherAttendance teacherAttendance=new TeacherAttendance();
             teacherAttendance.setGroupType(courseScheduleTeacherSalary.getGroupType());
-            if(Objects.nonNull(classGroup)){
-                teacherAttendance.setClassGroupId(classGroup.getId());
-                teacherAttendance.setMusicGroupId(classGroup.getMusicGroupId());
-                teacherAttendance.setGroupType(classGroup.getGroupType());
-            }
+            teacherAttendance.setClassGroupId(courseScheduleTeacherSalary.getClassGroupId());
+            teacherAttendance.setMusicGroupId(courseScheduleTeacherSalary.getMusicGroupId());
             if(CollectionUtils.isEmpty(collect)||!collect.contains(courseScheduleTeacherSalary.getUserId())){
                 teacherAttendance.setTeacherId(courseScheduleTeacherSalary.getUserId());
                 teacherAttendance.setCourseScheduleId(courseScheduleTeacherSalary.getCourseScheduleId());

+ 6 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -71,7 +71,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 				employee.setUserType(SysUserType.SYSTEM);
 				teacherDao.updateUser(employee);
 			}else{
-				new BizException("员工已存在");
+				throw new BizException("员工已存在");
 			}
 			return;
 		}
@@ -130,7 +130,11 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		PageInfo<EmployeeDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
 		Map<String, Object> params = new HashMap<>();
 		MapUtil.populateMap(params, queryInfo);
-
+		String organId = queryInfo.getOrganId();
+		if(StringUtils.isNotEmpty(organId)){
+			String[] organIds = organId.split(",");
+			params.put("organIds",organIds);
+		}
 		List<EmployeeDto> dataList = null;
 		int count = employeeDao.queryEmployByOrganIdCount(params);
 		if (count > 0) {

+ 28 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -167,6 +167,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (subjectRegisters != null && subjectRegisters.size() > 0) {
             List<StudentRegistration> studentRegistrationList = new ArrayList<>();
             subjectRegisters.forEach(e -> {
+            	if(e.getRegisterIdList().size() == 0){
+            		return;
+            	}
                     //原来乐团的注册学生
                 List<StudentRegistration> musicGroupStudentRegistrationList = studentRegistrationDao.findStudentListByIdList(e.getRegisterIdList());
                 for (StudentRegistration studentRegistration : musicGroupStudentRegistrationList) {
@@ -185,7 +188,9 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     musicGroupSubjectPlan.setApplyStudentNum(e.getRegisterIdList().size());
                 }
             });
-            studentRegistrationDao.batchInsert(studentRegistrationList);
+			if (studentRegistrationList.size() > 0) {
+				studentRegistrationDao.batchInsert(studentRegistrationList);
+			}
             musicGroup.setStatus(MusicGroupStatusEnum.PAY);
             musicGroupDao.update(musicGroup);
             musicGroupBuildLogDao.insert(new MusicGroupBuildLog(musicGroupId, "跨团调整", sysUser.getId(),""));
@@ -605,7 +610,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, DealStatusEnum.SUCCESS);
 
 			if (studentPaymentOrder == null) {
-				throw new BizException("报名订单找不到");
+				//兼容历史数据
+				return true;
 			}
 
 			List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
@@ -684,7 +690,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 		StudentPaymentOrder studentPaymentOrder = studentPaymentOrderService.findMusicGroupApplyOrderByStatus(userId, musicGroupId, DealStatusEnum.SUCCESS);
 
 		if (studentPaymentOrder == null) {
-			throw new BizException("报名订单找不到");
+			return true;
 		}
 
 		List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.findApplyOrderGoods(studentPaymentOrder.getId());
@@ -721,7 +727,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    public Map renew(String musicGroupId, Integer userId) {
+    public Map renew(String musicGroupId, Integer userId, boolean isUseBalancePayment) {
 
         MusicGroup musicGroup = this.get(musicGroupId);
         if (musicGroup == null) {
@@ -742,6 +748,22 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         if (amount == null || amount.doubleValue() == 0) {
             amount = musicGroupStudentFee.getCourseFee();
         }
+        
+        if(isUseBalancePayment){
+        	SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(userId);
+        	if(userCashAccount == null){
+        		throw new BizException("用户账户找不到");
+        	}
+        	if(userCashAccount.getBalance().subtract(amount).doubleValue() > 0){
+        		sysUserCashAccountService.updateBalance(userId, amount.negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"乐团续费");
+        		return null;
+        	}else{
+        		if(userCashAccount.getBalance().doubleValue() > 0){
+            		sysUserCashAccountService.updateBalance(userId, userCashAccount.getBalance().negate(),PlatformCashAccountDetailTypeEnum.PAY_FEE,"乐团续费");
+            		amount = amount.subtract(userCashAccount.getBalance());
+        		}
+        	}
+        }
 
         try {
             Map<String, Object> payMap = payService.getPayMap(amount, idGeneratorService.generatorId("payment") + "", "https://pay.dayaedu.com/api/yqpay/notify",
@@ -900,8 +922,8 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
         PageInfo<MusicGroup> musicGroupPageInfo;
         if(roles != null && roles.size() == 1 && roles.contains(SysUserRole.EDUCATIONAL_TEACHER)){
             //只有教务老师权限
-            String musicGroupIds = musicGroupDao.queryEducationalMusicGroupId(sysUser.getId());
-            queryInfo.setMusicGroupId(musicGroupIds);
+            /*String musicGroupIds = musicGroupDao.queryEducationalMusicGroupId(sysUser.getId());
+            queryInfo.setMusicGroupId(musicGroupIds);*/
             musicGroupPageInfo = queryPage(queryInfo);
         }else {
             musicGroupPageInfo = queryPage(queryInfo);

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentAttendanceServiceImpl.java

@@ -362,7 +362,8 @@ public class StudentAttendanceServiceImpl extends BaseServiceImpl<Long, StudentA
 				//上课时间
 				Date classStartDateTime = DateUtil.stringToDate(classDate + " " + startClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
 				Date classEndDateTime = DateUtil.stringToDate(classDate + " " + endClassTime, DateUtil.EXPANDED_DATE_TIME_FORMAT);
-				Date addMinutes = DateUtil.addMinutes(classStartDateTime, advanceSignMinutes * -1);
+				Date addMinutes = DateUtil.addMinutes(classStartDateTime, -60);
+				//课程结束前进入,算正常
 				if(DateUtil.minutesBetween(addMinutes,date) >= 0 && DateUtil.minutesBetween(date,classEndDateTime) > 0){
 					studentAttendance = new StudentAttendance();
 					studentAttendance.setClassGroupId(classGroup.getId());

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -4,12 +4,15 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.util.collection.MapUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +33,8 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Autowired
     private StudentManageDao studentManageDao;
     @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
     private ClassGroupDao classGroupDao;
     @Autowired
     private StudentPaymentOrderDao studentPaymentOrderDao;
@@ -231,5 +236,10 @@ public class StudentManageServiceImpl implements StudentManageService {
     @Transactional(rollbackFor = Exception.class)
     public void updateUser(SysUser sysUser) {
         studentManageDao.updateUser(sysUser);
+        StudentRegistration studentRegistration = new StudentRegistration();
+        studentRegistration.setUserId(sysUser.getId());
+        studentRegistration.setCurrentClass(sysUser.getCurrentClass());
+        studentRegistration.setCurrentGrade(sysUser.getCurrentGrade());
+        studentRegistrationDao.updateCurrentClass(studentRegistration);
     }
 }

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

@@ -205,6 +205,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
         studentRegistration.setCreateTime(date);
         studentRegistration.setUpdateTime(date);
         studentRegistration.setUserId(sysUser.getId());
+        studentRegistrationDao.updateCurrentClass(studentRegistration);
         studentRegistrationDao.insert(studentRegistration);
         //增加报名学生数
         musicGroupSubjectPlanService.addApplyStudentNum(studentRegistration.getMusicGroupId(), studentRegistration.getSubjectId(), 1);
@@ -520,6 +521,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                     studentPaymentOrderDetailService.batchAdd(studentPaymentOrderDetails);
                 }
             }
+            studentRegistrationDao.updateCurrentClass(studentRegistration);
             return userId;
         }
     }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java

@@ -11,6 +11,7 @@ import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -59,6 +60,44 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
 	}
 
 	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean updateBalance(Integer userId, BigDecimal decimal, PlatformCashAccountDetailTypeEnum type, String memo) {
+		SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
+		if (cashAccount == null) {
+			throw new BizException("用户[{}]现金账户不存在", userId);
+		}
+
+		if (cashAccount.getStatus() != PlatformCashAccountStatusEnum.NORMAL) {
+			throw new BizException("账户不可用");
+		}
+		BigDecimal balance = cashAccount.getBalance().add(decimal);
+		if (balance.doubleValue() < 0) {
+			throw new BizException("现金账户[{}]余额不足,可用余额剩{}元", userId, cashAccount.getBalance().doubleValue());
+		}
+
+		Date date = new Date();
+
+		SysUserCashAccountDetail detail = new SysUserCashAccountDetail();
+		detail.setAmount(decimal);
+		detail.setBalance(cashAccount.getBalance().add(decimal));
+		detail.setComment(memo);
+		detail.setCreateTime(date);
+		detail.setStatus(DealStatusEnum.SUCCESS);
+		detail.setType(type);
+		detail.setUpdateTime(date);
+		detail.setUserId(userId);
+
+		sysUserCashAccountDetailDao.insert(detail);
+
+		cashAccount.setBalance(balance);
+		cashAccount.setUpdateTime(date);
+
+		sysUserCashAccountDao.update(cashAccount);
+
+		return true;
+	}
+
+	@Override
 	public boolean updateCourseBalance(Integer userId, BigDecimal decimal) {
 		SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
 		if (cashAccount == null) {
@@ -107,4 +146,9 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
 		return true;
 	}
 
+	@Override
+	public SysUserCashAccount getLocked(Integer userId) {
+		return sysUserCashAccountDao.getLocked(userId);
+	}
+
 }

+ 8 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -74,10 +74,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("请选择课程!");
 		}
 
-
-//		SysConfig byParamName = sysConfigService.findByParamName(SysConfigService.ADVANCE_SIGN_IN_MINUTES);
-//		Integer advanceSignInMinutes=Integer.parseInt(byParamName.getParanValue());
-
 		Map<String,Object> result=new HashMap<>();
 
 		TeacherAttendance teacherAttendance=teacherAttendanceDao.findByTeacherAttendanceInfo(user.getId().longValue(),teacherSignOutDto.getTeacherAttendanceInfo().getCourseScheduleId());
@@ -98,11 +94,11 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 
 		teacherAttendance.setMusicGroupId(currentCourseDetail.getMusicGroupId());
 		teacherAttendance.setClassGroupId(currentCourseDetail.getClassId());
-		teacherAttendance.setGroupType(teacherAttendance.getGroupType());
 		teacherAttendance.setRemark(teacherSignOutDto.getTeacherAttendanceInfo().getRemark());
 		int advanceSignMinutes = Integer.parseInt(sysConfigDao.findConfigValue(SysConfigService.ADVANCE_SIGN_IN_MINUTES));
 
 		CourseSchedule courseSchedule = courseScheduleDao.get(teacherAttendance.getCourseScheduleId());
+		teacherAttendance.setGroupType(courseSchedule.getGroupType());
 		if(courseSchedule == null){
 			throw new BizException("课程信息不存在");
 		}
@@ -132,7 +128,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			if(yesOrNoEnum == YesOrNoEnum.YES){
 				//连堂课
 			}else if(DateUtil.minutesBetween(add60Minutes,date) >= 0 && DateUtil.minutesBetween(date,add20Minutes) >= 0){
-				//正常签到范围(开始前20分钟  ~  开始之前)
+				//正常签到范围(开始前60分钟  ~  开始之前20分钟)
 			}else if(DateUtil.minutesBetween(add20Minutes,date) > 0){
 				if(StringUtils.isEmpty(teacherAttendance.getRemark())){
 					//当前为异常签到,请填写原因!
@@ -152,8 +148,13 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}
 			return result;
 		}else if(teacherAttendance.getSignOutTime() == null && teacherSignOutDto.getTeacherAttendanceInfo().getStatus().equals(SignStatusEnum.SIGN_OUT.getCode())){
+			if(teacherAttendance.getSignInTime() == null){
+				throw new BizException("当前课程未签到");
+			}
 			//正常签退范围(结束后1小时内)
 			teacherAttendance.setSignOutTime(date);
+			ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
+			teacherAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
 			if(DateUtil.minutesBetween(classEndDateTime,date) >= 0 && DateUtil.minutesBetween(date,classEndDateAdd60Minutes) >= 0){
 				teacherAttendance.setSignOutStatus(YesOrNoEnum.YES);
 				result.put("signInStatus",0);
@@ -168,11 +169,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}else{
 				teacherAttendanceDao.insert(teacherAttendance);
 			}
-			//修改当前课时
-//			classGroup.setId(teacherAttendance.getClassGroupId());
-//			classGroup.setCurrentClassTimes(teacherAttendance.getCurrentClassTimes() + 1);
-//			classGroup.setUpdateTime(date);
-//			classGroupDao.update(classGroup);
 			//新增课堂作业
 			CourseHomework courseHomework=teacherSignOutDto.getCourseHomeworkInfo();
 			courseHomework.setCourseScheduleId(teacherAttendance.getCourseScheduleId());
@@ -243,6 +239,7 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					null);
 			teacherAttendance.setSignInTime(date);
 			teacherAttendance.setSignInStatus(YesOrNoEnum.YES);
+			teacherAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
 			boolean isSign = false;
 			if(yesOrNoEnum == YesOrNoEnum.YES){
 				isSign = true;
@@ -277,7 +274,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			}else {
 				throw new BizException("签退时间异常");
 			}
-			teacherAttendance.setCurrentClassTimes(classGroup.getCurrentClassTimes() + 1);
 			teacherAttendance.setSignOutTime(date);
 			teacherAttendanceDao.update(teacherAttendance);
 			//教师签退后,给未签到学员添加旷课记录
@@ -287,8 +283,6 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 					e.setTeacherId(userId);
 					e.setStatus(StudentAttendanceStatusEnum.TRUANT);
 					e.setRemark("学员未到,自动补旷课");
-					e.setMusicGroupId(courseSchedule.getMusicGroupId());
-					e.setGroupType(courseSchedule.getGroupType());
 				});
 				studentAttendanceDao.addStudentAttendances(studentAttendances);
 			}

+ 4 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherServiceImpl.java

@@ -8,9 +8,6 @@ import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.JobNatureEnum;
-import com.ym.mec.biz.dal.enums.JobTypeEnum;
-import com.ym.mec.biz.dal.enums.TeachTypeEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.TeacherService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -19,7 +16,6 @@ import com.ym.mec.common.entity.ImResult;
 import com.ym.mec.common.entity.ImUserModel;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
-import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
@@ -78,9 +74,13 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher>  imple
 	public int add(Teacher teacher) throws Exception {
 		SysUser user = sysUserFeignService.queryUserByMobile(teacher.getPhone());
 		if(user != null && user.getId() != null){
+			if(!user.getUserType().equals(SysUserType.SYSTEM)){
+				throw new BizException("此手机号已被占用");
+			}
 			Integer id = user.getId();
 			Teacher teacher1 = teacherDao.get(id);
 			if(teacher1 == null || teacher1.getId() == null){
+				user.setUserType(SysUserType.TEACHER);
 				teacher.setId(id);
 				teacherDao.updateUser(user);
 				teacherDao.insert(teacher);

+ 27 - 7
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -101,8 +101,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 	@Autowired
 	private TeacherAttendanceDao teacherAttendanceDao;
 	@Autowired
-	private ContractService contractService;
-	@Autowired
 	private ClassGroupService classGroupService;
 
 	@Override
@@ -1482,19 +1480,27 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("未找到指定的vip课程");
 		}
 		ClassGroup classGroup = classGroupDao.findByVipGroup(vipGroupId, null);
+
+		Integer exitStudentNum = classGroupStudentMapperDao.countClassGroupExitStudentNum(classGroup.getId(), studentIds);
+		if(exitStudentNum>0){
+			throw new BizException("选择的学生中存在此课程中已存在的学生");
+		}
+
 		List<CourseSchedule> surplusCourses = courseScheduleDao.findByClassGroupAndStatus(classGroup.getId(), CourseStatusEnum.NOT_START.getCode());
 		if(CollectionUtils.isEmpty(surplusCourses)){
 			throw new BizException("此vip课程没有剩余课程计划");
 		}
+
 		BigDecimal surplusCoursesPrice=new BigDecimal(0);
-		surplusCourses.forEach(courseSchedule -> {
+		for (CourseSchedule courseSchedule : surplusCourses) {
 			if(courseSchedule.getTeachMode().equals(TeachModeEnum.OFFLINE)){
-				surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
+				surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOfflineClassesUnitPrice());
 			}else if(courseSchedule.getTeachMode().equals(TeachModeEnum.ONLINE)){
-				surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
+				surplusCoursesPrice=surplusCoursesPrice.add(vipGroup.getOnlineClassesUnitPrice());
 			}
-		});
+		}
 		List<ImGroupMember> imGroupMemberList = new ArrayList<>();
+		List<ClassGroupStudentMapper> classGroupStudentMappers=new ArrayList<>();
 		//生成学生单课缴费信息
 		for (Integer studentId:studentIds) {
 			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(studentId);
@@ -1503,11 +1509,25 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			}
 			courseScheduleStudentPaymentService.createCourseScheduleStudentPaymentForVipGroup(vipGroupId,studentId);
 
-			sysUserCashAccountService.updateCourseBalance(studentId,surplusCoursesPrice.negate());
+			sysUserCashAccountService.updateCourseBalance(studentId,sysUserCashAccount.getCourseBalance().subtract(surplusCoursesPrice));
+
+			//创建班级学生关联记录
+			ClassGroupStudentMapper classGroupStudentMapper=new ClassGroupStudentMapper();
+			classGroupStudentMapper.setGroupType(classGroup.getGroupType());
+			classGroupStudentMapper.setMusicGroupId(classGroup.getMusicGroupId());
+			classGroupStudentMapper.setClassGroupId(classGroup.getId());
+			classGroupStudentMapper.setStatus(ClassGroupStudentStatusEnum.NORMAL);
+			classGroupStudentMapper.setUserId(studentId);
+			classGroupStudentMappers.add(classGroupStudentMapper);
 
 			imGroupMemberList.add(new ImGroupMember(studentId.toString()));
 		}
 
+		classGroupStudentMapperDao.classGroupStudentsInsert(classGroupStudentMappers);
+
+		classGroup.setStudentNum(classGroup.getStudentNum()+classGroupStudentMappers.size());
+		classGroupDao.update(classGroup);
+
 		try {
 			ImGroupMember[] imGroupMembers = imGroupMemberList.toArray(new ImGroupMember[imGroupMemberList.size()]);
 			// 创建群组

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

@@ -577,7 +577,7 @@
         LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
         LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
         LEFT JOIN class_group_relation cgr ON cgr.sub_class_group_id_ = cs.class_group_id_
-        LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_ AND ta.teacher_id_ = cgtm.user_id_
+        LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_
         <include refid="queryMusicGroupCourseScheduleSql"/>
         ORDER BY cs.class_date_,cs.start_class_time_
         <include refid="global.limit"/>
@@ -588,7 +588,7 @@
         FROM course_schedule cs
         LEFT JOIN class_group cg ON cg.id_ = cs.class_group_id_
         LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
-        LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_ AND ta.teacher_id_ = cgtm.user_id_
+        LEFT JOIN class_group_teacher_mapper cgtm ON cgtm.class_group_id_ = cs.class_group_id_
         <include refid="queryMusicGroupCourseScheduleSql"/>
     </select>
 

+ 12 - 0
mec-biz/src/main/resources/config/mybatis/ClassGroupStudentMapperMapper.xml

@@ -217,4 +217,16 @@
         GROUP BY
           class_group_id_
     </select>
+    <select id="countClassGroupExitStudentNum" resultType="int">
+        SELECT
+            COUNT( user_id_ )
+        FROM
+          class_group_student_mapper
+        WHERE
+            class_group_id_ = #{classGroupId}
+            AND user_id_ IN
+            <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+                #{userId}
+            </foreach>
+    </select>
 </mapper>

+ 5 - 2
mec-biz/src/main/resources/config/mybatis/ClassGroupTeacherSalaryMapper.xml

@@ -129,10 +129,13 @@
 
   <!-- 获取乐团老师课酬配置表 -->
   <select id="findByMusicGroupId" resultMap="ClassGroupTeacherSalary">
-    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{musicGroupId}
+    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{musicGroupId} AND group_type_='MUSIC'
   </select>
   <select id="findByVipGoupAndTeacher" resultMap="ClassGroupTeacherSalary">
-    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{vipGroupId} AND user_id_=#{teacherId}
+    SELECT * FROM class_group_teacher_salary WHERE music_group_id_ = #{vipGroupId} AND user_id_=#{teacherId} AND group_type_='VIP'
   </select>
+    <select id="findByClassGroupAndTeacher" resultMap="ClassGroupTeacherSalary">
+      SELECT * FROM class_group_teacher_salary WHERE class_group_id_ = #{classGroupId} AND user_id_=#{teacherId}
+    </select>
 
 </mapper>

+ 17 - 13
mec-biz/src/main/resources/config/mybatis/EmployeeMapper.xml

@@ -184,8 +184,11 @@
         FROM employee e LEFT JOIN sys_user su ON e.user_id_ = su.id_
         <where>
             su.user_type_ = 'SYSTEM'
-            <if test="organId != null">
-                AND FIND_IN_SET(su.organ_id_,#{organId})
+            <if test="organIds != null">
+                AND
+                <foreach collection="organIds" item="item" open="(" close=")" separator=" OR ">
+                    FIND_IN_SET(#{item},e.organ_id_list_)
+                </foreach>
             </if>
             <if test="search != null">
                 AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
@@ -198,19 +201,20 @@
     </select>
 
     <select id="queryEmployByOrganIdCount" resultType="int">
-        SELECT COUNT(ue.user_id_)
-        FROM (SELECT e.user_id_,su.real_name_,su.gender_,su.phone_,su.user_type_,e.job_nature_,su.lock_flag_,
-        e.entry_date_,e.demission_date_,e.organ_id_list_,e.create_time_
+        SELECT COUNT(DISTINCT e.user_id_)
         FROM employee e LEFT JOIN sys_user su ON e.user_id_ = su.id_
         <where>
-            <if test="organId != null">
-                FIND_IN_SET(su.organ_id_,#{organId})
-            </if>
-        </where>) ue
-        WHERE ue.user_type_ LIKE '%SYSTEM%'
-        <if test="search != null">
-            AND (ue.real_name_ LIKE CONCAT('%',#{search},'%') OR ue.phone_ LIKE CONCAT('%',#{search},'%'))
-        </if>
+            su.user_type_ = 'SYSTEM'
+            <if test="organIds != null">
+                AND
+                <foreach collection="organIds" item="item" open="(" close=")" separator=" OR ">
+                    FIND_IN_SET(#{item},e.organ_id_list_)
+                </foreach>
+            </if>
+            <if test="search != null">
+                AND (su.real_name_ LIKE CONCAT('%',#{search},'%') OR su.phone_ LIKE CONCAT('%',#{search},'%'))
+            </if>
+        </where>
     </select>
     <select id="queryUserRole" resultType="java.lang.Integer">
         SELECT sur.role_id_ FROM sys_user_role sur WHERE sur.user_id_ = #{userId}

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -207,6 +207,7 @@
 		LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
 		LEFT JOIN `subject` s ON sr.actual_subject_id_ = s.id_
 		WHERE sr.user_id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
+		ORDER BY mg.create_time_ DESC
 	</select>
 
 	<select id="queryPersonalMusicGroups" resultMap="queryUserMusicGroupsMap">

+ 8 - 3
mec-biz/src/main/resources/config/mybatis/StudentAttendanceMapper.xml

@@ -39,10 +39,15 @@
     </insert>
 
     <insert id="addStudentAttendances" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
-      INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_, user_id_, teacher_id_, status_, create_time_, remark_ ,current_class_times_)
+      INSERT INTO student_attendance (group_type_, music_group_id_, class_group_id_, course_schedule_id_,
+      user_id_, teacher_id_, status_, create_time_, remark_ ,current_class_times_)
       VALUES
 	  <foreach collection="list" item="studentAttendance" separator=",">
-          (#{studentAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{studentAttendance.musicGroupId},#{studentAttendance.classGroupId},#{studentAttendance.courseScheduleId},#{studentAttendance.userId},#{studentAttendance.teacherId},#{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),#{studentAttendance.remark},#{studentAttendance.currentClassTimes})
+          (#{studentAttendance.groupType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+          #{studentAttendance.musicGroupId},#{studentAttendance.classGroupId},#{studentAttendance.courseScheduleId},
+          #{studentAttendance.userId},#{studentAttendance.teacherId},
+          #{studentAttendance.status,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},now(),
+          #{studentAttendance.remark},#{studentAttendance.currentClassTimes})
       </foreach>
     </insert>
 
@@ -339,7 +344,7 @@
     </select>
 
     <select id="queryNoSignStudentRecord" resultMap="StudentAttendance">
-        SELECT cg.music_group_id_,cg.id_ class_group_id_,cssp.course_schedule_id_,cssp.user_id_,cg.current_class_times_
+        SELECT cg.music_group_id_,cg.id_ class_group_id_,cssp.course_schedule_id_,cssp.user_id_,cg.current_class_times_,cg.group_type_
         FROM course_schedule_student_payment cssp LEFT JOIN class_group cg ON cg.id_ = cssp.class_group_id_
         WHERE cssp.user_id_ NOT IN (SELECT DISTINCT sa.user_id_ FROM student_attendance sa WHERE course_schedule_id_ = #{courseScheduleId})
         AND cssp.course_schedule_id_ = #{courseScheduleId}

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -183,6 +183,7 @@
         LEFT JOIN `subject` s ON s.id_ = sr.actual_subject_id_
         LEFT JOIN music_group_subject_plan mgsp ON mg.id_ = mgsp.music_group_id_ AND s.id_ = mgsp.subject_id_
         WHERE sr.user_id_=#{userId} AND sr.music_group_status_ != 'QUIT'
+        ORDER BY mg.create_time_ DESC
     </select>
 
     <sql id="studentManageCourseQueryCondition">

+ 5 - 1
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -338,7 +338,7 @@
         SELECT u.*,sr.name_,sr.current_class_,sr.current_grade_,sr.actual_subject_id_,sr.parents_name_,s.name_ subject_name_
         FROM sys_user u left join
         student_registration sr on u.id_ = sr.user_id_ left join subject s on sr.actual_subject_id_ = s.id_
-        where u.id_ = #{userId} AND sr.music_group_status_ != 'QUIT'
+        where u.id_ = #{userId}
         order by sr.create_time_ desc limit 1
     </select>
 
@@ -539,4 +539,8 @@
     <update id="updateUser">
         UPDATE sys_user SET real_name_ = #{realName},id_card_no_=#{idCardNo} WHERE id_=#{id}
     </update>
+    <update id="updateCurrentClass" parameterType="com.ym.mec.biz.dal.entity.StudentRegistration">
+        UPDATE student_registration sr SET sr.current_grade_ = #{currentGrade},sr.current_class_ = #{currentClass},sr.update_time_ = NOW()
+        WHERE sr.user_id_ = #{userId}
+    </update>
 </mapper>

+ 22 - 1
mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml

@@ -274,7 +274,28 @@
             #{courseScheduleId}
         </foreach>
     </select>
-    
+    <select id="findCourseTimeByClassGroup" resultType="java.util.Map">
+        SELECT
+            course_schedule_id_ AS 'key',
+            current_class_times_ AS 'value'
+        FROM
+            `teacher_attendance`
+        WHERE
+            class_group_id_ = #{classGroupId}
+    </select>
+    <select id="findCourseTimeByCourseSchedules" resultType="java.util.Map">
+        SELECT
+            course_schedule_id_ AS 'key',
+            current_class_times_ AS 'value'
+        FROM
+            `teacher_attendance`
+        WHERE
+            course_schedule_id_ IN
+            <foreach collection="courseScheduleIds" item="courseScheduleId" open="(" close=")" separator=",">
+                #{courseScheduleId}
+            </foreach>
+    </select>
+
     <update id="updateViPSignOutStatus" parameterType="string">
     	update teacher_attendance set sign_out_status_ = 1,sign_out_time_= now()
     	where FIND_IN_SET(course_schedule_id_,#{courseScheduleIdList}) and sign_in_status_ = 1

+ 5 - 3
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -155,7 +155,7 @@
     <sql id="vipGroupQueryCondition">
         <where>
             1=1
-            AND vg.audit_status_!='REJECT'
+            AND vg.audit_status_='PASS'
             <if test="search!=null and search!=''">
                 AND (vg.name_ LIKE CONCAT('%',#{search},'%') OR vg.id_=#{search})
             </if>
@@ -502,7 +502,8 @@
         SELECT
             su.id_,
             su.username_,
-            su.phone_
+            su.phone_,
+            suca.course_balance_
         FROM
           sys_user_cash_account suca
           LEFT JOIN sys_user su ON suca.user_id_=su.id_
@@ -571,7 +572,8 @@
             csts.actual_salary_ IS NOT NULL is_salary_
         FROM
             course_schedule cs
-            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_ left join school s on cs.schoole_id_ = s.id_
+            LEFT JOIN course_schedule_teacher_salary csts ON cs.id_=csts.course_schedule_id_
+            left join school s on cs.schoole_id_ = s.id_
         <include refid="teachingRecordQueryCondition"/>
         ORDER BY start_class_time_
         <include refid="global.limit"/>

+ 2 - 2
mec-education/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 2 - 2
mec-eureka/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=40ebb2ed-23ac-4afb-b48f-8d727f332edc
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 2 - 2
mec-gateway/mec-gateway-web/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 1 - 1
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -315,7 +315,7 @@ public class RoomServiceImpl implements RoomService {
         }
     }
 
-    @Transactional
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void destroyRoom(String roomId) {
         roomDao.deleteByRid(roomId);

+ 2 - 2
mec-im/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 2 - 2
mec-monitor/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=localhost:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=40ebb2ed-23ac-4afb-b48f-8d727f332edc
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 58 - 28
mec-student/src/main/java/com/ym/mec/student/controller/MusicGroupController.java

@@ -1,34 +1,59 @@
 package com.ym.mec.student.controller;
 
-import com.huifu.adapay.model.payment.PayChannelEnum;
-import com.huifu.adapay.model.payment.Payment;
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dto.RegisterPayDto;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
-import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.service.*;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.exception.BizException;
-import com.ym.mec.common.service.IdGeneratorService;
-import com.ym.mec.thirdparty.adapay.Pay;
-import com.ym.mec.util.string.IdWorker;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+import javax.annotation.Resource;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.*;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dto.RegisterPayDto;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.MusicGroupService;
+import com.ym.mec.biz.service.MusicGroupSubjectGoodsGroupService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.PayService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.IdGeneratorService;
 
 @RequestMapping("musicGroup")
 @Api(tags = "乐团服务")
@@ -175,14 +200,19 @@ public class MusicGroupController extends BaseController {
         return succeed(model);
     }
 
-    @ApiOperation(value = "续费")
-    @GetMapping("/renew")
-    @ApiImplicitParams({@ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String")})
-    public HttpResponseResult renew(String musicGroupId) throws Exception {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        Integer userId = sysUser.getId();
-        return succeed(musicGroupService.renew(musicGroupId, userId));
-    }
+	@ApiOperation(value = "续费")
+	@GetMapping("/renew")
+	@ApiImplicitParams({ @ApiImplicitParam(name = "musicGroupId", value = "乐团id", required = true, dataType = "String"),
+			@ApiImplicitParam(name = "isUseBalancePayment", value = "是否使用余额付款", required = true, dataType = "Boolean") })
+	public HttpResponseResult renew(String musicGroupId, Boolean isUseBalancePayment) throws Exception {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		Integer userId = sysUser.getId();
+		
+		if (isUseBalancePayment == null) {
+			isUseBalancePayment = false;
+		}
+		return succeed(musicGroupService.renew(musicGroupId, userId, isUseBalancePayment));
+	}
 
     @ApiOperation(value = "退团")
     @PostMapping("/quitMusicGroup")

+ 2 - 2
mec-student/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 2 - 2
mec-task/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 2 - 2
mec-teacher/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 8 - 6
mec-web/src/main/java/com/ym/mec/web/controller/EmployeeController.java

@@ -38,12 +38,14 @@ public class EmployeeController extends BaseController {
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
-        if(!sysUser.getIsSuperAdmin()){
-            if(StringUtils.isEmpty(queryInfo.getOrganId())){
-                Employee employee = employeeService.get(sysUser.getId());
-                queryInfo.setOrganId(employee.getOrganIdList());
-            }
-        }
+		if (!sysUser.getIsSuperAdmin()) {
+			if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+				Employee employee = employeeService.get(sysUser.getId());
+				queryInfo.setOrganId(employee.getOrganIdList());
+			}
+		} else {
+			queryInfo.setOrganId(null);
+		}
         return succeed(employeeService.queryEmployByOrganId(queryInfo));
     }
 

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentApplyRefundsController.java

@@ -45,6 +45,8 @@ public class StudentApplyRefundsController extends BaseController {
 				Employee employee = employeeDao.get(sysUser.getId());
 				queryInfo.setOrganId(employee.getOrganIdList());
 			}
+		} else {
+			queryInfo.setOrganId(null);
 		}
         return succeed(studentApplyRefundsService.queryPage(queryInfo));
     }

+ 3 - 1
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentOrderController.java

@@ -53,7 +53,9 @@ public class StudentPaymentOrderController extends BaseController {
                 Employee employee = employeeDao.get(sysUser.getId());
                 queryInfo.setOrganId(employee.getOrganIdList());
             }
-        }
+        } else {
+			queryInfo.setOrganId(null);
+		}
         if(hiddenMode){
             queryInfo.setPaymentChannel(channel);
         }

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentRechargeController.java

@@ -46,6 +46,8 @@ public class StudentRechargeController extends BaseController {
 				Employee employee = employeeDao.get(sysUser.getId());
 				queryInfo.setOrganId(employee.getOrganIdList());
 			}
+		} else {
+			queryInfo.setOrganId(null);
 		}
 		return succeed(studentRechargeService.queryPage(queryInfo));
 	}

+ 2 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentWithdrawController.java

@@ -56,6 +56,8 @@ public class StudentWithdrawController extends BaseController {
 				Employee employee = employeeDao.get(sysUser.getId());
 				queryInfo.setOrganId(employee.getOrganIdList());
 			}
+		} else {
+			queryInfo.setOrganId(null);
 		}
 		return succeed(studentWithdrawService.queryPage(queryInfo));
 	}

+ 2 - 2
mec-web/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=47.99.212.176:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=e246d169-227d-4012-8c34-e90e057d95d2
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 2 - 2
mec-zipkin/src/main/resources/bootstrap-prod.properties

@@ -1,9 +1,9 @@
 #\u6307\u5b9a\u5f00\u53d1\u73af\u5883
 #spring.profiles.active=dev
 #\u670d\u52a1\u5668\u5730\u5740
-spring.cloud.nacos.config.server-addr=localhost:8848
+spring.cloud.nacos.config.server-addr=47.96.80.97:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=40ebb2ed-23ac-4afb-b48f-8d727f332edc
+spring.cloud.nacos.config.namespace=f40a7594-4bd0-4bc6-8397-9353c6d2e63a
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}