package com.sinata.appointment.controller;
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaMode;
|
import com.sinata.appointment.common.Result;
|
import com.sinata.appointment.common.ResultUtil;
|
import com.sinata.appointment.dto.ApprovalNodeEnabledPatchRequest;
|
import com.sinata.appointment.dto.BookingHolidayMonthWeekendsRequest;
|
import com.sinata.appointment.dto.BookingHolidayToggleRequest;
|
import com.sinata.appointment.dto.BookingSettingsSaveRequest;
|
import com.sinata.appointment.dto.BookingSettingsVo;
|
import com.sinata.appointment.dto.ContentSettingsSaveRequest;
|
import com.sinata.appointment.dto.ContentSettingsVo;
|
import com.sinata.appointment.dto.FieldConfigPatchRequest;
|
import com.sinata.appointment.dto.SensitiveWordCreateRequest;
|
import com.sinata.appointment.dto.SensitiveWordEnabledPatchRequest;
|
import com.sinata.appointment.dto.SensitiveWordListVo;
|
import com.sinata.appointment.dto.SensitiveWordUpdateRequest;
|
import com.sinata.appointment.dto.VisitReasonCreateRequest;
|
import com.sinata.appointment.dto.VisitReasonListVo;
|
import com.sinata.appointment.dto.VisitReasonUpdateRequest;
|
import com.sinata.appointment.dto.VisitorCompetentDeptSaveRequest;
|
import com.sinata.appointment.dto.VisitorCompetentDeptVo;
|
import com.sinata.appointment.entity.BizApprovalNodeConfig;
|
import com.sinata.appointment.entity.BizFieldConfig;
|
import com.sinata.appointment.entity.BizVisitReason;
|
import com.sinata.appointment.service.ConfigApplicationService;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jakarta.validation.Valid;
|
import jakarta.validation.constraints.NotBlank;
|
import java.util.List;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PatchMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PutMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
@Tag(name = "系统配置")
|
@RestController
|
@RequestMapping("/api/config")
|
@RequiredArgsConstructor
|
public class ConfigController {
|
|
private final ConfigApplicationService configApplicationService;
|
|
@GetMapping("/visit-reasons")
|
@SaCheckPermission(
|
value = {"config:visit-reasons:page", "appointments:page"},
|
mode = SaMode.OR)
|
public Result<List<BizVisitReason>> listReasons() {
|
return ResultUtil.data(configApplicationService.listVisitReasons());
|
}
|
|
@Operation(summary = "保存来访事由")
|
@PostMapping("/visit-reasons")
|
@SaCheckPermission("config:visit-reasons:update")
|
public Result<Void> saveReason(@RequestBody BizVisitReason entity) {
|
configApplicationService.saveVisitReason(entity);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "来访事由管理-分页")
|
@GetMapping("/visit-reasons/manage")
|
@SaCheckPermission("config:visit-reasons:page")
|
public Result<List<VisitReasonListVo>> pageVisitReasons(
|
@RequestParam(defaultValue = "1") long page, @RequestParam(defaultValue = "10") long size) {
|
return ResultUtil.page(configApplicationService.pageVisitReasons(page, size));
|
}
|
|
@Operation(summary = "来访事由管理-新增")
|
@PostMapping("/visit-reasons/manage")
|
@SaCheckPermission("config:visit-reasons:create")
|
public Result<Void> createVisitReason(@Valid @RequestBody VisitReasonCreateRequest request) {
|
configApplicationService.createVisitReason(request);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "来访事由管理-编辑")
|
@PutMapping("/visit-reasons/manage/{id}")
|
@SaCheckPermission("config:visit-reasons:update")
|
public Result<Void> updateVisitReason(@PathVariable Long id, @Valid @RequestBody VisitReasonUpdateRequest request) {
|
configApplicationService.updateVisitReason(id, request);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "来访事由管理-删除")
|
@DeleteMapping("/visit-reasons/manage/{id}")
|
@SaCheckPermission("config:visit-reasons:delete")
|
public Result<Void> deleteVisitReason(
|
@PathVariable Long id, @RequestParam @NotBlank(message = "uuid 不能为空") String uuid) {
|
configApplicationService.deleteVisitReason(id, uuid);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "敏感词库-分页")
|
@GetMapping("/sensitive-words/manage")
|
@SaCheckPermission("config:sensitive-words:page")
|
public Result<List<SensitiveWordListVo>> pageSensitiveWords(
|
@RequestParam(defaultValue = "1") long page,
|
@RequestParam(defaultValue = "10") long size,
|
@RequestParam(required = false) String keyword) {
|
return ResultUtil.page(configApplicationService.pageSensitiveWords(page, size, keyword));
|
}
|
|
@Operation(summary = "敏感词库-新增")
|
@PostMapping("/sensitive-words/manage")
|
@SaCheckPermission("config:sensitive-words:create")
|
public Result<Void> createSensitiveWord(@Valid @RequestBody SensitiveWordCreateRequest request) {
|
configApplicationService.createSensitiveWord(request);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "敏感词库-编辑")
|
@PutMapping("/sensitive-words/manage/{id}")
|
@SaCheckPermission("config:sensitive-words:update")
|
public Result<Void> updateSensitiveWord(
|
@PathVariable Long id, @Valid @RequestBody SensitiveWordUpdateRequest request) {
|
configApplicationService.updateSensitiveWord(id, request);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "敏感词库-启停")
|
@PatchMapping("/sensitive-words/manage/{id}/enabled")
|
@SaCheckPermission("config:sensitive-words:status")
|
public Result<Void> updateSensitiveWordEnabled(
|
@PathVariable Long id, @Valid @RequestBody SensitiveWordEnabledPatchRequest request) {
|
configApplicationService.updateSensitiveWordEnabled(id, request);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "敏感词库-删除")
|
@DeleteMapping("/sensitive-words/manage/{id}")
|
@SaCheckPermission("config:sensitive-words:delete")
|
public Result<Void> deleteSensitiveWord(
|
@PathVariable Long id, @RequestParam @NotBlank(message = "uuid 不能为空") String uuid) {
|
configApplicationService.deleteSensitiveWord(id, uuid);
|
return ResultUtil.success();
|
}
|
|
@GetMapping("/fields")
|
@SaCheckPermission("config:booking-settings:page")
|
public Result<List<BizFieldConfig>> listFields() {
|
return ResultUtil.data(configApplicationService.listFieldConfigs());
|
}
|
|
@Operation(summary = "保存字段配置")
|
@PostMapping("/fields")
|
@SaCheckPermission("config:booking-settings:update")
|
public Result<Void> saveField(@RequestBody BizFieldConfig entity) {
|
configApplicationService.saveFieldConfig(entity);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "更新预约字段是否启用/是否必填")
|
@PatchMapping("/fields/{id}")
|
@SaCheckPermission("config:booking-settings:update")
|
public Result<Void> patchField(@PathVariable Long id, @Valid @RequestBody FieldConfigPatchRequest request) {
|
configApplicationService.patchFieldConfig(id, request);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "读取预约策略")
|
@GetMapping("/booking-settings")
|
@SaCheckPermission("config:booking-settings:page")
|
public Result<BookingSettingsVo> getBookingSettings() {
|
return ResultUtil.data(configApplicationService.getBookingSettings());
|
}
|
|
@Operation(summary = "保存预约策略")
|
@PutMapping("/booking-settings")
|
@SaCheckPermission("config:booking-settings:update")
|
public Result<Void> saveBookingSettings(@Valid @RequestBody BookingSettingsSaveRequest request) {
|
configApplicationService.saveBookingSettings(request);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "节假日单日切换")
|
@PatchMapping("/booking-settings/holiday-date")
|
@SaCheckPermission("config:booking-settings:update")
|
public Result<Void> toggleHolidayDate(@Valid @RequestBody BookingHolidayToggleRequest request) {
|
configApplicationService.toggleHolidayDate(request.getDate(), Boolean.TRUE.equals(request.getHoliday()));
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "快速选择某月周末")
|
@PostMapping("/booking-settings/holiday-month-weekends")
|
@SaCheckPermission("config:booking-settings:update")
|
public Result<Void> addMonthWeekends(@Valid @RequestBody BookingHolidayMonthWeekendsRequest request) {
|
configApplicationService.addMonthWeekends(request.getMonth());
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "读取内容设置")
|
@GetMapping("/content-settings")
|
@SaCheckPermission("config:content-settings:page")
|
public Result<ContentSettingsVo> getContentSettings() {
|
return ResultUtil.data(configApplicationService.getContentSettings());
|
}
|
|
@Operation(summary = "保存内容设置")
|
@PutMapping("/content-settings")
|
@SaCheckPermission("config:content-settings:update")
|
public Result<Void> saveContentSettings(@Valid @RequestBody ContentSettingsSaveRequest request) {
|
configApplicationService.saveContentSettings(request);
|
return ResultUtil.success();
|
}
|
|
@GetMapping("/approval-nodes")
|
@SaCheckPermission("config:approval-settings:page")
|
public Result<List<BizApprovalNodeConfig>> listNodes() {
|
return ResultUtil.data(configApplicationService.listApprovalNodes());
|
}
|
|
@Operation(summary = "保存审批节点配置")
|
@PostMapping("/approval-nodes")
|
@SaCheckPermission("config:approval-settings:update")
|
public Result<Void> saveNode(@RequestBody BizApprovalNodeConfig entity) {
|
configApplicationService.saveApprovalNode(entity);
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "更新审批节点是否开启")
|
@PatchMapping("/approval-nodes/{id}/enabled")
|
@SaCheckPermission("config:approval-settings:update")
|
public Result<Void> patchApprovalNodeEnabled(
|
@PathVariable Long id, @Valid @RequestBody ApprovalNodeEnabledPatchRequest request) {
|
configApplicationService.updateApprovalNodeEnabled(id, request.getUuid(), request.getEnabled());
|
return ResultUtil.success();
|
}
|
|
@Operation(summary = "读取访客主管部门配置")
|
@GetMapping("/visitor-competent-dept")
|
@SaCheckPermission("config:approval-settings:page")
|
public Result<VisitorCompetentDeptVo> getVisitorCompetentDept() {
|
VisitorCompetentDeptVo vo = new VisitorCompetentDeptVo();
|
vo.setDeptId(configApplicationService.getVisitCompetentDeptId());
|
return ResultUtil.data(vo);
|
}
|
|
@Operation(summary = "保存访客主管部门")
|
@PutMapping("/visitor-competent-dept")
|
@SaCheckPermission("config:approval-settings:update")
|
public Result<Void> saveVisitorCompetentDept(@RequestBody VisitorCompetentDeptSaveRequest request) {
|
configApplicationService.saveVisitCompetentDept(request.getDeptId());
|
return ResultUtil.success();
|
}
|
}
|