Browse Source

确认收货

PLF 5 years ago
parent
commit
5442bf0822

+ 55 - 6
src/main/java/com/caimei/controller/order/OrderController.java

@@ -2,12 +2,14 @@ package com.caimei.controller.order;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.caimei.entity.*;
+import com.caimei.entity.CmOperationUser;
+import com.caimei.entity.CmOrder;
+import com.caimei.entity.Page;
+import com.caimei.entity.WxJsonModel;
 import com.caimei.service.order.OrderService;
 import com.caimei.service.user.LoginService;
 import com.caimei.utils.HttpRequest;
 import com.caimei.utils.JsonMapper;
-import com.caimei.utils.SessionHelper;
 import com.github.pagehelper.PageHelper;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -173,7 +175,7 @@ public class OrderController {
             }
             Integer userId = (Integer) map.get("userId");
             Integer organizeID = (Integer) map.get("organizeID");
-            String cartType = String.valueOf(map.get("cartType")) ;
+            String cartType = String.valueOf(map.get("cartType"));
             Integer addressID = (Integer) map.get("addressID");
             Object orderInfo = map.get("orderInfo");
             String balanceDeductionFlag = String.valueOf(map.get("balanceDeductionFlag"));
@@ -244,9 +246,56 @@ public class OrderController {
      */
     @ResponseBody
     @RequestMapping("/purchase")
-    public WxJsonModel oftenPurchase(Integer userID, Integer organizeID) {
-        List<CmOrganizeProducts> organizeProductsList = orderService.oftenPurchase(userID, organizeID);
-        return null;
+    public WxJsonModel oftenPurchase(Integer userID, Integer organizeID, Integer index, Integer pageSize) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        if (userID == null || organizeID == null) return model.error("参数异常");
+        Map<String, Object> map = orderService.oftenPurchase(userID, organizeID, index, pageSize);
+        return model.success(map);
+    }
+
+    /**
+     * 删除订单
+     */
+    @ResponseBody
+    @RequestMapping("/delete")
+    public WxJsonModel deleteOrder(Integer orderID) {
+        WxJsonModel model = null;
+        try {
+            model = orderService.deleteOrder(orderID);
+        } catch (Exception e) {
+            return model.error("删除订单失败," + e.getMessage());
+        }
+        return model;
+    }
+
+    /**
+     * 取消订单
+     */
+    @ResponseBody
+    @RequestMapping("/cancel")
+    public WxJsonModel cancelOrder(Integer orderID) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        try {
+            orderService.cancelOrder(orderID);
+        } catch (Exception e) {
+            return model.error("" + e.getMessage());
+        }
+        return model.success("取消订单成功", "");
+    }
+
+    /**
+     * 确认收货
+     */
+    @ResponseBody
+    @RequestMapping("/affirm")
+    public WxJsonModel affirmCargo(Integer orderID) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        try {
+            orderService.affirmCargo(orderID);
+        } catch (Exception e) {
+            return model.error("" + e.getMessage());
+        }
+        return model.success("确认收货成功", "");
     }
 }
 

+ 87 - 0
src/main/java/com/caimei/entity/CmPayShopRecord.java

@@ -0,0 +1,87 @@
+package com.caimei.entity;
+
+import java.io.Serializable;
+
+public class CmPayShopRecord implements Serializable {
+    private Integer id;
+    private String shopID;        // 供应商Id
+    private String shopOrderID;        // 子订单ID
+    private String shopOrderNo;        // 子订单编号
+    private Double payAmount;        // 付款金额
+    private String payType;        // 付款方式
+    private String payTime;        // 付款时间
+    private Integer payShopID;        // 付款单表id
+    private String status;        // 0待审核, 1已审核
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getShopID() {
+        return shopID;
+    }
+
+    public void setShopID(String shopID) {
+        this.shopID = shopID;
+    }
+
+    public String getShopOrderID() {
+        return shopOrderID;
+    }
+
+    public void setShopOrderID(String shopOrderID) {
+        this.shopOrderID = shopOrderID;
+    }
+
+    public String getShopOrderNo() {
+        return shopOrderNo;
+    }
+
+    public void setShopOrderNo(String shopOrderNo) {
+        this.shopOrderNo = shopOrderNo;
+    }
+
+    public Double getPayAmount() {
+        return payAmount;
+    }
+
+    public void setPayAmount(Double payAmount) {
+        this.payAmount = payAmount;
+    }
+
+    public String getPayType() {
+        return payType;
+    }
+
+    public void setPayType(String payType) {
+        this.payType = payType;
+    }
+
+    public String getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(String payTime) {
+        this.payTime = payTime;
+    }
+
+    public Integer getPayShopID() {
+        return payShopID;
+    }
+
+    public void setPayShopID(Integer payShopID) {
+        this.payShopID = payShopID;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}

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

@@ -53,4 +53,16 @@ public interface OrderMapper {
     String findShareCode(Integer orderID);
 
     List<CmOrganizeProducts> oftenPurchase(@Param("userID") Integer userID, @Param("organizeID") Integer organizeID);
+
+    void deleteReceiptOrderRelation(Integer orderID);
+
+    void deleteDiscernReceipt(Integer id);
+
+    List<CmPayShopRecord> findPayShopRecord(Integer shopOrderID);
+
+    void deletePayShopRecord(Integer shopOrderID);
+
+    void updatePayShop(Integer id);
+
+    void updateLogisticsBatch(Integer orderID);
 }

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

@@ -1,7 +1,6 @@
 package com.caimei.service.order;
 
 import com.caimei.entity.CmOrder;
-import com.caimei.entity.CmOrganizeProducts;
 import com.caimei.entity.WxJsonModel;
 
 import java.util.List;
@@ -22,5 +21,11 @@ public interface OrderService {
 
     List<CmOrder> myOrder(Integer userID, Integer orderState, Integer organizeID);
 
-    List<CmOrganizeProducts> oftenPurchase(Integer userID, Integer organizeID);
+    Map<String, Object> oftenPurchase(Integer userID, Integer organizeID, Integer index, Integer pageSize);
+
+    WxJsonModel deleteOrder(Integer orderID);
+
+    void cancelOrder(Integer orderID) throws Exception;
+
+    void affirmCargo(Integer orderID) throws Exception;
 }

+ 99 - 13
src/main/java/com/caimei/service/order/impl/OrderServiceImpl.java

@@ -5,6 +5,7 @@ import com.caimei.entity.*;
 import com.caimei.mapper.order.CmShopOrderMapper;
 import com.caimei.mapper.order.OrderMapper;
 import com.caimei.mapper.order.OrderProductMapper;
+import com.caimei.mapper.products.HomePageMapper;
 import com.caimei.mapper.products.OrganizeProductsMapper;
 import com.caimei.mapper.user.LoginMapper;
 import com.caimei.mapper.user.PersonalMapper;
@@ -13,6 +14,7 @@ import com.caimei.service.order.OrderService;
 import com.caimei.utils.AppUtils;
 import com.caimei.utils.MathUtil;
 import com.caimei.utils.NoUtils;
+import com.github.pagehelper.PageHelper;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -45,6 +47,8 @@ public class OrderServiceImpl implements OrderService {
     private OrderProductMapper orderProductMapper;
     @Autowired
     private CmShopOrderMapper cmShopOrderMapper;
+    @Autowired
+    private HomePageMapper homePageMapper;
 
     @Value("${miniprogram.domain}")
     private String domain;
@@ -262,7 +266,7 @@ public class OrderServiceImpl implements OrderService {
                 if (null == shopId) return wxJsonModel.error("-1", "供应商数据异常");
                 if (null == productInfo) return wxJsonModel.error("-1", "订单商品数据异常");
 //                shopIDs.add(shopId);
-                shopIDs.put(shopId,note);
+                shopIDs.put(shopId, note);
 
                 //获取子订单商品信息
                 List<Map<String, Object>> productInfoList = (List<Map<String, Object>>) productInfo;
@@ -455,9 +459,9 @@ public class OrderServiceImpl implements OrderService {
             //保存住订单数据
             orderMapper.insert(cmOrder);
             Integer orderID = cmOrder.getOrderID();
-            logger.info(">>>>>orderID:"+orderID);
+            logger.info(">>>>>orderID:" + orderID);
 
-            if(useBalanceFlag){
+            if (useBalanceFlag) {
                 /**添加余额收支记录*/
                 CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord();
                 cmUserBalanceRecord.setUserId(userId);
@@ -471,12 +475,11 @@ public class OrderServiceImpl implements OrderService {
             }
 
 
-
             /**保存子订单后更新主订单信息*/
             cmOrder.setShopOrderIDs("");//子订单ID:1000,1002
 
             /**保存订单商品*/
-            for(CmOrderProduct product:orderProductList){//循环插入数据
+            for (CmOrderProduct product : orderProductList) {//循环插入数据
                 product.setOrderID(orderID);
                 product.setOrderNo(orderNo);
                 //保存订单商品数据
@@ -597,16 +600,16 @@ public class OrderServiceImpl implements OrderService {
 
             }
         }
-        Map<String,String> info = new HashMap<>();
+        Map<String, String> info = new HashMap<>();
         info.put("orderID", String.valueOf(cmOrder.getOrderID()));
         info.put("orderNo", String.valueOf(cmOrder.getOrderNo()));
-        info.put("orderMark", "#"+String.valueOf(cmOrder.getOrderID())+"#");
+        info.put("orderMark", "#" + String.valueOf(cmOrder.getOrderID()) + "#");
         info.put("payTotalFee", String.valueOf(cmOrder.getPayTotalFee()));//应付订单金额
         info.put("payableAmount", String.valueOf(cmOrder.getPayableAmount()));//真实需要付款金额
-        if(isPaySuccessFlag){//余额抵扣成功
-            return wxJsonModel.success("1",info,"提交成功且已支付");//1提交成功[且支付完成]
-        }else{
-            return wxJsonModel.success("2",info,"提交成功但未支付");
+        if (isPaySuccessFlag) {//余额抵扣成功
+            return wxJsonModel.success("1", info, "提交成功且已支付");//1提交成功[且支付完成]
+        } else {
+            return wxJsonModel.success("2", info, "提交成功但未支付");
         }
     }
 
@@ -667,11 +670,94 @@ public class OrderServiceImpl implements OrderService {
     }
 
     @Override
-    public List<CmOrganizeProducts> oftenPurchase(Integer userID, Integer organizeID) {
+    public Map<String, Object> oftenPurchase(Integer userID, Integer organizeID, Integer index, Integer pageSize) {
+        Map<String, Object> map = new HashMap();
+        if (index == null) index = 1;
+        if (pageSize == null) pageSize = 10;
+        PageHelper.startPage(index, pageSize);
+        //商品分页数据
         List<CmOrganizeProducts> organizeProductsList = orderMapper.oftenPurchase(userID, organizeID);
         for (CmOrganizeProducts organizeProducts : organizeProductsList) {
             organizeProducts.setMainImage(AppUtils.getImageURL("product", organizeProducts.getMainImage(), 0, domain));
         }
-        return organizeProductsList;
+        Page<CmOrganizeProducts> page = new Page<>(organizeProductsList);
+        //购物车数量
+        Integer count = homePageMapper.cartQuantity(userID);
+        if (count == null) count = 0;
+        map.put("page", page);
+        map.put("count", count);
+        return map;
+    }
+
+    @Override
+    public WxJsonModel deleteOrder(Integer orderID) {
+        WxJsonModel model = WxJsonModel.newInstance();
+        CmOrder order = orderMapper.findOrder(orderID);
+        if (order == null) return model.error("订单不存在");
+        if (!(order.getStatus() == 6)) {
+            return model.error("订单异常");
+        }
+        //逻辑删除主订单
+        order.setDelFlag("1");
+        order.setNote("用户发起删除订单");
+        orderMapper.update(order);
+        //逻辑删除子订单
+        String[] ShopOrderIDs = {};
+        if (order.getShopOrderIDs().contains(",")) {
+            ShopOrderIDs = order.getShopOrderIDs().split(",");
+        } else {
+            ShopOrderIDs = new String[]{order.getShopOrderIDs()};
+        }
+        for (String shopOrderID : ShopOrderIDs) {
+            CmShopOrder shopOrder = cmShopOrderMapper.get(Integer.valueOf(shopOrderID));
+            shopOrder.setDelFlag("1");
+            cmShopOrderMapper.update(shopOrder);
+        }
+
+        //逻辑删除收款记录
+        List<CmDiscernReceipt> discernReceipt = orderMapper.findDiscernReceipt(orderID);
+        if (discernReceipt != null && discernReceipt.size() > 0) {
+            orderMapper.deleteReceiptOrderRelation(orderID);
+            for (CmDiscernReceipt receipt : discernReceipt) {
+                orderMapper.deleteDiscernReceipt(receipt.getId());
+            }
+        }
+        //逻辑删除付款记录
+        for (String shopOrderID : ShopOrderIDs) {
+            List<CmPayShopRecord> payShopRecordList = orderMapper.findPayShopRecord(Integer.valueOf(shopOrderID));
+            if (payShopRecordList != null && payShopRecordList.size() > 0) {
+                orderMapper.deletePayShopRecord(Integer.valueOf(shopOrderID));
+                for (CmPayShopRecord payShopRecord : payShopRecordList) {
+                    orderMapper.updatePayShop(payShopRecord.getPayShopID());
+                }
+            }
+        }
+        return model.success("删除订单成功", "");
+    }
+
+    @Override
+    public void cancelOrder(Integer orderID) throws Exception {
+        CmOrder order = orderMapper.findOrder(orderID);
+        if (order == null) throw new Exception("订单不存在");
+        if (!(order.getStatus() == 11)) {
+            throw new Exception("订单异常");
+        }
+        order.setStatus(6);
+        orderMapper.update(order);
+    }
+
+    @Override
+    public void affirmCargo(Integer orderID) throws Exception {
+        CmOrder order = orderMapper.findOrder(orderID);
+        if (order == null) throw new Exception("订单不存在");
+        if (order.getStatus() == 13) {
+            orderMapper.updateLogisticsBatch(orderID);
+        } else if (order.getStatus() == 33) {
+            order.setStatus(4);
+            orderMapper.update(order);
+            orderMapper.updateLogisticsBatch(orderID);
+        } else {
+            throw new Exception("订单异常");
+        }
     }
 }

+ 57 - 0
src/main/resources/mapper/OrderMapper.xml

@@ -433,4 +433,61 @@
         ORDER BY
           COUNT(*) DESC
     </select>
+
+    <update id="deleteReceiptOrderRelation" parameterType="int">
+        UPDATE
+          cm_receipt_order_relation
+        SET
+          delFlag = '1'
+        WHERE
+          orderID = #{orderID}
+    </update>
+
+    <update id="deleteDiscernReceipt" parameterType="int">
+         UPDATE
+          cm_discern_receipt
+        SET
+          delFlag = '1'
+        WHERE
+          id =  #{id}
+    </update>
+
+    <select id="findPayShopRecord" resultType="com.caimei.entity.CmPayShopRecord" parameterType="string">
+        SELECT
+          *
+        FROM
+          cm_pay_shop_record
+        WHERE
+          delFlag = '0'
+          AND shopOrderID = #{shopOrderID}
+    </select>
+
+    <update id="deletePayShopRecord" parameterType="int">
+        UPDATE
+          cm_pay_shop_record
+        SET
+          delFlag = '0'
+        WHERE
+          shopOrderID = #{shopOrderID}
+    </update>
+
+    <update id="updatePayShop" parameterType="int">
+        UPDATE
+          cm_pay_shop
+        SET
+          delFlag = '0'
+        WHERE
+          id = #{id}
+    </update>
+
+    <update id="updateLogisticsBatch" parameterType="int">
+        UPDATE
+          cm_logistics_batch
+        SET
+          status = '1',
+          updateDate = NOW(),
+          receiptTime = NOW()
+        WHERE
+          orderID = #{orderID}
+    </update>
 </mapper>