无关风月
2024-11-04 64f7ccb9ef8b5a0618e65cddc14b981c1f108ba3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.xinquan.user.controller.client;
 
 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.page.BeanUtils;
import com.xinquan.common.core.utils.page.CollUtils;
import com.xinquan.common.core.utils.page.PageDTO;
import com.xinquan.common.core.web.domain.BaseModel;
import com.xinquan.common.security.service.TokenService;
import com.xinquan.common.security.utils.SecurityUtils;
import com.xinquan.meditation.api.feign.RemoteMeditationService;
import com.xinquan.system.api.domain.AppUser;
import com.xinquan.system.api.domain.NoticeRecord;
import com.xinquan.meditation.api.domain.vo.NoticeDetailVO;
import com.xinquan.system.api.model.LoginUser;
import com.xinquan.user.service.AppUserService;
import com.xinquan.user.service.NoticeRecordService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import java.time.format.DateTimeFormatter;
 
/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author mitao
 * @since 2024-09-09
 */
@RestController
@RequestMapping("/client/user/notice-record")
public class ClientNoticeRecordController {
 
    @Resource
    private NoticeRecordService noticeRecordService;
    @Resource
    private AppUserService appUserService;
    @Resource
    private RemoteMeditationService remoteMeditationService;
    @PostMapping("/noticeList")
    @ApiOperation(value = "系统消息列表",tags = "系统消息")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"),
            @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer")
    })
    public R<PageDTO<NoticeRecord>> noticeList(Integer pageCurr, Integer pageSize) {
        LoginUser loginUser = tokenService.getLoginUser();
        if (loginUser==null){
            return R.tokenError("登录失效");
        }
        Long userId = loginUser.getUserid();
        if(userId ==null || userId == 0)return R.tokenError("登录失效");
        Page<NoticeRecord> page = noticeRecordService.lambdaQuery()
                .eq(NoticeRecord::getAppUserId, userId)
                .orderByDesc(BaseModel::getCreateTime)
                .page(new Page<>(pageCurr, pageSize));
        if (CollUtils.isEmpty(page.getRecords())){
            PageDTO<NoticeRecord> empty = PageDTO.empty(page);
            return R.ok(empty);
        }
        PageDTO<NoticeRecord> noticeRecordPageDTO = PageDTO.of(page, NoticeRecord.class);
        for (NoticeRecord noticeRecord : noticeRecordPageDTO.getList()) {
            noticeRecord.setTime(noticeRecord.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        }
        return R.ok(noticeRecordPageDTO);
    }
    @PostMapping("/noticeDetail")
    @ApiOperation(value = "系统消息列表-查看详情",tags = "系统消息")
    public R<NoticeDetailVO> wallet(Long id) {
 
        LoginUser loginUser = tokenService.getLoginUser();
        if (loginUser==null){
            return R.tokenError("登录失效");
        }
        Long userId = loginUser.getUserid();
        NoticeRecord noticeRecord = noticeRecordService.getById(id);
        // 设置为已读
        noticeRecord.setReadStatus(2);
        noticeRecordService.updateById(noticeRecord);
        NoticeDetailVO noticeDetailVO = new NoticeDetailVO();
        BeanUtils.copyProperties(noticeRecord,noticeDetailVO);
        if (noticeRecord!=null && noticeRecord.getMeditationQuestionId()!=null){
            // 远程调用 根据冥想提问id 查询数据
            noticeDetailVO.setMeditationQuestionId(noticeRecord.getMeditationQuestionId());
//            NoticeDetailVO data = remoteMeditationService.noticeDetail(noticeDetailVO).getData();
            AppUser byId = appUserService.getById(userId);
            noticeDetailVO.setNickname(byId.getNickname());
            noticeDetailVO.setAvatar(byId.getAvatar());
            noticeDetailVO.setRealname(byId.getRealname());
        }
        return R.ok(noticeDetailVO);
    }
    @Autowired
    private TokenService tokenService;
    @PostMapping("/queryNotice")
    @ApiOperation(value = "是否有未读消息 true是 false否",tags = "系统消息")
    public R<Boolean> queryNotice() {
        LoginUser loginUser = tokenService.getLoginUser();
        if (loginUser==null){
            return R.tokenError("登录失效");
        }
        Long userId = loginUser.getUserid();
        int size = noticeRecordService.lambdaQuery()
                .eq(NoticeRecord::getAppUserId, userId)
                .eq(NoticeRecord::getReadStatus, 1).list().size();
        if (size>0)return R.ok(true);
        return R.ok(false);
    }
 
    /**
     * 后台远程调用 新增回复消息
     * @return
     */
    @PostMapping("/addNoticeReplay")
    public R addNoticeReplay(@RequestBody NoticeRecord noticeRecord) {
        noticeRecordService.save(noticeRecord);
        return R.ok();
    }
}