Browse Source

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

黄亚琴 6 years ago
parent
commit
27ff3bfdd6

+ 9 - 3
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -310,6 +310,15 @@ public class OrderController {
         if (totalActualPrice == null) {
             totalActualPrice = 0d;
         }
+        OrderProcessRecordEntity processRecordEntity = orderProcessRecordService.queryObjectByOrderSn(orderInfo.getOrderSn());
+        if(org.apache.commons.lang.StringUtils.isNotEmpty(processRecordEntity.getIsCustomsSend())) {
+            if (processRecordEntity.getIsCustomsSend().equalsIgnoreCase("2")) {
+                return R.error("订单正在清关中,不能退款");
+            }
+            if (processRecordEntity.getIsCustomsSend().equalsIgnoreCase("1")) {
+                return R.error("订单已清关完成,不能退款");
+            }
+        }
         String refundResult = "";
         if (orderInfo.getOrderStatus() != Integer.parseInt(Dict.orderStatus.item_0.getItem())) {
             if (orderInfo.getPayFlag().equalsIgnoreCase(Dict.payFlag.item_wxglobalpay.getItem())) {
@@ -387,9 +396,6 @@ public class OrderController {
     private String wxRefund(OrderEntity orderInfo,Double totalActualPrice){
         WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getMerchOrderSn().toString(), totalActualPrice,
                 orderInfo.getActualPrice().doubleValue());
-        System.out.println("result:"+result);
-        System.out.println("resultCode:"+result.getResult_code());
-        System.out.println("success:"+WechatUtil.WXTradeState.SUCCESS.getCode());
         if (result.getResult_code().equals(WechatUtil.WXTradeState.SUCCESS.getCode())) {
             orderService.refund(orderInfo, result);
         } else {

+ 15 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/OrderRefundController.java

@@ -6,7 +6,9 @@ import java.util.Map;
 import com.kmall.admin.entity.OrderRefundEntity;
 import com.kmall.admin.service.OrderRefundService;
 import com.kmall.admin.utils.ParamUtils;
+import com.kmall.common.constant.Dict;
 import com.kmall.common.entity.SysUserEntity;
+import com.kmall.common.service.SysUserService;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
@@ -28,6 +30,8 @@ import org.springframework.web.bind.annotation.*;
 public class OrderRefundController {
     @Autowired
     private OrderRefundService orderRefundService;
+    @Autowired
+    private SysUserService sysUserService;
 
     /**
      * 查看列表
@@ -41,6 +45,13 @@ public class OrderRefundController {
         Query query = new Query(params);
 
         List<OrderRefundEntity> orderRefundList = orderRefundService.queryList(query);
+        for (OrderRefundEntity entity: orderRefundList
+             ) {
+            if(entity.getIsOnfflineOrder().equalsIgnoreCase(Dict.isOnfflineOrder.item_1.getItem())) {
+                SysUserEntity sysUserEntity = sysUserService.queryObject(entity.getUserId().longValue());
+                entity.setUserName("操作店员:"+sysUserEntity.getUsername());
+            }
+        }
         int total = orderRefundService.queryTotal(query);
 
         PageUtils pageUtil = new PageUtils(orderRefundList, total, query.getLimit(), query.getPage());
@@ -57,6 +68,10 @@ public class OrderRefundController {
     public R info(@PathVariable("id") Integer id) {
         OrderRefundEntity orderRefund = orderRefundService.queryObject(id);
 
+        if(orderRefund.getIsOnfflineOrder().equalsIgnoreCase(Dict.isOnfflineOrder.item_1.getItem())) {
+            SysUserEntity sysUserEntity = sysUserService.queryObject(orderRefund.getUserId().longValue());
+            orderRefund.setUserName("操作店员:"+sysUserEntity.getUsername());
+        }
         return R.ok().put("orderRefund", orderRefund);
     }
 

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java

@@ -68,4 +68,6 @@ public interface OrderDao extends BaseDao<OrderEntity> {
     Double getTotalActualPrice(@Param("merchOrderSn")String merchOrderSn);
 
     List<OrderEntity> queryOffilineOrderList(Map<String, Object> map);
+
+    List<OrderEntity> queryObjectByMerchOrderSn(@Param("merchOrderSn")String merchOrderSn);
 }

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderRefundEntity.java

@@ -148,6 +148,16 @@ public class OrderRefundEntity implements Serializable {
      */
     private String rate;
 
+    private String isOnfflineOrder;
+
+    public String getIsOnfflineOrder() {
+        return isOnfflineOrder;
+    }
+
+    public void setIsOnfflineOrder(String isOnfflineOrder) {
+        this.isOnfflineOrder = isOnfflineOrder;
+    }
+
     public String getOrderSn() {
         return orderSn;
     }

+ 6 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -273,6 +273,12 @@ public class OrderServiceImpl
                 orderRefund.setOrderId(Integer.parseInt(order.getId() + ""));
                 orderRefund.setUserId(Integer.parseInt(order.getUserId() + ""));
                 orderRefund.setCreateTime(new Date());
+                List<OrderEntity> list = orderDao.queryObjectByMerchOrderSn(order.getMerchOrderSn());
+                if(list.size()>1){//多条订单
+                    orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_2.getItem()));//部分退款
+                }else{
+                    orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));//用户全额退款
+                }
                 orderRefundDao.save(orderRefund);//退款记录
             }
         }

+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/shop/orderrefund.html

@@ -10,7 +10,7 @@
         <Row :gutter="16">
             <div class="search-group">
                 <i-col span="4">
-                    <i-input v-model="q.userName" @on-enter="query" placeholder="名称"/>
+                    <i-input v-model="q.orderSn" @on-enter="query" placeholder="订单编号"/>
                 </i-col>
                 <i-button @click="query">查询</i-button>
                 <i-button @click="reloadSearch">重置</i-button>

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

@@ -135,7 +135,7 @@ $(function () {
                             htmlStr += '<button class="btn btn-outline btn-danger" onclick="vm.cancelUpdate(' + row.id + ')"><i class="fa fa-times-circle-o"></i>&nbsp;取消</button>&nbsp;';
                         }
                         if (row.orderStatus == 201) {
-                            if (row.isPaymentSend == 0 || row.isEleOrderSend == 0 || row.isCustomsSend == 0 || row.buyerPayCheck != 0) {
+                            if (row.isPaymentSend == 0 || row.isEleOrderSend == 0 || row.isCustomsSend == 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;';
                             }
                         }

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

@@ -4,7 +4,7 @@ $(function () {
         datatype: "json",
         colModel: [
 			{label: 'id', name: 'id', index: 'id', key: true, hidden: true},
-			{label: '订单编号', name: 'orderSn', index: 'order_sn', width: 80},
+			{label: '订单编号', name: 'orderSn', index: 'order_sn', width: 120},
 			{label: '用户名称', name: 'userName', index: 'username', width: 80},
 			{label: '商户退款单号', name: 'outRefundNo', index: 'out_refund_no', width: 80},
             {
@@ -49,7 +49,7 @@ $(function () {
                     return value;
                 }
             },
-			{label: '退款原因', name: 'refundReason', index: 'refund_reason', width: 200},
+			{label: '退款原因', name: 'refundReason', index: 'refund_reason', width: 140},
 			{label: '退款入账账户', name: 'refundRecvAccout', index: 'refund_recv_accout', width: 80, hidden: true},
 			{label: '审核人', name: 'approver', index: 'approver', width: 80, hidden: true},
 			{
@@ -110,7 +110,7 @@ var vm = new Vue({
 			]
 		},
 		q: {
-            userName: ''
+            orderSn: ''
 		}
 	},
 	methods: {
@@ -181,7 +181,7 @@ var vm = new Vue({
 		},
         reloadSearch: function() {
             vm.q = {
-                userName: ''
+                orderSn: ''
             }
             vm.reload();
 		},
@@ -189,7 +189,7 @@ var vm = new Vue({
 			vm.showList = 0;
             let page = $("#jqGrid").jqGrid('getGridParam', 'page');
 			$("#jqGrid").jqGrid('setGridParam', {
-                postData: {'userName': vm.q.userName},
+                postData: {'orderSn': vm.q.orderSn},
                 page: page
             }).trigger("reloadGrid");
             vm.handleReset('formValidate');

+ 13 - 4
kmall-api/src/main/java/com/kmall/api/api/ApiOrderController.java

@@ -417,10 +417,19 @@ public class ApiOrderController extends ApiBaseAction {
             if (null == orderInfo) {
                 return toResponsObject(400, "订单不存在", "");
             }
-//            OrderVo orderVo = new OrderVo();
-//            orderVo.setOrder_status(Integer.parseInt(Dict.orderStatus.item_400.getItem()));
-//            orderVo.setId(orderInfo.getId());
-//            orderService.update(orderVo);//修改状态为维权申请中
+            if (orderInfo.getOrder_status() == Integer.parseInt(Dict.orderStatus.item_401.getItem()) ||
+                    orderInfo.getOrder_status() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
+                return toResponsObject(400, "订单已退款", "");
+            }
+            OrderProcessRecordEntity processRecordEntity = orderProcessRecordService.queryObjectByOrderSn(orderInfo.getOrder_sn());
+            if(org.apache.commons.lang.StringUtils.isNotEmpty(processRecordEntity.getIsCustomsSend())) {
+                if (processRecordEntity.getIsCustomsSend().equalsIgnoreCase("2")) {
+                    return toResponsObject(400, "订单正在清关中,不能申请退款", "");
+                }
+                if (processRecordEntity.getIsCustomsSend().equalsIgnoreCase("1")) {
+                    return toResponsObject(400, "订单已清关完成,不能申请退款", "");
+                }
+            }
             MallOrderRefund mallOrderRefund = apiOrderRefundService.queryObjectByOrderId(orderInfo.getId()+"");
             MallOrderRefund orderRefund = new MallOrderRefund();
             orderRefund.setOrderId(Integer.parseInt(orderId));

+ 2 - 2
kmall-common/src/main/java/com/kmall/common/utils/MyBeanUtils.java

@@ -688,8 +688,8 @@ public class MyBeanUtils extends PropertyUtilsBean {
                                             new BigInteger(val.toString()));
                                 } else if ("Date".equals(
                                         paramType.getSimpleName())) {
-                                    m.invoke(obj, DateUtils.convertStringToDate(
-                                            val.toString(),DateUtils.DATE_PATTERN));
+                                    m.invoke(obj, DateUtils.strToDate(
+                                            val.toString()));
                                 } else if ("Short".equals(
                                         paramType.getSimpleName())) {
                                     m.invoke(obj,

+ 1 - 0
kmall-common/src/main/java/com/kmall/common/utils/wechat/WechatUtil.java

@@ -129,6 +129,7 @@ public class WechatUtil {
         String mapToXml = MapUtils.convertMap2Xml(params);
         //请求微信
         String reponseXml = sendRefundSSLPostToWx(mapToXml, WechatConfig.getSslcsf());
+        logger.info("-----------reponseXml : "+reponseXml);
         WechatRefundApiResult result =
                 (WechatRefundApiResult) XmlUtil.xmlStrToBean(reponseXml, WechatRefundApiResult.class);
         result.setOut_refund_no((String) params.get("out_refund_no"));

+ 2 - 0
kmall-schedule/src/main/java/com/kmall/schedule/dao/QzOrderMapper.java

@@ -40,6 +40,8 @@ public interface QzOrderMapper {
 
     void updateOrderInfo(Map param);
 
+    void updateOrderProcessRecord(Map param);
+
     List<Map> queryPayingOrderList();
 
     List<Map> queryShipmentOrderList();

+ 10 - 0
kmall-schedule/src/main/java/com/kmall/schedule/service/QzOrderService.java

@@ -612,6 +612,7 @@ public class QzOrderService {
         logger.info(">>>>>>>>>>>>>>>>>>>>wxOrderQuery 微信查询接口调用");
         String out_trade_no = MapUtils.getString("merch_order_sn", map);
         String orderId = MapUtils.getString("order_id", map);
+        String orderSn = MapUtils.getString("order_sn", map);
         String add_time = MapUtils.getString("add_time", map);
         Integer number = MapUtils.getInteger("number", map);
         Integer stock_num = MapUtils.getInteger("stock_num", map);
@@ -632,6 +633,10 @@ public class QzOrderService {
                     orderRaram.put("payTime", successTime);
                     orderRaram.put("orderId", orderId);
                     qzOrderMapper.updateOrderInfo(orderRaram);
+                    Map processParam = new HashMap();
+                    orderRaram.put("payTime", successTime);
+                    orderRaram.put("orderSn", orderSn);
+                    qzOrderMapper.updateOrderProcessRecord(processParam);
                 } else if (result.getTrade_state().equalsIgnoreCase(Dict.tradeState.item_NOTPAY.getItem())) {//订单未支付
                     Map orderRaram = new HashMap();
                     if (getDateBetween(addTime, nowDate) >= 15) {//订单下单时间超过15分钟直接取消订单
@@ -696,6 +701,7 @@ public class QzOrderService {
         logger.info(">>>>>>>>>>>>>>>>>>>>wxGlobalOrderQuery 微信查询接口调用");
         String out_trade_no = MapUtils.getString("merch_order_sn", map);
         String orderId = MapUtils.getString("order_id", map);
+        String orderSn = MapUtils.getString("order_sn", map);
         String add_time = MapUtils.getString("add_time", map);
         Integer number = MapUtils.getInteger("number", map);
         Integer stock_num = MapUtils.getInteger("stock_num", map);
@@ -721,6 +727,10 @@ public class QzOrderService {
                     orderRaram.put("cashFeeType", result.getCash_fee_type());//用户支付金额币种
                     orderRaram.put("rate", result.getRate());//汇率
                     qzOrderMapper.updateOrderInfo(orderRaram);
+                    Map processParam = new HashMap();
+                    orderRaram.put("payTime", successTime);
+                    orderRaram.put("orderSn", orderSn);
+                    qzOrderMapper.updateOrderProcessRecord(processParam);
                 } else if (result.getTrade_state().equalsIgnoreCase(Dict.tradeState.item_NOTPAY.getItem())) {//订单未支付
                     Map orderRaram = new HashMap();
                     if (getDateBetween(addTime, nowDate) >= 15) {//订单下单时间超过15分钟直接取消订单

+ 9 - 0
kmall-schedule/src/main/resources/mybatis/mapper/QzOrderMapper.xml

@@ -98,6 +98,15 @@
         AND a.id = #{orderId}
     </update>
 
+    <update id="updateOrderProcessRecord" parameterType="map">
+        UPDATE mall_order_process_record a
+        <set>
+            <if test="payTime != null">a.pay_succ_time = #{payTime}</if>
+        </set>
+        WHERE 1 = 1
+        AND a.order_sn = #{orderSn}
+    </update>
+
     <update id="updateOrderRefund" parameterType="map">
         UPDATE mall_order_refund a
         <set>

+ 1 - 1
wx-mall/pages/ucenter/orderDetail/orderDetail.wxml

@@ -28,7 +28,7 @@
           <view class="list-label week3" wx:if="{{orderInfo.order_status==201 && refundStatus == 3}}">
             您的退款申请订单已被拒绝,拒绝原因:{{approvalRemark}}
           </view>
-          <view class="list-label week4" style='margin-top:14rpx;' wx:if="{{orderInfo.buyerPayCheck==1}}">
+          <view class="list-label week4" style='margin-top:14rpx;' wx:if="{{orderInfo.buyerPayCheck==2}}">
             检测到您的订购人与支付人身份证与姓名不一致,请申请维权进行退款操作,保税商品订付人的身份信息必须一致再重新下单
           </view>
         </view>