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.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.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();
|
}
|
|
@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 = "更新预约字段是否启用/是否必填(须 uuid;受访人、来访时间不可关闭)")
|
@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 = "读取内容设置")
|
@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 = "更新审批节点是否开启(须 uuid)")
|
@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 = "保存访客主管部门(传 deptId=null 清空)")
|
@PutMapping("/visitor-competent-dept")
|
@SaCheckPermission("config:approval-settings:update")
|
public Result<Void> saveVisitorCompetentDept(@RequestBody VisitorCompetentDeptSaveRequest request) {
|
configApplicationService.saveVisitCompetentDept(request.getDeptId());
|
return ResultUtil.success();
|
}
|
}
|