diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java new file mode 100644 index 0000000..2633049 --- /dev/null +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java @@ -0,0 +1,72 @@ +package com.ycwl.basic.controller.mobile; + +import com.ycwl.basic.annotation.IgnoreToken; +import com.ycwl.basic.model.jwt.JwtInfo; +import com.ycwl.basic.model.pc.printer.resp.MemberPrintResp; +import com.ycwl.basic.service.printer.PrinterService; +import com.ycwl.basic.storage.StorageFactory; +import com.ycwl.basic.utils.ApiResponse; +import com.ycwl.basic.utils.JwtTokenUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; +import java.util.UUID; + +@RestController +@RequestMapping("/api/mobile/printer/v1") +public class AppPrinterController { + @Autowired + private PrinterService printerService; + @GetMapping("/listFor/{scenicId}") + @IgnoreToken + public ApiResponse listFor(@PathVariable("scenicId") Long scenicId) { + return ApiResponse.success(printerService.listByScenicId(scenicId)); + } + + @GetMapping("/getListFor/{scenicId}") + public ApiResponse> getListFor(@PathVariable("scenicId") Long scenicId) { + JwtInfo worker = JwtTokenUtil.getWorker(); + return ApiResponse.success(printerService.getUserPhotoList(worker.getUserId(), scenicId)); + } + + @GetMapping("/getItem/{scenicId}/{id}") + public ApiResponse getItem(@PathVariable("scenicId") Long scenicId, @PathVariable("id") Long id) { + JwtInfo worker = JwtTokenUtil.getWorker(); + MemberPrintResp userPhoto = printerService.getUserPhoto(worker.getUserId(), scenicId, id); + if (userPhoto == null) { + return ApiResponse.fail("未找到该图片"); + } + return ApiResponse.success(userPhoto); + } + + @PostMapping("/deleteFrom/{scenicId}/{id}") + public ApiResponse deleteFrom(@PathVariable("scenicId") Long scenicId, @PathVariable("id") Long id) throws IOException { + JwtInfo worker = JwtTokenUtil.getWorker(); + printerService.deleteUserPhoto(worker.getUserId(), scenicId, id); + return ApiResponse.success(null); + } + @PostMapping("/uploadTo/{scenicId}") + public ApiResponse upload(@PathVariable("scenicId") Long scenicId, @RequestParam(value = "file") MultipartFile file) throws IOException { + String[] split = file.getOriginalFilename().split("\\."); + String ext = split[split.length - 1]; + String url = StorageFactory.use().uploadFile(file, "printer", UUID.randomUUID() + "." + ext); + printerService.addUserPhoto(JwtTokenUtil.getWorker().getUserId(), scenicId, url); + return ApiResponse.success(url); + } + @PostMapping("/uploadTo/{scenicId}/cropped/{id}") + public ApiResponse uploadReplace(@PathVariable("scenicId") Long scenicId, @PathVariable("id") Long id, @RequestParam(value = "file") MultipartFile file) throws IOException { + String[] split = file.getOriginalFilename().split("\\."); + String ext = split[split.length - 1]; + String url = StorageFactory.use().uploadFile(file, "printer", UUID.randomUUID() + "." + ext); + printerService.setPhotoCropped(JwtTokenUtil.getWorker().getUserId(), scenicId, id, url); + return ApiResponse.success(url); + } +} diff --git a/src/main/java/com/ycwl/basic/mapper/PrinterMapper.java b/src/main/java/com/ycwl/basic/mapper/PrinterMapper.java index 61ed5fb..15ff6e5 100644 --- a/src/main/java/com/ycwl/basic/mapper/PrinterMapper.java +++ b/src/main/java/com/ycwl/basic/mapper/PrinterMapper.java @@ -2,6 +2,8 @@ package com.ycwl.basic.mapper; import com.ycwl.basic.model.pc.printer.entity.PrintTaskEntity; import com.ycwl.basic.model.pc.printer.entity.PrinterEntity; +import com.ycwl.basic.model.pc.printer.resp.MemberPrintResp; +import com.ycwl.basic.model.pc.printer.resp.PrinterResp; import com.ycwl.basic.model.printer.resp.PrintTaskResp; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -26,4 +28,16 @@ public interface PrinterMapper { int updateTaskStatus(@Param("id") Integer id, @Param("status") Integer status); PrintTaskEntity getTaskById(Integer id); + + List listByScenicId(@Param("scenicId") Long scenicId); + + List listRelation(@Param("memberId") Long memberId, @Param("scenicId") Long scenicId); + + int deleteUserPhoto(Long memberId, Long scenicId, Long relationId); + + int addUserPhoto(Long memberId, Long scenicId, String url); + + MemberPrintResp getUserPhoto(Long memberId, Long scenicId, Long id); + + int setPhotoCropped(Long memberId, Long scenicId, Long id, String url); } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/printer/entity/MemberPrintEntity.java b/src/main/java/com/ycwl/basic/model/pc/printer/entity/MemberPrintEntity.java new file mode 100644 index 0000000..5039ae3 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/printer/entity/MemberPrintEntity.java @@ -0,0 +1,25 @@ +package com.ycwl.basic.model.pc.printer.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("member_print") +public class MemberPrintEntity { + @TableId(type = IdType.AUTO) + private Integer id; + private Long scenicId; + private Long memberId; + private String origUrl; + private String cropUrl; + private String printUrl; + private Integer printerId; + private Long orderId; + private Integer status; + private Date createTime; + private Date updateTime; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/printer/entity/PrinterEntity.java b/src/main/java/com/ycwl/basic/model/pc/printer/entity/PrinterEntity.java index abe0d5b..2a7db90 100644 --- a/src/main/java/com/ycwl/basic/model/pc/printer/entity/PrinterEntity.java +++ b/src/main/java/com/ycwl/basic/model/pc/printer/entity/PrinterEntity.java @@ -3,8 +3,13 @@ package com.ycwl.basic.model.pc.printer.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + import java.util.Date; +@Data @TableName("printer") public class PrinterEntity { @TableId(type = IdType.AUTO) @@ -17,24 +22,6 @@ public class PrinterEntity { private Integer status; private Date createTime; private Date updateTime; - - // Getters and Setters - public Integer getId() { return id; } - public void setId(Integer id) { this.id = id; } - public String getAccessKey() { return accessKey; } - public void setAccessKey(String accessKey) { this.accessKey = accessKey; } - public String getName() { return name; } - public void setName(String name) { this.name = name; } - public Long getScenicId() { return scenicId; } - public void setScenicId(Long scenicId) { this.scenicId = scenicId; } - public String getPrinters() { return printers; } - public void setPrinters(String printers) { this.printers = printers; } - public String getUsePrinter() { return usePrinter; } - public void setUsePrinter(String usePrinter) { this.usePrinter = usePrinter; } - public Integer getStatus() { return status; } - public void setStatus(Integer status) { this.status = status; } - public Date getCreateTime() { return createTime; } - public void setCreateTime(Date createTime) { this.createTime = createTime; } - public Date getUpdateTime() { return updateTime; } - public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } + private Integer preferW; + private Integer preferH; } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/pc/printer/resp/MemberPrintResp.java b/src/main/java/com/ycwl/basic/model/pc/printer/resp/MemberPrintResp.java new file mode 100644 index 0000000..652de59 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/printer/resp/MemberPrintResp.java @@ -0,0 +1,19 @@ +package com.ycwl.basic.model.pc.printer.resp; + +import lombok.Data; + +import java.util.Date; + +@Data +public class MemberPrintResp { + private Integer id; + private Long scenicId; + private String scenicName; + private Long memberId; + private String origUrl; + private String cropUrl; + private Integer quantity; + private Long orderId; + private Integer status; + private Date createTime; +} diff --git a/src/main/java/com/ycwl/basic/model/pc/printer/resp/PrinterResp.java b/src/main/java/com/ycwl/basic/model/pc/printer/resp/PrinterResp.java new file mode 100644 index 0000000..d293d7c --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/pc/printer/resp/PrinterResp.java @@ -0,0 +1,19 @@ +package com.ycwl.basic.model.pc.printer.resp; + +import lombok.Data; + +import java.util.Date; + +@Data +public class PrinterResp { + private Integer id; + private String accessKey; + private String name; + private Long scenicId; + private String scenicName; + private Integer status; + private Date createTime; + private Date updateTime; + private Integer preferW; + private Integer preferH; +} diff --git a/src/main/java/com/ycwl/basic/service/printer/PrinterService.java b/src/main/java/com/ycwl/basic/service/printer/PrinterService.java index 01c4e89..a7860f6 100644 --- a/src/main/java/com/ycwl/basic/service/printer/PrinterService.java +++ b/src/main/java/com/ycwl/basic/service/printer/PrinterService.java @@ -1,6 +1,8 @@ package com.ycwl.basic.service.printer; import com.ycwl.basic.model.pc.printer.entity.PrinterEntity; +import com.ycwl.basic.model.pc.printer.resp.MemberPrintResp; +import com.ycwl.basic.model.pc.printer.resp.PrinterResp; import com.ycwl.basic.model.printer.req.PrinterSyncReq; import com.ycwl.basic.model.printer.resp.PrintTaskResp; import com.ycwl.basic.model.printer.req.WorkerAuthReqVo; @@ -9,6 +11,8 @@ import com.ycwl.basic.utils.ApiResponse; import java.util.List; public interface PrinterService { + List listByScenicId(Long scenicId); + ApiResponse> list(PrinterEntity condition); ApiResponse get(Integer id); @@ -24,4 +28,14 @@ public interface PrinterService { void taskSuccess(Integer taskId, WorkerAuthReqVo req); void taskFail(Integer taskId, WorkerAuthReqVo req); + + List getUserPhotoList(Long userId, Long scenicId); + + boolean deleteUserPhoto(Long memberId, Long scenicId, Long relationId); + + boolean addUserPhoto(Long memberId, Long scenicId, String url); + + MemberPrintResp getUserPhoto(Long memberId, Long scenicId, Long id); + + int setPhotoCropped(Long memberId, Long scenicId, Long id, String url); } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java b/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java index 2d38236..4dffbbf 100644 --- a/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java @@ -3,6 +3,8 @@ package com.ycwl.basic.service.printer.impl; import com.ycwl.basic.mapper.PrinterMapper; import com.ycwl.basic.model.pc.printer.entity.PrintTaskEntity; import com.ycwl.basic.model.pc.printer.entity.PrinterEntity; +import com.ycwl.basic.model.pc.printer.resp.MemberPrintResp; +import com.ycwl.basic.model.pc.printer.resp.PrinterResp; import com.ycwl.basic.model.printer.req.PrinterSyncReq; import com.ycwl.basic.model.printer.req.WorkerAuthReqVo; import com.ycwl.basic.model.printer.resp.PrintTaskResp; @@ -20,6 +22,11 @@ public class PrinterServiceImpl implements PrinterService { @Autowired private PrinterMapper printerMapper; + @Override + public List listByScenicId(Long scenicId) { + return printerMapper.listByScenicId(scenicId); + } + @Override public ApiResponse> list(PrinterEntity condition) { return ApiResponse.success(printerMapper.list(condition)); @@ -108,4 +115,35 @@ public class PrinterServiceImpl implements PrinterService { printerMapper.updateTaskStatus(taskId, 2); } } + + @Override + public List getUserPhotoList(Long userId, Long scenicId) { + List list = printerMapper.listRelation(userId, scenicId); + if (list.isEmpty()) { + // 额外逻辑 + } + return list; + } + + @Override + public boolean deleteUserPhoto(Long memberId, Long scenicId, Long relationId) { + int record = printerMapper.deleteUserPhoto(memberId, scenicId, relationId); + return record > 0; + } + + @Override + public boolean addUserPhoto(Long memberId, Long scenicId, String url) { + printerMapper.addUserPhoto(memberId, scenicId, url); + return true; + } + + @Override + public MemberPrintResp getUserPhoto(Long userId, Long scenicId, Long id) { + return printerMapper.getUserPhoto(userId, scenicId, id); + } + + @Override + public int setPhotoCropped(Long memberId, Long scenicId, Long id, String url) { + return printerMapper.setPhotoCropped(memberId, scenicId, id, url); + } } \ No newline at end of file diff --git a/src/main/resources/mapper/PrinterMapper.xml b/src/main/resources/mapper/PrinterMapper.xml index 511bf39..e24eec4 100644 --- a/src/main/resources/mapper/PrinterMapper.xml +++ b/src/main/resources/mapper/PrinterMapper.xml @@ -32,6 +32,28 @@ + + + @@ -55,6 +77,27 @@ NOW() ) + + INSERT INTO member_print ( + member_id, + scenic_id, + orig_url, + crop_url, + quantity, + status, + create_time, + update_time + ) VALUES ( + #{memberId}, + #{scenicId}, + #{url}, + #{url}, + 1, + 0, + NOW(), + NOW() + ) + @@ -72,9 +115,15 @@ UPDATE print_task SET status = #{status}, update_time = NOW() WHERE id = #{id} + + UPDATE member_print SET crop_url = #{url}, update_time = NOW() WHERE id = #{id} + DELETE FROM printer WHERE id = #{id} + + DELETE FROM member_print WHERE member_id = #{memberId} AND scenic_id = #{scenicId} AND id = #{relationId} LIMIT 1; + \ No newline at end of file