diff --git a/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java b/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java index 56ca39b..338d999 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java +++ b/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java @@ -5,6 +5,7 @@ import com.cdzy.common.model.response.JsonResult; import com.ebike.feign.component.FeignTokenInterceptor; import com.ebike.feign.config.ExampleFeignConfiguration; import com.ebike.feign.model.dto.FeignEbikeDto; +import com.ebike.feign.model.dto.FeignEbikeReportRecordDto; import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo; import com.ebike.feign.model.dto.FeignEbikeUserLockDto; import com.ebike.feign.model.vo.EbikeLockVo; @@ -87,12 +88,22 @@ public interface OperationsFeignClient { /** * 保存车辆最新位置 - * @param ecuSn 中控编号 + * + * @param ecuSn 中控编号 * @param longitude 经度 - * @param latitude 纬度 + * @param latitude 纬度 * @return 保存结果 */ - @GetMapping("/ebikeBikeInfo//changeLocation") + @GetMapping("/ebikeBikeInfo/changeLocation") JsonResult changeLocation(@RequestParam("ecuSn") String ecuSn, @RequestParam("longitude") Double longitude, @RequestParam("latitude") Double latitude); + + /** + * 保存用户上报 + * + * @param feignEbikeReportRecordDto 用户上报信息 + */ + @PostMapping("/ebikeReportRecord/saveReportRecord") + JsonResult saveReportRecord(@RequestBody FeignEbikeReportRecordDto feignEbikeReportRecordDto); + } diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeReportRecordDto.java b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeReportRecordDto.java new file mode 100644 index 0000000..b137760 --- /dev/null +++ b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeReportRecordDto.java @@ -0,0 +1,39 @@ +package com.ebike.feign.model.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.postgresql.geometric.PGpoint; + +import java.util.List; + +/** + * 用户上报请求参数 + * + * @author yanglei + * @since 2025-12-23 16:55 + */ +@Data +public class FeignEbikeReportRecordDto { + + /** + * 用户id + */ + @NotNull(message = "用户id不能为空") + private Long userId; + + /** + * 上报位置 + */ + @NotNull(message = "上报位置") + private PGpoint location; + + /** + * 上报原因 + */ + private String reportReason; + + /** + * 用户上报文件 + */ + private List recordFiles; +} diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeReportRecordFileDto.java b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeReportRecordFileDto.java new file mode 100644 index 0000000..7f38ff4 --- /dev/null +++ b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeReportRecordFileDto.java @@ -0,0 +1,29 @@ +package com.ebike.feign.model.dto; + +import lombok.Data; + +/** + * 用户上报文件请求参数 + * + * @author yanglei + * @since 2025-11-18 11:26 + */ + +@Data +public class FeignEbikeReportRecordFileDto { + + /** + * 用户上报文件主键id + */ + private Long recordFileId; + + /** + * 文件名称 + */ + private String fileName; + + /** + * 文件地址 + */ + private String fileUrl; +} diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeReportRecordController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeReportRecordController.java new file mode 100644 index 0000000..a439fc8 --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeReportRecordController.java @@ -0,0 +1,67 @@ +package com.cdzy.operations.controller; + +import com.cdzy.common.model.request.PageParam; +import com.cdzy.common.model.response.JsonResult; +import com.cdzy.operations.model.dto.EbikeDealReportDto; +import com.cdzy.operations.model.dto.EbikeReportRecordDto; +import com.cdzy.operations.model.entity.EbikeReportRecord; +import com.cdzy.operations.service.EbikeReportRecordService; +import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryWrapper; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; + +import static com.cdzy.operations.model.entity.table.EbikeReportRecordTableDef.EBIKE_REPORT_RECORD; + +/** + * 用户上报记录 控制层 + * + * @author yanglei + * @since 2025-12-23 16:51 + */ + +@RestController +@RequestMapping("/ebikeReportRecord") +public class EbikeReportRecordController { + + @Resource + private EbikeReportRecordService reportRecordService; + + /** + * 保存用户上报记录【远程调用使用】 + * + * @param reportRecordDto 用户上报记录参数 + */ + @PostMapping("/saveReportRecord") + public JsonResult saveReportRecord(@RequestBody EbikeReportRecordDto reportRecordDto) { + reportRecordService.saveReportRecord(reportRecordDto); + return JsonResult.success(); + } + + /** + * 处理用户上报记录 + * + * @param dealReportDto 处理用户上报记录请求参数 + */ + @PostMapping("/dealReportRecord") + public JsonResult dealReportRecord(@RequestBody EbikeDealReportDto dealReportDto) { + reportRecordService.dealReportRecord(dealReportDto); + return JsonResult.success(); + } + + /** + * 分页查询用户上报记录 + * + * @param pageParam 分页参数 + * @param recordStatus 处理状态 + */ + @GetMapping("page") + public JsonResult page(PageParam pageParam, Integer recordStatus) { + QueryWrapper queryWrapper = QueryWrapper.create() + .where(EBIKE_REPORT_RECORD.RECORD_STATUS.like(recordStatus, Objects.nonNull(recordStatus))); + Page page = reportRecordService.page(pageParam.getPage(), queryWrapper); + return JsonResult.success(page); + } +} diff --git a/ebike-user/src/main/java/com/cdzy/user/mapper/EbikeReportRecordFileMapper.java b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeReportRecordFileMapper.java similarity index 65% rename from ebike-user/src/main/java/com/cdzy/user/mapper/EbikeReportRecordFileMapper.java rename to ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeReportRecordFileMapper.java index fead30e..45900a4 100644 --- a/ebike-user/src/main/java/com/cdzy/user/mapper/EbikeReportRecordFileMapper.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeReportRecordFileMapper.java @@ -1,6 +1,6 @@ -package com.cdzy.user.mapper; +package com.cdzy.operations.mapper; -import com.cdzy.user.model.entity.EbikeReportRecordFile; +import com.cdzy.operations.model.entity.EbikeReportRecordFile; import com.mybatisflex.core.BaseMapper; /** diff --git a/ebike-user/src/main/java/com/cdzy/user/mapper/EbikeReportRecordMapper.java b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeReportRecordMapper.java similarity index 65% rename from ebike-user/src/main/java/com/cdzy/user/mapper/EbikeReportRecordMapper.java rename to ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeReportRecordMapper.java index 009411a..cbcee1c 100644 --- a/ebike-user/src/main/java/com/cdzy/user/mapper/EbikeReportRecordMapper.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeReportRecordMapper.java @@ -1,6 +1,6 @@ -package com.cdzy.user.mapper; +package com.cdzy.operations.mapper; -import com.cdzy.user.model.entity.EbikeReportRecord; +import com.cdzy.operations.model.entity.EbikeReportRecord; import com.mybatisflex.core.BaseMapper; /** diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeDealReportDto.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeDealReportDto.java new file mode 100644 index 0000000..aff679a --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeDealReportDto.java @@ -0,0 +1,38 @@ +package com.cdzy.operations.model.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 用户上报处理请求参数 + * + * @author yanglei + * @since 2025-12-24 10:46 + */ + +@Data +public class EbikeDealReportDto { + + /** + * 主键id + */ + @NotNull(message = "主键id不能为空") + private Long recordId; + + /** + * 处理人id + */ + @NotNull(message = "员工id不能为空") + private Long staffId; + + /** + * 处理人意见 + */ + private String recordReason; + + /** + * 处理状态 1-同意申请 2-拒绝申请 + */ + @NotNull(message = "处理状态不能为空") + private Integer recordStatus; +} diff --git a/ebike-user/src/main/java/com/cdzy/user/model/dto/EbikeReportRecordDto.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeReportRecordDto.java similarity index 76% rename from ebike-user/src/main/java/com/cdzy/user/model/dto/EbikeReportRecordDto.java rename to ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeReportRecordDto.java index 44b2462..db42b00 100644 --- a/ebike-user/src/main/java/com/cdzy/user/model/dto/EbikeReportRecordDto.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeReportRecordDto.java @@ -1,8 +1,8 @@ -package com.cdzy.user.model.dto; +package com.cdzy.operations.model.dto; -import com.cdzy.user.handler.PGpointDeserializer; -import com.cdzy.user.handler.PGpointSerializer; -import com.cdzy.user.handler.PGpointTypeHandler; +import com.cdzy.operations.handler.PGpointDeserializer; +import com.cdzy.operations.handler.PGpointSerializer; +import com.cdzy.operations.handler.PGpointTypeHandler; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.mybatisflex.annotation.Column; @@ -36,6 +36,11 @@ public class EbikeReportRecordDto { @NotNull(message = "上报位置") private PGpoint location; + /** + * 上报原因 + */ + private String reportReason; + /** * 用户上报文件 */ diff --git a/ebike-user/src/main/java/com/cdzy/user/model/dto/EbikeReportRecordFileDto.java b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeReportRecordFileDto.java similarity index 90% rename from ebike-user/src/main/java/com/cdzy/user/model/dto/EbikeReportRecordFileDto.java rename to ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeReportRecordFileDto.java index 008a49a..1755033 100644 --- a/ebike-user/src/main/java/com/cdzy/user/model/dto/EbikeReportRecordFileDto.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/dto/EbikeReportRecordFileDto.java @@ -1,4 +1,4 @@ -package com.cdzy.user.model.dto; +package com.cdzy.operations.model.dto; import lombok.Data; diff --git a/ebike-user/src/main/java/com/cdzy/user/model/entity/EbikeReportRecord.java b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecord.java similarity index 73% rename from ebike-user/src/main/java/com/cdzy/user/model/entity/EbikeReportRecord.java rename to ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecord.java index d9bbf42..3f0fc04 100644 --- a/ebike-user/src/main/java/com/cdzy/user/model/entity/EbikeReportRecord.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecord.java @@ -1,8 +1,8 @@ -package com.cdzy.user.model.entity; +package com.cdzy.operations.model.entity; -import com.cdzy.user.handler.PGpointDeserializer; -import com.cdzy.user.handler.PGpointSerializer; -import com.cdzy.user.handler.PGpointTypeHandler; +import com.cdzy.operations.handler.PGpointDeserializer; +import com.cdzy.operations.handler.PGpointSerializer; +import com.cdzy.operations.handler.PGpointTypeHandler; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.mybatisflex.annotation.Column; @@ -48,7 +48,27 @@ public class EbikeReportRecord implements Serializable { private PGpoint location; /** - * 处理状态 0-未处理 1-已处理 + * 上报原因 + */ + private String reportReason; + + /** + * 处理人id + */ + private Long staffId; + + /** + * 处理人意见 + */ + private String recordReason; + + /** + * 处理时间 + */ + private LocalDateTime recordTime; + + /** + * 处理状态 0-待处理 1-同意申请 2-拒绝申请 */ private Integer recordStatus; diff --git a/ebike-user/src/main/java/com/cdzy/user/model/entity/EbikeReportRecordFile.java b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecordFile.java similarity index 96% rename from ebike-user/src/main/java/com/cdzy/user/model/entity/EbikeReportRecordFile.java rename to ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecordFile.java index 5ec74b4..7cd04ac 100644 --- a/ebike-user/src/main/java/com/cdzy/user/model/entity/EbikeReportRecordFile.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecordFile.java @@ -1,4 +1,4 @@ -package com.cdzy.user.model.entity; +package com.cdzy.operations.model.entity; import com.mybatisflex.annotation.Column; import com.mybatisflex.annotation.Id; diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeReportRecordService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeReportRecordService.java new file mode 100644 index 0000000..d270a73 --- /dev/null +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeReportRecordService.java @@ -0,0 +1,28 @@ +package com.cdzy.operations.service; + +import com.cdzy.operations.model.dto.EbikeDealReportDto; +import com.cdzy.operations.model.dto.EbikeReportRecordDto; +import com.cdzy.operations.model.entity.EbikeReportRecord; +import com.mybatisflex.core.service.IService; + +/** + * @author yanglei + * @since 2025-12-23 16:53 + */ + +public interface EbikeReportRecordService extends IService { + + /** + * 保存用户上报记录 + * + * @param reportRecordDto 保存用户上报记录请求参数 + */ + void saveReportRecord(EbikeReportRecordDto reportRecordDto); + + /** + * 处理用户上报记录 + * + * @param dealReportDto 处理用户上报记录请求参数 + */ + void dealReportRecord(EbikeDealReportDto dealReportDto); +} diff --git a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeReportRecordServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeReportRecordServiceImpl.java similarity index 54% rename from ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeReportRecordServiceImpl.java rename to ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeReportRecordServiceImpl.java index 0c0c20e..d65cff6 100644 --- a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeReportRecordServiceImpl.java +++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeReportRecordServiceImpl.java @@ -1,24 +1,27 @@ -package com.cdzy.user.service.impl; +package com.cdzy.operations.service.impl; import com.cdzy.common.enums.GlobalConstants; -import com.cdzy.user.mapper.EbikeReportRecordFileMapper; -import com.cdzy.user.mapper.EbikeReportRecordMapper; -import com.cdzy.user.model.dto.EbikeFaultFileDto; -import com.cdzy.user.model.dto.EbikeReportRecordDto; -import com.cdzy.user.model.dto.EbikeReportRecordFileDto; -import com.cdzy.user.model.entity.EbikeFaultFile; -import com.cdzy.user.model.entity.EbikeReportRecord; -import com.cdzy.user.model.entity.EbikeReportRecordFile; -import com.cdzy.user.service.EbikeReportRecordService; +import com.cdzy.operations.mapper.EbikeReportRecordFileMapper; +import com.cdzy.operations.mapper.EbikeReportRecordMapper; +import com.cdzy.operations.model.dto.EbikeDealReportDto; +import com.cdzy.operations.model.dto.EbikeReportRecordDto; +import com.cdzy.operations.model.dto.EbikeReportRecordFileDto; +import com.cdzy.operations.model.entity.EbikeReportRecord; +import com.cdzy.operations.model.entity.EbikeReportRecordFile; +import com.cdzy.operations.service.EbikeReportRecordService; +import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import static com.cdzy.operations.model.entity.table.EbikeReportRecordTableDef.EBIKE_REPORT_RECORD; + /** * @author yanglei * @since 2025-12-23 16:53 @@ -35,6 +38,7 @@ public class EbikeReportRecordServiceImpl extends ServiceImpl saveReport(@RequestBody FeignEbikeReportRecordDto feignEbikeReportRecordDto) { + JsonResult jsonResult = operationsFeignClient.saveReportRecord(feignEbikeReportRecordDto); + if (jsonResult.getCode() != Code.SUCCESS) { + throw new EbikeException("保存用户上报信息失败!"); + } + return JsonResult.success(); + } +} diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeReportRecordController.java b/ebike-user/src/main/java/com/cdzy/user/controller/EbikeReportRecordController.java deleted file mode 100644 index 2c37222..0000000 --- a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeReportRecordController.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.cdzy.user.controller; - -import com.cdzy.common.model.response.JsonResult; -import com.cdzy.user.model.dto.EbikeReportRecordDto; -import com.cdzy.user.service.EbikeReportRecordService; -import jakarta.annotation.Resource; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * 用户上报记录 控制层 - * - * @author yanglei - * @since 2025-12-23 16:51 - */ - -@RestController -@RequestMapping("/ebikeReportRecord") -public class EbikeReportRecordController { - - @Resource - private EbikeReportRecordService reportRecordService; - - /** - * 保存用户上报记录 - * - * @param reportRecordDto 用户上报记录参数 - */ - @PostMapping("/saveReportRecord") - public JsonResult saveReportRecord(@RequestBody EbikeReportRecordDto reportRecordDto) { - reportRecordService.saveReportRecord(reportRecordDto); - return JsonResult.success(); - } -} diff --git a/ebike-user/src/main/java/com/cdzy/user/service/EbikeReportRecordService.java b/ebike-user/src/main/java/com/cdzy/user/service/EbikeReportRecordService.java deleted file mode 100644 index d28d503..0000000 --- a/ebike-user/src/main/java/com/cdzy/user/service/EbikeReportRecordService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.cdzy.user.service; - -import com.cdzy.user.model.dto.EbikeReportRecordDto; -import com.cdzy.user.model.entity.EbikeReportRecord; -import com.mybatisflex.core.service.IService; - -/** - * @author yanglei - * @since 2025-12-23 16:53 - */ - -public interface EbikeReportRecordService extends IService { - - void saveReportRecord(EbikeReportRecordDto reportRecordDto); -}