|
@@ -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;
|
|
|
+ }
|
|
|
+}
|