|  | @@ -3,12 +3,20 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.PianoRoomTime;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.PianoRoomTimeService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.vo.VideoLessonShelvesVo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.enums.CacheNameEnum;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.base.exception.BizException;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.payment.util.DistributedLock;
 | 
	
		
			
				|  |  | +import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 | 
	
		
			
				|  |  |  import org.redisson.api.RedissonClient;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
	
		
			
				|  | @@ -21,7 +29,10 @@ import com.yonge.cooleshow.biz.dal.dao.PianoRoomChangeRecordDao;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.PianoRoomChangeRecordService;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  |  import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
	
		
			
				|  | @@ -31,6 +42,10 @@ public class PianoRoomChangeRecordServiceImpl extends ServiceImpl<PianoRoomChang
 | 
	
		
			
				|  |  |      private RedissonClient redissonClient;
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private PianoRoomTimeService pianoRoomTimeService;
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private SysUserFeignService sysUserFeignService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysMessageService sysMessageService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public PianoRoomChangeRecordVo detail(Long id) {
 | 
	
	
		
			
				|  | @@ -69,13 +84,36 @@ public class PianoRoomChangeRecordServiceImpl extends ServiceImpl<PianoRoomChang
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (pianoRoomTime.getRemainTime() < 0) {
 | 
	
		
			
				|  |  | -                                throw new BizException("时长余额不足");
 | 
	
		
			
				|  |  | +                                throw new BizException("扣除时长超过老师可用时长");
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                              pianoRoomTime.setUpdateTime(new Date());
 | 
	
		
			
				|  |  |                              pianoRoomTimeService.updateById(pianoRoomTime);
 | 
	
		
			
				|  |  |                              return null;
 | 
	
		
			
				|  |  |                          }, null, 10l);
 | 
	
		
			
				|  |  | +        //琴房推送
 | 
	
		
			
				|  |  | +        sendMessage(pianoRoomChangeRecord);
 | 
	
		
			
				|  |  |          return true;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void sendMessage(PianoRoomChangeRecord record) {
 | 
	
		
			
				|  |  | +        // 发送课程下架通知
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            SysUser user = sysUserFeignService.queryUserById(record.getUserId());
 | 
	
		
			
				|  |  | +            Map<Long, String> receivers = new HashMap<>();
 | 
	
		
			
				|  |  | +            receivers.put(user.getId(), user.getPhone());
 | 
	
		
			
				|  |  | +            if(InOrOutEnum.IN.equals(record.getInOrOut())){
 | 
	
		
			
				|  |  | +                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PIANO_ROOM_TIMES_ADD,
 | 
	
		
			
				|  |  | +                        receivers, null, 0, null, ClientEnum.TEACHER.getCode(),
 | 
	
		
			
				|  |  | +                        record.getTimes(), record.getReason());
 | 
	
		
			
				|  |  | +            }else if(InOrOutEnum.OUT.equals(record.getInOrOut())){
 | 
	
		
			
				|  |  | +                sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PIANO_ROOM_TIMES_SUB,
 | 
	
		
			
				|  |  | +                        receivers, null, 0, null, ClientEnum.TEACHER.getCode(),
 | 
	
		
			
				|  |  | +                        record.getTimes(), record.getReason());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } catch (Exception e) {
 | 
	
		
			
				|  |  | +            log.warn("视频课下架推送发送失败,{}", e.getMessage());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 |