diff --git a/mall-common/src/main/java/com/suisung/mall/common/exception/ApiException.java b/mall-common/src/main/java/com/suisung/mall/common/exception/ApiException.java index ca0b724f..aa715c49 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/exception/ApiException.java +++ b/mall-common/src/main/java/com/suisung/mall/common/exception/ApiException.java @@ -13,7 +13,7 @@ public class ApiException extends RuntimeException { this.errorCode = errorCode; } - public ApiException(IErrorCode errorCode,String appendMessage) { + public ApiException(IErrorCode errorCode, String appendMessage) { super(errorCode.getMessage() + ":" + appendMessage); this.errorCode = errorCode; } diff --git a/mall-common/src/main/java/com/suisung/mall/common/pojo/req/SFCreateOrderReq.java b/mall-common/src/main/java/com/suisung/mall/common/pojo/req/SFCreateOrderReq.java index f94e2043..c27024cb 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/pojo/req/SFCreateOrderReq.java +++ b/mall-common/src/main/java/com/suisung/mall/common/pojo/req/SFCreateOrderReq.java @@ -32,6 +32,9 @@ public class SFCreateOrderReq implements Serializable { @ApiModelProperty("商家订单号") private String shop_order_id; + @ApiModelProperty("订单接入来源") + private String order_source; + @ApiModelProperty("取货序号") private String order_sequence; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java index 0e6982a4..ef35668c 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java @@ -73,16 +73,20 @@ public class OrderPayedListener { logger.info("#### 支付异步通知回调处理是否成功:{} ####", flag); // 生成取单号和打印小票 if (flag) { + // TODO 以下仅处理下单打印的情况,还需要处理退单打印分支。 logger.info("####开始生成订单{}的取单号####", orderId); ShopOrderInfo orderInfo = new ShopOrderInfo(); orderInfo.setOrder_id(orderId); // 生成取单号,写入order_info - orderInfo.setOrder_pickup_num(shopOrderInfoService.genTodayPickupNum(orderInfoOld.getStore_id())); + Long orderPickupNum = shopOrderInfoService.genTodayPickupNum(orderInfoOld.getStore_id()); + orderInfo.setOrder_pickup_num(orderPickupNum); shopOrderInfoService.edit(orderInfo); // 订单状态处理成功之后,打印小票 shopStorePrinterService.printShopStoreOrder(orderId); + + // 发送顺丰同城快递 } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java index cd5c661a..adb2fba8 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderBaseService.java @@ -4,6 +4,7 @@ import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.modules.order.ShopOrderBase; import com.suisung.mall.common.modules.order.ShopOrderInfo; import com.suisung.mall.common.modules.order.ShopOrderLogistics; +import com.suisung.mall.common.pojo.req.SFCreateOrderReq; import com.suisung.mall.core.web.service.IBaseService; import com.suisung.mall.shop.order.vo.OrdeListVo; import com.suisung.mall.shop.product.pojo.vo.FixOrderVo; @@ -518,4 +519,14 @@ public interface ShopOrderBaseService extends IBaseService { * @return */ Map getOrderPrintInfo(@Param("orderId") String orderId, @Param("payState") Integer payState); + + + /** + * 根据订单Id,生成顺丰同城的订单实体实例 + * @param devId + * @param orderId + * @param orderPickupNum + * @return + */ + SFCreateOrderReq buildSFOrderData(Integer devId,String orderId,String orderPickupNum); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderDeliveryAddressService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderDeliveryAddressService.java index b7797600..39200395 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderDeliveryAddressService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderDeliveryAddressService.java @@ -12,5 +12,10 @@ import com.suisung.mall.core.web.service.IBaseService; * @since 2021-06-16 */ public interface ShopOrderDeliveryAddressService extends IBaseService { - + /** + * 根据订单ID获取订单发货地址 + * @param orderId + * @return + */ + ShopOrderDeliveryAddress selectByOrderId(String orderId); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java index 13ffd643..3c433e69 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java @@ -54,6 +54,9 @@ import com.suisung.mall.common.modules.product.ShopProductItem; import com.suisung.mall.common.modules.product.ShopProductValidPeriod; import com.suisung.mall.common.modules.store.*; import com.suisung.mall.common.modules.user.*; +import com.suisung.mall.common.pojo.req.SFCreateOrderReq; +import com.suisung.mall.common.pojo.req.SFOrderReceiveReq; +import com.suisung.mall.common.pojo.req.SFOrderShopReq; import com.suisung.mall.common.pojo.to.MsgTO; import com.suisung.mall.common.pojo.to.PayMoneyTO; import com.suisung.mall.common.pojo.to.PayPointTO; @@ -104,6 +107,7 @@ import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.Serializable; @@ -342,8 +346,12 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl> statisticState() { UserDto user = getCurrentUser(); @@ -1286,6 +1294,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl order_id_row = addOrder(cart_data, true, false, null); + // 最终应付金额 BigDecimal orderSelMoneyAmount = Convert.toBigDecimal(cart_data.get("orderSelMoneyAmount")); if (CollUtil.isNotEmpty(order_id_row) && ObjectUtil.compare(orderSelMoneyAmount, BigDecimal.ZERO) <= 0) { @@ -2788,6 +2798,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl implements ShopOrderDeliveryAddressService { + /** + * 根据订单ID获取订单发货地址 + * + * @param orderId + * @return + */ + @Override + public ShopOrderDeliveryAddress selectByOrderId(String orderId) { + if(StrUtil.isBlank(orderId)){ + return null; + } + + return getById(orderId); + } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java index 73857ee0..d609079f 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java @@ -45,7 +45,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { @Value("${sf-express.appkey}") private String appKey; @Value("${sf-express.dev_id}") - private String devId; + private Integer devId; @Resource private ShopStoreSfOrderService shopStoreSfOrderService; @@ -60,16 +60,17 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { Long now = DateUtil.currentSeconds(); - SFCreateOrderReq param = new SFCreateOrderReq(); - param.setDev_id(1711573316); - param.setVersion(19); - param.setOrder_time(now); - param.setPush_time(now); - param.setRemark("测试顺丰同城发单,请不要通知骑手接单!"); - param.setOrder_sequence("000000123"); - param.setShop_id("3243279847393"); - param.setShop_order_id(shopOrderId); //"DD-20241118-00001" - param.setReturn_flag(511); + SFCreateOrderReq sfOrder = new SFCreateOrderReq(); + sfOrder.setDev_id(1711573316); + sfOrder.setVersion(19); + sfOrder.setOrder_time(now); + sfOrder.setPush_time(now); + sfOrder.setRemark("测试顺丰同城发单,请不要通知骑手接单!"); + sfOrder.setOrder_source("小发同城"); + sfOrder.setOrder_sequence("000000123"); // 打票机的取单号 + sfOrder.setShop_id("3243279847393"); + sfOrder.setShop_order_id(shopOrderId); //"DD-20241118-00001" + sfOrder.setReturn_flag(511); SFOrderDetailReq orderDetail = new SFOrderDetailReq(); orderDetail.setTotal_price(2000); @@ -89,28 +90,28 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { orderDetail.setProduct_detail(orderProductList); - param.setOrder_detail(orderDetail); + sfOrder.setOrder_detail(orderDetail); - SFOrderShopReq sender = new SFOrderShopReq(); - sender.setShop_name("顺丰同城开放平台"); - sender.setShop_address("蜂巢工场西区"); - sender.setShop_phone("13203559287"); - sender.setShop_lng("116.327914"); - sender.setShop_lat("40.045488"); - param.setShop(sender); + SFOrderShopReq shop = new SFOrderShopReq(); + shop.setShop_name("顺丰同城开放平台"); + shop.setShop_address("蜂巢工场西区"); + shop.setShop_phone("13203559287"); + shop.setShop_lng("116.327914"); + shop.setShop_lat("40.045488"); + sfOrder.setShop(shop); - SFOrderReceiveReq receiver = new SFOrderReceiveReq(); - receiver.setUser_name("顺丰同城"); - receiver.setUser_phone("13881979410"); - receiver.setUser_address("北京市海淀区学清嘉创大厦A座15层"); - receiver.setUser_lng("116.352843"); - receiver.setUser_lat("40.015028"); - param.setReceive(receiver); + SFOrderReceiveReq receive = new SFOrderReceiveReq(); + receive.setUser_name("顺丰同城"); + receive.setUser_phone("13881979410"); + receive.setUser_address("北京市海淀区学清嘉创大厦A座15层"); + receive.setUser_lng("116.352843"); + receive.setUser_lat("40.015028"); + sfOrder.setReceive(receive); // 转换 json 字符串参数 - String paramJSON = JsonUtil.toJSONString(param); + String paramJSON = JsonUtil.toJSONString(sfOrder); // 根据参数生成请求签名 String send_url = buildUrl("createorder", paramJSON); @@ -139,18 +140,18 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { String retRespStr = HttpUtil.post(send_url, paramJSON); if (StrUtil.isEmpty(retRespStr)) { - logger.error("顺丰同城:创建订单异常,无返回值!"); - return Pair.of(false, "创建订单异常,无返回值!"); + logger.error("创建顺丰同城订单异常,无返回值!"); + return Pair.of(false, "创建顺丰同城订单异常,无返回值!"); } - JSONObject sfExpressApiRes = JSONUtil.parseObj(retRespStr); //JsonUtil.json2object(retRespStr, SFExpressApiRes.class); + JSONObject sfExpressApiRes = JSONUtil.parseObj(retRespStr); if (sfExpressApiRes == null) { - logger.error("顺丰同城:创建订单后异常,无返回值!"); - return Pair.of(false, "创建订单后异常,无返回值!"); + logger.error("创建顺丰同城订单后异常,无返回值!"); + return Pair.of(false, "创建顺丰同城订单后异常,无返回值!"); } if (!sfExpressApiRes.get("error_code").equals(0) || sfExpressApiRes.get("result") == null) { - logger.error("顺丰同城:创建订单后,发生错误 {}", sfExpressApiRes.get("error_msg")); + logger.error("创建顺丰同城订单后,发生错误 {}", sfExpressApiRes.get("error_msg")); return Pair.of(false, Convert.toStr(sfExpressApiRes.get("error_msg"))); } @@ -161,15 +162,15 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { // 下单成功,保存顺丰同城订单记录到 shop_store_sf_order 表里 Boolean success = shopStoreSfOrderService.insertShopStoreSfOrder(shopStoreSfOrder); if (!success) { - return Pair.of(false, "顺丰同城订单保存失败!"); + return Pair.of(false, "保存顺丰同城订单失败!"); } // 取件码。在顺丰同城商户侧配置,配置后有此字段。 - String pickupCode = shopStoreSfOrder.getPickup_code() != null ? shopStoreSfOrder.getPickup_code().toString() : ""; + // String pickupCode = shopStoreSfOrder.getPickup_code() != null ? shopStoreSfOrder.getPickup_code().toString() : ""; // TODO 商城订单状态:从 待发货 更改为 待收货 - return Pair.of(true, pickupCode); + return Pair.of(true, ""); } /** diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java index 554be06f..4c182634 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/user/service/impl/ShopUserCartServiceImpl.java @@ -547,9 +547,9 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl cartQueryWrapper = new QueryWrapper<>(); cartQueryWrapper.eq("user_id", user_id) .eq("chain_id", chain_id) @@ -563,7 +563,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl item_info_row = StrUtil.split(cart_id, ","); @@ -575,7 +575,7 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl items = (List) cart_data.get("items"); for (Map store_row : items) { @@ -2486,10 +2486,10 @@ public class ShopUserCartServiceImpl extends BaseServiceImpl