订单详情新增

物流进度新增
用户合并修改
This commit is contained in:
wuchunlei
2024-06-03 17:03:23 +08:00
parent 6ed799cd3e
commit 8bec166fa6
8 changed files with 366 additions and 149 deletions

View File

@@ -1,7 +1,6 @@
package com.peanut.modules.common.controller;
import com.peanut.common.utils.R;
import com.peanut.modules.common.entity.BuyOrder;
import com.peanut.modules.common.service.BuyOrderService;
import com.peanut.modules.common.to.PrepareOrderDto;
import lombok.extern.slf4j.Slf4j;
@@ -9,7 +8,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@Slf4j
@@ -22,21 +20,30 @@ public class BuyOrderController {
@RequestMapping("/initPrepareOrder")
public R initPrepareOrder(@RequestBody PrepareOrderDto prepareOrderDto){
Map<String, Object> stringObjectMap = buyOrderService.initPrepareOrder(prepareOrderDto);
return R.ok().put("data",stringObjectMap);
return R.ok().put("data",buyOrderService.initPrepareOrder(prepareOrderDto));
}
//用户订单列表
@RequestMapping("/buyOrderList")
public R buyOrderList(@RequestBody Map params){
List<BuyOrder> list = buyOrderService.buyOrderList(params);
return R.ok().put("data",list);
return R.ok().put("data",buyOrderService.buyOrderList(params));
}
//用户订单各状态下数量
@RequestMapping("/getBuyOrderNumByStatus")
public R getBuyOrderNumByStatus(@RequestBody Map params){
List<Map<String,Object>> list = buyOrderService.getBuyOrderNumByStatus(params);
return R.ok().put("data",list);
return R.ok().put("data",buyOrderService.getBuyOrderNumByStatus(params));
}
//订单详情
@RequestMapping("/commonOrderDetail")
public R commonOrderDetail(@RequestBody Map params){
return R.ok().put("data",buyOrderService.commonOrderDetail(params));
}
//获取快递进度详情
@RequestMapping("/commonExpressDetail")
public R commonExpressDetail(@RequestBody Map params){
return R.ok().put("data",buyOrderService.commonExpressDetail(params));
}
}

View File

@@ -2,6 +2,7 @@ package com.peanut.modules.common.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.peanut.modules.common.entity.BuyOrder;
import com.peanut.modules.common.entity.ExpressQueryResponse;
import com.peanut.modules.common.to.PrepareOrderDto;
import java.util.List;
import java.util.Map;
@@ -13,4 +14,8 @@ public interface BuyOrderService extends IService<BuyOrder> {
List<BuyOrder> buyOrderList(Map params);
List<Map<String,Object>> getBuyOrderNumByStatus(Map params);
Map<String,Object> commonOrderDetail(Map params);
ExpressQueryResponse commonExpressDetail(Map params);
}

View File

@@ -6,10 +6,4 @@ import com.peanut.modules.common.entity.ExpressQueryResponse;
import com.peanut.modules.common.vo.ExpressOrderResponseVo;
public interface ExpressOrderService extends IService<ExpressOrder> {
/**
* 下单生成面单
*/
ExpressOrderResponseVo placeExpressOrder(ExpressOrder expressOrder);
ExpressQueryResponse queryExpressOrder(String ShipperCode, String LogisticCode, String customerName);
}

View File

@@ -3,6 +3,7 @@ package com.peanut.modules.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.ExpressOrderUtil;
import com.peanut.modules.common.dao.*;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.BuyOrderService;
@@ -24,8 +25,6 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
@Autowired
private MyUserDao userDao;
@Autowired
private BuyOrderDao buyOrderDao;
@Autowired
private BuyOrderProductDao buyOrderProductDao;
@Autowired
private ShopProductDao shopProductDao;
@@ -102,7 +101,49 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
wrapper.select(BuyOrder::getOrderStatus);
wrapper.select("count(1) as num");
wrapper.groupBy(BuyOrder::getOrderStatus);
List<Map<String,Object>> buyOrder = buyOrderDao.selectMaps(wrapper);
List<Map<String,Object>> buyOrder = this.listMaps(wrapper);
return buyOrder;
}
@Override
public Map<String, Object> commonOrderDetail(Map params) {
Map<String, Object> res = new HashMap<>();
LambdaQueryWrapper<BuyOrder> orderWrapper = new LambdaQueryWrapper<>();
orderWrapper.eq(BuyOrder::getOrderId,params.get("orderId"));
BuyOrder buyOrder = this.getOne(orderWrapper);
res.put("buyOrder",buyOrder);
if (buyOrder!=null){
//添加商品信息
MPJLambdaWrapper<BuyOrderProduct> buyOrderProductWrapper = new MPJLambdaWrapper<>();
buyOrderProductWrapper.leftJoin(BuyOrder.class,BuyOrder::getOrderId,BuyOrderProduct::getOrderId);
buyOrderProductWrapper.leftJoin(ShopProduct.class,ShopProduct::getProductId,BuyOrderProduct::getProductId);
buyOrderProductWrapper.select(BuyOrderProduct::getQuantity);
buyOrderProductWrapper.selectAll(ShopProduct.class);
buyOrderProductWrapper.eq(BuyOrder::getOrderId,buyOrder.getOrderId());
List productInfo = buyOrderProductDao.selectMaps(buyOrderProductWrapper);
res.put("productInfo",productInfo);
//添加快递信息
LambdaQueryWrapper<ExpressOrder> expressOrderWrapper = new LambdaQueryWrapper<>();
expressOrderWrapper.like(ExpressOrder::getOrderSn,buyOrder.getOrderSn());
List<ExpressOrder> expressOrders = expressOrderDao.selectList(expressOrderWrapper);
if (expressOrders != null&&expressOrders.size() > 0) {
for (ExpressOrder eOrder : expressOrders) {
ExpressOrderUtil util = new ExpressOrderUtil();
ExpressQueryResponse response = util.queryExpressOrder(eOrder);
res.put(eOrder.getExpressOrderSn(),response);
}
}
}
return res;
}
@Override
public ExpressQueryResponse commonExpressDetail(Map params) {
LambdaQueryWrapper<ExpressOrder> expressOrderWrapper = new LambdaQueryWrapper<>();
expressOrderWrapper.eq(ExpressOrder::getExpressOrderSn,params.get("expressOrderSn"));
ExpressOrder expressOrder = expressOrderDao.selectOne(expressOrderWrapper);
ExpressOrderUtil util = new ExpressOrderUtil();
return util.queryExpressOrder(expressOrder);
}
}

View File

@@ -22,124 +22,4 @@ import java.util.Map;
@Slf4j
@Service("commonExpressOrderService")
public class ExpressOrderServiceImpl extends ServiceImpl<ExpressOrderDao, ExpressOrder> implements ExpressOrderService {
@Value("${express.sender.senderName}")
private String senderName;
@Value("${express.sender.mobile}")
private String senderMobile;
@Value("${express.sender.provinceName}")
private String senderProvinceName;
@Value("${express.sender.cityName}")
private String senderCityName;
@Value("${express.sender.expAreaName}")
private String senderExpAreaName;
@Value("${express.sender.address}")
private String senderAddress;
@Override
public ExpressOrderResponseVo placeExpressOrder(ExpressOrder expressOrder) {
ExpressOrderRequestVo orderRequestVo = new ExpressOrderRequestVo();
// 订单号
orderRequestVo.setOrderCode(expressOrder.getOrderSn());
orderRequestVo.setIsReturnPrintTemplate(1);
orderRequestVo.setShipperCode(expressOrder.getExpressCompanyCode());
orderRequestVo.setPayType(3);
if (expressOrder.getExpressCompanyCode().equals(Constants.EXPRESS_COMPANY_CODE_SF)) {
orderRequestVo.setMonthCode(Constants.EXPRESS_SF_MONTH_CODE);
//如果是顺丰港澳台参数多两个必填CurrencyCode、Dutiable.DeclaredValue
if ("台湾省".equals(expressOrder.getProvince())||
"香港特别行政区".equals(expressOrder.getProvince())||
"澳门特别行政区".equals(expressOrder.getProvince())){
orderRequestVo.setCurrencyCode("CNY");
BigDecimal declaredValue = new BigDecimal(0);
if (expressOrder.getCommodity().size()>0){
for (ExpressCommodity commodity : expressOrder.getCommodity()) {
BigDecimal quantity = BigDecimal.valueOf(commodity.getGoodsquantity());
BigDecimal price = BigDecimal.valueOf(commodity.getGoodsPrice());
BigDecimal total = quantity.multiply(price);
declaredValue = declaredValue.add(total);
}
}
DutiableVo dutiable = new DutiableVo();
dutiable.setDeclaredValue(declaredValue.setScale(3));
orderRequestVo.setDutiable(dutiable);
}
}
if (expressOrder.getExpressCompanyCode().equals(Constants.EXPRESS_COMPANY_CODE_YD)) {
orderRequestVo.setCustomerName(Constants.EXPRESS_YD_CUSTOMER_NAME);
orderRequestVo.setCustomerPwd(Constants.EXPRESS_YD_CUSTOMER_PWD);
}
orderRequestVo.setExpType(231);//1特快2标快
orderRequestVo.setCost(expressOrder.getExpressFee().doubleValue());
// 发货人
ExpressUserInfoVo sender = new ExpressUserInfoVo();
sender.setName(senderName);
sender.setMobile(senderMobile);
sender.setProvinceName(senderProvinceName);
sender.setCityName(senderCityName);
sender.setExpAreaName(senderExpAreaName);
sender.setAddress(senderAddress);
// 收货人
ExpressUserInfoVo receiver = new ExpressUserInfoVo();
receiver.setName(expressOrder.getConsigneeName());
receiver.setMobile(expressOrder.getConsigneeMobile());
receiver.setProvinceName(expressOrder.getProvince());
receiver.setCityName(expressOrder.getCity());
receiver.setExpAreaName(expressOrder.getCounty());
receiver.setAddress(expressOrder.getAddress());
orderRequestVo.setSender(sender);
orderRequestVo.setReceiver(receiver);
orderRequestVo.setCommodity(expressOrder.getCommodity());
orderRequestVo.setWeight(expressOrder.getTotalWeight().doubleValue());
orderRequestVo.setRemark(expressOrder.getRemark());
orderRequestVo.setTemplateSize("150");
String requestData = JSONObject.toJSONString(orderRequestVo);
//如果是顺丰港澳台参数多两个必填CurrencyCode、Dutiable.DeclaredValue需要大写
String requestDataUpperCase = requestData;
if (requestData.contains("currencyCode")){
requestDataUpperCase = requestData.replace("currencyCode","CurrencyCode")
.replace("dutiable","Dutiable")
.replace("declaredValue","DeclaredValue");
}
Map<String, String> params = new HashMap<>();
params.put("RequestData", requestDataUpperCase);
params.put("EBusinessID", Constants.EXPRESS_BUSINESS_ID);
params.put("RequestType", Constants.EXPRESS_REQUEST_TYPE_PLACE_ORDER);
try {
String dataSign = KdUtils.encrypt(requestDataUpperCase, Constants.EXPRESS_API_KEY, "UTF-8");
params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8"));
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
}
params.put("DataType", "2");
String response = HttpClientUtils.kdSendPost(Constants.EXPRESS_PLACE_ORDER_URL, params);
return JSONObject.parseObject(response, ExpressOrderResponseVo.class);
}
@Override
public ExpressQueryResponse queryExpressOrder(String shipperCode, String logisticCode, String customerName) {
ExpressQueryRequestVo requestVo = new ExpressQueryRequestVo();
requestVo.setLogisticCode(logisticCode);
requestVo.setCustomerName(customerName);
requestVo.setShipperCode(shipperCode);
String requestData = JSONObject.toJSONString(requestVo);
Map<String, String> params = new HashMap<>();
params.put("RequestData", requestData);
params.put("EBusinessID", Constants.EXPRESS_BUSINESS_ID);
params.put("RequestType", Constants.EXPRESS_REQUEST_TYPE_QUERY);
try {
String dataSign = KdUtils.encrypt(requestData, Constants.EXPRESS_API_KEY, "UTF-8");
params.put("DataSign", KdUtils.urlEncoder(dataSign, "UTF-8"));
} catch (Exception e) {
e.printStackTrace();
log.error(e.getMessage());
}
params.put("DateType", "2");
String response = HttpClientUtils.kdSendPost(Constants.EXPRESS_QUERY_URL, params);
return JSONObject.parseObject(response, ExpressQueryResponse.class);
}
}