diff --git a/src/main/java/com/ycwl/basic/controller/pc/PrinterManageController.java b/src/main/java/com/ycwl/basic/controller/pc/PrinterManageController.java new file mode 100644 index 00000000..aa9d2987 --- /dev/null +++ b/src/main/java/com/ycwl/basic/controller/pc/PrinterManageController.java @@ -0,0 +1,131 @@ +package com.ycwl.basic.controller.pc; + +import com.ycwl.basic.model.pc.printer.entity.PrinterEntity; +import com.ycwl.basic.model.pc.printer.req.PrinterPreferredSizeUpdateReq; +import com.ycwl.basic.model.pc.printer.req.PrinterStatusUpdateReq; +import com.ycwl.basic.model.pc.printer.req.PrinterUsePrinterUpdateReq; +import com.ycwl.basic.service.printer.PrinterService; +import com.ycwl.basic.utils.ApiConst; +import com.ycwl.basic.utils.ApiResponse; +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; + +import java.util.List; + +/** + * 打印机管理接口 + */ +@RestController +@RequestMapping("/api/pc/printers/v1") +@RequiredArgsConstructor +public class PrinterManageController { + + private final PrinterService printerService; + + /** + * 打印机列表查询 + */ + @GetMapping + public ApiResponse> list(@RequestParam(value = "scenicId", required = false) Long scenicId, + @RequestParam(value = "status", required = false) Integer status, + @RequestParam(value = "name", required = false) String name) { + PrinterEntity condition = new PrinterEntity(); + condition.setScenicId(scenicId); + condition.setStatus(status); + condition.setName(name); + return printerService.list(condition); + } + + /** + * 打印机详情 + */ + @GetMapping("/{id}") + public ApiResponse detail(@PathVariable("id") Integer id) { + ApiResponse response = printerService.get(id); + if (response.getData() == null) { + return ApiResponse.buildResponse(ApiConst.Code.CODE_NOT_EXIST, "打印机不存在"); + } + return response; + } + + /** + * 新增打印机 + */ + @PostMapping + public ApiResponse create(@RequestBody PrinterEntity request) { + request.setId(null); + return printerService.add(request); + } + + /** + * 更新打印机信息 + */ + @PutMapping("/{id}") + public ApiResponse update(@PathVariable("id") Integer id, @RequestBody PrinterEntity request) { + request.setId(id); + return printerService.update(request); + } + + /** + * 更新打印机状态 + */ + @PatchMapping("/{id}/status") + public ApiResponse updateStatus(@PathVariable("id") Integer id, + @RequestBody PrinterStatusUpdateReq req) { + if (req == null || req.getStatus() == null) { + return ApiResponse.buildResponse(ApiConst.Code.CODE_PARAM_ERROR, "状态不能为空"); + } + PrinterEntity entity = new PrinterEntity(); + entity.setId(id); + entity.setStatus(req.getStatus()); + return printerService.update(entity); + } + + /** + * 更新打印机首选尺寸 + */ + @PatchMapping("/{id}/preferred-size") + public ApiResponse updatePreferredSize(@PathVariable("id") Integer id, + @RequestBody PrinterPreferredSizeUpdateReq req) { + if (req == null || (req.getPreferW() == null && req.getPreferH() == null)) { + return ApiResponse.buildResponse(ApiConst.Code.CODE_PARAM_ERROR, "首选尺寸不能为空"); + } + PrinterEntity entity = new PrinterEntity(); + entity.setId(id); + entity.setPreferW(req.getPreferW()); + entity.setPreferH(req.getPreferH()); + return printerService.update(entity); + } + + /** + * 更新当前使用的打印机 + */ + @PatchMapping("/{id}/use-printer") + public ApiResponse updateUsePrinter(@PathVariable("id") Integer id, + @RequestBody PrinterUsePrinterUpdateReq req) { + if (req == null) { + return ApiResponse.buildResponse(ApiConst.Code.CODE_PARAM_ERROR, "请求参数不能为空"); + } + PrinterEntity entity = new PrinterEntity(); + entity.setId(id); + entity.setUsePrinter(req.getUsePrinter()); + return printerService.update(entity); + } + + /** + * 删除打印机 + */ + @DeleteMapping("/{id}") + public ApiResponse delete(@PathVariable("id") Integer id) { + return printerService.delete(id); + } +} diff --git a/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterPreferredSizeUpdateReq.java b/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterPreferredSizeUpdateReq.java new file mode 100644 index 00000000..ce5d7efa --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterPreferredSizeUpdateReq.java @@ -0,0 +1,19 @@ +package com.ycwl.basic.model.pc.printer.req; + +import lombok.Data; + +/** + * 打印机首选尺寸更新请求 + */ +@Data +public class PrinterPreferredSizeUpdateReq { + /** + * 首选宽度 + */ + private Integer preferW; + + /** + * 首选高度 + */ + private Integer preferH; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterStatusUpdateReq.java b/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterStatusUpdateReq.java new file mode 100644 index 00000000..7e234b48 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterStatusUpdateReq.java @@ -0,0 +1,14 @@ +package com.ycwl.basic.model.pc.printer.req; + +import lombok.Data; + +/** + * 打印机状态更新请求 + */ +@Data +public class PrinterStatusUpdateReq { + /** + * 打印机状态:0-停用,1-启用 + */ + private Integer status; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterUsePrinterUpdateReq.java b/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterUsePrinterUpdateReq.java new file mode 100644 index 00000000..1d7fbf67 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/printer/req/PrinterUsePrinterUpdateReq.java @@ -0,0 +1,14 @@ +package com.ycwl.basic.model.pc.printer.req; + +import lombok.Data; + +/** + * 打印机当前使用设备更新请求 + */ +@Data +public class PrinterUsePrinterUpdateReq { + /** + * 当前使用打印机标识 + */ + private String usePrinter; +} diff --git a/src/main/resources/mapper/PrinterMapper.xml b/src/main/resources/mapper/PrinterMapper.xml index c998fa65..d51e56c9 100644 --- a/src/main/resources/mapper/PrinterMapper.xml +++ b/src/main/resources/mapper/PrinterMapper.xml @@ -78,6 +78,8 @@ printers, use_printer, status, + prefer_w, + prefer_h, create_time, update_time ) VALUES ( @@ -87,6 +89,8 @@ #{printers}, #{usePrinter}, #{status}, + #{preferW}, + #{preferH}, NOW(), NOW() ) @@ -116,14 +120,33 @@ UPDATE printer - SET - access_key = #{accessKey}, - name = #{name}, - scenic_id = #{scenicId}, - printers = #{printers}, - use_printer = #{usePrinter}, - status = #{status}, + + + access_key = #{accessKey}, + + + name = #{name}, + + + scenic_id = #{scenicId}, + + + printers = #{printers}, + + + use_printer = #{usePrinter}, + + + status = #{status}, + + + prefer_w = #{preferW}, + + + prefer_h = #{preferH}, + update_time = NOW() + WHERE id = #{id}