Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

yonge 4 years ago
parent
commit
db426c3183
35 changed files with 209 additions and 58 deletions
  1. 1 1
      cms/src/main/java/com/ym/mec/cms/controller/NewsController.java
  2. 1 1
      mec-biz/src/main/java/com/ym/mec/biz/dal/config/SoundCompareConfig.java
  3. 7 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java
  4. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java
  5. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherAttendanceDao.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java
  7. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java
  8. 8 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java
  9. 9 0
      mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java
  10. 6 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java
  11. 11 2
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java
  12. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java
  13. 4 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/PracticeGroupServiceImpl.java
  14. 14 11
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java
  15. 7 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java
  16. 1 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java
  17. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
  18. 4 5
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java
  19. 28 8
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java
  20. 3 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  21. 8 1
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreAccompanimentServiceImpl.java
  22. 6 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java
  23. 1 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java
  24. 6 2
      mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml
  25. 11 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml
  26. 6 0
      mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml
  27. 12 0
      mec-biz/src/main/resources/config/mybatis/TeacherAttendanceMapper.xml
  28. 7 0
      mec-im/src/main/java/com/ym/controller/RoomController.java
  29. 2 0
      mec-im/src/main/java/com/ym/mec/im/IMHelper.java
  30. 1 0
      mec-im/src/main/java/com/ym/pojo/NoticeMessage.java
  31. 5 3
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  32. 2 0
      mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java
  33. 0 5
      mec-student/src/main/java/com/ym/mec/student/controller/SubjectChangeController.java
  34. 2 2
      mec-student/src/main/resources/logback-spring.xml
  35. 0 2
      mec-web/src/main/java/com/ym/mec/web/controller/SubjectChangeController.java

+ 1 - 1
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -62,7 +62,7 @@ public class NewsController extends BaseController {
 	@Autowired
 	private SysConfigService sysConfigService;
 
-	private final LocalDate xiaMenBannerStartShowTime = LocalDate.parse("2021-10-01", DateUtil.dateFormatter);
+	private final LocalDate xiaMenBannerStartShowTime = LocalDate.parse("2021-10-11", DateUtil.dateFormatter);
 
 	@ApiOperation("资讯列表分页查询")
 	@GetMapping(value = "/list")

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/config/SoundCompareConfig.java

@@ -35,7 +35,7 @@ public class SoundCompareConfig {
     /**
      * @describe 有效分贝大小
      */
-    public int validDb = 20;
+    public int validDb = 35;
     /**
      * @describe 有效频率
      */

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -449,4 +449,11 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
                                             @Param("activeRemark") Integer activeRemark,
                                             @Param("remark") String remark, @Param("status") String status);
 
+    /**
+     * 获取购买了乐器的报名订单
+     * @param musicGroupId
+     * @param studentId
+     * @return
+     */
+    Integer getOrderIdByMusical(@Param("musicGroupId") String musicGroupId, @Param("studentId") Integer studentId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDetailDao.java

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
+import com.ym.mec.biz.dal.entity.Goods;
 import org.apache.ibatis.annotations.Param;
 
 import com.ym.mec.biz.dal.dto.Mapper;
@@ -156,4 +157,12 @@ public interface StudentPaymentOrderDetailDao extends BaseDAO<Long, StudentPayme
     List<Mapper> getInstrumentNumInMusicApply(@Param("musicGroupIds") List<String> musicGroupIds);
     
 	List<StudentApplyInstrumentDto> queryByType(@Param("musicGroupId") String musicGroupId, @Param("orderDetailType") OrderDetailTypeEnum orderDetailType);
+
+    /**
+     *获取报名时购买的乐器或者附件
+     * @param orderIds
+     * @param type
+     * @return
+     */
+    List<Goods> getGoodsSellPrice(@Param("orderIds") List<Long> orderIds, @Param("type") String type);
 }

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

@@ -266,4 +266,9 @@ public interface TeacherAttendanceDao extends BaseDAO<Long, TeacherAttendance> {
      * @return java.lang.Long
      */
 	Long findFirstSign(@Param("currentScheduleId") Long currentScheduleId, @Param("userId") Integer userId);
+
+	void updateDeviceNum(@Param("courseId") Integer courseId,
+						 @Param("userId") String userId,
+						 @Param("signInDeviceNum") String signInDeviceNum,
+						 @Param("signOutDeviceNum") String signOutDeviceNum);
 }

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

@@ -187,6 +187,17 @@ public class MusicGroup {
 	
 	private Integer musicalInstrumentsProvideStatus;
 
+	@ApiModelProperty(value = "作业是否发送消息",required = true)
+	private Integer homeworkPushFlag = 1;
+
+	public Integer getHomeworkPushFlag() {
+		return homeworkPushFlag;
+	}
+
+	public void setHomeworkPushFlag(Integer homeworkPushFlag) {
+		this.homeworkPushFlag = homeworkPushFlag;
+	}
+
 	public Integer getCloudTeacherType() {
 		return cloudTeacherType;
 	}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderDetailService.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
 import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderDetail;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentOrderService.java

@@ -20,6 +20,7 @@ import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
+import org.apache.ibatis.annotations.Param;
 
 public interface StudentPaymentOrderService extends BaseService<Long, StudentPaymentOrder> {
 
@@ -191,4 +192,11 @@ public interface StudentPaymentOrderService extends BaseService<Long, StudentPay
     
     PayStatus queryPayStatus(String paymentChannel, String orderNo, String transNo) throws Exception;
 
+    /**
+     * 获取购买了乐器的报名订单
+     * @param musicGroupId
+     * @param studentId
+     * @return
+     */
+    Integer getOrderIdByMusical(@Param("musicGroupId") String musicGroupId, @Param("studentId") Integer studentId);
 }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherAttendanceService.java

@@ -185,4 +185,13 @@ public interface TeacherAttendanceService extends BaseService<Long, TeacherAtten
 	 * @param teacherAttendanceId
 	 */
 	void rejectTeacherAttendanceComplaints(long teacherAttendanceId,String content);
+
+	/**
+	 * 更新签退设备号
+	 * @param courseId
+	 * @param userId
+	 * @param signInDeviceNum
+	 * @param signOutDeviceNum
+	 */
+	void updateDeviceNum(Integer courseId, String userId,String signInDeviceNum, String signOutDeviceNum);
 }

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EduPracticeGroupServiceImpl.java

@@ -112,6 +112,8 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
     private TeacherCourseRewardService teacherCourseRewardService;
     @Autowired
     private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
+    @Autowired
+    private SysCouponCodeService sysCouponCodeService;
 
     private static final Logger LOGGER = LoggerFactory
             .getLogger(EduPracticeGroupService.class);
@@ -447,7 +449,10 @@ public class EduPracticeGroupServiceImpl implements EduPracticeGroupService{
             return BaseController.failed(HttpStatus.FOUND, errMessage);
         }
 
-        StudentPaymentOrder studentPaymentOrder=new StudentPaymentOrder();
+        //使用优惠券
+        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(practiceGroupBuyParams.getCouponIdList(),amount,true);
+        amount = studentPaymentOrder.getActualAmount();
+
         studentPaymentOrder.setUserId(practiceGroupBuyParams.getStudentId());
         studentPaymentOrder.setGroupType(GroupType.PRACTICE);
         String orderNo=idGeneratorService.generatorId("payment") + "";

+ 11 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MemberRankSettingServiceImpl.java

@@ -462,13 +462,22 @@ public class MemberRankSettingServiceImpl extends BaseServiceImpl<Integer, Membe
 		if(activeRemark == null || StringUtils.isEmpty(remark)){
 			return;
 		}
+		Integer studentId = cloudTeacherOrder.getStudentId();
+		SysUser sysUser = sysUserFeignService.queryUserById(studentId);
+		if(sysUser == null){
+			throw new BizException("用户信息获取失败");
+		}
+		Integer couponId = 1;
+		if(sysUser.getOrganId() != null && sysUser.getOrganId() == 4){
+			couponId = 2;
+		}
 		if(activeRemark.equals(202109)){
 			switch (remark){
 				case "2赠1":
-					sysCouponCodeService.exchangeCoupon(cloudTeacherOrder.getStudentId(),1,cloudTeacherOrder.getOrderId(),3);
+					sysCouponCodeService.exchangeCoupon(cloudTeacherOrder.getStudentId(),couponId,cloudTeacherOrder.getOrderId(),3);
 					break;
 				case "3赠2":
-					sysCouponCodeService.exchangeCoupon(cloudTeacherOrder.getStudentId(),1,cloudTeacherOrder.getOrderId(),6);
+					sysCouponCodeService.exchangeCoupon(cloudTeacherOrder.getStudentId(),couponId,cloudTeacherOrder.getOrderId(),6);
 					break;
 			}
 		}

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -2330,7 +2330,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                     studentLastChange = subjectChangeDao.getStudentLastChange(userId, musicGroupId);
                 }
                 
-    			if (studentLastChange != null && minPaymentOrderId <= studentLastChange.getOriginalOrderId()) {
+    			if (studentLastChange != null && (studentLastChange.getOriginalOrderId() == null || minPaymentOrderId <= studentLastChange.getOriginalOrderId())) {
     				if (returnFeeDto.getIsReturnMusicalFee()) {
     					amount = amount.add(studentLastChange.getChangeMusicalPrice());
     					
@@ -2963,6 +2963,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
 					}
 				}
 
+                cloudTeacherOrder.setAmount(calenderDetail.getExpectMemberAmount());
 				cloudTeacherOrderService.update(cloudTeacherOrder);
 				// 添加会员有效时长
 				studentService.updateMemberRank(cloudTeacherOrder, periodEnum);
@@ -3033,9 +3034,10 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                         && e.getType() != MAINTENANCE && e.getType() != CLOUD_TEACHER && e.getType() != CLOUD_TEACHER_PLUS).map(t -> t.getPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
                 //获取云教练订单费用
                 if(cloudTeacherOrder != null){
+                    CloudTeacherOrder teacherOrder = cloudTeacherOrderService.get(cloudTeacherOrder.getId());
                     BigDecimal cloudTeacherFee = paymentOrderDetails.stream().filter(e->e.getType() == CLOUD_TEACHER).map(t -> t.getPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
-                    cloudTeacherOrder.setAmount(cloudTeacherFee);
-                    cloudTeacherOrderService.update(cloudTeacherOrder);
+                    teacherOrder.setAmount(cloudTeacherFee);
+                    cloudTeacherOrderService.update(teacherOrder);
                 }
             }
 

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

@@ -3672,6 +3672,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 order.setMemo("重复支付,进入余额");
             }
             studentPaymentOrderDao.update(order);
+            sysCouponCodeService.quit(order.getCouponCodeId());
             return;
         }
 
@@ -3681,6 +3682,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
                 sysUserCashAccountService.updateBalance(order.getUserId(), order.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "网管课支付失败,退还余额");
             }
             studentPaymentOrderDao.update(order);
+            sysCouponCodeService.quit(order.getCouponCodeId());
             return;
         }
 
@@ -3695,6 +3697,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
             practiceGroup.setGroupStatus(GroupStatusEnum.CANCEL);
             practiceGroupDao.update(practiceGroup);
             groupService.deleteGroupOtherInfo(order.getMusicGroupId(), GroupType.PRACTICE);
+            sysCouponCodeService.quit(order.getCouponCodeId());
             return;
         }
         studentPaymentOrderDao.update(order);
@@ -3740,6 +3743,7 @@ public class PracticeGroupServiceImpl extends BaseServiceImpl<Long, PracticeGrou
 
             sysUserCashAccountService.updateBalance(order.getUserId(), order.getExpectAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "支付成功,用户取消,退还余额");
 
+            sysCouponCodeService.quit(order.getCouponCodeId());
             return;
         }
         ClassGroup classGroup = classGroupDao.findByMusicGroupAndType(order.getMusicGroupId(), GroupType.PRACTICE.getCode());

+ 14 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentCourseHomeworkServiceImpl.java

@@ -175,20 +175,23 @@ public class StudentCourseHomeworkServiceImpl extends BaseServiceImpl<Long, Stud
             String notifyUrl = "9?courseScheduleID=" + bean.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
             String extra = "dayaedu?courseScheduleID=" + courseSchedule.getId() + "&userId=" + bean.getUserId() + "&studentCourseHomeworkId=" + bean.getId() + "&extra=0";
             String courseDate = DateUtil.dateToString(courseSchedule.getClassDate(), "yyyy年MM月dd日");
-            sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH, bean.getUserId().toString(), extra,
-                    new String[]{courseSchedule.getActualTeacherId().toString()},
-                    null, courseDate, courseSchedule.getName());
             sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.TEACHER_PUSH_HOMEWORK_SUBMIT,
                     userMap, null, 0, notifyUrl, "TEACHER", courseSchedule.getName(), courseDate, user.getUsername());
+            MusicGroup musicGroup = musicGroupDao.get(courseSchedule.getMusicGroupId());
 
-            Date date = new Date();
-            if (date.before(courseHomework.getExpiryDate())) {
-                ClassGroup classGroup = classGroupDao.findByCourseSchedule(existHomework.getCourseScheduleId().intValue(), 0);
-                if (classGroup != null) {
-                    SysUser sysUser = sysUserFeignService.queryUserById(existHomework.getUserId());
-                    sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP, existHomework.getUserId().toString(), null,
-                            new String[]{classGroup.getId().toString()},
-                            null, sysUser.getUsername());
+            sysMessageService.batchSendImMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH, bean.getUserId().toString(), extra,
+                    new String[]{courseSchedule.getActualTeacherId().toString()},
+                    null, courseDate, courseSchedule.getName());
+            if(musicGroup != null && musicGroup.getHomeworkPushFlag() == 1){
+                Date date = new Date();
+                if (date.before(courseHomework.getExpiryDate())) {
+                    ClassGroup classGroup = classGroupDao.findByCourseSchedule(existHomework.getCourseScheduleId().intValue(), 0);
+                    if (classGroup != null) {
+                        SysUser sysUser = sysUserFeignService.queryUserById(existHomework.getUserId());
+                        sysMessageService.batchSendImGroupMessage(MessageTypeEnum.IM_HOMEWORK_SUBMIT_PUSH_GROUP, existHomework.getUserId().toString(), null,
+                                new String[]{classGroup.getId().toString()},
+                                null, sysUser.getUsername());
+                    }
                 }
             }
         }

+ 7 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentInstrumentServiceImpl.java

@@ -116,12 +116,12 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
 
         String orderNo = idGeneratorService.generatorId("payment") + "";
 
+        studentPaymentOrder.setActualAmount(amount);
         studentPaymentOrder.setPaymentChannel("BALANCE");
         studentPaymentOrder.setUserId(userId);
         studentPaymentOrder.setGroupType(GroupType.MAINTENANCE);
         studentPaymentOrder.setOrderNo(orderNo);
         studentPaymentOrder.setType(OrderTypeEnum.MAINTENANCE);
-        studentPaymentOrder.setExpectAmount(orderAmount);
         studentPaymentOrder.setBalancePaymentAmount(balance);
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         studentPaymentOrder.setMusicGroupId(studentInstrument.getId().toString());
@@ -140,7 +140,7 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
 
         StudentPaymentOrderDetail maintenanceOrderDetail = new StudentPaymentOrderDetail();
         maintenanceOrderDetail.setType(OrderDetailTypeEnum.MAINTENANCE);
-        maintenanceOrderDetail.setPrice(orderAmount);
+        maintenanceOrderDetail.setPrice(studentPaymentOrder.getActualAmount());
         maintenanceOrderDetail.setRemitFee(BigDecimal.ZERO);
         maintenanceOrderDetail.setPaymentOrderId(studentPaymentOrder.getId());
         maintenanceOrderDetail.setStudentInstrumentId(maintenancePayDto.getId());
@@ -376,7 +376,11 @@ public class StudentInstrumentServiceImpl extends BaseServiceImpl<Long, StudentI
         StudentInstrument studentInstrument = null;
     	
 		if (subjectChange.getOriginalOrderId() != null) {
-			studentInstrument = studentInstrumentDao.getByOrderId(subjectChange.getOriginalOrderId().longValue());
+		    //获取购买了乐器的报名订单
+            Integer orderId = studentPaymentOrderService.getOrderIdByMusical(subjectChange.getMusicGroupId(),subjectChange.getStudentId());
+            if(orderId != null){
+                studentInstrument = studentInstrumentDao.getByOrderId(orderId.longValue());
+            }
 		}
         
 		if (subjectChange == null || subjectChange.getChangeMusical() == null ||

+ 1 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -11,6 +11,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import com.ym.mec.biz.dal.entity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -26,14 +27,6 @@ import com.ym.mec.biz.dal.dao.SubjectChangeDao;
 import com.ym.mec.biz.dal.dao.SubjectDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.MusicalListDetailDto;
-import com.ym.mec.biz.dal.entity.Goods;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.MusicGroupPurchaseList;
-import com.ym.mec.biz.dal.entity.Organization;
-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.entity.SubjectChange;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
 import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -707,4 +707,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 		}
 		throw new BizException("支付渠道错误");
 	}
+
+    @Override
+    public Integer getOrderIdByMusical(String musicGroupId, Integer studentId) {
+        return studentPaymentOrderDao.getOrderIdByMusical(musicGroupId,studentId);
+    }
 }

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

@@ -464,13 +464,12 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             }
         }
         List<Integer> couponIdList = repairInfo.getCouponIdList();
-        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(couponIdList,amount,repairInfo.getType() != 1);
-        amount = studentPaymentOrder.getActualAmount();
         amount = amount.subtract(repairInfo.getExemptionAmount());
         if (amount.compareTo(BigDecimal.ZERO) < 0) {
             throw new BizException("特权减免金额不能大于总金额");
         }
-
+        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(couponIdList,amount,repairInfo.getType() != 1);
+        amount = studentPaymentOrder.getActualAmount();
         if(couponIdList != null && couponIdList.size() > 0){
             repairInfo.setCouponIds(StringUtils.join(couponIdList,","));
         }
@@ -642,8 +641,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentRepairDao.update(studentRepair);
 
         String channelType = "";
-
-        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(studentRepair.getCouponIdList(),amount,true);
+        List<Integer> couponIdList = Arrays.stream(studentRepair.getCouponIds().split(",")).mapToInt(Integer::valueOf).boxed().collect(Collectors.toList());
+        StudentPaymentOrder studentPaymentOrder = sysCouponCodeService.use(couponIdList,amount,true);
         amount = studentPaymentOrder.getActualAmount();
         studentPaymentOrder.setUserId(studentRepair.getStudentId());
         studentPaymentOrder.setGroupType(GroupType.REPAIR);

+ 28 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -96,11 +96,22 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         if (subjectChange == null) {
             return null;
         }
+        List<StudentPaymentOrder> orders = studentPaymentOrderDao.findMusicGroupApplyOrderByStatus(subjectChange.getStudentId(), subjectChange.getMusicGroupId(), SUCCESS);
+        //获取原报名订单的乐器费用
         if (subjectChange.getOriginalMusical() != null) {
-            subjectChange.setOriginalMusicalGoods(goodsDao.get(subjectChange.getOriginalMusical()));
+            if(orders != null && orders.size() > 0){
+                List<Long> collect = orders.stream().map(e -> e.getId()).collect(Collectors.toList());
+                List<Goods> musical = studentPaymentOrderDetailDao.getGoodsSellPrice(collect, "MUSICAL");
+                if(musical != null && musical.size() > 0){
+                    subjectChange.setOriginalMusicalGoods(musical.get(0));
+                }
+            }
         }
         if (subjectChange.getOriginalAccessories() != null) {
-            subjectChange.setOriginalAccessoriesGoods(goodsDao.findGoodsByIds(subjectChange.getOriginalAccessories()));
+            if(orders != null && orders.size() > 0){
+                List<Long> collect = orders.stream().map(e -> e.getId()).collect(Collectors.toList());
+                subjectChange.setOriginalAccessoriesGoods(studentPaymentOrderDetailDao.getGoodsSellPrice(collect,"ACCESSORIES"));
+            }
         }
 
         if (subjectChange.getChangeMusical() != null) {
@@ -591,11 +602,11 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             subjectChange.setSellTime(nowDate);
 
             //乐器辅件价差大于0时,有销售金额
-            if (subjectChange.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP) && studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
-                BigDecimal sellAmount = studentPaymentOrder.getActualAmount().multiply(subjectChange.getGoodsMargin())
-                        .divide(studentPaymentOrder.getExpectAmount(), 2, BigDecimal.ROUND_HALF_UP);
-                subjectChange.setSellAmount(sellAmount);
-            }
+//            if (subjectChange.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP) && studentPaymentOrder.getActualAmount().compareTo(BigDecimal.ZERO) > 0) {
+//                BigDecimal sellAmount = studentPaymentOrder.getActualAmount().multiply(subjectChange.getGoodsMargin())
+//                        .divide(studentPaymentOrder.getExpectAmount(), 2, BigDecimal.ROUND_HALF_UP);
+//                subjectChange.setSellAmount(sellAmount);
+//            }
 
             if (this.update(subjectChange) <= 0) {
                 throw new BizException("维修单更新失败");
@@ -614,7 +625,16 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 	sellOrderService.refundByOrderId(subjectChange.getOriginalOrderId().longValue(), false);
                 }
                 //添加新订单
-                this.addSellOrder(studentPaymentOrder.getId(), subjectChange.getMusicGroupId(), goodsIdList, studentPaymentOrder.getExpectAmount(), studentPaymentOrder.getBalancePaymentAmount(), subjectChange.getKitGroupPurchaseType());
+                List<SellOrder> sellOrders = this.addSellOrder(studentPaymentOrder.getId(), subjectChange.getMusicGroupId(), goodsIdList, studentPaymentOrder.getExpectAmount(), studentPaymentOrder.getBalancePaymentAmount(), subjectChange.getKitGroupPurchaseType());
+                if(sellOrders != null && sellOrders.size() > 0){
+                    SubjectChange change = subjectChangeDao.get(subjectChange.getId());
+                    BigDecimal instrumentAmount = sellOrders.stream().filter(e -> e.getType() == SellTypeEnum.INSTRUMENT).map(e -> e.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal accessoriesAmount = sellOrders.stream().filter(e -> e.getType() == SellTypeEnum.ACCESSORIES).map(e -> e.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    change.setChangeMusicalPrice(instrumentAmount.add(change.getOriginalMusicalPrice()));
+                    change.setChangeAccessoriesPrice(accessoriesAmount.add(change.getOriginalAccessoriesPrice()));
+                    change.setSellAmount(instrumentAmount.add(accessoriesAmount));
+                    subjectChangeDao.update(change);
+                }
             }
 
             //乐保处理

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java

@@ -176,6 +176,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 
 	@Override
 	public boolean batchSeoMessage(Set<Integer> userIds, MessageTypeEnum messageType,String memo, Object... args) {
+		if(userIds != null){
+			userIds.removeAll(Collections.singleton(null));
+		}
 		if (userIds == null || userIds.size() == 0) {
 			throw new BizException("接收地址不能为空");
 		}

+ 8 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMusicScoreAccompanimentServiceImpl.java

@@ -86,7 +86,14 @@ public class SysMusicScoreAccompanimentServiceImpl extends BaseServiceImpl<Integ
 			musicScoreQueryInfo.setParentId(categoriesId);
 			List<SysMusicScoreCategories> scoreCategories = sysMusicScoreCategoriesService.queryTree(musicScoreQueryInfo);
 			if(scoreCategories.size() > 0){
-				categoriesIdList = scoreCategories.stream().map(e->e.getId()).collect(Collectors.toList());
+				List<SysMusicScoreCategories> allScoreCategories = new ArrayList<>();
+				allScoreCategories.addAll(scoreCategories);
+				for (SysMusicScoreCategories scoreCategory : scoreCategories) {
+					if(scoreCategory.getSysMusicScoreCategoriesList() != null){
+						allScoreCategories.addAll(scoreCategory.getSysMusicScoreCategoriesList());
+					}
+				}
+				categoriesIdList = allScoreCategories.stream().map(e->e.getId()).collect(Collectors.toList());
 			}else {
 				categoriesIdList.add(categoriesId);
 			}

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherAttendanceServiceImpl.java

@@ -912,4 +912,10 @@ public class TeacherAttendanceServiceImpl extends BaseServiceImpl<Long, TeacherA
 			throw new BizException("操作失败: 当前申述状态不允许该操作");
 		}
 	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateDeviceNum(Integer courseId, String userId, String signInDeviceNum, String signOutDeviceNum) {
+		teacherAttendanceDao.updateDeviceNum(courseId,userId,signInDeviceNum,signOutDeviceNum);
+	}
 }

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -2306,6 +2306,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 				sysUserCashAccountService.updateBalance(userId, studentPaymentOrder.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS,
 						"VIP课购买失败");
 			}
+			sysCouponCodeService.quit(order.getCouponCodeId());
 			return;
 		}
 

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

@@ -45,6 +45,7 @@
                 typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="is_show_record_of_student_" property="isShowRecordOfStudent"/>
         <result column="musical_instruments_provide_status_" property="musicalInstrumentsProvideStatus"/>
+        <result column="homework_push_flag_" property="homeworkPushFlag"/>
     </resultMap>
     
     <resultMap type="com.ym.mec.biz.dal.dto.MusicGroupBasicDto" id="MusicGroupBasicDto" extends="MusicGroup">
@@ -104,7 +105,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_)
+                 payment_pattern_, course_view_type_, transaction_teacher_id_,homework_push_flag_)
         VALUES (#{id}, #{name}, #{organId}, #{schoolId}, #{applyExpireDate}, #{preApplyExpireDate}, #{teamTeacherId},
                 #{educationalTeacherId},
                 #{chargeTypeId}, #{courseForm}, now(), now(),
@@ -116,13 +117,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})
+                #{courseViewType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}, #{transactionTeacherId},#{homeworkPushFlag})
     </insert>
 
     <!-- 根据主键查询一条记录 -->
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.MusicGroup">
         UPDATE music_group
         <set>
+            <if test="homeworkPushFlag != null">
+                homework_push_flag_ = #{homeworkPushFlag},
+            </if>
             <if test="paymentPattern != null">
                 payment_pattern_ = #{paymentPattern},
             </if>

+ 11 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderDetailMapper.xml

@@ -324,4 +324,15 @@
         WHERE spo.music_group_id_ = #{musicGroupId}
         AND spo.type_ = 'APPLY' and spo.status_ = 'SUCCESS' and spod.type_ = #{orderDetailType, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
     </select>
+    <select id="getGoodsSellPrice" resultMap="com.ym.mec.biz.dal.dao.GoodsDao.Goods">
+        SELECT g.id_,g.goods_category_id_,g.sn_,g.name_,g.brand_,g.specification_,g.image_,g.type_,spod.price_ group_purchase_price_
+        FROM student_payment_order_detail spod
+        LEFT JOIN goods g ON spod.goods_id_list_ = g.id_
+        WHERE spod.payment_order_id_ IN
+        <foreach collection="orderIds" separator="," item="item" open="(" close=")">
+            #{item}
+        </foreach>
+        AND spod.type_ = #{type}
+        GROUP BY spod.id_
+    </select>
 </mapper>

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -1006,4 +1006,10 @@
         </if>
         LIMIT 1
     </select>
+    <select id="getOrderIdByMusical" resultType="java.lang.Integer">
+        SELECT DISTINCT spo.id_ FROM student_payment_order spo
+        LEFT JOIN student_payment_order_detail spod ON spo.id_ = spod.payment_order_id_
+        WHERE spo.type_ = 'APPLY' AND spo.status_ = 'SUCCESS' AND spo.music_group_id_ = #{musicGroupId}
+        AND spo.user_id_ = #{studentId} AND spod.type_ = 'MUSICAL'
+    </select>
 </mapper>

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

@@ -684,6 +684,18 @@
                 ,sign_in_longitude_latitude_ = NULL,sign_out_longitude_latitude_ = NULL
         WHERE course_schedule_id_ = #{courseScheduleId}
     </update>
+    <update id="updateDeviceNum">
+        UPDATE teacher_attendance
+        <set>
+            <if test="signInDeviceNum != null and signInDeviceNum != ''">
+                sign_in_device_no_ = #{signInDeviceNum}
+            </if>
+            <if test="signOutDeviceNum != null and signOutDeviceNum != ''">
+                sign_out_device_no_ = #{signOutDeviceNum}
+            </if>
+        </set>
+        WHERE course_schedule_id_ = #{courseId} AND teacher_id_ = #{userId}
+    </update>
 
     <delete id="deleteByMusicGroupId" parameterType="map" >
 		DELETE ta FROM teacher_attendance ta LEFT JOIN course_schedule cs ON ta.course_schedule_id_ = cs.id_

+ 7 - 0
mec-im/src/main/java/com/ym/controller/RoomController.java

@@ -2,13 +2,20 @@ package com.ym.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.ym.common.BaseResponse;
+import com.ym.dao.RoomDao;
+import com.ym.dao.RoomMemberDao;
 import com.ym.pojo.*;
 import com.ym.service.MessageService;
 import com.ym.service.RoomService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
 import java.util.List;
 
 @RestController

+ 2 - 0
mec-im/src/main/java/com/ym/mec/im/IMHelper.java

@@ -6,6 +6,7 @@ import com.ym.pojo.IMApiResultInfo;
 import com.ym.pojo.IMTokenInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Component;
 
 import java.net.HttpURLConnection;
@@ -111,6 +112,7 @@ public class IMHelper {
      * @param groupName:要加入的群 Id 对应的名称。(必传)
      * @return CodeSuccessResult
      **/
+    @Async
     public IMApiResultInfo joinGroup(String[] userId, String groupId, String groupName)
             throws Exception {
         if (userId == null) {

+ 1 - 0
mec-im/src/main/java/com/ym/pojo/NoticeMessage.java

@@ -8,6 +8,7 @@ import lombok.Data;
 @Data
 public class NoticeMessage extends BaseMessage {
     private String content = "";
+    private Object extraContent;
     private String extra = "";
     private io.rong.messages.UserInfo user = null;
     private static final transient String TYPE = "DY:NoticeMsg";

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

@@ -315,7 +315,8 @@ public class RoomServiceImpl implements RoomService {
         if(!aBoolean){
             RoleEnum roleEnum = RoleEnum.getEnumByValue(roomMember.getRole());
             if(roleEnum == RoleTeacher && StringUtils.isNotEmpty(deviceNum)){
-                signInSuccess(roomMember,deviceNum);
+                teacherAttendanceService.updateDeviceNum(Integer.parseInt(roomId.substring(1)),userId,deviceNum,null);
+//                signInSuccess(roomMember,deviceNum);
             }
             return;
         }
@@ -433,7 +434,7 @@ public class RoomServiceImpl implements RoomService {
         return roomMember;
     }
 
-    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.SERIALIZABLE)
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
     @Override
     public void leaveRoomSuccess(String roomId,String userId,String deviceNum) throws Exception {
         log.info("leaveRoomSuccess: roomId={}, userId={},deviceNum={}", roomId,userId,deviceNum);
@@ -456,7 +457,8 @@ public class RoomServiceImpl implements RoomService {
             if (StringUtils.isNotEmpty(deviceNum)){
                 //如果设备号不为空,更新设备号
                 if(roleEnum == RoleTeacher){
-                    teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),parseInt,deviceNum);
+                    teacherAttendanceService.updateDeviceNum(firstCourseId,userId,null,deviceNum);
+//                    teacherAttendanceService.addTeacherAttendanceSignOut(firstCourseId.longValue(),parseInt,deviceNum);
                 }
             }
             return;

+ 2 - 0
mec-student/src/main/java/com/ym/mec/student/controller/MemberRankController.java

@@ -70,6 +70,8 @@ public class MemberRankController extends BaseController {
 			return failed(HttpStatus.FORBIDDEN, "请登录");
 		}
 		memberPayParamDto.setUserId(sysUser.getId());
+		memberPayParamDto.setBuyNum(1);
+		memberPayParamDto.setGiveNum(0);
 		return succeed(memberRankSettingService.buy(memberPayParamDto));
 	}
 

+ 0 - 5
mec-student/src/main/java/com/ym/mec/student/controller/SubjectChangeController.java

@@ -11,18 +11,13 @@ import com.ym.mec.biz.service.SubjectChangeService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
-
-import java.math.BigDecimal;
 import java.util.Map;
 
 @RequestMapping("subjectChange")

+ 2 - 2
mec-student/src/main/resources/logback-spring.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
 
-	<property name="LOG_HOME" value="/Users/chenxiaoyu/Documents/logs/student-%d{yyyy-MM-dd_HH}-%i.log" />
+	<property name="LOG_HOME" value="/mdata/logs/student-%d{yyyy-MM-dd_HH}-%i.log" />
 	<property name="CONSOLE_LOG_PATTERN"
 			  value="[%X{username} %X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}] : %msg%n" />
 
@@ -30,7 +30,7 @@
 	<appender name="messagefile"
 			  class="ch.qos.logback.core.rolling.RollingFileAppender">
 		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-			<FileNamePattern>/Users/chenxiaoyu/Documents/logs/student-message-%d{yyyy-MM-dd_HH}-%i.log</FileNamePattern>
+			<FileNamePattern>/mdata/logs/student-message-%d{yyyy-MM-dd_HH}-%i.log</FileNamePattern>
 			<MaxHistory>90</MaxHistory>
 			<TimeBasedFileNamingAndTriggeringPolicy
 					class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

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

@@ -38,8 +38,6 @@ import java.util.List;
 public class SubjectChangeController extends BaseController {
 
     @Autowired
-    private StudentRegistrationService studentRegistrationService;
-    @Autowired
     private MusicGroupSubjectPlanService musicGroupSubjectPlanService;
     @Autowired
     private SubjectChangeService subjectChangeService;