liujiankang 7 роки тому
батько
коміт
2431bb5dda

+ 2 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/SalesOrderService.java

@@ -29,6 +29,8 @@ public interface SalesOrderService {
 
     SalesOrder addOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) ;
 
+    boolean addRstOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) ;
+
     /**
      * 修改订单信息
      * @param salesOrder

+ 7 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/StoreInfoService.java

@@ -15,4 +15,11 @@ public interface StoreInfoService {
      * @return
      */
     List<StoreInfo> listStore(StoreInfo storeInfo);
+
+    /**
+     * 根据efastid查询店铺信息
+     * @param storeEfast
+     * @return
+     */
+    StoreInfo getStoreInfoByEfastId(Integer storeEfast);
 }

+ 6 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.faces.product;
 
+import com.iamberry.rst.core.cm.FittingsInfo;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.ProductType;
@@ -106,4 +107,9 @@ public interface ProductService {
 
     //根据客诉id查询产品类型
     ProductType getProductType(Integer customerId);
+    /**
+     * 根据sku查询配件信息
+     * @return
+     */
+    FittingsInfo getFittingsBySku(FittingsInfo fittingsInfo);
 }

+ 22 - 3
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/SalesOrderServiceImpl.java

@@ -93,7 +93,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     @Transient
     public boolean addOrderAndItem(SalesOrder salesOrder, List<SalesOrderItem> list) throws Exception {
         if (list == null || list.size() == 0) {
-            throw  new RuntimeException("获取Efast订单信息出错!");
+            throw  new RuntimeException("获取订单信息出错!");
         }
         SalesOrder verifyOrder = new SalesOrder();
         verifyOrder.setSalesOrderId(salesOrder.getSalesOrderId());
@@ -106,7 +106,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         try {
             int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
             if (orderNum <= 0) {
-                throw  new RuntimeException("获取Efast订单信息出错!");
+                throw  new RuntimeException("获取订单信息出错!");
             }
         }catch (Exception e){
             return true;
@@ -118,7 +118,7 @@ public class SalesOrderServiceImpl implements SalesOrderService {
         //批量添加订单项数据
         int itemNum = salesOrderMapper.addOrderItemList(list);
         if (itemNum <= 0) {
-            throw  new RuntimeException("获取Efast订单信息出错!");
+            throw  new RuntimeException("获取订单信息出错!");
         }
         return true;
     }
@@ -143,6 +143,25 @@ public class SalesOrderServiceImpl implements SalesOrderService {
     }
 
     @Override
+    @Transactional
+    public boolean addRstOrderAndIteminfo(SalesOrder salesOrder, List<SalesOrderItem> list) {
+        //添加订单数据
+        int orderNum = salesOrderMapper.addSalesOrder(salesOrder);
+        if (orderNum <= 0) {
+            return false;
+        }
+        for (SalesOrderItem item : list) {
+            item.setItemOrderId(salesOrder.getSalesId());
+        }
+        //批量添加订单项数据
+        int itemNum = salesOrderMapper.addOrderItemList(list);
+        if (itemNum <= 0) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
     public List<SalesOrderItem> listSalesOrderItem(SalesOrderItem salesOrderItem) {
         return salesOrderMapper.listSalesOrderItem(salesOrderItem);
     }

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/StoreInfoServiceImpl.java

@@ -21,4 +21,9 @@ public class StoreInfoServiceImpl implements StoreInfoService {
     public List<StoreInfo> listStore(StoreInfo storeInfo) {
         return storeInfoMapper.listStore(storeInfo);
     }
+
+    @Override
+    public StoreInfo getStoreInfoByEfastId(Integer storeEfast) {
+        return storeInfoMapper.getStoreInfoByEfastId(storeEfast);
+    }
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/StoreInfoMapper.java

@@ -21,6 +21,13 @@ public interface StoreInfoMapper {
     StoreInfo getStoreInfoById(Integer storeId);
 
     /**
+     * 根据efastid查询店铺信息
+     * @param storeEfast
+     * @return
+     */
+    StoreInfo getStoreInfoByEfastId(Integer storeEfast);
+
+    /**
      * 修改店铺信息
      * @param storeInfo
      * @return

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/storeInfoMapper.xml

@@ -22,6 +22,14 @@
     where store_id = #{storeId,jdbcType=INTEGER}
   </select>
 
+  <!-- 根据efastid查询店铺信息 -->
+  <select id="getStoreInfoByEfastId" resultType="StoreInfo" parameterType="java.lang.Integer" >
+    select
+    <include refid="storeInfo" />
+    from tb_rst_store_info
+    where store_efast = #{storeEfast,jdbcType=INTEGER}
+  </select>
+
   <!-- 根据条件查询店铺信息 -->
   <select id="listStore" parameterType="StoreInfo" resultType="StoreInfo">
     select

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.service.product;
 
+import com.iamberry.rst.core.cm.FittingsInfo;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.ProductType;
@@ -153,5 +154,10 @@ public class ProductServiceImpl implements ProductService {
         return productMapper.getProductType(customerId);
     }
 
+    @Override
+    public FittingsInfo getFittingsBySku(FittingsInfo fittingsInfo) {
+        return productMapper.getFittingsBySku(fittingsInfo);
+    }
+
 
 }

+ 7 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java

@@ -1,5 +1,6 @@
 package com.iamberry.rst.service.product.mapper;
 
+import com.iamberry.rst.core.cm.FittingsInfo;
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.Product;
 import com.iamberry.rst.core.order.ProductType;
@@ -86,4 +87,10 @@ public interface ProductMapper {
 
     //根据客诉id查询产品类型
     ProductType getProductType(Integer customerId);
+
+    /**
+     * 根据sku查询配件信息
+     * @return
+     */
+    FittingsInfo getFittingsBySku(FittingsInfo fittingsInfo);
 }

+ 10 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml

@@ -214,4 +214,14 @@
         LEFT JOIN tb_rst_customer_info ci on ci.type_id = pt.type_id
         WHERE ci.customer_id = #{customerId}
     </select>
+    <!--根据sku查询配件信息 -->
+    <select id="getFittingsBySku" resultType="FittingsInfo" parameterType="FittingsInfo">
+        SELECT
+        *
+        FROM
+        tb_rst_product_fittings
+        WHERE
+        fittings_bar = #{fittingsBar}
+    </select>
+
 </mapper>

+ 225 - 0
watero-rst-web/src/main/java/com/iamberry/rst/controllers/order/MallOrderController.java

@@ -0,0 +1,225 @@
+package com.iamberry.rst.controllers.order;
+
+import com.alibaba.fastjson.JSON;
+import com.iamberry.rst.core.cm.FittingsInfo;
+import com.iamberry.rst.core.cm.SalesOrder;
+import com.iamberry.rst.core.cm.SalesOrderItem;
+import com.iamberry.rst.core.cm.StoreInfo;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.ProductColor;
+import com.iamberry.rst.faces.cm.SalesOrderService;
+import com.iamberry.rst.faces.cm.StoreInfoService;
+import com.iamberry.rst.faces.product.ProductService;
+import com.iamberry.rst.utils.AdminUtils;
+import com.iamberry.rst.utils.OrderNoUtil;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * Created by Administrator on 2018/5/21.
+ */
+@Controller
+@RequestMapping("/mallorder")
+public class MallOrderController {
+    @Autowired
+    private SalesOrderService salesOrderService;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private StoreInfoService storeInfoService;
+
+    @RequestMapping(value = "/order",method = RequestMethod.POST)
+    @ResponseBody
+    public JSONObject addOrder(HttpServletRequest request){
+        String info =  request.getParameter("info");
+        Map<String,Object> map = new HashMap<String,Object>();
+        Map requstMap = (Map) JSON.parse(info);
+        if(requstMap == null ){
+            map.put("msg","parameter error");
+            map.put("oder_sn",new Date().getTime());
+            return JSONObject.fromObject(map);
+        }
+        String app_act =  request.getParameter("app_act");
+        if(app_act != null && app_act.equals("")){
+            map.put("msg","parameter error");
+            map.put("oder_sn",new Date().getTime());
+            return JSONObject.fromObject(map);
+        }
+        switch (app_act){
+            case "rst.trade.new.add":
+                addOrder(requstMap);
+                //新增订单
+                break;
+            case "rst.trade.logistics.get":
+                //拉取物流
+                break;
+            default:
+                map.put("msg","parameter error");
+                map.put("oder_sn",new Date().getTime());
+                break;
+
+        }
+        return JSONObject.fromObject(map);
+    }
+
+    private Map<String,Object> addOrder(Map<String,Object> requstMap){
+        Map<String,Object> map = new HashMap<String,Object>();
+        SalesOrder salesOrder = new SalesOrder();
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-M-dd HH:mm:ss");
+        try {
+            Date add_time = format.parse(requstMap.get("add_time").toString());//添加时间
+            String address = (String)requstMap.get("address");//详细地址
+            String province_name = (String)requstMap.get("province_name");//省
+            String city_name = (String)requstMap.get("city_name");//市
+            String district_name = (String)requstMap.get("district_name");//区
+            String consignee = (String)requstMap.get("consignee");//收货人
+            String email = (String)requstMap.get("email");//email
+            Integer goods_amount = (Integer)requstMap.get("goods_amount");//商品总价
+            Integer goods_count = (Integer)requstMap.get("goods_count");//产品数量
+            String mobile = (String)requstMap.get("mobile");//手机号
+            Integer money_paid = (Integer)requstMap.get("money_paid");//已付款
+            Integer order_amount = (Integer)requstMap.get("order_amount");//应付款,应付款金额要与已付款金额相同
+            String oid = (String)requstMap.get("oid");//交易号或系统订单号
+            String pay_name = (String)requstMap.get("pay_name");//支付方式名称
+            Date pay_time = format.parse(requstMap.get("pay_time").toString());//支付时间
+            String postscript = (String)requstMap.get("postscript");//买家留言
+            String to_buyer = (String)requstMap.get("to_buyer");//商家留言
+            Integer sd_id = (Integer)requstMap.get("sd_id");//商店ID(店铺id)
+            Integer shipping_fee = (Integer)requstMap.get("shipping_fee");//邮费
+            String shipping_name = (String)requstMap.get("shipping_name");//快递公司代码
+            String tel = (String)requstMap.get("tel");//收货人电话
+            Integer total_amount = (Integer)requstMap.get("total_amount");//订单总金额
+            String user_name = (String)requstMap.get("user_name");//用户名称
+            String zipcode = (String)requstMap.get("zipcode");//邮编
+            String orders = requstMap.get("orders").toString();//订单项
+
+            //根据efast店铺id查询销售公司id和efastid
+            StoreInfo storeInfo = storeInfoService.getStoreInfoByEfastId(sd_id);
+            List<SalesOrderItem> list = new ArrayList<>();
+            JSONArray jsonArray = JSONArray.fromObject(orders);
+
+            Integer salesAmount = 0;
+            if(jsonArray.size() < 1){
+                map.put("msg","parameter error");
+                map.put("oder_sn",new Date().getTime());
+                return map;
+            }
+             for (int i = 0; i < jsonArray.size(); i++) {
+                 JSONObject orderItem = jsonArray.getJSONObject(i);
+                 String outer_sku = orderItem.get("outer_sku").toString();
+                 ProductColor productColor = new ProductColor();
+                 productColor.setColorBar(outer_sku);
+                 //根据sku查询产品详细信息
+                 List<ProductColor> listColor = productService.listproductAndColor(productColor);
+                 if(listColor.size() < 1){
+                     map.put("msg","parameter error");
+                     map.put("oder_sn",new Date().getTime());
+                     return map;
+                 }
+                 SalesOrderItem salesOrderItem = new SalesOrderItem();
+                 productColor = listColor.get(0);
+                 salesOrderItem.setItemNum(Integer.valueOf(orderItem.get("goods_number").toString()));
+                 salesOrderItem.setItemProductName(orderItem.get("goods_name").toString());
+                 salesOrderItem.setItemColorId(productColor.getColorId());
+                 if (listColor.size() > 0) {
+                    Product product = productService.getProductById(listColor.get(0).getColorId());
+                    salesOrderItem.setItemProductId(product.getProductId());
+                    salesOrderItem.setItemProductType(product.getProductType());
+                    /*salesOrderItem.setItemProductName(product.getProductName());*/
+                    salesOrderItem.setItemProductPic(productColor.getColorPicture());
+                    salesOrderItem.setItemProductColor(productColor.getColorName());
+                    salesOrderItem.setItemColorBar(productColor.getColorBar());
+                    salesOrderItem.setItemProductPrice(productColor.getColorPrice());
+                    salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
+                    salesOrderItem.setItemIsSource(1);
+                    salesAmount += productColor.getColorDiscount();
+                } else if (listColor.size() > 0) {
+                     FittingsInfo fittingsInfo = new FittingsInfo();
+                     fittingsInfo.setFittingsBar(outer_sku);
+                     fittingsInfo =  productService.getFittingsBySku(fittingsInfo);
+                     if(fittingsInfo == null){
+                         map.put("msg","parameter error");
+                         map.put("oder_sn",new Date().getTime());
+                         return map;
+                     }
+                    Product product = productService.getProductByFittingsId(fittingsInfo.getProductId());
+                    salesOrderItem.setItemProductType(product.getProductType());
+                    /*salesOrderItem.setItemProductName(product.getProductName());*/
+                    salesOrderItem.setItemProductColor(fittingsInfo.getFittingsName());
+                    salesOrderItem.setItemColorBar(fittingsInfo.getFittingsBar());
+                    salesOrderItem.setItemProductPrice(fittingsInfo.getFittingsPrice());
+                    salesOrderItem.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
+                    salesOrderItem.setItemIsSource(2);
+                    salesAmount += fittingsInfo.getFittingsDiscount();
+                }
+                list.add(salesOrderItem);
+            }
+            salesOrder.setSalesOpenId("0");
+            salesOrder.setSalesDiscountMoney(salesAmount);
+            salesOrder.setSalesPledgeMoney(salesAmount);
+            salesOrder.setSalesRemainDeposit(salesAmount);
+            salesOrder.setSalesStatus(1);
+            salesOrder.setSalesSendType(2);
+            salesOrder.setSalesSalesTime(add_time);
+            salesOrder.setSalesAddressInfo(province_name+"-"+city_name+"-"+district_name+"-"+address);
+            salesOrder.setSalesAddressTel(mobile);
+            salesOrder.setSalesAddressName(consignee);
+            salesOrder.setSalesAmount(total_amount);
+            salesOrder.setSalesPayMoney(money_paid);
+            salesOrder.setSalesPayType(1);
+            salesOrder.setSalesWaitMoney(total_amount - money_paid);
+            salesOrder.setSalesWaitMoney(money_paid);
+            salesOrder.setSalesShippingFee(shipping_fee);
+            salesOrder.setSalesPayTime(pay_time);
+            salesOrder.setSalesLastMoney(money_paid);
+            salesOrder.setSalesCreateTime(new Date());
+            salesOrder.setSalesAdminRemark(to_buyer);
+            salesOrder.setSalesUserRemark(postscript);
+            salesOrder.setSalesStoreId(storeInfo.getStoreId());
+            salesOrder.setSalesCompanyId(storeInfo.getCompanyId());
+            salesOrder.setSalesType(1);
+            salesOrder.setSalesDealCode(oid);
+            salesOrder.setSalesOrderStatus(1);
+            salesOrder.setSalesShippingStatus(0);
+            salesOrder.setSalesPayStatus(2);
+            salesOrder.setSalesProcessStatus(0);
+            salesOrder.setSalesIsSend(0);
+            salesOrder.setSalesIsLocked(0);
+            salesOrder.setSalesIsSeparate(0);
+            //salesOrder = salesOrderService.addOrderAndIteminfo(salesOrder,list);
+            salesOrder.setSalesOrderItemList(list);
+
+        }catch (Exception e){
+            map.put("msg","parameter null");
+            map.put("oder_sn",new Date().getTime());
+            return null;
+        }
+
+        //添加订单数据
+        boolean bl = false;
+        try {
+            bl = salesOrderService.addRstOrderAndIteminfo(salesOrder,salesOrder.getSalesOrderItemList());
+        }catch (Exception e){
+            map.put("msg","add error");
+            map.put("oder_sn",new Date().getTime());
+            throw new RuntimeException("系统添加订单失败,回滚订单");
+        }
+        if (!bl) {
+            map.put("msg","add error");
+            map.put("oder_sn",new Date().getTime());
+        }else{
+            map.put("msg","seccess");
+            map.put("oder_sn",new Date().getTime());
+        }
+        return map;
+    }
+}