From 9d1f8f2d971d6323c427c6eaded33f390894aee9 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Sun, 26 Sep 2021 15:52:30 +0800
Subject: [PATCH] 20210926

---
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java    |   20 +++++
 src/main/resources/templates/febs/views/modules/order/refundOrderDetail.html |  128 ++++++++++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java    |   18 ++++
 src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderRefundVo.java             |    5 +
 src/main/resources/templates/febs/views/modules/order/refundList.html        |   31 +++++++
 src/main/resources/mapper/modules/MallOrderRefundMapper.xml                  |    2 
 6 files changed, 202 insertions(+), 2 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java
index 86fe6b0..f631e57 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallOrderController.java
@@ -3,6 +3,8 @@
 import cc.mrbird.febs.common.controller.BaseController;
 import cc.mrbird.febs.common.entity.FebsConstant;
 import cc.mrbird.febs.common.utils.FebsUtil;
+import cc.mrbird.febs.mall.entity.MallOrderRefund;
+import cc.mrbird.febs.mall.mapper.MallOrderRefundMapper;
 import cc.mrbird.febs.mall.service.IAdminMallOrderService;
 import cc.mrbird.febs.mall.vo.*;
 import lombok.RequiredArgsConstructor;
@@ -19,6 +21,8 @@
 public class ViewMallOrderController extends BaseController {
 
     private final IAdminMallOrderService adminMallOrderService;
+
+    private final MallOrderRefundMapper mallOrderRefundMapper;
 
     public static long idFromMember;
 
@@ -161,4 +165,20 @@
         return FebsUtil.view("modules/order/payMethodEdit");
     }
 
+    /**
+     * 退款记录-订单详情
+     * @param id
+     * @param model
+     * @return
+     */
+    @GetMapping("refundOrderDetail/{id}")
+    @RequiresPermissions("refundOrderDetail:view")
+    public String refundOrderDetail(@PathVariable long id, Model model) {
+        MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
+        Long orderId = mallOrderRefund.getOrderId();
+        AdminOrderDetailVo data = adminMallOrderService.getMallOrderDetailById(orderId);
+        model.addAttribute("refundOrderDetail", data);
+        return FebsUtil.view("modules/order/refundOrderDetail");
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
index 1cfe28a..c184959 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallOrderService.java
@@ -131,9 +131,25 @@
         if(status != 1){
             return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
         }
-        mallOrderRefund.setStatus(2);
+        mallOrderRefund.setStatus(5);
         mallOrderRefundMapper.updateById(mallOrderRefund);
 
+        MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
+        mallOrderInfo.setStatus(6);
+        mallOrderInfoMapper.updateById(mallOrderInfo);
+
+        if(!"微信支付".equals(mallOrderInfo.getPayMethod()) && !"支付宝支付".equals(mallOrderInfo.getPayMethod())){
+            //用户钱包增加对应的余额
+            iApiMallMemberWalletService.addBalance(mallOrderInfo.getAmount(),mallOrderInfo.getMemberId());
+            //新增一条资金流水
+            MallMoneyFlow mallMoneyFlow = new MallMoneyFlow();
+            mallMoneyFlow.setMemberId(mallOrderRefund.getMemberId());
+            mallMoneyFlow.setOrderNo(mallOrderInfo.getOrderNo());
+            mallMoneyFlow.setType(4);
+            mallMoneyFlow.setAmount(mallOrderInfo.getAmount());
+            mallMoneyFlowMapper.insert(mallMoneyFlow);
+        }
+
         MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
         mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
         mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderRefundVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderRefundVo.java
index 18be1e5..a8fd141 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderRefundVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderRefundVo.java
@@ -4,6 +4,7 @@
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
@@ -44,4 +45,8 @@
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createdTime;
+
+    private BigDecimal amount;
+
+    private Integer beforeStatus;
 }
diff --git a/src/main/resources/mapper/modules/MallOrderRefundMapper.xml b/src/main/resources/mapper/modules/MallOrderRefundMapper.xml
index 8156a21..cc6ebec 100644
--- a/src/main/resources/mapper/modules/MallOrderRefundMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderRefundMapper.xml
@@ -7,7 +7,7 @@
     </select>
 
     <select id="selectRefundListInPage" resultType="cc.mrbird.febs.mall.vo.AdminMallOrderRefundVo">
-        select a.*,b.name buyName ,b.phone buyPhone,c.order_no,CONCAT(a.name,a.phone,a.address) addressDetail
+        select a.*,b.name buyName ,b.phone buyPhone,c.order_no,c.amount,CONCAT(a.name,a.phone,a.address) addressDetail
 
         from mall_order_refund a
         left join mall_member b on b.id = a.member_id
diff --git a/src/main/resources/templates/febs/views/modules/order/refundList.html b/src/main/resources/templates/febs/views/modules/order/refundList.html
index 1a1e006..1692e17 100644
--- a/src/main/resources/templates/febs/views/modules/order/refundList.html
+++ b/src/main/resources/templates/febs/views/modules/order/refundList.html
@@ -90,6 +90,11 @@
                     maxmin: true,
                 });
             }
+            if (layEvent === 'refundOrderDetail') {
+                febs.modal.open( '订单详情', 'modules/order/refundOrderDetail/' + data.id, {
+                    maxmin: true,
+                });
+            }
             if (layEvent === 'agree') {
                 febs.modal.confirm('同意', '同意此次退款申请?', function () {
                     agreeRefund(data.id);
@@ -161,6 +166,27 @@
                     {field: 'orderNo', title: '订单编号', minWidth: 150,align:'left'},
                     {field: 'buyName', title: '用户名', minWidth: 150,align:'left'},
                     {field: 'buyPhone', title: '电话', minWidth: 150,align:'left'},
+                    {field: 'beforeStatus', title: '发货状态',
+                        templet: function (d) {
+                            if (d.status === 1) {
+                                return '<span style="color:red;">待支付</span>'
+                            } else if (d.status === 2) {
+                                return '<span style="color:green;">待发货</span>'
+                            }else if (d.status === 3) {
+                                return '<span style="color:green;">待收货</span>'
+                            }else if (d.status === 4) {
+                                return '<span style="color:green;">已完成</span>'
+                            }else if (d.status === 5) {
+                                return '<span style="color:green;">退款中</span>'
+                            }else if (d.status === 6) {
+                                return '<span style="color:green;">已退款</span>'
+                            }else if (d.status === 7) {
+                                return '<span style="color:green;">已取消</span>'
+                            }else{
+                                return ''
+                            }
+                        }, minWidth: 80,align:'center'},
+                    {field: 'amount', title: '退款金额', minWidth: 150,align:'left'},
                     {field: 'type', title: '退款类型',
                         templet: function (d) {
                             if (d.type === 1) {
@@ -197,20 +223,25 @@
                                 return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agree" shiro:hasPermission="user:update">同意</button>'
                                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="disagree" shiro:hasPermission="user:update">拒绝</button>'
                                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refunding" shiro:hasPermission="user:update">退款进度</button>'
+                                    +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refundOrderDetail" shiro:hasPermission="user:update">订单详情</button>'
                             }else if(d.type === 2){
                                 return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agreeWithAddress" shiro:hasPermission="user:update">同意</button>'
                                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="disagree" shiro:hasPermission="user:update">拒绝</button>'
                                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refunding" shiro:hasPermission="user:update">退款进度</button>'
+                                    +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refundOrderDetail" shiro:hasPermission="user:update">订单详情</button>'
                             }else{
                                 return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="agree" shiro:hasPermission="user:update">同意</button>'
                                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="disagree" shiro:hasPermission="user:update">拒绝</button>'
                                     +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refunding" shiro:hasPermission="user:update">退款进度</button>'
+                                    +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refundOrderDetail" shiro:hasPermission="user:update">订单详情</button>'
                             }
                         }else if(d.status === 4){
                             return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refunding" shiro:hasPermission="user:update">退款进度</button>'
                                 +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refundConfirm" shiro:hasPermission="user:update">退款确认</button>'
+                                +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refundOrderDetail" shiro:hasPermission="user:update">订单详情</button>'
                         }else{
                             return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refunding" shiro:hasPermission="user:update">退款进度</button>'
+                                +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="refundOrderDetail" shiro:hasPermission="user:update">订单详情</button>'
                         }
 
                         },minWidth: 300,align:'center'}
diff --git a/src/main/resources/templates/febs/views/modules/order/refundOrderDetail.html b/src/main/resources/templates/febs/views/modules/order/refundOrderDetail.html
new file mode 100644
index 0000000..ed50d43
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/order/refundOrderDetail.html
@@ -0,0 +1,128 @@
+<style>
+    #refundOrderDetail-info {
+        padding: 20px 25px 25px 0;
+    }
+
+    #refundOrderDetail-info .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #refundOrderDetail-info #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #refundOrderDetail-info .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+
+</style>
+<div class="layui-fluid" id="refundOrderDetail-info">
+    <form class="layui-form" action="" lay-filter="refundOrderDetail-info-form">
+        <div class="layui-form-item febs-hide">
+            <label class="layui-form-label febs-form-item-require">id:</label>
+            <div class="layui-input-block">
+                <input type="text" name="id">
+            </div>
+        </div>
+        <div class="layui-row layui-col-space10 layui-form-item">
+            <div class="layui-col-lg6">
+                <label class="layui-form-label">收货人:</label>
+                <div class="layui-input-block">
+                    <input type="text" name="name" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
+                </div>
+            </div>
+            <div class="layui-col-lg6">
+                <label class="layui-form-label">联系方式:</label>
+                <div class="layui-input-block">
+                    <input type="text" name="phone" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">地址:</label>
+            <div class="layui-input-block">
+                <input type="text" name="address"
+                       autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">支付订单号:</label>
+            <div class="layui-input-block">
+                <input type="text" name="payOrderNo"
+                       autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">支付凭证:</label>
+            <div class="layui-input-block">
+                <img alt="支付凭证" data-th-src="${refundOrderDetail.payImage}"  style="width: 200px">
+            </div>
+        </div>
+
+        <div class="layui-row layui-col-space10 layui-form-item">
+            <div class="layui-col-lg6">
+                <label class="layui-form-label">总金额:</label>
+                <div class="layui-input-block">
+                    <input type="text" name="amount" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">订单明细:</label>
+            <div class="layui-input-block">
+                <textarea id="lay_edit" lay-verify="orderItems" name = "orderItems" class="layui-textarea" readonly></textarea>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">物流单号:</label>
+            <div class="layui-input-block">
+                <input type="text" name="expressNo"
+                       autocomplete="off" class="layui-input"  readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">物流公司:</label>
+            <div class="layui-input-block">
+                <input type="text" name="expressCom"
+                       autocomplete="off" class="layui-input" readonly >
+            </div>
+        </div>
+    </form>
+</div>
+
+<script data-th-inline="javascript">
+    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () {
+        var $ = layui.$,
+            febs = layui.febs,
+            layer = layui.layer,
+            formSelects = layui.formSelects,
+            treeSelect = layui.treeSelect,
+            form = layui.form,
+            eleTree = layui.eleTree,
+            refundOrderDetail = [[${refundOrderDetail}]],
+            $view = $('#refundOrderDetail-info'),
+            validate = layui.validate,
+            _deptTree;
+
+        form.render();
+
+        initUserValue();
+
+        function initUserValue() {
+            form.val("refundOrderDetail-info-form", {
+                "id": refundOrderDetail.id,
+                "name": refundOrderDetail.name,
+                "phone": refundOrderDetail.phone,
+                "amount": refundOrderDetail.amount,
+                "orderItems": refundOrderDetail.orderItems,
+                "expressNo": refundOrderDetail.expressNo,
+                "expressCom": refundOrderDetail.expressCom,
+                "payImage": refundOrderDetail.payImage,
+                "payOrderNo": refundOrderDetail.payOrderNo,
+                "address": refundOrderDetail.address
+            });
+        }
+
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.9.1