浏览代码

feign 接口定义

刘俊驰 1 年之前
父节点
当前提交
cbb8f31a5e

+ 19 - 5
mec-client-api/src/main/java/com/ym/mec/mall/MallFeignService.java

@@ -1,16 +1,16 @@
 package com.ym.mec.mall;
 
+import com.baomidou.mybatisplus.extension.api.R;
+import com.baomidou.mybatisplus.extension.enums.ApiErrorCode;
 import com.ym.mec.common.config.FeignConfiguration;
+import com.ym.mec.common.dto.OrderCreate;
 import com.ym.mec.common.dto.PmsProductDto;
 import com.ym.mec.common.dto.PmsProductQueryParamDto;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.mall.fallback.MallFeignServiceFallback;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.*;
 
 @FeignClient(name = "${app-config.open-feign.mall-server.name:mall-server}",
 		contextId = "MallFeignService",
@@ -22,4 +22,18 @@ public interface MallFeignService {
 	@ResponseBody
 	PageInfo<PmsProductDto> getProductList(@RequestBody PmsProductQueryParamDto productQueryParam);
 
+
+    // 同步完成订单
+    @PostMapping(value = "/open/product/orderCreate", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    boolean productOrderCreate(@RequestBody OrderCreate order) ;
+
+    // 同步订单状态,
+    /**
+     * 查询商品订单状态
+     * @param orderNo 订单编号
+     * @return status 订单状态  0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单
+     */
+    @GetMapping(value = "/product/updateOrderStatus", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    boolean productUpdateOrderStatus(@RequestParam("orderNo") String orderNo,@RequestParam("status") Integer status);
+
 }

+ 18 - 0
mec-client-api/src/main/java/com/ym/mec/mall/fallback/MallFeignServiceFallback.java

@@ -1,5 +1,6 @@
 package com.ym.mec.mall.fallback;
 
+import com.ym.mec.common.dto.OrderCreate;
 import com.ym.mec.common.dto.PmsProductDto;
 import com.ym.mec.common.dto.PmsProductQueryParamDto;
 import com.ym.mec.common.page.PageInfo;
@@ -17,4 +18,21 @@ public class MallFeignServiceFallback implements MallFeignService {
         return null;
     }
 
+    @Override
+    public boolean productOrderCreate(OrderCreate order) {
+        return false;
+    }
+
+    /**
+     * 查询商品订单状态
+     *
+     * @param orderNo 订单编号
+     * @param status 订单状态
+     */
+    @Override
+    public boolean productUpdateOrderStatus(String orderNo, Integer status) {
+        return false;
+    }
+
+
 }

+ 79 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/dto/OrderCreate.java

@@ -0,0 +1,79 @@
+package com.ym.mec.common.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-01-10
+ */
+@Data
+public class OrderCreate {
+
+//    @ApiModelProperty("乐团ID")
+    private Long orchestraId;
+
+//    @ApiModelProperty("用户ID/学校ID")
+    private Long memberId;
+
+//    @ApiModelProperty("订单编号")
+    private String orderNo;
+
+//    @ApiModelProperty("订单总金额")
+    private BigDecimal totalAmount;
+
+//    @ApiModelProperty("支付类型  1->支付宝;2->微信")
+    private Integer payType;
+
+//    @ApiModelProperty(value = "收货人姓名")
+    private String receiverName;
+
+//    @ApiModelProperty(value = "收货人电话")
+    private String receiverPhone;
+
+//    @ApiModelProperty(value = "收货人邮编")
+    private String receiverPostCode;
+
+//    @ApiModelProperty(value = "省份/直辖市")
+    private String receiverProvince;
+
+//    @ApiModelProperty(value = "城市")
+    private String receiverCity;
+
+//    @ApiModelProperty(value = "区")
+    private String receiverRegion;
+
+//    @ApiModelProperty(value = "订单来源 ")
+    private String orderFormType = "MEC";
+
+
+//    @ApiModelProperty(value = "订单来源 SCHOOL:学校")
+    private String platformType = "SCHOOL";
+
+//    @ApiModelProperty(value = "详细地址")
+    private String receiverDetailAddress;
+
+//    @ApiModelProperty("商品详情")
+    private List<OrderItem> orderItemList;
+
+    @Data
+    public static class OrderItem implements Serializable {
+
+
+//        @ApiModelProperty(value = "购买数量")
+        private Integer productQuantity;
+
+//        @ApiModelProperty(value = "商品sku编号")
+        private Long productSkuId;
+
+//        @ApiModelProperty(value = "该商品经过优惠后的分解金额")
+        private BigDecimal realAmount;
+
+    }
+
+}

+ 3 - 0
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/mapper/OmsOrderMapper.java

@@ -27,4 +27,7 @@ public interface OmsOrderMapper {
     int updateByPrimaryKeySelective(OmsOrder record);
 
     int updateByPrimaryKey(OmsOrder record);
+
+
+    OmsOrder getByOrderSn(String orderNo);
 }

+ 8 - 0
mec-mall/mall-mbg/src/main/resources/config/mybatis/OmsOrderMapper.xml

@@ -870,4 +870,12 @@
       modify_time = #{modifyTime,jdbcType=TIMESTAMP}
     where id = #{id,jdbcType=BIGINT}
   </update>
+
+
+    <select id="getByOrderSn" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from oms_order
+        where order_sn = #{orderSn}
+    </select>
 </mapper>

+ 27 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/open/OpenShareController.java

@@ -1,14 +1,19 @@
 package com.yonge.cooleshow.portal.controller.open;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.api.R;
 import com.ym.mec.common.controller.BaseController;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
+import com.yonge.cooleshow.portal.dto.OrderCreate;
 import com.yonge.cooleshow.portal.dto.StockOperateModel;
+import com.yonge.cooleshow.portal.service.OmsPortalOrderService;
 import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -22,6 +27,10 @@ public class OpenShareController extends BaseController {
     @Autowired
     private PmsPortalProductService portalProductService;
 
+    @Autowired
+    private OmsPortalOrderService portalOrderService;
+
+
     // @ApiOperation(value = "老师商品分享分润")
     // @PostMapping(value="/productProfit")
     // @ResponseBody
@@ -49,4 +58,22 @@ public class OpenShareController extends BaseController {
         portalProductService.reduceStock(model,stockType);
         return CommonResult.success("");
     }
+
+
+
+    /**
+     * 查询商品订单生成
+     * @param order ProductWrapper.OrderCreate
+     * @return String
+     */
+    @PostMapping(value = "/product/orderCreate", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<Boolean> productOrderCreate(@RequestBody OrderCreate order) {
+
+        log.info("创建管乐团订单:{}", JSON.toJSONString(order));
+
+        portalOrderService.mecProductOrderCreate(order);
+
+
+        return R.ok(true);
+    }
 }

+ 80 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OrderCreate.java

@@ -0,0 +1,80 @@
+package com.yonge.cooleshow.portal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2023-01-10
+ */
+@Data
+public class OrderCreate {
+
+    @ApiModelProperty("乐团ID")
+    private Long orchestraId;
+
+    @ApiModelProperty("用户ID/学校ID")
+    private Long memberId;
+
+    @ApiModelProperty("订单编号")
+    private String orderNo;
+
+    @ApiModelProperty("订单总金额")
+    private BigDecimal totalAmount;
+
+    @ApiModelProperty("支付类型  1->支付宝;2->微信")
+    private Integer payType;
+
+    @ApiModelProperty(value = "收货人姓名")
+    private String receiverName;
+
+    @ApiModelProperty(value = "收货人电话")
+    private String receiverPhone;
+
+    @ApiModelProperty(value = "收货人邮编")
+    private String receiverPostCode;
+
+    @ApiModelProperty(value = "省份/直辖市")
+    private String receiverProvince;
+
+    @ApiModelProperty(value = "城市")
+    private String receiverCity;
+
+    @ApiModelProperty(value = "区")
+    private String receiverRegion;
+
+    @ApiModelProperty(value = "订单来源 ")
+    private String orderFormType = "MEC";
+
+
+    @ApiModelProperty(value = "订单来源 SCHOOL:学校")
+    private String platformType = "SCHOOL";
+
+    @ApiModelProperty(value = "详细地址")
+    private String receiverDetailAddress;
+
+    @ApiModelProperty("商品详情")
+    private List<OrderItem> orderItemList;
+
+    @Data
+    public static class OrderItem implements Serializable {
+
+
+        @ApiModelProperty(value = "购买数量")
+        private Integer productQuantity;
+
+        @ApiModelProperty(value = "商品sku编号")
+        private Long productSkuId;
+
+        @ApiModelProperty(value = "该商品经过优惠后的分解金额")
+        private BigDecimal realAmount;
+
+    }
+
+}

+ 3 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -5,6 +5,7 @@ import com.yonge.cooleshow.mbg.model.OmsOrder;
 import com.yonge.cooleshow.portal.domain.ConfirmOrderResult;
 import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
 import com.yonge.cooleshow.portal.domain.OrderParam;
+import com.yonge.cooleshow.portal.dto.OrderCreate;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
@@ -115,4 +116,6 @@ public interface OmsPortalOrderService {
 
     @Transactional
     void paymentRefundFailedHandle(String payTransNo, String msg, String refundTransNo);
+
+    void mecProductOrderCreate(OrderCreate order);
 }

+ 107 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -26,6 +26,7 @@ import com.yonge.cooleshow.portal.dao.PortalOrderDao;
 import com.yonge.cooleshow.portal.dao.PortalOrderItemDao;
 import com.yonge.cooleshow.portal.dao.PortalProductDao;
 import com.yonge.cooleshow.portal.domain.*;
+import com.yonge.cooleshow.portal.dto.OrderCreate;
 import com.yonge.cooleshow.portal.dto.StockOperateModel;
 import com.yonge.cooleshow.portal.service.*;
 import org.redisson.api.RedissonClient;
@@ -101,6 +102,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     @Autowired
     private UserOrderPaymentService userOrderPaymentService;
 
+    @Autowired
+    private UmsMemberService umsMemberService;
 
     @Autowired
     private PortalProductDao productDao;
@@ -1434,4 +1437,108 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         return calcAmount;
     }
 
+
+    @Override
+    @Transactional
+    public void mecProductOrderCreate(OrderCreate order) {
+
+
+        // 查询订单是否已存在
+        OmsOrder detail = orderMapper.getByOrderSn(order.getOrderNo());
+        if (detail != null) {
+            throw new BizException("订单已存在");
+        }
+
+        UmsMember umsMember = umsMemberService.getById(order.getMemberId());
+
+
+        // 创建订单
+
+        //设置自动收货天数
+        List<OmsOrderSetting> orderSettings = orderSettingMapper.selectByExample(new OmsOrderSettingExample());
+
+
+        detail = new OmsOrder();
+        detail.setMemberId(order.getMemberId());
+        detail.setPlatformType(order.getPlatformType());
+        detail.setOrderSn(order.getOrderNo());
+        detail.setCreateTime(new Date());
+        if (umsMember !=null) {
+            detail.setMemberUsername(umsMember.getUsername());
+        }
+        detail.setTotalAmount(order.getTotalAmount());
+        detail.setPayAmount(order.getTotalAmount());
+        detail.setFreightAmount(BigDecimal.ZERO);
+        detail.setPromotionAmount(BigDecimal.ZERO);
+        detail.setIntegrationAmount(BigDecimal.ZERO);
+        detail.setCouponAmount(BigDecimal.ZERO);
+        detail.setDiscountAmount(BigDecimal.ZERO);
+        detail.setPayType(order.getPayType());
+        detail.setConfirmStatus(0);
+        detail.setSourceType(1);
+        detail.setStatus(1);
+        detail.setOrderType(0);
+        if (CollUtil.isNotEmpty(orderSettings)) {
+            detail.setAutoConfirmDay(orderSettings.get(0).getConfirmOvertime());
+        }
+        detail.setReceiverName(order.getReceiverName());
+        detail.setReceiverPhone(order.getReceiverPhone());
+        detail.setReceiverPostCode(order.getReceiverPostCode());
+        detail.setReceiverProvince(order.getReceiverProvince());
+        detail.setReceiverCity(order.getReceiverCity());
+        detail.setReceiverRegion(order.getReceiverRegion());
+        detail.setReceiverDetailAddress(order.getReceiverDetailAddress());
+        detail.setDeleteStatus(0);
+        detail.setPaymentTime(new Date());
+        detail.setAfterSale(1);
+        detail.setModifyTime(new Date());
+        orderMapper.insert(detail);
+
+        List<OmsOrderItem> orderItemList = new ArrayList<>();
+        // 创建订单详情
+        for (OrderCreate.OrderItem orderItem : order.getOrderItemList()) {
+
+            // 获取商品信息
+            PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(orderItem.getProductSkuId());
+            if (pmsSkuStock == null) {
+                throw new BizException("商品规格不存在");
+            }
+            PmsProduct pmsProduct = pmsProductMapper.selectByPrimaryKey(pmsSkuStock.getProductId());
+
+            if (pmsProduct == null) {
+                throw new BizException("商品不存在");
+            }
+
+            OmsOrderItem omsOrderItem = new OmsOrderItem();
+            omsOrderItem.setOrderId(detail.getId());
+            omsOrderItem.setOrderSn(detail.getOrderSn());
+            omsOrderItem.setProductId(pmsProduct.getId());
+            omsOrderItem.setProductPic(pmsProduct.getPic());
+            omsOrderItem.setProductName(pmsProduct.getName());
+            omsOrderItem.setProductBrand(pmsProduct.getBrandName());
+            omsOrderItem.setProductPrice(pmsProduct.getPrice());
+            omsOrderItem.setProductQuantity(1);
+            omsOrderItem.setProductSkuId(pmsSkuStock.getId());
+            omsOrderItem.setProductSkuCode(pmsSkuStock.getSkuCode());
+            omsOrderItem.setProductCategoryId(pmsProduct.getProductCategoryId());
+            omsOrderItem.setPromotionAmount(BigDecimal.ZERO);
+            omsOrderItem.setCouponAmount(BigDecimal.ZERO);
+            omsOrderItem.setIntegrationAmount(BigDecimal.ZERO);
+            omsOrderItem.setRealAmount(orderItem.getRealAmount());
+            omsOrderItem.setProductAttr(pmsSkuStock.getSpData());
+            omsOrderItem.setReturnStatus(-1);
+
+            orderItemList.add(omsOrderItem);
+        }
+
+
+        // 保存数据
+        if (!CollectionUtils.isEmpty(orderItemList)) {
+            orderItemDao.insertList(orderItemList);
+        }
+
+
+
+
+    }
 }