From f9d14aa693d8cd490dae51cd75fd09fcd01f6098 Mon Sep 17 00:00:00 2001
From: Karson <karsonzhang@163.com>
Date: Sat, 8 Jun 2019 09:49:30 +0800
Subject: [PATCH] 修复主键非ID时的排序错误

---
 application/admin/controller/Ajax.php | 8 +++++---
 public/assets/js/require-table.js     | 5 +++--
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/application/admin/controller/Ajax.php b/application/admin/controller/Ajax.php
index 828e228..d3ec69e 100644
--- a/application/admin/controller/Ajax.php
+++ b/application/admin/controller/Ajax.php
@@ -147,12 +147,14 @@ class Ajax extends Backend
         $field = $this->request->post("field");
         //操作的数据表
         $table = $this->request->post("table");
+        //主键
+        $pk = $this->request->post("pk");
         //排序的方式
         $orderway = $this->request->post("orderway", "", 'strtolower');
         $orderway = $orderway == 'asc' ? 'ASC' : 'DESC';
         $sour = $weighdata = [];
         $ids = explode(',', $ids);
-        $prikey = 'id';
+        $prikey = $pk ? $pk : (Db::name($table)->getPk() ?: 'id');
         $pid = $this->request->post("pid");
         //限制更新的字段
         $field = in_array($field, ['weigh']) ? $field : 'weigh';
@@ -160,9 +162,9 @@ class Ajax extends Backend
         // 如果设定了pid的值,此时只匹配满足条件的ID,其它忽略
         if ($pid !== '') {
             $hasids = [];
-            $list = Db::name($table)->where($prikey, 'in', $ids)->where('pid', 'in', $pid)->field('id,pid')->select();
+            $list = Db::name($table)->where($prikey, 'in', $ids)->where('pid', 'in', $pid)->field("{$prikey},pid")->select();
             foreach ($list as $k => $v) {
-                $hasids[] = $v['id'];
+                $hasids[] = $v[$prikey];
             }
             $ids = array_values(array_intersect($ids, $hasids));
         }
diff --git a/public/assets/js/require-table.js b/public/assets/js/require-table.js
index ecd310a..5354b3c 100644
--- a/public/assets/js/require-table.js
+++ b/public/assets/js/require-table.js
@@ -277,7 +277,8 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
                                     pid: pid,
                                     field: Table.config.dragsortfield,
                                     orderway: options.sortOrder,
-                                    table: options.extend.table
+                                    table: options.extend.table,
+                                    pk: options.pk
                                 }
                             };
                             Fast.api.ajax(params, function (data, ret) {
@@ -409,7 +410,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table
                         });
                         Layer.photos({
                             photos: {
-                                "start":$(this).index(".img-center"),
+                                "start": $(this).index(".img-center"),
                                 "data": data
                             },
                             anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
--
libgit2 0.24.0