瀏覽代碼

新增节拍器自定义消息

zouxuan 5 年之前
父節點
當前提交
2277b991b3

+ 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 消息主题

+ 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;
     }
 

+ 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);

+ 27 - 1
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
@@ -1357,12 +1363,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);
 }

+ 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();
+	}
 }