diff --git a/tmerclub-api/tmerclub-api-marketing/src/main/java/com/tmerclub/cloud/api/coupon/feign/CouponFeignClient.java b/tmerclub-api/tmerclub-api-marketing/src/main/java/com/tmerclub/cloud/api/coupon/feign/CouponFeignClient.java index a55e1d0..d7b2b0b 100644 --- a/tmerclub-api/tmerclub-api-marketing/src/main/java/com/tmerclub/cloud/api/coupon/feign/CouponFeignClient.java +++ b/tmerclub-api/tmerclub-api-marketing/src/main/java/com/tmerclub/cloud/api/coupon/feign/CouponFeignClient.java @@ -103,4 +103,10 @@ public interface CouponFeignClient { * @return */ ServerResponseEntity getStockByCouponId(Long couponId); + + /** + * 直接向用户发放代金卷 + * @return + */ + void sendUserCoupon(Long userId, Long reduceAmount); } diff --git a/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/delivery/feign/DeliveryFeignClient.java b/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/delivery/feign/DeliveryFeignClient.java index e4df222..1a61a05 100644 --- a/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/delivery/feign/DeliveryFeignClient.java +++ b/tmerclub-api/tmerclub-api-order/src/main/java/com/tmerclub/cloud/api/delivery/feign/DeliveryFeignClient.java @@ -61,4 +61,6 @@ public interface DeliveryFeignClient { * @return */ TransportVO getTransportAndAllItemsById(Long deliveryTemplateId); + + void curOderReturns(); } 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 94fbf6f..e6f3df8 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 @@ -548,4 +548,6 @@ public interface OrderFeignClient { * 向商城订单写入球杆回收订单 */ Long saveOrderToMall(SaveOrderToMallDTO saveOrderToMallDTO); + + void updateOrderMall(Long mallOrderId, Integer orderStatus); } diff --git a/tmerclub-api/tmerclub-api-user/src/main/java/com/tmerclub/cloud/api/user/feign/UserAddrFeignClient.java b/tmerclub-api/tmerclub-api-user/src/main/java/com/tmerclub/cloud/api/user/feign/UserAddrFeignClient.java index 3d4c87f..41662e5 100644 --- a/tmerclub-api/tmerclub-api-user/src/main/java/com/tmerclub/cloud/api/user/feign/UserAddrFeignClient.java +++ b/tmerclub-api/tmerclub-api-user/src/main/java/com/tmerclub/cloud/api/user/feign/UserAddrFeignClient.java @@ -1,4 +1,3 @@ - package com.tmerclub.cloud.api.user.feign; import com.tmerclub.cloud.common.order.vo.UserAddrVO; @@ -6,6 +5,7 @@ import com.tmerclub.cloud.common.response.ServerResponseEntity; /** * 用户地址feign连接 + * * @author tmerclub * @date 2020/12/07 */ @@ -14,6 +14,7 @@ public interface UserAddrFeignClient { /** * 根据地址id获取用户地址信息 + * * @param addrId 地址id * @return 用户地址信息 */ @@ -21,9 +22,18 @@ public interface UserAddrFeignClient { /** * 根据用户id获取默认地址 + * * @param userId * @return */ ServerResponseEntity getUserAddrByUserId(Long userId); + /** + * 根据地址id获取用户地址信息 + * + * @param addrId 地址id + * @param userId 用户id + * @return 用户地址信息 + */ + ServerResponseEntity cueGetUserAddrByAddrId(Long addrId, Long userId); } diff --git a/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/constant/SendTypeEnum.java b/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/constant/SendTypeEnum.java index 2fbd52d..18e1f65 100644 --- a/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/constant/SendTypeEnum.java +++ b/tmerclub-common/tmerclub-common-core/src/main/java/com/tmerclub/cloud/common/constant/SendTypeEnum.java @@ -170,6 +170,11 @@ public enum SendTypeEnum { */ PRODUCT_AUDIT_TO_SUPPLIER(1007, 3, "供应商端的商品审核结果提醒", "商品", "平台审核商品后"), + /** + * 回收订单审核信息 + */ + CUE_ORDER_AUDIT_RESULT(2001, 1, "回收订单审核信息", null, null) + ; diff --git a/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/constant/CueOrderStatus.java b/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/constant/CueOrderStatus.java new file mode 100644 index 0000000..68df194 --- /dev/null +++ b/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/constant/CueOrderStatus.java @@ -0,0 +1,34 @@ +package com.tmerclub.cloud.common.local.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_SUCCESS(6, "评估成功(给出价格)"), + EVALUATION_FAIL(7, "价格不满意(退回)"), + EVALUATION_SUCCESS_AND_PAY(8, "价格满意(结束)"), + EVALUATION_FAIL_AND_BACK(9, "价格不满意(已退回)"); + + + private final Integer num; + private final String description; + + CueOrderStatus(Integer num, String description) { + this.num = num; + this.description = description; + } + + public Integer value() { + return num; + } +} diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/config/RocketMqConfig.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/config/RocketMqConfig.java new file mode 100644 index 0000000..d0202c6 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/config/RocketMqConfig.java @@ -0,0 +1,236 @@ + +package com.tmerclub.cloud.config; + +import com.tmerclub.cloud.common.rocketmq.config.RocketMqAdapter; +import com.tmerclub.cloud.common.rocketmq.config.RocketMqConstant; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; + +/** + * @author tmerclub + * @date 2021/3/30 + */ +@RefreshScope +@Configuration +public class RocketMqConfig { + + @Autowired + private RocketMqAdapter rocketMqAdapter; + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate stockMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.STOCK_UNLOCK_TOPIC_BY_ORDER_ID); + } + + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate couponMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.COUPON_UNLOCK_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderCancelTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_CANCEL_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderSubmitShopCartTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_SUBMIT_SHOP_CART); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderPurchaseNotifyShopTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_PURCHASE_NOTIFY_SHOP_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderNotifyServiceTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_NOTIFY_SERVICE_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate allinPayBalanceOrderSuccessTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ALLINPAY_BALANCE_ORDER_SUCCESS_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderReceiptTemplate() { + return rocketMqAdapter.getTransactionTemplateByTopicName(RocketMqConstant.ORDER_RECEIPT_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderSettledShopTemplate() { + return rocketMqAdapter.getTransactionTemplateByTopicName(RocketMqConstant.ORDER_SETTLED_SHOP_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundTemplate() { + return rocketMqAdapter.getTransactionTemplateByTopicName(RocketMqConstant.ORDER_REFUND_TOPIC); + } + + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundPaymentTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_PAYMENT_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundShopTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_SHOP_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundSuccessSettlementTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_SUCCESS_SETTLEMENT_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate refundSuccessNotifySupplierTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_SUCCESS_SETTLEMENT_SUPPLIER_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundSuccessServiceTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_SUCCESS_SERVICE_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundSuccessStockTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_SUCCESS_STOCK_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate groupOrderCancelMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.GROUP_ORDER_CANCEL_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate seckillOrderCancelMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.SECKILL_ORDER_CANCEL_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate seckillOrderRefundMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.SECKILL_ORDER_REFUND_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate sendNotifyToShopTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.SEND_NOTIFY_TO_SHOP_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate sendNotifyToUserTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.SEND_NOTIFY_TO_USER_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate userScoreTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.SCORE_UNLOCK_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate sendNotifyToUserExtensionTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.SEND_NOTIFY_TO_USER_EXTENSION_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate stockBillLogTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.STOCK_BILL_LOG_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate stockBillLogPurchaseStorageTemplate() { + return rocketMqAdapter.getTransactionTemplateByTopicName(RocketMqConstant.STOCK_BILL_LOG_PURCHASE_STORAGE_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate outStockLogTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.OUT_STOCK_LOG_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderNotifyTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_NOTIFY_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderPreSaleFailSettlementTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_PRE_SALE_FAIL_SETTLEMENT_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate presaleOrderCanalMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.PRESALE_ORDER_CANAL_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundCancelMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_CANAL_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate comboOrderMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.COMBO_ORDER_TOPIC); + } + + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate sendOrderToPurchaseNotifyToShopTemplate() { + return rocketMqAdapter.getTransactionTemplateByTopicName(RocketMqConstant.SEND_ORDER_TO_PURCHASE_NOTIFY_TO_SHOP_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderSettlementShopByAllinpayTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_SETTLED_SHOP_BY_ALLINPAY_TOPIC); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate orderRefundUpdateRefundStatusMqTemplate() { + return rocketMqAdapter.getTemplateByTopicName(RocketMqConstant.ORDER_REFUND_UPDATE_REFUND_STATUS); + } + + @Lazy + @Bean(destroyMethod = "destroy") + public RocketMQTemplate addPurchaseAmountLogTemplate() { + return rocketMqAdapter.getTransactionTemplateByTopicName(RocketMqConstant.ADD_PURCHASE_AMOUNT_LOG_TOPIC); + } +} 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 deleted file mode 100644 index 5ded0dd..0000000 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/constant/CueOrderStatus.java +++ /dev/null @@ -1,34 +0,0 @@ -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/app/CueOrderController.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/controller/app/CueOrderController.java index 5889fce..b69218b 100644 --- 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 @@ -1,21 +1,16 @@ 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.model.dto.CueRefuseOrderDTO; +import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO; 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; +import org.springframework.web.bind.annotation.*; /** * 回收订单 @@ -54,4 +49,48 @@ public class CueOrderController { createOrderManager.saveOrderToMall(orderId, createOrderDTO.getProductPrice() - flawPrice, createOrderDTO); return ServerResponseEntity.success(); } + + /** + * 根据订单id查询订单信息 + * + * @param orderId 订单id + * @return ServerResponseEntity + */ + @GetMapping("/getOrderById") + @Operation(summary = "根据订单id查询订单信息", description = "根据订单id查询订单信息") + public ServerResponseEntity getOrderById(@RequestParam("orderId") Long orderId) { + AppCueOrderVO appCueOrderVO = cueOrderService.getByAppCueOrderId(orderId); + return ServerResponseEntity.success(appCueOrderVO); + } + + /** + * 同意预计价格 + * + * @param createOrderDTO 入参 + * @return 结果 + */ + @PostMapping("/agreePrice") + public ServerResponseEntity agreePrice(@RequestBody CreateOrderDTO createOrderDTO) { + createOrderManager.agreePrice(); + return ServerResponseEntity.success(); + } + + // 同意回收 + @PostMapping("/agreeOrder") + public ServerResponseEntity agreeOrder(@RequestBody CreateOrderDTO createOrderDTO) { + createOrderManager.agreeOrder(createOrderDTO); + return ServerResponseEntity.success(); + } + + /** + * 拒绝回收 + * + * @param cueRefuseOrderDTO 拒绝订单入参 + * @return 结果 + */ + @PostMapping("/refuseOrder") + public ServerResponseEntity refuseOrder(@RequestBody CueRefuseOrderDTO cueRefuseOrderDTO) { + createOrderManager.refuseOrder(cueRefuseOrderDTO); + 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 index b8cf2d8..8b7c9e5 100644 --- 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 @@ -2,15 +2,24 @@ package com.tmerclub.cloud.cuerecycle.manager; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.tmerclub.cloud.api.coupon.feign.CouponFeignClient; +import com.tmerclub.cloud.api.delivery.feign.DeliveryFeignClient; import com.tmerclub.cloud.api.order.feign.OrderFeignClient; +import com.tmerclub.cloud.api.user.feign.UserAddrFeignClient; +import com.tmerclub.cloud.common.exception.LuckException; +import com.tmerclub.cloud.common.local.constant.CueOrderStatus; import com.tmerclub.cloud.common.local.dto.SaveOrderToMallDTO; -import com.tmerclub.cloud.cuerecycle.constant.CueOrderStatus; +import com.tmerclub.cloud.common.order.vo.UserAddrVO; +import com.tmerclub.cloud.common.response.ServerResponseEntity; 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.model.dto.CueRefuseOrderDTO; +import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; import com.tmerclub.cloud.cuerecycle.service.CueFlawService; import jakarta.annotation.Resource; import org.apache.dubbo.config.annotation.DubboReference; @@ -18,6 +27,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import java.util.Objects; + /** * 确认订单管理器 * @@ -35,7 +46,13 @@ public class CreateOrderManager { @Resource CueOrderFlawMapper cueOrderFlawMapper; @DubboReference + CouponFeignClient couponFeignClient; + @DubboReference private OrderFeignClient orderFeignClient; + @DubboReference + DeliveryFeignClient deliveryFeignClient; + @DubboReference + UserAddrFeignClient userAddrFeignClient; /** * 保存订单信息 @@ -88,4 +105,92 @@ public class CreateOrderManager { cueOrder.setEstimatedAmount(estimatedAmount); cueOrderMapper.update(cueOrder); } -} + + /** + * 修改mallOrder订单 + * + * @param mallOrderId mallOrderId + * @param orderStatus 状态 + */ + public void updateOrderMall(Long mallOrderId, Integer orderStatus) { + orderFeignClient.updateOrderMall(mallOrderId, orderStatus); + } + public void agreePrice(){ + deliveryFeignClient.curOderReturns(); + } + + public void agreeOrder(CreateOrderDTO createOrderDTO) { + // 查询订单信息 + CueOrderVO cueOrderVO = cueOrderMapper.getById(createOrderDTO.getOrderId()); + if (ObjectUtil.isNull(cueOrderVO)) { + throw new LuckException("订单不存在,请检查!"); + } + // 判断状态是否允许修改 + if (!Objects.equals(cueOrderVO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value())) { + throw new LuckException("状态已变更,请检查!"); + } + CueOrder cueOrder = new CueOrder(); + cueOrder.setOrderId(createOrderDTO.getOrderId()); + cueOrder.setOrderType(createOrderDTO.getOrderType()); + cueOrder.setOrderStatus(CueOrderStatus.EVALUATION_SUCCESS_AND_PAY.value()); + cueOrder.setUpdateTime(DateUtil.date()); + cueOrder.setFinallyTime(DateUtil.date()); + cueOrder.setIsPayed(1); + // 根据回收类型进行不同操作 + switch (createOrderDTO.getOrderType()) { + case 1: + // 回收 + cueOrder.setPayType(1); + break; + case 2: + // 置换 + cueOrder.setPayType(2); + break; + case 3: + // 寄售 + cueOrder.setPayType(1); + break; + default: + throw new LuckException("订单类型错误,请检查!"); + } + // 根据支付方式进行不同操作 + switch (cueOrder.getPayType()) { + case 1: + // 余额支付 直接向用户账户打款 + break; + case 2: + // 代金卷支付 + couponFeignClient.sendUserCoupon(cueOrderVO.getUserId(), cueOrderVO.getVoucherAmount()); + break; + default: + throw new LuckException("支付方式错误,请检查!"); + } + cueOrderMapper.update(cueOrder); + this.updateOrderMall(cueOrderVO.getMallOrderId(), CueOrderStatus.EVALUATION_FAIL.value()); + } + + public void refuseOrder(CueRefuseOrderDTO cueRefuseOrderDTO) { + + Long orderId = cueRefuseOrderDTO.getOrderId(); + // 查询订单信息 + CueOrderVO cueOrderVO = cueOrderMapper.getById(orderId); + if (ObjectUtil.isNull(cueOrderVO)) { + throw new LuckException("订单不存在,请检查!"); + } + // 判断状态是否允许修改 + if (!Objects.equals(cueOrderVO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value())) { + throw new LuckException("状态已变更,请检查!"); + } + // 需要向order_addr插入一条数据 + ServerResponseEntity userAddrVOServerResponseEntity = userAddrFeignClient.cueGetUserAddrByAddrId(orderId, cueOrderVO.getUserId()); + if (userAddrVOServerResponseEntity.isSuccess()) { + + } + CueOrder cueOrder = new CueOrder(); + cueOrder.setOrderId(orderId); + cueOrder.setOrderStatus(CueOrderStatus.EVALUATION_FAIL.value()); + cueOrder.setUpdateTime(DateUtil.date()); + cueOrderMapper.update(cueOrder); + this.updateOrderMall(cueOrderVO.getMallOrderId(), CueOrderStatus.EVALUATION_FAIL.value()); + } +} \ No newline at end of file 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 3adabff..fc77d3d 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 @@ -1,6 +1,7 @@ package com.tmerclub.cloud.cuerecycle.mapper; import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO; +import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO; import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; import com.tmerclub.cloud.cuerecycle.model.CueOrder; import org.apache.ibatis.annotations.Param; 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 7f4d645..3df8a52 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 @@ -32,6 +32,10 @@ public class CueOrder extends BaseModel implements Serializable { * 商品名称 */ private String productName; + /** + * 商品图片 + */ + private String productImages; /** * 价格 */ @@ -53,7 +57,7 @@ public class CueOrder extends BaseModel implements Serializable { */ private Integer orderType; /** - * 状态:0-待审核,1-审核通过,2-审核拒绝,3-待发货,4-待收货(已发货),5-已收货(评估中),6-评估失败(退回),7-评估成功,8-已完成,9-价格不满意(退回) + * 0-待审核,1-审核通过(待发货),2-审核拒绝,3-待收货(已发货),4-已收货(评估中),5-评估失败(退回),6-评估成功(给出价格),7-价格不满意(退回),8-价格满意(结束),9-价格不满意(已退回) */ private Integer orderStatus; /** @@ -109,4 +113,13 @@ public class CueOrder extends BaseModel implements Serializable { * 商城订单id */ private Long mallOrderId; + + /** + * 寄售佣金 + */ + private Long brokerage; + /** + * 服务费 + */ + private Long serviceCharge; } \ 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 index 2c90b1d..f5019df 100644 --- 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 @@ -17,6 +17,10 @@ public class CreateOrderDTO implements Serializable { @Serial private static final long serialVersionUID = 1L; + /** + * 订单ID + */ + private Long orderId; /** * 商品ID */ diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderDTO.java index 4b9748a..4d3af7a 100644 --- a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderDTO.java +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueOrderDTO.java @@ -38,7 +38,7 @@ public class CueOrderDTO implements Serializable { */ private Integer orderType; /** - * 状态:0-待审核,1-审核通过,2-审核拒绝,3-待发货,4-待收货(已发货),5-已收货(评估中),6-评估失败(退回),7-评估成功,8-已完成,9-价格不满意(退回) + * 状态:0-待审核,1-审核通过(待发货),2-审核拒绝,3-待收货(已发货),4-已收货(评估中),5-评估失败(退回),6-评估成功(给出价格),7-价格不满意(退回),8-价格满意(结束),9-价格不满意(已退回) */ private Integer orderStatus; /** @@ -89,5 +89,16 @@ public class CueOrderDTO implements Serializable { * 完成时间 */ private Date finallyTime; - + /** + * 订单关联的商城订单ID + */ + private Long mallOrderId; + /** + * 寄售佣金 + */ + private Long brokerage; + /** + * 服务费 + */ + private Long serviceCharge; } \ No newline at end of file diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueRefuseOrderDTO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueRefuseOrderDTO.java new file mode 100644 index 0000000..74bfbc0 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/dto/CueRefuseOrderDTO.java @@ -0,0 +1,24 @@ +package com.tmerclub.cloud.cuerecycle.model.dto; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 拒绝回收业务对象 + * + * @author: frank + * @create: 2025-04-18 + **/ +@Data +public class CueRefuseOrderDTO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + /** + * 订单ID + */ + private Long orderId; + + private Long addrId; +} diff --git a/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/AppCueOrderVO.java b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/AppCueOrderVO.java new file mode 100644 index 0000000..64e9041 --- /dev/null +++ b/tmerclub-local/src/main/java/com/tmerclub/cloud/cuerecycle/model/vo/AppCueOrderVO.java @@ -0,0 +1,115 @@ +package com.tmerclub.cloud.cuerecycle.model.vo; + +import com.tmerclub.cloud.common.vo.BaseVO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 回收订单视图对象 + * + * @author : frank + * @create : 2025-04-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class AppCueOrderVO extends BaseVO implements Serializable { + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @Schema(description = "主键ID") + private Long orderId; + /** + * 用户ID + */ + @Schema(description = "用户ID") + private Long userId; + /** + * 商品ID + */ + @Schema(description = "商品ID") + private Long productId; + /** + * 商品名称 + */ + @Schema(description = "商品名称") + private String productName; + /** + * 商品图片 + */ + @Schema(description = "商品图片") + private String productImages; + /** + * 类型:1-回收,2-置换,3-寄售 + */ + @Schema(description = "类型:1-回收,2-置换,3-寄售") + private Integer orderType; + /** + * 状态:0-待审核,1-审核通过(待发货),2-审核拒绝,3-待收货(已发货),4-已收货(评估中),5-评估失败(退回),6-评估成功(给出价格),7-价格不满意(退回),8-价格满意(结束),9-价格不满意(已退回) + */ + @Schema(description = "0-待审核,1-审核通过(待发货),2-审核拒绝,3-待收货(已发货),4-已收货(评估中),5-评估失败(退回),6-评估成功(给出价格),7-价格不满意(退回),8-价格满意(结束),9-价格不满意(已退回)") + private Integer orderStatus; + /** + * 预计金额 + */ + @Schema(description = "预计金额") + private Long estimatedAmount; + /** + * 评估金额 + */ + @Schema(description = "评估金额") + private Long actualAmount; + /** + * 代金卷金额 + */ + @Schema(description = "代金卷金额") + private Long voucherAmount; + /** + * 是否已支付,1.已支付0.未支付 + */ + @Schema(description = "是否已支付,1.已支付0.未支付") + private Integer isPayed; + /** + * 支付方式:1-余额,2-代金卷 + */ + @Schema(description = "支付方式:1-余额,2-代金卷") + private Integer payType; + /** + * 付款时间 + */ + @Schema(description = "付款时间") + private Date payTime; + /** + * 发货时间 + */ + @Schema(description = "发货时间") + private Date deliveryTime; + /** + * 完成时间 + */ + @Schema(description = "完成时间") + private Date finallyTime; + /** + * 商城订单ID + */ + @Schema(description = "商城订单ID") + private Long mallOrderId; + /** + * 寄售佣金 + */ + @Schema(description = "寄售佣金") + private Long brokerage; + /** + * 服务费 + */ + @Schema(description = "服务费") + private Long serviceCharge; +} \ No newline at end of file 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 3c2ea15..418b000 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 @@ -63,9 +63,9 @@ public class CueOrderVO extends BaseVO implements Serializable { @Schema(description = "类型:1-回收,2-置换,3-寄售") private Integer orderType; /** - * 状态:0-待审核,1-审核通过,2-审核拒绝,3-待发货,4-待收货(已发货),5-已收货(评估中),6-评估失败(退回),7-评估成功,8-已完成,9-价格不满意(退回) + * 状态:0-待审核,1-审核通过(待发货),2-审核拒绝,3-待收货(已发货),4-已收货(评估中),5-评估失败(退回),6-评估成功(给出价格),7-价格不满意(退回),8-价格满意(结束),9-价格不满意(已退回) */ - @Schema(description = "状态:0-待审核,1-审核通过,2-审核拒绝,3-待发货,4-待收货(已发货),5-已收货(评估中),6-评估失败(退回),7-评估成功,8-已完成,9-价格不满意(退回)") + @Schema(description = "0-待审核,1-审核通过(待发货),2-审核拒绝,3-待收货(已发货),4-已收货(评估中),5-评估失败(退回),6-评估成功(给出价格),7-价格不满意(退回),8-价格满意(结束),9-价格不满意(已退回)") private Integer orderStatus; /** * 瑕疵图片,逗号隔开 @@ -127,4 +127,9 @@ public class CueOrderVO extends BaseVO implements Serializable { */ @Schema(description = "瑕疵项") private List flawList; + /** + * 商城订单ID + */ + @Schema(description = "商城订单ID") + private Long mallOrderId; } \ 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 178a13b..45489b9 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 @@ -3,6 +3,7 @@ package com.tmerclub.cloud.cuerecycle.service; import com.tmerclub.cloud.common.database.dto.PageDTO; import com.tmerclub.cloud.common.database.vo.PageVO; import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO; +import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO; import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; /** @@ -61,4 +62,12 @@ public interface CueOrderService { * @return 删除结果 */ int delete(Long id); + + /** + * 根据订单ID获取回收订单详情 + * + * @param orderId 订单ID + * @return 回收订单详情 + */ + AppCueOrderVO getByAppCueOrderId(Long orderId); } \ No newline at end of file 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 4a97b76..7e9c513 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 @@ -2,18 +2,32 @@ package com.tmerclub.cloud.cuerecycle.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; -import com.tmerclub.cloud.common.database.util.PageUtil; +import com.tmerclub.cloud.common.constant.Constant; +import com.tmerclub.cloud.common.constant.SendTypeEnum; import com.tmerclub.cloud.common.database.dto.PageDTO; +import com.tmerclub.cloud.common.database.util.PageUtil; 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; +import com.tmerclub.cloud.common.exception.LuckException; +import com.tmerclub.cloud.common.local.constant.CueOrderStatus; +import com.tmerclub.cloud.common.order.vo.SendNotifyBO; +import com.tmerclub.cloud.common.response.ResponseEnum; +import com.tmerclub.cloud.common.rocketmq.config.RocketMqConstant; +import com.tmerclub.cloud.cuerecycle.manager.CreateOrderManager; import com.tmerclub.cloud.cuerecycle.mapper.CueOrderMapper; +import com.tmerclub.cloud.cuerecycle.model.CueOrder; +import com.tmerclub.cloud.cuerecycle.model.dto.CueOrderDTO; +import com.tmerclub.cloud.cuerecycle.model.vo.AppCueOrderVO; +import com.tmerclub.cloud.cuerecycle.model.vo.CueOrderVO; import com.tmerclub.cloud.cuerecycle.service.CueOrderService; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.client.producer.SendStatus; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.messaging.support.GenericMessage; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; /** @@ -22,11 +36,16 @@ import java.util.Objects; * @author : frank * @create : 2025-04-15 */ +@Slf4j @Service public class CueOrderServiceImpl implements CueOrderService { @Resource CueOrderMapper cueOrderMapper; + @Resource + CreateOrderManager createOrderManager; + @Resource + private RocketMQTemplate sendNotifyToUserTemplate; @Override public PageVO page(PageDTO pageDTO, CueOrderDTO cueOrderDTO) { @@ -51,6 +70,8 @@ public class CueOrderServiceImpl implements CueOrderService { cueOrder.setOrderId(cueOrderDTO.getOrderId()); cueOrder.setOrderStatus(cueOrderDTO.getOrderStatus()); cueOrder.setUpdateTime(DateUtil.date()); + // 发送消息 + syncSend(cueOrderDTO); return cueOrderMapper.update(cueOrder); } @@ -59,14 +80,38 @@ public class CueOrderServiceImpl implements CueOrderService { CueOrder cueOrder = new CueOrder(); cueOrder.setOrderId(cueOrderDTO.getOrderId()); cueOrder.setOrderStatus(cueOrderDTO.getOrderStatus()); - if(Objects.equals(cueOrderDTO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value())){ + if (Objects.equals(cueOrderDTO.getOrderStatus(), CueOrderStatus.EVALUATION_SUCCESS.value())) { cueOrder.setActualAmount(cueOrderDTO.getActualAmount()); - cueOrder.setVoucherAmount(cueOrderDTO.getVoucherAmount()); + // 寄售需要填写服务费和佣金 + if (cueOrderDTO.getOrderType().equals(3)) { + cueOrder.setServiceCharge(cueOrderDTO.getServiceCharge()); + cueOrder.setBrokerage(cueOrderDTO.getBrokerage()); + } else { + cueOrder.setVoucherAmount(cueOrderDTO.getVoucherAmount()); + } } cueOrder.setUpdateTime(DateUtil.date()); + // 发送消息 + syncSend(cueOrderDTO); return cueOrderMapper.update(cueOrder); } + private void syncSend(CueOrderDTO cueOrderDTO) { + // 修改系统订单的状态 + createOrderManager.updateOrderMall(cueOrderDTO.getMallOrderId(), cueOrderDTO.getOrderStatus()); + // 发送消息 + List notifyList = new ArrayList<>(Constant.INITIAL_CAPACITY); + SendNotifyBO sendNotifyBO = new SendNotifyBO(); + sendNotifyBO.setSendType(SendTypeEnum.CUE_ORDER_AUDIT_RESULT.getValue()); + sendNotifyBO.setUserId(cueOrderDTO.getUserId()); + sendNotifyBO.setShopId(Constant.PLATFORM_SHOP_ID); + notifyList.add(sendNotifyBO); + SendStatus sendStockStatus = sendNotifyToUserTemplate.syncSend(RocketMqConstant.SEND_NOTIFY_TO_USER_TOPIC, new GenericMessage<>(notifyList)).getSendStatus(); + if (!Objects.equals(sendStockStatus, SendStatus.SEND_OK)) { + throw new LuckException(ResponseEnum.EXCEPTION); + } + } + @Override public int delete(Long id) { CueOrderVO cueOrderVO = cueOrderMapper.getById(id); @@ -75,4 +120,10 @@ public class CueOrderServiceImpl implements CueOrderService { cueOrder.setDeleted(1); return cueOrderMapper.update(cueOrder); } + + @Override + public AppCueOrderVO getByAppCueOrderId(Long orderId) { + CueOrderVO cueOrderVO = cueOrderMapper.getById(orderId); + return BeanUtil.toBean(cueOrderVO, AppCueOrderVO.class); + } } \ No newline at end of file diff --git a/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml b/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml index 86980d8..6e86fae 100644 --- a/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml +++ b/tmerclub-local/src/main/resources/mapper/CueOrderMapper.xml @@ -28,10 +28,11 @@ + - 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 + order_id,product_id,product_name,product_images,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,mall_order_id SELECT IF(MIN(order_id) = #{orderId}, 1, 0) firstOrder diff --git a/tmerclub-user/src/main/java/com/tmerclub/cloud/user/feign/UserAddrFeignController.java b/tmerclub-user/src/main/java/com/tmerclub/cloud/user/feign/UserAddrFeignController.java index e48cf5d..d6fbde5 100644 --- a/tmerclub-user/src/main/java/com/tmerclub/cloud/user/feign/UserAddrFeignController.java +++ b/tmerclub-user/src/main/java/com/tmerclub/cloud/user/feign/UserAddrFeignController.java @@ -37,4 +37,9 @@ public class UserAddrFeignController implements UserAddrFeignClient { public ServerResponseEntity getUserAddrByUserId(Long userId) { return ServerResponseEntity.success(userAddrService.getUserAddrByUserId(0L, userId)); } + + @Override + public ServerResponseEntity cueGetUserAddrByAddrId(Long addrId, Long userId) { + return ServerResponseEntity.success(userAddrService.getUserAddrByUserId(addrId, userId)); + } }