Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/AppConstant.java
liweifan 2 years ago
parent
commit
c200d0031e
60 changed files with 1486 additions and 229 deletions
  1. 2 2
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java
  2. 1 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/CmsFeignService.java
  3. 3 3
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallAdminFeignService.java
  4. 1 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallPortalFeignService.java
  5. 3 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/StudentFeignService.java
  6. 2 1
      cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/TeacherFeignService.java
  7. 4 3
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/config/BbsRedisConfig.java
  8. 0 12
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/BbsArticleController.java
  9. 82 45
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/BbsPrivateMessageController.java
  10. 42 62
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/BbsReplyController.java
  11. 144 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/HomeController.java
  12. 34 8
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dao/BbsPrivateMessageDao.java
  13. 9 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dao/BbsReplyAuthRecordDao.java
  14. 37 8
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dao/BbsReplyDao.java
  15. 48 1
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/BbsPrivateMessageDto.java
  16. 56 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/MessageReadDto.java
  17. 82 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/PrivateMessagePersonVo.java
  18. 63 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/ReplyAuditDto.java
  19. 11 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsCollectSearch.java
  20. 25 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsFollowSearch.java
  21. 12 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsLikeSearch.java
  22. 25 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsPrivateMessageSearch.java
  23. 23 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsReplySearch.java
  24. 20 2
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/entity/BbsPrivateMessage.java
  25. 103 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/entity/BbsReplyAuthRecord.java
  26. 2 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsCollectService.java
  27. 27 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsPrivateMessageService.java
  28. 20 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsReplyAuthRecordService.java
  29. 37 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsReplyService.java
  30. 19 1
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/impl/BbsPrivateMessageServiceImpl.java
  31. 38 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/impl/BbsReplyAuthRecordServiceImpl.java
  32. 41 1
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/impl/BbsReplyServiceImpl.java
  33. 37 1
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsCollectVo.java
  34. 24 1
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsFollowVo.java
  35. 100 0
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsReplyAuditVo.java
  36. 17 5
      cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsReplyVo.java
  37. 4 4
      cooleshow-bbs/src/main/resources/config/mybatis/BbsArticleMapper.xml
  38. 11 1
      cooleshow-bbs/src/main/resources/config/mybatis/BbsCollectMapper.xml
  39. 24 0
      cooleshow-bbs/src/main/resources/config/mybatis/BbsFollowMapper.xml
  40. 7 0
      cooleshow-bbs/src/main/resources/config/mybatis/BbsLikeMapper.xml
  41. 49 0
      cooleshow-bbs/src/main/resources/config/mybatis/BbsPrivateMessageMapper.xml
  42. 6 0
      cooleshow-bbs/src/main/resources/config/mybatis/BbsReplyAuthRecordMapper.xml
  43. 79 0
      cooleshow-bbs/src/main/resources/config/mybatis/BbsReplyMapper.xml
  44. 2 1
      cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/AppConstant.java
  45. 2 6
      cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherEarningTask.java
  46. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleStudentPaymentDao.java
  47. 1 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomService.java
  48. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetAuthRecordService.java
  49. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  50. 22 35
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java
  51. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetAuthRecordServiceImpl.java
  52. 10 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  53. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java
  54. 2 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  55. 6 6
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml
  56. 1 1
      cooleshow-user/user-biz/src/main/resources/config/mybatis/ImNetworkRoomMemberMapper.xml
  57. 5 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  58. 6 3
      cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomController.java
  59. 2 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java
  60. 4 0
      toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

+ 2 - 2
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/AdminFeignService.java

@@ -15,8 +15,8 @@ import org.springframework.web.bind.annotation.PostMapping;
  * @author liujunchi
  * @date 2022-05-06
  */
-@FeignClient(name = AppConstant.APPLICATION_ADMIN, configuration = FeignConfiguration.class,
-             fallback = AdminFeignServiceFallback.class)
+@FeignClient(name = AppConstant.APPLICATION_ADMIN + AppConstant.SERVER, configuration = FeignConfiguration.class,
+        fallback = AdminFeignServiceFallback.class)
 public interface AdminFeignService {
     /***
      * 轮询用户订单

+ 1 - 1
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/CmsFeignService.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping;
  * @date 2022-04-29
  */
 
-@FeignClient(name = AppConstant.APPLICATION_CMS, configuration = FeignConfiguration.class, fallback = CmsFeignServiceFallback.class)
+@FeignClient(name = AppConstant.APPLICATION_CMS + AppConstant.SERVER, configuration = FeignConfiguration.class, fallback = CmsFeignServiceFallback.class)
 public interface CmsFeignService {
 
     /**

+ 3 - 3
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallAdminFeignService.java

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import java.util.List;
 import java.util.Map;
 
-@FeignClient(name = AppConstant.APPLICATION_MALL_ADMIN, configuration = FeignConfiguration.class,
+@FeignClient(name = AppConstant.APPLICATION_MALL_ADMIN + AppConstant.SERVER, configuration = FeignConfiguration.class,
         fallback = MallAdminFeignServiceFallback.class)
 public interface MallAdminFeignService {
 
@@ -27,11 +27,11 @@ public interface MallAdminFeignService {
      *              userIdList=[1,2]                    --用户id集合
      * }
      * @updateTime 2022/5/5 10:57
-     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.util.List<java.util.Map<java.lang.String,java.lang.Object>>>
+     * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<java.util.List < java.util.Map < java.lang.String, java.lang.Object>>>
      *      {
      *          userId:1,                               --用户id
      *          receiveTime:毫秒值        --订单完成时间
      *      }
      */
-    HttpResponseResult<List<Map<String,Object>>> userOrderInfoList(@RequestBody Map<String,Object> param);
+    HttpResponseResult<List<Map<String, Object>>> userOrderInfoList(@RequestBody Map<String, Object> param);
 }

+ 1 - 1
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/MallPortalFeignService.java

@@ -6,7 +6,7 @@ import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 
-@FeignClient(name = AppConstant.APPLICATION_MALL_PORTAL, configuration = FeignConfiguration.class,
+@FeignClient(name = AppConstant.APPLICATION_MALL_PORTAL + AppConstant.SERVER, configuration = FeignConfiguration.class,
         fallback = MallPortalFeignServiceFallback.class)
 public interface MallPortalFeignService {
 

+ 3 - 1
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/StudentFeignService.java

@@ -1,12 +1,13 @@
 package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.api.feign.fallback.StudentFeignServiceFallback;
+import com.yonge.cooleshow.common.constant.AppConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 
-@FeignClient(name = "student-server", configuration = FeignConfiguration.class, fallback = StudentFeignServiceFallback.class)
+@FeignClient(name = AppConstant.APPLICATION_STUDENT + AppConstant.SERVER, configuration = FeignConfiguration.class, fallback = StudentFeignServiceFallback.class)
 public interface StudentFeignService {
 
     /***
@@ -17,6 +18,7 @@ public interface StudentFeignService {
      */
     @GetMapping(value = "/task/queryStudentTotal")
     Object queryStudentTotal();
+
     /***
      * 半小时一次
      * @author liweifan

+ 2 - 1
cooleshow-api/src/main/java/com/yonge/cooleshow/api/feign/TeacherFeignService.java

@@ -1,12 +1,13 @@
 package com.yonge.cooleshow.api.feign;
 
 import com.yonge.cooleshow.api.feign.fallback.TeacherFeignServiceFallback;
+import com.yonge.cooleshow.common.constant.AppConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.feign.config.FeignConfiguration;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 
-@FeignClient(name = "teacher-server", configuration = FeignConfiguration.class, fallback = TeacherFeignServiceFallback.class)
+@FeignClient(name = AppConstant.APPLICATION_TEACHER + AppConstant.SERVER, configuration = FeignConfiguration.class, fallback = TeacherFeignServiceFallback.class)
 public interface TeacherFeignService {
 
     /***

+ 4 - 3
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/config/RedisConfig.java → cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/config/BbsRedisConfig.java

@@ -11,9 +11,9 @@ import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
 import org.springframework.data.redis.serializer.StringRedisSerializer;
 
 @Configuration
-public class RedisConfig {
-    @Bean
-    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
+public class BbsRedisConfig {
+    @Bean(name = "redis1")
+    public RedisTemplate<String, Object> rcif(RedisConnectionFactory factory) {
         //为了开发方便一般直接使用 <String, Object>
         RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
         template.setConnectionFactory(factory);
@@ -37,3 +37,4 @@ public class RedisConfig {
         return template;
     }
 }
+

+ 0 - 12
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/BbsArticleController.java

@@ -78,16 +78,4 @@ public class BbsArticleController extends BaseController {
         bbsArticleService.articleTop(article);
         return succeed();
     }
-
-    /**
-     * 首页
-     */
-    @PostMapping("/home")
-    @ApiOperation(value = "首页", notes = "传入bbsArticleSearch")
-    public HttpResponseResult<PageInfo<BbsArticleVo>> home(@RequestBody BbsArticleSearch query) {
-        query.setDelFlag(false);
-        query.setStatus(ArticleEnum.PASS);
-        IPage<BbsArticleVo> pages = bbsArticleService.selectPage(PageUtil.getPage(query), query);
-        return succeed(PageUtil.pageInfo(pages));
-    }
 }

+ 82 - 45
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/BbsPrivateMessageController.java

@@ -1,6 +1,13 @@
 package com.yonge.cooleshow.bbs.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.bbs.dto.BbsPrivateMessageDto;
+import com.yonge.cooleshow.bbs.dto.MessageReadDto;
+import com.yonge.cooleshow.bbs.dto.PrivateMessagePersonVo;
+import com.yonge.cooleshow.bbs.enums.YesOrNoEnum;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -19,6 +26,10 @@ import com.yonge.cooleshow.bbs.dto.search.BbsPrivateMessageSearch;
 import com.yonge.cooleshow.bbs.entity.BbsPrivateMessage;
 import com.yonge.cooleshow.bbs.service.BbsPrivateMessageService;
 
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
 @RestController
 @RequestMapping("/bbsPrivateMessage")
 @Api(value = "私信", tags = "私信")
@@ -27,58 +38,84 @@ public class BbsPrivateMessageController extends BaseController {
     @Autowired
     private BbsPrivateMessageService bbsPrivateMessageService;
 
-	/**
-     * 查询单条
-     */
-    @GetMapping("/detail/{id}")
-    @ApiOperation(value = "详情", notes = "传入id")
-    public HttpResponseResult<BbsPrivateMessageVo> detail(@PathVariable("id") Long id) {
-    	return succeed(bbsPrivateMessageService.detail(id));
-	}
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
     
-    /**
-     * 查询分页
-     */
-    @PostMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入bbsPrivateMessageSearch")
-    public HttpResponseResult<PageInfo<BbsPrivateMessageVo>> page(@RequestBody BbsPrivateMessageSearch query) {
-		IPage<BbsPrivateMessageVo> pages = bbsPrivateMessageService.selectPage(PageUtil.getPage(query), query);
+
+    @PostMapping("/page/person")
+    @ApiOperation(value = "私信人员列表", notes = "传入bbsPrivateMessageSearch")
+    public HttpResponseResult<PageInfo<PrivateMessagePersonVo>> pagePerson(@RequestBody BbsPrivateMessageSearch query) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null || user.getId() == null) {
+			throw  new BizException("请重新登录");
+		}
+		query.setUserId(user.getId());
+		IPage<PrivateMessagePersonVo> pages = bbsPrivateMessageService.selectPersonPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
 	}
-    
-    /**
-	 * 新增
-	 */
+
+	@PostMapping("/page/message")
+	@ApiOperation(value = "私信人员消息列表", notes = "传入bbsPrivateMessageSearch")
+	public HttpResponseResult<PageInfo<BbsPrivateMessageDto>> pageMessage(@RequestBody @Valid BbsPrivateMessageSearch query) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null || user.getId() == null) {
+			throw  new BizException("请重新登录");
+		}
+		SysUser receiverUser = sysUserFeignService.queryUserById(query.getReceiverUserId());
+		if (receiverUser == null || user.getId() == null) {
+			throw  new BizException("私信接收方用户不存在");
+		}
+		query.setUserId(user.getId());
+		IPage<BbsPrivateMessageDto> pages = bbsPrivateMessageService.selectMessagePage(PageUtil.getPage(query), query);
+		List<BbsPrivateMessageDto> collect = pages.getRecords().stream().peek(bbsPrivateMessageDto -> {
+			bbsPrivateMessageDto.setReceiverAvatar(receiverUser.getAvatar());
+			bbsPrivateMessageDto.setReceiverName(receiverUser.getUsername());
+			bbsPrivateMessageDto.setUserName(user.getUsername());
+			bbsPrivateMessageDto.setUserAvatar(user.getAvatar());
+
+		}).collect(Collectors.toList());
+		pages.setRecords(collect);
+		return succeed(PageUtil.pageInfo(pages));
+	}
+
+
 	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入bbsPrivateMessage")
+	@ApiOperation(value = "发送私信", notes = "传入bbsPrivateMessage")
 	public HttpResponseResult save(@Valid @RequestBody BbsPrivateMessage bbsPrivateMessage) {
-    	return status(bbsPrivateMessageService.save(bbsPrivateMessage));
+
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null || user.getId() == null) {
+			throw  new BizException("请重新登录");
+		}
+
+		SysUser receiverUser = sysUserFeignService.queryUserById(bbsPrivateMessage.getReceiverUserId());
+		if (receiverUser == null || user.getId() == null) {
+			throw  new BizException("私信接收方用户不存在");
+		}
+		bbsPrivateMessage.setSendUserId(user.getId());
+		bbsPrivateMessage.setCreatedTime(new Date());
+		bbsPrivateMessage.setReadFlag(YesOrNoEnum.NO);
+		bbsPrivateMessageService.save(bbsPrivateMessage);
+    	return succeed(bbsPrivateMessage);
 	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入bbsPrivateMessage")
-	public HttpResponseResult update(@Valid @RequestBody BbsPrivateMessage bbsPrivateMessage) {
-        return status(bbsPrivateMessageService.updateById(bbsPrivateMessage));
+
+
+	@PostMapping("/read")
+	@ApiOperation(value = "设置已读", notes = "传入bbsPrivateMessage")
+	public HttpResponseResult read(@RequestBody @Valid MessageReadDto readDto) {
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null || user.getId() == null) {
+			throw  new BizException("请重新登录");
+		}
+		readDto.setUserId(user.getId());
+		return status(bbsPrivateMessageService.read(readDto));
 	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入bbsPrivateMessage")
-	public HttpResponseResult submit(@Valid @RequestBody BbsPrivateMessage bbsPrivateMessage) {
-        return status(bbsPrivateMessageService.saveOrUpdate(bbsPrivateMessage));
-    }
-
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+
+
+
+	@PostMapping("/remove/{ids}")
+	@ApiOperation(value = "测回消息", notes = "传入ids")
+	public HttpResponseResult remove(@PathVariable String ids) {
         if (StringUtil.isEmpty(ids)) {
 			return failed("参数不能为空");
 		}

+ 42 - 62
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/BbsReplyController.java

@@ -1,87 +1,67 @@
 package com.yonge.cooleshow.bbs.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.bbs.dto.ReplyAuditDto;
+import com.yonge.cooleshow.bbs.dto.search.BbsReplySearch;
+import com.yonge.cooleshow.bbs.service.BbsReplyService;
+import com.yonge.cooleshow.bbs.vo.BbsReplyAuditVo;
+import com.yonge.cooleshow.bbs.vo.BbsReplyVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-
+import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
-
 import com.yonge.toolset.utils.string.StringUtil;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 
-import com.yonge.cooleshow.bbs.vo.BbsReplyVo;
-import com.yonge.cooleshow.bbs.dto.search.BbsReplySearch;
-import com.yonge.cooleshow.bbs.entity.BbsReply;
-import com.yonge.cooleshow.bbs.service.BbsReplyService;
-
 @RestController
 @RequestMapping("/bbsReply")
-@Api(value = "文章评论", tags = "文章评论")
+@Api(value = "文章评论", tags = "内容评论")
 public class BbsReplyController extends BaseController {
 
     @Autowired
     private BbsReplyService bbsReplyService;
 
-	/**
-     * 查询单条
-     */
-    @GetMapping("/detail/{id}")
-    @ApiOperation(value = "详情", notes = "传入id")
-    public HttpResponseResult<BbsReplyVo> detail(@PathVariable("id") Long id) {
-    	return succeed(bbsReplyService.detail(id));
-	}
-    
-    /**
-     * 查询分页
-     */
-    @PostMapping("/page")
-    @ApiOperation(value = "查询分页", notes = "传入bbsReplySearch")
-    public HttpResponseResult<PageInfo<BbsReplyVo>> page(@RequestBody BbsReplySearch query) {
-		IPage<BbsReplyVo> pages = bbsReplyService.selectPage(PageUtil.getPage(query), query);
-        return succeed(PageUtil.pageInfo(pages));
-	}
-    
-    /**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入bbsReply")
-	public HttpResponseResult save(@Valid @RequestBody BbsReply bbsReply) {
-    	return status(bbsReplyService.save(bbsReply));
-	}
-    
-    /**
-	 * 修改
-	 */
-	@PostMapping("/update")
-	@ApiOperation(value = "修改", notes = "传入bbsReply")
-	public HttpResponseResult update(@Valid @RequestBody BbsReply bbsReply) {
-        return status(bbsReplyService.updateById(bbsReply));
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+
+	@PostMapping("/audit/list")
+	@ApiOperation(value = "后台-评论审核列表")
+	public HttpResponseResult<PageInfo<BbsReplyAuditVo>> auditList(@RequestBody BbsReplySearch query) {
+
+		IPage<BbsReplyAuditVo> pages = bbsReplyService.selectAuditListPage(PageUtil.getPage(query), query);
+		return succeed(PageUtil.pageInfo(pages));
 	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入bbsReply")
-	public HttpResponseResult submit(@Valid @RequestBody BbsReply bbsReply) {
-        return status(bbsReplyService.saveOrUpdate(bbsReply));
-    }
 
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
+	@PostMapping("/remove/{id}")
+	@ApiOperation(value = "后台-评论删除", notes = "传入id")
+	public HttpResponseResult remove(@PathVariable Long id) {
+        if (id != null) {
 			return failed("参数不能为空");
 		}
-		return status(bbsReplyService.removeByIds(StringUtil.toLongList(ids)));
+		return status(bbsReplyService.removeById(id));
+	}
+
+
+
+	@PostMapping("/audit")
+	@ApiOperation(value = "后台-评论审核")
+	public HttpResponseResult audit(@RequestBody @Valid ReplyAuditDto auditDto) {
+
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (user == null || null == user.getId()) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		auditDto.setVerityUserId(user.getId());
+		return status(bbsReplyService.audit(auditDto));
 	}
 }

+ 144 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/controller/HomeController.java

@@ -0,0 +1,144 @@
+package com.yonge.cooleshow.bbs.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.bbs.dto.search.*;
+import com.yonge.cooleshow.bbs.entity.BbsArticle;
+import com.yonge.cooleshow.bbs.enums.ArticleEnum;
+import com.yonge.cooleshow.bbs.service.*;
+import com.yonge.cooleshow.bbs.valid.AddGroup;
+import com.yonge.cooleshow.bbs.vo.*;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.utils.string.StringUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+@RestController
+@RequestMapping("/home")
+@Api(value = "个人中心", tags = "个人中心")
+public class HomeController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private BbsArticleService bbsArticleService;
+
+    @Autowired
+    private BbsReplyService replyService;
+
+    @Autowired
+    private BbsCollectService collectService;
+
+    @Autowired
+    private BbsLikeService likeService;
+
+    @Autowired
+    private BbsFollowService followService;
+
+	@PostMapping("")
+	@ApiOperation(value = "首页", notes = "传入bbsArticleSearch")
+	public HttpResponseResult<PageInfo<BbsArticleVo>> home(@RequestBody BbsArticleSearch query) {
+		query.setDelFlag(false);
+		query.setStatus(ArticleEnum.PASS);
+		IPage<BbsArticleVo> pages = bbsArticleService.selectPage(PageUtil.getPage(query), query);
+		return succeed(PageUtil.pageInfo(pages));
+	}
+
+
+    @PostMapping("/article")
+    @ApiOperation(value = "文章列表")
+    public HttpResponseResult<PageInfo<BbsArticleVo>> articleList(@RequestBody BbsArticleSearch query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || user.getId() == null) {
+            throw  new BizException("请重新登录");
+        }
+        query.setUserId(user.getId());
+
+        IPage<BbsArticleVo> pages = bbsArticleService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+
+    @PostMapping("/comment")
+    @ApiOperation(value = "评论列表")
+    public HttpResponseResult<PageInfo<BbsReplyVo>> commentList(@RequestBody BbsReplySearch query) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || user.getId() == null) {
+            throw  new BizException("请重新登录");
+        }
+        query.setUserId(user.getId());
+
+        IPage<BbsReplyVo> pages = replyService.selectCommentPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+
+    @PostMapping("/reply")
+    @ApiOperation(value = "回复列表")
+    public HttpResponseResult<PageInfo<BbsReplyVo>> replyList(@RequestBody BbsReplySearch query) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || user.getId() == null) {
+            throw  new BizException("请重新登录");
+        }
+        query.setUserId(user.getId());
+
+        IPage<BbsReplyVo> pages = replyService.selectReplyPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+
+    @PostMapping("/collect")
+    @ApiOperation(value = "收藏夹列表")
+    public HttpResponseResult<PageInfo<BbsCollectVo>> collectList(@RequestBody BbsCollectSearch query) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || user.getId() == null) {
+            throw  new BizException("请重新登录");
+        }
+        query.setUserId(user.getId());
+        IPage<BbsCollectVo> pages = collectService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+
+    @PostMapping("/like")
+    @ApiOperation(value = "点赞列表")
+    public HttpResponseResult<PageInfo<BbsLikeVo>> likeList(@RequestBody BbsLikeSearch query) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || user.getId() == null) {
+            throw  new BizException("请重新登录");
+        }
+        query.setUserId(user.getId());
+
+        IPage<BbsLikeVo> pages = likeService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+
+    @PostMapping("/follow")
+    @ApiOperation(value = "关注/粉丝列表")
+    public HttpResponseResult<PageInfo<BbsFollowVo>> followList(@RequestBody @Valid BbsFollowSearch query) {
+
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || user.getId() == null) {
+            throw  new BizException("请重新登录");
+        }
+        query.setUserId(user.getId());
+
+        IPage<BbsFollowVo> pages = followService.selectPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
+}

+ 34 - 8
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dao/BbsPrivateMessageDao.java

@@ -4,27 +4,53 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.bbs.dto.BbsPrivateMessageDto;
+import com.yonge.cooleshow.bbs.dto.MessageReadDto;
+import com.yonge.cooleshow.bbs.dto.PrivateMessagePersonVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.bbs.entity.BbsPrivateMessage;
 import com.yonge.cooleshow.bbs.vo.BbsPrivateMessageVo;
 import com.yonge.cooleshow.bbs.dto.search.BbsPrivateMessageSearch;
 
 
-public interface BbsPrivateMessageDao extends BaseMapper<BbsPrivateMessage>{
+public interface BbsPrivateMessageDao extends BaseMapper<BbsPrivateMessage> {
 	/**
 	 * 查询详情
-     * @author liweifan
-     * @date 2022-06-09 17:27:11
-     * @return: com.yonge.cooleshow.bbs.vo.BbsPrivateMessageVo
+	 *
+	 * @author liweifan
+	 * @date 2022-06-09 17:27:11
+	 * @return: com.yonge.cooleshow.bbs.vo.BbsPrivateMessageVo
 	 */
 	BbsPrivateMessageVo detail(@Param("id") Long id);
 
 	/**
 	 * 分页查询
-     * @author liweifan
-     * @date 2022-06-09 17:27:11
-     * @return: com.yonge.cooleshow.bbs.vo.BbsPrivateMessageVo
+	 *
+	 * @author liweifan
+	 * @date 2022-06-09 17:27:11
+	 * @return: com.yonge.cooleshow.bbs.vo.BbsPrivateMessageVo
 	 */
 	List<BbsPrivateMessageVo> selectPage(@Param("page") IPage page, @Param("param") BbsPrivateMessageSearch bbsPrivateMessage);
-	
+
+	/**
+	 * 私信人员列表
+	 *
+	 * @param page  分页
+	 * @param query 查询条件
+	 * @return
+	 */
+	List<PrivateMessagePersonVo> selectPersonPage(@Param("page") IPage<PrivateMessagePersonVo> page, @Param("query") BbsPrivateMessageSearch query);
+
+	/**
+	 * 设置已读
+	 *
+	 * @param readDto
+	 * @return
+	 */
+	boolean read(@Param("readDto") MessageReadDto readDto);
+
+	/**
+	 * 私信人员消息列表
+	 */
+	List<BbsPrivateMessageDto> selectMessagePage(@Param("page") IPage<BbsPrivateMessageDto> page, @Param("query") BbsPrivateMessageSearch query);
 }

+ 9 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dao/BbsReplyAuthRecordDao.java

@@ -0,0 +1,9 @@
+package com.yonge.cooleshow.bbs.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.bbs.entity.BbsReplyAuthRecord;
+
+
+public interface BbsReplyAuthRecordDao extends BaseMapper<BbsReplyAuthRecord>{
+	
+}

+ 37 - 8
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dao/BbsReplyDao.java

@@ -4,27 +4,56 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.bbs.vo.BbsReplyAuditVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.bbs.entity.BbsReply;
 import com.yonge.cooleshow.bbs.vo.BbsReplyVo;
 import com.yonge.cooleshow.bbs.dto.search.BbsReplySearch;
 
 
-public interface BbsReplyDao extends BaseMapper<BbsReply>{
+public interface BbsReplyDao extends BaseMapper<BbsReply> {
 	/**
 	 * 查询详情
-     * @author liweifan
-     * @date 2022-06-09 17:27:11
-     * @return: com.yonge.cooleshow.bbs.vo.BbsReplyVo
+	 *
+	 * @author liweifan
+	 * @date 2022-06-09 17:27:11
+	 * @return: com.yonge.cooleshow.bbs.vo.BbsReplyVo
 	 */
 	BbsReplyVo detail(@Param("id") Long id);
 
 	/**
 	 * 分页查询
-     * @author liweifan
-     * @date 2022-06-09 17:27:11
-     * @return: com.yonge.cooleshow.bbs.vo.BbsReplyVo
+	 *
+	 * @author liweifan
+	 * @date 2022-06-09 17:27:11
+	 * @return: com.yonge.cooleshow.bbs.vo.BbsReplyVo
 	 */
 	List<BbsReplyVo> selectPage(@Param("page") IPage page, @Param("param") BbsReplySearch bbsReply);
-	
+
+	/**
+	 * 我的评论列表
+	 *
+	 * @param page  分页
+	 * @param query
+	 * @return
+	 */
+	List<BbsReplyVo> selectCommentPage(@Param("page") IPage<BbsReplyVo> page, @Param("query") BbsReplySearch query);
+
+	/**
+	 * 我的回复列表
+	 *
+	 * @param page  分页
+	 * @param query
+	 * @return
+	 */
+	List<BbsReplyVo> selectReplyPage(@Param("page") IPage<BbsReplyVo> page, @Param("query") BbsReplySearch query);
+
+	/**
+	 * 评论审核列表
+	 *
+	 * @param page
+	 * @param query
+	 * @return
+	 */
+	List<BbsReplyAuditVo> selectAuditListPage(@Param("page") IPage<BbsReplyAuditVo> page, @Param("query") BbsReplySearch query);
 }

+ 48 - 1
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/BbsPrivateMessageDto.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.bbs.dto;
 
 import com.yonge.cooleshow.bbs.entity.BbsPrivateMessage;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.beanutils.BeanUtils;
 
 /**
@@ -11,7 +12,53 @@ import org.apache.commons.beanutils.BeanUtils;
 @ApiModel(value = "BbsPrivateMessageDto对象", description = "私信数据传输对象")
 public class BbsPrivateMessageDto extends BbsPrivateMessage{
 	private static final long serialVersionUID = 1L;
-    
+
+    @ApiModelProperty("私信对象名")
+    private String receiverName;
+
+    @ApiModelProperty("私信对象头像")
+    private String receiverAvatar;
+
+
+    @ApiModelProperty("用户名")
+    private String userName;
+
+    @ApiModelProperty("头像")
+    private String userAvatar;
+
+
+    public String getReceiverName() {
+        return receiverName;
+    }
+
+    public void setReceiverName(String receiverName) {
+        this.receiverName = receiverName;
+    }
+
+    public String getReceiverAvatar() {
+        return receiverAvatar;
+    }
+
+    public void setReceiverAvatar(String receiverAvatar) {
+        this.receiverAvatar = receiverAvatar;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserAvatar() {
+        return userAvatar;
+    }
+
+    public void setUserAvatar(String userAvatar) {
+        this.userAvatar = userAvatar;
+    }
+
     public BbsPrivateMessageDto buildDto(BbsPrivateMessage bbsPrivateMessage){
         try {
             BeanUtils.copyProperties(this,bbsPrivateMessage);

+ 56 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/MessageReadDto.java

@@ -0,0 +1,56 @@
+package com.yonge.cooleshow.bbs.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-06-11
+ */
+@ApiModel("已读数据")
+public class MessageReadDto {
+
+    @ApiModelProperty(value = "当前用户id",hidden = true)
+    private Long userId;
+
+    @ApiModelProperty(value = "私信对象id",required = true)
+    @NotNull(message = "私信对象id不能为空 ")
+    private Long sendUserId;
+
+    @ApiModelProperty(value = "阅读时间",required = true)
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @NotNull(message = "阅读时间不能为空 ")
+    private Date readTime;
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getSendUserId() {
+        return sendUserId;
+    }
+
+    public void setSendUserId(Long sendUserId) {
+        this.sendUserId = sendUserId;
+    }
+
+    public Date getReadTime() {
+        return readTime;
+    }
+
+    public void setReadTime(Date readTime) {
+        this.readTime = readTime;
+    }
+}

+ 82 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/PrivateMessagePersonVo.java

@@ -0,0 +1,82 @@
+package com.yonge.cooleshow.bbs.dto;
+
+import com.yonge.cooleshow.bbs.enums.YesOrNoEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-06-11
+ */
+@ApiModel("私信人员列表")
+public class PrivateMessagePersonVo {
+
+    @ApiModelProperty("私信对象userid")
+    private Long messageUserId;
+
+    @ApiModelProperty("用户名")
+    private String username;
+
+    @ApiModelProperty("头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "0:未读 1:已读")
+    private YesOrNoEnum readFlag;
+
+    @ApiModelProperty("最后一条消息发送时间")
+    private String messageTime;
+
+    @ApiModelProperty("最后一条消息内容")
+    private String messageContent;
+
+
+    public Long getMessageUserId() {
+        return messageUserId;
+    }
+
+    public void setMessageUserId(Long messageUserId) {
+        this.messageUserId = messageUserId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getMessageTime() {
+        return messageTime;
+    }
+
+    public void setMessageTime(String messageTime) {
+        this.messageTime = messageTime;
+    }
+
+    public String getMessageContent() {
+        return messageContent;
+    }
+
+    public void setMessageContent(String messageContent) {
+        this.messageContent = messageContent;
+    }
+
+    public YesOrNoEnum getReadFlag() {
+        return readFlag;
+    }
+
+    public void setReadFlag(YesOrNoEnum readFlag) {
+        this.readFlag = readFlag;
+    }
+}

+ 63 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/ReplyAuditDto.java

@@ -0,0 +1,63 @@
+package com.yonge.cooleshow.bbs.dto;
+
+import com.yonge.cooleshow.bbs.enums.ArticleEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-06-13
+ */
+@ApiModel("评论审核信息")
+public class ReplyAuditDto {
+
+    @ApiModelProperty("评论id")
+    @NotNull(message = "评论id不能为空")
+    private Long replyId;
+
+    @ApiModelProperty("审核状态 审核中:DOING,通过:PASS,驳回:REJECT")
+    @NotNull(message = "审核状态不能为空")
+    private ArticleEnum status;
+
+    @ApiModelProperty(value = "审核人id",hidden = true)
+    private Long  verityUserId;
+
+    @ApiModelProperty("审核理由")
+    private String reason;
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public Long getReplyId() {
+        return replyId;
+    }
+
+    public void setReplyId(Long replyId) {
+        this.replyId = replyId;
+    }
+
+    public ArticleEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(ArticleEnum status) {
+        this.status = status;
+    }
+
+    public Long getVerityUserId() {
+        return verityUserId;
+    }
+
+    public void setVerityUserId(Long verityUserId) {
+        this.verityUserId = verityUserId;
+    }
+}

+ 11 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsCollectSearch.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.bbs.dto.search;
 
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -11,4 +12,14 @@ import io.swagger.annotations.ApiModel;
 public class BbsCollectSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty("登录人id")
+	private Long userId;
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
 }

+ 25 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsFollowSearch.java

@@ -2,6 +2,9 @@ package com.yonge.cooleshow.bbs.dto.search;
 
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
 
 /**
  * @Author: liweifan
@@ -11,4 +14,26 @@ import io.swagger.annotations.ApiModel;
 public class BbsFollowSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty("登录人id")
+	private Long userId;
+
+	@ApiModelProperty(value = "FOLLOW:关注,FANS:粉丝",required = true)
+	@NotBlank(message = "类型不能为空")
+	private String type;
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
 }

+ 12 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsLikeSearch.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.bbs.dto.search;
 
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -11,4 +12,15 @@ import io.swagger.annotations.ApiModel;
 public class BbsLikeSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty("登录人id")
+	private Long userId;
+
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
 }

+ 25 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsPrivateMessageSearch.java

@@ -2,6 +2,9 @@ package com.yonge.cooleshow.bbs.dto.search;
 
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
 
 /**
  * @Author: liweifan
@@ -11,4 +14,26 @@ import io.swagger.annotations.ApiModel;
 public class BbsPrivateMessageSearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "当前用户id",hidden = true)
+	private Long userId;
+
+	@ApiModelProperty(value = "私信对象userid",required = true)
+	@NotNull(message = "私信对象不能为空")
+	private Long receiverUserId;
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public Long getReceiverUserId() {
+		return receiverUserId;
+	}
+
+	public void setReceiverUserId(Long receiverUserId) {
+		this.receiverUserId = receiverUserId;
+	}
 }

+ 23 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/dto/search/BbsReplySearch.java

@@ -1,7 +1,9 @@
 package com.yonge.cooleshow.bbs.dto.search;
 
+import com.yonge.cooleshow.bbs.enums.ArticleEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -11,4 +13,25 @@ import io.swagger.annotations.ApiModel;
 public class BbsReplySearch extends QueryInfo{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "论坛登录用户id",hidden = true)
+	private Long userId;
+
+	@ApiModelProperty("评论审核状态 DOING :审核中,PASS:审核 通过,REJECT:拒绝")
+	private ArticleEnum status;
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public ArticleEnum getStatus() {
+		return status;
+	}
+
+	public void setStatus(ArticleEnum status) {
+		this.status = status;
+	}
 }

+ 20 - 2
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/entity/BbsPrivateMessage.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.bbs.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -13,6 +14,9 @@ import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 /**
  * 私信
  */
@@ -28,14 +32,20 @@ public class BbsPrivateMessage implements Serializable {
     @TableField(value = "send_user_id_")
     private Long sendUserId;
 
-    @ApiModelProperty("接受方用户id")
+    @ApiModelProperty(value = "接受方用户id",required = true)
+    @NotNull(message = "私信接收方id不能为空")
     @TableField(value = "receiver_user_id_")
     private Long receiverUserId;
 
-    @ApiModelProperty("发送消息内容")
+    @ApiModelProperty(value = "发送消息内容",required = true)
+    @NotBlank(message = "私信信息不能为空")
     @TableField(value = "message_content_")
     private String messageContent;
 
+    @ApiModelProperty(value = "0:未读 1:已读")
+    @TableField(value = "read_flag_")
+    private YesOrNoEnum readFlag;
+
     @ApiModelProperty("发送时间")
     @TableField(value = "created_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -81,4 +91,12 @@ public class BbsPrivateMessage implements Serializable {
     public void setCreatedTime(Date createdTime) {
         this.createdTime = createdTime;
     }
+
+    public YesOrNoEnum getReadFlag() {
+        return readFlag;
+    }
+
+    public void setReadFlag(YesOrNoEnum readFlag) {
+        this.readFlag = readFlag;
+    }
 }

+ 103 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/entity/BbsReplyAuthRecord.java

@@ -0,0 +1,103 @@
+package com.yonge.cooleshow.bbs.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.bbs.enums.ArticleEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 文章审核表
+ */
+@TableName("bbs_reply_auth_record")
+@ApiModel(value = "BbsReplyAuthRecord对象", description = "文章审核表")
+public class BbsReplyAuthRecord implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("评论id ")
+    @TableField(value = "reply_id_")
+    private Long replyId;
+    @ApiModelProperty("审核中:DOING,通过:PASS,驳回:REJECT ")
+    @TableField(value = "audit_state_")
+    private ArticleEnum auditState;
+    @ApiModelProperty("审核人 ")
+    @TableField(value = "verify_user_id_")
+    private Long verifyUserId;
+    @ApiModelProperty("审核理由 ")
+    @TableField(value = "reason_")
+    private String reason;
+    @TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+    @TableField(value = "update_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getReplyId() {
+        return replyId;
+    }
+
+    public void setReplyId(Long replyId) {
+        this.replyId = replyId;
+    }
+
+    public ArticleEnum getAuditState() {
+        return auditState;
+    }
+
+    public void setAuditState(ArticleEnum auditState) {
+        this.auditState = auditState;
+    }
+
+    public Long getVerifyUserId() {
+        return verifyUserId;
+    }
+
+    public void setVerifyUserId(Long verifyUserId) {
+        this.verifyUserId = verifyUserId;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}

+ 2 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsCollectService.java

@@ -2,9 +2,11 @@ package com.yonge.cooleshow.bbs.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.bbs.dto.search.BbsReplySearch;
 import com.yonge.cooleshow.bbs.vo.BbsCollectVo;
 import com.yonge.cooleshow.bbs.dto.search.BbsCollectSearch;
 import com.yonge.cooleshow.bbs.entity.BbsCollect;
+import com.yonge.cooleshow.bbs.vo.BbsReplyVo;
 
 /**
  * 收藏 服务类

+ 27 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsPrivateMessageService.java

@@ -2,6 +2,9 @@ package com.yonge.cooleshow.bbs.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.bbs.dto.BbsPrivateMessageDto;
+import com.yonge.cooleshow.bbs.dto.MessageReadDto;
+import com.yonge.cooleshow.bbs.dto.PrivateMessagePersonVo;
 import com.yonge.cooleshow.bbs.vo.BbsPrivateMessageVo;
 import com.yonge.cooleshow.bbs.dto.search.BbsPrivateMessageSearch;
 import com.yonge.cooleshow.bbs.entity.BbsPrivateMessage;
@@ -26,4 +29,28 @@ public interface BbsPrivateMessageService extends IService<BbsPrivateMessage>  {
  	 * @date 2022-06-09
      */
     IPage<BbsPrivateMessageVo> selectPage(IPage<BbsPrivateMessageVo> page, BbsPrivateMessageSearch query);
+
+	/**
+	 * 私信人员列表
+	 *
+	 * @param page 分页
+	 * @param query 条件
+	 * @return
+	 */
+    IPage<PrivateMessagePersonVo> selectPersonPage(IPage<PrivateMessagePersonVo> page, BbsPrivateMessageSearch query);
+
+	/**
+	 * 设置已读
+	 *
+	 * @param readDto 已读信息
+	 * @return
+	 */
+	boolean read(MessageReadDto readDto);
+
+	/**
+	 * 私信人员消息列表
+	 *
+	 * @return
+	 */
+	IPage<BbsPrivateMessageDto> selectMessagePage(IPage<BbsPrivateMessageDto> page, BbsPrivateMessageSearch query);
 }

+ 20 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsReplyAuthRecordService.java

@@ -0,0 +1,20 @@
+package com.yonge.cooleshow.bbs.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.bbs.dto.ReplyAuditDto;
+import com.yonge.cooleshow.bbs.entity.BbsReplyAuthRecord;
+
+/**
+ * 文章审核表 服务类
+ * @author liweifan
+ * @date 2022-06-13
+ */
+public interface BbsReplyAuthRecordService extends IService<BbsReplyAuthRecord>  {
+
+    /**
+     * 评论审核
+     *
+     * @param auditDto 审核信息
+     */
+    void audit(ReplyAuditDto auditDto);
+}

+ 37 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/BbsReplyService.java

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.bbs.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.bbs.dto.ReplyAuditDto;
+import com.yonge.cooleshow.bbs.vo.BbsReplyAuditVo;
 import com.yonge.cooleshow.bbs.vo.BbsReplyVo;
 import com.yonge.cooleshow.bbs.dto.search.BbsReplySearch;
 import com.yonge.cooleshow.bbs.entity.BbsReply;
@@ -26,4 +28,39 @@ public interface BbsReplyService extends IService<BbsReply>  {
  	 * @date 2022-06-09
      */
     IPage<BbsReplyVo> selectPage(IPage<BbsReplyVo> page, BbsReplySearch query);
+
+	/**
+	 * 我的评论列表
+	 *
+	 * @param page 分页
+	 * @param query
+	 * @return
+	 */
+	IPage<BbsReplyVo> selectCommentPage(IPage<BbsReplyVo> page, BbsReplySearch query);
+
+	/**
+	 * 我的回复列表
+	 *
+	 * @param page 分页
+	 * @param query
+	 * @return
+	 */
+	IPage<BbsReplyVo> selectReplyPage(IPage<BbsReplyVo> page, BbsReplySearch query);
+
+	/**
+	 * 评论审核列表
+	 *
+	 * @param page 分页
+	 * @param query 查询条件
+	 * @return
+	 */
+	IPage<BbsReplyAuditVo> selectAuditListPage(IPage<BbsReplyAuditVo> page, BbsReplySearch query);
+
+	/**
+	 * 评论审核
+	 *
+	 * @param auditDto 审核信息
+	 * @return
+	 */
+	boolean audit(ReplyAuditDto auditDto);
 }

+ 19 - 1
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/impl/BbsPrivateMessageServiceImpl.java

@@ -2,6 +2,9 @@ package com.yonge.cooleshow.bbs.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.bbs.dto.BbsPrivateMessageDto;
+import com.yonge.cooleshow.bbs.dto.MessageReadDto;
+import com.yonge.cooleshow.bbs.dto.PrivateMessagePersonVo;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -25,5 +28,20 @@ public class BbsPrivateMessageServiceImpl extends ServiceImpl<BbsPrivateMessageD
     public IPage<BbsPrivateMessageVo> selectPage(IPage<BbsPrivateMessageVo> page, BbsPrivateMessageSearch query){
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
+    @Override
+    public IPage<PrivateMessagePersonVo> selectPersonPage(IPage<PrivateMessagePersonVo> page, BbsPrivateMessageSearch query) {
+        return page.setRecords(baseMapper.selectPersonPage(page, query));
+    }
+
+    @Override
+    public boolean read(MessageReadDto readDto) {
+        return baseMapper.read(readDto) ;
+    }
+
+    @Override
+    public IPage<BbsPrivateMessageDto> selectMessagePage(IPage<BbsPrivateMessageDto> page, BbsPrivateMessageSearch query) {
+        return page.setRecords(baseMapper.selectMessagePage(page, query));
+    }
+
 }

+ 38 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/impl/BbsReplyAuthRecordServiceImpl.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.bbs.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.bbs.dao.BbsReplyAuthRecordDao;
+import com.yonge.cooleshow.bbs.dto.ReplyAuditDto;
+import com.yonge.cooleshow.bbs.entity.BbsReplyAuthRecord;
+import com.yonge.cooleshow.bbs.enums.ArticleEnum;
+import com.yonge.cooleshow.bbs.service.BbsReplyAuthRecordService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+
+
+@Service
+public class BbsReplyAuthRecordServiceImpl extends ServiceImpl<BbsReplyAuthRecordDao, BbsReplyAuthRecord> implements
+        BbsReplyAuthRecordService {
+    private final static Logger log = LoggerFactory.getLogger(BbsReplyAuthRecordServiceImpl.class);
+
+
+    @Override
+    public void audit(ReplyAuditDto auditDto) {
+        this.lambdaUpdate()
+                .eq(BbsReplyAuthRecord::getReplyId, auditDto.getReplyId())
+                .eq(BbsReplyAuthRecord::getAuditState, ArticleEnum.DOING.getCode())
+                .remove();
+        BbsReplyAuthRecord bbsReplyAuthRecord = new BbsReplyAuthRecord();
+
+        bbsReplyAuthRecord.setReplyId(auditDto.getReplyId());
+        bbsReplyAuthRecord.setAuditState(auditDto.getStatus());
+        bbsReplyAuthRecord.setReason(auditDto.getReason());
+        bbsReplyAuthRecord.setCreateTime(new Date());
+        bbsReplyAuthRecord.setVerifyUserId(auditDto.getVerityUserId());
+        bbsReplyAuthRecord.setUpdateTime(new Date());
+        this.save(bbsReplyAuthRecord);
+    }
+}

+ 41 - 1
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/service/impl/BbsReplyServiceImpl.java

@@ -2,6 +2,12 @@ package com.yonge.cooleshow.bbs.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.bbs.dto.ReplyAuditDto;
+import com.yonge.cooleshow.bbs.enums.ArticleEnum;
+import com.yonge.cooleshow.bbs.service.BbsReplyAuthRecordService;
+import com.yonge.cooleshow.bbs.vo.BbsReplyAuditVo;
+import com.yonge.toolset.base.exception.BizException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -16,6 +22,10 @@ import com.yonge.cooleshow.bbs.service.BbsReplyService;
 public class BbsReplyServiceImpl extends ServiceImpl<BbsReplyDao, BbsReply> implements BbsReplyService {
     private final static Logger log = LoggerFactory.getLogger(BbsReplyServiceImpl.class);
 
+
+    @Autowired
+    private BbsReplyAuthRecordService replyAuthRecordService;
+
 	@Override
     public BbsReplyVo detail(Long id) {
         return baseMapper.detail(id);
@@ -25,5 +35,35 @@ public class BbsReplyServiceImpl extends ServiceImpl<BbsReplyDao, BbsReply> impl
     public IPage<BbsReplyVo> selectPage(IPage<BbsReplyVo> page, BbsReplySearch query){
         return page.setRecords(baseMapper.selectPage(page, query));
     }
-	
+
+    @Override
+    public IPage<BbsReplyVo> selectCommentPage(IPage<BbsReplyVo> page, BbsReplySearch query) {
+        return page.setRecords(baseMapper.selectCommentPage(page, query));
+    }
+
+    @Override
+    public IPage<BbsReplyVo> selectReplyPage(IPage<BbsReplyVo> page, BbsReplySearch query) {
+        return page.setRecords(baseMapper.selectReplyPage(page, query));
+    }
+
+    @Override
+    public IPage<BbsReplyAuditVo> selectAuditListPage(IPage<BbsReplyAuditVo> page, BbsReplySearch query) {
+        return page.setRecords(baseMapper.selectAuditListPage(page, query));
+    }
+
+    @Override
+    public boolean audit(ReplyAuditDto auditDto) {
+        BbsReply bbsReply = this.getById(auditDto.getReplyId());
+        if (bbsReply == null) {
+            throw  new BizException("未找到当前评论信息");
+        }
+        if(!ArticleEnum.DOING.getCode().equals(bbsReply.getStatus().getCode())) {
+            throw  new BizException("评论已经审核");
+        }
+        bbsReply.setStatus(auditDto.getStatus());
+        this.updateById(bbsReply);
+        replyAuthRecordService.audit(auditDto);
+        return true;
+    }
+
 }

+ 37 - 1
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsCollectVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.bbs.vo;
 
 import com.yonge.cooleshow.bbs.entity.BbsCollect;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.beanutils.BeanUtils;
 
 /**
@@ -11,7 +12,42 @@ import org.apache.commons.beanutils.BeanUtils;
 @ApiModel(value = "BbsCollectVo对象", description = "收藏查询视图对象")
 public class BbsCollectVo extends BbsCollect{
 	private static final long serialVersionUID = 1L;
-    
+
+    @ApiModelProperty("标签id")
+    private Long labelId;
+
+    @ApiModelProperty("文章标题")
+    private String title;
+
+    @ApiModelProperty("标签名")
+    private String labelName;
+
+
+
+    public Long getLabelId() {
+        return labelId;
+    }
+
+    public void setLabelId(Long labelId) {
+        this.labelId = labelId;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getLabelName() {
+        return labelName;
+    }
+
+    public void setLabelName(String labelName) {
+        this.labelName = labelName;
+    }
+
     public BbsCollectVo buildVo(BbsCollect bbsCollect){
         try {
             BeanUtils.copyProperties(this,bbsCollect);

+ 24 - 1
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsFollowVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.bbs.vo;
 
 import com.yonge.cooleshow.bbs.entity.BbsFollow;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.beanutils.BeanUtils;
 
 /**
@@ -11,7 +12,29 @@ import org.apache.commons.beanutils.BeanUtils;
 @ApiModel(value = "BbsFollowVo对象", description = "关注查询视图对象")
 public class BbsFollowVo extends BbsFollow{
 	private static final long serialVersionUID = 1L;
-    
+
+    @ApiModelProperty("用户名")
+    private String username;
+
+    @ApiModelProperty("头像")
+    private String avatar;
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
     public BbsFollowVo buildVo(BbsFollow bbsFollow){
         try {
             BeanUtils.copyProperties(this,bbsFollow);

+ 100 - 0
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsReplyAuditVo.java

@@ -0,0 +1,100 @@
+package com.yonge.cooleshow.bbs.vo;
+
+import com.yonge.cooleshow.bbs.entity.BbsReply;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.beanutils.BeanUtils;
+
+import java.util.Date;
+
+
+public class BbsReplyAuditVo extends BbsReply {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("话题标题")
+    private String articleTitle;
+
+
+    @ApiModelProperty("评论人昵称")
+    private String userName;
+
+    @ApiModelProperty("评论人真实姓名")
+    private String realName;
+
+    @ApiModelProperty("评论人手机号")
+    private String phone;
+
+    @ApiModelProperty("审核人昵称")
+    private String verifyName;
+
+    @ApiModelProperty("审核理由")
+    private String reason;
+
+    @ApiModelProperty("审核时间")
+    private Date verifyTime;
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getVerifyName() {
+        return verifyName;
+    }
+
+    public void setVerifyName(String verifyName) {
+        this.verifyName = verifyName;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public Date getVerifyTime() {
+        return verifyTime;
+    }
+
+    public void setVerifyTime(Date verifyTime) {
+        this.verifyTime = verifyTime;
+    }
+
+    public BbsReplyAuditVo buildVo(BbsReply bbsReply) {
+        try {
+            BeanUtils.copyProperties(this, bbsReply);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return this;
+    }
+
+    public String getArticleTitle() {
+        return articleTitle;
+    }
+
+    public void setArticleTitle(String articleTitle) {
+        this.articleTitle = articleTitle;
+    }
+}

+ 17 - 5
cooleshow-bbs/src/main/java/com/yonge/cooleshow/bbs/vo/BbsReplyVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.bbs.vo;
 
 import com.yonge.cooleshow.bbs.entity.BbsReply;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.beanutils.BeanUtils;
 
 /**
@@ -9,16 +10,27 @@ import org.apache.commons.beanutils.BeanUtils;
  * @Data: 2022-06-09 17:27:11
  */
 @ApiModel(value = "BbsReplyVo对象", description = "文章评论查询视图对象")
-public class BbsReplyVo extends BbsReply{
-	private static final long serialVersionUID = 1L;
-    
-    public BbsReplyVo buildVo(BbsReply bbsReply){
+public class BbsReplyVo extends BbsReply {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("话题标题")
+    private String articleTitle;
+
+
+    public BbsReplyVo buildVo(BbsReply bbsReply) {
         try {
-            BeanUtils.copyProperties(this,bbsReply);
+            BeanUtils.copyProperties(this, bbsReply);
         } catch (Exception e) {
             e.printStackTrace();
         }
         return this;
     }
 
+    public String getArticleTitle() {
+        return articleTitle;
+    }
+
+    public void setArticleTitle(String articleTitle) {
+        this.articleTitle = articleTitle;
+    }
 }

+ 4 - 4
cooleshow-bbs/src/main/resources/config/mybatis/BbsArticleMapper.xml

@@ -58,14 +58,14 @@
         	<include refid="baseColumns" />
 		FROM bbs_article t
         <where>
-            <if test="param.status != null and param.status != ''">
-                and #{param.status,jdbcType=VARCHAR} = t.status_
+            <if test="param.status != null ">
+                and #{param.status} = t.status_
             </if>
             <if test="param.search != null and param.search != ''">
                 and t.title_ like  concat('%',#{param.search},'%')
             </if>
             <if test="param.label != null">
-                and t.label_id_ = #{param.label,jdbcType=BIGINT}
+                and t.label_id_ = #{param.label}
             </if>
             <if test="param.userId != null" >
                 and t.user_id_ = #{param.userId}
@@ -74,7 +74,7 @@
                 and t.del_flag_ = #{param.delFlag}
             </if>
         </where>
-        order by
+        order by find_in_set(t.top_flag_,1),
             <if test="param.sort != null">
                 <choose>
                     <when test="param.sort == 'HOT'">

+ 11 - 1
cooleshow-bbs/src/main/resources/config/mybatis/BbsCollectMapper.xml

@@ -26,6 +26,16 @@
     <select id="selectPage" resultType="com.yonge.cooleshow.bbs.vo.BbsCollectVo">
 		SELECT         
         	<include refid="baseColumns" />
+        ,ba.title_ as title
+        ,ba.label_name_ as labelName
+        ,ba.label_id_ as labelId
 		FROM bbs_collect t
-	</select>
+        left join bbs_article ba on t.article_id_ = ba.id_
+        <where>
+            <if test="param.userId != null">
+                and #{param.userId,jdbcType=BIGINT} = t.collect_user_id_
+            </if>
+        </where>
+        order by t.created_time_ desc
+    </select>
 </mapper>

+ 24 - 0
cooleshow-bbs/src/main/resources/config/mybatis/BbsFollowMapper.xml

@@ -26,6 +26,30 @@
     <select id="selectPage" resultType="com.yonge.cooleshow.bbs.vo.BbsFollowVo">
 		SELECT         
         	<include refid="baseColumns" />
+        ,su.username_ as username
+        ,su.avatar_ as avatar
 		FROM bbs_follow t
+        left join sys_user su on
+        <choose>
+            <when test="param.type == 'FANS'">
+                t.user_id_ = su.id_
+            </when>
+            <when test="param.type == 'FOLLOW'">
+                t.friend_user_id = su.id_
+            </when>
+        </choose>
+
+        <where>
+            <if test="param.userId != null">
+                <choose>
+                    <when test="param.type == 'FANS'">
+                        t.friend_user_id = #{param.userId}
+                    </when>
+                    <when test="param.type == 'FOLLOW'">
+                        and t.user_id_ = #{param.userId}
+                    </when>
+                </choose>
+            </if>
+        </where>
 	</select>
 </mapper>

+ 7 - 0
cooleshow-bbs/src/main/resources/config/mybatis/BbsLikeMapper.xml

@@ -27,5 +27,12 @@
 		SELECT         
         	<include refid="baseColumns" />
 		FROM bbs_like t
+        left join bbs_article ba on t.article_id_ = ba.id_
+        <where>
+            <if test="param.userId != null">
+                t.like_user_id_ = #{param.userId}
+            </if>
+        </where>
+        order by t.created_time_ desc
 	</select>
 </mapper>

+ 49 - 0
cooleshow-bbs/src/main/resources/config/mybatis/BbsPrivateMessageMapper.xml

@@ -16,6 +16,7 @@
         , t.receiver_user_id_ as receiverUserId
         , t.message_content_ as messageContent
         , t.created_time_ as createdTime
+        , t.read_flag_ as readFlag
         </sql> 
     
     <select id="detail" resultType="com.yonge.cooleshow.bbs.vo.BbsPrivateMessageVo">
@@ -30,4 +31,52 @@
         	<include refid="baseColumns" />
 		FROM bbs_private_message t
 	</select>
+
+	<select id="selectPersonPage" resultType="com.yonge.cooleshow.bbs.dto.PrivateMessagePersonVo">
+
+        select
+            bpm.message_content_ as messageContext,
+            bpm.created_time_ as messageTime,
+            bpm.read_flag_ as readFlag,
+            if(bpm.send_user_id_ = #{query.userId},bpm.receiver_user_id_,bpm.send_user_id_) as messageUserId,
+            if(su.id_ = #{query.userId},su2.username_,su.username_) as username,
+            if(su.id_ = #{query.userId},su2.avatar_,su.avatar_) as avatar
+        from bbs_private_message bpm
+        left join sys_user su on bpm.send_user_id_ = su.id_
+        left  join sys_user su2 on su2.id_ = bpm.receiver_user_id_
+        <where>
+            <if test="query.userId != null">
+                and (#{query.userId} = bpm.send_user_id_ or #{query.userId} = bpm.receiver_user_id_)
+            </if>
+        </where>
+        group by bpm.send_user_id_
+
+    </select>
+
+	<update id="read">
+        update bbs_private_message bpm set bpm.read_flag_ = 1
+        where #{readDto.userId} = bpm.send_user_id_
+        and #{readDto.sendUserId} = bpm.receiver_user_id_
+        and #{readDto.readTime} &gt; bpm.created_time_
+    </update>
+
+	<select id="selectMessagePage" resultType="com.yonge.cooleshow.bbs.dto.BbsPrivateMessageDto">
+
+        select
+        bpm.id as id
+        , bpm.send_user_id_ as sendUserId
+        , bpm.receiver_user_id_ as receiverUserId
+        , bpm.message_content_ as messageContent
+        , bpm.created_time_ as createdTime
+        , bpm.read_flag_ as readFlag
+        from bbs_private_message bpm
+        <where>
+            <if test="query.userId != null and query.receiverUserId != null">
+                and ((#{query.userId} = bpm.send_user_id_ and #{query.receiverUserId} = bpm.receiver_user_id_)
+                or (#{query.userId} = bpm.receiver_user_id_ and #{query.receiverUserId} = bpm.send_user_id_))
+            </if>
+        </where>
+
+        order by bpm.created_time_ desc
+    </select>
 </mapper>

+ 6 - 0
cooleshow-bbs/src/main/resources/config/mybatis/BbsReplyAuthRecordMapper.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.yonge.cooleshow.bbs.dao.BbsReplyAuthRecordDao">
+
+
+</mapper>

+ 79 - 0
cooleshow-bbs/src/main/resources/config/mybatis/BbsReplyMapper.xml

@@ -35,5 +35,84 @@
 		SELECT         
         	<include refid="baseColumns" />
 		FROM bbs_reply t
+        <where>
+            <if test="param.userId != null">
+                and #{param.userId} = t.user_id_
+            </if>
+        </where>
 	</select>
+
+	<select id="selectCommentPage" resultType="com.yonge.cooleshow.bbs.vo.BbsReplyVo">
+        select
+        br.id_ as id
+        , br.parent_id_ as parentId
+        , br.article_id as articleId
+        , br.user_id_ as userId
+        , br.content_ as content
+        , br.status_ as status
+        , br.created_time_ as createdTime
+        , br.updated_time_ as updatedTime
+        ,ba.title_ as articleTitle
+        from bbs_reply br
+        left join bbs_article ba on br.article_id = ba.id_
+        <where>
+            <if test="query.userId != null">
+                and  br.user_id_ = #{query.userId}
+            </if>
+        </where>
+        order by br.created_time_ desc
+    </select>
+
+	<select id="selectReplyPage" resultType="com.yonge.cooleshow.bbs.vo.BbsReplyVo">
+        select
+        br.id_ as id
+        , br.parent_id_ as parentId
+        , br.article_id as articleId
+        , br.user_id_ as userId
+        , br.content_ as content
+        , br.status_ as status
+        , br.created_time_ as createdTime
+        , br.updated_time_ as updatedTime
+        ,ba.title_ as articleTitle
+        from bbs_reply br
+        left join bbs_article ba on br.article_id = ba.id_
+        left join bbs_reply br2 on br.parent_id_ = br2.id_
+        <where>
+            ba.del_flag_ = 0
+            <if test="query.userId != null">
+                and  (ba.user_id_ = #{query.userId} or br2.user_id_ = #{query.userId})
+            </if>
+        </where>
+        order by br.created_time_ desc
+    </select>
+
+	<select id="selectAuditListPage" resultType="com.yonge.cooleshow.bbs.vo.BbsReplyAuditVo">
+        select
+        br.id_ as id
+        , br.parent_id_ as parentId
+        , br.article_id as articleId
+        , br.user_id_ as userId
+        , br.content_ as content
+        , br.status_ as status
+        , br.created_time_ as createdTime
+        , br.updated_time_ as updatedTime
+        ,ba.title_ as articleTitle
+        , su.username_ as userName
+        ,su.real_name_ as realName
+        ,su.phone_ as phone
+        ,verify.username_ as verifyName
+        ,brar.reason_ as reason
+        ,brar.update_time_ as verifyTime
+        from bbs_reply br
+        left join bbs_article ba on br.article_id = ba.id_
+        left join bbs_reply_auth_record brar on br.id_ = brar.reply_id_
+        left join sys_user su on br.user_id_ = su.id_
+        left join sys_user verify on verify.id_ = brar.verify_user_id_
+        <where>
+            ba.del_flag_ = 0
+            <if test="query.status != null">
+                and #{query.status} = brar.audit_state_
+            </if>
+        </where>
+    </select>
 </mapper>

+ 2 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/AppConstant.java

@@ -5,6 +5,7 @@ package com.yonge.cooleshow.common.constant;
  * @Data: 2022/5/5 10:02
  */
 public interface AppConstant {
+    String SERVER = "-server";
     /**
      * 网关
      */
@@ -32,7 +33,7 @@ public interface AppConstant {
     /**
      * CMS
      */
-    String APPLICATION_CMS= "cms";
+    String APPLICATION_CMS = "cms";
     /**
      * 商城管理端
      */

+ 2 - 6
cooleshow-task/src/main/java/com/yonge/cooleshow/task/jobs/TeacherEarningTask.java

@@ -4,13 +4,9 @@ import com.yonge.cooleshow.api.feign.AdminFeignService;
 import com.yonge.cooleshow.task.core.BaseTask;
 import com.yonge.cooleshow.task.core.TaskException;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
-/**
- * Description
- *
- * @author liujunchi
- * @date 2022-05-17
- */
+@Service
 public class TeacherEarningTask extends BaseTask {
 
 

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

@@ -70,7 +70,9 @@ public interface CourseScheduleStudentPaymentDao extends BaseMapper<CourseSchedu
     void adjustPlayMidi(@Param("courseScheduleId") long courseScheduleId, @Param("userId") String userId, @Param("content") String content);
 
     //调整伴奏
-    void adjustExamSong(@Param("courseScheduleId") long courseScheduleId, @Param("userId") Long userId, @Param("examSongJson") String examSongJson);
+    void adjustExamSong(@Param("courseScheduleId") long courseScheduleId,
+                        @Param("userId") Long userId,
+                        @Param("musicSheetJson") String musicSheetJson);
 
     //获取课程学员关联
     List<CourseScheduleStudentPayment> queryByCourseId(@Param("courseScheduleId") Long courseScheduleId);

+ 1 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ImNetworkRoomService.java

@@ -28,11 +28,8 @@ public interface ImNetworkRoomService extends IService<ImNetworkRoom> {
     //加入网络教室失败
     void joinRoomFailure(String roomId);
 
-    //退出房间
-    void leaveRoom(String roomId) throws Exception;
-
     //退出房间成功
-    void leaveRoomSuccess(String roomId, Long userId) throws Exception;
+    void quitRoomSuccess(String roomId, Long userId) throws Exception;
 
     //控制用户节拍器
     void sendImPlayMidiMessage(ImNetworkCustomMessage customMessage) throws Exception;

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetAuthRecordService.java

@@ -19,4 +19,11 @@ public interface MusicSheetAuthRecordService extends IService<MusicSheetAuthReco
      * @return boolean
      */
     boolean audit(TeacherMusicSheetAuditReq param, Long userId);
+
+    /**
+     * 设置曲目审核中状态
+     *
+     * @param musicSheetId 曲目id
+     */
+    void setAuditDoing(Long musicSheetId);
 }

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

@@ -1139,6 +1139,12 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             throw new BizException("课程无人购买");
         }
 
+        //课程改为过去式避免校验时报错
+        baseMapper.update(null,Wrappers.<CourseSchedule>lambdaUpdate()
+                .eq(CourseSchedule::getId,adjustVo.getCourseId())
+                .set(CourseSchedule::getStartTime,DateUtil.getYesterday())
+                .set(CourseSchedule::getEndTime,DateUtil.getYesterday()));
+
         CourseTimeEntity timeEntity = new CourseTimeEntity();
         timeEntity.setStartTime(startTime);
         timeEntity.setEndTime(endTime);

+ 22 - 35
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImNetworkRoomServiceImpl.java

@@ -19,14 +19,14 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.*;
-import java.util.function.BiConsumer;
-import java.util.function.Consumer;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -58,6 +58,10 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
     private IMHelper imHelper;
     @Resource
     private MusicSheetAccompanimentService musicSheetAccompanimentService;
+    @Resource
+    private RedisTemplate<String,Object> redisTemplate;
+
+    private String QUIT_ROOM_SUCCESS = "quitRoomSuccess:";
 
     @Override
     public ImNetworkRoomDao getDao() {
@@ -180,48 +184,32 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void leaveRoom(String roomId) throws Exception {
-        Long userId = sysUserService.getUserId();
-        log.info("leaveRoom: roomId={}, userId={}", roomId, userId);
-        long courseScheduleId = Long.parseLong(roomId);
-        Long teacherId = Optional.ofNullable(courseScheduleService.getById(courseScheduleId)).
-                map(CourseSchedule::getTeacherId).
-                orElseThrow(()->new BizException("房间信息不存在"));
-        UserRoleEnum userRole = UserRoleEnum.STUDENT;
-        if(teacherId.equals(userId)){
-            userRole = UserRoleEnum.TEACHER;
-        }
-        if (userRole == UserRoleEnum.TEACHER){
-            //如果老师退出房间,关闭伴奏
-            courseScheduleStudentMusicSheetService.getDao().closePlayStatus(courseScheduleId,null);
-            courseScheduleStudentPaymentService.getDao().adjustPlayMidi(courseScheduleId, null, null);
-            courseScheduleStudentPaymentService.getDao().adjustExamSong(courseScheduleId, null, null);
+    public void quitRoomSuccess(String roomId, Long userId) throws Exception {
+        log.info("quitRoomSuccess: roomId={}, userId={}", roomId, userId);
+        //防止幂等
+        StringBuffer sb  = new StringBuffer(QUIT_ROOM_SUCCESS).append(roomId).append(userId);
+        if (!redisTemplate.opsForValue().setIfAbsent(sb.toString(),userId,1l, TimeUnit.SECONDS)){
+            log.info("quitRoomSuccess break: roomId={}, userId={}", roomId, userId);
+            return;
         }
         ImNetworkRoomMember roomMember = imNetworkRoomMemberService.getDao().findByRidAndUid(roomId, userId);
-        //删除用户信息
-        imNetworkRoomMemberService.getDao().delByRidAndUid(roomId,userId);
-        //发送退出房间的消息
-        ImNetworkRoomMemberChangedMessage msg = new ImNetworkRoomMemberChangedMessage(roomMember,ImNetworkRoomMemberChangedEnum.JOIN);
-        imHelper.publishMessage(userId.toString(), roomId, msg);
-        imHelper.quit(new String[]{userId.toString()}, roomId);
-        //记录考勤信息
-        //是否删除房间信息
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void leaveRoomSuccess(String roomId, Long userId) throws Exception {
-        log.info("leaveRoomSuccess: roomId={}, userId={}", roomId, userId);
+        if(Objects.isNull(roomMember)){
+            return;
+        }
         CourseSchedule courseSchedule = Optional.ofNullable(courseScheduleService.getById(roomId))
                 .orElseThrow(()->new BizException("房间信息不存在"));
+        Long courseScheduleId = courseSchedule.getId();
         UserRoleEnum roleEnum = UserRoleEnum.STUDENT;
         if(Objects.equals(courseSchedule.getTeacherId(),userId)){
             roleEnum = UserRoleEnum.TEACHER;
         }
         //记录考勤信息
-
         ImNetworkRoom room = baseMapper.findByRoomId(roomId);
         if (roleEnum == UserRoleEnum.TEACHER){
+            //如果老师退出房间,关闭伴奏
+            courseScheduleStudentMusicSheetService.getDao().closePlayStatus(courseScheduleId,null);
+            courseScheduleStudentPaymentService.getDao().adjustPlayMidi(courseScheduleId, null, null);
+            courseScheduleStudentPaymentService.getDao().adjustExamSong(courseScheduleId, null, null);
             if (isUserDisplay(room.getDisplay(), userId)) {
                 room.setDisplay("");
                 this.updateDisplay(userId,room);
@@ -229,7 +217,6 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
             //老师退出房间,初始化节拍器和伴奏播放配置
             courseScheduleStudentPaymentService.adjustPlayMidiAndMusicSheet(courseSchedule.getId(), null, null,"");
         }
-        ImNetworkRoomMember roomMember = imNetworkRoomMemberService.getDao().findByRidAndUid(roomId, userId);
         int memberNum = imNetworkRoomMemberService.getDao().countByRoomId(roomId);
         if (memberNum <= 1) {
             imHelper.dismiss(userId.toString(), roomId);
@@ -363,7 +350,7 @@ public class ImNetworkRoomServiceImpl extends ServiceImpl<ImNetworkRoomDao, ImNe
         String roomId = deviceControl.getRoomId();
         Long userId = deviceControl.getUserId();
         Boolean enable = deviceControl.getEnable();
-        log.info("controlDevice: roomId:{} ,deviceType:{} ,enable:{} ,userId:{}", roomId,deviceControl.getDeviceType(),enable);
+        log.info("controlDevice: roomId:{} ,deviceType:{} ,enable:{} ,userId:{}", roomId,deviceControl.getDeviceType(),enable,userId);
         if(enable){
             long scheduleId = Long.parseLong(roomId);
             ImNetworkDeviceStateChangedMessage deviceResourceMessage = new ImNetworkDeviceStateChangedMessage(deviceControl.getDeviceType().ordinal(),enable);

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetAuthRecordDao;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAuthRecord;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetAuthRecordService;
 import com.yonge.toolset.base.exception.BizException;
 import org.springframework.stereotype.Service;
@@ -22,6 +23,12 @@ public class MusicSheetAuthRecordServiceImpl extends ServiceImpl<MusicSheetAuthR
     @Transactional(rollbackFor = Exception.class)
     public boolean audit(TeacherMusicSheetAuditReq param, Long userId) {
 
+        // 删除审核中的状态
+        this.lambdaUpdate()
+                .eq(MusicSheetAuthRecord::getMusicSheetId,param.getMusicSheetId())
+                .eq(MusicSheetAuthRecord::getAuditState, AuthStatusEnum.DOING.getCode())
+                .remove();
+
         MusicSheetAuthRecord musicSheetAuthRecord = new MusicSheetAuthRecord();
         musicSheetAuthRecord.setMusicSheetId(param.getMusicSheetId());
         musicSheetAuthRecord.setCreateTime(new Date());
@@ -30,4 +37,19 @@ public class MusicSheetAuthRecordServiceImpl extends ServiceImpl<MusicSheetAuthR
         musicSheetAuthRecord.setVerifyUserId(userId);
         return this.saveOrUpdate(musicSheetAuthRecord);
     }
+
+    @Override
+    public void setAuditDoing(Long musicSheetId) {
+        List<MusicSheetAuthRecord> list = this.lambdaQuery()
+                                              .eq(MusicSheetAuthRecord::getMusicSheetId, musicSheetId)
+                                              .eq(MusicSheetAuthRecord::getAuditState, AuthStatusEnum.DOING.getCode())
+                                              .list();
+        if (!CollectionUtils.isEmpty(list)) {
+            return;
+        }
+        MusicSheetAuthRecord musicSheetAuthRecord = new MusicSheetAuthRecord();
+        musicSheetAuthRecord.setMusicSheetId(musicSheetId);
+        musicSheetAuthRecord.setAuditState(AuthStatusEnum.DOING);
+        this.saveOrUpdate(musicSheetAuthRecord);
+    }
 }

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

@@ -109,6 +109,10 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         musicSheet.setState(YesOrNoEnum.NO);
         this.saveOrUpdate(musicSheet);
 
+        if (AuthStatusEnum.DOING.getCode().equals(musicSheet.getAuditStatus().getCode())) {
+            musicSheetAuthRecordService.setAuditDoing(musicSheet.getId());
+        }
+
         Long sheetId = musicSheet.getId();
         List<MusicSheetAccompaniment> list = musicSheetDto.getBackground();
         list.forEach(musicSheetAccompaniment -> musicSheetAccompaniment.setMusicSheetId(sheetId).setCreateBy(userId).setCreateTime(new Date()));
@@ -376,7 +380,12 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
             musicSheet.setUpdateTime(new Date());
             musicSheet.setUpdateBy(userId);
             musicSheet.setState(YesOrNoEnum.NO);
-            return this.saveOrUpdate(musicSheet);
+            this.saveOrUpdate(musicSheet);
+            if (AuthStatusEnum.DOING.getCode().equals(musicSheet.getAuditStatus().getCode())) {
+                musicSheetAuthRecordService.setAuditDoing(musicSheet.getId());
+            }
+
+            return true;
         }
     }
 

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetDetailVo.java

@@ -37,6 +37,17 @@ public class MusicSheetDetailVo extends MusicSheet {
     @ApiModelProperty("声部名")
     private String subjectNames;
 
+    @ApiModelProperty("声部code")
+    private String code;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
     public String getUserAvatar() {
         return userAvatar;
     }

+ 2 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -808,14 +808,14 @@
         </foreach>)
     </update>
     <update id="updateEndTime">
-        UPDATE course_schedule SET status_='COMPLETE',settlement_time_=NOW() WHERE id_ IN(
+        UPDATE course_schedule SET status_='COMPLETE' WHERE id_ IN(
         <foreach collection="list" item="item" index="index" open="" close="" separator=",">
             #{item.courseId}
         </foreach>)
     </update>
     <update id="updateTeacherSalary" parameterType="java.util.List">
         UPDATE course_schedule_teacher_salary
-        SET status_='COMPLETE'
+        SET status_='COMPLETE',settlement_time_=NOW()
         WHERE course_schedule_id_ IN
         <foreach collection="list" item="item" open="(" separator="," close=")">
             #{item}

+ 6 - 6
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -54,7 +54,7 @@
         </where>
     </update>
     <update id="adjustExamSong">
-        UPDATE course_schedule_student_payment SET music_sheet_download_json_ = #{examSongJson}
+        UPDATE course_schedule_student_payment SET music_sheet_download_json_ = #{musicSheetJson}
         WHERE course_id_ = #{courseScheduleId}
         <if test="userId != null">
             AND user_id_ = #{userId}
@@ -64,17 +64,17 @@
         UPDATE course_schedule_student_payment cssp
         <set>
             <if test="content == null or content == ''">
-                cssp.open_play_midi_ = NULL,cssp.updated_time_ = NOW(),
+                cssp.play_midi_ = NULL,cssp.updated_time_ = NOW(),
             </if>
             <if test="content != null and content != ''">
-                cssp.open_play_midi_ = #{content},cssp.updated_time_ = NOW(),
+                cssp.play_midi_ = #{content},cssp.updated_time_ = NOW(),
             </if>
-            <if test="examSongJson != null">
-                cssp.exam_song_download_json_ = #{examSongJson}
+            <if test="musicSheetJson != null">
+                cssp.music_sheet_download_json_ = #{musicSheetJson}
             </if>
         </set>
         <where>
-            cssp.course_schedule_id_ = #{courseScheduleId}
+            cssp.course_id_ = #{scheduleId}
             <if test="userId != null and userId != ''">
                 AND FIND_IN_SET(cssp.user_id_,#{userId})
             </if>

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

@@ -53,7 +53,7 @@
         SELECT <include refid="Base_Column_List"/> FROM im_network_room_member WHERE room_id_ = #{roomId}
     </select>
     <select id="countByRoomId" resultType="java.lang.Integer">
-        SELECT id_ FROM im_network_room_member WHERE room_id_ = #{roomId}
+        SELECT COUNT(id_) FROM im_network_room_member WHERE room_id_ = #{roomId}
     </select>
     <select id="findByRoomAndRole" resultMap="BaseResultMap">
         SELECT <include refid="Base_Column_List"/> FROM im_network_room_member WHERE room_id_ = #{roomId} AND role_ = #{role}

+ 5 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -178,11 +178,12 @@
         ,su.avatar_ as userAvatar
         ,(select group_concat(mt.name_) from music_tag mt
         where find_in_set(mt.id_,t.music_tag_) and mt.del_flag_ = 0) as musicTagNames
-        ,(select group_concat(s.name_) from subject s
-        where find_in_set(s.id_,t.music_subject_)  and s.del_flag_ = 0) as subjectNames
+        ,s2.name_ as subjectNames
+        ,s2.code_ as code
         FROM music_sheet t
         left join music_sheet_accompaniment msa on msa.music_sheet_id_ = t.id_
         left join sys_user su on t.create_by_ = su.id_
+        left join subject s2 on t.music_subject_ = s2.id_
         where t.id_ = #{id}
          order by  msa.sort_number_
     </select>
@@ -431,7 +432,7 @@
         ,ms.play_speed_ as playSpeed
         ,ms.music_price_ as musicPrice
         ,ms.create_time_ as createTime
-        ,ms.audit_status_ as auditStatus
+        ,msar.audit_state_ as auditStatus
         ,su2.username_ as auditName
         from music_sheet ms
         left join sys_user su on su.id_ = ms.create_by_
@@ -448,7 +449,7 @@
                 and su2.username_ like concat('%',#{param.auditName},'%')
             </if>
             <if test="param.authStatus != null">
-                and ms.audit_status_ = #{param.authStatus}
+                and msar.audit_state_ = #{param.authStatus}
             </if>
             <if test="param.startTime != null">
                 and ms.create_time_ &gt; #{param.startTime}

+ 6 - 3
cooleshow-user/user-classroom/src/main/java/com/yonge/cooleshow/classroom/controller/ImNetworkRoomController.java

@@ -4,6 +4,7 @@ package com.yonge.cooleshow.classroom.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.yonge.cooleshow.biz.dal.dto.*;
 import com.yonge.cooleshow.biz.dal.service.ImNetworkRoomService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.exception.BizException;
@@ -36,6 +37,8 @@ public class ImNetworkRoomController extends BaseController {
      */
     @Resource
     private ImNetworkRoomService imNetworkRoomService;
+    @Resource
+    private SysUserService sysUserService;
 
     @ApiOperation("加入网络教室")
     @PostMapping(value = "/join")
@@ -73,7 +76,7 @@ public class ImNetworkRoomController extends BaseController {
                 break;
             case 12:
                 //成员退出
-                imNetworkRoomService.leaveRoomSuccess(notify.getRoomId(),Long.parseLong(notify.getUserId()));
+                imNetworkRoomService.quitRoomSuccess(notify.getRoomId(),Long.parseLong(notify.getUserId()));
                 break;
         }
     }
@@ -81,9 +84,9 @@ public class ImNetworkRoomController extends BaseController {
     @ApiOperation("退出网络教室")
     @PostMapping(value = "/leave")
     public HttpResponseResult leaveRoom(@RequestBody ImNetworkBaseDto imNetworkBaseDto) throws Exception {
-        imNetworkRoomService.leaveRoom(Optional.ofNullable(imNetworkBaseDto)
+        imNetworkRoomService.quitRoomSuccess(Optional.ofNullable(imNetworkBaseDto)
                 .map(ImNetworkBaseDto::getRoomId)
-                .orElseThrow(()->new BizException("房间号不可为空")).toString());
+                .orElseThrow(()->new BizException("房间号不可为空")).toString(),sysUserService.getUserId());
         return succeed();
     }
 

+ 2 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java

@@ -159,8 +159,9 @@ public class TeacherCourseScheduleController extends BaseController {
     //测试未约满课老师
     @GetMapping("/test")
     public HttpResponseResult<Object> test(Integer amount) {
+//        courseScheduleService.scheduleTask();
 //        return succeed(courseScheduleService.getTeacherId(amount));
-        courseScheduleService.scheduleTask();
+//        courseScheduleService.scheduleTask();
         return succeed();
     }
 

+ 4 - 0
toolset/utils/src/main/java/com/yonge/toolset/utils/date/DateUtil.java

@@ -1453,6 +1453,10 @@ public class DateUtil {
 		return sdf1.format(calendar1.getTime());
 	}
 
+	public static Date getYesterday(){
+		return new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
+	}
+
 	public static void main(String[] args) throws ParseException {
 		// DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 		DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");