From a2659cb192d9a19f96dde21a188f88ff5ad729ad Mon Sep 17 00:00:00 2001 From: tortoise <2891138827@qq.com> Date: Mon, 9 Sep 2024 00:48:24 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=99=AE=E9=80=9A=E6=88=90=E5=91=98?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=90=91=E7=AE=A1=E7=90=86=E5=91=98=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=92=A4=E9=94=80=E6=9F=90=E4=B8=80=E4=B8=AA=E5=A5=96?= =?UTF-8?q?=E6=83=A9=E8=AE=B0=E5=BD=95=202.=20=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E5=8F=AF=E6=9F=A5=E7=9C=8B=E6=89=80=E6=9C=89=E6=88=90=E5=91=98?= =?UTF-8?q?=E7=9A=84=E7=94=B3=E8=AF=B7=E6=92=A4=E9=94=80=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=EF=BC=8C=E5=90=8C=E6=A0=B7=E9=9C=80=E5=88=86=E9=A1=B5=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sims/controller/RevokedController.java | 67 ++++++++++++++++++- .../suyiiyii/sims/dto/RevokeRequestDto.java | 32 +++++++++ .../suyiiyii/sims/entity/Notification.java | 2 +- .../suyiiyii/sims/entity/RevokeRequest.java | 4 +- .../suyiiyii/sims/entity/RevokedRecord.java | 2 +- ...dMapper.java => MpNotificationMapper.java} | 8 +-- .../sims/mapper/MpRevRequestMapper.java | 21 ++++++ .../suyiiyii/sims/mapper/RecordMapper.java | 2 + .../sims/service/NotificationService.java | 33 +++++++++ .../suyiiyii/sims/service/RecordService.java | 4 ++ .../suyiiyii/sims/service/RevokedService.java | 18 ++++- 11 files changed, 179 insertions(+), 14 deletions(-) create mode 100644 src/main/java/top/suyiiyii/sims/dto/RevokeRequestDto.java rename src/main/java/top/suyiiyii/sims/mapper/{MpRevRecordMapper.java => MpNotificationMapper.java} (52%) create mode 100644 src/main/java/top/suyiiyii/sims/mapper/MpRevRequestMapper.java create mode 100644 src/main/java/top/suyiiyii/sims/service/NotificationService.java diff --git a/src/main/java/top/suyiiyii/sims/controller/RevokedController.java b/src/main/java/top/suyiiyii/sims/controller/RevokedController.java index f13741f..bcab8d7 100644 --- a/src/main/java/top/suyiiyii/sims/controller/RevokedController.java +++ b/src/main/java/top/suyiiyii/sims/controller/RevokedController.java @@ -1,13 +1,28 @@ package top.suyiiyii.sims.controller; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; +import lombok.Data; import lombok.extern.slf4j.Slf4j; +import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import top.suyiiyii.sims.common.AuthAccess; +import top.suyiiyii.sims.common.Result; +import top.suyiiyii.sims.dto.CommonResponse; +import top.suyiiyii.sims.dto.RecordDto; +import top.suyiiyii.sims.dto.RevokeRequestDto; +import top.suyiiyii.sims.entity.RevokeRequest; +import top.suyiiyii.sims.exception.ServiceException; +import top.suyiiyii.sims.service.CategoryService; +import top.suyiiyii.sims.service.NotificationService; +import top.suyiiyii.sims.service.RecordService; import top.suyiiyii.sims.service.RevokedService; +import java.util.ArrayList; +import java.util.List; + /** * @Author tortoise * @Date 2024/9/6 10:03 @@ -22,9 +37,55 @@ import top.suyiiyii.sims.service.RevokedService; public class RevokedController { @Autowired RevokedService revokedService; + @Autowired + ModelMapper modelMapper; + @Autowired + NotificationService notificationService; + @Autowired + CategoryService categoryService; +@Autowired + RecordService recordService; //TODO 普通成员向管理员申请撤销 + @AuthAccess(allowRoles = {"user"}) + @Operation(summary = "成员申请撤销") + @PostMapping("/revoked") + public Result revoked(@RequestBody Request request) { + if(request.getReason().isBlank()) { + throw new ServiceException("撤销原因不能为空"); + } + RevokeRequest revokeRequest = modelMapper.map(request, RevokeRequest.class); + + revokedService.addRevokeRequest(revokeRequest); + //发送通知给管理员 + notificationService.addNotification(revokeRequest); + return Result.success(CommonResponse.factory("申请成功")); + } //TODO 管理员查看所有撤销申请 - + @AuthAccess(allowRoles = {"admin"}) + @Operation(summary = "管理员查看所有撤销申请") + @GetMapping("/revoked") + public Result> revoked( + @RequestParam(defaultValue = "0") int page, + @RequestParam(defaultValue = "10") int size) { + List revokeRequests = revokedService.getAll(page, size); + List revokeRequestDtos = new ArrayList<>(); + for (RevokeRequest revokeRequest : revokeRequests) { + RevokeRequestDto revokeRequestDto = modelMapper.map(revokeRequest, RevokeRequestDto.class); + revokeRequestDto.setCategoryName(categoryService.getCategoryName(recordService.getCategoryIdById(revokeRequest.getRecordId()))); + revokeRequestDto.setSubCategoryName(categoryService.getsubCategoryName(recordService.getCategoryIdById(revokeRequest.getRecordId()))); + revokeRequestDtos.add(revokeRequestDto); + } + return Result.success(revokeRequestDtos); + } //TODO 管理员可以撤销某一成员的奖励或惩罚记录,需填写撤销原因,撤销备注 + + + @Data + public static class Request { + private Integer userId; + private Integer recordId; + private String reason; + private Long requestTime; + } } diff --git a/src/main/java/top/suyiiyii/sims/dto/RevokeRequestDto.java b/src/main/java/top/suyiiyii/sims/dto/RevokeRequestDto.java new file mode 100644 index 0000000..d427298 --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/dto/RevokeRequestDto.java @@ -0,0 +1,32 @@ +package top.suyiiyii.sims.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author tortoise + * @Date 2024/9/8 21:34 + * @PackageName:top.suyiiyii.sims.dto + * @ClassName: RevokeRequestDto + * @Description: TODO + * @Version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RevokeRequestDto { + private Integer id; + private String categoryName; + private String subCategoryName; + private Integer userId; + private String reason; + private Long requestTime; + private String status; + //处理时间 + private Long handleTime; + private String adminRemark; + +} diff --git a/src/main/java/top/suyiiyii/sims/entity/Notification.java b/src/main/java/top/suyiiyii/sims/entity/Notification.java index c28cddb..b387bd5 100644 --- a/src/main/java/top/suyiiyii/sims/entity/Notification.java +++ b/src/main/java/top/suyiiyii/sims/entity/Notification.java @@ -27,7 +27,7 @@ public class Notification { private String title; private String content; private Integer senderId; - private LocalDateTime createdAt; + private Long createdAt; private String status; private String type; private Integer targetUserId; diff --git a/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java b/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java index 65218c9..b6505cc 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java +++ b/src/main/java/top/suyiiyii/sims/entity/RevokeRequest.java @@ -27,10 +27,10 @@ public class RevokeRequest { private Integer recordId; private Integer userId; private String reason; - private LocalDateTime requestTime; + private Long requestTime; private String status; //处理时间 - private LocalDateTime handleTime; + private Long handleTime; private String adminRemark; } diff --git a/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java b/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java index 3918cd7..88f1037 100644 --- a/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java +++ b/src/main/java/top/suyiiyii/sims/entity/RevokedRecord.java @@ -31,7 +31,7 @@ public class RevokedRecord { // 撤销原因 private String reason; // 撤销时间 - private LocalDateTime revokedTime; + private Long revokedTime; } diff --git a/src/main/java/top/suyiiyii/sims/mapper/MpRevRecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/MpNotificationMapper.java similarity index 52% rename from src/main/java/top/suyiiyii/sims/mapper/MpRevRecordMapper.java rename to src/main/java/top/suyiiyii/sims/mapper/MpNotificationMapper.java index 9ca809f..a414820 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/MpRevRecordMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/MpNotificationMapper.java @@ -1,15 +1,15 @@ package top.suyiiyii.sims.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import top.suyiiyii.sims.entity.RevokedRecord; +import top.suyiiyii.sims.entity.Notification; /** * @Author tortoise - * @Date 2024/9/6 10:04 + * @Date 2024/9/8 20:50 * @PackageName:top.suyiiyii.sims.mapper - * @ClassName: MpRevRecordMapper + * @ClassName: MpNotificationMapper * @Description: TODO * @Version 1.0 */ -public interface MpRevRecordMapper extends BaseMapper { +public interface MpNotificationMapper extends BaseMapper { } diff --git a/src/main/java/top/suyiiyii/sims/mapper/MpRevRequestMapper.java b/src/main/java/top/suyiiyii/sims/mapper/MpRevRequestMapper.java new file mode 100644 index 0000000..3104128 --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/mapper/MpRevRequestMapper.java @@ -0,0 +1,21 @@ +package top.suyiiyii.sims.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; +import top.suyiiyii.sims.entity.RevokeRequest; + +import java.util.List; + +/** + * @Author tortoise + * @Date 2024/9/6 10:04 + * @PackageName:top.suyiiyii.sims.mapper + * @ClassName: MpRevRequestMapper + * @Description: TODO + * @Version 1.0 + */ + +public interface MpRevRequestMapper extends BaseMapper { + @Select("select * from revoke_request limit #{page},#{size}") + List selectList(int page, int size); +} diff --git a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java index a35517c..7605de8 100644 --- a/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java +++ b/src/main/java/top/suyiiyii/sims/mapper/RecordMapper.java @@ -81,4 +81,6 @@ public interface RecordMapper { List getRecordsById(int page, int size, Integer sid); @Select("SELECT id FROM record WHERE id = #{id}") Integer IsRecord(Integer id); +@Select("SELECT category_id FROM record WHERE id = #{id}") + Integer getCategoryIdById(Integer id); } diff --git a/src/main/java/top/suyiiyii/sims/service/NotificationService.java b/src/main/java/top/suyiiyii/sims/service/NotificationService.java new file mode 100644 index 0000000..e80b7bb --- /dev/null +++ b/src/main/java/top/suyiiyii/sims/service/NotificationService.java @@ -0,0 +1,33 @@ +package top.suyiiyii.sims.service; + +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import top.suyiiyii.sims.entity.Notification; +import top.suyiiyii.sims.entity.RevokeRequest; +import top.suyiiyii.sims.mapper.MpNotificationMapper; + +/** + * @Author tortoise + * @Date 2024/9/8 20:50 + * @PackageName:top.suyiiyii.sims.service + * @ClassName: NotificationService + * @Description: TODO + * @Version 1.0 + */ +@Service +public class NotificationService { + @Autowired + MpNotificationMapper mpNotificationMapper; + public void addNotification(RevokeRequest revokeRequest) { + Notification notification = new Notification(); + notification.setSenderId(revokeRequest.getUserId()); + notification.setTitle("申请撤销"); + notification.setContent(revokeRequest.getReason()); + notification.setType("申请"); + notification.setCreatedAt(revokeRequest.getRequestTime()); + notification.setStatus("未处理"); + notification.setTargetUserId(-1); + mpNotificationMapper.insert(notification); + } +} diff --git a/src/main/java/top/suyiiyii/sims/service/RecordService.java b/src/main/java/top/suyiiyii/sims/service/RecordService.java index 3b525b2..9d4c65c 100644 --- a/src/main/java/top/suyiiyii/sims/service/RecordService.java +++ b/src/main/java/top/suyiiyii/sims/service/RecordService.java @@ -85,4 +85,8 @@ public class RecordService { public Integer IsRecord(Integer id) { return recordMapper.IsRecord(id); } + + public Integer getCategoryIdById(Integer id) { + return recordMapper.getCategoryIdById(id); + } } diff --git a/src/main/java/top/suyiiyii/sims/service/RevokedService.java b/src/main/java/top/suyiiyii/sims/service/RevokedService.java index 7ff5a4c..700283b 100644 --- a/src/main/java/top/suyiiyii/sims/service/RevokedService.java +++ b/src/main/java/top/suyiiyii/sims/service/RevokedService.java @@ -2,8 +2,10 @@ package top.suyiiyii.sims.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import top.suyiiyii.sims.mapper.MpRevRecordMapper; -import top.suyiiyii.sims.mapper.RoleMapper; +import top.suyiiyii.sims.entity.RevokeRequest; +import top.suyiiyii.sims.mapper.MpRevRequestMapper; + +import java.util.List; /** * @Author tortoise @@ -15,6 +17,16 @@ import top.suyiiyii.sims.mapper.RoleMapper; */ @Service public class RevokedService { + @Autowired - MpRevRecordMapper mpRevRecordMapper; + MpRevRequestMapper mpRevRequestMapper; + + public void addRevokeRequest(RevokeRequest revokeRequest) { + revokeRequest.setStatus("待审核"); + mpRevRequestMapper.insert(revokeRequest); + + } + public List getAll(int page, int size){ + return mpRevRequestMapper.selectList(page,size); + } }