Commit 9b90320985a781ab17cae38fac583ccb420e64a5

Authored by YunaiV
1 parent 6fc72454

mall + trade:

1、增加配送信息
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java
@@ -151,7 +151,6 @@ public class ProductCommentServiceImplTest extends BaseDbUnitTest { @@ -151,7 +151,6 @@ public class ProductCommentServiceImplTest extends BaseDbUnitTest {
151 151
152 // 测试分页 tab count 152 // 测试分页 tab count
153 AppCommentStatisticsRespVO tabsCount = productCommentService.getCommentStatistics(spuId, Boolean.TRUE); 153 AppCommentStatisticsRespVO tabsCount = productCommentService.getCommentStatistics(spuId, Boolean.TRUE);
154 - assertEquals(6, tabsCount.getAllCount());  
155 assertEquals(4, tabsCount.getGoodCount()); 154 assertEquals(4, tabsCount.getGoodCount());
156 assertEquals(2, tabsCount.getMediocreCount()); 155 assertEquals(2, tabsCount.getMediocreCount());
157 assertEquals(0, tabsCount.getNegativeCount()); 156 assertEquals(0, tabsCount.getNegativeCount());
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/delivery/DeliveryTypeEnum.java
@@ -15,6 +15,7 @@ import java.util.Arrays; @@ -15,6 +15,7 @@ import java.util.Arrays;
15 @AllArgsConstructor 15 @AllArgsConstructor
16 public enum DeliveryTypeEnum implements IntArrayValuable { 16 public enum DeliveryTypeEnum implements IntArrayValuable {
17 17
  18 + NULL(0, "无需物流"),
18 EXPRESS(1, "快递发货"), 19 EXPRESS(1, "快递发货"),
19 PICK_UP(2, "用户自提"),; 20 PICK_UP(2, "用户自提"),;
20 21
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/delivery/AppDeliverPickUpStoreController.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.RandomUtil; @@ -4,6 +4,7 @@ import cn.hutool.core.util.RandomUtil;
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.module.trade.controller.app.delivery.vo.pickup.AppDeliveryPickUpStoreRespVO; 5 import cn.iocoder.yudao.module.trade.controller.app.delivery.vo.pickup.AppDeliveryPickUpStoreRespVO;
6 import io.swagger.v3.oas.annotations.Operation; 6 import io.swagger.v3.oas.annotations.Operation;
  7 +import io.swagger.v3.oas.annotations.Parameter;
7 import io.swagger.v3.oas.annotations.tags.Tag; 8 import io.swagger.v3.oas.annotations.tags.Tag;
8 import org.springframework.validation.annotation.Validated; 9 import org.springframework.validation.annotation.Validated;
9 import org.springframework.web.bind.annotation.GetMapping; 10 import org.springframework.web.bind.annotation.GetMapping;
@@ -17,7 +18,7 @@ import java.util.Random; @@ -17,7 +18,7 @@ import java.util.Random;
17 18
18 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 19 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
19 20
20 -@Tag(name = "用户 App - 门店自提") 21 +@Tag(name = "用户 App - 自提门店")
21 @RestController 22 @RestController
22 @RequestMapping("/trade/delivery/pick-up-store") 23 @RequestMapping("/trade/delivery/pick-up-store")
23 @Validated 24 @Validated
@@ -37,8 +38,8 @@ public class AppDeliverPickUpStoreController { @@ -37,8 +38,8 @@ public class AppDeliverPickUpStoreController {
37 store.setLogo("https://www.iocoder.cn/" + (i + 1) + ".png"); 38 store.setLogo("https://www.iocoder.cn/" + (i + 1) + ".png");
38 store.setPhone("15601691300"); 39 store.setPhone("15601691300");
39 store.setAreaId(random.nextInt(100000)); 40 store.setAreaId(random.nextInt(100000));
40 - store.setAreaName(RandomUtil.randomString(10));  
41 - store.setDetailAddress(RandomUtil.randomString(10)); 41 + store.setAreaName("上海-" + RandomUtil.randomString(10));
  42 + store.setDetailAddress("普陀区-" + RandomUtil.randomString(10));
42 store.setLatitude(random.nextDouble() * 10); 43 store.setLatitude(random.nextDouble() * 10);
43 store.setLongitude(random.nextDouble() * 10); 44 store.setLongitude(random.nextDouble() * 10);
44 store.setDistance(random.nextInt(1000)); 45 store.setDistance(random.nextInt(1000));
@@ -49,4 +50,23 @@ public class AppDeliverPickUpStoreController { @@ -49,4 +50,23 @@ public class AppDeliverPickUpStoreController {
49 return success(list); 50 return success(list);
50 } 51 }
51 52
  53 + @GetMapping("/get")
  54 + @Operation(summary = "获得自提门店")
  55 + @Parameter(name = "id", description = "门店编号")
  56 + public CommonResult<AppDeliveryPickUpStoreRespVO> getOrder(@RequestParam("id") Long id) {
  57 + AppDeliveryPickUpStoreRespVO store = new AppDeliveryPickUpStoreRespVO();
  58 + Random random = new Random();
  59 + store.setId(random.nextLong());
  60 + store.setName(RandomUtil.randomString(10));
  61 + store.setLogo("https://www.iocoder.cn/" + (1) + ".png");
  62 + store.setPhone("15601691300");
  63 + store.setAreaId(random.nextInt(100000));
  64 + store.setAreaName("上海-" + RandomUtil.randomString(10));
  65 + store.setDetailAddress("普陀区-" + RandomUtil.randomString(10));
  66 + store.setLatitude(random.nextDouble() * 10);
  67 + store.setLongitude(random.nextDouble() * 10);
  68 + store.setDistance(random.nextInt(1000));
  69 + return success(store);
  70 + }
  71 +
52 } 72 }
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
@@ -127,6 +127,14 @@ public class AppTradeOrderController { @@ -127,6 +127,14 @@ public class AppTradeOrderController {
127 return success(orderCount); 127 return success(orderCount);
128 } 128 }
129 129
  130 + @PutMapping("/take")
  131 + @Operation(summary = "确认交易订单收货")
  132 + @Parameter(name = "id", description = "交易订单编号")
  133 + public CommonResult<Boolean> takeOrder(@RequestParam("id") Long id) {
  134 + // TODO @芋艿:未实现,mock 用
  135 + return success(true);
  136 + }
  137 +
130 @DeleteMapping("/cancel") 138 @DeleteMapping("/cancel")
131 @Operation(summary = "取消交易订单") 139 @Operation(summary = "取消交易订单")
132 @Parameter(name = "id", description = "交易订单编号") 140 @Parameter(name = "id", description = "交易订单编号")
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java
@@ -102,6 +102,9 @@ public class AppTradeOrderDetailRespVO { @@ -102,6 +102,9 @@ public class AppTradeOrderDetailRespVO {
102 @Schema(description = "收件人详细地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "中关村大街 1 号") 102 @Schema(description = "收件人详细地址", requiredMode = Schema.RequiredMode.REQUIRED, example = "中关村大街 1 号")
103 private String receiverDetailAddress; 103 private String receiverDetailAddress;
104 104
  105 + @Schema(description = "自提门店编号", example = "1088")
  106 + private Long pickUpStoreId;
  107 +
105 // ========== 售后基本信息 ========== 108 // ========== 售后基本信息 ==========
106 109
107 // ========== 营销基本信息 ========== 110 // ========== 营销基本信息 ==========
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderSettlementReqVO.java
@@ -44,7 +44,7 @@ public class AppTradeOrderSettlementReqVO { @@ -44,7 +44,7 @@ public class AppTradeOrderSettlementReqVO {
44 private Long addressId; 44 private Long addressId;
45 45
46 @Schema(description = "自提门店编号", example = "1088") 46 @Schema(description = "自提门店编号", example = "1088")
47 - private Long pickupStoreId; 47 + private Long pickUpStoreId;
48 @Schema(description = "收件人名称", example = "芋艿") // 选择门店自提时,该字段为联系人名 48 @Schema(description = "收件人名称", example = "芋艿") // 选择门店自提时,该字段为联系人名
49 private String receiverName; 49 private String receiverName;
50 @Schema(description = "收件人手机", example = "15601691300") // 选择门店自提时,该字段为联系人手机 50 @Schema(description = "收件人手机", example = "15601691300") // 选择门店自提时,该字段为联系人手机
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderDO.java
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.order; @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.dal.dataobject.order;
2 2
3 import cn.iocoder.yudao.framework.common.enums.TerminalEnum; 3 import cn.iocoder.yudao.framework.common.enums.TerminalEnum;
4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
  5 +import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryPickUpStoreDO;
5 import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum; 6 import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum;
6 import cn.iocoder.yudao.module.trade.enums.order.*; 7 import cn.iocoder.yudao.module.trade.enums.order.*;
7 import com.baomidou.mybatisplus.annotation.KeySequence; 8 import com.baomidou.mybatisplus.annotation.KeySequence;
@@ -172,13 +173,6 @@ public class TradeOrderDO extends BaseDO { @@ -172,13 +173,6 @@ public class TradeOrderDO extends BaseDO {
172 */ 173 */
173 private Integer deliveryType; 174 private Integer deliveryType;
174 /** 175 /**
175 - * 配置模板的编号  
176 - *  
177 - * 关联 DeliveryTemplateDO 的 id 编号  
178 - */  
179 - // TODO 芋艿:需要删除  
180 - private Long deliveryTemplateId;  
181 - /**  
182 * 发货物流公司编号 176 * 发货物流公司编号
183 */ 177 */
184 private Long logisticsId; 178 private Long logisticsId;
@@ -197,7 +191,6 @@ public class TradeOrderDO extends BaseDO { @@ -197,7 +191,6 @@ public class TradeOrderDO extends BaseDO {
197 */ 191 */
198 private LocalDateTime deliveryTime; 192 private LocalDateTime deliveryTime;
199 193
200 - // TODO @芋艿:pickUpStoreId;  
201 /** 194 /**
202 * 收货时间 195 * 收货时间
203 */ 196 */
@@ -219,6 +212,13 @@ public class TradeOrderDO extends BaseDO { @@ -219,6 +212,13 @@ public class TradeOrderDO extends BaseDO {
219 */ 212 */
220 private String receiverDetailAddress; 213 private String receiverDetailAddress;
221 214
  215 + /**
  216 + * 自提门店编号
  217 + *
  218 + * 关联 {@link DeliveryPickUpStoreDO#getId()}
  219 + */
  220 + private Long pickUpStoreId;
  221 +
222 // ========== 售后基本信息 ========== 222 // ========== 售后基本信息 ==========
223 /** 223 /**
224 * 售后状态 224 * 售后状态
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java
@@ -115,7 +115,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { @@ -115,7 +115,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
115 when(productSpuApi.getSpuList(eq(asSet(11L, 21L)))).thenReturn(Arrays.asList(spu01, spu02)); 115 when(productSpuApi.getSpuList(eq(asSet(11L, 21L)))).thenReturn(Arrays.asList(spu01, spu02));
116 // mock 方法(用户收件地址的校验) 116 // mock 方法(用户收件地址的校验)
117 AddressRespDTO addressRespDTO = new AddressRespDTO().setId(10L).setUserId(userId).setName("芋艿") 117 AddressRespDTO addressRespDTO = new AddressRespDTO().setId(10L).setUserId(userId).setName("芋艿")
118 - .setMobile("15601691300").setAreaId(3306).setPostCode("85757").setDetailAddress("土豆村"); 118 + .setMobile("15601691300").setAreaId(3306).setDetailAddress("土豆村");
119 when(addressApi.getAddress(eq(10L), eq(userId))).thenReturn(addressRespDTO); 119 when(addressApi.getAddress(eq(10L), eq(userId))).thenReturn(addressRespDTO);
120 // mock 方法(价格计算) 120 // mock 方法(价格计算)
121 PriceCalculateRespDTO.OrderItem priceOrderItem01 = new PriceCalculateRespDTO.OrderItem() 121 PriceCalculateRespDTO.OrderItem priceOrderItem01 = new PriceCalculateRespDTO.OrderItem()
@@ -150,12 +150,12 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { @@ -150,12 +150,12 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
150 }))).thenReturn(1000L); 150 }))).thenReturn(1000L);
151 151
152 // 调用方法 152 // 调用方法
153 - Long tradeOrderId = tradeOrderService.createOrder(userId, userIp, reqVO); 153 + TradeOrderDO order = tradeOrderService.createOrder(userId, userIp, reqVO);
154 // 断言 TradeOrderDO 订单 154 // 断言 TradeOrderDO 订单
155 List<TradeOrderDO> tradeOrderDOs = tradeOrderMapper.selectList(); 155 List<TradeOrderDO> tradeOrderDOs = tradeOrderMapper.selectList();
156 assertEquals(tradeOrderDOs.size(), 1); 156 assertEquals(tradeOrderDOs.size(), 1);
157 TradeOrderDO tradeOrderDO = tradeOrderDOs.get(0); 157 TradeOrderDO tradeOrderDO = tradeOrderDOs.get(0);
158 - assertEquals(tradeOrderDO.getId(), tradeOrderId); 158 + assertEquals(tradeOrderDO.getId(), order.getId());
159 assertNotNull(tradeOrderDO.getNo()); 159 assertNotNull(tradeOrderDO.getNo());
160 assertEquals(tradeOrderDO.getType(), TradeOrderTypeEnum.NORMAL.getType()); 160 assertEquals(tradeOrderDO.getType(), TradeOrderTypeEnum.NORMAL.getType());
161 assertEquals(tradeOrderDO.getTerminal(), TerminalEnum.H5.getTerminal()); 161 assertEquals(tradeOrderDO.getTerminal(), TerminalEnum.H5.getTerminal());
@@ -176,7 +176,6 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { @@ -176,7 +176,6 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
176 assertEquals(tradeOrderDO.getPayPrice(), 80); 176 assertEquals(tradeOrderDO.getPayPrice(), 80);
177 assertEquals(tradeOrderDO.getPayOrderId(), 1000L); 177 assertEquals(tradeOrderDO.getPayOrderId(), 1000L);
178 assertNull(tradeOrderDO.getPayChannelCode()); 178 assertNull(tradeOrderDO.getPayChannelCode());
179 - assertNull(tradeOrderDO.getDeliveryTemplateId());  
180 assertNull(tradeOrderDO.getLogisticsId()); 179 assertNull(tradeOrderDO.getLogisticsId());
181 assertEquals(tradeOrderDO.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus()); 180 assertEquals(tradeOrderDO.getDeliveryStatus(), TradeOrderDeliveryStatusEnum.UNDELIVERED.getStatus());
182 assertNull(tradeOrderDO.getDeliveryTime()); 181 assertNull(tradeOrderDO.getDeliveryTime());
@@ -195,7 +194,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { @@ -195,7 +194,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
195 TradeOrderItemDO tradeOrderItemDO01 = tradeOrderItemDOs.get(0); 194 TradeOrderItemDO tradeOrderItemDO01 = tradeOrderItemDOs.get(0);
196 assertNotNull(tradeOrderItemDO01.getId()); 195 assertNotNull(tradeOrderItemDO01.getId());
197 assertEquals(tradeOrderItemDO01.getUserId(), userId); 196 assertEquals(tradeOrderItemDO01.getUserId(), userId);
198 - assertEquals(tradeOrderItemDO01.getOrderId(), tradeOrderId); 197 + assertEquals(tradeOrderItemDO01.getOrderId(), order.getId());
199 assertEquals(tradeOrderItemDO01.getSpuId(), 11L); 198 assertEquals(tradeOrderItemDO01.getSpuId(), 11L);
200 assertEquals(tradeOrderItemDO01.getSkuId(), 1L); 199 assertEquals(tradeOrderItemDO01.getSkuId(), 1L);
201 assertEquals(tradeOrderItemDO01.getProperties().size(), 1); 200 assertEquals(tradeOrderItemDO01.getProperties().size(), 1);
@@ -213,7 +212,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { @@ -213,7 +212,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
213 TradeOrderItemDO tradeOrderItemDO02 = tradeOrderItemDOs.get(1); 212 TradeOrderItemDO tradeOrderItemDO02 = tradeOrderItemDOs.get(1);
214 assertNotNull(tradeOrderItemDO02.getId()); 213 assertNotNull(tradeOrderItemDO02.getId());
215 assertEquals(tradeOrderItemDO02.getUserId(), userId); 214 assertEquals(tradeOrderItemDO02.getUserId(), userId);
216 - assertEquals(tradeOrderItemDO02.getOrderId(), tradeOrderId); 215 + assertEquals(tradeOrderItemDO02.getOrderId(), order.getId());
217 assertEquals(tradeOrderItemDO02.getSpuId(), 21L); 216 assertEquals(tradeOrderItemDO02.getSpuId(), 21L);
218 assertEquals(tradeOrderItemDO02.getSkuId(), 2L); 217 assertEquals(tradeOrderItemDO02.getSkuId(), 2L);
219 assertEquals(tradeOrderItemDO02.getProperties().size(), 1); 218 assertEquals(tradeOrderItemDO02.getProperties().size(), 1);
@@ -239,7 +238,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { @@ -239,7 +238,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest {
239 verify(couponApi).useCoupon(argThat(reqDTO -> { 238 verify(couponApi).useCoupon(argThat(reqDTO -> {
240 assertEquals(reqDTO.getId(), reqVO.getCouponId()); 239 assertEquals(reqDTO.getId(), reqVO.getCouponId());
241 assertEquals(reqDTO.getUserId(), userId); 240 assertEquals(reqDTO.getUserId(), userId);
242 - assertEquals(reqDTO.getOrderId(), tradeOrderId); 241 + assertEquals(reqDTO.getOrderId(), order.getId());
243 return true; 242 return true;
244 })); 243 }));
245 } 244 }