浏览代码

Merge branch 'master' into yonge

yonge 5 年之前
父节点
当前提交
61c04b2233
共有 17 个文件被更改,包括 204 次插入44 次删除
  1. 13 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRepair.java
  2. 10 0
      mec-biz/src/main/java/com/ym/mec/biz/dal/page/RepairStudentQueryInfo.java
  3. 9 1
      mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java
  4. 17 17
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleTeacherSalaryServiceImpl.java
  5. 37 9
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java
  6. 11 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysMessageServiceImpl.java
  7. 5 3
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java
  8. 1 2
      mec-biz/src/main/resources/config/mybatis/CourseScheduleTeacherSalaryMapper.xml
  9. 5 2
      mec-biz/src/main/resources/config/mybatis/StudentRepairMapper.xml
  10. 3 3
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImMessageModel.java
  11. 38 0
      mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImPlayMidiMessage.java
  12. 6 0
      mec-im/src/main/java/com/ym/controller/RoomController.java
  13. 29 2
      mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java
  14. 7 0
      mec-im/src/main/java/com/ym/service/RoomService.java
  15. 2 1
      mec-student/src/main/java/com/ym/mec/student/controller/RepairController.java
  16. 10 4
      mec-web/src/main/java/com/ym/mec/web/controller/SysUserCashAccountController.java
  17. 1 0
      mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentRepair.java

@@ -122,6 +122,11 @@ public class StudentRepair {
     private Integer repairStatus;
 
     /**
+     * 使用余额
+     */
+    private Boolean isUseBalancePayment;
+
+    /**
     * 送修时间
     */
     private Date createTime;
@@ -338,4 +343,12 @@ public class StudentRepair {
     public void setEmployeeAddress(String employeeAddress) {
         this.employeeAddress = employeeAddress;
     }
+
+    public Boolean getIsUseBalancePayment() {
+        return isUseBalancePayment;
+    }
+
+    public void setIsUseBalancePayment(Boolean useBalancePayment) {
+        isUseBalancePayment = useBalancePayment;
+    }
 }

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/RepairStudentQueryInfo.java

@@ -24,6 +24,8 @@ public class RepairStudentQueryInfo extends QueryInfo {
 
     private Integer studentId;
 
+    private Integer payStatus;
+
     public Integer getSubjectId() {
         return subjectId;
     }
@@ -87,4 +89,12 @@ public class RepairStudentQueryInfo extends QueryInfo {
     public void setStudentId(Integer studentId) {
         this.studentId = studentId;
     }
+
+    public Integer getPayStatus() {
+        return payStatus;
+    }
+
+    public void setPayStatus(Integer payStatus) {
+        this.payStatus = payStatus;
+    }
 }

+ 9 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SysMessageService.java

@@ -29,7 +29,7 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	boolean batchSeoMessage(Set<Integer> userIds, MessageTypeEnum messageType,String memo, Object... args);
 
 	/**
-	 * 推送站内消息
+	 * 推送im文本消息
 	 * @param senderId
 	 * @param messageType
 	 * @return
@@ -37,6 +37,14 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	void batchSendImMessage(MessageTypeEnum messageType,String senderId,String extra, String[] targetIds,String url, Object... args);
 
 	/**
+	 * 推送im自定义节拍器消息
+	 * @param senderId
+	 * @param targetIds
+	 * @param content
+	 */
+	void batchSendImPlayMidiMessage(String senderId,String[] targetIds, String content);
+
+	/**
 	 * 批量发送消息
 	 * @param messageSender 消息发送者
 	 * @param subject 消息主题

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

@@ -297,8 +297,8 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         List<Long> courseScheduleIds = someDayAgoTeacherCourseSalaryNoSettlement.stream().map(CourseScheduleTeacherSalary::getCourseScheduleId).collect(Collectors.toList());
 
         //所有课程的学生考勤记录
-        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(courseScheduleIds);
-        Map<Long, List<StudentAttendance>> courseStudentAttendancesMap = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
+//        List<StudentAttendance> studentAttendances = studentAttendanceDao.findByCourseIds(courseScheduleIds);
+//        Map<Long, List<StudentAttendance>> courseStudentAttendancesMap = studentAttendances.stream().collect(Collectors.groupingBy(StudentAttendance::getCourseScheduleId));
 
         //所有课程的教师考勤记录
         List<TeacherAttendance> teacherAttendancesByCourseSchedule = teacherAttendanceDao.findTeacherIdByCourseSchedule(courseScheduleIds);
@@ -320,7 +320,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
         List<CourseScheduleStudentPayment> updateStudentPayments = new ArrayList<>();
 
         //用户账户资金变动信息列表
-        List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
+//        List<SysUserCashAccountDetail> userCashAccountDetails = new ArrayList<>();
 
         //处理课酬信息
         someDayAgoTeacherCourseSalaryNoSettlement.forEach(courseScheduleTeacherSalary -> {
@@ -332,19 +332,19 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 return;
             }
 
-            List<StudentAttendance> courseStudentAttendances = courseStudentAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
-            int normalStudentNum=0;
-            if(CollectionUtils.isEmpty(courseStudentAttendances)){
-                return;
-            }
-            for (StudentAttendance courseStudentAttendance : courseStudentAttendances) {
-                if(Objects.nonNull(courseStudentAttendance.getStatus())&&courseStudentAttendance.getStatus().equals(StudentAttendanceStatusEnum.NORMAL)){
-                    normalStudentNum+=1;
-                }
-            }
-            if(normalStudentNum==0){
-                return;
-            }
+//            List<StudentAttendance> courseStudentAttendances = courseStudentAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
+//            int normalStudentNum=0;
+//            if(CollectionUtils.isEmpty(courseStudentAttendances)){
+//                return;
+//            }
+//            for (StudentAttendance courseStudentAttendance : courseStudentAttendances) {
+//                if(Objects.nonNull(courseStudentAttendance.getStatus())&&courseStudentAttendance.getStatus().equals(StudentAttendanceStatusEnum.NORMAL)){
+//                    normalStudentNum+=1;
+//                }
+//            }
+//            if(normalStudentNum==0){
+//                return;
+//            }
 
             List<TeacherAttendance> teacherAttendances = courseTeacherAttendancesMap.get(courseScheduleTeacherSalary.getCourseScheduleId());
             if(CollectionUtils.isEmpty(teacherAttendances)){
@@ -427,7 +427,7 @@ public class CourseScheduleTeacherSalaryServiceImpl extends BaseServiceImpl<Long
                 complainsGroupByStudent = courseStudentComplaints.stream().collect(Collectors.groupingBy(CourseScheduleComplaints::getUserId));
             }
 
-            BigDecimal zero=new BigDecimal(0);
+//            BigDecimal zero=new BigDecimal(0);
 
             //计算学生当前课程应缴费用
             for (CourseScheduleStudentPayment studentPayment : studentPaymentsWithCourse) {

+ 37 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -6,18 +6,13 @@ import com.ym.mec.biz.dal.dao.StudentRepairDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.StudentManageListDto;
-import com.ym.mec.biz.dal.entity.Group;
-import com.ym.mec.biz.dal.entity.MusicGroup;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.StudentRepair;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.DealStatusEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.page.RepairStudentQueryInfo;
-import com.ym.mec.biz.service.PayService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
-import com.ym.mec.biz.service.StudentRepairService;
-import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
@@ -49,7 +44,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     private SysConfigDao sysConfigDao;
     @Autowired
     private StudentPaymentOrderService studentPaymentOrderService;
-
+    @Autowired
+    private SysUserCashAccountService sysUserCashAccountService;
 
     @Override
     public BaseDAO<Integer, StudentRepair> getDAO() {
@@ -121,6 +117,22 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentPaymentOrderService.insert(studentPaymentOrder);
         studentPaymentOrder.setVersion(0);
 
+        if (repairInfo.getIsUseBalancePayment() && amount.compareTo(BigDecimal.ZERO) > 0) {
+            SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(repairInfo.getStudentId());
+            if (userCashAccount == null) {
+                throw new BizException("用户账户找不到");
+            }
+            if (userCashAccount.getBalance() != null && userCashAccount.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+                BigDecimal balance = amount.compareTo(userCashAccount.getBalance()) >= 0 ? userCashAccount.getBalance() : amount;
+                amount = amount.subtract(balance);
+                studentPaymentOrder.setActualAmount(amount);
+                studentPaymentOrder.setBalancePaymentAmount(balance);
+                sysUserCashAccountService.updateBalance(repairInfo.getStudentId(), balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐器维修");
+            }
+        }
+        studentPaymentOrderService.update(studentPaymentOrder);
+        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
+
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("tradeState", "1");
@@ -236,6 +248,22 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentPaymentOrderService.insert(studentPaymentOrder);
         studentPaymentOrder.setVersion(0);
 
+        if (repairInfo.getIsUseBalancePayment() && amount.compareTo(BigDecimal.ZERO) > 0) {
+            SysUserCashAccount userCashAccount = sysUserCashAccountService.getLocked(repairInfo.getStudentId());
+            if (userCashAccount == null) {
+                throw new BizException("用户账户找不到");
+            }
+            if (userCashAccount.getBalance() != null && userCashAccount.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+                BigDecimal balance = amount.compareTo(userCashAccount.getBalance()) >= 0 ? userCashAccount.getBalance() : amount;
+                amount = amount.subtract(balance);
+                studentPaymentOrder.setActualAmount(amount);
+                studentPaymentOrder.setBalancePaymentAmount(balance);
+                sysUserCashAccountService.updateBalance(repairInfo.getStudentId(), balance.negate(), PlatformCashAccountDetailTypeEnum.PAY_FEE, "乐器维修");
+            }
+        }
+        studentPaymentOrderService.update(studentPaymentOrder);
+        studentPaymentOrder.setVersion(studentPaymentOrder.getVersion() + 1);
+
         if (amount.compareTo(BigDecimal.ZERO) == 0) {
             Map<String, String> notifyMap = new HashMap<>();
             notifyMap.put("tradeState", "1");

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

@@ -12,6 +12,7 @@ import com.ym.mec.biz.dal.enums.SendStatusEnum;
 import com.ym.mec.biz.service.SysMessageConfigService;
 import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.entity.ImPlayMidiMessage;
 import com.ym.mec.common.entity.ImPrivateMessage;
 import com.ym.mec.common.entity.ImTxtMessage;
 import com.ym.mec.common.exception.BizException;
@@ -192,6 +193,16 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	}
 
 	@Override
+	public void batchSendImPlayMidiMessage(String senderId,String[] targetIds, String content) {
+		ImPrivateMessage privateMessage = new ImPrivateMessage();
+		privateMessage.setObjectName("DY:PlayMidiMessage");
+		privateMessage.setTargetId(targetIds);
+		privateMessage.setSenderId(senderId);
+		privateMessage.setContent(new ImPlayMidiMessage(content,null));
+		imFeignService.privateSend(privateMessage);
+	}
+
+	@Override
 	@Async
 	public boolean batchSendMessage(MessageSender messageSender, String subject, String content, Map<Integer, String> receivers, Date triggerTime,
 			Integer readStatus, String memo, String group,String jpushType) {

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

@@ -95,7 +95,7 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
         SysUserCashAccountDetail detail = new SysUserCashAccountDetail();
         detail.setAmount(decimal);
         detail.setBalance(cashAccount.getBalance().add(decimal));
-        detail.setComment(memo);
+        detail.setComment(memo + "-" + sysUserFeignService.queryUserInfo().getId());
         detail.setCreateTime(date);
         detail.setStatus(DealStatusEnum.SUCCESS);
         detail.setType(type);
@@ -176,6 +176,10 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
     @Override
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public boolean updateCourseBalance(Integer userId, BigDecimal decimal, BigDecimal amount, String description) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            throw new BizException("用户信息获取失败");
+        }
         SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
         if (cashAccount == null) {
             throw new BizException("用户[{}]现金账户不存在", userId);
@@ -187,7 +191,6 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
         sysUserCashAccountDao.update(cashAccount);
 
         if (amount.compareTo(BigDecimal.ZERO) != 0) {
-            SysUser sysUser = sysUserFeignService.queryUserById(userId);
             SysUserCoursesAccountDetail sysUserCoursesAccountDetail = new SysUserCoursesAccountDetail();
             sysUserCoursesAccountDetail.setUserId(userId);
             sysUserCoursesAccountDetail.setAmount(amount);
@@ -196,7 +199,6 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
             sysUserCoursesAccountDetail.setStatus(DealStatusEnum.SUCCESS);
             sysUserCoursesAccountDetailDao.insert(sysUserCoursesAccountDetail);
         }
-
         return true;
     }
 

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

@@ -296,8 +296,7 @@
 		course_schedule_teacher_salary csts
 		LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
 		LEFT JOIN teacher_attendance ta ON ta.course_schedule_id_ = cs.id_
-		LEFT JOIN student_attendance sa ON sa.course_schedule_id_ = cs.id_
-		WHERE (ta.sign_in_status_ IS NOT NULL OR ta.sign_out_status_ IS NOT NULL) AND sa.status_ = 'NORMAL'
+		WHERE (ta.sign_in_status_ IS NOT NULL OR ta.sign_out_status_ IS NOT NULL)
 		<if test="days!=null">
 			AND cs.class_date_ &lt;= DATE_FORMAT(DATE_ADD( NOW( ), INTERVAL - #{days} DAY ),'%Y-%m-%d')
 		</if>

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

@@ -189,6 +189,9 @@
             <if test="repairStatus != null">
                 AND sr.repair_status_ = #{repairStatus}
             </if>
+            <if test="payStatus != null">
+                AND sr.pay_status_ = #{payStatus}
+            </if>
             <if test="startTime != null">
                 AND sr.create_time_ >= #{startTime}
             </if>
@@ -240,11 +243,11 @@
         SELECT su.real_name_ username_, su.id_ user_id_, su.avatar_ head_url_
         FROM music_group mg
                  LEFT JOIN student_registration sr on sr.music_group_id_ = mg.id_
-                 LEFT JOIN sys_user su ON su.id_ = sr.id_
+                 LEFT JOIN sys_user su ON su.id_ = sr.user_id_
         WHERE sr.user_id_ = #{studentId}
           AND mg.status_ = 'PROGRESS'
           AND mg.repair_user_id_ IS NOT NULL
-        ORDER BY id_ DESC
+        ORDER BY mg.id_ DESC
         LIMIT 1
     </select>
 

+ 3 - 3
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImMessageModel.java

@@ -8,7 +8,7 @@ public class ImMessageModel {
     //消息类型, 分为两类: 内置消息类型 、自定义消息类型  RC:TxtMsg,RC:ImgMsg,RC:VcMsg,RC:ImgTextMsg,RC:FileMsg,RC:LBSMsg  必填
     private String objectName;
     //消息内容  必填
-    private ImTxtMessage content;
+    private ImBaseMessage content;
     //push 内容, 分为两类 内置消息 Push 、自定义消息 Push  RC:TxtMsg,RC:ImgMsg,RC:VcMsg,RC:ImgTextMsg,RC:FileMsg,RC:LBSMsg
     private String pushContent;
     private String pushData;
@@ -16,7 +16,7 @@ public class ImMessageModel {
     public ImMessageModel() {
     }
 
-    public ImMessageModel(String senderId, String[] targetId, String objectName, ImTxtMessage content, String pushContent, String pushData) {
+    public ImMessageModel(String senderId, String[] targetId, String objectName, ImBaseMessage content, String pushContent, String pushData) {
         this.senderId = senderId;
         this.targetId = targetId;
         this.objectName = objectName;
@@ -47,7 +47,7 @@ public class ImMessageModel {
         return this.content;
     }
 
-    public ImMessageModel setContent(ImTxtMessage content) {
+    public ImMessageModel setContent(ImBaseMessage content) {
         this.content = content;
         return this;
     }

+ 38 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/ImPlayMidiMessage.java

@@ -0,0 +1,38 @@
+package com.ym.mec.common.entity;
+
+import com.alibaba.fastjson.JSONObject;
+
+public class ImPlayMidiMessage extends ImBaseMessage {
+    private String content = "";
+    private String extra = "";
+    private static final transient String TYPE = "DY:PlayMidiMessage";
+
+    public ImPlayMidiMessage(String content, String extra) {
+        this.content = content;
+        this.extra = extra;
+    }
+
+    public String getType() {
+        return "DY:PlayMidiMessage";
+    }
+
+    public String getContent() {
+        return this.content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getExtra() {
+        return this.extra;
+    }
+
+    public void setExtra(String extra) {
+        this.extra = extra;
+    }
+
+    public String toString() {
+        return JSONObject.toJSONString(this);
+    }
+}

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

@@ -41,6 +41,12 @@ public class RoomController{
         return new BaseResponse<>(result);
     }
 
+    @RequestMapping(value = "/sendImPlayMidiMessage", method = RequestMethod.POST)
+    public Object sendImPlayMidiMessage(String userId,String content,String roomId){
+        roomService.sendImPlayMidiMessage(userId,content,roomId);
+        return new BaseResponse<>();
+    }
+
     @RequestMapping(value = "/statusSync")
     public Object statusSync(@RequestBody String body) throws Exception {
         ChannelStateNotify notify = JSONObject.parseObject(body, ChannelStateNotify.class);

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

@@ -22,6 +22,7 @@ import com.ym.mec.biz.dal.enums.SignStatusEnum;
 import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;
 import com.ym.mec.biz.service.StudentAttendanceService;
 import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysMessageService;
 import com.ym.mec.biz.service.TeacherAttendanceService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.im.IMHelper;
@@ -45,6 +46,8 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * Created by super_zou on 2019/11/28.
@@ -77,6 +80,9 @@ public class RoomServiceImpl implements RoomService {
     private UserDao userDao;
 
     @Autowired
+    private SysMessageService sysMessageService;
+
+    @Autowired
     private TeacherDao teacherDao;
 
     @Autowired
@@ -1271,12 +1277,13 @@ public class RoomServiceImpl implements RoomService {
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
+    @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
     public boolean statusSync(String roomId,String userId) throws Exception {
         log.info("statusSync: roomId={}, userId={}", roomId, userId);
         List<RoomMember> byRidAndUid = roomMemberDao.findByRidAndUid(roomId, userId);
         if(byRidAndUid.size() > 0){
 //            SysUser sysUser = sysUserFeignService.queryUserById(Integer.parseInt(userId));
+            studentDao.lockUser(Integer.parseInt(userId));
             SysUser sysUser = teacherDao.getUser(Integer.parseInt(userId));
             Teacher teacher = teacherDao.get(sysUser.getId());
             CourseSchedule courseSchedule = courseScheduleDao.get(Long.parseLong(roomId.substring(1)));
@@ -1357,12 +1364,32 @@ public class RoomServiceImpl implements RoomService {
                 }
             }
             userDao.deleteByUid(userId);
-
             return true;
         }
         return true;
     }
 
+    @Override
+    public void sendImPlayMidiMessage(String userId, String content,String roomId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if(sysUser == null){
+            throw new BizException("用户信息获取失败");
+        }
+        String[] targetIds;
+        if(StringUtils.isNotEmpty(userId)){
+            targetIds = userId.split(",");
+        }else {
+            List<RoomMember> roomMembers = roomMemberDao.findByRidAndRole(roomId, RoleEnum.RoleStudent.getValue());
+            if(roomMembers.size() > 0){
+                Set<String> collect = roomMembers.stream().map(e -> e.getUid()).collect(Collectors.toSet());
+                targetIds = (String[]) collect.toArray();
+            }else {
+                return;
+            }
+        }
+        sysMessageService.batchSendImPlayMidiMessage(sysUser.getId().toString(),targetIds,content);
+    }
+
     private void updateDisplay(String roomId, String senderId, String display, Integer isIncludeSender) throws ApiException, Exception {
         roomDao.updateDisplayByRid(roomId, display);
         DisplayMessage displayMessage = new DisplayMessage(display);

+ 7 - 0
mec-im/src/main/java/com/ym/service/RoomService.java

@@ -66,4 +66,11 @@ public interface RoomService {
     public void userIMOfflineKick(String userId);
 
     boolean statusSync(String roomId,String userId) throws Exception;
+
+    /**
+     * 发送节拍器自定义消息
+     * @param userId
+     * @param content
+     */
+    void sendImPlayMidiMessage(String userId, String content,String roomId);
 }

+ 2 - 1
mec-student/src/main/java/com/ym/mec/student/controller/RepairController.java

@@ -40,6 +40,7 @@ public class RepairController extends BaseController {
             return failed("用户信息获取失败");
         }
         queryInfo.setStudentId(sysUser.getId());
+        queryInfo.setPayStatus(2);
         return succeed(studentRepairService.queryPage(queryInfo));
     }
 
@@ -69,7 +70,7 @@ public class RepairController extends BaseController {
 
     @ApiOperation("获取维修技师信息")
     @PostMapping(value = "/getRepairer")
-    public HttpResponseResult getRepairer() throws Exception {
+    public HttpResponseResult getRepairer() {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");

+ 10 - 4
mec-web/src/main/java/com/ym/mec/web/controller/SysUserCashAccountController.java

@@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
 
+import static com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum.FILL_ACCOUNT;
+
 @RequestMapping("userCashAccount")
 @Api(tags = "用户账户服务")
 @RestController
@@ -56,11 +58,15 @@ public class SysUserCashAccountController extends BaseController {
 	@PostMapping("/updateCourseBalance")
 	@PreAuthorize("@pcs.hasPermissions('userCashAccount/updateCourseBalance')")
 	public Object updateCourseBalance(Integer userId, BigDecimal decimal) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed("请重新登录");
-		}
 		sysUserCashAccountService.updateCourseBalance(userId,decimal,decimal,"后台更新课程余额");
 		return succeed();
 	}
+
+	@ApiOperation(value = "更新指定用户的账户可用余额")
+	@PostMapping("/updateBalance")
+	@PreAuthorize("@pcs.hasPermissions('userCashAccount/updateBalance')")
+	public Object updateBalance(Integer userId, BigDecimal decimal) {
+		sysUserCashAccountService.updateBalance(userId,decimal,FILL_ACCOUNT,"后台更新可用余额");
+		return succeed();
+	}
 }

+ 1 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduRepairController.java

@@ -74,6 +74,7 @@ public class EduRepairController extends BaseController {
             return failed("用户信息获取失败");
         }
         queryInfo.setEmployeeId(sysUser.getId());
+        queryInfo.setPayStatus(2);
         return succeed(studentRepairService.queryPage(queryInfo));
     }