Browse Source

Merge branch 'master' of dq/kmall-pt into master

黄亚琴 6 years ago
parent
commit
2a3fa02376

+ 21 - 42
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -208,6 +208,25 @@ public class OrderController {
         if (null == orderInfo) {
             return R.error("订单不存在");
         }
+
+        if (orderInfo.getOrderStatus() != 0) {
+            return R.error("订单状态不支持取消");
+        }
+
+        orderService.cancelOrder(orderInfo);
+        return R.ok();
+    }
+
+    /**
+     * 订单退款请求
+     */
+    @RequiresPermissions(value = {"order:refund"})
+    @RequestMapping(value = "refund", method = RequestMethod.POST)
+    public Object refund(Long orderId, BigDecimal refundMoney) {
+        OrderEntity orderInfo = orderService.queryObject(orderId);
+        if (null == orderInfo) {
+            return R.error("订单不存在");
+        }
         if (orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_401.getItem())
                 || orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
             return R.error("订单已退款");
@@ -220,11 +239,11 @@ public class OrderController {
         if (orderInfo.getOrderStatus() != 0) {
             // todo 退款
 //          WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
-//                orderInfo.getActualPrice().doubleValue(), refundMoney.doubleValue());
+//          orderInfo.getActualPrice().doubleValue(), refundMoney.doubleValue());
             WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getMerchOrderSn().toString(),
                     totalActualPrice, orderInfo.getActualPrice().doubleValue());
             if (result.getResult_code().equals("SUCCESS")) {
-                orderService.cancelOrder(orderInfo,result);
+                orderService.refund(orderInfo,result);
             }else{
                 OrderRefundEntity mallOrderRefund = orderRefundService.queryObjectByOrderId(orderInfo.getId());
                 OrderRefundEntity orderRefund = new OrderRefundEntity();
@@ -253,46 +272,6 @@ public class OrderController {
     }
 
     /**
-     * 订单退款请求
-     */
-    @RequiresPermissions(value = {"order:refund"})
-    @RequestMapping(value = "refund", method = RequestMethod.POST)
-    public Object refund(Long orderId, BigDecimal refundMoney) {
-        OrderEntity orderInfo = orderService.queryObject(orderId);
-
-        if (null == refundMoney) {
-            return R.error("请输入退款金额");
-        }
-
-        if (null == orderInfo) {
-            return R.error("订单已取消");
-        }
-
-        if (refundMoney.compareTo(orderInfo.getActualPrice()) > 0) {
-            return R.error("退款金额不能大于订单金额");
-        }
-
-        if (orderInfo.getOrderStatus() == 401 || orderInfo.getOrderStatus() == 402) {
-            return R.error("订单已退款");
-        }
-
-        if (orderInfo.getPayStatus() != 2) {
-            return R.error("订单未付款,不能退款");
-        }
-
-//        WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
-//                orderInfo.getActualPrice().doubleValue(), refundMoney.doubleValue());
-        WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
-                orderInfo.getActualPrice().doubleValue(),orderInfo.getActualPrice().doubleValue());
-        if (result.getResult_code().equals("SUCCESS")) {
-            orderService.refund(orderInfo, refundMoney);
-            return R.ok();
-        } else {
-            return R.error(result.getErr_code_des());
-        }
-    }
-
-    /**
      * 获取首页展示信息--会员购买率相关
      * @param params
      * @return

+ 2 - 5
kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java

@@ -50,11 +50,8 @@ public interface OrderService {
 
     /**
      * 退款
-     *
-     * @param orderInfo
-     * @param refundMoney
      */
-    void refund(OrderEntity orderInfo, BigDecimal refundMoney);
+    void refund(OrderEntity orderInfo, WechatRefundApiResult result);
 
     List<OrderRefundEntity> queryRefundList(Map<String, Object> map);
 
@@ -64,7 +61,7 @@ public interface OrderService {
 
     void applyRefundDeal(OrderEntity orderInfo, OrderRefundEntity refundEntity);
 
-    void cancelOrder(OrderEntity orderInfo,WechatRefundApiResult result);
+    void cancelOrder(OrderEntity orderInfo);
 
     /**
      * 获取首页展示信息--会员购买率相关

+ 63 - 46
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -76,14 +76,16 @@ public class OrderServiceImpl implements OrderService {
         return orderDao.update(order);
     }
 
-
+    /**
+     * 取消订单
+     * @param order
+     */
     @Override
-    public void cancelOrder(OrderEntity order,WechatRefundApiResult result) {
+    public void cancelOrder(OrderEntity order) {
         boolean needUpdateStock = true;
-        if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
-            order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
+        if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_0.getItem())) {
+            order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_101.getItem()));
         }
-        order.setPayStatus(Integer.parseInt(Dict.payStatus.item_3.getItem()));
 
         // 判断是否有优惠券
         UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
@@ -92,25 +94,6 @@ public class OrderServiceImpl implements OrderService {
         }
         orderDao.update(order);
 
-        OrderRefundEntity mallOrderRefund = orderRefundDao.queryObjectByOrderId(order.getId());
-
-        OrderRefundEntity orderRefund = new OrderRefundEntity();
-        orderRefund.setRefundId(result.getRefund_id());
-        orderRefund.setOutRefundNo(result.getOut_refund_no());
-        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
-        orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
-        orderRefund.setModTime(new Date());
-
-        if(mallOrderRefund !=null){
-            orderRefund.setId(mallOrderRefund.getId());
-            orderRefundDao.update(orderRefund);
-        }else{
-            orderRefund.setOrderId(Integer.parseInt(order.getId()+""));
-            orderRefund.setUserId(Integer.parseInt(order.getUserId()+""));
-            orderRefund.setCreateTime(new Date());
-            orderRefundDao.save(orderRefund);//退款记录
-        }
-
         if (!needUpdateStock) {
             return;
         }
@@ -234,31 +217,65 @@ public class OrderServiceImpl implements OrderService {
     }
 
     /**
-     * 部分退款
-     *
-     * @param orderInfo
-     * @param refundMoney
+     * 退款
      */
     @Transactional
-    public void refund(OrderEntity orderInfo, BigDecimal refundMoney) {
-        if (orderInfo.getOrderStatus() == 201) {
-            orderInfo.setOrderStatus(401);
-        } else if (orderInfo.getOrderStatus() == 300) {
-            orderInfo.setOrderStatus(402);
+    public void refund(OrderEntity order, WechatRefundApiResult result) {
+        boolean needUpdateStock = true;
+        if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
+            order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
+        }
+        order.setPayStatus(Integer.parseInt(Dict.payStatus.item_3.getItem()));
+
+        // 判断是否有优惠券
+        UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
+        if (null != couponVo) {
+            userCouponDao.cancelOrder(couponVo);
+        }
+        orderDao.update(order);
+
+        OrderRefundEntity mallOrderRefund = orderRefundDao.queryObjectByOrderId(order.getId());
+
+        OrderRefundEntity orderRefund = new OrderRefundEntity();
+        orderRefund.setRefundId(result.getRefund_id());
+        orderRefund.setOutRefundNo(result.getOut_refund_no());
+        orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())).divide(Constant.ONE_HUNDRED));
+        orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
+        orderRefund.setModTime(new Date());
+
+        if(mallOrderRefund !=null){
+            orderRefund.setId(mallOrderRefund.getId());
+            orderRefundDao.update(orderRefund);
+        }else{
+            orderRefund.setOrderId(Integer.parseInt(order.getId()+""));
+            orderRefund.setUserId(Integer.parseInt(order.getUserId()+""));
+            orderRefund.setCreateTime(new Date());
+            orderRefundDao.save(orderRefund);//退款记录
+        }
+
+        if (!needUpdateStock) {
+            return;
+        }
+        // 更新库存
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("orderId", order.getId());
+        List<OrderGoodsEntity> orderGoodsVoList = orderGoodsDao.queryList(map);
+        for (OrderGoodsEntity orderGoodsEntity : orderGoodsVoList) {
+            ProductStoreRelaEntity storeRelaEntity = productStoreRelaDao.queryByStoreIdProductId(Long.valueOf(order.getStoreId()), Long.valueOf(orderGoodsEntity.getProductId()));
+            if (null == storeRelaEntity || null == storeRelaEntity.getSellVolume()) {
+                storeRelaEntity.setSellVolume(Constant.ZERO);
+            }
+            BigDecimal sellVolume = storeRelaEntity.getSellVolume().subtract(new BigDecimal(orderGoodsEntity.getNumber()));//销售量
+            if (sellVolume.compareTo(Constant.ZERO) < 0) {
+                sellVolume = Constant.ZERO;
+            }
+            storeRelaEntity.setSellVolume(sellVolume);
+            if (null == storeRelaEntity.getStockNum()) {
+                storeRelaEntity.setStockNum(0);
+            }
+            storeRelaEntity.setStockNum(storeRelaEntity.getStockNum() + orderGoodsEntity.getNumber());//库存数量
+            productStoreRelaDao.update(storeRelaEntity);
         }
-        // 退款记录
-        OrderRefundEntity orderRefundEntity = new OrderRefundEntity();
-        orderRefundEntity.setOrderId(orderInfo.getId().intValue());
-        orderRefundEntity.setRefundTime(new Date());
-        orderRefundEntity.setUserId(orderInfo.getUserId());
-        orderRefundEntity.setRefundType(2);
-        orderRefundEntity.setRefundStatus(2);
-        orderRefundEntity.setApprovalTime(new Date());
-        orderRefundEntity.setApprover(ShiroUtils.getUserId() + "");
-        orderRefundEntity.setCreator(ShiroUtils.getUserId() + "");
-        orderRefundEntity.setRefundMoney(refundMoney);
-        orderRefundDao.save(orderRefundEntity);
-        orderDao.update(orderInfo);
     }
 
     /**

+ 1 - 1
kmall-admin/src/main/resources/mybatis/mapper/CollectDao.xml

@@ -20,7 +20,7 @@
 	</select>
 
     <select id="queryList" resultType="com.kmall.admin.entity.CollectEntity">
-        select a.* , b.username as user_name,c.name as value_name
+        select a.* , b.nickname as user_name,c.name as value_name
         from mall_collect a
         left join mall_user b on a.user_id = b.id
         left join mall_goods c on a.value_id = c.id

+ 2 - 2
kmall-admin/src/main/webapp/WEB-INF/page/shop/shopuser.html

@@ -15,12 +15,12 @@
                 <i-button @click="query">查询</i-button>
             </div>
             <div class="buttons-group">
-                #if($shiro.hasPermission("user:save"))
+                <!--#if($shiro.hasPermission("user:save"))
                 <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
                 #end
                 #if($shiro.hasPermission("user:update"))
                 <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
-                #end
+                #end-->
                 #if($shiro.hasPermission("user:delete"))
                 <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
                 #end

+ 1 - 1
kmall-admin/src/main/webapp/js/shop/order.js

@@ -114,7 +114,7 @@ $(function () {
                         if (row.orderStatus == 300 && (row.orderBizType == '10' || row.orderBizType == '02')) {
                             htmlStr += '<button class="btn btn-outline btn-primary" onclick="vm.printDetail(' + row.id + ')"><i class="fa fa-print"></i>打印</button>&nbsp;';
                         }
-                        if (row.orderStatus == 201 || row.orderStatus == 301 || row.orderStatus == 300) {
+                        if (row.orderStatus == 0) {
                             htmlStr += '<button class="btn btn-outline btn-danger" onclick="vm.refundUpdate(' + row.id + ')"><i class="fa fa-times-circle-o"></i>&nbsp;取消</button>&nbsp;';
                         }
                     }

+ 1 - 1
kmall-admin/src/main/webapp/js/shop/orderrefund.js

@@ -204,7 +204,7 @@ var vm = new Vue({
 
             $.ajax({
                 type: "POST",
-                url: '../order/cancel',
+                url: '../order/refund',
                 data: params,
                 success: function (r) {
                     if (r.code === 0) {