mirror of
https://github.com/suyiiyii/SIMS.git
synced 2025-05-31 11:46:42 +08:00
cherry
This commit is contained in:
parent
39cfd99bad
commit
199d4010e5
@ -2,6 +2,8 @@ package top.suyiiyii.sims.controller;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.Data;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -17,6 +19,7 @@ import top.suyiiyii.sims.service.CategoryService;
|
||||
import top.suyiiyii.sims.service.RecordService;
|
||||
import top.suyiiyii.sims.service.RoleService;
|
||||
import top.suyiiyii.sims.service.UserService;
|
||||
import top.suyiiyii.sims.utils.JwtUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
@ -1,13 +1,32 @@
|
||||
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 jakarta.servlet.http.HttpServletRequest;
|
||||
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.*;
|
||||
import top.suyiiyii.sims.common.AuthAccess;
|
||||
import top.suyiiyii.sims.common.JwtInterceptor;
|
||||
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 org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import top.suyiiyii.sims.service.RevokedService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author tortoise
|
||||
* @Date 2024/9/6 10:03
|
||||
@ -22,9 +41,100 @@ 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("")
|
||||
public Result<CommonResponse> 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("")
|
||||
public Result<List<RevokeRequestDto>> revoked(
|
||||
@RequestParam(defaultValue = "0") int page,
|
||||
@RequestParam(defaultValue = "10") int size) {
|
||||
List<RevokeRequest> revokeRequests = revokedService.getAll(page, size);
|
||||
List<RevokeRequestDto> 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 管理员可以撤销某一成员的奖励或惩罚记录,需填写撤销原因,撤销备注
|
||||
|
||||
@AuthAccess(allowRoles = {"admin"})
|
||||
@Operation(summary = "管理员处理撤销申请")
|
||||
@PutMapping("/{id}")
|
||||
public Result<CommonResponse> revoked(@PathVariable Integer id, RevokedRequest revokedRequest, HttpServletRequest request) {
|
||||
String userId = String.valueOf(JwtInterceptor.getUserIdFromReq(request));
|
||||
if(revokedRequest.getAdminRemark().isBlank()) {
|
||||
throw new ServiceException("撤销备注不能为空");
|
||||
}
|
||||
if(!"批准".equals(revokedRequest.getStatus()) && !"拒绝".equals(revokedRequest.getStatus()) ) {
|
||||
throw new ServiceException("状态不合法");
|
||||
}
|
||||
/* if("批准".equals(revokedRequest.getStatus())){
|
||||
recordService.update(id,userId,revokedRequest.getStatus(),revokedRequest.getAdminRemark(),
|
||||
revokedRequest.getReason(),revokedRequest.getHandleTime());
|
||||
}*/
|
||||
|
||||
revokedService.updateRevokeRequest(id,
|
||||
revokedRequest.getStatus(),revokedRequest.getAdminRemark(),
|
||||
revokedRequest.getReason(),revokedRequest.getHandleTime());
|
||||
//TODO 要加到记录里面去
|
||||
revokedService.addRevokedRecord(id,userId,revokedRequest.getReason(),revokedRequest.getHandleTime());
|
||||
|
||||
return Result.success(CommonResponse.factory("申请成功"));
|
||||
}
|
||||
@AuthAccess(allowRoles = {"admin"})
|
||||
@Operation(summary = "撤销单个奖惩记录")
|
||||
@DeleteMapping("/admin/records/{id}")
|
||||
public Result<CommonResponse> adminDeleteRecord(@PathVariable Integer id, String reason, HttpServletRequest request) {
|
||||
Integer i = recordService.IsRecord(id);
|
||||
String userId = String.valueOf(JwtInterceptor.getUserIdFromReq(request));
|
||||
if(i==null) {
|
||||
throw new RuntimeException("该记录不存在");
|
||||
}
|
||||
recordService.revokeUpdate(id,reason,userId);
|
||||
return Result.msg("撤销成功");
|
||||
}
|
||||
|
||||
|
||||
@Data
|
||||
public static class Request {
|
||||
private Integer userId;
|
||||
private Integer recordId;
|
||||
private String reason;
|
||||
private Long requestTime;
|
||||
}
|
||||
@Data
|
||||
public static class RevokedRequest {
|
||||
private String status;
|
||||
private String adminRemark;
|
||||
private String reason;
|
||||
private Long handleTime;
|
||||
}
|
||||
}
|
||||
|
17
src/main/java/top/suyiiyii/sims/mapper/MpRevRecord.java
Normal file
17
src/main/java/top/suyiiyii/sims/mapper/MpRevRecord.java
Normal file
@ -0,0 +1,17 @@
|
||||
package top.suyiiyii.sims.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import top.suyiiyii.sims.entity.RevokeRequest;
|
||||
import top.suyiiyii.sims.entity.RevokedRecord;
|
||||
|
||||
/**
|
||||
* @Author tortoise
|
||||
* @Date 2024/9/9 10:08
|
||||
* @PackageName:top.suyiiyii.sims.mapper
|
||||
* @ClassName: MpRevRecord
|
||||
* @Description: TODO
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface MpRevRecord extends BaseMapper<RevokedRecord> {
|
||||
void addRevokedRecord(Integer id, String userId, String reason, Long handleTime);
|
||||
}
|
@ -81,4 +81,10 @@ public interface RecordMapper {
|
||||
List<Record> 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);
|
||||
@Update("UPDATE record SET is_revoked=#{isRevoked},operator_user_id=#{userId},revoke_remark = #{adminRemark}, revoke_reason = #{reason}, lsat_update_time = #{handleTime} WHERE id = #{id}")
|
||||
void update(Integer id ,Boolean isRevoked,String userId, String adminRemark, String reason, Long handleTime);
|
||||
@Update("UPDATE record SET is_revoked=#{isRevoked},operator_user_id=#{userId},revoke_remark = #{reason}, revoke_reason = #{revokeReason} WHERE id = #{id}")
|
||||
void Rupdate(Integer id, String reason, Boolean isRevoked,String revokeReason, String userId);
|
||||
}
|
||||
|
@ -106,4 +106,15 @@ public class RecordService {
|
||||
List<Integer> availableCatIds = catIds.stream().filter(c -> (catMap.containsKey(c) && (catMap.get(c).getStatus() == null || catMap.get(c).getStatus().equals("enable")))).toList();
|
||||
return recordDtos.stream().filter(r -> availableCatIds.contains(r.getCategoryId())).toList();
|
||||
}
|
||||
|
||||
public void update(Integer id, String userId, String adminRemark, String reason, Long handleTime) {
|
||||
Boolean isRevoked=true;
|
||||
recordMapper.update(id, isRevoked,userId, adminRemark, reason, handleTime);
|
||||
}
|
||||
|
||||
public void revokeUpdate(Integer id, String reason,String userId) {
|
||||
String revokeReason="申请撤销";
|
||||
Boolean isRevoked=true;
|
||||
recordMapper.Rupdate(id, reason,isRevoked,revokeReason,userId);
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,12 @@ package top.suyiiyii.sims.service;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import top.suyiiyii.sims.controller.RevokedController;
|
||||
import top.suyiiyii.sims.entity.RevokeRequest;
|
||||
import top.suyiiyii.sims.mapper.MpRevRecord;
|
||||
import top.suyiiyii.sims.mapper.MpRevRequestMapper;
|
||||
|
||||
import java.util.List;
|
||||
import top.suyiiyii.sims.mapper.MpRevRecordMapper;
|
||||
import top.suyiiyii.sims.mapper.RoleMapper;
|
||||
|
||||
@ -15,6 +21,27 @@ import top.suyiiyii.sims.mapper.RoleMapper;
|
||||
*/
|
||||
@Service
|
||||
public class RevokedService {
|
||||
|
||||
@Autowired
|
||||
MpRevRecordMapper mpRevRecordMapper;
|
||||
MpRevRequestMapper mpRevRequestMapper;
|
||||
@Autowired
|
||||
MpRevRecord mpRevRecord;
|
||||
public void addRevokeRequest(RevokeRequest revokeRequest) {
|
||||
revokeRequest.setStatus("待审核");
|
||||
mpRevRequestMapper.insert(revokeRequest);
|
||||
|
||||
}
|
||||
public List<RevokeRequest> getAll(int page, int size){
|
||||
return mpRevRequestMapper.selectList(page,size);
|
||||
}
|
||||
|
||||
|
||||
public void updateRevokeRequest(Integer id, String status, String adminRemark, String reason, Long handleTime) {
|
||||
|
||||
mpRevRequestMapper.update(id, status, adminRemark, reason, handleTime);
|
||||
}
|
||||
|
||||
public void addRevokedRecord(Integer id, String userId, String reason, Long handleTime) {
|
||||
mpRevRecord.addRevokedRecord(id, userId, reason, handleTime);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user