1
0
Переглянути джерело

小程序订单退款前后端修改

hyq 6 роки тому
батько
коміт
599a5de6fc
70 змінених файлів з 1021 додано та 170 видалено
  1. 25 16
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java
  2. 3 0
      kmall-admin/src/main/java/com/kmall/admin/dao/MallOrderRefundDao.java
  3. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderExceptionRecordDao.java
  4. 188 0
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderExceptionRecordEntity.java
  5. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/MallOrderRefundService.java
  6. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderExceptionRecordService.java
  7. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/MallOrderRefundServiceImpl.java
  8. 58 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderExceptionRecordServiceImpl.java
  9. 13 14
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  10. 24 0
      kmall-admin/src/main/resources/mybatis/mapper/MallOrderRefundDao.xml
  11. 123 0
      kmall-admin/src/main/resources/mybatis/mapper/OrderExceptionRecordDao.xml
  12. 16 4
      kmall-api/src/main/java/com/kmall/api/api/ApiIndexController.java
  13. 65 4
      kmall-api/src/main/java/com/kmall/api/api/ApiOrderController.java
  14. 18 11
      kmall-api/src/main/java/com/kmall/api/api/ApiPayController.java
  15. 6 3
      kmall-api/src/main/java/com/kmall/api/contants/Dict.java
  16. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiFreightMapper.java
  17. 1 3
      kmall-api/src/main/java/com/kmall/api/dao/ApiMngChangeMapper.java
  18. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiOrderBuyerPayCheckMapper.java
  19. 1 4
      kmall-api/src/main/java/com/kmall/api/dao/ApiOrderExceptionRecordMapper.java
  20. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiOrderProcessRecordMapper.java
  21. 4 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiOrderRefundMapper.java
  22. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiPayerChildOrderRealMapper.java
  23. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiStoreGoodsGalleryMapper.java
  24. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiStoreMngChangeMapper.java
  25. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiStoreMngMapper.java
  26. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiSysExceptionRecordMapper.java
  27. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiSysParamMapper.java
  28. 1 1
      kmall-api/src/main/java/com/kmall/api/dao/ApiUserCollectionMapper.java
  29. 2 0
      kmall-api/src/main/java/com/kmall/api/dao/ApiUserMapper.java
  30. 22 1
      kmall-api/src/main/java/com/kmall/api/entity/OrderVo.java
  31. 2 2
      kmall-api/src/main/java/com/kmall/api/service/ApiFreightService.java
  32. 2 2
      kmall-api/src/main/java/com/kmall/api/service/ApiOrderBuyerPayCheckService.java
  33. 2 7
      kmall-api/src/main/java/com/kmall/api/service/ApiOrderExceptionRecordService.java
  34. 2 2
      kmall-api/src/main/java/com/kmall/api/service/ApiOrderProcessRecordService.java
  35. 48 0
      kmall-api/src/main/java/com/kmall/api/service/ApiOrderRefundService.java
  36. 13 6
      kmall-api/src/main/java/com/kmall/api/service/ApiOrderService.java
  37. 17 10
      kmall-api/src/main/java/com/kmall/api/service/ApiPayService.java
  38. 4 0
      kmall-api/src/main/java/com/kmall/api/service/ApiUserService.java
  39. 2 2
      kmall-api/src/main/java/com/kmall/api/service/PayerChildOrderRealService.java
  40. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiFreightMapper.xml
  41. 26 1
      kmall-api/src/main/resources/mybatis/mapper/ApiMallOrderRefundMapper.xml
  42. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiMngChangeMapper.xml
  43. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiOrderBuyerPayCheckDao.xml
  44. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiOrderExceptionRecordMapper.xml
  45. 4 3
      kmall-api/src/main/resources/mybatis/mapper/ApiOrderMapper.xml
  46. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiOrderProcessRecordMapper.xml
  47. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiPayerChildOrderRealMapper.xml
  48. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiStoreGoodsGalleryMapper.xml
  49. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiStoreMngChangeMapper.xml
  50. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiStoreMngMapper.xml
  51. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiSysExceptionRecordMapper.xml
  52. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiSysParamMapper.xml
  53. 1 1
      kmall-api/src/main/resources/mybatis/mapper/ApiUserCollectionMapper.xml
  54. 7 0
      kmall-api/src/main/resources/mybatis/mapper/ApiUserMapper.xml
  55. 2 1
      wx-mall/app.json
  56. 3 1
      wx-mall/config/api.js
  57. 15 15
      wx-mall/pages/ucenter/idCard/idCard.wxml
  58. 5 0
      wx-mall/pages/ucenter/index/index.js
  59. 7 3
      wx-mall/pages/ucenter/index/index.wxml
  60. 28 5
      wx-mall/pages/ucenter/index/index.wxss
  61. 13 2
      wx-mall/pages/ucenter/order/order.js
  62. 1 1
      wx-mall/pages/ucenter/order/order.json
  63. 19 6
      wx-mall/pages/ucenter/order/order.wxml
  64. 25 1
      wx-mall/pages/ucenter/order/order.wxss
  65. 20 5
      wx-mall/pages/ucenter/orderDetail/orderDetail.js
  66. 1 1
      wx-mall/pages/ucenter/orderDetail/orderDetail.json
  67. 21 9
      wx-mall/pages/ucenter/orderDetail/orderDetail.wxml
  68. 14 1
      wx-mall/pages/ucenter/orderDetail/orderDetail.wxss
  69. BIN
      wx-mall/static/images/service-dfh.png
  70. 33 1
      wx-mall/utils/util.js

+ 25 - 16
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -3,12 +3,13 @@ package com.kmall.admin.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.kmall.admin.entity.MallOrderRefundEntity;
 import com.kmall.admin.entity.OrderEntity;
+import com.kmall.admin.entity.OrderExceptionRecordEntity;
 import com.kmall.admin.service.MallOrderRefundService;
 import com.kmall.admin.entity.OrderProcessRecordEntity;
+import com.kmall.admin.service.OrderExceptionRecordService;
 import com.kmall.admin.service.OrderProcessRecordService;
 import com.kmall.admin.service.OrderService;
 import com.kmall.api.contants.Dict;
-import com.kmall.api.entity.MallOrderRefund;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
@@ -40,6 +41,9 @@ public class OrderController {
     @Autowired
     private MallOrderRefundService mallOrderRefundService;
 
+    @Autowired
+    private OrderExceptionRecordService orderExceptionRecordService;
+
     /**
      * 列表
      */
@@ -199,29 +203,34 @@ public class OrderController {
 
         if (null == orderInfo || orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_401.getItem())
                 || orderInfo.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_402.getItem())) {
-            return R.error("订单已取消");
+            return R.error("订单已退款");
         }
 
         if (orderInfo.getOrderStatus() != 0) {
             // todo
-//          WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
-//          orderInfo.getActualPrice().doubleValue(), refundMoney.doubleValue());
-            WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
+//                    WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
+//                orderInfo.getActualPrice().doubleValue(), refundMoney.doubleValue());
+            WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getMerchOrderSn().toString(),
                     0.01, 0.01);
             if (!result.getResult_code().equals("SUCCESS")) {
+                MallOrderRefundEntity mallOrderRefund = mallOrderRefundService.queryObjectByOrderId(orderInfo.getId()+"");
                 MallOrderRefundEntity orderRefund = new MallOrderRefundEntity();
-                orderRefund.setOrderId(Integer.parseInt(orderInfo.getId()+""));
-                orderRefund.setUserId(Integer.parseInt(orderInfo.getUserId()+""));
-                orderRefund.setRefundId(result.getRefund_id());
                 orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
-                orderRefund.setOutRefundNo(result.getOut_refund_no());
-                orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())));
-                orderRefund.setRefundTime(new Date());
+                orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().multiply(new BigDecimal(100)).doubleValue()));
                 orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_3.getItem()));
-                orderRefund.setRefundReason("退款失败"+result.getErr_code_des());
-                orderRefund.setCreateTime(new Date());
                 orderRefund.setModTime(new Date());
-                mallOrderRefundService.save(orderRefund);//退款记录
+                if(mallOrderRefund !=null){
+                    orderRefund.setId(mallOrderRefund.getId());
+                    mallOrderRefundService.update(orderRefund);//退款记录
+                }
+
+                OrderExceptionRecordEntity mallOrderExceptionRecord = new OrderExceptionRecordEntity();
+                mallOrderExceptionRecord.setUserId(Integer.parseInt(orderInfo.getUserId()+""));
+                mallOrderExceptionRecord.setOrderSn(orderInfo.getOrderSn());
+                mallOrderExceptionRecord.setExceptionStatus(Dict.exceptionStatus.item_03.getItem());
+                mallOrderExceptionRecord.setExceptionContent("退款失败"+result.getErr_code_des());
+                mallOrderExceptionRecord.setCreateTime(new Date());
+                orderExceptionRecordService.save(mallOrderExceptionRecord);
 
                 return R.error(result.getErr_code_des());
             }
@@ -260,8 +269,8 @@ public class OrderController {
             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(), refundMoney.doubleValue());
         WechatRefundApiResult result = WechatUtil.wxRefund(orderInfo.getOrderSn().toString(),
                 0.01, 0.01);
         if (result.getResult_code().equals("SUCCESS")) {

+ 3 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/MallOrderRefundDao.java

@@ -3,9 +3,12 @@ package com.kmall.admin.dao;
 import com.kmall.admin.entity.MallOrderRefundEntity;
 import com.kmall.api.entity.MallOrderRefund;
 import com.kmall.common.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
 
 @Component
 public interface MallOrderRefundDao extends BaseDao<MallOrderRefundEntity> {
     MallOrderRefundEntity selectByPrimaryKey(Integer id);
+
+    MallOrderRefundEntity queryObjectByOrderId(@Param("orderId") String orderId);
 }

+ 15 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderExceptionRecordDao.java

@@ -0,0 +1,15 @@
+package com.kmall.admin.dao;
+
+import com.kmall.admin.entity.OrderExceptionRecordEntity;
+import com.kmall.common.dao.BaseDao;
+
+/**
+ * 订单异常记录表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2018-10-31 17:15:22
+ */
+public interface OrderExceptionRecordDao extends BaseDao<OrderExceptionRecordEntity> {
+
+}

+ 188 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderExceptionRecordEntity.java

@@ -0,0 +1,188 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 订单异常记录表实体
+ * 表名 mall_order_exception_record
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2018-10-31 17:15:22
+ */
+public class OrderExceptionRecordEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private Integer id;
+    /**
+     * 订单编号
+     */
+    private String orderSn;
+    /**
+     * 用户编号
+     */
+    private Integer userId;
+    /**
+     * 异常信息
+     */
+    private String exceptionContent;
+    /**
+     * 异常状态 00订单支付失败01系统异常02订单超时03其他
+     */
+    private String exceptionStatus;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:编号
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 获取:编号
+     */
+    public Integer getId() {
+        return id;
+    }
+    /**
+     * 设置:订单编号
+     */
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    /**
+     * 获取:订单编号
+     */
+    public String getOrderSn() {
+        return orderSn;
+    }
+    /**
+     * 设置:用户编号
+     */
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 获取:用户编号
+     */
+    public Integer getUserId() {
+        return userId;
+    }
+    /**
+     * 设置:异常信息
+     */
+    public void setExceptionContent(String exceptionContent) {
+        this.exceptionContent = exceptionContent;
+    }
+
+    /**
+     * 获取:异常信息
+     */
+    public String getExceptionContent() {
+        return exceptionContent;
+    }
+    /**
+     * 设置:异常状态 00订单支付失败01系统异常02订单超时03其他
+     */
+    public void setExceptionStatus(String exceptionStatus) {
+        this.exceptionStatus = exceptionStatus;
+    }
+
+    /**
+     * 获取:异常状态 00订单支付失败01系统异常02订单超时03其他
+     */
+    public String getExceptionStatus() {
+        return exceptionStatus;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 2 - 0
kmall-admin/src/main/java/com/kmall/admin/service/MallOrderRefundService.java

@@ -18,4 +18,6 @@ public interface MallOrderRefundService {
     int save(MallOrderRefundEntity order);
 
     int update(MallOrderRefundEntity order);
+
+    MallOrderRefundEntity queryObjectByOrderId(String orderId);
 }

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderExceptionRecordService.java

@@ -0,0 +1,72 @@
+package com.kmall.admin.service;
+
+import com.kmall.admin.entity.OrderExceptionRecordEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 订单异常记录表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2018-10-31 17:15:22
+ */
+public interface OrderExceptionRecordService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param id 主键
+     * @return 实体
+     */
+    OrderExceptionRecordEntity queryObject(Integer id);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<OrderExceptionRecordEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param orderExceptionRecord 实体
+     * @return 保存条数
+     */
+    int save(OrderExceptionRecordEntity orderExceptionRecord);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param orderExceptionRecord 实体
+     * @return 更新条数
+     */
+    int update(OrderExceptionRecordEntity orderExceptionRecord);
+
+    /**
+     * 根据主键删除
+     *
+     * @param id
+     * @return 删除条数
+     */
+    int delete(Integer id);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param ids
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] ids);
+}

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/MallOrderRefundServiceImpl.java

@@ -37,4 +37,9 @@ public class MallOrderRefundServiceImpl implements MallOrderRefundService {
         return mallOrderRefundDao.update(mallOrderRefundEntity);
     }
 
+    @Override
+    public MallOrderRefundEntity queryObjectByOrderId(String orderId){
+        return mallOrderRefundDao.queryObjectByOrderId(orderId);
+    }
+
 }

+ 58 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderExceptionRecordServiceImpl.java

@@ -0,0 +1,58 @@
+package com.kmall.admin.service.impl;
+
+import com.kmall.admin.dao.OrderExceptionRecordDao;
+import com.kmall.admin.entity.OrderExceptionRecordEntity;
+import com.kmall.admin.service.OrderExceptionRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 订单异常记录表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2018-10-31 17:15:22
+ */
+@Service("orderExceptionRecordService")
+public class OrderExceptionRecordServiceImpl implements OrderExceptionRecordService {
+    @Autowired
+    private OrderExceptionRecordDao orderExceptionRecordDao;
+
+    @Override
+    public OrderExceptionRecordEntity queryObject(Integer id) {
+        return orderExceptionRecordDao.queryObject(id);
+    }
+
+    @Override
+    public List<OrderExceptionRecordEntity> queryList(Map<String, Object> map) {
+        return orderExceptionRecordDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return orderExceptionRecordDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(OrderExceptionRecordEntity orderExceptionRecord) {
+        return orderExceptionRecordDao.save(orderExceptionRecord);
+    }
+
+    @Override
+    public int update(OrderExceptionRecordEntity orderExceptionRecord) {
+        return orderExceptionRecordDao.update(orderExceptionRecord);
+    }
+
+    @Override
+    public int delete(Integer id) {
+        return orderExceptionRecordDao.delete(id);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]ids) {
+        return orderExceptionRecordDao.deleteBatch(ids);
+    }
+}

+ 13 - 14
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -76,16 +76,9 @@ public class OrderServiceImpl implements OrderService {
     @Override
     public void cancelOrder(OrderEntity order,WechatRefundApiResult result) {
         boolean needUpdateStock = true;
-        if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_300.getItem())) {
+        if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
             order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
-        } else if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_301.getItem())) {
-            order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_402.getItem()));
-        } else if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_201.getItem())) {
-            order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_401.getItem()));
-        } else {
-            order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_101.getItem()));
         }
-
         order.setPayStatus(Integer.parseInt(Dict.payStatus.item_4.getItem()));
 
         // 判断是否有优惠券
@@ -95,19 +88,25 @@ public class OrderServiceImpl implements OrderService {
         }
         orderDao.update(order);
 
+        MallOrderRefundEntity mallOrderRefund = mallOrderRefundDao.queryObjectByOrderId(order.getId()+"");
+
         MallOrderRefundEntity orderRefund = new MallOrderRefundEntity();
-        orderRefund.setOrderId(Integer.parseInt(order.getId()+""));
-        orderRefund.setUserId(Integer.parseInt(order.getUserId()+""));
         orderRefund.setRefundId(result.getRefund_id());
         orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
         orderRefund.setOutRefundNo(result.getOut_refund_no());
         orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())));
-        orderRefund.setRefundTime(new Date());
         orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
-        orderRefund.setRefundReason("");
-        orderRefund.setCreateTime(new Date());
         orderRefund.setModTime(new Date());
-        mallOrderRefundDao.save(orderRefund);//退款记录
+
+        if(mallOrderRefund !=null){
+            orderRefund.setId(mallOrderRefund.getId());
+            mallOrderRefundDao.update(orderRefund);
+        }else{
+            orderRefund.setOrderId(Integer.parseInt(order.getId()+""));
+            orderRefund.setUserId(Integer.parseInt(order.getUserId()+""));
+            orderRefund.setCreateTime(new Date());
+            mallOrderRefundDao.save(orderRefund);//退款记录
+        }
 
         if (!needUpdateStock) {
             return;

+ 24 - 0
kmall-admin/src/main/resources/mybatis/mapper/MallOrderRefundDao.xml

@@ -50,6 +50,30 @@
     where id = #{id}
   </select>
 
+  <select id="queryObjectByOrderId" resultType="com.kmall.admin.entity.MallOrderRefundEntity">
+    select
+    `id`,
+    `order_id`,
+    `user_id`,
+    `out_refund_no`,
+    `refund_id`,
+    `refund_type`,
+    `refund_time`,
+    `creator`,
+    `refund_money`,
+    `refund_status`,
+    `refund_reason`,
+    `approver`,
+    `approval_time`,
+    `approval_remark`,
+    `create_sn`,
+    `create_time`,
+    `moder_sn`,
+    `mod_time`,
+    `tstm`
+    from mall_order_refund
+    where order_id = #{orderId}
+  </select>
   <select id="queryList" resultType="com.kmall.admin.entity.MallOrderRefundEntity">
     select
     `id`,

+ 123 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderExceptionRecordDao.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.OrderExceptionRecordDao">
+
+    <resultMap type="com.kmall.admin.entity.OrderExceptionRecordEntity" id="orderExceptionRecordMap">
+        <result property="id" column="id"/>
+        <result property="orderSn" column="order_sn"/>
+        <result property="userId" column="user_id"/>
+        <result property="exceptionContent" column="exception_content"/>
+        <result property="exceptionStatus" column="exception_status"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.OrderExceptionRecordEntity">
+		select
+			`id`,
+			`order_sn`,
+			`user_id`,
+			`exception_content`,
+			`exception_status`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mall_order_exception_record
+		where id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.OrderExceptionRecordEntity">
+		select
+    		`id`,
+    		`order_sn`,
+    		`user_id`,
+    		`exception_content`,
+    		`exception_status`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mall_order_exception_record
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mall_order_exception_record
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.OrderExceptionRecordEntity" useGeneratedKeys="true" keyProperty="id">
+		insert into mall_order_exception_record(
+			`order_sn`,
+			`user_id`,
+			`exception_content`,
+			`exception_status`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{orderSn},
+			#{userId},
+			#{exceptionContent},
+			#{exceptionStatus},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.OrderExceptionRecordEntity">
+		update mall_order_exception_record 
+		<set>
+			<if test="orderSn != null">`order_sn` = #{orderSn}, </if>
+			<if test="userId != null">`user_id` = #{userId}, </if>
+			<if test="exceptionContent != null">`exception_content` = #{exceptionContent}, </if>
+			<if test="exceptionStatus != null">`exception_status` = #{exceptionStatus}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where id = #{id}
+	</update>
+	
+	<delete id="delete">
+		delete from mall_order_exception_record where id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mall_order_exception_record where id in 
+		<foreach item="id" collection="array" open="(" separator="," close=")">
+			#{id}
+		</foreach>
+	</delete>
+
+</mapper>

+ 16 - 4
kmall-api/src/main/java/com/kmall/api/api/ApiIndexController.java

@@ -6,6 +6,7 @@ import com.kmall.api.annotation.LoginUser;
 import com.kmall.api.entity.*;
 import com.kmall.api.service.*;
 import com.kmall.api.util.ApiBaseAction;
+import com.kmall.common.utils.RRException;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -126,18 +127,29 @@ public class ApiIndexController extends ApiBaseAction {
         Long userId = getUserId();
         String idNo = jsonParam.getString("idNo");
         String username = jsonParam.getString("userName");
-        // TODO: 2018/10/18 实名验证
-
+        UserVo user = apiUserService.queryObjectByIdNoAndName(idNo, username);
         UserVo userVo = new UserVo();
         userVo.setUsername(username);
         userVo.setIdNo(idNo);
         userVo.setId(userId);
         try {
-            apiUserService.update(userVo);
+            if(user != null){
+                if(loginUser.getId() == user.getId()){
+                    // TODO: 2018/10/18 实名认证身份证信息
+                    apiUserService.update(userVo);
+                    return toResponsMsgSuccess("实名绑定成功");
+                }else{
+                    return toResponsFail("该身份证信息已被绑定");
+                }
+            }else{
+                // TODO: 2018/10/18 实名认证身份证信息
+                apiUserService.update(userVo);
+                return toResponsMsgSuccess("实名绑定成功");
+
+            }
         }catch (Exception e){
             log.error("系统异常",e);
             return toResponsFail("系统异常");
         }
-        return toResponsMsgSuccess("实名绑定成功");
     }
 }

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

@@ -6,6 +6,7 @@ import com.google.common.collect.Maps;
 import com.kmall.api.annotation.IgnoreAuth;
 import com.kmall.api.annotation.LoginUser;
 import com.kmall.api.contants.Dict;
+import com.kmall.api.dao.ApiOrderRefundMapper;
 import com.kmall.api.entity.*;
 import com.kmall.api.service.*;
 import com.kmall.api.service.express.kdn.ApiKdniaoService;
@@ -20,10 +21,7 @@ import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 作者: @author Scott <br>
@@ -47,6 +45,8 @@ public class ApiOrderController extends ApiBaseAction {
     private ApiCommentService apiCommentService;
     @Autowired
     private ApiOrderProcessRecordService orderProcessRecordService;
+    @Autowired
+    private ApiOrderRefundService apiOrderRefundService;
 
     /**
      */
@@ -85,6 +85,17 @@ public class ApiOrderController extends ApiBaseAction {
         for (OrderVo item : orderEntityList) {
             Map orderGoodsParam = new HashMap();
             orderGoodsParam.put("order_id", item.getId());
+            if(item.getRefundStatus() !=null){
+                if(item.getRefundStatus().equalsIgnoreCase(Dict.RefundStatus.item_1.getItem()) ||
+                        item.getRefundStatus().equalsIgnoreCase(Dict.RefundStatus.item_2.getItem())){
+                    item.setIsRefundStatus(true);
+                }else{
+                    item.setIsRefundStatus(false);
+                }
+            }else{
+                item.setIsRefundStatus(false);
+            }
+
             //订单的商品
             List<OrderGoodsVo> goodsList = orderGoodsService.queryList(orderGoodsParam);
             Integer goodsCount = 0;
@@ -156,6 +167,12 @@ public class ApiOrderController extends ApiBaseAction {
             }
         }
         resultObj.put("wuliu", mapList != null && mapList.size() > 0 ? mapList.get(0) : null);
+
+        if(orderInfo.getOrder_status() == Integer.parseInt(Dict.orderStatus.item_401.getItem()) || orderInfo.getOrder_status() == Integer.parseInt(Dict.orderStatus.item_402.getItem()) ) {
+            MallOrderRefund refundInfo = apiOrderRefundService.queryObjectByOrderSn(String.valueOf(orderInfo.getId()));
+            resultObj.put("refundInfo", refundInfo);
+        }
+
         return toResponsSuccess(resultObj);
     }
 
@@ -322,4 +339,48 @@ public class ApiOrderController extends ApiBaseAction {
         resultObj.put("wuliu", map);
         return toResponsSuccess(resultObj);
     }
+
+    /**
+     * 申请退款
+     * @param loginUser
+     * @return
+     */
+    @PostMapping("saveApplyRefund")
+    public Object saveApplyRefund(@LoginUser UserVo loginUser) {
+        try {
+            JSONObject json = getJsonRequest();
+            String orderId = json.getString("orderId");
+            String refundReason = json.getString("refundReason");
+            OrderVo orderInfo = orderService.queryObject(Long.valueOf(orderId));
+            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);//修改状态为维权申请中
+
+            MallOrderRefund mallOrderRefund = apiOrderRefundService.queryObjectByOrderSn(orderInfo.getId()+"");
+
+            MallOrderRefund orderRefund = new MallOrderRefund();
+            orderRefund.setOrderId(Integer.parseInt(orderId));
+            orderRefund.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
+            orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
+            orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_1.getItem()));
+            orderRefund.setRefundReason(refundReason);
+            orderRefund.setModTime(new Date());
+            if(mallOrderRefund !=null){
+                orderRefund.setId(mallOrderRefund.getId());
+                apiOrderRefundService.update(orderRefund);
+            }else{
+                orderRefund.setCreateTime(new Date());
+                if (apiOrderRefundService.save(orderRefund)>0) {
+                    return toResponsMsgSuccess("退款申请成功");
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return toResponsFail("提交失败");
+    }
 }

+ 18 - 11
kmall-api/src/main/java/com/kmall/api/api/ApiPayController.java

@@ -3,8 +3,7 @@ package com.kmall.api.api;
 import com.kmall.api.annotation.IgnoreAuth;
 import com.kmall.api.annotation.LoginUser;
 import com.kmall.api.contants.Dict;
-import com.kmall.api.dao.MallOrderExceptionRecordMapper;
-import com.kmall.api.dao.MallOrderRefundMapper;
+import com.kmall.api.dao.ApiOrderRefundMapper;
 import com.kmall.api.entity.*;
 import com.kmall.api.service.*;
 import com.kmall.api.service.pay.wxpay.WxPayPropertiesBuilder;
@@ -46,7 +45,7 @@ public class ApiPayController extends ApiBaseAction {
     private ApiOrderExceptionRecordService apiOrderExceptionRecordService;
 
     @Autowired
-    private MallOrderRefundMapper mallOrderRefundMapper;
+    private ApiOrderRefundMapper mallOrderRefundMapper;
 
 
 
@@ -280,18 +279,26 @@ public class ApiPayController extends ApiBaseAction {
             apiPayService.refund(orderInfo,result,"");
             return toResponsObject(400, "成功退款", "");
         } else {
+            MallOrderRefund mallOrderRefund = mallOrderRefundMapper.queryObjectByOrderSn(orderInfo.getId()+"");
             MallOrderRefund orderRefund = new MallOrderRefund();
-            orderRefund.setOrderId(Integer.parseInt(orderInfo.getId()+""));
-            orderRefund.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
             orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
-            orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActual_price().doubleValue()));
-            orderRefund.setRefundTime(new Date());
+            orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActual_price().multiply(new BigDecimal(100)).doubleValue()));
             orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_3.getItem()));
-            orderRefund.setRefundReason("退款失败"+result.getErr_code_des());
-            orderRefund.setCreateTime(new Date());
             orderRefund.setModTime(new Date());
-            mallOrderRefundMapper.save(orderRefund);
-            return toResponsObject(400, "退款失败", "");
+            if(mallOrderRefund !=null){
+                orderRefund.setId(mallOrderRefund.getId());
+                mallOrderRefundMapper.update(orderRefund);
+            }
+
+            MallOrderExceptionRecord mallOrderExceptionRecord = new MallOrderExceptionRecord();
+            mallOrderExceptionRecord.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
+            mallOrderExceptionRecord.setOrderSn(orderInfo.getOrder_sn());
+            mallOrderExceptionRecord.setExceptionStatus(Dict.exceptionStatus.item_03.getItem());
+            mallOrderExceptionRecord.setExceptionContent("退款失败"+result.getErr_code_des());
+            mallOrderExceptionRecord.setCreateTime(new Date());
+            apiOrderExceptionRecordService.save(mallOrderExceptionRecord);
+
+            return toResponsObject(400, "退款失败"+result.getErr_code_des(), "");
         }
     }
 

+ 6 - 3
kmall-api/src/main/java/com/kmall/api/contants/Dict.java

@@ -334,7 +334,8 @@ public class Dict {
     }
 
     /**
-     * 订单状态: 0 订单创建成功等待付款, 101 订单已取消, 102 订单已删除,201 订单已付款,等待发货,300 订单已发货, 301 用户确认收货,401 没有发货,退款 402 已收货,退款退货
+     * 订单状态: 0 订单创建成功等待付款, 101 订单已取消, 102 订单已删除,201 订单已付款,等待发货,300 订单已发货, 301 用户确认收货,400 维权申请中
+     * 401 没有发货,退款 402 已收货,退款退货
      */
     public enum orderStatus {
         item_0("0", "订单创建成功等待付款"),
@@ -343,6 +344,7 @@ public class Dict {
         item_201("201", "订单已付款"),
         item_300("300", "订单已发货"),
         item_301("301", "用户确认收货"),
+//        item_400("400", "维权申请中"),
         item_401("401", "没有发货,退款"),
         item_402("402", "已收货,退款退货");
 
@@ -406,13 +408,14 @@ public class Dict {
     }
 
     /**
-     * 异常状态 00 订单支付失败 01 系统异常 02 订单超时 03 其他
+     * 异常状态 00 订单支付失败 01 系统异常 02 订单超时 03 订单退款失败 04 其他
      */
     public enum exceptionStatus {
         item_00("00", "订单支付失败"),
         item_01("01", "系统异常"),
         item_02("02", "订单超时"),
-        item_03("03", "其他");
+        item_03("03", "订单退款失败"),
+        item_04("04", "其他");
 
         private String item;
         private String itemName;

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/FreightMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiFreightMapper.java

@@ -13,7 +13,7 @@ import org.springframework.stereotype.Component;
  * @date 2018-10-22 17:20:31
  */
 @Component
-public interface FreightMapper extends BaseDao<FreightEntity> {
+public interface ApiFreightMapper extends BaseDao<FreightEntity> {
     FreightEntity queryObjectByGoodsId(@Param("goodsId") Long goodsId);
 
 }

+ 1 - 3
kmall-api/src/main/java/com/kmall/api/dao/MallMngChangeMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiMngChangeMapper.java

@@ -4,9 +4,7 @@ import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.MallMngChange;
 import com.kmall.common.dao.BaseDao;
 
-import java.util.List;
-
-public interface MallMngChangeMapper extends BaseDao<AddressVo> {
+public interface ApiMngChangeMapper extends BaseDao<AddressVo> {
 
     MallMngChange selectByPrimaryKey(Integer id);
 

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/OrderBuyerPayCheckMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiOrderBuyerPayCheckMapper.java

@@ -12,6 +12,6 @@ import org.springframework.stereotype.Component;
  * @date 2018-10-25 17:53:21
  */
 @Component
-public interface OrderBuyerPayCheckMapper extends BaseDao<OrderBuyerPayCheckEntity> {
+public interface ApiOrderBuyerPayCheckMapper extends BaseDao<OrderBuyerPayCheckEntity> {
 
 }

+ 1 - 4
kmall-api/src/main/java/com/kmall/api/dao/MallOrderExceptionRecordMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiOrderExceptionRecordMapper.java

@@ -1,14 +1,11 @@
 package com.kmall.api.dao;
 
-import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.MallOrderExceptionRecord;
 import com.kmall.common.dao.BaseDao;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-
 @Component
-public interface MallOrderExceptionRecordMapper  extends BaseDao<MallOrderExceptionRecord> {
+public interface ApiOrderExceptionRecordMapper extends BaseDao<MallOrderExceptionRecord> {
 
     MallOrderExceptionRecord selectByPrimaryKey(Integer id);
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/OrderProcessRecordMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiOrderProcessRecordMapper.java

@@ -15,7 +15,7 @@ import java.util.List;
  * @date 2018-10-25 17:48:30
  */
 @Component
-public interface OrderProcessRecordMapper extends BaseDao<OrderProcessRecordEntity> {
+public interface ApiOrderProcessRecordMapper extends BaseDao<OrderProcessRecordEntity> {
 
     void updateBatch(List<OrderProcessRecordEntity> list);
 

+ 4 - 1
kmall-api/src/main/java/com/kmall/api/dao/MallOrderRefundMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiOrderRefundMapper.java

@@ -2,9 +2,12 @@ package com.kmall.api.dao;
 
 import com.kmall.api.entity.MallOrderRefund;
 import com.kmall.common.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
 
 @Component
-public interface MallOrderRefundMapper  extends BaseDao<MallOrderRefund> {
+public interface ApiOrderRefundMapper extends BaseDao<MallOrderRefund> {
     MallOrderRefund selectByPrimaryKey(Integer id);
+
+    MallOrderRefund queryObjectByOrderSn(@Param("orderSn") String orderSn);
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/PayerChildOrderRealMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiPayerChildOrderRealMapper.java

@@ -10,6 +10,6 @@ import com.kmall.common.dao.BaseDao;
  * @email admin@qhdswl.com
  * @date 2018-10-11 14:38:15
  */
-public interface PayerChildOrderRealMapper extends BaseDao<PayerChildOrderRealEntity> {
+public interface ApiPayerChildOrderRealMapper extends BaseDao<PayerChildOrderRealEntity> {
 
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/MallStoreGoodsGalleryMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiStoreGoodsGalleryMapper.java

@@ -4,7 +4,7 @@ import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.MallStoreGoodsGallery;
 import com.kmall.common.dao.BaseDao;
 
-public interface MallStoreGoodsGalleryMapper  extends BaseDao<AddressVo> {
+public interface ApiStoreGoodsGalleryMapper extends BaseDao<AddressVo> {
 
     MallStoreGoodsGallery selectByPrimaryKey(Integer id);
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/MallStoreMngChangeMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiStoreMngChangeMapper.java

@@ -4,7 +4,7 @@ import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.MallStoreMngChange;
 import com.kmall.common.dao.BaseDao;
 
-public interface MallStoreMngChangeMapper extends BaseDao<AddressVo> {
+public interface ApiStoreMngChangeMapper extends BaseDao<AddressVo> {
 
     MallStoreMngChange selectByPrimaryKey(Integer id);
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/MallStoreMngMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiStoreMngMapper.java

@@ -4,6 +4,6 @@ import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.MallStoreMng;
 import com.kmall.common.dao.BaseDao;
 
-public interface MallStoreMngMapper extends BaseDao<AddressVo> {
+public interface ApiStoreMngMapper extends BaseDao<AddressVo> {
     MallStoreMng selectByPrimaryKey(Integer id);
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/SysExceptionRecordMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiSysExceptionRecordMapper.java

@@ -4,6 +4,6 @@ import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.SysExceptionRecord;
 import com.kmall.common.dao.BaseDao;
 
-public interface SysExceptionRecordMapper extends BaseDao<AddressVo> {
+public interface ApiSysExceptionRecordMapper extends BaseDao<AddressVo> {
     SysExceptionRecord selectByPrimaryKey(Integer id);
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/SysParamMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiSysParamMapper.java

@@ -4,7 +4,7 @@ import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.SysParam;
 import com.kmall.common.dao.BaseDao;
 
-public interface SysParamMapper extends BaseDao<AddressVo> {
+public interface ApiSysParamMapper extends BaseDao<AddressVo> {
 
     SysParam selectByPrimaryKey(Integer paramId);
 }

+ 1 - 1
kmall-api/src/main/java/com/kmall/api/dao/MallUserCollectionMapper.java → kmall-api/src/main/java/com/kmall/api/dao/ApiUserCollectionMapper.java

@@ -4,7 +4,7 @@ import com.kmall.api.entity.AddressVo;
 import com.kmall.api.entity.MallUserCollection;
 import com.kmall.common.dao.BaseDao;
 
-public interface MallUserCollectionMapper extends BaseDao<AddressVo> {
+public interface ApiUserCollectionMapper extends BaseDao<AddressVo> {
     MallUserCollection selectByPrimaryKey(Integer id);
 
 }

+ 2 - 0
kmall-api/src/main/java/com/kmall/api/dao/ApiUserMapper.java

@@ -37,4 +37,6 @@ public interface ApiUserMapper extends BaseDao<UserVo> {
     int saveSmsCodeLog(SmsLogVo smsLogVo);
 
     UserVo queryObject(Integer id);
+
+    UserVo queryObjectByIdNoAndName(@Param("idNo") String idNo,@Param("userName") String userName);
 }

+ 22 - 1
kmall-api/src/main/java/com/kmall/api/entity/OrderVo.java

@@ -161,6 +161,27 @@ public class OrderVo implements Serializable {
 
     private String storeName;
 
+    private Boolean isRefundStatus;
+
+    private String refundStatus;
+
+
+    public void setRefundStatus(String refundStatus) {
+        this.refundStatus = refundStatus;
+    }
+
+    public String getRefundStatus() {
+        return refundStatus;
+    }
+
+    public Boolean getIsRefundStatus() {
+        return isRefundStatus;
+    }
+
+    public void setIsRefundStatus(Boolean refundStatus) {
+        isRefundStatus = refundStatus;
+    }
+
     public String getStoreName() {
         return storeName;
     }
@@ -563,7 +584,7 @@ public class OrderVo implements Serializable {
                     order_status_text = "已取消";
                     break;
                 case 401:
-                    order_status_text = "已取消";
+                    order_status_text = "已退款";
                     break;
                 case 402:
                     order_status_text = "已退货";

+ 2 - 2
kmall-api/src/main/java/com/kmall/api/service/ApiFreightService.java

@@ -1,6 +1,6 @@
 package com.kmall.api.service;
 
-import com.kmall.api.dao.FreightMapper;
+import com.kmall.api.dao.ApiFreightMapper;
 import com.kmall.api.entity.FreightEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,7 +18,7 @@ import java.util.Map;
 @Service
 public class ApiFreightService {
     @Autowired
-    private FreightMapper freightDao;
+    private ApiFreightMapper freightDao;
 
     
     public FreightEntity queryObject(Integer id) {

+ 2 - 2
kmall-api/src/main/java/com/kmall/api/service/ApiOrderBuyerPayCheckService.java

@@ -1,6 +1,6 @@
 package com.kmall.api.service;
 
-import com.kmall.api.dao.OrderBuyerPayCheckMapper;
+import com.kmall.api.dao.ApiOrderBuyerPayCheckMapper;
 import com.kmall.api.entity.OrderBuyerPayCheckEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,7 +18,7 @@ import java.util.Map;
 @Service
 public class ApiOrderBuyerPayCheckService{
     @Autowired
-    private OrderBuyerPayCheckMapper orderBuyerPayCheckMapper;
+    private ApiOrderBuyerPayCheckMapper orderBuyerPayCheckMapper;
 
     
     public OrderBuyerPayCheckEntity queryObject(Integer id) {

+ 2 - 7
kmall-api/src/main/java/com/kmall/api/service/ApiOrderExceptionRecordService.java

@@ -1,15 +1,10 @@
 package com.kmall.api.service;
 
-import com.kmall.api.dao.MallOrderExceptionRecordMapper;
-import com.kmall.api.dao.OrderProcessRecordMapper;
+import com.kmall.api.dao.ApiOrderExceptionRecordMapper;
 import com.kmall.api.entity.MallOrderExceptionRecord;
-import com.kmall.api.entity.OrderProcessRecordEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Map;
-
 /**
  * 订单异常记录表Service实现类
  *
@@ -21,7 +16,7 @@ import java.util.Map;
 public class ApiOrderExceptionRecordService {
 
     @Autowired
-    private MallOrderExceptionRecordMapper mallOrderExceptionRecordMapper;
+    private ApiOrderExceptionRecordMapper mallOrderExceptionRecordMapper;
 
     public MallOrderExceptionRecord queryObject(Integer id) {
         return mallOrderExceptionRecordMapper.queryObject(id);

+ 2 - 2
kmall-api/src/main/java/com/kmall/api/service/ApiOrderProcessRecordService.java

@@ -1,6 +1,6 @@
 package com.kmall.api.service;
 
-import com.kmall.api.dao.OrderProcessRecordMapper;
+import com.kmall.api.dao.*;
 import com.kmall.api.entity.OrderProcessRecordEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,7 +18,7 @@ import java.util.Map;
 @Service
 public class ApiOrderProcessRecordService {
     @Autowired
-    private OrderProcessRecordMapper orderProcessRecordMapper;
+    private ApiOrderProcessRecordMapper orderProcessRecordMapper;
 
     public OrderProcessRecordEntity queryObject(Integer id) {
         return orderProcessRecordMapper.queryObject(id);

+ 48 - 0
kmall-api/src/main/java/com/kmall/api/service/ApiOrderRefundService.java

@@ -0,0 +1,48 @@
+package com.kmall.api.service;
+
+import com.kmall.api.dao.ApiOrderProcessRecordMapper;
+import com.kmall.api.dao.ApiOrderRefundMapper;
+import com.kmall.api.entity.MallOrderRefund;
+import com.kmall.api.entity.OrderProcessRecordEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 订单退款记录表Service实现类
+ *
+ * @author huangyaqin
+ * @email admin@qhdswl.com
+ * @date 2018-10-25 17:48:30
+ */
+@Service
+public class ApiOrderRefundService {
+    @Autowired
+    private ApiOrderRefundMapper orderRefundMapper;
+
+    public MallOrderRefund queryObject(Integer id) {
+        return orderRefundMapper.queryObject(id);
+    }
+
+    public List<MallOrderRefund> queryList(Map<String, Object> map) {
+        return orderRefundMapper.queryList(map);
+    }
+
+    public int queryTotal(Map<String, Object> map) {
+        return orderRefundMapper.queryTotal(map);
+    }
+
+    public int save(MallOrderRefund orderRefund) {
+        return orderRefundMapper.save(orderRefund);
+    }
+
+    public int update(MallOrderRefund orderRefund) {
+        return orderRefundMapper.update(orderRefund);
+    }
+    public MallOrderRefund queryObjectByOrderSn(String orderSn) {
+        return orderRefundMapper.queryObjectByOrderSn(orderSn);
+    }
+
+}

+ 13 - 6
kmall-api/src/main/java/com/kmall/api/service/ApiOrderService.java

@@ -56,7 +56,7 @@ public class ApiOrderService {
     @Autowired
     private ApiFreightService apiFreightService;
     @Autowired
-    private OrderProcessRecordMapper orderProcessRecordMapper;
+    private ApiOrderProcessRecordMapper orderProcessRecordMapper;
 
     public OrderVo queryObject(Long id) {
         return apiOrderMapper.queryObject(id);
@@ -124,7 +124,6 @@ public class ApiOrderService {
     public Map submit(JSONObject jsonParam, UserVo loginUser, Long storeId) {
         Map resultObj = new HashMap();
 
-        Integer userCouponId = jsonParam.getInteger("userCouponId");
         String formId = jsonParam.getString("formId");
         String idNo = jsonParam.getString("idNo");
         String userName = jsonParam.getString("userName");
@@ -132,14 +131,22 @@ public class ApiOrderService {
         String postscript02 = jsonParam.getString("postscript02");
         String postscript10 = jsonParam.getString("postscript10");
         String postscript11 = jsonParam.getString("postscript11");
-
-
-        // TODO: 2018/10/18 实名认证身份证信息,认证成功更新到用户表
+        UserVo user = apiUserMapper.queryObjectByIdNoAndName(idNo, userName);
         UserVo userVo = new UserVo();
         userVo.setId(loginUser.getId());
         userVo.setIdNo(idNo);
         userVo.setUsername(userName);
-        apiUserMapper.update(userVo);
+        if(user != null){
+            if(loginUser.getId() == user.getId()){
+                // TODO: 2018/10/18 实名认证身份证信息,认证成功更新到用户表
+                apiUserMapper.update(userVo);
+            }else{
+                throw new RRException("该身份证信息已被绑定");
+            }
+        }else{
+            // TODO: 2018/10/18 实名认证身份证信息,认证成功更新到用户表
+            apiUserMapper.update(userVo);
+        }
 
         //获取要购买的商品
         Map param = new HashMap();

+ 17 - 10
kmall-api/src/main/java/com/kmall/api/service/ApiPayService.java

@@ -42,13 +42,13 @@ public class ApiPayService {
     private PayerChildOrderRealService payerChildOrderRealService;
 
     @Autowired
-    private MallOrderExceptionRecordMapper mallOrderExceptionRecordMapper;
+    private ApiOrderExceptionRecordMapper mallOrderExceptionRecordMapper;
 
     @Autowired
-    private OrderProcessRecordMapper orderProcessRecordMapper;
+    private ApiOrderProcessRecordMapper orderProcessRecordMapper;
 
     @Autowired
-    private MallOrderRefundMapper mallOrderRefundMapper;
+    private ApiOrderRefundMapper mallOrderRefundMapper;
 
     @Autowired
     private ApiUserCouponMapper apiUserCouponMapper;
@@ -129,7 +129,7 @@ public class ApiPayService {
                     MallOrderExceptionRecord mallOrderExceptionRecord = new MallOrderExceptionRecord();
                     mallOrderExceptionRecord.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
                     mallOrderExceptionRecord.setOrderSn(orderInfo.getOrder_sn());
-                    mallOrderExceptionRecord.setExceptionStatus(Dict.exceptionStatus.item_03.getItem());
+                    mallOrderExceptionRecord.setExceptionStatus(Dict.exceptionStatus.item_04.getItem());
                     mallOrderExceptionRecord.setExceptionContent("微信支付回调返回的订单金额与商户订单金额不一致");
                     mallOrderExceptionRecord.setCreateTime(new Date());
                     mallOrderExceptionRecordMapper.save(mallOrderExceptionRecord);//支付订单异常记录
@@ -216,19 +216,26 @@ public class ApiPayService {
         }
         orderService.update(orderInfo);
 
+        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.queryObjectByOrderSn(orderInfo.getId()+"");
+
         MallOrderRefund orderRefund = new MallOrderRefund();
-        orderRefund.setOrderId(Integer.parseInt(orderInfo.getId()+""));
-        orderRefund.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
         orderRefund.setRefundId(result.getRefund_id());
         orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
         orderRefund.setOutRefundNo(result.getOut_refund_no());
         orderRefund.setRefundMoney(BigDecimal.valueOf(Long.valueOf(result.getRefund_fee())));
-        orderRefund.setRefundTime(new Date());
         orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_2.getItem()));
-        orderRefund.setRefundReason(reason);
-        orderRefund.setCreateTime(new Date());
         orderRefund.setModTime(new Date());
-        mallOrderRefundMapper.save(orderRefund);//退款记录
+
+        if(mallOrderRefund !=null){
+            orderRefund.setId(mallOrderRefund.getId());
+            mallOrderRefundMapper.update(orderRefund);
+        }else{
+            orderRefund.setOrderId(Integer.parseInt(orderInfo.getId()+""));
+            orderRefund.setUserId(Integer.parseInt(orderInfo.getUser_id()+""));
+            orderRefund.setRefundReason(reason);
+            orderRefund.setCreateTime(new Date());
+            mallOrderRefundMapper.save(orderRefund);//退款记录
+        }
 
         if (!needUpdateStock) {
             return;

+ 4 - 0
kmall-api/src/main/java/com/kmall/api/service/ApiUserService.java

@@ -98,4 +98,8 @@ public class ApiUserService {
         }
         return result;
     }
+
+    public UserVo queryObjectByIdNoAndName(String idNo,String userName){
+        return userDao.queryObjectByIdNoAndName(idNo, userName);
+    }
 }

+ 2 - 2
kmall-api/src/main/java/com/kmall/api/service/PayerChildOrderRealService.java

@@ -1,6 +1,6 @@
 package com.kmall.api.service;
 
-import com.kmall.api.dao.PayerChildOrderRealMapper;
+import com.kmall.api.dao.ApiPayerChildOrderRealMapper;
 import com.kmall.api.entity.PayerChildOrderRealEntity;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -18,7 +18,7 @@ import java.util.Map;
 @Service()
 public class PayerChildOrderRealService {
     @Autowired
-    private PayerChildOrderRealMapper payerChildOrderRealDao;
+    private ApiPayerChildOrderRealMapper payerChildOrderRealDao;
 
     
     public PayerChildOrderRealEntity queryObject(Integer id) {

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/FreightMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiFreightMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="com.kmall.api.dao.FreightMapper">
+<mapper namespace="com.kmall.api.dao.ApiFreightMapper">
 
     <resultMap type="com.kmall.api.entity.FreightEntity" id="freightMap">
         <result property="id" column="id"/>

+ 26 - 1
kmall-api/src/main/resources/mybatis/mapper/ApiMallOrderRefundMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="com.kmall.api.dao.MallOrderRefundMapper">
+<mapper namespace="com.kmall.api.dao.ApiOrderRefundMapper">
 
   <resultMap type="com.kmall.api.entity.MallOrderRefund" id="orderRefundMap">
     <result property="id" column="id"/>
@@ -50,6 +50,31 @@
     where id = #{id}
   </select>
 
+  <select id="queryObjectByOrderSn" resultType="com.kmall.api.entity.MallOrderRefund">
+    select
+    `id`,
+    `order_id`,
+    `user_id`,
+    `out_refund_no`,
+    `refund_id`,
+    `refund_type`,
+    `refund_time`,
+    `creator`,
+    `refund_money`,
+    `refund_status`,
+    `refund_reason`,
+    `approver`,
+    `approval_time`,
+    `approval_remark`,
+    `create_sn`,
+    `create_time`,
+    `moder_sn`,
+    `mod_time`,
+    `tstm`
+    from mall_order_refund
+    where order_id = #{orderSn}
+  </select>
+
   <select id="queryList" resultType="com.kmall.api.entity.MallOrderRefund">
     select
     `id`,

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/MallMngChangeMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiMngChangeMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.MallMngChangeMapper" >
+<mapper namespace="com.kmall.api.dao.ApiMngChangeMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.MallMngChange" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="change_num" property="changeNum" jdbcType="INTEGER" />

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/ApiOrderBuyerPayCheckDao.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="com.kmall.api.dao.OrderBuyerPayCheckMapper">
+<mapper namespace="com.kmall.api.dao.ApiOrderBuyerPayCheckMapper">
 
     <resultMap type="com.kmall.api.entity.OrderBuyerPayCheckEntity" id="orderBuyerPayCheckMap">
         <result property="id" column="id"/>

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/MallOrderExceptionRecordMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiOrderExceptionRecordMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.MallOrderExceptionRecordMapper" >
+<mapper namespace="com.kmall.api.dao.ApiOrderExceptionRecordMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.MallOrderExceptionRecord" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="order_sn" property="orderSn" jdbcType="VARCHAR" />

+ 4 - 3
kmall-api/src/main/resources/mybatis/mapper/ApiOrderMapper.xml

@@ -65,8 +65,8 @@
         <result column="merch_order_sn" property="merchOrderSn" jdbcType="VARCHAR" />
         <result column="is_scan" property="isScan" jdbcType="VARCHAR" />
         <result column="store_name" property="storeName" jdbcType="VARCHAR" />
-
-
+        <result property="isRefundStatus" column="isRefundStatus"/>
+        <result property="refundStatus" column="refund_status"/>
     </resultMap>
 
     <select id="queryObject" resultMap="orderMap">
@@ -84,10 +84,11 @@
     </select>
 
     <select id="queryList" resultMap="orderMap">
-        select a.*,b.latitude,b.longitude,s.store_name
+        select a.*,b.latitude,b.longitude,s.store_name,f.refund_status
         from mall_order a
         left join mall_address b on a.address_id = b.id
         left join mall_store s on a.store_id = s.id
+        left join mall_order_refund f on a.id = f.order_id
         <where>
             <if test="user_id != null">
                 and a.user_id = #{user_id}

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/ApiOrderProcessRecordMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="com.kmall.api.dao.OrderProcessRecordMapper">
+<mapper namespace="com.kmall.api.dao.ApiOrderProcessRecordMapper">
 
     <resultMap type="com.kmall.api.entity.OrderProcessRecordEntity" id="orderProcessRecordMap">
         <result property="id" column="id"/>

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/PayerChildOrderRealMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiPayerChildOrderRealMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
-<mapper namespace="com.kmall.api.dao.PayerChildOrderRealMapper">
+<mapper namespace="com.kmall.api.dao.ApiPayerChildOrderRealMapper">
 
     <resultMap type="com.kmall.api.entity.PayerChildOrderRealEntity" id="payerChildOrderRealMap">
         <result property="id" column="id"/>

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/MallStoreGoodsGalleryMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiStoreGoodsGalleryMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.MallStoreGoodsGalleryMapper" >
+<mapper namespace="com.kmall.api.dao.ApiStoreGoodsGalleryMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.MallStoreGoodsGallery" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="goods_id" property="goodsId" jdbcType="INTEGER" />

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/MallStoreMngChangeMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiStoreMngChangeMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.MallStoreMngChangeMapper" >
+<mapper namespace="com.kmall.api.dao.ApiStoreMngChangeMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.MallStoreMngChange" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="store_change_num" property="storeChangeNum" jdbcType="INTEGER" />

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/MallStoreMngMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiStoreMngMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.MallStoreMngMapper" >
+<mapper namespace="com.kmall.api.dao.ApiStoreMngMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.MallStoreMng" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="mall_store_id" property="mallStoreId" jdbcType="INTEGER" />

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/SysExceptionRecordMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiSysExceptionRecordMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.SysExceptionRecordMapper" >
+<mapper namespace="com.kmall.api.dao.ApiSysExceptionRecordMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.SysExceptionRecord" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="exception_info" property="exceptionInfo" jdbcType="VARCHAR" />

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/SysParamMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiSysParamMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.SysParamMapper" >
+<mapper namespace="com.kmall.api.dao.ApiSysParamMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.SysParam" >
     <id column="param_id" property="paramId" jdbcType="INTEGER" />
     <result column="param_name" property="paramName" jdbcType="VARCHAR" />

+ 1 - 1
kmall-api/src/main/resources/mybatis/mapper/MallUserCollectionMapper.xml → kmall-api/src/main/resources/mybatis/mapper/ApiUserCollectionMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
-<mapper namespace="com.kmall.api.dao.MallUserCollectionMapper" >
+<mapper namespace="com.kmall.api.dao.ApiUserCollectionMapper" >
   <resultMap id="BaseResultMap" type="com.kmall.api.entity.MallUserCollection" >
     <id column="id" property="id" jdbcType="INTEGER" />
     <result column="user_id" property="userId" jdbcType="INTEGER" />

+ 7 - 0
kmall-api/src/main/resources/mybatis/mapper/ApiUserMapper.xml

@@ -39,6 +39,13 @@
         where id = #{id}
     </select>
 
+    <select id="queryObjectByIdNoAndName" resultMap="BaseResultMap" >
+        select
+        <include refid="Base_Column_List" />
+        from mall_user
+        where id_no = #{idNo} and username = #{userName}
+    </select>
+
     <select id="queryByOpenId" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List" />

+ 2 - 1
wx-mall/app.json

@@ -49,7 +49,8 @@
     "pages/auth/btnAuth/btnAuth",
     "pages/ucenter/wuliu/wuliu",
     "pages/ucenter/wuliuwebview/wuliuwebview",
-    "pages/ucenter/idCard/idCard"
+    "pages/ucenter/idCard/idCard",
+    "pages/ucenter/applyRefund/applyRefund"
   ],
   "window": {
     "backgroundTextStyle": "dark",

+ 3 - 1
wx-mall/config/api.js

@@ -56,7 +56,8 @@ module.exports = {
 
     OrderSubmit: NewApiRootUrl + 'order/submit', // 提交订单
     PayPrepayId: NewApiRootUrl + 'pay/pay_prepay', //获取微信统一下单prepay_id
-
+    refund: NewApiRootUrl + 'pay/refund', //订单申请退款
+  
     CheckStore: NewApiRootUrl + 'address/checkStore', //下单前,门店校验
 
     CollectList: NewApiRootUrl + 'collect/list',  //收藏列表
@@ -131,5 +132,6 @@ module.exports = {
   GetLogistics: NewApiRootUrl + 'order/getLogistics',  //查询物流信息
   getCheckedDataByType: NewApiRootUrl + 'cart/getCheckedDataByType',  //校验该业务类型的购物车数据
   idCardRealName: NewApiRootUrl + 'index/idCardRealName', //身份证实名
+  saveApplyRefund: NewApiRootUrl + 'order/saveApplyRefund', //申请维权
 
 };

+ 15 - 15
wx-mall/pages/ucenter/idCard/idCard.wxml

@@ -1,20 +1,20 @@
 <form bindsubmit="saveIdCard" report-submit='true'>
-<view class="add-idCard">
-  <view class="add-form">
-  <text class='id-card-txt'>身份证信息用于跨境商品入境申报,请输入购买者姓名和身份证号码一致的身份证信息确保正常清关;姓名需要与身份证信息一致。</text>
-    <view class="form-item">
-      <label>身份证号:</label>
-      <input class="input" bindinput="bindinputUserName" name='idNo' placeholder="身份证" value="{{idNoM}}" auto-focus/>
+  <view class="add-idCard">
+    <view class="add-form">
+    <text class='id-card-txt'>身份证信息用于跨境商品入境申报,请输入购买者姓名和身份证号码一致的身份证信息确保正常清关;姓名需要与身份证信息一致。</text>
+      <view class="form-item">
+        <label>身份证号:</label>
+        <input class="input" bindinput="bindinputUserName" name='idNo' placeholder="身份证" value="{{idNoM}}" auto-focus/>
+      </view>
+      <view class="form-item">
+        <label>姓名:</label>
+        <input class="input" bindinput="bindinputTelNumber" name='username' value="{{curUser.username}}" placeholder="姓名" />
+      </view>
     </view>
-    <view class="form-item">
-      <label>姓名:</label>
-      <input class="input" bindinput="bindinputTelNumber" name='username' value="{{curUser.username}}" placeholder="姓名" />
+
+    <view class="btns">
+      <button class="save" form-type="submit">保存</button>
     </view>
-  </view>
 
-  <view class="btns">
-    <button class="save" form-type="submit">保存</button>
   </view>
-
-</view>
-  </form>
+</form>

+ 5 - 0
wx-mall/pages/ucenter/index/index.js

@@ -76,6 +76,11 @@ Page({
       console.log(err)
     });
   },
+  allOrder() {
+    wx.navigateTo({
+      url: '/pages/ucenter/order/order'
+    })
+  },
   exitLogin: function () {
     wx.showModal({
       title: '',

+ 7 - 3
wx-mall/pages/ucenter/index/index.wxml

@@ -9,6 +9,10 @@
       <view class="userinfo-nickname">{{userInfo.nickName}}</view>
       <view class="userlevel" wx:if="{{userInfo.nickName!='点击头像登录'}}">{{curUser.userLevel}}</view>
     </view>
+  <view class="item-all" bindtap='allOrder'>
+      <text class="txt">全部订单</text>
+      <text class="txt2">查看全部订单 ></text>
+  </view>
   <view class="order-menu">
     <view class="item">
       <navigator url="/pages/ucenter/order/order?tabIndex=1" class="a">
@@ -20,7 +24,7 @@
     <view class="item">
       <navigator url="/pages/ucenter/order/order?tabIndex=2" class="a">
         <view class="unPayment-num" wx:if="{{unPaymentNum>0}}">{{unPaymentNum}}</view>
-        <text class="icon unpay"></text>
+        <image class="icon unPayment" src="../../../static/images/service-dfh.png" ></image>
         <text class="txt">待发货</text>
       </navigator>
     </view>
@@ -39,9 +43,9 @@
       </navigator>
     </view>
     <view class="item">
-      <navigator url="/pages/ucenter/order/order" class="a">
+      <navigator url="/pages/ucenter/order/order?tabIndex=5" class="a">
         <text class="icon order"></text>
-        <text class="txt">全部订单</text>
+        <text class="txt">维权</text>
       </navigator>
     </view>
   </view>

+ 28 - 5
wx-mall/pages/ucenter/index/index.wxss

@@ -57,7 +57,26 @@ page {
   font-size: 16px;
   color: red;
 }
-
+.item-all {
+  width: 100%;
+  height: 50rpx;
+  line-height: 50rpx;
+  overflow: hidden;
+  background: #fff;
+  display: flex;
+  margin-bottom: 5rpx;
+  
+}
+.item-all .txt {
+  font-size: 26rpx;
+  margin-left: 30rpx;
+}
+.item-all .txt2 {
+  font-size: 26rpx;
+  margin-left: 430rpx;
+  text-align: right;
+  color: #ccc;
+}
 .order-menu {
   width: 100%;
   height: 145.5rpx;
@@ -91,20 +110,24 @@ page {
   height: 30rpx;
   line-height: 30rpx;
   text-align: center;
-  top: 366rpx;
+  top: 416rpx;
   left: 120rpx;
   background-color: #ff8902;
   color: #fff;
   border-radius: 50%;
   font-size: 20rpx;
 }
+.order-menu .icon.unPayment {
+  width: 52.803rpx;
+  height: 52.803rpx;
+}
 .order-menu .item .unPayment-num {
   position: absolute;
   width: 30rpx;
   height: 30rpx;
   line-height: 30rpx;
   text-align: center;
-  top: 366rpx;
+  top: 416rpx;
   left: 265rpx;
   background-color: #ff8902;
   color: #fff;
@@ -117,7 +140,7 @@ page {
   height: 30rpx;
   line-height: 30rpx;
   text-align: center;
-  top: 366rpx;
+  top: 416rpx;
   left: 416rpx;
   background-color: #ff8902;
   color: #fff;
@@ -130,7 +153,7 @@ page {
   height: 30rpx;
   line-height: 30rpx;
   text-align: center;
-  top: 366rpx;
+  top: 416rpx;
   left: 570rpx;
   background-color: #ff8902;
   color: #fff;

+ 13 - 2
wx-mall/pages/ucenter/order/order.js

@@ -9,7 +9,7 @@ Page({
         page: 1,
         size: 10,
         totalPages:0,
-        tabList: ['全部', '待付款', '待发货', '待收货', '待评价'],
+        tabList: ['全部', '待付款', '待发货', '待收货', '待评价', '维权'],
         tabIndex: 0,
         orderIds:[],
         currentStoreId: ''
@@ -86,7 +86,13 @@ Page({
           url: '/pages/pay/pay?orderIds=' + event.target.dataset.orderId
                 + '&actualPrice=' + event.target.dataset.actualPrice
         })
-    },
+  }, 
+  applyRefund(event) {
+    wx.navigateTo({
+      url: '/pages/ucenter/applyRefund/applyRefund?orderId=' + event.target.dataset.orderId
+        + '&refundMoney=' + event.target.dataset.actualPrice
+    })
+  }, 
     againBuy(event) {
       let orderId = event.target.dataset.orderId;
       // let goodType = event.target.dataset.goodType;
@@ -157,6 +163,11 @@ Page({
             order_status: 301,
             evaluate_status: 0,
           });
+        } else if (tabIndex == 5) {
+          that.setData({
+            order_status: 401,
+            evaluate_status: 0,
+          });
         }
         that.getOrderList();
     },

+ 1 - 1
wx-mall/pages/ucenter/order/order.json

@@ -1,3 +1,3 @@
 {
-  "onReachBottomDistance": 50
+  "navigationBarTitleText": "订单列表"
 }

+ 19 - 6
wx-mall/pages/ucenter/order/order.wxml

@@ -23,7 +23,7 @@
             <text class="biz-type" wx:if="{{item.orderBizType==11}}">{{item.storeName}} - 普通商品</text> 
             
             <!-- <text class="add_time">{{item.add_time}}{{orderList[0].id}}</text> -->
-            <text class="add_time">{{item.order_status_text}}</text>
+            <text class="add_time" wx:if="{{tabIndex!=5}}">{{item.order_status_text}}</text>
           </view>
         </view>
         <view class="list-cell-ft router">
@@ -37,7 +37,7 @@
           </navigator>
         </view>
         <view class="list-cell-bd">
-          <navigator url="../orderDetail/orderDetail?id={{item.id}}">
+          <navigator url="../orderDetail/orderDetail?id={{item.id}}&&tabIndex={{tabIndex}}&&isRefundStatus={{item.isRefundStatus}}">
             <view class="order-details">
               <view class="order-details-cell" wx:if="{{ index < 4 }}" wx:for="{{item.goodsList}}" wx:for-item="cell" wx:key="{{index}}">
                 <text class="name">{{cell.goods_name}}</text>
@@ -54,15 +54,28 @@
         </view>
       </view>
       <!-- 订单配送中 -->
-      <view class="list-cell" wx:if="{{item.order_status==300}}">
+      <!-- <view class="list-cell" wx:if="{{item.order_status==300}}">
         <map id="map" longitude="{{item.markers[0].longitude}}" latitude="{{item.markers[0].latitude}}" show-location include-points markers="{{item.markers}}" style="width: 100%; height: 30vh;z-index: 600"></map>
+      </view> -->
+      
+      <view class="list-cell-tk" wx:if="{{tabIndex ==5 || (item.order_status == 401 || item.order_status == 402)}}">
+        <text style='font-size: 26rpx;'>
+        {{item.order_status == 401?"仅退款 退款成功":""}}
+        {{item.order_status == 402?"退货退款 退款成功":""}}
+        </text>
+      </view>
+      <view class="list-cell-wq" wx:if="{{item.order_status == 201 && item.isRefundStatus}}">
+        <text class='names'>
+        维权申请中
+        </text>
       </view>
 
       <view class="list-cell">
         <view class="btn-box">
-          <button class="{{item.orderBizType==00 && currentStoreId == item.store_id?'btn':'btn-disabel'}}" data-order-id="{{item.id}}" data-goods-type="{{item.orderBizType}}" data-is-Store='{{currentStoreId == item.store_id}}' catchtap="{{item.orderBizType==00 && currentStoreId == item.store_id ?'againBuy':'againBuyDisabel'}}">再来一单</button>
-          <button class="btn" wx:if="{{item.order_status==300}}" data-shipping-No="{{item.shipping_no}}" data-shipping-Code="{{item.shipping_code}}" data-order-id="{{item.id}}"  catchtap="getWuliuList">查看物流</button>
-          <button class="btn" data-actual-price="{{item.actual_price}}" data-order-id="{{item.id}}" data-order-index="{{index}}" catchtap="payOrder" wx:if="{{item.handleOption.pay && item.dateformat}}">去付款 {{item.dateformat.min}}{{item.dateformat?':':''}}{{item.dateformat.sec}}</button>
+          <button wx:if="{{tabIndex != 5}}" class="{{item.orderBizType==00 && currentStoreId == item.store_id?'btn':'btn-disabel'}}" data-order-id="{{item.id}}" data-goods-type="{{item.orderBizType}}" data-is-Store='{{currentStoreId == item.store_id}}' catchtap="{{item.orderBizType==00 && currentStoreId == item.store_id ?'againBuy':'againBuyDisabel'}}">再来一单</button>
+          <button class="btn" wx:if="{{item.order_status==300 && tabIndex != 5}}" data-shipping-No="{{item.shipping_no}}" data-shipping-Code="{{item.shipping_code}}" data-order-id="{{item.id}}"  catchtap="getWuliuList">查看物流</button>
+          <button class="btn" data-actual-price="{{item.actual_price}}" data-order-id="{{item.id}}" data-order-index="{{index}}" catchtap="payOrder" wx:if="{{item.handleOption.pay && item.dateformat && tabIndex != 5}}">去付款 {{item.dateformat.min}}{{item.dateformat?':':''}}{{item.dateformat.sec}}</button>
+          <button wx:if="{{item.order_status==201 && tabIndex != 5 && !item.isRefundStatus}}" class="btn" data-order-Id="{{item.id}}" data-actual-Price="{{item.actual_price}}" data-is-Store='{{currentStoreId == item.store_id}}' catchtap="applyRefund">申请维权</button>
         </view>
       </view>
     </view>

+ 25 - 1
wx-mall/pages/ucenter/order/order.wxss

@@ -13,7 +13,8 @@ page {
 .add_time{
   font-size: 0.9em;
   color: red;
-  padding-left: 280rpx;
+  float: right;
+  margin-top: 8rpx;
 
 }
 
@@ -117,3 +118,26 @@ page {
   margin-top: 20rpx; */
   margin-bottom: -8rpx;
 }
+.list-cell-tk{
+  padding:5px 20px;
+  position: relative;
+  display: flex;
+  align-items: center;
+  height:40rpx;
+}
+.list-cell-wq{
+  padding:5px 20px;
+  position: relative;
+  display: flex;
+  align-items: center;
+  width: 300rpx;
+  height: 0rpx;
+  line-height: 0rpx;
+  margin-left:550rpx;
+  margin-bottom:16px;
+}
+.list-cell-wq .names{
+  font-size:14px;
+  color:#FE7200;
+}
+

+ 20 - 5
wx-mall/pages/ucenter/orderDetail/orderDetail.js

@@ -8,13 +8,22 @@ Page({
     orderGoods: [],
     handleOption: {},
     wuliu: {},
-    currentStoreId: ''
+    currentStoreId: '',
+    tabIndex: 0,
+    refundInfo: {},
+    createTime: '',
+    refundTime:'',
+    isRefundStatus: ''//true :申请中; false :已退款
   },
   onLoad: function (options) {
     // 页面初始化 options为页面跳转所带来的参数
-    this.setData({
-      orderId: options.id
+    let that = this;
+    that.setData({
+      orderId: options.id,
+      tabIndex: options.tabIndex,
+      isRefundStatus: options.isRefundStatus
     });
+    console.log(that.data.isRefundStatus);
   },
   getOrderDetail() {
     let that = this;
@@ -22,13 +31,20 @@ Page({
       orderId: that.data.orderId
     }).then(function (res) {
       if (res.errno === 0) {
-        console.log(res.data);
+        // console.log(res.data);
         that.setData({
           orderInfo: res.data.orderInfo,
           orderGoods: res.data.orderGoods,
           handleOption: res.data.handleOption,
           wuliu: res.data.wuliu
         });
+        if (that.data.orderInfo.order_status == 401 || that.data.orderInfo.order_status == 402) {
+          that.setData({
+            refundInfo: res.data.refundInfo,
+            createTime: util.tsFormatTime(res.data.refundInfo.createTime, 'Y-M-D h:m:s'),
+            refundTime: util.tsFormatTime(res.data.refundInfo.refundTime, 'Y-M-D h:m:s')
+          });
+        }
         if (that.data.orderInfo.order_status == 0) {
           wx.setNavigationBarTitle({ title: "待支付" });
         }
@@ -55,7 +71,6 @@ Page({
     this.setData({
       currentStoreId: wx.getStorageSync('storeId')
     });
-    console.log(this.data.currentStoreId);
   },
   onHide: function () {
     // 页面隐藏

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

@@ -1,3 +1,3 @@
 {
-    
+  "navigationBarTitleText": "订单详情"    
 }

+ 21 - 9
wx-mall/pages/ucenter/orderDetail/orderDetail.wxml

@@ -18,8 +18,9 @@
             {{orderInfo.order_status==101?"您的订单已取消":""}}
             {{orderInfo.order_status==201?"您的订单已付款":""}}
             {{orderInfo.order_status==300?"您的订单已发货":""}}   
-            {{orderInfo.order_status==401 || orderInfo.order_status==402?"您的订单已退款":""}}       
+            {{orderInfo.order_status==401 || orderInfo.order_status==402?"您的订单已退款":""}}
           </view>
+          
         </view>
       </view>
     </view>
@@ -103,13 +104,17 @@
       <view class="list-cell-ft week">
         合计
         <text class="orange">¥{{orderInfo.actual_price}}</text>
-        <view class="refund" wx:if="{{ orderInfo.order_status == 201 }}" bindtap="refund">退款</view>
+        <!-- <view class="refund" wx:if="{{ orderInfo.order_status == 201 }}" bindtap="refund">退款</view> --> 
+            <view class="refund"  wx:if='{{ orderInfo.order_status==201 && isRefundStatus =="true"}}'>维权申请中</view>      
+        
       </view>
     </view>
   </view>
 
-  <view class="order-info">
+  <view class="order-info" wx:if="{{tabIndex != 5}}">
     <view class="item-a">下单时间:{{orderInfo.add_time}}</view>
+    <view class="item-a" wx:if="{{orderInfo.pay_time}}">付款时间:{{orderInfo.pay_time}}</view>
+    <view class="item-a" wx:if="{{orderInfo.confirm_time}}">成交时间:{{orderInfo.confirm_time}}</view>
     <view class="item-b">订单编号:{{orderInfo.order_sn}}</view>
     <view class="item-c">
       <view class="l">实付:
@@ -119,7 +124,14 @@
     </view>
   </view>
 
-  <view class="list-group2 goods-info">
+  <view class="order-info" wx:if="{{tabIndex == 5}}">
+    <view class="item-a">退款时间:{{refundTime}}</view>
+    <view class="item-b">退款金额:¥{{refundInfo.refundMoney}}</view>
+    <view class="item-b">申请时间:{{createTime}}</view>
+    <view class="item-b">退款编号:{{refundInfo.refundId}}</view>
+  </view>
+
+  <view class="list-group2 goods-info" wx:if="{{tabIndex != 5}}">
     <view class="list-cell">
       <view class="list-cell-bd">
         <view class="list-label strong">送达信息</view>
@@ -153,11 +165,11 @@
         <view class="btn" wx:if="{{ handleOption.comment==true }}" bindtap="postComment">发表评价</view>
         <view class="btn" wx:if="{{ orderInfo.comment_count > 0 }}" bindtap="lookComment">查看评价</view>
       </view> -->
-  <view class="btns">
+  <view class="btns" wx:if="{{tabIndex != 5}}">
     <view class="cannel" wx:if="{{ handleOption.cancel==true && orderInfo.order_type == '1'}}" bindtap="cancelOrder">取消订单</view>
-    <view class="save" wx:if="{{ handleOption.pay==true && orderInfo.dateformat }}" bindtap="payOrder">去付款 {{orderInfo.dateformat.min}}{{orderInfo.dateformat?':':''}}{{orderInfo.dateformat.sec}}</view>
-    <view class="save" wx:if="{{ handleOption.confirm==true }}" bindtap="confirmOrder">确认收货</view>
-    <view class="save" wx:if="{{ handleOption.comment==true }}" bindtap="postComment">发表评价</view>
-    <view class="save" wx:if="{{ orderInfo.comment_count > 0 }}" bindtap="lookComment">查看评价</view>
+    <view class="save" wx:if="{{ handleOption.pay==true && orderInfo.dateformat}}" bindtap="payOrder">去付款 {{orderInfo.dateformat.min}}{{orderInfo.dateformat?':':''}}{{orderInfo.dateformat.sec}}</view>
+    <view class="save" wx:if="{{ handleOption.confirm==true}}" bindtap="confirmOrder">确认收货</view>
+    <view class="save" wx:if="{{ handleOption.comment==true}}" bindtap="postComment">发表评价</view>
+    <view class="save" wx:if="{{ orderInfo.comment_count > 0}}" bindtap="lookComment">查看评价</view>
   </view>
 </view>

+ 14 - 1
wx-mall/pages/ucenter/orderDetail/orderDetail.wxss

@@ -14,6 +14,17 @@ page {
 .orange {
   color: #fe7200;
 }
+.orange2{
+  
+  height: 40rpx;
+  text-align: center;
+  line-height: 40rpx;
+  font-size: 28rpx;
+  color: #fff;
+  border: none;
+  border-radius: 30rpx;
+  background: #f79e1a;
+}
 
 .order-info {
   margin-top: 20rpx;
@@ -418,11 +429,13 @@ page {
   height: 40rpx;
   text-align: center;
   line-height: 40rpx;
-  font-size: 28rpx;
+  font-size: 24rpx;
   color: #fff;
   border: none;
   border-radius: 30rpx;
   background: #f79e1a;
+  display: block;
+  width: 130rpx;
 }
 .list-group2 {
   margin-top: 0.6em;

BIN
wx-mall/static/images/service-dfh.png


+ 33 - 1
wx-mall/utils/util.js

@@ -1,5 +1,36 @@
 var api = require('../config/api.js');
 var user = require('../services/user.js');
+const formatNumber2 = n => {
+  n = n.toString()
+  return n[1] ? n : '0' + n
+}
+/**
+ * 时间戳转化为年 月 日 时 分 秒
+ * ts: 传入时间戳
+ * format:返回格式,支持自定义,但参数必须与formateArr里保持一致
+*/
+function tsFormatTime(timestamp, format) {
+
+  const formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
+  let returnArr = [];
+
+  let date = new Date(timestamp);
+  let year = date.getFullYear()
+  let month = date.getMonth() + 1
+  let day = date.getDate()
+  let hour = date.getHours()
+  let minute = date.getMinutes()
+  let second = date.getSeconds()
+  returnArr.push(year, month, day, hour, minute, second);
+
+  returnArr = returnArr.map(formatNumber2);
+
+  for (var i in returnArr) {
+    format = format.replace(formateArr[i], returnArr[i]);
+  }
+  return format;
+
+}
 
 function formatTime(date) {
   var year = date.getFullYear()
@@ -278,7 +309,8 @@ module.exports = {
   getDateStr,
   timeArray,
   getNowTimeArray,
-  uuid
+  uuid,
+  tsFormatTime
 }