Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

weifanli 3 anni fa
parent
commit
6d5d366c5e

+ 1 - 1
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/core/filter/UsernameAuthenticationFilter.java

@@ -81,7 +81,7 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 			clientId = "SYSTEM";
 		}
 		if (!userInfo.getSysUser().getUserType().contains(clientId)) {
-			throw new LockedException("用户不存在,请联系教务老师");
+			throw new LockedException("用户不存在");
 		}
 
 		UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(SecurityConstants.USERNAME_PRINCIPAL_PREFIX + username,

+ 24 - 3
cooleshow-cms/src/main/java/com/yonge/cooleshow/cms/controller/NewsController.java

@@ -90,10 +90,23 @@ public class NewsController extends BaseController {
 		if (newsInfo.getSubType() == null && newsInfo.getType() == 6) {
 			return failed("章节不能为空");
 		}
-		// 1 2 3 4 5 6
-		if (StringUtil.isEmpty(newsInfo.getCoverImage())) {
-			return failed("封面不能为空");
+		// 1 2 3 4 5
+		if (newsInfo.getType() != 2) {
+			if (StringUtil.isEmpty(newsInfo.getCoverImage())) {
+				return failed("封面不能为空");
+			}
+		} else  {
+			if ( "IMAGE".equals(newsInfo.getAttribute2())) {
+				if (StringUtil.isEmpty(newsInfo.getCoverImage())) {
+					return failed("封面不能为空");
+				}
+			} else if ("VIDEO".equals(newsInfo.getAttribute2())){
+				if (StringUtil.isEmpty(newsInfo.getLinkUrl())) {
+					return failed("视频地址不能为空");
+				}
+			}
 		}
+
 		// 1 4 6
 		if (newsInfo.getType() == 1 ||newsInfo.getType() == 4 || newsInfo.getType() == 6) {
 			if (newsInfo.getOrder() == null) {
@@ -145,10 +158,18 @@ public class NewsController extends BaseController {
 		if(NewsStatusEnum.SHOW.getCode().equals(sysNewsInformationDto.getStatus().getCode())) {
 			return failed("启用状态下,不可修改");
 		}
+		if (newsInfo.getType() == 2) {
+			if ( "IMAGE".equals(newsInfo.getAttribute2())) {
+				newsInfo.setLinkUrl("");
+			} else if ("VIDEO".equals(newsInfo.getAttribute2())){
+				newsInfo.setCoverImage("");
+			}
+		}
 		HttpResponseResult<Object> check = check(newsInfo);
 		if (!check.getStatus()) {
 			return check;
 		}
+
 		newsInfo.setStatus(NewsStatusEnum.HIDDEN);
 		newsInfo.setUpdateTime(new Date());
 		newsInfo.setUpdateBy(sysUser.getId());

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SubjectDao.java

@@ -31,7 +31,7 @@ public interface SubjectDao extends BaseDAO<Long, Subject> {
      * @updateTime 2022/4/6 11:40
      * @return: java.util.List<com.yonge.cooleshow.biz.dal.entity.Subject>
      */
-    List<Subject> findByParentId(@Param("parentId") Long parentId, @Param("delFlag") Boolean delFlag);
+    List<Subject> findByParentId(@Param("parentId") Long parentId);
 
     /***
      * 通过id删除

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/SysMessageDao.java

@@ -52,4 +52,6 @@ public interface SysMessageDao extends BaseDAO<Long, SysMessage> {
 	 * 修改单个消息状态
 	 */
 	public int updateOneStatus(@Param("id") Long id, @Param("status") int status);
+
+    String selectConfigUrl(String messageType);
 }

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

@@ -126,4 +126,5 @@ public interface SysMessageService extends BaseService<Long, SysMessage> {
 	
 	public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type);
 
+	String selectConfigUrl(String messageType);
 }

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

@@ -936,6 +936,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         }
         courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
         log.info("buyPracticeCourseSuccess ok");
+
+
     }
 
     /**

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

@@ -48,6 +48,10 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
 
     @Override
 	public int deleteById(Long id) {
+    	List<Subject> subjectList = subjectDao.findByParentId(id);
+    	if(subjectList != null && subjectList.size() > 0){
+			throw new BizException("该分类下已创建下级,无法删除");
+    	}
 		return subjectDao.deleteById(id);
 	}
 
@@ -113,7 +117,7 @@ public class SubjectServiceImpl extends BaseServiceImpl<Long, Subject> implement
     private Subject getTree(Subject sub, Boolean delFlag) {
         //得到根节点对象
         //获取子节点list
-        List<Subject> subjects = subjectDao.findByParentId(sub.getId(), delFlag);
+        List<Subject> subjects = subjectDao.findByParentId(sub.getId());
         //如果存在子节点
         if (subjects != null && subjects.size() > 0) {
             //将子节点list放入父节点对象

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

@@ -409,4 +409,9 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
 	public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type) {
 		return sysMessageDao.queryUserInRecentMinList(mobile, recentMin, type);
 	}
+
+	@Override
+	public String selectConfigUrl(String messageType) {
+		return sysMessageDao.selectConfigUrl(messageType);
+	}
 }

+ 32 - 9
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonPurchaseRecordServiceImpl.java

@@ -11,11 +11,9 @@ import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonPurchaseRecordDao;
-import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
-import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 import com.yonge.cooleshow.biz.dal.service.UserAccountService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderDetailVo;
@@ -23,6 +21,7 @@ import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.obj.ObjectUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,6 +58,8 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
     private SysConfigService sysConfigService;
     @Autowired
     private UserOrderDao userOrderDao;
+    @Autowired
+    private SysMessageService sysMessageService;
 
     public VideoLessonPurchaseRecordDao getDao() {
         return videoLessonPurchaseRecordDao;
@@ -89,10 +90,10 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         }
 
         //校验课程是否购买
-        VideoLessonPurchaseRecord isAlreadyBuy= videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
+        VideoLessonPurchaseRecord isAlreadyBuy = videoLessonPurchaseRecordDao.selectOne(Wrappers.<VideoLessonPurchaseRecord>lambdaQuery()
                 .eq(VideoLessonPurchaseRecord::getStudentId, studentId)
                 .eq(VideoLessonPurchaseRecord::getVideoLessonGroupId, groupId));
-        if (!ObjectUtil.isEmpty(isAlreadyBuy)){
+        if (!ObjectUtil.isEmpty(isAlreadyBuy)) {
             throw new BizException("已购买过该课程");
         }
 
@@ -141,7 +142,7 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
             throw new BizException("订单不存在!");
         }
         //修改支付状态
-        videoLessonPurchaseRecordDao.updateStatus(orderNo,userOrder.getStatus().getCode());
+        videoLessonPurchaseRecordDao.updateStatus(orderNo, userOrder.getStatus().getCode());
 
         //查询直播课服务费
         String videoServiceRateStr = sysConfigService.findConfigValue(SysConfigConstant.VIDEO_LESSON_SERVICE_FEE);
@@ -149,11 +150,12 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
 
         //查询组信息
         VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(purchaseRecord.getVideoLessonGroupId());
-
+        Long teacherId = lessonGroup.getTeacherId();
+        Long studentId = purchaseRecord.getStudentId();
         //记录流水
         BigDecimal payMoney = purchaseRecord.getPayMoney();//学生支付金额
         UserAccountRecordDto userAccountRecord = new UserAccountRecordDto();
-        userAccountRecord.setUserId(lessonGroup.getTeacherId());
+        userAccountRecord.setUserId(teacherId);
         //扣除手续费后所得金额
         userAccountRecord.setTransAmount(payMoney.subtract(payMoney.multiply(liveServiceRate)).setScale(2, RoundingMode.HALF_UP));
         userAccountRecord.setInOrOut(InOrOutEnum.IN);
@@ -163,6 +165,27 @@ public class VideoLessonPurchaseRecordServiceImpl extends ServiceImpl<VideoLesso
         userAccountRecord.setOrderNo(orderNo);
         userAccountService.accountChange(userAccountRecord);
         log.info("buyVideoCourseSuccess ok");
+
+        //查询老师&学生信息
+        SysUser teacher = sysUserFeignService.queryUserById(teacherId);
+        SysUser student = sysUserFeignService.queryUserById(studentId);
+
+        //消息接收者(Key:用户编号 value:消息接收对象)
+        Map<Long, String> teacherReceivers = new HashMap<>();
+        teacherReceivers.put(teacherId, teacher.getPhone());
+        Map<Long,String> studentReceivers = new HashMap<>();
+        studentReceivers.put(studentId, student.getPhone());
+
+        //消息推送-老师端
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.STUDENT_BUY_VIDEO,
+                teacherReceivers, null, 0, null, ClientEnum.TEACHER.getCode(),
+                student.getUsername(), lessonGroup.getLessonName());
+
+        //消息推送-学生端
+        String url = sysMessageService.selectConfigUrl(MessageTypeEnum.VIDEO_BUY.getCode());
+        sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIDEO_BUY,
+                studentReceivers, null, 0, null, ClientEnum.STUDENT.getCode(),
+                teacher.getUsername(), lessonGroup.getLessonName(),url);
     }
 
     /**

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml

@@ -70,7 +70,7 @@
 	</update>
 
     <delete id="deleteById">
-		update subject set del_flag_ = 1 where id_ = #{id} or parent_subject_id_ = #{id}
+		update subject set del_flag_ = 1 where id_ = #{id}
 	</delete>
 
     <!-- 分页查询 -->

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

@@ -202,4 +202,7 @@
 		from sys_message where receiver_ = #{mobile} and type_ = #{type} and <![CDATA[DATE_ADD(send_time_,
 		INTERVAL #{recentMin} MINUTE) >= now()]]>
 	</select>
+	<select id="selectConfigUrl" resultType="java.lang.String" parameterType="java.lang.String">
+		SELECT url_ FROM sys_message_config WHERE message_type_=#{messageType}
+	</select>
 </mapper>