|
@@ -3,6 +3,7 @@ package cn.rankin.cmsweb.service.trade.order;
|
|
|
import cn.rankin.cmsweb.code.CmsWebAPICode;
|
|
|
import cn.rankin.cmsweb.service.product.GoodsService;
|
|
|
import cn.rankin.cmsweb.service.user.CampusService;
|
|
|
+import cn.rankin.cmsweb.service.user.MerchantService;
|
|
|
import cn.rankin.cmsweb.service.user.TerminalUserService;
|
|
|
import cn.rankin.common.utils.api.model.APIResult;
|
|
|
import cn.rankin.common.utils.api.model.BaseCode;
|
|
@@ -13,6 +14,7 @@ import cn.rankin.common.utils.util.BeanUtil;
|
|
|
import cn.rankin.data.api.cms.OrderDetailWebSearchDTO;
|
|
|
import cn.rankin.data.api.cms.OrderSearchWebDTO;
|
|
|
import cn.rankin.data.api.cms.OrderSnapshotWebSearchDTO;
|
|
|
+import cn.rankin.data.api.product.entity.Goods;
|
|
|
import cn.rankin.data.api.product.vo.GoodsVo;
|
|
|
import cn.rankin.data.api.trade.dto.OrderDTO;
|
|
|
import cn.rankin.data.api.trade.dto.OrderDetailSearchDTO;
|
|
@@ -23,12 +25,14 @@ import cn.rankin.data.api.trade.entity.OrderGoods;
|
|
|
import cn.rankin.data.api.trade.entity.Order;
|
|
|
import cn.rankin.data.api.trade.entity.OrderProductSnapshot;
|
|
|
import cn.rankin.data.api.trade.vo.OrderDetailVo;
|
|
|
+import cn.rankin.data.api.trade.vo.OrderGoodsVo;
|
|
|
import cn.rankin.data.api.trade.vo.OrderVo;
|
|
|
import cn.rankin.data.api.user.dto.CampusSearchDTO;
|
|
|
import cn.rankin.data.api.user.dto.PayDTO;
|
|
|
import cn.rankin.data.api.user.vo.CampusVo;
|
|
|
import cn.rankin.data.api.user.vo.TerminalUserVo;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
@@ -61,6 +65,9 @@ public class OrderService {
|
|
|
@Autowired
|
|
|
private PayingService payingService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private MerchantService merchantService;
|
|
|
+
|
|
|
// 支付
|
|
|
public APIResult<Boolean> pay(String orderId) {
|
|
|
APIResult<Order> userOrderAPIResult = orderClient.getOrder(orderId);
|
|
@@ -118,6 +125,46 @@ public class OrderService {
|
|
|
return orderClient.receive(detailId);
|
|
|
}
|
|
|
|
|
|
+ // 查询详单
|
|
|
+ public APIResult<OrderDetailVo> getDetailOrder(String detailId) {
|
|
|
+ APIResult<OrderDetail> orderAPIResult = orderClient.getDetailOrder(detailId);
|
|
|
+ if (!orderAPIResult.getSuccess()) {
|
|
|
+ return APIResult.error(new BaseCode(orderAPIResult.getCode(), orderAPIResult.getMessage()));
|
|
|
+ }
|
|
|
+
|
|
|
+ OrderDetail orderDetail = orderAPIResult.getData();
|
|
|
+ OrderDetailVo orderDetailVo = convert(orderDetail);
|
|
|
+
|
|
|
+ List<OrderGoods> orderGoodsList = orderDetail.getGoods();
|
|
|
+ if (CollectionUtils.isEmpty(orderGoodsList)) {
|
|
|
+ return APIResult.ok(orderDetailVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ String uid = orderDetailVo.getUid();
|
|
|
+ APIResult<TerminalUserVo> userAPIResult = terminalUserService.getUser(uid);
|
|
|
+ TerminalUserVo terminalUserVo = userAPIResult.getData();
|
|
|
+
|
|
|
+ if (userAPIResult.getSuccess()) {
|
|
|
+ orderDetailVo.setMerchantId(terminalUserVo.getMerchantId());
|
|
|
+ orderDetailVo.setMerchantName(terminalUserVo.getMerchantName());
|
|
|
+ orderDetailVo.setUserCode(terminalUserVo.getCode());
|
|
|
+ orderDetailVo.setClassroomName(terminalUserVo.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ String campusId = terminalUserVo.getCampusId();
|
|
|
+ APIResult<CampusVo> campusAPIResult = campusService.getCampus(campusId);
|
|
|
+ CampusVo campusVo = campusAPIResult.getData();
|
|
|
+
|
|
|
+ if (campusVo != null) {
|
|
|
+ orderDetailVo.setProvinceCode(campusVo.getProvinceCode());
|
|
|
+ orderDetailVo.setCityName(campusVo.getCityName());
|
|
|
+ orderDetailVo.setZoneName(campusVo.getZoneName());
|
|
|
+ }
|
|
|
+
|
|
|
+ orderDetailVo.setGoods(this.toOrderGoodsVo(orderGoodsList));
|
|
|
+ return APIResult.ok(orderDetailVo);
|
|
|
+ }
|
|
|
+
|
|
|
// 创建订单
|
|
|
public APIResult<OrderVo> create(OrderDTO orderDTO) {
|
|
|
String uid = orderDTO.getUid();
|
|
@@ -216,14 +263,43 @@ public class OrderService {
|
|
|
orderVo.setZoneName(campusVo.getZoneName());
|
|
|
}
|
|
|
|
|
|
+ orderVo.setGoods(this.toOrderGoodsVo(orderGoodsList));
|
|
|
+ return APIResult.ok(orderVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<OrderGoodsVo> toOrderGoodsVo(List<OrderGoods> orderGoodsList) {
|
|
|
List<String> goodsIdList = new ArrayList<>();
|
|
|
orderGoodsList.forEach(orderGoods -> goodsIdList.add(orderGoods.getGoodsId()));
|
|
|
APIResult<List<GoodsVo>> goodsAPIResult = goodsService.findByIds(goodsIdList);
|
|
|
if (!goodsAPIResult.getSuccess()) {
|
|
|
log.error("goods api error: {}", goodsAPIResult.getMessage());
|
|
|
+ return null;
|
|
|
}
|
|
|
- orderVo.setGoods(goodsAPIResult.getData());
|
|
|
- return APIResult.ok(orderVo);
|
|
|
+
|
|
|
+ List<GoodsVo> goodsVoList = goodsAPIResult.getData();
|
|
|
+ Map<String, GoodsVo> goodsVoMap = new HashMap<>();
|
|
|
+ for (GoodsVo goodsVo : goodsVoList) {
|
|
|
+ goodsVoMap.put(goodsVo.getId(), goodsVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<OrderGoodsVo> orderGoodsVoList = new ArrayList<>();
|
|
|
+ for (OrderGoods orderGoods : orderGoodsList) {
|
|
|
+ String goodsId = orderGoods.getGoodsId();
|
|
|
+
|
|
|
+ OrderGoodsVo orderGoodsVo = new OrderGoodsVo();
|
|
|
+ BeanUtils.copyProperties(orderGoods, orderGoodsVo);
|
|
|
+
|
|
|
+ GoodsVo goodsVo = goodsVoMap.get(goodsId);
|
|
|
+ if (goodsVo == null) {
|
|
|
+ log.error("goods not exists, goodsId={}", goodsId);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ BeanUtils.copyProperties(goodsVo, orderGoodsVo);
|
|
|
+ goodsVo.setId(orderGoods.getId());
|
|
|
+
|
|
|
+ orderGoodsVoList.add(orderGoodsVo);
|
|
|
+ }
|
|
|
+ return orderGoodsVoList;
|
|
|
}
|
|
|
|
|
|
public APIResult<Page<OrderVo>> search(OrderSearchWebDTO searchWebDTO) {
|