|  | @@ -7,22 +7,29 @@ import com.microsvc.toolkit.common.response.paging.QueryInfo;
 | 
	
		
			
				|  |  |  import com.microsvc.toolkit.common.response.template.R;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.admin.io.request.SysSuggestionVo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.entity.Student;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.SysMessageConfig;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.SysSuggestionV2;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.service.StudentService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.MessageSendMode;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.SysMessageConfigService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.SysMessageService;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.SysSuggestionV2Service;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.SysUserService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.wrapper.SysMessageWrapper;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.wrapper.SysSuggestionWrapper;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.controller.BaseController;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.Api;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.ApiOperation;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  |  import org.apache.commons.collections.CollectionUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.joda.time.DateTime;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.security.access.prepost.PreAuthorize;
 | 
	
		
			
				|  |  |  import org.springframework.validation.annotation.Validated;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.GetMapping;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.PostMapping;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RequestBody;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RequestHeader;
 | 
	
	
		
			
				|  | @@ -51,6 +58,12 @@ public class SysSuggestionV2Controller extends BaseController {
 | 
	
		
			
				|  |  |      @Resource
 | 
	
		
			
				|  |  |      private SysUserFeignService sysUserFeignService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysMessageService sysMessageService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysMessageConfigService sysMessageConfigService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 查询分页
 | 
	
		
			
				|  |  |       *
 | 
	
	
		
			
				|  | @@ -61,7 +74,7 @@ public class SysSuggestionV2Controller extends BaseController {
 | 
	
		
			
				|  |  |      @PreAuthorize("@pcs.hasPermissions('sysSuggestionV2/page')")
 | 
	
		
			
				|  |  |      @PostMapping("/page")
 | 
	
		
			
				|  |  |      public R<PageInfo<SysSuggestionWrapper.SysSuggestion>> page(@RequestBody SysSuggestionWrapper.SysSuggestionQuery query) {
 | 
	
		
			
				|  |  | -        com.yonge.cooleshow.auth.api.entity.SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |          query.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  |          query.setClientType(ClientEnum.TEACHER);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -79,11 +92,11 @@ public class SysSuggestionV2Controller extends BaseController {
 | 
	
		
			
				|  |  |              if (!handUserIdList.isEmpty()) {
 | 
	
		
			
				|  |  |                  userIdList.addAll(handUserIdList);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            Map<Long, SysUser> userIdMap = sysUserService.getMapByIds(userIdList);
 | 
	
		
			
				|  |  | +            Map<Long, com.yonge.cooleshow.biz.dal.entity.SysUser> userIdMap = sysUserService.getMapByIds(userIdList);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              records.forEach(next -> {
 | 
	
		
			
				|  |  | -                next.setNickname(userIdMap.getOrDefault(next.getUserId(), new SysUser()).getUsername());
 | 
	
		
			
				|  |  | -                next.setHandleName(userIdMap.getOrDefault(next.getHandleBy(), new SysUser()).getUsername());
 | 
	
		
			
				|  |  | +                next.setNickname(userIdMap.getOrDefault(next.getUserId(), new com.yonge.cooleshow.biz.dal.entity.SysUser()).getUsername());
 | 
	
		
			
				|  |  | +                next.setHandleName(userIdMap.getOrDefault(next.getHandleBy(), new com.yonge.cooleshow.biz.dal.entity.SysUser()).getUsername());
 | 
	
		
			
				|  |  |              });
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return R.from(QueryInfo.pageInfo(pages, records));
 | 
	
	
		
			
				|  | @@ -103,9 +116,37 @@ public class SysSuggestionV2Controller extends BaseController {
 | 
	
		
			
				|  |  |                            @RequestHeader(name = "user-agent") String userAgent) {
 | 
	
		
			
				|  |  |          com.yonge.cooleshow.auth.api.entity.SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  |          suggestion.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  | -        suggestion.setUserAgent(userAgent);
 | 
	
		
			
				|  |  | +        String userAgent1 = suggestion.getUserAgent();
 | 
	
		
			
				|  |  | +        if(StringUtils.isEmpty(userAgent1)){
 | 
	
		
			
				|  |  | +            userAgent1 = userAgent;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        suggestion.setUserAgent(userAgent1);
 | 
	
		
			
				|  |  |          suggestion.setClientType(ClientEnum.TEACHER);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return R.from(sysSuggestionService.add(JSON.parseObject(suggestion.jsonString(), SysSuggestionV2.class)));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "未读消息统计", notes = "统计当前用户推送未读消息数")
 | 
	
		
			
				|  |  | +    @PreAuthorize("@pcs.hasPermissions('sysSuggestionV2/suggestMessageUnread')")
 | 
	
		
			
				|  |  | +    @GetMapping("/suggestMessageUnread")
 | 
	
		
			
				|  |  | +    public R<List<SysMessageWrapper.MessageUnreadStat>> suggestMessageUnread() {
 | 
	
		
			
				|  |  | +        SysUser userInfo = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        SysMessageConfig one = sysMessageConfigService.queryByType(MessageTypeEnum.SYS_SUGGEST_FEEDBACK_TEACHER.getCode());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 未读消息统计条件
 | 
	
		
			
				|  |  | +        SysMessageWrapper.SysMessageQuery query = SysMessageWrapper.SysMessageQuery.builder()
 | 
	
		
			
				|  |  | +                .userId(userInfo.getId())
 | 
	
		
			
				|  |  | +                .clientType(ClientEnum.TEACHER)
 | 
	
		
			
				|  |  | +                .readStatus(false)
 | 
	
		
			
				|  |  | +                .type(MessageSendMode.PUSH)
 | 
	
		
			
				|  |  | +                .sendTime(DateTime.now().toDate())
 | 
	
		
			
				|  |  | +                .messageConfigId(one.getId())
 | 
	
		
			
				|  |  | +                .build();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 统计未读消息数
 | 
	
		
			
				|  |  | +        List<SysMessageWrapper.MessageUnreadStat> unreadStats = sysMessageService.userMessageUnreadStat(query);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return R.from(unreadStats);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |