From 14d67508d21d18e4b8d8d5874efe9ef946115b04 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 16 May 2025 14:17:45 +0800
Subject: [PATCH] fix(mall): 修复订单积分计算错误

---
 src/main/resources/templates/febs/views/modules/votesActivity/orderList.html |  118 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 85 insertions(+), 33 deletions(-)

diff --git a/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html b/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
index b79498b..48408fe 100644
--- a/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/votesActivity/orderList.html
@@ -16,12 +16,14 @@
                                     <div class="layui-inline">
                                         <label class="layui-form-label layui-form-label-sm">状态</label>
                                         <div class="layui-input-inline">
-                                            <select name="status">
+                                            <select name="state">
                                                 <option value="">请选择</option>
                                                 <option value="1">待支付</option>
                                                 <option value="2">待使用</option>
                                                 <option value="3">已使用</option>
                                                 <option value="4">售后</option>
+                                                <option value="5">已评价</option>
+                                                <option value="7">已失效</option>
                                             </select>
                                         </div>
                                     </div>
@@ -42,6 +44,9 @@
                                 </div>
                                 <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
                                     <i class="layui-icon">&#xe79b;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="export" title="导出">
+                                    <i class="layui-icon">&#xe67d;</i>
                                 </div>
                             </div>
                         </div>
@@ -78,6 +83,9 @@
     2: {title: '待使用', color: 'orange'},
     3: {title: '已使用', color: 'green'},
     4: {title: '售后', color: 'red'},
+    5: {title: '已评价', color: 'black'},
+    6: {title: '删除', color: 'black'},
+    7: {title: '已失效', color: 'black'},
     }[d.state];
     }}
     <span class="layui-badge febs-bg-{{state.color}}">{{ state.title }}</span>
@@ -98,7 +106,7 @@
     1: {title: '余额', color: 'blue'},
     2: {title: '微信', color: 'green'},
     3: {title: '积分', color: 'orange'},
-    4: {title: '免费', color: 'red'},
+    0: {title: '免费', color: 'red'},
     }[d.payType];
     }}
     <span class="layui-badge febs-bg-{{payType.color}}">{{ payType.title }}</span>
@@ -120,6 +128,7 @@
             $view = $('#febs-activity-order'),
             $query = $view.find('#query'),
             $reset = $view.find('#reset'),
+            $export= $view.find('#export'),
             $searchForm = $view.find('form'),
             sortObject = {field: 'phone', type: null},
             tableIns;
@@ -171,47 +180,77 @@
 
         // 初始化表格操作栏各个按钮功能
         table.on('toolbar(orderActivityTable)', function (obj) {
-            console.log("触发事件:", obj.event); // 调试信息
             let event = obj.event;
             let id = obj.config.id;
             let checkStatus = table.checkStatus(id);
-            if(event === 'checkOrder'){
+
+            if (event === 'checkOrder') {
                 let data = checkStatus.data;
-                let ids = [];
-                for(let i = 0;i < data.length;i++){
-                    if(data[i].state != 2){
-                        febs.alert.warn('请选择待使用的订单');
-                        return;
-                    }else{
-                        ids.push(data[i].id);
-                    }
-                }
-                console.log(ids);
-                if(ids == null || ids == ""){
+
+                // 校验 data 是否为空或未定义
+                if (!Array.isArray(data) || data.length === 0) {
                     febs.alert.warn('请选择需要核销的订单');
                     return;
                 }
-                $.ajax({
-                    'url':ctx + 'admin/happyActivity/checkOrder',
-                    'type':'post',
-                    'dataType':'json',
-                    'headers' : {'Content-Type' : 'application/json;charset=utf-8'}, //接口json格式
-                    'traditional': true,//ajax传递数组必须添加属性
-                    'data':ids,
-                    'success':function (data) {
-                        if(data.code==200){
-                            febs.alert.success('操作成功');
-                            $query.click();
-                        }else{
-                            febs.alert.warn(data.message);
-                        }
-                    },
-                    'error':function () {
-                        febs.alert.warn('服务器繁忙');
+
+                let ids = [];
+                let hasInvalidOrder = false;
+
+                // 遍历数据,筛选符合条件的订单
+                for (let i = 0; i < data.length; i++) {
+                    if (data[i].state !== 2) {
+                        hasInvalidOrder = true;
+                        break; // 提前中断循环,避免无意义的继续遍历
+                    } else {
+                        ids.push(data[i].id);
                     }
-                })
+                }
+
+                if (hasInvalidOrder) {
+                    febs.alert.warn('请选择待使用的订单');
+                    return;
+                }
+
+                if (ids.length === 0) { // 正确判断数组是否为空
+                    febs.alert.warn('请选择需要核销的订单');
+                    return;
+                }
+
+                // 封装 AJAX 请求为独立函数
+                function sendCheckOrderRequest(ids, successCallback, errorCallback) {
+                    $.ajax({
+                        url: ctx + 'admin/happyActivity/checkOrder', // 硬编码路径建议提取为配置项
+                        type: 'post',
+                        dataType: 'json',
+                        headers: { 'Content-Type': 'application/json;charset=utf-8' },
+                        traditional: true,
+                        data: JSON.stringify(ids), // 确保传递的是 JSON 格式
+                        success: function (response) {
+                            if (response.code === 200) {
+                                successCallback(response);
+                            } else {
+                                errorCallback(response.message);
+                            }
+                        },
+                        error: function (xhr, status, error) {
+                            errorCallback(`服务器繁忙: ${error}`); // 捕获具体错误信息
+                        }
+                    });
+                }
+
+                // 调用封装的请求函数
+                sendCheckOrderRequest(ids,
+                    function onSuccess(response) {
+                        febs.alert.success('操作成功');
+                        $query.click();
+                    },
+                    function onError(message) {
+                        febs.alert.warn(message);
+                    }
+                );
             }
         });
+
 
 
         function initorderActivityTable() {
@@ -239,6 +278,19 @@
             });
         }
 
+        // 导出功能
+        $export.on('click', function () {
+            var params = getQueryParams();
+            let activityId = $searchForm.find("select[name='activityId']").val();
+            //如果活动ID为空,弹出提示请选择活动
+            if (activityId == null || activityId == '') {
+                febs.alert.warn('请选择活动');
+                return;
+            }
+            var queryString = Object.keys(params).map(key => `${key}=${encodeURIComponent(params[key])}`).join('&');
+            window.location.href = ctx + 'admin/happyActivity/exportOrderList?' + queryString;
+        });
+
         // 查询按钮
         $query.on('click', function () {
             var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});

--
Gitblit v1.9.1