ソースを参照

增加ipinfo,prodclass,banner的表格拖动排序功能。

baolei 6 ヶ月 前
コミット
d9581b4dfc
20 ファイル変更362 行追加121 行削除
  1. 9 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/controller/IpInfoController.java
  2. 9 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/controller/ProdClassController.java
  3. 8 8
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/banner/add.html
  4. 39 1
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/banner/banner.html
  5. 16 16
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/banner/edit.html
  6. 23 23
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/add.html
  7. 31 31
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/edit.html
  8. 43 5
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/ipInfo.html
  9. 8 8
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/class/add.html
  10. 8 8
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/class/edit.html
  11. 39 1
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/class/prodClass.html
  12. 30 3
      08.src/Xingxi/xingxi-common/src/main/java/com/xingxi/common/core/domain/BaseEntity.java
  13. 4 4
      08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/model/CartsRequest.java
  14. 21 13
      08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/impl/CartsApiServiceImpl.java
  15. 2 0
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/business/Banner/service/IBannerService.java
  16. 22 0
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/business/Banner/service/impl/BannerServiceImpl.java
  17. 3 0
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/IIpInfoService.java
  18. 21 0
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/impl/IpInfoServiceImpl.java
  19. 4 0
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/IProdClassService.java
  20. 22 0
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/impl/ProdClassServiceImpl.java

+ 9 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/controller/IpInfoController.java

@@ -112,4 +112,13 @@ public class IpInfoController extends BaseController {
     public AjaxResult remove(String ids) {
         return toAjax(ipInfoService.logicDeleteIpInfoByIpIds(ids));
     }
+
+    @RequiresPermissions("system:ipInfo:edit")
+    @Log(title = "文创品牌拖动排序", businessType = BusinessType.UPDATE)
+    @PostMapping("/sorted")
+    @ResponseBody
+    public AjaxResult saveSorted(IpInfo ipInfo) {
+        return toAjax(ipInfoService.dragSorted(ipInfo));
+    }
+
 }

+ 9 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/controller/ProdClassController.java

@@ -8,6 +8,7 @@ import com.xingxi.common.core.text.Convert;
 import com.xingxi.common.enums.BusinessType;
 import com.xingxi.common.enums.EDelFlag;
 import com.xingxi.common.utils.poi.ExcelUtil;
+import com.xingxi.master.ipInfo.domain.IpInfo;
 import com.xingxi.master.product.domain.ProdClass;
 import com.xingxi.master.product.service.IProdClassService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -115,4 +116,12 @@ public class ProdClassController extends BaseController {
     public AjaxResult remove(String ids) {
         return toAjax(prodClassService.logicDeleteProdClassByProdClassIds(Convert.toStrArray(ids)));
     }
+
+    @RequiresPermissions("master:product:class:edit")
+    @Log(title = "文创品牌拖动排序", businessType = BusinessType.UPDATE)
+    @PostMapping("/sorted")
+    @ResponseBody
+    public AjaxResult saveSorted(ProdClass prodClass) {
+        return toAjax(prodClassService.dragSorted(prodClass));
+    }
 }

+ 8 - 8
08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/banner/add.html

@@ -32,14 +32,14 @@
                     </div>
                 </div>
             </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">顺序:</label>
-                    <div class="col-sm-8">
-                        <input name="sort" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">顺序:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="sort" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
         </form>
     </div>
     <th:block th:include="include :: footer" />

+ 39 - 1
08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/banner/banner.html

@@ -35,11 +35,15 @@
                 </a>
             </div>
             <div class="col-sm-12 select-table table-striped">
-                <table id="bootstrap-table"></table>
+                <table id="bootstrap-table"
+                       data-mobile-responsive="true"
+                       data-use-row-attr-func="true"
+                       data-reorderable-rows="true"></table>
             </div>
         </div>
     </div>
     <th:block th:include="include :: footer" />
+     <th:block th:include="include :: bootstrap-table-reorder-rows-js"/>
     <script th:inline="javascript">
         var editFlag = [[${@permission.hasPermi('system:banner:edit')}]];
         var removeFlag = [[${@permission.hasPermi('system:banner:remove')}]];
@@ -54,6 +58,10 @@
                 removeUrl: prefix + "/remove",
                 exportUrl: prefix + "/export",
                 modalName: "banner",
+                onReorderRow: function (data) {
+                    saveSorted(JSON.stringify(data))
+                    return true;
+                },
                 columns: [
                     {
                         checkbox: true
@@ -98,6 +106,36 @@
             };
             $.table.init(options);
         });
+
+        function saveSorted(data) {
+
+            var table = $("#bootstrap-table").bootstrapTable('getOptions');
+            var pageSize = table.pageSize;
+            var pageNumber = table.pageNumber;
+            var sortParams = {
+                "pageSize": pageSize,
+                "pageNumber": pageNumber,
+                "sorted": data
+            };
+
+            $.ajax({
+                url: prefix + "/sorted",
+                type: "post",
+                dataType: "json",
+                data: {
+                    params: sortParams
+                },
+                beforeSend: function () {
+                    $.modal.loading("正在处理中,请稍后...");
+                    $.modal.disable();
+                },
+                success: function (result) {
+                    $.table.refresh();
+                    $.modal.closeLoading();
+                    $.modal.enable();
+                }
+            })
+        }
     </script>
 </body>
 </html>

+ 16 - 16
08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/banner/edit.html

@@ -31,22 +31,22 @@
                     </div>
                 </div>
             </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">顺序:</label>
-                    <div class="col-sm-8">
-                        <input name="sort" th:field="*{sort}" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">删除标志:</label>
-                    <div class="col-sm-8">
-                        <input name="delFlag" th:field="*{delFlag}" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">顺序:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="sort" th:field="*{sort}" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">删除标志:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="delFlag" th:field="*{delFlag}" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
         </form>
     </div>
     <th:block th:include="include :: footer" />

+ 23 - 23
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/add.html

@@ -24,22 +24,22 @@
                     </div>
                 </div>
             </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">色号:</label>
-                    <div class="col-sm-8">
-                        <input name="colorNo" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">显示顺序:</label>
-                    <div class="col-sm-8">
-                        <input name="sort" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">色号:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="colorNo" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">显示顺序:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="sort" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
         </form>
     </div>
     <th:block th:include="include :: footer" />
@@ -94,10 +94,10 @@
                 ipName: {
                     required: true
                 },
-                colorNo: {
-                    required: true,
-                    digits: true
-                },
+                // colorNo: {
+                //     required: true,
+                //     digits: true
+                // },
                 sort: {
                     required: true,
                     digits: true
@@ -105,9 +105,9 @@
             },
             messages: {
                 ipName: icon + "请输入文创品牌名称",
-                colorNo: {
-                    required: icon + "请输入使用的色号"
-                },
+                // colorNo: {
+                //     required: icon + "请输入使用的色号"
+                // },
                 sort: {
                     required: icon + "请输入排序号"
                 }

+ 31 - 31
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/edit.html

@@ -25,30 +25,30 @@
                     </div>
                 </div>
             </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">色号:</label>
-                    <div class="col-sm-8">
-                        <input name="colorNo" th:field="*{colorNo}" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">显示顺序:</label>
-                    <div class="col-sm-8">
-                        <input name="sort" th:field="*{sort}" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">删除标志:</label>
-                    <div class="col-sm-8">
-                        <input name="delFlag" th:field="*{delFlag}" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">色号:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="colorNo" th:field="*{colorNo}" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">显示顺序:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="sort" th:field="*{sort}" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">删除标志:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="delFlag" th:field="*{delFlag}" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
         </form>
     </div>
     <th:block th:include="include :: footer" />
@@ -103,10 +103,10 @@
                 ipName: {
                     required: true
                 },
-                colorNo: {
-                    required: true,
-                    digits: true
-                },
+                // colorNo: {
+                //     required: true,
+                //     digits: true
+                // },
                 sort: {
                     required: true,
                     digits: true
@@ -114,9 +114,9 @@
             },
             messages: {
                 ipName: icon + "请输入文创品牌名称",
-                colorNo: {
-                    required: icon + "请输入使用的色号"
-                },
+                // colorNo: {
+                //     required: icon + "请输入使用的色号"
+                // },
                 sort: {
                     required: icon + "请输入排序号"
                 }

+ 43 - 5
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/ipInfo.html

@@ -35,11 +35,15 @@
                 </a>
             </div>
             <div class="col-sm-12 select-table table-striped">
-                <table id="bootstrap-table"></table>
+                <table id="bootstrap-table"
+                       data-mobile-responsive="true"
+                       data-use-row-attr-func="true"
+                       data-reorderable-rows="true"></table>
             </div>
         </div>
     </div>
     <th:block th:include="include :: footer" />
+    <th:block th:include="include :: bootstrap-table-reorder-rows-js"/>
     <script th:inline="javascript">
         var editFlag = [[${@permission.hasPermi('system:ipInfo:edit')}]];
         var removeFlag = [[${@permission.hasPermi('system:ipInfo:remove')}]];
@@ -53,6 +57,10 @@
                 removeUrl: prefix + "/remove",
                 exportUrl: prefix + "/export",
                 modalName: "文创品牌",
+                onReorderRow: function (data) {
+                    saveSorted(JSON.stringify(data))
+                    return true;
+                },
                 columns: [
                     {
                         field: 'ipId',
@@ -70,10 +78,10 @@
                             return $.table.imageView(value);
                         }
                     },
-                    {
-                        field: 'colorNo',
-                        title: '色号'
-                    },
+                    // {
+                    //     field: 'colorNo',
+                    //     title: '色号'
+                    // },
                     {
                         field: 'sort',
                         title: '显示顺序'
@@ -92,6 +100,36 @@
             };
             $.table.init(options);
         });
+
+        function saveSorted(data) {
+
+            var table = $("#bootstrap-table").bootstrapTable('getOptions');
+            var pageSize = table.pageSize;
+            var pageNumber = table.pageNumber;
+            var sortParams = {
+                "pageSize": pageSize,
+                "pageNumber": pageNumber,
+                "sorted": data
+            };
+
+            $.ajax({
+                url: prefix + "/sorted",
+                type: "post",
+                dataType: "json",
+                data: {
+                    params: sortParams
+                },
+                beforeSend: function () {
+                    $.modal.loading("正在处理中,请稍后...");
+                    $.modal.disable();
+                },
+                success: function (result) {
+                    $.table.refresh();
+                    $.modal.closeLoading();
+                    $.modal.enable();
+                }
+            })
+        }
     </script>
 </body>
 </html>

+ 8 - 8
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/class/add.html

@@ -24,14 +24,14 @@
                     </div>
                 </div>
             </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">顺序:</label>
-                    <div class="col-sm-8">
-                        <input name="sort" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">顺序:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="sort" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
         </form>
     </div>
     <th:block th:include="include :: footer" />

+ 8 - 8
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/class/edit.html

@@ -25,14 +25,14 @@
                     </div>
                 </div>
             </div>
-            <div class="col-xs-12">
-                <div class="form-group">
-                    <label class="col-sm-3 control-label">顺序:</label>
-                    <div class="col-sm-8">
-                        <input name="sort" th:field="*{sort}" class="form-control" type="text">
-                    </div>
-                </div>
-            </div>
+<!--            <div class="col-xs-12">-->
+<!--                <div class="form-group">-->
+<!--                    <label class="col-sm-3 control-label">顺序:</label>-->
+<!--                    <div class="col-sm-8">-->
+<!--                        <input name="sort" th:field="*{sort}" class="form-control" type="text">-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </div>-->
         </form>
     </div>
     <th:block th:include="include :: footer" />

+ 39 - 1
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/class/prodClass.html

@@ -35,11 +35,15 @@
                 </a>
             </div>
             <div class="col-sm-12 select-table table-striped">
-                <table id="bootstrap-table"></table>
+                <table id="bootstrap-table"
+                       data-mobile-responsive="true"
+                       data-use-row-attr-func="true"
+                       data-reorderable-rows="true"></table>
             </div>
         </div>
     </div>
     <th:block th:include="include :: footer" />
+    <th:block th:include="include :: bootstrap-table-reorder-rows-js"/>
     <script th:inline="javascript">
         var editFlag = [[${@permission.hasPermi('master:product:class:edit')}]];
         var removeFlag = [[${@permission.hasPermi('master:product:class:remove')}]];
@@ -53,6 +57,10 @@
                 removeUrl: prefix + "/remove",
                 exportUrl: prefix + "/export",
                 modalName: "商品分类",
+                onReorderRow: function (data) {
+                    saveSorted(JSON.stringify(data))
+                    return true;
+                },
                 columns: [{
                     checkbox: true
                 },
@@ -89,6 +97,36 @@
             };
             $.table.init(options);
         });
+
+        function saveSorted(data) {
+
+            var table = $("#bootstrap-table").bootstrapTable('getOptions');
+            var pageSize = table.pageSize;
+            var pageNumber = table.pageNumber;
+            var sortParams = {
+                "pageSize": pageSize,
+                "pageNumber": pageNumber,
+                "sorted": data
+            };
+
+            $.ajax({
+                url: prefix + "/sorted",
+                type: "post",
+                dataType: "json",
+                data: {
+                    params: sortParams
+                },
+                beforeSend: function () {
+                    $.modal.loading("正在处理中,请稍后...");
+                    $.modal.disable();
+                },
+                success: function (result) {
+                    $.table.refresh();
+                    $.modal.closeLoading();
+                    $.modal.enable();
+                }
+            })
+        }
     </script>
 </body>
 </html>

+ 30 - 3
08.src/Xingxi/xingxi-common/src/main/java/com/xingxi/common/core/domain/BaseEntity.java

@@ -1,13 +1,14 @@
 package com.xingxi.common.core.domain;
 
 import java.io.Serializable;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
+import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonInclude;
+import com.xingxi.common.core.text.Convert;
+import org.apache.commons.compress.utils.Lists;
 
 /**
  * Entity基类
@@ -114,4 +115,30 @@ public class BaseEntity implements Serializable {
     public void setParams(Map<String, Object> params) {
         this.params = params;
     }
+
+    /**
+     * 只接受分号分隔和JSON数据
+     * @param name
+     * @param tClass
+     * @param <T>
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    public <T> List<T> getPramsByName(String name, Class<T> tClass){
+        List<T> list = Lists.newArrayList();
+        if (getParams().containsKey(name)) {
+            Object obj = getParams().get(name);
+            if (obj != null) {
+                try {
+                    list = JSON.parseArray((String) obj, tClass);
+                } catch (Exception ex) {
+                    String str = (String) obj;
+                    if(!str.isEmpty()) {
+                        list = (List<T>) Arrays.asList(Convert.toStrArray((String) obj));
+                    }
+                }
+            }
+        }
+        return list;
+    }
 }

+ 4 - 4
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/model/CartsRequest.java

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Getter
 @Setter
@@ -11,12 +12,11 @@ public class CartsRequest {
 
     // 主键
     private Long id;
-    @NotNull
     private Long mercId;
-    @NotNull
     private Long prodId;
-    @NotNull
     private Long prodAttrId;
-    @NotNull
     private Integer count;
+
+    private List<Long> ids;
+
 }

+ 21 - 13
08.src/Xingxi/xingxi-miniprogram-api/src/main/java/com/xingxi/api/service/impl/CartsApiServiceImpl.java

@@ -187,21 +187,20 @@ class CartsApiServiceImpl implements CartsServiceI {
 
             List<ProdAttrPrice> priceList = prodAttrPriceMapper.selectProdAttrPriceList(condPrice);
 
+            CartsResponse cartsResponse = new CartsResponse();
             if (StringUtils.isNotEmpty(priceList)) {
                 if (carts.getCheckFlag().equals(EYesNo.YES.getVal())) {
                     sum = sum.add(new BigDecimal(carts.getQuantity()).multiply(RMBUtil.fenToYuan(priceList.get(0).getPrice())));
                 }
+                cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
             }
 
-            CartsResponse cartsResponse = new CartsResponse();
-
             cartsResponse.setId(carts.getId());
             cartsResponse.setUserId(userId);
             cartsResponse.setMercProdId(carts.getMercProdId());
             cartsResponse.setProdAttrId(carts.getProdAttrId());
             cartsResponse.setQuantity(carts.getQuantity());
             cartsResponse.setCheckFlag(carts.getCheckFlag());
-            cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
 
             ProdPic condPic = new ProdPic();
             condPic.setProdId(mercProd.getProdId());
@@ -210,7 +209,7 @@ class CartsApiServiceImpl implements CartsServiceI {
             List<ProdPic> picList = prodPicServiceImpl.selectProdPicList(condPic);
 
             cartsResponse.setProdPicList(picList);
-
+            cartsResponseList.add(cartsResponse);
         }
 
         return new CartsListResponse(cartsResponseList, sum.toPlainString());
@@ -245,10 +244,11 @@ class CartsApiServiceImpl implements CartsServiceI {
 
             List<ProdAttrPrice> priceList = prodAttrPriceMapper.selectProdAttrPriceList(condPrice);
 
+            CartsResponse cartsResponse = new CartsResponse();
             if (StringUtils.isNotEmpty(priceList)) {
                 sum = sum.add(new BigDecimal(carts.getQuantity()).multiply(RMBUtil.fenToYuan(priceList.get(0).getPrice())));
+                cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
             }
-            CartsResponse cartsResponse = new CartsResponse();
 
             cartsResponse.setId(carts.getId());
             cartsResponse.setUserId(userId);
@@ -256,7 +256,6 @@ class CartsApiServiceImpl implements CartsServiceI {
             cartsResponse.setProdAttrId(carts.getProdAttrId());
             cartsResponse.setQuantity(carts.getQuantity());
             cartsResponse.setCheckFlag(carts.getCheckFlag());
-            cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
 
             ProdPic condPic = new ProdPic();
             condPic.setProdId(mercProd.getProdId());
@@ -265,6 +264,7 @@ class CartsApiServiceImpl implements CartsServiceI {
             List<ProdPic> picList = prodPicServiceImpl.selectProdPicList(condPic);
 
             cartsResponse.setProdPicList(picList);
+            cartsResponseList.add(cartsResponse);
         }
 
         return new CartsListResponse(cartsResponseList, sum.toPlainString());
@@ -308,8 +308,9 @@ class CartsApiServiceImpl implements CartsServiceI {
             condPrice.setBuyerRoleKey(ERoleKey.CUSTOMER.getCode());
 
             List<ProdAttrPrice> priceList = prodAttrPriceMapper.selectProdAttrPriceList(condPrice);
-
-            cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
+            if (priceList != null && priceList.size() > 0) {
+                cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
+            }
 
             ProdPic condPic = new ProdPic();
             condPic.setProdId(mercProd.getProdId());
@@ -329,7 +330,14 @@ class CartsApiServiceImpl implements CartsServiceI {
         SysUser currentUser = userContext.getCurrentUser();
         Long userId = currentUser.getUserId();
 
-        cartsMapper.logicDeleteCartsById(request.getId());
+        if (request.getId() != null) {
+            cartsMapper.logicDeleteCartsById(request.getId());
+        }
+        if (request.getIds() != null) {
+            for (Long id : request.getIds()) {
+                cartsMapper.logicDeleteCartsById(id);
+            }
+        }
 
         Carts cond = new Carts();
         cond.setUserId(userId);
@@ -351,19 +359,19 @@ class CartsApiServiceImpl implements CartsServiceI {
 
             List<ProdAttrPrice> priceList = prodAttrPriceMapper.selectProdAttrPriceList(condPrice);
 
+            CartsResponse cartsResponse = new CartsResponse();
+
             if (StringUtils.isNotEmpty(priceList)) {
                 sum = sum.add(new BigDecimal(carts.getQuantity()).multiply(RMBUtil.fenToYuan(priceList.get(0).getPrice())));
+                cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
             }
 
-            CartsResponse cartsResponse = new CartsResponse();
-
             cartsResponse.setId(carts.getId());
             cartsResponse.setUserId(userId);
             cartsResponse.setMercProdId(carts.getMercProdId());
             cartsResponse.setProdAttrId(carts.getProdAttrId());
             cartsResponse.setQuantity(carts.getQuantity());
             cartsResponse.setCheckFlag(carts.getCheckFlag());
-            cartsResponse.setPrice(RMBUtil.fenToYuan(priceList.get(0).getPrice()));
 
             ProdPic condPic = new ProdPic();
             condPic.setProdId(mercProd.getProdId());
@@ -371,7 +379,7 @@ class CartsApiServiceImpl implements CartsServiceI {
 
             List<ProdPic> picList = prodPicServiceImpl.selectProdPicList(condPic);
             cartsResponse.setProdPicList(picList);
-
+            cartsResponseList.add(cartsResponse);
         }
 
         return new CartsListResponse(cartsResponseList, sum.toPlainString());

+ 2 - 0
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/business/Banner/service/IBannerService.java

@@ -90,4 +90,6 @@ public interface IBannerService {
      * @return 结果
      */
     int logicDeleteBannerByCondition(Banner banner);
+
+    int dragSorted(Banner banner);
 }

+ 22 - 0
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/business/Banner/service/impl/BannerServiceImpl.java

@@ -5,9 +5,11 @@ import com.xingxi.common.utils.DateUtils;
 import com.xingxi.business.Banner.domain.Banner;
 import com.xingxi.business.Banner.mapper.BannerMapper;
 import com.xingxi.business.Banner.service.IBannerService;
+import com.xingxi.common.utils.ShiroUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -132,4 +134,24 @@ public class BannerServiceImpl implements IBannerService {
     public int logicDeleteBannerByCondition(Banner Banner) {
         return bannerMapper.logicDeleteBannerByCondition(Banner);
     }
+
+    @Override
+    public int dragSorted(Banner bannerVo) {
+        int result = 0;
+        Object pz = bannerVo.getParams().get("pageSize");
+        int pageSize = Convert.toInt(pz, 10);
+        Object pn = bannerVo.getParams().get("pageNumber");
+        int pageNumber = Convert.toInt(pn, 1);
+        List<Banner> sorteds = bannerVo.getPramsByName("sorted", Banner.class);
+        if (!sorteds.isEmpty()) {
+            int sort = pageSize * (pageNumber - 1) + 1;
+            for (Banner entity : sorteds) {
+                entity.setUpdateUser(ShiroUtils.getLoginName());
+                entity.setUpdateTime(new Date());
+                entity.setSort(Long.valueOf(sort++));
+                result = result + bannerMapper.updateBanner(entity);
+            }
+        }
+        return result;
+    }
 }

+ 3 - 0
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/IIpInfoService.java

@@ -90,4 +90,7 @@ public interface IIpInfoService {
      * @return 结果
      */
     int logicDeleteIpInfoByCondition(IpInfo ipInfo);
+
+    int dragSorted(IpInfo ipInfo);
+
 }

+ 21 - 0
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/impl/IpInfoServiceImpl.java

@@ -10,6 +10,7 @@ import com.xingxi.master.ipInfo.service.IIpInfoService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -138,4 +139,24 @@ public class IpInfoServiceImpl implements IIpInfoService {
     public int logicDeleteIpInfoByCondition(IpInfo ipInfo) {
         return ipInfoMapper.logicDeleteIpInfoByCondition(ipInfo);
     }
+
+    @Override
+    public int dragSorted(IpInfo ipInfo) {
+        int result = 0;
+        Object pz = ipInfo.getParams().get("pageSize");
+        int pageSize = Convert.toInt(pz, 10);
+        Object pn = ipInfo.getParams().get("pageNumber");
+        int pageNumber = Convert.toInt(pn, 1);
+        List<IpInfo> sorteds = ipInfo.getPramsByName("sorted", IpInfo.class);
+        if (!sorteds.isEmpty()) {
+            int sort = pageSize * (pageNumber - 1) + 1;
+            for (IpInfo entity : sorteds) {
+                entity.setUpdateUser(ShiroUtils.getLoginName());
+                entity.setUpdateTime(new Date());
+                entity.setSort(Long.valueOf(sort++));
+                result = result + ipInfoMapper.updateIpInfo(entity);
+            }
+        }
+        return result;
+    }
 }

+ 4 - 0
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/IProdClassService.java

@@ -1,5 +1,6 @@
 package com.xingxi.master.product.service;
 
+import com.xingxi.master.ipInfo.domain.IpInfo;
 import com.xingxi.master.product.domain.ProdClass;
 
 import java.util.List;
@@ -90,4 +91,7 @@ public interface IProdClassService {
      * @return 结果
      */
     int logicDeleteProdClassByCondition(ProdClass prodClass);
+
+    int dragSorted(ProdClass prodClass);
+
 }

+ 22 - 0
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/impl/ProdClassServiceImpl.java

@@ -4,12 +4,14 @@ import com.xingxi.common.core.text.Convert;
 import com.xingxi.common.enums.EDelFlag;
 import com.xingxi.common.utils.DateUtils;
 import com.xingxi.common.utils.ShiroUtils;
+import com.xingxi.master.ipInfo.domain.IpInfo;
 import com.xingxi.master.product.domain.ProdClass;
 import com.xingxi.master.product.mapper.ProdClassMapper;
 import com.xingxi.master.product.service.IProdClassService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -137,4 +139,24 @@ public class ProdClassServiceImpl implements IProdClassService {
     public int logicDeleteProdClassByCondition(ProdClass prodClass) {
         return prodClassMapper.logicDeleteProdClassByCondition(prodClass);
     }
+
+    @Override
+    public int dragSorted(ProdClass prodClass) {
+        int result = 0;
+        Object pz = prodClass.getParams().get("pageSize");
+        int pageSize = Convert.toInt(pz, 10);
+        Object pn = prodClass.getParams().get("pageNumber");
+        int pageNumber = Convert.toInt(pn, 1);
+        List<ProdClass> sorteds = prodClass.getPramsByName("sorted", ProdClass.class);
+        if (!sorteds.isEmpty()) {
+            int sort = pageSize * (pageNumber - 1) + 1;
+            for (ProdClass entity : sorteds) {
+                entity.setUpdateUser(ShiroUtils.getLoginName());
+                entity.setUpdateTime(new Date());
+                entity.setSort(Long.valueOf(sort++));
+                result = result + prodClassMapper.updateProdClass(entity);
+            }
+        }
+        return result;
+    }
 }