diff --git a/tmerclub-api/tmerclub-api-order/pom.xml b/tmerclub-api/tmerclub-api-order/pom.xml index 9d676b1..5af5b46 100644 --- a/tmerclub-api/tmerclub-api-order/pom.xml +++ b/tmerclub-api/tmerclub-api-order/pom.xml @@ -23,6 +23,11 @@ tmerclub-common-cache ${project.version} + + com.moyuer.cloud + tmerclub-common-loacl + ${project.version} + com.moyuer.cloud tmerclub-api-product diff --git a/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/order/feign/OrderFeignClient.java b/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/order/feign/OrderFeignClient.java index 6f8833b..94fbf6f 100644 --- a/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/order/feign/OrderFeignClient.java +++ b/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/order/feign/OrderFeignClient.java @@ -1,4 +1,3 @@ - package com.tmerclub.cloud.api.order.feign; import com.tmerclub.cloud.api.multishop.bo.OrderChangeShopWalletAmountBO; @@ -12,6 +11,7 @@ import com.tmerclub.cloud.api.user.bo.UserOrderStatisticBO; import com.tmerclub.cloud.api.user.bo.UserOrderStatisticListBO; import com.tmerclub.cloud.api.user.dto.MemberReqDTO; import com.tmerclub.cloud.common.exception.LuckException; +import com.tmerclub.cloud.common.local.dto.SaveOrderToMallDTO; import com.tmerclub.cloud.common.order.bo.EsOrderBO; import com.tmerclub.cloud.common.order.bo.OrderIdWithRefundIdBO; import com.tmerclub.cloud.common.order.bo.OrderStatusBO; @@ -85,6 +85,7 @@ public interface OrderFeignClient { /** * 会员管理部分获取用户相关的订单统计数据 + * * @param queryOrderDTO * @return 相关用户的订单中的信息 */ @@ -334,7 +335,7 @@ public interface OrderFeignClient { /** * 获取活动销售的商品数量 * - * @param orderIds 订单id列表 + * @param orderIds 订单id列表 * @param activityType * @return */ @@ -511,6 +512,7 @@ public interface OrderFeignClient { /** * 获取待采购订单和支付定金未支付尾款的订单Ids + * * @param paySysType 支付类型 * @return */ @@ -518,13 +520,16 @@ public interface OrderFeignClient { /** * 建议订单搜索数据 + * * @param orderSearchDTO * @return */ ServerResponseEntity checkOrderSearchInfo(OrderSearchDTO orderSearchDTO); + /** * 批量获取指定的订单列表(数据必须在同一个表中) * 注意: 使用该接口时,请确认订单都是属于同一个用户或者订单在同一表中, 如果涉及多个表的数据,请使用es查询 + * * @param orderIds * @return */ @@ -533,8 +538,14 @@ public interface OrderFeignClient { /** * 获取订单商品流量统计数据 + * * @param flowOrderItemDTO 查询参数 * @return 订单商品流量统计数据 */ List listFlowOrderItems(FlowOrderItemDTO flowOrderItemDTO); + + /** + * 向商城订单写入球杆回收订单 + */ + Long saveOrderToMall(SaveOrderToMallDTO saveOrderToMallDTO); } diff --git a/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/dto/SaveOrderToMallDTO.java b/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/dto/SaveOrderToMallDTO.java new file mode 100644 index 0000000..78bf7a7 --- /dev/null +++ b/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/dto/SaveOrderToMallDTO.java @@ -0,0 +1,35 @@ +package com.tmerclub.cloud.common.local.dto; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 向商城订单插入回收订单业务对象 + * + * @author: frank + * @create: 2025-04-15 + **/ +@Data +public class SaveOrderToMallDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private Long userId; + /** + * 预计金额 + */ + private Long estimatedAmount; + /** + * 商品名称 + */ + private String productName; + /** + * 商品图片 + */ + private String productImages; +} diff --git a/tmerclub-common/tmerclub-common-order/src/main/java/com/tmerclub/cloud/common/order/constant/OrderType.java b/tmerclub-common/tmerclub-common-order/src/main/java/com/tmerclub/cloud/common/order/constant/OrderType.java index 91311c4..4409534 100644 --- a/tmerclub-common/tmerclub-common-order/src/main/java/com/tmerclub/cloud/common/order/constant/OrderType.java +++ b/tmerclub-common/tmerclub-common-order/src/main/java/com/tmerclub/cloud/common/order/constant/OrderType.java @@ -24,7 +24,12 @@ public enum OrderType { /** * 积分订单 */ - SCORE(3); + SCORE(3), + /** + * 回收订单 + */ + RECYCLE(4); + private final Integer num; diff --git a/tmerclub-local/pom.xml b/tmerclub-local/pom.xml index 9479f30..f1fb08c 100644 --- a/tmerclub-local/pom.xml +++ b/tmerclub-local/pom.xml @@ -29,6 +29,11 @@ tmerclub-common-security ${project.version} + + com.moyuer.cloud + tmerclub-common-loacl + ${project.version} + com.moyuer.cloud tmerclub-common-leaf diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/constant/CueOrderStatus.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/constant/CueOrderStatus.java new file mode 100644 index 0000000..5ded0dd --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/constant/CueOrderStatus.java @@ -0,0 +1,34 @@ +package com.tmerclub.cloud.cuerecycle.constant; + +/** + * 订单状态 + * + * @author: frank + * @create: 2025-04-15 + **/ +public enum CueOrderStatus { + + + PENDING_AUDIT(0, "待审核"), + AUDIT_PASS(1, "审核通过"), + AUDIT_FAIL(2, "审核拒绝"), + PENDING_DELIVERY(3, "待发货"), + PENDING_RECEIPT(4, "待收货"), + RECEIPT_EVALUATION(5, "已收货(评估中)"), + EVALUATION_FAIL(6, "评估失败(退回)"), + EVALUATION_SUCCESS(7, "评估成功"), + COMPLETED(8, "已完成"), + PRICE_UNSATISFIED(9, "价格不满意(退回)"); + + private final Integer num; + private final String description; + + public Integer value() { + return num; + } + + CueOrderStatus(Integer num, String description) { + this.num = num; + this.description = description; + } +} diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueOrderController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueOrderController.java index 1a33879..e1fc8a3 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueOrderController.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/admin/CueOrderController.java @@ -1,10 +1,13 @@ package com.tmerclub.cloud.cuerecycle.controller.admin; +import com.tmerclub.cloud.common.database.dto.PageDTO; import com.tmerclub.cloud.common.database.vo.PageVO; import com.tmerclub.cloud.common.response.ServerResponseEntity; +import com.tmerclub.cloud.cuerecycle.mapper.CueOrderFlawMapper; import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO; +import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderFlawDTO; +import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderFlawVO; import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; -import com.tmerclub.cloud.common.database.dto.PageDTO; import com.tmerclub.cloud.cuerecycle.service.CueOrderService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -12,6 +15,8 @@ import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * 回收订单 * @@ -24,14 +29,16 @@ import org.springframework.web.bind.annotation.*; public class CueOrderController { @Resource CueOrderService cueOrderService; + @Resource + CueOrderFlawMapper cueOrderFlawMapper; - /** - * 分页查询 - * - * @param pageDTO 分页参数 - * @param cueOrderDTO 查询参数 - * @return 分页数据 - */ + /** + * 分页查询 + * + * @param pageDTO 分页参数 + * @param cueOrderDTO 查询参数 + * @return 分页数据 + */ @GetMapping("/page") @Operation(summary = "查询回收订单分页列表", description = "查询回收订单分页列表") public ServerResponseEntity> page(@Valid PageDTO pageDTO, CueOrderDTO cueOrderDTO) { @@ -39,56 +46,49 @@ public class CueOrderController { return ServerResponseEntity.success(cueOrderPage); } - /** * 根据主键id获取回收订单 * - * @param id 主键id + * @param orderId 主键id * @return CueOrderVO */ @GetMapping @Operation(summary = "根据id获取回收订单", description = "根据id获取回收订单") - public ServerResponseEntity getById(@RequestParam Long id) { - CueOrderVO cueOrder = cueOrderService.getById(id); + public ServerResponseEntity getById(@RequestParam Long orderId) { + CueOrderVO cueOrder = cueOrderService.getById(orderId); + // 查询瑕疵项目 + CueOrderFlawDTO cueOrderFlawDTO = new CueOrderFlawDTO(); + cueOrderFlawDTO.setOrderId(orderId); + List list = cueOrderFlawMapper.list(cueOrderFlawDTO); + cueOrder.setFlawList(list); return ServerResponseEntity.success(cueOrder); } /** - * 新增回收订单 + * 修改审核状态(审核通过,审核拒绝) * - * @param cueOrderDTO CueOrderDTO - * @return ServerResponseEntity + * @param cueOrderDTO 回收订单 + * @return Void */ - @PostMapping - @Operation(summary = "新增回收订单", description = "新增回收订单") - public ServerResponseEntity save(@Valid @RequestBody CueOrderDTO cueOrderDTO) { - int insert = cueOrderService.save(cueOrderDTO); - return insert > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("保存失败"); - } - - /** - * 修改回收订单 - * - * @param cueOrderDTO CueOrderDTO - * @return ServerResponseEntity - */ - @PutMapping - @Operation(summary = "修改回收订单", description = "修改回收订单") - public ServerResponseEntity update(@Valid @RequestBody CueOrderDTO cueOrderDTO) { - int update = cueOrderService.update(cueOrderDTO); + @PutMapping("/updateAuditStatus") + @Operation(summary = "修改审核状态(审核通过,审核拒绝)", description = "修改审核状态(审核通过,审核拒绝)") + public ServerResponseEntity updateAuditStatus(@Valid @RequestBody CueOrderDTO cueOrderDTO) { + int update = cueOrderService.updateAuditStatus(cueOrderDTO); return update > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("修改失败"); } /** - * 删除回收订单 + * 修改评估状态(评估通过,评估拒绝) * - * @param id 主键id - * @return ServerResponseEntity + * @param cueOrderDTO 回收订单 + * @return Void */ - @DeleteMapping - @Operation(summary = "删除回收订单", description = "删除回收订单") - public ServerResponseEntity delete(@RequestParam Long id) { - int delete = cueOrderService.delete(id); - return delete > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("删除失败"); + @PutMapping("/updateEvaluateStatus") + @Operation(summary = "修改评估状态(评估通过,评估拒绝)", description = "修改评估状态(评估通过,评估拒绝)") + public ServerResponseEntity updateEvaluateStatus(@Valid @RequestBody CueOrderDTO cueOrderDTO) { + int update = cueOrderService.updateEvaluateStatus(cueOrderDTO); + return update > 0 ? ServerResponseEntity.success() : ServerResponseEntity.showFailMsg("修改失败"); } + + } \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueOrderController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueOrderController.java new file mode 100644 index 0000000..5889fce --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueOrderController.java @@ -0,0 +1,57 @@ +package com.tmerclub.cloud.cuerecycle.controller.app; + +import com.tmerclub.cloud.common.cache.constant.CacheNames; +import com.tmerclub.cloud.common.cache.constant.OrderCacheNames; +import com.tmerclub.cloud.common.cache.util.RedisUtil; +import com.tmerclub.cloud.common.response.ResponseEnum; +import com.tmerclub.cloud.common.response.ServerResponseEntity; +import com.tmerclub.cloud.cuerecycle.manager.CreateOrderManager; +import com.tmerclub.cloud.cuerecycle.model.dto.CreateOrderDTO; +import com.tmerclub.cloud.cuerecycle.service.CueOrderService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +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 : frank + * @create : 2025-04-15 + */ +@Tag(name = "App-回收订单") +@RestController("appCueOrderController") +@RequestMapping("/app/cueOrder") +public class CueOrderController { + @Resource + CueOrderService cueOrderService; + @Resource + CreateOrderManager createOrderManager; + + /** + * 创建订单 + * + * @param createOrderDTO 创建订单参数 + * @return ServerResponseEntity + */ + @Operation(summary = "创建订单", description = "创建订单") + @PostMapping("/createOrder") + public ServerResponseEntity createOrder(@Valid @RequestBody CreateOrderDTO createOrderDTO) { + // 防止重复提交 TODO:不清楚为啥不好使 +// boolean cad = RedisUtil.cad(OrderCacheNames.ORDER_CONFIRM_UUID_KEY + CacheNames.UNION + createOrderDTO.getUserId(), String.valueOf(createOrderDTO.getUserId())); +// if (!cad) { +// return ServerResponseEntity.fail(ResponseEnum.REPEAT_ORDER); +// } + // 保存订单信息 + Long orderId = createOrderManager.saveOrder(createOrderDTO); + // 插入瑕疵信息 + Long flawPrice = createOrderManager.addFlawItem(orderId, createOrderDTO); + // 向商城order插入信息 + createOrderManager.saveOrderToMall(orderId, createOrderDTO.getProductPrice() - flawPrice, createOrderDTO); + return ServerResponseEntity.success(); + } +} \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/manager/CreateOrderManager.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/manager/CreateOrderManager.java new file mode 100644 index 0000000..b8cf2d8 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/manager/CreateOrderManager.java @@ -0,0 +1,91 @@ +package com.tmerclub.cloud.cuerecycle.manager; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.tmerclub.cloud.api.order.feign.OrderFeignClient; +import com.tmerclub.cloud.common.local.dto.SaveOrderToMallDTO; +import com.tmerclub.cloud.cuerecycle.constant.CueOrderStatus; +import com.tmerclub.cloud.cuerecycle.mapper.CueOrderFlawMapper; +import com.tmerclub.cloud.cuerecycle.mapper.CueOrderMapper; +import com.tmerclub.cloud.cuerecycle.model.CueOrder; +import com.tmerclub.cloud.cuerecycle.model.CueOrderFlaw; +import com.tmerclub.cloud.cuerecycle.model.dto.CreateOrderDTO; +import com.tmerclub.cloud.cuerecycle.model.dto.CreateOrderFlawDTO; +import com.tmerclub.cloud.cuerecycle.service.CueFlawService; +import jakarta.annotation.Resource; +import org.apache.dubbo.config.annotation.DubboReference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * 确认订单管理器 + * + * @author: frank + * @create: 2025-04-15 + **/ +@Component +public class CreateOrderManager { + private final Logger log = LoggerFactory.getLogger(CreateOrderManager.class); + + @Resource + CueFlawService cueFlawService; + @Resource + CueOrderMapper cueOrderMapper; + @Resource + CueOrderFlawMapper cueOrderFlawMapper; + @DubboReference + private OrderFeignClient orderFeignClient; + + /** + * 保存订单信息 + * + * @param createOrderDTO 订单信息 + * @return 订单id + */ + public Long saveOrder(CreateOrderDTO createOrderDTO) { + // 保存订单信息 + CueOrder cueOrder = BeanUtil.toBean(createOrderDTO, CueOrder.class); + cueOrder.setOrderStatus(CueOrderStatus.PENDING_AUDIT.value()); + cueOrder.setCreateTime(DateUtil.date()); + cueOrderMapper.save(cueOrder); + return cueOrder.getOrderId(); + } + + /** + * 添加瑕疵项 + * + * @param createOrderDTO 订单信息 + */ + public Long addFlawItem(Long orderId, CreateOrderDTO createOrderDTO) { + // 循环插入瑕疵信息并累计选择金额 + Long flawPrice = 0L; + for (CreateOrderFlawDTO createOrderFlawDTO : createOrderDTO.getFlawList()) { + if (createOrderFlawDTO.getIsFlaw() == 1) { + // 累加瑕疵金额 + flawPrice += createOrderFlawDTO.getFlawPrice(); + } + CueOrderFlaw cueOrderFlaw = BeanUtil.toBean(createOrderFlawDTO, CueOrderFlaw.class); + cueOrderFlaw.setOrderId(orderId); + cueOrderFlawMapper.save(cueOrderFlaw); + } + return flawPrice; + } + + /** + * 保存订单到mallOrder + */ + public void saveOrderToMall(Long orderId, Long estimatedAmount, CreateOrderDTO createOrderDTO) { + SaveOrderToMallDTO saveOrderToMallDTO = new SaveOrderToMallDTO(); + saveOrderToMallDTO.setUserId(createOrderDTO.getUserId()); + saveOrderToMallDTO.setEstimatedAmount(estimatedAmount); + saveOrderToMallDTO.setProductName(createOrderDTO.getProductName()); + saveOrderToMallDTO.setProductImages(createOrderDTO.getProductImages()); + Long mallOrderId = orderFeignClient.saveOrderToMall(saveOrderToMallDTO); + CueOrder cueOrder = new CueOrder(); + cueOrder.setOrderId(orderId); + cueOrder.setMallOrderId(mallOrderId); + cueOrder.setEstimatedAmount(estimatedAmount); + cueOrderMapper.update(cueOrder); + } +} diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueOrderMapper.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueOrderMapper.java index 396840c..3adabff 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueOrderMapper.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/mapper/CueOrderMapper.java @@ -26,10 +26,10 @@ public interface CueOrderMapper{ /** * 获取回收订单详情 * - * @param id 主键 + * @param orderId 主键 * @return 回收订单详情 */ - CueOrderVO getById(Long id); + CueOrderVO getById(Long orderId); /** * 新增回收订单 diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrder.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrder.java index b43bd8e..7f4d645 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrder.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrder.java @@ -24,6 +24,18 @@ public class CueOrder extends BaseModel implements Serializable { * 主键ID */ private Long orderId; + /** + * 商品ID + */ + private Long productId; + /** + * 商品名称 + */ + private String productName; + /** + * 价格 + */ + private Long productPrice; /** * 用户ID */ @@ -93,4 +105,8 @@ public class CueOrder extends BaseModel implements Serializable { */ private Date finallyTime; + /** + * 商城订单id + */ + private Long mallOrderId; } \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrderFlaw.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrderFlaw.java index 0e1edaa..28a9e6d 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrderFlaw.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/CueOrderFlaw.java @@ -9,39 +9,39 @@ import java.io.Serializable; /** * 球杆商品瑕疵项对象 - * + * * @author : frank * @create : 2025-04-15 */ @Data @EqualsAndHashCode(callSuper = true) public class CueOrderFlaw extends BaseModel implements Serializable { - @Serial - private static final long serialVersionUID = 1L; + @Serial + private static final long serialVersionUID = 1L; - /** - * 主键ID - */ -private Long orderFlawId; - /** - * 订单ID - */ -private Long orderId; - /** - * 瑕疵ID - */ -private Long flawId; - /** - * 瑕疵名称 - */ -private String flawName; - /** - * 是否瑕疵 - */ -private Integer isFlaw; - /** - * 影响价格 - */ -private Long flawPrice; + /** + * 主键ID + */ + private Long orderFlawId; + /** + * 订单ID + */ + private Long orderId; + /** + * 瑕疵ID + */ + private Long flawId; + /** + * 瑕疵名称 + */ + private String flawName; + /** + * 是否瑕疵 + */ + private Integer isFlaw; + /** + * 影响价格 + */ + private Long flawPrice; } \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CreateOrderDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CreateOrderDTO.java new file mode 100644 index 0000000..2c90b1d --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CreateOrderDTO.java @@ -0,0 +1,60 @@ +package com.tmerclub.cloud.cuerecycle.model.dto; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 创建订单业务对象 + * + * @author: frank + * @create: 2025-04-15 + **/ +@Data +public class CreateOrderDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 商品ID + */ + private Long productId; + /** + * 商品名称 + */ + private String productName; + /** + * 商品图片 + */ + private String productImages; + /** + * 商品价格 + */ + private Long productPrice; + /** + * 用户ID + */ + private Long userId; + /** + * 类型:1-回收,2-置换,3-寄售 + */ + private Integer orderType; + /** + * 瑕疵图片,逗号隔开 + */ + private String flawImgUrl; + /** + * 付款凭证 + */ + private String evidenceOfPayment; + /** + * 备注 + */ + private String orderRemark; + /** + * 瑕疵列表 + */ + private List flawList; +} diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CreateOrderFlawDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CreateOrderFlawDTO.java new file mode 100644 index 0000000..83db861 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CreateOrderFlawDTO.java @@ -0,0 +1,35 @@ +package com.tmerclub.cloud.cuerecycle.model.dto; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 创建订单瑕疵项业务对象 + * + * @author: frank + * @create: 2025-04-15 + **/ +@Data +public class CreateOrderFlawDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 瑕疵ID + */ + private Long flawId; + /** + * 瑕疵名称 + */ + private String flawName; + /** + * 是否瑕疵 0-否 1-是 + */ + private Integer isFlaw; + /** + * 影响价格 + */ + private Long flawPrice; +} diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderFlawDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderFlawDTO.java index 54d9d3d..8f142a0 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderFlawDTO.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderFlawDTO.java @@ -33,7 +33,7 @@ public class CueOrderFlawDTO implements Serializable { */ private String flawName; /** - * 是否瑕疵 + * 是否瑕疵 0-否 1-是 */ private Integer isFlaw; /** diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueOrderVO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueOrderVO.java index 9d69b68..3c2ea15 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueOrderVO.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/CueOrderVO.java @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import java.io.Serial; import java.io.Serializable; import java.util.Date; +import java.util.List; /** * 回收订单视图对象 @@ -31,6 +32,21 @@ public class CueOrderVO extends BaseVO implements Serializable { */ @Schema(description = "用户ID") private Long userId; + /** + * 商品ID + */ + @Schema(description = "商品ID") + private Long productId; + /** + * 商品名称 + */ + @Schema(description = "商品名称") + private String productName; + /** + * 价格 + */ + @Schema(description = "价格") + private Long productPrice; /** * 用户姓名 */ @@ -106,4 +122,9 @@ public class CueOrderVO extends BaseVO implements Serializable { */ @Schema(description = "完成时间") private Date finallyTime; + /** + * 瑕疵项 + */ + @Schema(description = "瑕疵项") + private List flawList; } \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueOrderService.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueOrderService.java index 145989b..178a13b 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueOrderService.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/CueOrderService.java @@ -13,38 +13,46 @@ import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; */ public interface CueOrderService { - /** - * 获取回收订单分页列表 - * - * @param pageDTO 分页参数 - * @param cueOrderDTO 查询参数 - * @return 分页数据 - */ - PageVO page(PageDTO pageDTO,CueOrderDTO cueOrderDTO); + /** + * 获取回收订单分页列表 + * + * @param pageDTO 分页参数 + * @param cueOrderDTO 查询参数 + * @return 分页数据 + */ + PageVO page(PageDTO pageDTO, CueOrderDTO cueOrderDTO); - /** - * 获取回收订单详情 - * - * @param id 主键 - * @return 回收订单详情 - */ - CueOrderVO getById(Long id); + /** + * 获取回收订单详情 + * + * @param orderId 主键 + * @return 回收订单详情 + */ + CueOrderVO getById(Long orderId); - /** - * 新增回收订单 - * - * @param cueOrderDTO 新增参数 - * @return 新增结果 - */ + /** + * 新增回收订单 + * + * @param cueOrderDTO 新增参数 + * @return 新增结果 + */ int save(CueOrderDTO cueOrderDTO); - /** - * 修改回收订单 - * - * @param cueOrderDTO 修改参数 - * @return 修改结果 - */ - int update(CueOrderDTO cueOrderDTO); + /** + * 修改回收订单审核状态 + * + * @param cueOrderDTO 修改参数 + * @return 修改结果 + */ + int updateAuditStatus(CueOrderDTO cueOrderDTO); + + /** + * 修改回收订单评估状态 + * + * @param cueOrderDTO 修改参数 + * @return 修改结果 + */ + int updateEvaluateStatus(CueOrderDTO cueOrderDTO); /** * 删除回收订单 diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueOrderServiceImpl.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueOrderServiceImpl.java index 47bee53..4a97b76 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueOrderServiceImpl.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/service/impl/CueOrderServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import com.tmerclub.cloud.common.database.util.PageUtil; import com.tmerclub.cloud.common.database.dto.PageDTO; import com.tmerclub.cloud.common.database.vo.PageVO; +import com.tmerclub.cloud.cuerecycle.constant.CueOrderStatus; import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO; import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; import com.tmerclub.cloud.cuerecycle.model.CueOrder; @@ -13,6 +14,8 @@ import com.tmerclub.cloud.cuerecycle.service.CueOrderService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; +import java.util.Objects; + /** * 回收订单Service实现类 * @@ -31,8 +34,8 @@ public class CueOrderServiceImpl implements CueOrderService { } @Override - public CueOrderVO getById(Long id) { - return cueOrderMapper.getById(id); + public CueOrderVO getById(Long orderId) { + return cueOrderMapper.getById(orderId); } @Override @@ -43,8 +46,23 @@ public class CueOrderServiceImpl implements CueOrderService { } @Override - public int update(CueOrderDTO cueOrderDTO) { - CueOrder cueOrder = BeanUtil.toBean(cueOrderDTO, CueOrder.class); + public int updateAuditStatus(CueOrderDTO cueOrderDTO) { + CueOrder cueOrder = new CueOrder(); + cueOrder.setOrderId(cueOrderDTO.getOrderId()); + cueOrder.setOrderStatus(cueOrderDTO.getOrderStatus()); + cueOrder.setUpdateTime(DateUtil.date()); + return cueOrderMapper.update(cueOrder); + } + + @Override + public int updateEvaluateStatus(CueOrderDTO cueOrderDTO) { + CueOrder cueOrder = new CueOrder(); + cueOrder.setOrderId(cueOrderDTO.getOrderId()); + cueOrder.setOrderStatus(cueOrderDTO.getOrderStatus()); + if(Objects.equals(cueOrderDTO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value())){ + cueOrder.setActualAmount(cueOrderDTO.getActualAmount()); + cueOrder.setVoucherAmount(cueOrderDTO.getVoucherAmount()); + } cueOrder.setUpdateTime(DateUtil.date()); return cueOrderMapper.update(cueOrder); } diff --git a/tmerclub-local/src/main/resources/mapper/CueOrderFlawMapper.xml b/tmerclub-local/src/main/resources/mapper/CueOrderFlawMapper.xml index db8e83c..5d75112 100644 --- a/tmerclub-local/src/main/resources/mapper/CueOrderFlawMapper.xml +++ b/tmerclub-local/src/main/resources/mapper/CueOrderFlawMapper.xml @@ -27,6 +27,8 @@ AND order_id = #{dto.orderId} + ORDER BY + order_flaw_id DESC diff --git a/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml b/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml index 904e846..86980d8 100644 --- a/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml +++ b/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml @@ -7,6 +7,9 @@ + + + @@ -24,10 +27,11 @@ + - order_id,user_id,user_name,user_phone,order_type,order_status,flaw_img_url,evidence_of_payment,order_remark,estimated_amount,actual_amount,voucher_amount,deleted,create_time,update_time,is_payed,pay_type,pay_time,delivery_time,finally_time + order_id,product_id,product_name,product_price,user_id,user_name,user_phone,order_type,order_status,flaw_img_url,evidence_of_payment,order_remark,estimated_amount,actual_amount,voucher_amount,deleted,create_time,update_time,is_payed,pay_type,pay_time,delivery_time,finally_time SELECT o.`status`, o.`order_id`, o.`order_type`,o.`shop_id`,o.actual_total,o.order_mold,o.user_id,o.supplier_id,o.freight_amount,o.platform_free_freight_amount, o.pre_sale_type,o.delivery_type,op.`balance_amount`,op.`deposit_amount`,op.`balance_end_time`