Jelajahi Sumber

Merge branch 'online'

yonge 3 tahun lalu
induk
melakukan
4fc771971f

+ 4 - 3
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -236,11 +236,12 @@ public class TeacherController extends BaseController {
 
     @ApiOperation(value = "个人风采保存")
     @PostMapping("/saveTeacherStyle")
-    @PreAuthorize("@pcs.hasPermissions('teacher/saveTeacherStyle')")
-    public HttpResponseResult<TeacherVo> saveTeacherStyle(@RequestBody TeacherDto teacherDto) {
+    @PreAuthorize("@pcs.hasPermissions('teacher/updateStyleVideo')")
+    public HttpResponseResult<Boolean> updateStyleVideo(@RequestBody TeacherDto teacherDto) {
         if (StringUtil.isEmpty(teacherDto.getSubjectId())) {
             return failed("参数异常");
         }
-        return teacherService.saveTeacherStyle(teacherDto);
+        teacherService.updateStyleVideo(teacherDto.getUserId(), teacherDto.getStyleVideo(), teacherDto.getMessage());
+        return succeed();
     }
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/TeacherDto.java

@@ -16,6 +16,8 @@ public class TeacherDto extends Teacher {
     private static final long serialVersionUID = 1L;
     @ApiModelProperty(value = "老师风采视频")
     private List<TeacherStyleVideo> styleVideo;
+    
+    private String message;
 
     public List<TeacherStyleVideo> getStyleVideo() {
         return styleVideo;
@@ -24,4 +26,12 @@ public class TeacherDto extends Teacher {
     public void setStyleVideo(List<TeacherStyleVideo> styleVideo) {
         this.styleVideo = styleVideo;
     }
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
 }

+ 14 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherMusicSheetAuditSearch.java

@@ -3,9 +3,12 @@ package com.yonge.cooleshow.biz.dal.dto.search;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
@@ -47,6 +50,9 @@ public class TeacherMusicSheetAuditSearch extends QueryInfo{
 
     @ApiModelProperty(value = "假删除 0 : 未删除 1:已删除",hidden = true)
     private Boolean delFlag = false;
+    
+    @ApiModelProperty(value = "精品标志(0:否;1:是)")
+    private YesOrNoEnum exquisiteFlag;
 
     public Integer getFirstAuth() {
         return firstAuth;
@@ -111,4 +117,12 @@ public class TeacherMusicSheetAuditSearch extends QueryInfo{
     public void setDelFlag(Boolean delFlag) {
         this.delFlag = delFlag;
     }
+
+	public YesOrNoEnum getExquisiteFlag() {
+		return exquisiteFlag;
+	}
+
+	public void setExquisiteFlag(YesOrNoEnum exquisiteFlag) {
+		this.exquisiteFlag = exquisiteFlag;
+	}
 }

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/SysMessageService.java

@@ -47,6 +47,10 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	 */
 	public void batchSendMessage(MessageSender messageSender, MessageTypeEnum messageType, Map<Long, String> receivers, Date triggerTime,
 			Integer readStatus, String url,String jpushType, Object... args);
+	
+	
+	public void batchSendMessage(MessageSender messageSender, String title, String content, Map<Long, String> receivers, Date triggerTime,
+			Integer readStatus, String url,String jpushType, Object... args);
 
 
 	/**

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherService.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.Teacher;
+import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -101,6 +102,15 @@ public interface TeacherService extends IService<Teacher> {
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.TeacherVo>
      */
     HttpResponseResult<TeacherVo> saveTeacherStyle(TeacherDto teacherDto);
+    
+    /**
+     * 修改老师风采
+     * @param userId
+     * @param styleVideo
+     * @param message
+     * @return
+     */
+    boolean updateStyleVideo(Long userId, List<TeacherStyleVideo> styleVideo, String message);
 
     /***
      * 增加主页浏览量

+ 51 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/SysMessageServiceImpl.java

@@ -14,8 +14,8 @@ import java.util.stream.Collectors;
 import com.alibaba.fastjson.JSON;
 import com.yonge.cooleshow.biz.dal.dto.JumpUrlDto;
 import com.yonge.toolset.base.string.MessageFormatter;
-
 import com.yonge.toolset.mybatis.service.impl.BaseServiceImpl;
+
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,6 +44,7 @@ import com.yonge.cooleshow.common.redis.service.RedisCache;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext.MessageSender;
 import com.yonge.toolset.utils.collection.MapUtil;
+
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
@@ -274,6 +275,55 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 				url, messageConfig.getGroup(),jpushType,messageConfig.getId());
 	}
 
+	@Override
+	public void batchSendMessage(MessageSender messageSender, String title, String content, Map<Long, String> receivers, Date triggerTime, Integer readStatus,
+			String url, String jpushType, Object... args) {
+		if (receivers == null || receivers.size() == 0) {
+			LOGGER.error("接收地址不能为空");
+			return;
+		}
+
+		String[] tos;
+		if (messageSender.getSendMode().equals(MessageSender.JIGUANG.getSendMode())) {
+			tos = new String[receivers.size()];
+			tos = receivers.entrySet().stream().map(longStringEntry -> String.valueOf(longStringEntry.getKey())).collect(Collectors.toList()).toArray(tos);
+		} else {
+			tos = receivers.values().toArray(new String[receivers.size()]);
+		}
+		Date date = new Date();
+		SendStatusEnum status = SendStatusEnum.WAIT;
+		String errorMsg = null;
+		// 立即发送
+		if (triggerTime == null || date.after(triggerTime)) {
+			status = SendStatusEnum.SENDING;
+			try {
+
+				if (isSendRemoteMessage(messageSender)) {
+					errorMsg = messageSenderPluginContext.batchSend(messageSender, title, MessageFormatter.arrayFormat(content, args), tos, url, jpushType,
+							"default", null);
+					if (StringUtils.isEmpty(errorMsg)) {
+						status = SendStatusEnum.SUCCESSED;
+					} else {
+						status = SendStatusEnum.FAILED;
+					}
+
+				}
+			} catch (Exception e) {
+				status = SendStatusEnum.FAILED;
+				errorMsg = e.getMessage();
+				LOGGER.warn("消息发送失败", e);
+			}
+		}
+		MessageSendMode mode = MessageSendMode.SMS;
+		if (messageSender.getSendMode().equals("PUSH")) {
+			mode = MessageSendMode.PUSH;
+		} else if (messageSender.getSendMode().equals("EMAIL")) {
+			mode = MessageSendMode.EMAIL;
+		}
+		addMessage(receivers, title, MessageFormatter.arrayFormat(content, args), triggerTime, mode, status, errorMsg, readStatus, url, "SYSTEM", jpushType,
+				null);
+	}
+
 	private boolean isSendRemoteMessage(MessageSender messageSender) {
 		if (messageSender.getSendMode().equals(MessageSender.JIGUANG.getSendMode()) && !debugJigaung) {
 			return true;

+ 64 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -4,6 +4,7 @@ import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.TEACHER_TEMP
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
@@ -13,6 +14,8 @@ import javax.annotation.Resource;
 
 import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@@ -47,6 +50,7 @@ import com.yonge.cooleshow.biz.dal.enums.TeacherTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.StudentStarService;
 import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthMusicianRecordService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
@@ -67,12 +71,16 @@ import com.yonge.cooleshow.common.enums.UserFirstTimeTypeEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.util.StringUtil;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
 import com.yonge.toolset.utils.string.ValueUtil;
 
 @Service
 public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> implements TeacherService {
+	
+	private final static Logger log = LoggerFactory.getLogger(TeacherServiceImpl.class);
+	
     @Autowired
     private TeacherStyleVideoService teacherStyleVideoService;
     @Resource
@@ -103,6 +111,9 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     
     @Autowired
     private StudentService studentService;
+    
+    @Autowired
+    private SysMessageService sysMessageService;
 
     @Override
     public TeacherVo detail(Long userId) {
@@ -481,6 +492,59 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
+	public boolean updateStyleVideo(Long userId, List<TeacherStyleVideo> styleVideo, String message) {
+
+        Map<Long, TeacherStyleVideo> oldMap = teacherStyleVideoService.list(Wrappers.<TeacherStyleVideo>lambdaQuery()
+                        .eq(TeacherStyleVideo::getUserId, userId))
+                .stream().collect(Collectors.toMap(TeacherStyleVideo::getId, o -> o));
+
+        List<TeacherStyleVideo> createList = styleVideo.stream().filter(o -> o.getId() == null)
+                .collect(Collectors.toList());
+
+
+        createList.forEach(o -> {
+            o.setUserId(userId);
+        });
+
+        List<Long> oldIds = styleVideo.stream().filter(o -> o.getId() != null)
+                .map(TeacherStyleVideo::getId).collect(Collectors.toList());
+        //删除旧视频
+        teacherStyleVideoService.removeByUserIdAndOldIds(userId, oldIds);
+        //保存新视频
+        teacherStyleVideoService.batchAddStyleVideo(createList);
+
+        styleVideo.removeAll(createList);
+
+        //修改视频封面
+        styleVideo.forEach(o -> {
+            TeacherStyleVideo old = oldMap.get(o.getId());
+            if (!o.getCover().equals(old.getCover())) {
+                teacherStyleVideoService.update(Wrappers.<TeacherStyleVideo>lambdaUpdate()
+                        .set(TeacherStyleVideo::getCover, o.getCover())
+                        .eq(TeacherStyleVideo::getId, o.getId()));
+            }
+        });
+        
+        //发送推送
+        try {
+            //  发送消息
+            SysUser user = userFeignService.queryUserById(userId);
+
+            Map<Long, String> receivers = new HashMap<>();
+            receivers.put(userId, user.getPhone());
+
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, "系统消息", message, receivers, null,
+                    0, null, ClientEnum.STUDENT.getCode());
+
+        } catch (Exception e) {
+            log.error("[老师风采修改]发送消息失败--> {}", e.fillInStackTrace());
+        }
+
+		return true;
+	}
+
+	@Override
     public HttpResponseResult<Boolean> addHomeBrowse(Long userId) {
         Integer num = baseMapper.addHomeBrowse(userId);
         return HttpResponseResult.succeed(num > 0);

+ 3 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -549,6 +549,9 @@
             <if test="param.firstAuth != null">
                 and msar.first_auth_ = #{param.firstAuth}
             </if>
+	        <if test="param.exquisiteFlag != null">
+	            and ms.exquisite_flag_ = #{param.exquisiteFlag}
+	        </if>
         </where>
         order by field(ms.audit_status_,'DOING') desc,  ms.submit_audit_time_ desc
     </select>