优化顺丰下单逻辑

This commit is contained in:
Jack 2024-12-07 21:42:57 +08:00
parent 7ab6efaf73
commit 9f8e793d9f
6 changed files with 134 additions and 10 deletions

View File

@ -46,6 +46,12 @@ public class ShopStoreSameCityTransportBase implements Serializable {
@ApiModelProperty(value = "店铺ID")
private Long store_id;
@ApiModelProperty(value = "顺丰同城店铺ID")
private String shop_id;
@ApiModelProperty(value = "店铺主营商品分类ID")
private Integer business_type;
@ApiModelProperty(value = "店铺详细地址")
private String store_address;

View File

@ -0,0 +1,26 @@
/*
* Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
* Vestibulum commodo. Ut rhoncus gravida arcu.
*/
package com.suisung.mall.common.pojo.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
/**
* 公共键值对实体
*/
public class KeyValueDTO implements Serializable {
private Object key; //
private Object value; //
}

View File

@ -97,6 +97,7 @@ import io.seata.core.exception.TransactionException;
import io.seata.spring.annotation.GlobalTransactional;
import io.seata.tm.api.GlobalTransaction;
import io.seata.tm.api.GlobalTransactionContext;
import io.swagger.models.auth.In;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.ibatis.annotations.Param;
import org.slf4j.Logger;
@ -353,6 +354,9 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
@Resource
private ShopOrderDeliveryAddressService shopOrderDeliveryAddressService;
@Resource
private ShopStoreSameCityTransportBaseService shopStoreSameCityTransportBaseService;
@Value("${sf-express.enable}")
private Integer enable_sf_express;
@ -8302,7 +8306,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
*/
public SFCreateOrderReq buildSFOrderData(Integer devId, String orderId, Long orderPickupNum) {
if (StrUtil.isBlank(orderId)) {
logger.error("缺少店铺Id");
logger.error("缺少订单Id");
return null;
}
@ -8315,18 +8319,34 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
return null;
}
ShopStoreBase shopStoreBase = shopStoreBaseService.get(shopOrderBase.getStore_id());
ShopStoreInfo shopStoreInfo = shopStoreInfoService.get(shopOrderBase.getStore_id());
Integer storeId = shopOrderBase.getStore_id();
if (storeId == null || storeId <= 0) {
logger.error("缺少店铺 Id");
return null;
}
ShopStoreBase shopStoreBase = shopStoreBaseService.get(storeId);
ShopStoreInfo shopStoreInfo = shopStoreInfoService.get(storeId);
ShopOrderDeliveryAddress shopOrderDeliveryAddress = shopOrderDeliveryAddressService.selectByOrderId(orderId);
if (shopStoreBase == null || shopStoreInfo == null || shopOrderDeliveryAddress == null) {
ShopStoreSameCityTransportBase shopStoreSameCityTransportBase = shopStoreSameCityTransportBaseService.getShopStoreSameCityTransportBaseById(storeId.longValue());
if (shopStoreBase == null || shopStoreInfo == null || shopOrderDeliveryAddress == null || shopStoreSameCityTransportBase == null) {
logger.error("无法获取店铺信息!");
return null;
}
// 7位数取单号位数不够向左补0
String orderPickupNumStr = String.format("%07d", orderPickupNum);
// TODO 顺丰同城业务员给的店铺id
// 顺丰同城给的测试店铺id
String shopId = "3243279847393";
Integer businessType = 6;// 生鲜分类
if (enable_sf_express.equals(CommonConstant.Enable)) {//开启正式配送服务的时候
// 顺丰同城业务员给的店铺id
shopId = shopStoreSameCityTransportBase.getShop_id();
businessType = shopStoreSameCityTransportBase.getBusiness_type();
}
SFCreateOrderReq sfCreateOrderReq = new SFCreateOrderReq();
sfCreateOrderReq.setDev_id(devId);
sfCreateOrderReq.setShop_id(shopId); // TODO 顺丰同城业务员给的店铺id
@ -8359,7 +8379,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
orderProductList.add(orderProductDetail);
}
orderDetail.setProduct_type(6); // 生鲜参考https://commit-openic.sf-express.com/#/apidoc
orderDetail.setProduct_type(businessType); // 店铺主营商品分类参考https://commit-openic.sf-express.com/#/apidoc
orderDetail.setTotal_price(shopOrderBase.getOrder_payment_amount().multiply(BigDecimal.valueOf(1000)).intValue()); // 单位分
orderDetail.setWeight_gram(0); // 重量一律传 0kg 谢总本地运营商协商好的
orderDetail.setProduct_num(productNum); //物品个数
@ -8373,7 +8393,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
SFOrderShopReq shop = new SFOrderShopReq();
SFOrderReceiveReq receive = new SFOrderReceiveReq();
if(enable_sf_express.equals(CommonConstant.Enable)){
if (enable_sf_express.equals(CommonConstant.Enable)) {//开启正式配送服务的时候
// 店铺信息发货人信息
Pair<Boolean, StandardAddressDTO> pairShopAddr = shopStoreBaseService.checkStoreAddress(shopStoreBase);
shop.setShop_name(shopStoreBase.getStore_name());
@ -8388,7 +8408,7 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl<ShopOrderBaseMappe
receive.setUser_address(pairReceiveAddr.getSecond().getFullAddress());
receive.setUser_lng(pairReceiveAddr.getSecond().getLongitude());
receive.setUser_lat(pairReceiveAddr.getSecond().getLatitude());
}else{
} else {
// 店铺信息发货人信息
shop.setShop_name("顺丰同城开放平台");
shop.setShop_address("蜂巢工场西区");

View File

@ -13,11 +13,13 @@ import com.suisung.mall.common.service.impl.BaseControllerImpl;
import com.suisung.mall.common.utils.CheckUtil;
import com.suisung.mall.shop.base.service.ShopBaseStoreGradeService;
import com.suisung.mall.shop.store.service.ShopStoreBaseService;
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.HashMap;
@ -44,6 +46,9 @@ public class ShopStoreBaseController extends BaseControllerImpl {
@Autowired
private ShopBaseStoreGradeService shopBaseStoreGradeService;
@Resource
private ShopStoreSameCityTransportBaseService transportBaseService;
@ApiOperation(value = "店铺基础信息表-分页列表查询", notes = "店铺基础信息表-分页列表查询")
@RequestMapping(value = "/list", method = RequestMethod.GET)
public CommonResult list(ShopStoreBase shopStoreBase,
@ -221,5 +226,11 @@ public class ShopStoreBaseController extends BaseControllerImpl {
shopStoreBaseService.fixStoreData(rows);
return rows;
}
@ApiOperation(value = "店铺主营商品分类", notes = "店铺主营商品分类")
@RequestMapping(value = "/business/list", method = {RequestMethod.GET})
public CommonResult storeBusinessTypeList() {
return transportBaseService.storeBusinessTypeList();
}
}

View File

@ -33,6 +33,12 @@ public interface ShopStoreSameCityTransportBaseService {
*/
CommonResult saveOrUpdateSameCityTransport(ShopStoreSameCityTransportBaseDTO shopStoreSameCityTransportBaseDTO);
/**
* 店铺主营商品类型
* @return
*/
CommonResult storeBusinessTypeList();
/**
* 根据店铺 Id 获取同城配送设置详情信息
*

View File

@ -20,6 +20,7 @@ import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.modules.store.ShopStoreBase;
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransport;
import com.suisung.mall.common.modules.store.ShopStoreSameCityTransportBase;
import com.suisung.mall.common.pojo.dto.KeyValueDTO;
import com.suisung.mall.common.pojo.dto.SameCityDeliveryFeeRespDTO;
import com.suisung.mall.common.pojo.dto.ShopStoreSameCityTransportBaseDTO;
import com.suisung.mall.common.utils.CommonUtil;
@ -31,6 +32,7 @@ import com.suisung.mall.shop.store.mapper.ShopStoreSameCityTransportBaseMapper;
import com.suisung.mall.shop.store.service.ShopStoreBaseService;
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService;
import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportService;
import io.swagger.models.auth.In;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.util.Pair;
@ -38,8 +40,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.*;
import static com.suisung.mall.common.utils.ContextUtil.getCurrentUser;
@ -116,6 +117,60 @@ public class ShopStoreSameCityTransportBaseServiceImpl extends BaseServiceImpl<S
return CommonResult.failed(pair.getSecond());
}
/**
* 店铺主营商品类型
*
* @return
*/
@Override
public CommonResult storeBusinessTypeList() {
UserDto user = getCurrentUser();
if (user == null) {
return CommonResult.failed("无权限操作!");
}
List<KeyValueDTO> list = new ArrayList<KeyValueDTO>(){{
add(new KeyValueDTO(1,"快餐"));
add(new KeyValueDTO(2,"药品"));
add(new KeyValueDTO(3,"百货"));
add(new KeyValueDTO(4,"脏衣服收"));
add(new KeyValueDTO(5,"干净衣服派"));
add(new KeyValueDTO(6,"生鲜"));
add(new KeyValueDTO(8,"高端饮品"));
add(new KeyValueDTO(10,"快递"));
add(new KeyValueDTO(12,"文件"));
add(new KeyValueDTO(13,"蛋糕"));
add(new KeyValueDTO(14,"鲜花"));
add(new KeyValueDTO(15,"数码"));
add(new KeyValueDTO(16,"服装"));
add(new KeyValueDTO(17,"汽配"));
add(new KeyValueDTO(18,"珠宝"));
add(new KeyValueDTO(20,"披萨"));
add(new KeyValueDTO(21,"中餐"));
add(new KeyValueDTO(22,"水产"));
add(new KeyValueDTO(32,"中端饮品"));
add(new KeyValueDTO(33,"便利店"));
add(new KeyValueDTO(34,"面包糕点"));
add(new KeyValueDTO(35,"火锅"));
add(new KeyValueDTO(36,"证照"));
add(new KeyValueDTO(40,"烧烤小龙虾"));
add(new KeyValueDTO(41,"外部落地配"));
add(new KeyValueDTO(44,"年夜饭"));
add(new KeyValueDTO(47,"烟酒行"));
add(new KeyValueDTO(48,"成人用品"));
add(new KeyValueDTO(53,"冷链医药"));
add(new KeyValueDTO(55,"宠物用品"));
add(new KeyValueDTO(56,"母婴用品"));
add(new KeyValueDTO(57,"美妆用品"));
add(new KeyValueDTO(58,"家居建材"));
add(new KeyValueDTO(59,"眼镜行"));
add(new KeyValueDTO(60,"图文广告"));
add(new KeyValueDTO(81,"中药"));
}};
return CommonResult.success(list, "");
}
/**
* 根据店铺 Id 获取同城配送设置详情信息
*