Browse Source

物流详情

PLF 5 years ago
parent
commit
a971c2de41

+ 88 - 38
src/main/java/com/caimei/controller/order/OrderController.java

@@ -1,23 +1,24 @@
 package com.caimei.controller.order;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.entity.CmOperationUser;
 import com.caimei.entity.WxJsonModel;
 import com.caimei.service.order.OrderService;
+import com.caimei.utils.HttpRequest;
 import com.caimei.utils.JsonMapper;
 import com.caimei.utils.SessionHelper;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-import org.thymeleaf.expression.Maps;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 /**
@@ -30,6 +31,10 @@ public class OrderController {
 
     @Autowired
     private OrderService orderService;
+    @Value("${miniprogram.AppId}")
+    private String AppId;
+    @Value("${miniprogram.AppSecret}")
+    private String AppSecret;
 
     /**
      * 确认订单信息
@@ -55,6 +60,51 @@ public class OrderController {
         return WxJsonModel.newInstance().success(shareCode);
     }
 
+    /**
+     * 分享订单,分享码验证通过
+     */
+    @ResponseBody
+    @RequestMapping("/shareCode")
+    public WxJsonModel verifyShareCode(String shareCode, String code, Integer orderID, HttpServletRequest request) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        logger.info("Start get SessionKey");
+        Map<String, Object> map = new HashMap<>();
+        String referer = request.getHeader("Referer"); //获取当前微信小程序的环境
+        logger.info("referer-is----:" + referer);
+        map.put("referer", referer);
+        String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
+        Map<String, String> requestUrlParam = new HashMap<String, String>();
+        requestUrlParam.put("appid", AppId);//小程序appId
+        requestUrlParam.put("secret", AppSecret);//小程序appsecret
+        requestUrlParam.put("js_code", code);//小程序端返回的code
+        requestUrlParam.put("grant_type", "authorization_code");//默认参数
+        //发送post请求读取调用微信接口获取openid用户唯一标识
+        String infos;
+        try {
+            infos = HttpRequest.sendPost(requestUrl, requestUrlParam);
+        } catch (Exception e) {
+            model.setData(map);
+            return model.error("服务器内部异常");
+        }
+        //解析相应内容(转换成json对象)
+        JSONObject jsonObject = JSON.parseObject(infos);
+        String openid = jsonObject.getString("openid");
+        logger.info("openid----->" + openid);
+        String session_key = jsonObject.getString("session_key");
+        String errcode = jsonObject.getString("errcode");
+        String errmsg = jsonObject.getString("errmsg");
+        if (!org.springframework.util.StringUtils.isEmpty(errcode) &&
+                (errcode.equals("-1") || errcode.equals("40029") || errcode.equals("45011"))) {
+            model.setMsg(errmsg);
+            model.setData(map);
+            map.put("sessionKey", session_key);
+            model.setCode("-1");
+            return model;
+        }
+        WxJsonModel jsonModel = orderService.verifyShareCode(shareCode, openid, orderID);
+        return jsonModel;
+    }
+
     /**
      * 订单详情
      */
@@ -68,6 +118,7 @@ public class OrderController {
     /**
      * 提交订单接口
      *
+     * @return code:1000=用户账户异常,1001=数据异常
      * @Param params参数格式:
      * 参数1=userId用户ID
      * 参数2=organizeID组织ID,
@@ -76,69 +127,68 @@ public class OrderController {
      * 参数5=orderInfo订单信息参数格式:
      * [
      * {"shopId":1001,
-     *   "note":81,
-     *  "productInfo":[{"productId":1,"productNum":80},{"productId":2,"productNum":100}]
+     * "note":81,
+     * "productInfo":[{"productId":1,"productNum":80},{"productId":2,"productNum":100}]
      * }
-     *]
-     *参数6=balanceDeductionFlag是否使用余额抵扣(1使用,2使用)
-     *参数7=orderShouldPayFee订单应付金额(商品总金额 - 余额抵扣 - 经理折扣默认为0)
-     * @return code:1000=用户账户异常,1001=数据异常
+     * ]
+     * 参数6=balanceDeductionFlag是否使用余额抵扣(1使用,2使用)
+     * 参数7=orderShouldPayFee订单应付金额(商品总金额 - 余额抵扣 - 经理折扣默认为0)
      */
     @ResponseBody
     @RequestMapping("/submitOrder")
-    public WxJsonModel submitOrder(String params,HttpServletRequest request) {
+    public WxJsonModel submitOrder(String params, HttpServletRequest request) {
         WxJsonModel wxJsonModel = WxJsonModel.newInstance();
-        logger.info(">>>>>>订单信息params:"+params);
+        logger.info(">>>>>>订单信息params:" + params);
         //检查用户是否登入
         CmOperationUser currentUser = SessionHelper.getCurrentUser(request);
-        if(null == currentUser){
-            return wxJsonModel.error("1000","用户账户异常");
+        if (null == currentUser) {
+            return wxJsonModel.error("1000", "用户账户异常");
         }
         Integer cmOperationID = currentUser.getId();//当前操作者ID
         if (StringUtils.isBlank(params)) {
-            return wxJsonModel.error("1001","数据异常" );
+            return wxJsonModel.error("1001", "数据异常");
         }
-        Map<String, Object> map = new HashMap<String,Object>();
-        try{
-            map =(Map<String, Object>) JsonMapper.getInstance().fromJsonString(params, Map.class);
-            if(null == map){
+        Map<String, Object> map = new HashMap<String, Object>();
+        try {
+            map = (Map<String, Object>) JsonMapper.getInstance().fromJsonString(params, Map.class);
+            if (null == map) {
                 logger.info(">>>>>数据异常,参数不能为空");
-                return wxJsonModel.error("1001","数据异常" );
+                return wxJsonModel.error("1001", "数据异常");
             }
             Integer userId = (Integer) map.get("userId");
             Integer organizeID = (Integer) map.get("organizeID");
             String cartType = (String) map.get("cartType");
             Integer addressID = (Integer) map.get("addressID");
-            Object orderInfo =  map.get("orderInfo");
+            Object orderInfo = map.get("orderInfo");
             String balanceDeductionFlag = (String) map.get("balanceDeductionFlag");
             Double orderShouldPayFee = (Double) map.get("orderShouldPayFee");//此金额为前端计算,适用于后端计算金额复查
             //校验传入参数的正确性
-            if(null == userId){
-                return wxJsonModel.error("1001","用户数据异常" );
+            if (null == userId) {
+                return wxJsonModel.error("1001", "用户数据异常");
             }
-            if(null ==organizeID){
-                return wxJsonModel.error("1001","组织数据异常" );
+            if (null == organizeID) {
+                return wxJsonModel.error("1001", "组织数据异常");
             }
-            if(StringUtils.isEmpty(cartType)){
-                return wxJsonModel.error("1001","购买类型数据异常" );
+            if (StringUtils.isEmpty(cartType)) {
+                return wxJsonModel.error("1001", "购买类型数据异常");
             }
-            if(null ==addressID){
-                return wxJsonModel.error("1001","地址数据异常" );
+            if (null == addressID) {
+                return wxJsonModel.error("1001", "地址数据异常");
             }
-            if(null == orderInfo){
-                return wxJsonModel.error("1001","订单数据异常" );
+            if (null == orderInfo) {
+                return wxJsonModel.error("1001", "订单数据异常");
             }
-            if(StringUtils.isEmpty(balanceDeductionFlag)){
-                return wxJsonModel.error("1001","余额抵扣数据异常" );
+            if (StringUtils.isEmpty(balanceDeductionFlag)) {
+                return wxJsonModel.error("1001", "余额抵扣数据异常");
             }
-            if(null == orderShouldPayFee){
-                return wxJsonModel.error("1001","订单应付金额数据异常" );
+            if (null == orderShouldPayFee) {
+                return wxJsonModel.error("1001", "订单应付金额数据异常");
             }
             //保存订单信息
-            return orderService.saveOrderInfo(wxJsonModel, userId, organizeID, cartType, addressID, orderInfo, balanceDeductionFlag, orderShouldPayFee,cmOperationID);
-        }catch (Exception e){
-            logger.info(">>>>>系统异常"+e.getMessage());
-            return wxJsonModel.error("1001","数据异常" );
+            return orderService.saveOrderInfo(wxJsonModel, userId, organizeID, cartType, addressID, orderInfo, balanceDeductionFlag, orderShouldPayFee, cmOperationID);
+        } catch (Exception e) {
+            logger.info(">>>>>系统异常" + e.getMessage());
+            return wxJsonModel.error("1001", "数据异常");
 
         }
     }

+ 95 - 95
src/main/java/com/caimei/entity/CmLogisticsRecord.java

@@ -9,99 +9,99 @@ import java.io.Serializable;
  * @version 2019-12-17
  */
 public class CmLogisticsRecord implements Serializable {
-	
-	private static final long serialVersionUID = 1L;
-	private Integer id;
-	private Integer logisticsBatchID;		// 发货物流批次ID
-	private Integer shopOrderID;		// 子订单ID
-	private Integer orderID;		// 主订单ID
-	private Integer orderProductID;		// 订单商品ID
-	private Integer buyNum;		// 商品购买数量
-	private Integer num;		// 此次发货数量
-	private Integer productID;		// 商品ID
-	private String productName;		// 商品名称
-	private String image;		// 商品图片
-
-
-	public Integer getId() {
-		return id;
-	}
-
-	public void setId(Integer id) {
-		this.id = id;
-	}
-
-	public Integer getLogisticsBatchID() {
-		return logisticsBatchID;
-	}
-
-	public void setLogisticsBatchID(Integer logisticsBatchID) {
-		this.logisticsBatchID = logisticsBatchID;
-	}
-	
-	public Integer getShopOrderID() {
-		return shopOrderID;
-	}
-
-	public void setShopOrderID(Integer shopOrderID) {
-		this.shopOrderID = shopOrderID;
-	}
-	
-	public Integer getOrderID() {
-		return orderID;
-	}
-
-	public void setOrderID(Integer orderID) {
-		this.orderID = orderID;
-	}
-	
-	public Integer getOrderProductID() {
-		return orderProductID;
-	}
-
-	public void setOrderProductID(Integer orderProductID) {
-		this.orderProductID = orderProductID;
-	}
-	
-	public Integer getBuyNum() {
-		return buyNum;
-	}
-
-	public void setBuyNum(Integer buyNum) {
-		this.buyNum = buyNum;
-	}
-	
-	public Integer getNum() {
-		return num;
-	}
-
-	public void setNum(Integer num) {
-		this.num = num;
-	}
-	
-	public Integer getProductID() {
-		return productID;
-	}
-
-	public void setProductID(Integer productID) {
-		this.productID = productID;
-	}
-	
-	public String getProductName() {
-		return productName;
-	}
-
-	public void setProductName(String productName) {
-		this.productName = productName;
-	}
-	
-	public String getImage() {
-		return image;
-	}
-
-	public void setImage(String image) {
-		this.image = image;
-	}
-
-	
+
+    private static final long serialVersionUID = 1L;
+    private Integer id;
+    private Integer logisticsBatchID;        // 发货物流批次ID
+    private Integer shopOrderID;        // 子订单ID
+    private Integer orderID;        // 主订单ID
+    private Integer orderProductID;        // 订单商品ID
+    private Integer buyNum;        // 商品购买数量
+    private Integer num;        // 此次发货数量
+    private Integer productID;        // 商品ID
+    private String productName;        // 商品名称
+    private String image;        // 商品图片
+
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getLogisticsBatchID() {
+        return logisticsBatchID;
+    }
+
+    public void setLogisticsBatchID(Integer logisticsBatchID) {
+        this.logisticsBatchID = logisticsBatchID;
+    }
+
+    public Integer getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(Integer shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public Integer getOrderProductID() {
+        return orderProductID;
+    }
+
+    public void setOrderProductID(Integer orderProductID) {
+        this.orderProductID = orderProductID;
+    }
+
+    public Integer getBuyNum() {
+        return buyNum;
+    }
+
+    public void setBuyNum(Integer buyNum) {
+        this.buyNum = buyNum;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public Integer getProductID() {
+        return productID;
+    }
+
+    public void setProductID(Integer productID) {
+        this.productID = productID;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+
 }

+ 70 - 0
src/main/java/com/caimei/entity/CmMallShareCodeRecord.java

@@ -0,0 +1,70 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class CmMallShareCodeRecord implements Serializable {
+    private Integer id;
+    private String openid;      //使用分享码人的openid,方便码有效期内再次查看
+    private Integer orderID;    //主订单ID,关联cm_order的ID
+    private Integer shareCodeId;    //单分享码,关联cm_mall_order_share_code表ID
+    private Date addTime;       //添加时间
+    private String delFlag;     //0 有效 其它无效
+    private Date expiredTime;   //过期时间
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getOpenid() {
+        return openid;
+    }
+
+    public void setOpenid(String openid) {
+        this.openid = openid;
+    }
+
+    public Integer getOrderID() {
+        return orderID;
+    }
+
+    public void setOrderID(Integer orderID) {
+        this.orderID = orderID;
+    }
+
+    public Integer getShareCodeId() {
+        return shareCodeId;
+    }
+
+    public void setShareCodeId(Integer shareCodeId) {
+        this.shareCodeId = shareCodeId;
+    }
+
+    public Date getAddTime() {
+        return addTime;
+    }
+
+    public void setAddTime(Date addTime) {
+        this.addTime = addTime;
+    }
+
+    public String getDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Date getExpiredTime() {
+        return expiredTime;
+    }
+
+    public void setExpiredTime(Date expiredTime) {
+        this.expiredTime = expiredTime;
+    }
+}

+ 2 - 0
src/main/java/com/caimei/mapper/order/OrderMapper.java

@@ -38,4 +38,6 @@ public interface OrderMapper {
     List<LogisticsInfo> findLogisticsInfo(Integer orderID);
 
     List<CmLogisticsRecord> findLogisticsRecord(Integer shopOrderID);
+
+    CmMallShareCodeRecord findShareCodeRecord(String openid, Integer orderID);
 }

+ 4 - 2
src/main/java/com/caimei/service/order/OrderService.java

@@ -11,7 +11,9 @@ public interface OrderService {
 
     Map<String, Object> particulars(Integer orderID);
 
-    Map<String,Object> logistics(Integer orderID);
+    Map<String, Object> logistics(Integer orderID);
 
-    WxJsonModel saveOrderInfo(WxJsonModel wxJsonModel,Integer userId,Integer organizeID,String cartType,Integer addressID,Object orderInfo,String balanceDeductionFlag,Double orderShouldPayFee,Integer cmOperationID);
+    WxJsonModel saveOrderInfo(WxJsonModel wxJsonModel, Integer userId, Integer organizeID, String cartType, Integer addressID, Object orderInfo, String balanceDeductionFlag, Double orderShouldPayFee, Integer cmOperationID);
+
+    WxJsonModel verifyShareCode(String shareCode, String openid, Integer orderID);
 }

+ 26 - 20
src/main/java/com/caimei/service/order/impl/OrderServiceImpl.java

@@ -9,6 +9,7 @@ import com.caimei.mapper.user.UserMapper;
 import com.caimei.service.order.OrderService;
 import com.caimei.utils.AppUtils;
 import com.caimei.utils.NoUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -99,7 +100,7 @@ public class OrderServiceImpl implements OrderService {
     public String shareOrder(Integer orderID) {
         OrderShareCode orderShareCode = orderMapper.queryCode(orderID);
         //生成分享码
-        Integer shareCode = (int) ((Math.random() * 9 + 1) * 1000);
+        String shareCode = RandomStringUtils.random(4, false, true);
         //过期时间
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(new Date());
@@ -107,7 +108,7 @@ public class OrderServiceImpl implements OrderService {
         if (orderShareCode != null && orderShareCode.getExpiredTime().compareTo(new Date()) == 1) {
             return orderShareCode.getShareCode();
         } else if (orderShareCode != null) {
-            orderShareCode.setShareCode(String.valueOf(shareCode));
+            orderShareCode.setShareCode(shareCode);
             orderShareCode.setExpiredTime(calendar.getTime());
             orderShareCode.setDelFlag("0");
             orderMapper.updateCode(orderShareCode);
@@ -115,7 +116,7 @@ public class OrderServiceImpl implements OrderService {
         } else {
             OrderShareCode code = new OrderShareCode();
             code.setOrderID(orderID);
-            code.setShareCode(String.valueOf(shareCode));
+            code.setShareCode(shareCode);
             code.setExpiredTime(calendar.getTime());
             code.setAddTime(new Date());
             code.setDelFlag("0");
@@ -124,6 +125,12 @@ public class OrderServiceImpl implements OrderService {
         }
     }
 
+    @Override
+    public WxJsonModel verifyShareCode(String shareCode, String openid, Integer orderID) {
+        CmMallShareCodeRecord shareCodeRecord = orderMapper.findShareCodeRecord(openid, orderID);
+        return null;
+    }
+
     @Override
     public Map<String, Object> particulars(Integer orderID) {
         Map<String, Object> map = new HashMap();
@@ -164,11 +171,11 @@ public class OrderServiceImpl implements OrderService {
     }
 
     @Override
-    public WxJsonModel saveOrderInfo(WxJsonModel wxJsonModel,Integer userId, Integer organizeID, String cartType, Integer addressID, Object orderInfo, String balanceDeductionFlag, Double orderShouldPayFee,Integer cmOperationID) {
+    public WxJsonModel saveOrderInfo(WxJsonModel wxJsonModel, Integer userId, Integer organizeID, String cartType, Integer addressID, Object orderInfo, String balanceDeductionFlag, Double orderShouldPayFee, Integer cmOperationID) {
         //查询用户信息
         User user = userMapper.findUserById(userId);
-        if(null == user){
-            return wxJsonModel.error("1000","用户账户异常" );
+        if (null == user) {
+            return wxJsonModel.error("1000", "用户账户异常");
         }
         Integer clubID = user.getClubID();
         Date date = new Date();
@@ -176,27 +183,27 @@ public class OrderServiceImpl implements OrderService {
         String dateStr = sdf.format(date);
 
         //订单信息转化
-        List<Map<String,Object>> orderInfoList = (List<Map<String, Object>>) orderInfo;
-        if(null != orderInfoList){
+        List<Map<String, Object>> orderInfoList = (List<Map<String, Object>>) orderInfo;
+        if (null != orderInfoList) {
             Integer productCount = 0;//统计购买所有商品的数量
             double productTotalFee = 0d;//商品总金额 (商品单价乘以数量,再加上税费[默认0])
             double orderTotalFee = 0d;//小计金额 (商品折后单价乘以数量,再加上税费[默认0])
             double payTotalFee = 0d;//订单总额(小计金额减去经理折扣后,再加上运费[默认0])
             double payableAmount = 0d;//真实支付金额(订单总额减去抵扣的账户余额)
-            for(Map<String,Object> shopOrderInfo : orderInfoList){//遍历订单信息
-                String shopId = (String)shopOrderInfo.get("shopId");
-                String note = (String)shopOrderInfo.get("note");
+            for (Map<String, Object> shopOrderInfo : orderInfoList) {//遍历订单信息
+                String shopId = (String) shopOrderInfo.get("shopId");
+                String note = (String) shopOrderInfo.get("note");
                 Object productInfo = shopOrderInfo.get("productInfo");//一个子订单对应的商品信息
-                if(StringUtils.isEmpty(shopId)){
-                    return wxJsonModel.error("1001","供应商数据异常" );
+                if (StringUtils.isEmpty(shopId)) {
+                    return wxJsonModel.error("1001", "供应商数据异常");
                 }
-                if(null == productInfo){
-                    return wxJsonModel.error("1001","订单商品数据异常" );
+                if (null == productInfo) {
+                    return wxJsonModel.error("1001", "订单商品数据异常");
                 }
                 //获取子订单商品信息
-                List<Map<String,Object>> productInfoList = (List<Map<String, Object>>) productInfo;
-                if(!CollectionUtils.isEmpty(productInfoList)){
-                    for(Map<String,Object> product : productInfoList){//遍历所有商品
+                List<Map<String, Object>> productInfoList = (List<Map<String, Object>>) productInfo;
+                if (!CollectionUtils.isEmpty(productInfoList)) {
+                    for (Map<String, Object> product : productInfoList) {//遍历所有商品
                         Integer productId = (Integer) product.get("productId");
                         Integer productNum = (Integer) product.get("productNum");
                     }
@@ -247,7 +254,6 @@ public class OrderServiceImpl implements OrderService {
             cmOrder.setInvoiceFlag("");//是否开发票 没开发票0 /开个人发票1 /开企业发票2
             cmOrder.setFreePostFlag("");//免邮标志  运费:-1到付,0包邮,1需要运费,-2仪器到付其它包邮
 
-
             //保存子订单
 
             //保存订单商品
@@ -256,7 +262,7 @@ public class OrderServiceImpl implements OrderService {
             //获取用户最新余额,判断是否存在
 
             //提交订单完成后清理购物车(用户ID,商品ID)
-            if(StringUtils.equals("1",cartType)){//购物车提交后清理购物车
+            if (StringUtils.equals("1", cartType)) {//购物车提交后清理购物车
 
             }