yangys
2024-04-04 ed4a5236bab800094be4a8378f5098eebe3de6ac
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
129
130
131
132
133
134
135
package com.qianwen.smartman.modules.notify.controller;
 
import java.util.List;
 
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.qianwen.core.boot.ctrl.BladeController;
import com.qianwen.core.mp.support.Condition;
import com.qianwen.core.mp.support.Query;
import com.qianwen.core.scanner.modular.annotation.DeleteResource;
import com.qianwen.core.scanner.modular.annotation.GetResource;
import com.qianwen.core.scanner.modular.annotation.PostResource;
import com.qianwen.core.scanner.modular.annotation.PutResource;
import com.qianwen.core.scanner.modular.stereotype.ApiResource;
import com.qianwen.core.secure.BladeUser;
import com.qianwen.core.tool.api.R;
import com.qianwen.smartman.common.cache.RegionCache;
import com.qianwen.smartman.modules.notify.convert.NotificationConvert;
import com.qianwen.smartman.modules.notify.convert.NotifySubscriberConvert;
import com.qianwen.smartman.modules.notify.dto.Notification;
import com.qianwen.smartman.modules.notify.dto.NotifySubscriberDTO;
import com.qianwen.smartman.modules.notify.entity.NotificationEntity;
import com.qianwen.smartman.modules.notify.entity.NotifySubscriberEntity;
import com.qianwen.smartman.modules.notify.service.INotificationService;
import com.qianwen.smartman.modules.notify.service.INotifySubscriberService;
 
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
 
@ApiResource({"blade-notify/notifications"})
@Api(value = "系统通知管理", tags = {"系统通知管理"})
@RestController
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/notify/controller/NotificationController.class */
public class NotificationController extends BladeController {
    private final INotificationService notificationService;
    private final INotifySubscriberService subscriberService;
 
 
    public NotificationController(final INotificationService notificationService, final INotifySubscriberService subscriberService) {
        this.notificationService = notificationService;
        this.subscriberService = subscriberService;
    }
 
    @ApiOperationSupport(order = 1)
    @GetResource({"/subscriptions/query"})
    @ApiOperation(value = "查询当前用户订阅信息", notes = "查询当前用户订阅信息")
    public R<IPage<NotifySubscriberDTO>> querySubscription(Query query, BladeUser bladeUser) {
        IPage<NotifySubscriberEntity> pages = this.subscriberService.page(Condition.getPage(query), 
                Wrappers.<NotifySubscriberEntity>query().lambda()
                .eq(NotifySubscriberEntity::getSubscriber, bladeUser.getUserId()));
        /*
        IPage<NotifySubscriberEntity> pages = this.subscriberService.page(Condition.getPage(query), (Wrapper) Wrappers.query().lambda().eq((v0) -> {
            return v0.getSubscriber();
        }, bladeUser.getUserId()));*/
        return R.data(NotifySubscriberConvert.INSTANCE.convertToPage(pages));
    }
 
    @ApiOperationSupport(order = 2)
    @PutResource({"/subscription/{id}/{state}"})
    @ApiOperation(value = "修改通知订阅状态", notes = "修改通知订阅状态")
    public R<String> changeSubscribeState(@PathVariable("id") String id, @PathVariable("state") Integer state) {
        LambdaUpdateWrapper<NotifySubscriberEntity> updateWrapper = Wrappers.<NotifySubscriberEntity>update().lambda()
                .set(NotifySubscriberEntity::getStatus, state).eq(NotifySubscriberEntity::getId, id);
        
        return R.status(this.subscriberService.update(updateWrapper));
        /*
        return R.status(this.subscriberService.update((LambdaUpdateWrapper) ((LambdaUpdateWrapper) Wrappers.update().lambda().set((v0) -> {
            return v0.getStatus();
        }, state)).eq((v0) -> {
            return v0.getId();
        }, id)));*/
    }
 
    @ApiOperationSupport(order = 3)
    @DeleteResource({"/subscription/{id}"})
    @ApiOperation(value = "删除订阅", notes = "删除订阅")
    public R<String> deleteSubscription(@PathVariable("id") String id, BladeUser bladeUser) {
        return R.status(this.subscriberService
                .remove(Wrappers.<NotifySubscriberEntity>lambdaQuery()
                  .eq(NotifySubscriberEntity::getId, id)
                  .eq(NotifySubscriberEntity::getSubscriber, bladeUser.getUserId())));
        /*
        return R.status(this.subscriberService.remove((Wrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
            return v0.getId();
        }, id)).eq((v0) -> {
            return v0.getSubscriber();
        }, bladeUser.getUserId())));*/
    }
 
    @ApiOperationSupport(order = 4)
    @PostResource({"/subscribe"})
    @ApiOperation(value = "订阅通知", notes = "订阅通知")
    public R<String> doSubscribe(@RequestBody NotifySubscriberDTO subscribe) {
        return R.status(this.subscriberService.save(NotifySubscriberConvert.INSTANCE.convertToEntity(subscribe)));
    }
 
    @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL)
    @GetResource({"/query"})
    @ApiOperation(value = "查询通知记录", notes = "查询通知记录")
    public R<IPage<Notification>> queryMyNotifications(Notification notification, Query query) {
        IPage<NotificationEntity> pages = this.notificationService.page(Condition.getPage(query), Condition.getQueryWrapper(NotificationConvert.INSTANCE.convertToEntity(notification)));
        return R.data(NotificationConvert.INSTANCE.convertToPage(pages));
    }
 
    @ApiOperationSupport(order = 6)
    @GetResource({"/{id}/read"})
    @ApiOperation(value = "获取通知记录", notes = "获取通知记录")
    public R<Notification> readNotification(@PathVariable("id") String id) {
        return R.data(NotificationConvert.INSTANCE.convertToDto(this.notificationService.findAndMarkRead(id)));
    }
 
    @ApiOperationSupport(order = 7)
    @PostResource({"/{state}"})
    @ApiOperation("修改通知状态 1已读")
    public R<String> changeNotificationState(@RequestBody List<String> idList, @PathVariable("state") Integer state, BladeUser bladeUser) {
        LambdaUpdateWrapper<NotificationEntity> updateWrapper = Wrappers.<NotificationEntity>update().lambda()
                .set(NotificationEntity::getStatus, state).eq(NotificationEntity::getSubscriber, bladeUser.getUserId()).in(NotificationEntity::getId, idList);
        return R.status(this.notificationService.update(updateWrapper));
        
        /*
        return R.status(this.notificationService.update((LambdaUpdateWrapper) ((LambdaUpdateWrapper) ((LambdaUpdateWrapper) Wrappers.update().lambda().set((v0) -> {
            return v0.getStatus();
        }, state)).eq((v0) -> {
            return v0.getSubscriber();
        }, bladeUser.getUserId())).in((v0) -> {
            return v0.getId();
        }, idList)));*/
    }
}