无关风月
2024-10-14 039a33d1bfa6ef041161666bbd120c34086fe7c1
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
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.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.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.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) {
        Long userId = SecurityUtils.getUserId();
        if (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) {
        Long userId = SecurityUtils.getUserId();
        if (userId == 0)return R.tokenError("登录失效");
        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);
    }
    @PostMapping("/queryNotice")
    @ApiOperation(value = "是否有未读消息 true是 false否",tags = "系统消息")
    public R<Boolean> queryNotice() {
        Long userId = SecurityUtils.getUserId();
        if (userId == 0)return R.tokenError("登录失效");
        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();
    }
}