فهرست منبع

20190627小程序部分数据结构

suochencheng 6 سال پیش
والد
کامیت
9ad567a023
72فایلهای تغییر یافته به همراه12614 افزوده شده و 1242 حذف شده
  1. 0 120
      log.txt
  2. 7 6
      src/main/java/com/izouma/awesomeadmin/dao/BannerInfoMapper.java
  3. 378 273
      src/main/java/com/izouma/awesomeadmin/dao/BannerInfoMapper.xml
  4. 35 0
      src/main/java/com/izouma/awesomeadmin/dao/HomeAdMapper.java
  5. 539 0
      src/main/java/com/izouma/awesomeadmin/dao/HomeAdMapper.xml
  6. 35 0
      src/main/java/com/izouma/awesomeadmin/dao/HomeMenuMapper.java
  7. 524 0
      src/main/java/com/izouma/awesomeadmin/dao/HomeMenuMapper.xml
  8. 85 1
      src/main/java/com/izouma/awesomeadmin/dao/ItemTypeMapper.xml
  9. 35 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreCaseMapper.java
  10. 503 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreCaseMapper.xml
  11. 35 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreIntroductionMapper.java
  12. 518 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreIntroductionMapper.xml
  13. 35 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreServiceLevelMapper.java
  14. 461 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreServiceLevelMapper.xml
  15. 35 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreServiceMapper.java
  16. 650 0
      src/main/java/com/izouma/awesomeadmin/dao/StoreServiceMapper.xml
  17. 96 43
      src/main/java/com/izouma/awesomeadmin/model/BannerInfo.java
  18. 200 0
      src/main/java/com/izouma/awesomeadmin/model/HomeAd.java
  19. 192 0
      src/main/java/com/izouma/awesomeadmin/model/HomeMenu.java
  20. 84 27
      src/main/java/com/izouma/awesomeadmin/model/ItemType.java
  21. 184 0
      src/main/java/com/izouma/awesomeadmin/model/StoreCase.java
  22. 192 0
      src/main/java/com/izouma/awesomeadmin/model/StoreIntroduction.java
  23. 241 0
      src/main/java/com/izouma/awesomeadmin/model/StoreService.java
  24. 168 0
      src/main/java/com/izouma/awesomeadmin/model/StoreServiceLevel.java
  25. 5 5
      src/main/java/com/izouma/awesomeadmin/service/BannerInfoService.java
  26. 28 0
      src/main/java/com/izouma/awesomeadmin/service/HomeAdService.java
  27. 28 0
      src/main/java/com/izouma/awesomeadmin/service/HomeMenuService.java
  28. 7 2
      src/main/java/com/izouma/awesomeadmin/service/ImageFileService.java
  29. 2 0
      src/main/java/com/izouma/awesomeadmin/service/ItemTypeService.java
  30. 36 167
      src/main/java/com/izouma/awesomeadmin/service/OSSFileService.java
  31. 28 0
      src/main/java/com/izouma/awesomeadmin/service/StoreCaseService.java
  32. 28 0
      src/main/java/com/izouma/awesomeadmin/service/StoreIntroductionService.java
  33. 28 0
      src/main/java/com/izouma/awesomeadmin/service/StoreServiceLevelService.java
  34. 28 0
      src/main/java/com/izouma/awesomeadmin/service/StoreServiceService.java
  35. 22 45
      src/main/java/com/izouma/awesomeadmin/service/impl/BannerInfoServiceImpl.java
  36. 117 0
      src/main/java/com/izouma/awesomeadmin/service/impl/HomeAdServiceImpl.java
  37. 117 0
      src/main/java/com/izouma/awesomeadmin/service/impl/HomeMenuServiceImpl.java
  38. 46 8
      src/main/java/com/izouma/awesomeadmin/service/impl/ItemTypeServiceImpl.java
  39. 117 0
      src/main/java/com/izouma/awesomeadmin/service/impl/StoreCaseServiceImpl.java
  40. 117 0
      src/main/java/com/izouma/awesomeadmin/service/impl/StoreIntroductionServiceImpl.java
  41. 117 0
      src/main/java/com/izouma/awesomeadmin/service/impl/StoreServiceLevelServiceImpl.java
  42. 117 0
      src/main/java/com/izouma/awesomeadmin/service/impl/StoreServiceServiceImpl.java
  43. 33 67
      src/main/java/com/izouma/awesomeadmin/web/BannerInfoController.java
  44. 133 0
      src/main/java/com/izouma/awesomeadmin/web/HomeAdController.java
  45. 132 0
      src/main/java/com/izouma/awesomeadmin/web/HomeMenuController.java
  46. 34 20
      src/main/java/com/izouma/awesomeadmin/web/ItemTypeController.java
  47. 131 0
      src/main/java/com/izouma/awesomeadmin/web/StoreCaseController.java
  48. 132 0
      src/main/java/com/izouma/awesomeadmin/web/StoreIntroductionController.java
  49. 138 0
      src/main/java/com/izouma/awesomeadmin/web/StoreServiceController.java
  50. 129 0
      src/main/java/com/izouma/awesomeadmin/web/StoreServiceLevelController.java
  51. 2 2
      src/main/resources/properties/jdbc.properties
  52. 1 1
      src/main/resources/properties/log4j.properties
  53. 7 13
      src/main/resources/properties/outsidews.properties
  54. 1 1
      src/main/vue/src/config.js
  55. 141 110
      src/main/vue/src/pages/BannerInfo.vue
  56. 437 328
      src/main/vue/src/pages/BannerInfos.vue
  57. 178 0
      src/main/vue/src/pages/HomeAd.vue
  58. 588 0
      src/main/vue/src/pages/HomeAds.vue
  59. 175 0
      src/main/vue/src/pages/HomeMenu.vue
  60. 572 0
      src/main/vue/src/pages/HomeMenus.vue
  61. 15 3
      src/main/vue/src/pages/ItemType.vue
  62. 64 0
      src/main/vue/src/pages/ItemTypes.vue
  63. 217 0
      src/main/vue/src/pages/Items.vue
  64. 172 0
      src/main/vue/src/pages/StoreCase.vue
  65. 552 0
      src/main/vue/src/pages/StoreCases.vue
  66. 178 0
      src/main/vue/src/pages/StoreIntroduction.vue
  67. 568 0
      src/main/vue/src/pages/StoreIntroductions.vue
  68. 221 0
      src/main/vue/src/pages/StoreService.vue
  69. 186 0
      src/main/vue/src/pages/StoreServiceLevel.vue
  70. 520 0
      src/main/vue/src/pages/StoreServiceLevels.vue
  71. 672 0
      src/main/vue/src/pages/StoreServices.vue
  72. 65 0
      src/main/vue/src/router/index.js

+ 0 - 120
log.txt

@@ -1,120 +0,0 @@
-[2018-07-31 18:41:11] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-07-31 18:48:18] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-07-31 18:49:35] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-07-31 18:50:31] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 09:25:51] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 09:41:52] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 09:51:56] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 09:58:08] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 09:58:30] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 09:58:55] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:00:32] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:10:38] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:12:06] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:13:31] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:14:54] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:15:45] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:22:01] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:23:51] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:25:15] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:25:30] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:26:59] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:29:33] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:36:11] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:39:47] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-01 10:41:23] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-08 19:00:42] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-08 19:02:19] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-08 19:03:57] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-08 19:04:18] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-08 19:08:49] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-27 14:25:47] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-27 14:30:57] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-27 14:31:13] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-08-27 14:32:17] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-09-03 16:10:11] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-09-03 16:12:59] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-09-03 16:14:31] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-09-03 16:19:40] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-09-03 18:07:29] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-12-29 14:28:56] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-12-29 15:13:31] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2018-12-29 15:13:34] [ERROR] - updateTarget 更新识别图异常
-java.io.IOException: Attempted read from closed stream.
-	at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:167)
-	at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:137)
-	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
-	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
-	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
-	at java.io.InputStreamReader.read(InputStreamReader.java:184)
-	at java.io.Reader.read(Reader.java:140)
-	at org.apache.http.util.EntityUtils.toString(EntityUtils.java:247)
-	at org.apache.http.util.EntityUtils.toString(EntityUtils.java:291)
-	at com.izouma.awesomeadmin.vuforia.VuforiaUtil.updateTarget(VuforiaUtil.java:132)
-	at VuforialUtilTest.UpdateTargetTest(VuforialUtilTest.java:34)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
-	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
-	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
-	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
-	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
-	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
-	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
-	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
-	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
-	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
-	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
-	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
-	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
-	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
-	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
-	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
-	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
-	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
-	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
-	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
-	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
-	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
-	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
-	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
-[2018-12-29 15:15:26] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2019-01-02 16:39:27] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2019-01-02 17:12:39] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2019-01-02 17:14:37] [ERROR] - getTarget 获取识别图异常
-org.json.JSONException: JSONObject["target_record"] not a string.
-	at org.json.JSONObject.getString(JSONObject.java:721)
-	at com.izouma.awesomeadmin.vuforia.VuforiaUtil.getTarget(VuforiaUtil.java:216)
-	at VuforialUtilTest.GetTargetTest(VuforialUtilTest.java:45)
-	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
-	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:498)
-	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
-	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
-	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
-	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
-	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
-	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
-	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
-	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
-	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
-	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
-	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
-	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
-	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
-	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
-	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
-	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
-	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
-	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
-	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
-	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
-	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
-	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
-	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
-	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
-[2019-01-02 17:14:54] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.
-[2019-01-02 17:44:01] [WARN ] - Bad pool size config, start 3 < min 5. Using 5 as start.

+ 7 - 6
src/main/java/com/izouma/awesomeadmin/dao/BannerInfoMapper.java

@@ -1,10 +1,9 @@
 package com.izouma.awesomeadmin.dao;
 
-import com.izouma.awesomeadmin.model.BannerInfo;
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
 import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Map;
+import com.izouma.awesomeadmin.model.BannerInfo;
 
 
 /**
@@ -12,7 +11,7 @@ import java.util.Map;
 */
 @Repository("com.zoumaframe.dao.BannerInfoMapper")
 public interface BannerInfoMapper{
-
+    /*generatedStart*/
     int deleteByPrimaryKey(Integer id);
 
     int insertSelective(BannerInfo record);
@@ -25,10 +24,12 @@ public interface BannerInfoMapper{
 
     List<BannerInfo> queryBannerInfoByPage(Map<String, Object> parameter);
 
-    int delete(String id);
+    int delete(BannerInfo record);
 
     BannerInfo queryBannerInfo(BannerInfo record);
 
     List<BannerInfo> query(BannerInfo record);
+    /*generatedEnd*/
+
 }
 

+ 378 - 273
src/main/java/com/izouma/awesomeadmin/dao/BannerInfoMapper.xml

@@ -1,229 +1,303 @@
 <?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.izouma.awesomeadmin.dao.BannerInfoMapper" >
-    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.BannerInfo" >
-                <id column="id" property="id" jdbcType="INTEGER" />
-                                        <result column="del_flag" property="delFlag" jdbcType="CHAR" />
-                                <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
-                                <result column="update_user" property="updateUser" jdbcType="VARCHAR" />
-                                <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
-                                <result column="create_user" property="createUser" jdbcType="VARCHAR" />
-                                <result column="location" property="location" jdbcType="VARCHAR" />
-                                <result column="title" property="title" jdbcType="VARCHAR" />
-                                <result column="subtitle" property="subtitle" jdbcType="VARCHAR" />
-                                <result column="url" property="url" jdbcType="VARCHAR" />
-                                <result column="image_url" property="imageUrl" jdbcType="VARCHAR" />
-                                <result column="rank" property="rank" jdbcType="INTEGER" />
-            </resultMap>
-    <sql id="Base_Column_List" >
-        <trim  suffixOverrides="," >
-            id,
-
-            del_flag,
-
-            update_time,
-
-            update_user,
-
-            create_time,
-
-            create_user,
-
-            location,
-
-            title,
-
-            subtitle,
-
-            url,
-
-            image_url,
-
-            rank,
-
-            </trim>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.izouma.awesomeadmin.dao.BannerInfoMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.BannerInfo">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <result column="status_flag" property="statusFlag" jdbcType="INTEGER"/>
+        <result column="type_flag" property="typeFlag" jdbcType="INTEGER"/>
+        <result column="title" property="title" jdbcType="VARCHAR"/>
+        <result column="subtitle" property="subtitle" jdbcType="VARCHAR"/>
+        <result column="image_url" property="imageUrl" jdbcType="VARCHAR"/>
+        <result column="path_url" property="pathUrl" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="rank" property="rank" jdbcType="INTEGER"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, user_id, mini_id, store_id, status_flag, type_flag, title, subtitle, image_url, path_url, remark, rank        <!--generatedEnd-->
     </sql>
-    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
-        select
-        <include refid="Base_Column_List" />
-        from banner_info
-        where id = #{id,jdbcType=INTEGER}
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM banner_info
+        WHERE id = #{id,jdbcType=INTEGER}
     </select>
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
-        delete from banner_info
-        where id = #{id,jdbcType=INTEGER}
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM banner_info
+        WHERE id = #{id,jdbcType=INTEGER}
     </delete>
+
     <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.BannerInfo" useGeneratedKeys="true" keyProperty="id">
-        insert into banner_info
-        <trim prefix="(" suffix=")" suffixOverrides="," >
-                <if test="id!= null" >
+        INSERT INTO banner_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
                 id,
             </if>
-                <if test="delFlag!= null" >
+            <if test="delFlag!= null">
                 del_flag,
             </if>
-                <if test="updateTime!= null" >
+            <if test="updateTime!= null">
                 update_time,
             </if>
-                <if test="updateUser!= null" >
+            <if test="updateUser!= null">
                 update_user,
             </if>
-                <if test="createTime!= null" >
+            <if test="createTime!= null">
                 create_time,
             </if>
-                <if test="createUser!= null" >
+            <if test="createUser!= null">
                 create_user,
             </if>
-                <if test="location!= null" >
-                location,
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="statusFlag!= null">
+                status_flag,
             </if>
-                <if test="title!= null" >
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="title!= null">
                 title,
             </if>
-                <if test="subtitle!= null" >
+            <if test="subtitle!= null">
                 subtitle,
             </if>
-                <if test="url!= null" >
-                url,
-            </if>
-                <if test="imageUrl!= null" >
+            <if test="imageUrl!= null">
                 image_url,
             </if>
-                <if test="rank!= null" >
+            <if test="pathUrl!= null">
+                path_url,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <if test="rank!= null">
                 rank,
             </if>
-            </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides="," >
-                    <if test="id != null" >
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
                 #{id,jdbcType=INTEGER},
             </if>
-                    <if test="delFlag != null" >
+            <if test="delFlag != null">
                 #{delFlag,jdbcType=CHAR},
             </if>
-                    <if test="updateTime != null" >
+            <if test="updateTime != null">
                 #{updateTime,jdbcType=TIMESTAMP},
             </if>
-                    <if test="updateUser != null" >
+            <if test="updateUser != null">
                 #{updateUser,jdbcType=VARCHAR},
             </if>
-                    <if test="createTime != null" >
+            <if test="createTime != null">
                 #{createTime,jdbcType=TIMESTAMP},
             </if>
-                    <if test="createUser != null" >
+            <if test="createUser != null">
                 #{createUser,jdbcType=VARCHAR},
             </if>
-                    <if test="location != null" >
-                #{location,jdbcType=VARCHAR},
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="statusFlag != null">
+                #{statusFlag,jdbcType=INTEGER},
             </if>
-                    <if test="title != null" >
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="title != null">
                 #{title,jdbcType=VARCHAR},
             </if>
-                    <if test="subtitle != null" >
+            <if test="subtitle != null">
                 #{subtitle,jdbcType=VARCHAR},
             </if>
-                    <if test="url != null" >
-                #{url,jdbcType=VARCHAR},
-            </if>
-                    <if test="imageUrl != null" >
+            <if test="imageUrl != null">
                 #{imageUrl,jdbcType=VARCHAR},
             </if>
-                    <if test="rank != null" >
+            <if test="pathUrl != null">
+                #{pathUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
                 #{rank,jdbcType=INTEGER},
             </if>
-                </trim>
+            <!--generatedEnd-->
+        </trim>
     </insert>
-    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.BannerInfo" >
-        update banner_info
-        <set >
-                    <if test="id != null" >
-               id= #{id,jdbcType=INTEGER},
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.BannerInfo">
+        UPDATE banner_info
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
             </if>
-                     <if test="delFlag != null" >
-               del_flag= #{delFlag,jdbcType=CHAR},
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
             </if>
-                     <if test="updateTime != null" >
-               update_time= #{updateTime,jdbcType=TIMESTAMP},
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
             </if>
-                     <if test="updateUser != null" >
-               update_user= #{updateUser,jdbcType=VARCHAR},
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
             </if>
-                     <if test="createTime != null" >
-               create_time= #{createTime,jdbcType=TIMESTAMP},
+            <if test="statusFlag != null">
+                status_flag= #{statusFlag,jdbcType=INTEGER},
             </if>
-                     <if test="createUser != null" >
-               create_user= #{createUser,jdbcType=VARCHAR},
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=INTEGER},
             </if>
-                     <if test="location != null" >
-               location= #{location,jdbcType=VARCHAR},
+            <if test="title != null">
+                title= #{title,jdbcType=VARCHAR},
             </if>
-                     <if test="title != null" >
-               title= #{title,jdbcType=VARCHAR},
+            <if test="subtitle != null">
+                subtitle= #{subtitle,jdbcType=VARCHAR},
             </if>
-                     <if test="subtitle != null" >
-               subtitle= #{subtitle,jdbcType=VARCHAR},
+            <if test="imageUrl != null">
+                image_url= #{imageUrl,jdbcType=VARCHAR},
             </if>
-                     <if test="url != null" >
-               url= #{url,jdbcType=VARCHAR},
+            <if test="pathUrl != null">
+                path_url= #{pathUrl,jdbcType=VARCHAR},
             </if>
-                     <if test="imageUrl != null" >
-               image_url= #{imageUrl,jdbcType=VARCHAR},
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
             </if>
-                     <if test="rank != null" >
-               rank= #{rank,jdbcType=INTEGER},
+            <if test="rank != null">
+                rank= #{rank,jdbcType=INTEGER},
             </if>
-                 </set>
-        where id = #{id,jdbcType=INTEGER}
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
     </update>
+
     <select id="queryBannerInfoByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.BannerInfo">
-        select <include refid="Base_Column_List"/> from banner_info
+        SELECT <include refid="Base_Column_List"/> FROM banner_info
         <where>
-            and del_flag = 'N'
-                    <if test="record.id != null and !&quot;&quot;.equals(record.id)">
-                and  id = #{record.id}
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
             </if>
-                     <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
-                and  del_flag = #{record.delFlag}
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
             </if>
-                     <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
-                and  update_time = #{record.updateTime}
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
             </if>
-                     <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
-                and  update_user = #{record.updateUser}
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
             </if>
-                     <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
-                and  create_time = #{record.createTime}
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
             </if>
-                     <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
-                and  create_user = #{record.createUser}
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
             </if>
-                     <if test="record.location != null and !&quot;&quot;.equals(record.location)">
-                and  location = #{record.location}
+            <if test="record.statusFlag != null and !&quot;&quot;.equals(record.statusFlag)">
+                AND status_flag = #{record.statusFlag}
             </if>
-                     <if test="record.title != null and !&quot;&quot;.equals(record.title)">
-                and  title = #{record.title}
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
             </if>
-                     <if test="record.subtitle != null and !&quot;&quot;.equals(record.subtitle)">
-                and  subtitle = #{record.subtitle}
+            <if test="record.title != null and !&quot;&quot;.equals(record.title)">
+                AND title = #{record.title}
             </if>
-                     <if test="record.url != null and !&quot;&quot;.equals(record.url)">
-                and  url = #{record.url}
+            <if test="record.subtitle != null and !&quot;&quot;.equals(record.subtitle)">
+                AND subtitle = #{record.subtitle}
             </if>
-                     <if test="record.imageUrl != null and !&quot;&quot;.equals(record.imageUrl)">
-                and  image_url = #{record.imageUrl}
+            <if test="record.imageUrl != null and !&quot;&quot;.equals(record.imageUrl)">
+                AND image_url = #{record.imageUrl}
             </if>
-                     <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
-                and  rank = #{record.rank}
+            <if test="record.pathUrl != null and !&quot;&quot;.equals(record.pathUrl)">
+                AND path_url = #{record.pathUrl}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
+                AND rank = #{record.rank}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    OR status_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR title LIKE concat('%',#{record.searchKey},'%')
+                    OR subtitle LIKE concat('%',#{record.searchKey},'%')
+                    OR image_url LIKE concat('%',#{record.searchKey},'%')
+                    OR path_url LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    OR rank LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
             </if>
-                  <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
-             <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                                                                                                                                                                                                                                                                                    OR  location LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  title LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  subtitle LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  url LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  image_url LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  rank LIKE concat('%',#{record.searchKey},'%')
-                                                             </trim>
-         </if>
 
             <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
                 <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
@@ -233,11 +307,9 @@
                                 <if test="detailIndex == 3">
                                     concat('%',#{itemDetail},'%')
                                 </if>
-
                                 <if test="detailIndex &lt; 3">
                                     ${itemDetail}
                                 </if>
-
                             </foreach>
                         </when>
                         <otherwise>
@@ -245,27 +317,17 @@
                                 <if test="detailIndex == 3">
                                     #{itemDetail}
                                 </if>
-
                                 <if test="detailIndex &lt; 3">
                                     ${itemDetail}
                                 </if>
-
                             </foreach>
                         </otherwise>
                     </choose>
-
-
                 </foreach>
-
-
             </if>
-
         </where>
-        order by
-
+        ORDER BY
         <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
-
-
             <trim suffixOverrides=",">
                 <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
                     <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
@@ -275,98 +337,115 @@
             </trim>
             ,
         </if>
-        location , rank desc, id desc
+        id DESC
     </select>
+
     <select id="queryAllBannerInfo" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.BannerInfo">
-        select <include refid="Base_Column_List"/> from banner_info
+        SELECT <include refid="Base_Column_List"/> FROM banner_info
         <where>
-            and del_flag = 'N'
-                    <if test="id != null and !&quot;&quot;.equals(id)">
-                and  id = #{id}
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
             </if>
-                    <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
-                and  del_flag = #{delFlag}
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
             </if>
-                    <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
-                and  update_time = #{updateTime}
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
             </if>
-                    <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
-                and  update_user = #{updateUser}
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
             </if>
-                    <if test="createTime != null and !&quot;&quot;.equals(createTime)">
-                and  create_time = #{createTime}
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
             </if>
-                    <if test="createUser != null and !&quot;&quot;.equals(createUser)">
-                and  create_user = #{createUser}
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
             </if>
-                    <if test="location != null and !&quot;&quot;.equals(location)">
-                and  location = #{location}
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
             </if>
-                    <if test="title != null and !&quot;&quot;.equals(title)">
-                and  title = #{title}
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
             </if>
-                    <if test="subtitle != null and !&quot;&quot;.equals(subtitle)">
-                and  subtitle = #{subtitle}
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
             </if>
-                    <if test="url != null and !&quot;&quot;.equals(url)">
-                and  url = #{url}
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
             </if>
-                    <if test="imageUrl != null and !&quot;&quot;.equals(imageUrl)">
-                and  image_url = #{imageUrl}
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                AND status_flag = #{statusFlag}
             </if>
-                    <if test="rank != null and !&quot;&quot;.equals(rank)">
-                and  rank = #{rank}
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
             </if>
-                    <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
-                <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                OR  location LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  title LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  subtitle LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  url LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  image_url LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  rank LIKE concat('%',#{searchKey},'%')
-                                                                                        </trim>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
             </if>
-<if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
-    <foreach item="item" index="index" collection="advancedQuery.split('_;')">
-        <choose>
-            <when test="item.indexOf('like') != -1">
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        concat('%',#{itemDetail},'%')
-                    </if>
-
-                    <if test="detailIndex &lt; 3">
-                        ${itemDetail}
-                    </if>
-
-                </foreach>
-            </when>
-            <otherwise>
-                <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
-                    <if test="detailIndex == 3">
-                        #{itemDetail}
-                    </if>
-
-                    <if test="detailIndex &lt; 3">
-                        ${itemDetail}
-                    </if>
-
+            <if test="subtitle != null and !&quot;&quot;.equals(subtitle)">
+                AND subtitle = #{subtitle}
+            </if>
+            <if test="imageUrl != null and !&quot;&quot;.equals(imageUrl)">
+                AND image_url = #{imageUrl}
+            </if>
+            <if test="pathUrl != null and !&quot;&quot;.equals(pathUrl)">
+                AND path_url = #{pathUrl}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    OR status_flag LIKE concat('%',#{searchKey},'%')
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
+                    OR title LIKE concat('%',#{searchKey},'%')
+                    OR subtitle LIKE concat('%',#{searchKey},'%')
+                    OR image_url LIKE concat('%',#{searchKey},'%')
+                    OR path_url LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    OR rank LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
                 </foreach>
-            </otherwise>
-        </choose>
-
-
-    </foreach>
-
-
-</if>
+            </if>
         </where>
-        order by
-
+        ORDER BY
         <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
-
-
             <trim suffixOverrides=",">
                 <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
                     <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
@@ -376,65 +455,91 @@
             </trim>
             ,
         </if>
-
-        location , rank desc, id desc
+        id DESC
     </select>
+
     <select id="queryBannerInfo" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.BannerInfo">
-        select <include refid="Base_Column_List"/> from banner_info
+        SELECT <include refid="Base_Column_List"/> FROM banner_info
         <where>
-            and del_flag = 'N'
-                    <if test="id != null and !&quot;&quot;.equals(id)">
-                and id = #{id}
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
             </if>
-                     <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
-                and del_flag = #{delFlag}
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
             </if>
-                     <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
-                and update_time = #{updateTime}
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
             </if>
-                     <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
-                and update_user = #{updateUser}
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
             </if>
-                     <if test="createTime != null and !&quot;&quot;.equals(createTime)">
-                and create_time = #{createTime}
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                AND status_flag = #{statusFlag}
             </if>
-                     <if test="createUser != null and !&quot;&quot;.equals(createUser)">
-                and create_user = #{createUser}
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
             </if>
-                     <if test="location != null and !&quot;&quot;.equals(location)">
-                and location = #{location}
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
             </if>
-                     <if test="title != null and !&quot;&quot;.equals(title)">
-                and title = #{title}
+            <if test="subtitle != null and !&quot;&quot;.equals(subtitle)">
+                AND subtitle = #{subtitle}
             </if>
-                     <if test="subtitle != null and !&quot;&quot;.equals(subtitle)">
-                and subtitle = #{subtitle}
+            <if test="imageUrl != null and !&quot;&quot;.equals(imageUrl)">
+                AND image_url = #{imageUrl}
             </if>
-                     <if test="url != null and !&quot;&quot;.equals(url)">
-                and url = #{url}
+            <if test="pathUrl != null and !&quot;&quot;.equals(pathUrl)">
+                AND path_url = #{pathUrl}
             </if>
-                     <if test="imageUrl != null and !&quot;&quot;.equals(imageUrl)">
-                and image_url = #{imageUrl}
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
             </if>
-                     <if test="rank != null and !&quot;&quot;.equals(rank)">
-                and rank = #{rank}
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
             </if>
-         
+            <!--generatedEnd-->
         </where>
         LIMIT 1
     </select>
+
     <update id="delete">
         UPDATE banner_info SET del_flag = 'Y'
-        <where>
-            AND id = #{id}
-        </where>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
     </update>
+
     <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.BannerInfo">
-        select <include refid="Base_Column_List"/> from banner_info
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM banner_info
         <where>
-            and del_flag = 'N'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </where>
-        order by id desc
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
     </select>
 </mapper>
 

+ 35 - 0
src/main/java/com/izouma/awesomeadmin/dao/HomeAdMapper.java

@@ -0,0 +1,35 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.HomeAd;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.HomeAdMapper")
+public interface HomeAdMapper{
+    /*generatedStart*/
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(HomeAd record);
+
+    HomeAd selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(HomeAd record);
+
+    List<HomeAd> queryAllHomeAd(HomeAd record);
+
+    List<HomeAd> queryHomeAdByPage(Map<String, Object> parameter);
+
+    int delete(HomeAd record);
+
+    HomeAd queryHomeAd(HomeAd record);
+
+    List<HomeAd> query(HomeAd record);
+    /*generatedEnd*/
+
+}
+

+ 539 - 0
src/main/java/com/izouma/awesomeadmin/dao/HomeAdMapper.xml

@@ -0,0 +1,539 @@
+<?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.izouma.awesomeadmin.dao.HomeAdMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.HomeAd">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <result column="status_flag" property="statusFlag" jdbcType="INTEGER"/>
+        <result column="type_flag" property="typeFlag" jdbcType="INTEGER"/>
+        <result column="title" property="title" jdbcType="VARCHAR"/>
+        <result column="subtitle" property="subtitle" jdbcType="VARCHAR"/>
+        <result column="image_url" property="imageUrl" jdbcType="VARCHAR"/>
+        <result column="path_url" property="pathUrl" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="rank" property="rank" jdbcType="INTEGER"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, user_id, mini_id, store_id, status_flag, type_flag, title, subtitle, image_url, path_url, remark, rank        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM home_ad
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM home_ad
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.HomeAd" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO home_ad
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="statusFlag!= null">
+                status_flag,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="title!= null">
+                title,
+            </if>
+            <if test="subtitle!= null">
+                subtitle,
+            </if>
+            <if test="imageUrl!= null">
+                image_url,
+            </if>
+            <if test="pathUrl!= null">
+                path_url,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <if test="rank!= null">
+                rank,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="statusFlag != null">
+                #{statusFlag,jdbcType=INTEGER},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="title != null">
+                #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="subtitle != null">
+                #{subtitle,jdbcType=VARCHAR},
+            </if>
+            <if test="imageUrl != null">
+                #{imageUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="pathUrl != null">
+                #{pathUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                #{rank,jdbcType=INTEGER},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.HomeAd">
+        UPDATE home_ad
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="statusFlag != null">
+                status_flag= #{statusFlag,jdbcType=INTEGER},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="title != null">
+                title= #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="subtitle != null">
+                subtitle= #{subtitle,jdbcType=VARCHAR},
+            </if>
+            <if test="imageUrl != null">
+                image_url= #{imageUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="pathUrl != null">
+                path_url= #{pathUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                rank= #{rank,jdbcType=INTEGER},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryHomeAdByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeAd">
+        SELECT <include refid="Base_Column_List"/> FROM home_ad
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
+            </if>
+            <if test="record.statusFlag != null and !&quot;&quot;.equals(record.statusFlag)">
+                AND status_flag = #{record.statusFlag}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.title != null and !&quot;&quot;.equals(record.title)">
+                AND title = #{record.title}
+            </if>
+            <if test="record.subtitle != null and !&quot;&quot;.equals(record.subtitle)">
+                AND subtitle = #{record.subtitle}
+            </if>
+            <if test="record.imageUrl != null and !&quot;&quot;.equals(record.imageUrl)">
+                AND image_url = #{record.imageUrl}
+            </if>
+            <if test="record.pathUrl != null and !&quot;&quot;.equals(record.pathUrl)">
+                AND path_url = #{record.pathUrl}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
+                AND rank = #{record.rank}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    OR title LIKE concat('%',#{record.searchKey},'%')
+                    OR subtitle LIKE concat('%',#{record.searchKey},'%')
+                    OR image_url LIKE concat('%',#{record.searchKey},'%')
+                    OR path_url LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllHomeAd" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeAd">
+        SELECT <include refid="Base_Column_List"/> FROM home_ad
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                AND status_flag = #{statusFlag}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="subtitle != null and !&quot;&quot;.equals(subtitle)">
+                AND subtitle = #{subtitle}
+            </if>
+            <if test="imageUrl != null and !&quot;&quot;.equals(imageUrl)">
+                AND image_url = #{imageUrl}
+            </if>
+            <if test="pathUrl != null and !&quot;&quot;.equals(pathUrl)">
+                AND path_url = #{pathUrl}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    OR title LIKE concat('%',#{searchKey},'%')
+                    OR subtitle LIKE concat('%',#{searchKey},'%')
+                    OR image_url LIKE concat('%',#{searchKey},'%')
+                    OR path_url LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryHomeAd" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeAd">
+        SELECT <include refid="Base_Column_List"/> FROM home_ad
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                AND status_flag = #{statusFlag}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="subtitle != null and !&quot;&quot;.equals(subtitle)">
+                AND subtitle = #{subtitle}
+            </if>
+            <if test="imageUrl != null and !&quot;&quot;.equals(imageUrl)">
+                AND image_url = #{imageUrl}
+            </if>
+            <if test="pathUrl != null and !&quot;&quot;.equals(pathUrl)">
+                AND path_url = #{pathUrl}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE home_ad SET del_flag = 'Y'
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeAd">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM home_ad
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 35 - 0
src/main/java/com/izouma/awesomeadmin/dao/HomeMenuMapper.java

@@ -0,0 +1,35 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.HomeMenu;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.HomeMenuMapper")
+public interface HomeMenuMapper{
+    /*generatedStart*/
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(HomeMenu record);
+
+    HomeMenu selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(HomeMenu record);
+
+    List<HomeMenu> queryAllHomeMenu(HomeMenu record);
+
+    List<HomeMenu> queryHomeMenuByPage(Map<String, Object> parameter);
+
+    int delete(HomeMenu record);
+
+    HomeMenu queryHomeMenu(HomeMenu record);
+
+    List<HomeMenu> query(HomeMenu record);
+    /*generatedEnd*/
+
+}
+

+ 524 - 0
src/main/java/com/izouma/awesomeadmin/dao/HomeMenuMapper.xml

@@ -0,0 +1,524 @@
+<?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.izouma.awesomeadmin.dao.HomeMenuMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.HomeMenu">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="VARCHAR"/>
+        <result column="title" property="title" jdbcType="VARCHAR"/>
+        <result column="icon" property="icon" jdbcType="VARCHAR"/>
+        <result column="path_url" property="pathUrl" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="rank" property="rank" jdbcType="INTEGER"/>
+        <result column="status_flag" property="statusFlag" jdbcType="INTEGER"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, user_id, mini_id, store_id, type_flag, title, icon, path_url, remark, rank, status_flag        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM home_menu
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM home_menu
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.HomeMenu" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO home_menu
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="title!= null">
+                title,
+            </if>
+            <if test="icon!= null">
+                icon,
+            </if>
+            <if test="pathUrl!= null">
+                path_url,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <if test="rank!= null">
+                rank,
+            </if>
+            <if test="statusFlag!= null">
+                status_flag,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="icon != null">
+                #{icon,jdbcType=VARCHAR},
+            </if>
+            <if test="pathUrl != null">
+                #{pathUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="statusFlag != null">
+                #{statusFlag,jdbcType=INTEGER},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.HomeMenu">
+        UPDATE home_menu
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                title= #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="icon != null">
+                icon= #{icon,jdbcType=VARCHAR},
+            </if>
+            <if test="pathUrl != null">
+                path_url= #{pathUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                rank= #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="statusFlag != null">
+                status_flag= #{statusFlag,jdbcType=INTEGER},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryHomeMenuByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeMenu">
+        SELECT <include refid="Base_Column_List"/> FROM home_menu
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.title != null and !&quot;&quot;.equals(record.title)">
+                AND title = #{record.title}
+            </if>
+            <if test="record.icon != null and !&quot;&quot;.equals(record.icon)">
+                AND icon = #{record.icon}
+            </if>
+            <if test="record.pathUrl != null and !&quot;&quot;.equals(record.pathUrl)">
+                AND path_url = #{record.pathUrl}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
+                AND rank = #{record.rank}
+            </if>
+            <if test="record.statusFlag != null and !&quot;&quot;.equals(record.statusFlag)">
+                AND status_flag = #{record.statusFlag}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR title LIKE concat('%',#{record.searchKey},'%')
+                    OR icon LIKE concat('%',#{record.searchKey},'%')
+                    OR path_url LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    OR rank LIKE concat('%',#{record.searchKey},'%')
+                    OR status_flag LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllHomeMenu" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeMenu">
+        SELECT <include refid="Base_Column_List"/> FROM home_menu
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="icon != null and !&quot;&quot;.equals(icon)">
+                AND icon = #{icon}
+            </if>
+            <if test="pathUrl != null and !&quot;&quot;.equals(pathUrl)">
+                AND path_url = #{pathUrl}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                AND status_flag = #{statusFlag}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
+                    OR title LIKE concat('%',#{searchKey},'%')
+                    OR icon LIKE concat('%',#{searchKey},'%')
+                    OR path_url LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    OR rank LIKE concat('%',#{searchKey},'%')
+                    OR status_flag LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryHomeMenu" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeMenu">
+        SELECT <include refid="Base_Column_List"/> FROM home_menu
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="icon != null and !&quot;&quot;.equals(icon)">
+                AND icon = #{icon}
+            </if>
+            <if test="pathUrl != null and !&quot;&quot;.equals(pathUrl)">
+                AND path_url = #{pathUrl}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="statusFlag != null and !&quot;&quot;.equals(statusFlag)">
+                AND status_flag = #{statusFlag}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE home_menu SET del_flag = 'Y'
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.HomeMenu">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM home_menu
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 85 - 1
src/main/java/com/izouma/awesomeadmin/dao/ItemTypeMapper.xml

@@ -14,12 +14,16 @@
         <result column="sort" property="sort" jdbcType="INTEGER"/>
         <result column="icon" property="icon" jdbcType="VARCHAR"/>
         <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="INTEGER"/>
         <!--generatedEnd-->
     </resultMap>
 
     <sql id="Base_Column_List">
         <!--generatedStart-->
-        id, del_flag, update_time, update_user, create_time, create_user, type_name, parent_id, sort, icon, remark        <!--generatedEnd-->
+        id, del_flag, update_time, update_user, create_time, create_user, type_name, parent_id, sort, icon, remark, user_id, store_id, mini_id, type_flag        <!--generatedEnd-->
     </sql>
 
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
@@ -72,6 +76,18 @@
             <if test="remark!= null">
                 remark,
             </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
             <!--generatedEnd-->
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
@@ -109,6 +125,18 @@
             <if test="remark != null">
                 #{remark,jdbcType=VARCHAR},
             </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=INTEGER},
+            </if>
             <!--generatedEnd-->
         </trim>
     </insert>
@@ -150,6 +178,18 @@
             <if test="remark != null">
                 remark= #{remark,jdbcType=VARCHAR},
             </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=INTEGER},
+            </if>
             <!--generatedEnd-->
         </set>
         WHERE
@@ -202,6 +242,18 @@
             <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
                 AND remark = #{record.remark}
             </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
+            </if>
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
+            </if>
             <!--generatedEnd-->
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
@@ -211,6 +263,10 @@
                     OR sort LIKE concat('%',#{record.searchKey},'%')
                     OR icon LIKE concat('%',#{record.searchKey},'%')
                     OR remark LIKE concat('%',#{record.searchKey},'%')
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
                     <!--generatedEnd-->
                 </trim>
             </if>
@@ -297,6 +353,18 @@
             <if test="remark != null and !&quot;&quot;.equals(remark)">
                 AND remark = #{remark}
             </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
             <!--generatedEnd-->
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
@@ -306,6 +374,10 @@
                     OR sort LIKE concat('%',#{searchKey},'%')
                     OR icon LIKE concat('%',#{searchKey},'%')
                     OR remark LIKE concat('%',#{searchKey},'%')
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
                     <!--generatedEnd-->
                 </trim>
             </if>
@@ -388,6 +460,18 @@
             <if test="remark != null and !&quot;&quot;.equals(remark)">
                 AND remark = #{remark}
             </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
             <!--generatedEnd-->
         </where>
         LIMIT 1

+ 35 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreCaseMapper.java

@@ -0,0 +1,35 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.StoreCase;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.StoreCaseMapper")
+public interface StoreCaseMapper{
+    /*generatedStart*/
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(StoreCase record);
+
+    StoreCase selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(StoreCase record);
+
+    List<StoreCase> queryAllStoreCase(StoreCase record);
+
+    List<StoreCase> queryStoreCaseByPage(Map<String, Object> parameter);
+
+    int delete(StoreCase record);
+
+    StoreCase queryStoreCase(StoreCase record);
+
+    List<StoreCase> query(StoreCase record);
+    /*generatedEnd*/
+
+}
+

+ 503 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreCaseMapper.xml

@@ -0,0 +1,503 @@
+<?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.izouma.awesomeadmin.dao.StoreCaseMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.StoreCase">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="case_name" property="caseName" jdbcType="VARCHAR"/>
+        <result column="title" property="title" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="image" property="image" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="VARCHAR"/>
+        <result column="rank" property="rank" jdbcType="INTEGER"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, case_name, title, remark, image, type_flag, rank, user_id, mini_id, store_id        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_case
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM store_case
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.StoreCase" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO store_case
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="caseName!= null">
+                case_name,
+            </if>
+            <if test="title!= null">
+                title,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <if test="image!= null">
+                image,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="rank!= null">
+                rank,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="caseName != null">
+                #{caseName,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="image != null">
+                #{image,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.StoreCase">
+        UPDATE store_case
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="caseName != null">
+                case_name= #{caseName,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                title= #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="image != null">
+                image= #{image,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                rank= #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryStoreCaseByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreCase">
+        SELECT <include refid="Base_Column_List"/> FROM store_case
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
+            </if>
+            <if test="record.caseName != null and !&quot;&quot;.equals(record.caseName)">
+                AND case_name = #{record.caseName}
+            </if>
+            <if test="record.title != null and !&quot;&quot;.equals(record.title)">
+                AND title = #{record.title}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <if test="record.image != null and !&quot;&quot;.equals(record.image)">
+                AND image = #{record.image}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
+                AND rank = #{record.rank}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR case_name LIKE concat('%',#{record.searchKey},'%')
+                    OR title LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    OR image LIKE concat('%',#{record.searchKey},'%')
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR rank LIKE concat('%',#{record.searchKey},'%')
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllStoreCase" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreCase">
+        SELECT <include refid="Base_Column_List"/> FROM store_case
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="caseName != null and !&quot;&quot;.equals(caseName)">
+                AND case_name = #{caseName}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="image != null and !&quot;&quot;.equals(image)">
+                AND image = #{image}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR case_name LIKE concat('%',#{searchKey},'%')
+                    OR title LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    OR image LIKE concat('%',#{searchKey},'%')
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
+                    OR rank LIKE concat('%',#{searchKey},'%')
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryStoreCase" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreCase">
+        SELECT <include refid="Base_Column_List"/> FROM store_case
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="caseName != null and !&quot;&quot;.equals(caseName)">
+                AND case_name = #{caseName}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="image != null and !&quot;&quot;.equals(image)">
+                AND image = #{image}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE store_case SET del_flag = 'Y'
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreCase">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_case
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 35 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreIntroductionMapper.java

@@ -0,0 +1,35 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.StoreIntroduction;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.StoreIntroductionMapper")
+public interface StoreIntroductionMapper{
+    /*generatedStart*/
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(StoreIntroduction record);
+
+    StoreIntroduction selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(StoreIntroduction record);
+
+    List<StoreIntroduction> queryAllStoreIntroduction(StoreIntroduction record);
+
+    List<StoreIntroduction> queryStoreIntroductionByPage(Map<String, Object> parameter);
+
+    int delete(StoreIntroduction record);
+
+    StoreIntroduction queryStoreIntroduction(StoreIntroduction record);
+
+    List<StoreIntroduction> query(StoreIntroduction record);
+    /*generatedEnd*/
+
+}
+

+ 518 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreIntroductionMapper.xml

@@ -0,0 +1,518 @@
+<?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.izouma.awesomeadmin.dao.StoreIntroductionMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.StoreIntroduction">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="introduction" property="introduction" jdbcType="VARCHAR"/>
+        <result column="banner" property="banner" jdbcType="VARCHAR"/>
+        <result column="address" property="address" jdbcType="VARCHAR"/>
+        <result column="longitude" property="longitude" jdbcType="VARCHAR"/>
+        <result column="latitude" property="latitude" jdbcType="VARCHAR"/>
+        <result column="title" property="title" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, introduction, banner, address, longitude, latitude, title, user_id, mini_id, store_id, remark        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_introduction
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM store_introduction
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.StoreIntroduction" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO store_introduction
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="introduction!= null">
+                introduction,
+            </if>
+            <if test="banner!= null">
+                banner,
+            </if>
+            <if test="address!= null">
+                address,
+            </if>
+            <if test="longitude!= null">
+                longitude,
+            </if>
+            <if test="latitude!= null">
+                latitude,
+            </if>
+            <if test="title!= null">
+                title,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="introduction != null">
+                #{introduction,jdbcType=VARCHAR},
+            </if>
+            <if test="banner != null">
+                #{banner,jdbcType=VARCHAR},
+            </if>
+            <if test="address != null">
+                #{address,jdbcType=VARCHAR},
+            </if>
+            <if test="longitude != null">
+                #{longitude,jdbcType=VARCHAR},
+            </if>
+            <if test="latitude != null">
+                #{latitude,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.StoreIntroduction">
+        UPDATE store_introduction
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="introduction != null">
+                introduction= #{introduction,jdbcType=VARCHAR},
+            </if>
+            <if test="banner != null">
+                banner= #{banner,jdbcType=VARCHAR},
+            </if>
+            <if test="address != null">
+                address= #{address,jdbcType=VARCHAR},
+            </if>
+            <if test="longitude != null">
+                longitude= #{longitude,jdbcType=VARCHAR},
+            </if>
+            <if test="latitude != null">
+                latitude= #{latitude,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                title= #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryStoreIntroductionByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreIntroduction">
+        SELECT <include refid="Base_Column_List"/> FROM store_introduction
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
+            </if>
+            <if test="record.introduction != null and !&quot;&quot;.equals(record.introduction)">
+                AND introduction = #{record.introduction}
+            </if>
+            <if test="record.banner != null and !&quot;&quot;.equals(record.banner)">
+                AND banner = #{record.banner}
+            </if>
+            <if test="record.address != null and !&quot;&quot;.equals(record.address)">
+                AND address = #{record.address}
+            </if>
+            <if test="record.longitude != null and !&quot;&quot;.equals(record.longitude)">
+                AND longitude = #{record.longitude}
+            </if>
+            <if test="record.latitude != null and !&quot;&quot;.equals(record.latitude)">
+                AND latitude = #{record.latitude}
+            </if>
+            <if test="record.title != null and !&quot;&quot;.equals(record.title)">
+                AND title = #{record.title}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR introduction LIKE concat('%',#{record.searchKey},'%')
+                    OR address LIKE concat('%',#{record.searchKey},'%')
+                    OR title LIKE concat('%',#{record.searchKey},'%')
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllStoreIntroduction" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreIntroduction">
+        SELECT <include refid="Base_Column_List"/> FROM store_introduction
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="introduction != null and !&quot;&quot;.equals(introduction)">
+                AND introduction = #{introduction}
+            </if>
+            <if test="banner != null and !&quot;&quot;.equals(banner)">
+                AND banner = #{banner}
+            </if>
+            <if test="address != null and !&quot;&quot;.equals(address)">
+                AND address = #{address}
+            </if>
+            <if test="longitude != null and !&quot;&quot;.equals(longitude)">
+                AND longitude = #{longitude}
+            </if>
+            <if test="latitude != null and !&quot;&quot;.equals(latitude)">
+                AND latitude = #{latitude}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR introduction LIKE concat('%',#{searchKey},'%')
+                    OR address LIKE concat('%',#{searchKey},'%')
+                    OR title LIKE concat('%',#{searchKey},'%')
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryStoreIntroduction" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreIntroduction">
+        SELECT <include refid="Base_Column_List"/> FROM store_introduction
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="introduction != null and !&quot;&quot;.equals(introduction)">
+                AND introduction = #{introduction}
+            </if>
+            <if test="banner != null and !&quot;&quot;.equals(banner)">
+                AND banner = #{banner}
+            </if>
+            <if test="address != null and !&quot;&quot;.equals(address)">
+                AND address = #{address}
+            </if>
+            <if test="longitude != null and !&quot;&quot;.equals(longitude)">
+                AND longitude = #{longitude}
+            </if>
+            <if test="latitude != null and !&quot;&quot;.equals(latitude)">
+                AND latitude = #{latitude}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE store_introduction SET del_flag = 'Y'
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreIntroduction">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_introduction
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 35 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreServiceLevelMapper.java

@@ -0,0 +1,35 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.StoreServiceLevel;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.StoreServiceLevelMapper")
+public interface StoreServiceLevelMapper{
+    /*generatedStart*/
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(StoreServiceLevel record);
+
+    StoreServiceLevel selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(StoreServiceLevel record);
+
+    List<StoreServiceLevel> queryAllStoreServiceLevel(StoreServiceLevel record);
+
+    List<StoreServiceLevel> queryStoreServiceLevelByPage(Map<String, Object> parameter);
+
+    int delete(StoreServiceLevel record);
+
+    StoreServiceLevel queryStoreServiceLevel(StoreServiceLevel record);
+
+    List<StoreServiceLevel> query(StoreServiceLevel record);
+    /*generatedEnd*/
+
+}
+

+ 461 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreServiceLevelMapper.xml

@@ -0,0 +1,461 @@
+<?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.izouma.awesomeadmin.dao.StoreServiceLevelMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.StoreServiceLevel">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="VARCHAR"/>
+        <result column="level_name" property="levelName" jdbcType="VARCHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <result column="rank" property="rank" jdbcType="INTEGER"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, type_flag, level_name, user_id, mini_id, store_id, rank, remark        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_service_level
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM store_service_level
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.StoreServiceLevel" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO store_service_level
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="levelName!= null">
+                level_name,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="rank!= null">
+                rank,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="levelName != null">
+                #{levelName,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.StoreServiceLevel">
+        UPDATE store_service_level
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="levelName != null">
+                level_name= #{levelName,jdbcType=VARCHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                rank= #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryStoreServiceLevelByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreServiceLevel">
+        SELECT <include refid="Base_Column_List"/> FROM store_service_level
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.levelName != null and !&quot;&quot;.equals(record.levelName)">
+                AND level_name = #{record.levelName}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
+            </if>
+            <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
+                AND rank = #{record.rank}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR level_name LIKE concat('%',#{record.searchKey},'%')
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    OR rank LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllStoreServiceLevel" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreServiceLevel">
+        SELECT <include refid="Base_Column_List"/> FROM store_service_level
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="levelName != null and !&quot;&quot;.equals(levelName)">
+                AND level_name = #{levelName}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
+                    OR level_name LIKE concat('%',#{searchKey},'%')
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    OR rank LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryStoreServiceLevel" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreServiceLevel">
+        SELECT <include refid="Base_Column_List"/> FROM store_service_level
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="levelName != null and !&quot;&quot;.equals(levelName)">
+                AND level_name = #{levelName}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE store_service_level SET del_flag = 'Y'
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreServiceLevel">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_service_level
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 35 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreServiceMapper.java

@@ -0,0 +1,35 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.StoreService;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.StoreServiceMapper")
+public interface StoreServiceMapper{
+    /*generatedStart*/
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(StoreService record);
+
+    StoreService selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(StoreService record);
+
+    List<StoreService> queryAllStoreService(StoreService record);
+
+    List<StoreService> queryStoreServiceByPage(Map<String, Object> parameter);
+
+    int delete(StoreService record);
+
+    StoreService queryStoreService(StoreService record);
+
+    List<StoreService> query(StoreService record);
+    /*generatedEnd*/
+
+}
+

+ 650 - 0
src/main/java/com/izouma/awesomeadmin/dao/StoreServiceMapper.xml

@@ -0,0 +1,650 @@
+<?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.izouma.awesomeadmin.dao.StoreServiceMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.StoreService">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="introduction" property="introduction" jdbcType="VARCHAR"/>
+        <result column="store_image" property="storeImage" jdbcType="VARCHAR"/>
+        <result column="list_image" property="listImage" jdbcType="VARCHAR"/>
+        <result column="banner" property="banner" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="VARCHAR"/>
+        <result column="type_level" property="typeLevel" jdbcType="INTEGER"/>
+        <result column="service_name" property="serviceName" jdbcType="VARCHAR"/>
+        <result column="title" property="title" jdbcType="VARCHAR"/>
+        <result column="price" property="price" jdbcType="DECIMAL"/>
+        <result column="shelf_flag" property="shelfFlag" jdbcType="CHAR"/>
+        <result column="store_flag" property="storeFlag" jdbcType="CHAR"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="mini_id" property="miniId" jdbcType="VARCHAR"/>
+        <result column="store_id" property="storeId" jdbcType="VARCHAR"/>
+        <result column="rank" property="rank" jdbcType="INTEGER"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, introduction, store_image, list_image, banner, type_flag, type_level, service_name, title, price, shelf_flag, store_flag, user_id, mini_id, store_id, rank, remark        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_service
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM store_service
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.StoreService" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO store_service
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="introduction!= null">
+                introduction,
+            </if>
+            <if test="storeImage!= null">
+                store_image,
+            </if>
+            <if test="listImage!= null">
+                list_image,
+            </if>
+            <if test="banner!= null">
+                banner,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="typeLevel!= null">
+                type_level,
+            </if>
+            <if test="serviceName!= null">
+                service_name,
+            </if>
+            <if test="title!= null">
+                title,
+            </if>
+            <if test="price!= null">
+                price,
+            </if>
+            <if test="shelfFlag!= null">
+                shelf_flag,
+            </if>
+            <if test="storeFlag!= null">
+                store_flag,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="miniId!= null">
+                mini_id,
+            </if>
+            <if test="storeId!= null">
+                store_id,
+            </if>
+            <if test="rank!= null">
+                rank,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="introduction != null">
+                #{introduction,jdbcType=VARCHAR},
+            </if>
+            <if test="storeImage != null">
+                #{storeImage,jdbcType=VARCHAR},
+            </if>
+            <if test="listImage != null">
+                #{listImage,jdbcType=VARCHAR},
+            </if>
+            <if test="banner != null">
+                #{banner,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="typeLevel != null">
+                #{typeLevel,jdbcType=INTEGER},
+            </if>
+            <if test="serviceName != null">
+                #{serviceName,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="price != null">
+                #{price,jdbcType=DECIMAL},
+            </if>
+            <if test="shelfFlag != null">
+                #{shelfFlag,jdbcType=CHAR},
+            </if>
+            <if test="storeFlag != null">
+                #{storeFlag,jdbcType=CHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.StoreService">
+        UPDATE store_service
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="introduction != null">
+                introduction= #{introduction,jdbcType=VARCHAR},
+            </if>
+            <if test="storeImage != null">
+                store_image= #{storeImage,jdbcType=VARCHAR},
+            </if>
+            <if test="listImage != null">
+                list_image= #{listImage,jdbcType=VARCHAR},
+            </if>
+            <if test="banner != null">
+                banner= #{banner,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=VARCHAR},
+            </if>
+            <if test="typeLevel != null">
+                type_level= #{typeLevel,jdbcType=INTEGER},
+            </if>
+            <if test="serviceName != null">
+                service_name= #{serviceName,jdbcType=VARCHAR},
+            </if>
+            <if test="title != null">
+                title= #{title,jdbcType=VARCHAR},
+            </if>
+            <if test="price != null">
+                price= #{price,jdbcType=DECIMAL},
+            </if>
+            <if test="shelfFlag != null">
+                shelf_flag= #{shelfFlag,jdbcType=CHAR},
+            </if>
+            <if test="storeFlag != null">
+                store_flag= #{storeFlag,jdbcType=CHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=VARCHAR},
+            </if>
+            <if test="miniId != null">
+                mini_id= #{miniId,jdbcType=VARCHAR},
+            </if>
+            <if test="storeId != null">
+                store_id= #{storeId,jdbcType=VARCHAR},
+            </if>
+            <if test="rank != null">
+                rank= #{rank,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryStoreServiceByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreService">
+        SELECT <include refid="Base_Column_List"/> FROM store_service
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
+            </if>
+            <if test="record.introduction != null and !&quot;&quot;.equals(record.introduction)">
+                AND introduction = #{record.introduction}
+            </if>
+            <if test="record.storeImage != null and !&quot;&quot;.equals(record.storeImage)">
+                AND store_image = #{record.storeImage}
+            </if>
+            <if test="record.listImage != null and !&quot;&quot;.equals(record.listImage)">
+                AND list_image = #{record.listImage}
+            </if>
+            <if test="record.banner != null and !&quot;&quot;.equals(record.banner)">
+                AND banner = #{record.banner}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.typeLevel != null and !&quot;&quot;.equals(record.typeLevel)">
+                AND type_level = #{record.typeLevel}
+            </if>
+            <if test="record.serviceName != null and !&quot;&quot;.equals(record.serviceName)">
+                AND service_name = #{record.serviceName}
+            </if>
+            <if test="record.title != null and !&quot;&quot;.equals(record.title)">
+                AND title = #{record.title}
+            </if>
+            <if test="record.price != null and !&quot;&quot;.equals(record.price)">
+                AND price = #{record.price}
+            </if>
+            <if test="record.shelfFlag != null and !&quot;&quot;.equals(record.shelfFlag)">
+                AND shelf_flag = #{record.shelfFlag}
+            </if>
+            <if test="record.storeFlag != null and !&quot;&quot;.equals(record.storeFlag)">
+                AND store_flag = #{record.storeFlag}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.miniId != null and !&quot;&quot;.equals(record.miniId)">
+                AND mini_id = #{record.miniId}
+            </if>
+            <if test="record.storeId != null and !&quot;&quot;.equals(record.storeId)">
+                AND store_id = #{record.storeId}
+            </if>
+            <if test="record.rank != null and !&quot;&quot;.equals(record.rank)">
+                AND rank = #{record.rank}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR introduction LIKE concat('%',#{record.searchKey},'%')
+                    OR store_image LIKE concat('%',#{record.searchKey},'%')
+                    OR list_image LIKE concat('%',#{record.searchKey},'%')
+                    OR banner LIKE concat('%',#{record.searchKey},'%')
+                    OR type_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR type_level LIKE concat('%',#{record.searchKey},'%')
+                    OR service_name LIKE concat('%',#{record.searchKey},'%')
+                    OR title LIKE concat('%',#{record.searchKey},'%')
+                    OR price LIKE concat('%',#{record.searchKey},'%')
+                    OR shelf_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR store_flag LIKE concat('%',#{record.searchKey},'%')
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR mini_id LIKE concat('%',#{record.searchKey},'%')
+                    OR store_id LIKE concat('%',#{record.searchKey},'%')
+                    OR rank LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllStoreService" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreService">
+        SELECT <include refid="Base_Column_List"/> FROM store_service
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="introduction != null and !&quot;&quot;.equals(introduction)">
+                AND introduction = #{introduction}
+            </if>
+            <if test="storeImage != null and !&quot;&quot;.equals(storeImage)">
+                AND store_image = #{storeImage}
+            </if>
+            <if test="listImage != null and !&quot;&quot;.equals(listImage)">
+                AND list_image = #{listImage}
+            </if>
+            <if test="banner != null and !&quot;&quot;.equals(banner)">
+                AND banner = #{banner}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="typeLevel != null and !&quot;&quot;.equals(typeLevel)">
+                AND type_level = #{typeLevel}
+            </if>
+            <if test="serviceName != null and !&quot;&quot;.equals(serviceName)">
+                AND service_name = #{serviceName}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="price != null and !&quot;&quot;.equals(price)">
+                AND price = #{price}
+            </if>
+            <if test="shelfFlag != null and !&quot;&quot;.equals(shelfFlag)">
+                AND shelf_flag = #{shelfFlag}
+            </if>
+            <if test="storeFlag != null and !&quot;&quot;.equals(storeFlag)">
+                AND store_flag = #{storeFlag}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR introduction LIKE concat('%',#{searchKey},'%')
+                    OR store_image LIKE concat('%',#{searchKey},'%')
+                    OR list_image LIKE concat('%',#{searchKey},'%')
+                    OR banner LIKE concat('%',#{searchKey},'%')
+                    OR type_flag LIKE concat('%',#{searchKey},'%')
+                    OR type_level LIKE concat('%',#{searchKey},'%')
+                    OR service_name LIKE concat('%',#{searchKey},'%')
+                    OR title LIKE concat('%',#{searchKey},'%')
+                    OR price LIKE concat('%',#{searchKey},'%')
+                    OR shelf_flag LIKE concat('%',#{searchKey},'%')
+                    OR store_flag LIKE concat('%',#{searchKey},'%')
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR mini_id LIKE concat('%',#{searchKey},'%')
+                    OR store_id LIKE concat('%',#{searchKey},'%')
+                    OR rank LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryStoreService" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreService">
+        SELECT <include refid="Base_Column_List"/> FROM store_service
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="introduction != null and !&quot;&quot;.equals(introduction)">
+                AND introduction = #{introduction}
+            </if>
+            <if test="storeImage != null and !&quot;&quot;.equals(storeImage)">
+                AND store_image = #{storeImage}
+            </if>
+            <if test="listImage != null and !&quot;&quot;.equals(listImage)">
+                AND list_image = #{listImage}
+            </if>
+            <if test="banner != null and !&quot;&quot;.equals(banner)">
+                AND banner = #{banner}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="typeLevel != null and !&quot;&quot;.equals(typeLevel)">
+                AND type_level = #{typeLevel}
+            </if>
+            <if test="serviceName != null and !&quot;&quot;.equals(serviceName)">
+                AND service_name = #{serviceName}
+            </if>
+            <if test="title != null and !&quot;&quot;.equals(title)">
+                AND title = #{title}
+            </if>
+            <if test="price != null and !&quot;&quot;.equals(price)">
+                AND price = #{price}
+            </if>
+            <if test="shelfFlag != null and !&quot;&quot;.equals(shelfFlag)">
+                AND shelf_flag = #{shelfFlag}
+            </if>
+            <if test="storeFlag != null and !&quot;&quot;.equals(storeFlag)">
+                AND store_flag = #{storeFlag}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="miniId != null and !&quot;&quot;.equals(miniId)">
+                AND mini_id = #{miniId}
+            </if>
+            <if test="storeId != null and !&quot;&quot;.equals(storeId)">
+                AND store_id = #{storeId}
+            </if>
+            <if test="rank != null and !&quot;&quot;.equals(rank)">
+                AND rank = #{rank}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE store_service SET del_flag = 'Y'
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.StoreService">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM store_service
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 96 - 43
src/main/java/com/izouma/awesomeadmin/model/BannerInfo.java

@@ -1,39 +1,48 @@
 package com.izouma.awesomeadmin.model;
 
+import java.util.*;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
-import java.util.Date;
-
 
 @JsonAutoDetect
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class BannerInfo {
+public class BannerInfo{
+    /*generatedStart*/
     private Integer id;
     private String delFlag;
     private Date updateTime;
     private String updateUser;
     private Date createTime;
     private String createUser;
-    private String location;
+    private String userId;
+    private String miniId;
+    private String storeId;
+    private Integer statusFlag;
+    private Integer typeFlag;
     private String title;
     private String subtitle;
-    private String url;
     private String imageUrl;
+    private String pathUrl;
+    private String remark;
     private Integer rank;
 
-private String searchKey;
+    private String idStr;
+
+    private String searchKey;
 
-/**
-* and,test_name,like,value;or,remark,=,123
-*/
-private String advancedQuery;
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
 
-/**
-* column_name_,desc_;column_name_,asc
-*/
-private String orderByStr;
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
 
+    /*generatedStart*/
     public Integer getId(){
         return this.id;
     }
@@ -76,12 +85,40 @@ private String orderByStr;
     public void setCreateUser(String createUser){
         this.createUser = createUser;
     }
-    public String getLocation(){
-        return this.location;
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getMiniId(){
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId){
+        this.miniId = miniId;
+    }
+    public String getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId){
+        this.storeId = storeId;
+    }
+    public Integer getStatusFlag(){
+        return this.statusFlag;
     }
 
-    public void setLocation(String location){
-        this.location = location;
+    public void setStatusFlag(Integer statusFlag){
+        this.statusFlag = statusFlag;
+    }
+    public Integer getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag){
+        this.typeFlag = typeFlag;
     }
     public String getTitle(){
         return this.title;
@@ -97,13 +134,6 @@ private String orderByStr;
     public void setSubtitle(String subtitle){
         this.subtitle = subtitle;
     }
-    public String getUrl(){
-        return this.url;
-    }
-
-    public void setUrl(String url){
-        this.url = url;
-    }
     public String getImageUrl(){
         return this.imageUrl;
     }
@@ -111,6 +141,20 @@ private String orderByStr;
     public void setImageUrl(String imageUrl){
         this.imageUrl = imageUrl;
     }
+    public String getPathUrl(){
+        return this.pathUrl;
+    }
+
+    public void setPathUrl(String pathUrl){
+        this.pathUrl = pathUrl;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
     public Integer getRank(){
         return this.rank;
     }
@@ -119,29 +163,38 @@ private String orderByStr;
         this.rank = rank;
     }
 
-public String getSearchKey() {
-    return searchKey;
-}
+    public String getSearchKey() {
+        return searchKey;
+    }
 
-public void setSearchKey(String searchKey) {
-    this.searchKey = searchKey;
-}
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
 
-public String getAdvancedQuery() {
-    return advancedQuery;
-}
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
 
-public void setAdvancedQuery(String advancedQuery) {
-    this.advancedQuery = advancedQuery;
-}
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
 
-public String getOrderByStr() {
-    return orderByStr;
-}
+    public String getOrderByStr() {
+        return orderByStr;
+    }
 
-public void setOrderByStr(String orderByStr) {
-    this.orderByStr = orderByStr;
-}
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
 
 }
 

+ 200 - 0
src/main/java/com/izouma/awesomeadmin/model/HomeAd.java

@@ -0,0 +1,200 @@
+package com.izouma.awesomeadmin.model;
+
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class HomeAd{
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String userId;
+    private String miniId;
+    private String storeId;
+    private Integer statusFlag;
+    private Integer typeFlag;
+    private String title;
+    private String subtitle;
+    private String imageUrl;
+    private String pathUrl;
+    private String remark;
+    private Integer rank;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Date getUpdateTime(){
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime){
+        this.updateTime = updateTime;
+    }
+    public String getUpdateUser(){
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser){
+        this.updateUser = updateUser;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+    public String getCreateUser(){
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser){
+        this.createUser = createUser;
+    }
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getMiniId(){
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId){
+        this.miniId = miniId;
+    }
+    public String getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId){
+        this.storeId = storeId;
+    }
+    public Integer getStatusFlag(){
+        return this.statusFlag;
+    }
+
+    public void setStatusFlag(Integer statusFlag){
+        this.statusFlag = statusFlag;
+    }
+    public Integer getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public String getTitle(){
+        return this.title;
+    }
+
+    public void setTitle(String title){
+        this.title = title;
+    }
+    public String getSubtitle(){
+        return this.subtitle;
+    }
+
+    public void setSubtitle(String subtitle){
+        this.subtitle = subtitle;
+    }
+    public String getImageUrl(){
+        return this.imageUrl;
+    }
+
+    public void setImageUrl(String imageUrl){
+        this.imageUrl = imageUrl;
+    }
+    public String getPathUrl(){
+        return this.pathUrl;
+    }
+
+    public void setPathUrl(String pathUrl){
+        this.pathUrl = pathUrl;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+    public Integer getRank(){
+        return this.rank;
+    }
+
+    public void setRank(Integer rank){
+        this.rank = rank;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
+
+}
+

+ 192 - 0
src/main/java/com/izouma/awesomeadmin/model/HomeMenu.java

@@ -0,0 +1,192 @@
+package com.izouma.awesomeadmin.model;
+
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class HomeMenu{
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String userId;
+    private String miniId;
+    private String storeId;
+    private String typeFlag;
+    private String title;
+    private String icon;
+    private String pathUrl;
+    private String remark;
+    private Integer rank;
+    private Integer statusFlag;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Date getUpdateTime(){
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime){
+        this.updateTime = updateTime;
+    }
+    public String getUpdateUser(){
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser){
+        this.updateUser = updateUser;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+    public String getCreateUser(){
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser){
+        this.createUser = createUser;
+    }
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getMiniId(){
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId){
+        this.miniId = miniId;
+    }
+    public String getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId){
+        this.storeId = storeId;
+    }
+    public String getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(String typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public String getTitle(){
+        return this.title;
+    }
+
+    public void setTitle(String title){
+        this.title = title;
+    }
+    public String getIcon(){
+        return this.icon;
+    }
+
+    public void setIcon(String icon){
+        this.icon = icon;
+    }
+    public String getPathUrl(){
+        return this.pathUrl;
+    }
+
+    public void setPathUrl(String pathUrl){
+        this.pathUrl = pathUrl;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+    public Integer getRank(){
+        return this.rank;
+    }
+
+    public void setRank(Integer rank){
+        this.rank = rank;
+    }
+    public Integer getStatusFlag(){
+        return this.statusFlag;
+    }
+
+    public void setStatusFlag(Integer statusFlag){
+        this.statusFlag = statusFlag;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
+
+}
+

+ 84 - 27
src/main/java/com/izouma/awesomeadmin/model/ItemType.java

@@ -1,13 +1,14 @@
 package com.izouma.awesomeadmin.model;
 
 import java.util.*;
+
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonInclude;
 
 
 @JsonAutoDetect
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class ItemType{
+public class ItemType {
     /*generatedStart*/
     private Integer id;
     private String delFlag;
@@ -20,101 +21,149 @@ public class ItemType{
     private Integer sort;
     private String icon;
     private String remark;
+    private String userId;
+    private String storeId;
+    private String miniId;
+    private Integer typeFlag;
 
     private String idStr;
 
     private String searchKey;
 
     /**
-    * and,test_name,like,value;or,remark,=,123
-    */
+     * and,test_name,like,value;or,remark,=,123
+     */
     private String advancedQuery;
 
     /**
-    * column_name_,desc_;column_name_,asc
-    */
+     * column_name_,desc_;column_name_,asc
+     */
     private String orderByStr;
     /*generatedEnd*/
 
+    private List<ItemType> children;
+
     /*generatedStart*/
-    public Integer getId(){
+    public Integer getId() {
         return this.id;
     }
 
-    public void setId(Integer id){
+    public void setId(Integer id) {
         this.id = id;
     }
-    public String getDelFlag(){
+
+    public String getDelFlag() {
         return this.delFlag;
     }
 
-    public void setDelFlag(String delFlag){
+    public void setDelFlag(String delFlag) {
         this.delFlag = delFlag;
     }
-    public Date getUpdateTime(){
+
+    public Date getUpdateTime() {
         return this.updateTime;
     }
 
-    public void setUpdateTime(Date updateTime){
+    public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
-    public String getUpdateUser(){
+
+    public String getUpdateUser() {
         return this.updateUser;
     }
 
-    public void setUpdateUser(String updateUser){
+    public void setUpdateUser(String updateUser) {
         this.updateUser = updateUser;
     }
-    public Date getCreateTime(){
+
+    public Date getCreateTime() {
         return this.createTime;
     }
 
-    public void setCreateTime(Date createTime){
+    public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
-    public String getCreateUser(){
+
+    public String getCreateUser() {
         return this.createUser;
     }
 
-    public void setCreateUser(String createUser){
+    public void setCreateUser(String createUser) {
         this.createUser = createUser;
     }
-    public String getTypeName(){
+
+    public String getTypeName() {
         return this.typeName;
     }
 
-    public void setTypeName(String typeName){
+    public void setTypeName(String typeName) {
         this.typeName = typeName;
     }
-    public Integer getParentId(){
+
+    public Integer getParentId() {
         return this.parentId;
     }
 
-    public void setParentId(Integer parentId){
+    public void setParentId(Integer parentId) {
         this.parentId = parentId;
     }
-    public Integer getSort(){
+
+    public Integer getSort() {
         return this.sort;
     }
 
-    public void setSort(Integer sort){
+    public void setSort(Integer sort) {
         this.sort = sort;
     }
-    public String getIcon(){
+
+    public String getIcon() {
         return this.icon;
     }
 
-    public void setIcon(String icon){
+    public void setIcon(String icon) {
         this.icon = icon;
     }
-    public String getRemark(){
+
+    public String getRemark() {
         return this.remark;
     }
 
-    public void setRemark(String remark){
+    public void setRemark(String remark) {
         this.remark = remark;
     }
 
+    public String getUserId() {
+        return this.userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getStoreId() {
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getMiniId() {
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId) {
+        this.miniId = miniId;
+    }
+
+    public Integer getTypeFlag() {
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag) {
+        this.typeFlag = typeFlag;
+    }
+
     public String getSearchKey() {
         return searchKey;
     }
@@ -148,5 +197,13 @@ public class ItemType{
     }
     /*generatedEnd*/
 
+
+    public List<ItemType> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<ItemType> children) {
+        this.children = children;
+    }
 }
 

+ 184 - 0
src/main/java/com/izouma/awesomeadmin/model/StoreCase.java

@@ -0,0 +1,184 @@
+package com.izouma.awesomeadmin.model;
+
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class StoreCase{
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String caseName;
+    private String title;
+    private String remark;
+    private String image;
+    private String typeFlag;
+    private Integer rank;
+    private String userId;
+    private String miniId;
+    private String storeId;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Date getUpdateTime(){
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime){
+        this.updateTime = updateTime;
+    }
+    public String getUpdateUser(){
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser){
+        this.updateUser = updateUser;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+    public String getCreateUser(){
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser){
+        this.createUser = createUser;
+    }
+    public String getCaseName(){
+        return this.caseName;
+    }
+
+    public void setCaseName(String caseName){
+        this.caseName = caseName;
+    }
+    public String getTitle(){
+        return this.title;
+    }
+
+    public void setTitle(String title){
+        this.title = title;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+    public String getImage(){
+        return this.image;
+    }
+
+    public void setImage(String image){
+        this.image = image;
+    }
+    public String getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(String typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public Integer getRank(){
+        return this.rank;
+    }
+
+    public void setRank(Integer rank){
+        this.rank = rank;
+    }
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getMiniId(){
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId){
+        this.miniId = miniId;
+    }
+    public String getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId){
+        this.storeId = storeId;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
+
+}
+

+ 192 - 0
src/main/java/com/izouma/awesomeadmin/model/StoreIntroduction.java

@@ -0,0 +1,192 @@
+package com.izouma.awesomeadmin.model;
+
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class StoreIntroduction{
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String introduction;
+    private String banner;
+    private String address;
+    private String longitude;
+    private String latitude;
+    private String title;
+    private String userId;
+    private String miniId;
+    private String storeId;
+    private String remark;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Date getUpdateTime(){
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime){
+        this.updateTime = updateTime;
+    }
+    public String getUpdateUser(){
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser){
+        this.updateUser = updateUser;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+    public String getCreateUser(){
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser){
+        this.createUser = createUser;
+    }
+    public String getIntroduction(){
+        return this.introduction;
+    }
+
+    public void setIntroduction(String introduction){
+        this.introduction = introduction;
+    }
+    public String getBanner(){
+        return this.banner;
+    }
+
+    public void setBanner(String banner){
+        this.banner = banner;
+    }
+    public String getAddress(){
+        return this.address;
+    }
+
+    public void setAddress(String address){
+        this.address = address;
+    }
+    public String getLongitude(){
+        return this.longitude;
+    }
+
+    public void setLongitude(String longitude){
+        this.longitude = longitude;
+    }
+    public String getLatitude(){
+        return this.latitude;
+    }
+
+    public void setLatitude(String latitude){
+        this.latitude = latitude;
+    }
+    public String getTitle(){
+        return this.title;
+    }
+
+    public void setTitle(String title){
+        this.title = title;
+    }
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getMiniId(){
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId){
+        this.miniId = miniId;
+    }
+    public String getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId){
+        this.storeId = storeId;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
+
+}
+

+ 241 - 0
src/main/java/com/izouma/awesomeadmin/model/StoreService.java

@@ -0,0 +1,241 @@
+package com.izouma.awesomeadmin.model;
+
+import java.math.BigDecimal;
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class StoreService{
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String introduction;
+    private String storeImage;
+    private String listImage;
+    private String banner;
+    private String typeFlag;
+    private Integer typeLevel;
+    private String serviceName;
+    private String title;
+    private BigDecimal price;
+    private String shelfFlag;
+    private String storeFlag;
+    private String userId;
+    private String miniId;
+    private String storeId;
+    private Integer rank;
+    private String remark;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Date getUpdateTime(){
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime){
+        this.updateTime = updateTime;
+    }
+    public String getUpdateUser(){
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser){
+        this.updateUser = updateUser;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+    public String getCreateUser(){
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser){
+        this.createUser = createUser;
+    }
+    public String getIntroduction(){
+        return this.introduction;
+    }
+
+    public void setIntroduction(String introduction){
+        this.introduction = introduction;
+    }
+    public String getStoreImage(){
+        return this.storeImage;
+    }
+
+    public void setStoreImage(String storeImage){
+        this.storeImage = storeImage;
+    }
+    public String getListImage(){
+        return this.listImage;
+    }
+
+    public void setListImage(String listImage){
+        this.listImage = listImage;
+    }
+    public String getBanner(){
+        return this.banner;
+    }
+
+    public void setBanner(String banner){
+        this.banner = banner;
+    }
+    public String getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(String typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public Integer getTypeLevel(){
+        return this.typeLevel;
+    }
+
+    public void setTypeLevel(Integer typeLevel){
+        this.typeLevel = typeLevel;
+    }
+    public String getServiceName(){
+        return this.serviceName;
+    }
+
+    public void setServiceName(String serviceName){
+        this.serviceName = serviceName;
+    }
+    public String getTitle(){
+        return this.title;
+    }
+
+    public void setTitle(String title){
+        this.title = title;
+    }
+    public BigDecimal getPrice(){
+        return this.price;
+    }
+
+    public void setPrice(BigDecimal price){
+        this.price = price;
+    }
+    public String getShelfFlag(){
+        return this.shelfFlag;
+    }
+
+    public void setShelfFlag(String shelfFlag){
+        this.shelfFlag = shelfFlag;
+    }
+    public String getStoreFlag(){
+        return this.storeFlag;
+    }
+
+    public void setStoreFlag(String storeFlag){
+        this.storeFlag = storeFlag;
+    }
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getMiniId(){
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId){
+        this.miniId = miniId;
+    }
+    public String getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId){
+        this.storeId = storeId;
+    }
+    public Integer getRank(){
+        return this.rank;
+    }
+
+    public void setRank(Integer rank){
+        this.rank = rank;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
+
+}
+

+ 168 - 0
src/main/java/com/izouma/awesomeadmin/model/StoreServiceLevel.java

@@ -0,0 +1,168 @@
+package com.izouma.awesomeadmin.model;
+
+import java.util.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class StoreServiceLevel{
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String typeFlag;
+    private String levelName;
+    private String userId;
+    private String miniId;
+    private String storeId;
+    private Integer rank;
+    private String remark;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Date getUpdateTime(){
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime){
+        this.updateTime = updateTime;
+    }
+    public String getUpdateUser(){
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser){
+        this.updateUser = updateUser;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+    public String getCreateUser(){
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser){
+        this.createUser = createUser;
+    }
+    public String getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(String typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public String getLevelName(){
+        return this.levelName;
+    }
+
+    public void setLevelName(String levelName){
+        this.levelName = levelName;
+    }
+    public String getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(String userId){
+        this.userId = userId;
+    }
+    public String getMiniId(){
+        return this.miniId;
+    }
+
+    public void setMiniId(String miniId){
+        this.miniId = miniId;
+    }
+    public String getStoreId(){
+        return this.storeId;
+    }
+
+    public void setStoreId(String storeId){
+        this.storeId = storeId;
+    }
+    public Integer getRank(){
+        return this.rank;
+    }
+
+    public void setRank(Integer rank){
+        this.rank = rank;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
+
+}
+

+ 5 - 5
src/main/java/com/izouma/awesomeadmin/service/BannerInfoService.java

@@ -1,16 +1,15 @@
 package com.izouma.awesomeadmin.service;
 
+import java.util.*;
 import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.model.BannerInfo;
 
-import java.util.List;
-
 
 /**
 *  service接口类
 */
-public interface BannerInfoService {
-
+public interface BannerInfoService{
+    /*generatedStart*/
     List<BannerInfo> getBannerInfoList(BannerInfo record);
 
     List<BannerInfo> getBannerInfoByPage(Page page, BannerInfo record);
@@ -21,8 +20,9 @@ public interface BannerInfoService {
 
     boolean createBannerInfo(BannerInfo record);
 
-    boolean deleteBannerInfo(String id);
+    boolean deleteBannerInfo(BannerInfo record);
 
     boolean updateBannerInfo(BannerInfo record);
+    /*generatedEnd*/
 }
 

+ 28 - 0
src/main/java/com/izouma/awesomeadmin/service/HomeAdService.java

@@ -0,0 +1,28 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.HomeAd;
+
+
+/**
+*  service接口类
+*/
+public interface HomeAdService{
+    /*generatedStart*/
+    List<HomeAd> getHomeAdList(HomeAd record);
+
+    List<HomeAd> getHomeAdByPage(Page page, HomeAd record);
+
+    HomeAd getHomeAdById(String id);
+
+    HomeAd getHomeAd(HomeAd record);
+
+    boolean createHomeAd(HomeAd record);
+
+    boolean deleteHomeAd(HomeAd record);
+
+    boolean updateHomeAd(HomeAd record);
+    /*generatedEnd*/
+}
+

+ 28 - 0
src/main/java/com/izouma/awesomeadmin/service/HomeMenuService.java

@@ -0,0 +1,28 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.HomeMenu;
+
+
+/**
+*  service接口类
+*/
+public interface HomeMenuService{
+    /*generatedStart*/
+    List<HomeMenu> getHomeMenuList(HomeMenu record);
+
+    List<HomeMenu> getHomeMenuByPage(Page page, HomeMenu record);
+
+    HomeMenu getHomeMenuById(String id);
+
+    HomeMenu getHomeMenu(HomeMenu record);
+
+    boolean createHomeMenu(HomeMenu record);
+
+    boolean deleteHomeMenu(HomeMenu record);
+
+    boolean updateHomeMenu(HomeMenu record);
+    /*generatedEnd*/
+}
+

+ 7 - 2
src/main/java/com/izouma/awesomeadmin/service/ImageFileService.java

@@ -30,6 +30,8 @@ public class ImageFileService {
         String bucketname = PropertiesFileLoader.getDefaultProperties("alibucketname", "izouma");
         OSSClient client = new OSSClient(aliossendpoit, aliid, alikey);
         OSSObject object = null;
+        boolean found = false;
+
         logger.info("UpLoadImage :上传照片  : aliid:" + aliid + "; alikey: " + alikey + "; aliossendpoit : " + aliossendpoit + "; bucketname:"
                 + bucketname);
         if (path.startsWith("/")) {
@@ -39,12 +41,15 @@ public class ImageFileService {
         PutObjectResult result = client.putObject(bucketname, path, fin, new ObjectMetadata());
 
         try {
-            object = client.getObject(bucketname, path);
+            //object = client.getObject(bucketname, path);
+            found = client.doesObjectExist(bucketname, path);
         } catch (Exception r) {
             logger.error("UpLoadImage: 上传照片异常 ", r);
         }
+
+        client.shutdown();
         // 如果不设置content-length, 默认为chunked编码。
-        if (object != null) {
+        if (found) {
             return "file exist";
         }
 

+ 2 - 0
src/main/java/com/izouma/awesomeadmin/service/ItemTypeService.java

@@ -24,5 +24,7 @@ public interface ItemTypeService{
 
     boolean updateItemType(ItemType record);
     /*generatedEnd*/
+
+    List<ItemType> getItemTypeTree(ItemType record);
 }
 

+ 36 - 167
src/main/java/com/izouma/awesomeadmin/service/OSSFileService.java

@@ -3,6 +3,7 @@ package com.izouma.awesomeadmin.service;
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.model.OSSObject;
 import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.PutObjectResult;
 import com.izouma.awesomeadmin.util.ImagesUtil;
 import com.izouma.awesomeadmin.util.PropertiesFileLoader;
 import org.apache.commons.lang.StringUtils;
@@ -32,30 +33,48 @@ public class OSSFileService {
     private static Logger logger = Logger.getLogger(OSSFileService.class);
     private static final String projectName = PropertiesFileLoader.getProperties("projectname");
 
+    String aliid = PropertiesFileLoader.getDefaultProperties("aliossid", "");
+    String alikey = PropertiesFileLoader.getDefaultProperties("aliosskey", "");
+    String aliossendpoit = PropertiesFileLoader.getDefaultProperties("aliossendpoit", "");
+    String bucketname = PropertiesFileLoader.getDefaultProperties("alibucketname", "");
+
     public String upload(InputStream fin, String path) {
         if (path.startsWith("/")) {
             path = path.replaceFirst("\\\\/", "");
         }
         path = projectName + "/" + path;
 
-        String aliid = PropertiesFileLoader.getDefaultProperties("aliossid", "");
-        String alikey = PropertiesFileLoader.getDefaultProperties("aliosskey", "");
-        String aliossendpoit = PropertiesFileLoader.getDefaultProperties("aliossendpoit", "");
-        String bucketname = PropertiesFileLoader.getDefaultProperties("alibucketname", "");
+
         logger.info(String.format("OSS上传:\naliid: %s\nalikey: %s\naliossendpoit: %s\nbucketname: %s\npath: %s", aliid, alikey, aliossendpoit, bucketname, path));
 
         OSSClient client = new OSSClient(aliossendpoit, aliid, alikey);
-        OSSObject object = null;
+        boolean found = false;
         try {
-            client.putObject(bucketname, path, fin, new ObjectMetadata());
-            object = client.getObject(bucketname, path);
+            PutObjectResult result = client.putObject(bucketname, path, fin, new ObjectMetadata());
+
+            // 判断文件是否存在。doesObjectExist还有一个参数isOnlyInOSS,如果为true则忽略302重定向或镜像;如果为false,则考虑302重定向或镜像。
+            found = client.doesObjectExist(bucketname, path);
+            System.out.println(found + "path");
+
         } catch (Exception r) {
             logger.error("OSS上传异常:", r);
+        } finally {
+
+            try {
+
+                fin.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
         }
+
+        client.shutdown();
         // 如果不设置content-length, 默认为chunked编码。
-        if (object != null) {
+        if (found) {
             return getFullPath(path);
         }
+
+
         return null;
     }
 
@@ -101,10 +120,6 @@ public class OSSFileService {
     public void deleteObject(String objectName) {
 
         if (StringUtils.isNotEmpty(objectName)) {
-            String aliid = PropertiesFileLoader.getDefaultProperties("aliossid", "");
-            String alikey = PropertiesFileLoader.getDefaultProperties("aliosskey", "");
-            String aliossendpoit = PropertiesFileLoader.getDefaultProperties("aliossendpoit", "");
-            String bucketname = PropertiesFileLoader.getDefaultProperties("alibucketname", "");
             logger.info(String.format("OSS 删除:\naliid: %s\nalikey: %s\naliossendpoit: %s\nbucketname: %s\npath: %s", aliid, alikey, aliossendpoit, bucketname, objectName));
 
             OSSClient client = new OSSClient(aliossendpoit, aliid, alikey);
@@ -117,162 +132,16 @@ public class OSSFileService {
     }
 
 
-    /**
-     * 批量下载图片
-     *
-     * @param keyList  ossfileName 逗号分隔。
-     * @param zipName  压缩包名称
-     * @param request
-     * @param response
-     * @return
-     */
-    public HttpServletResponse zipFilesDown(List<String> keyList, String zipName, HttpServletRequest request, HttpServletResponse response) {
-
-        String accessKeyId = PropertiesFileLoader.getDefaultProperties("aliossid", "");
-        String accessKeySecret = PropertiesFileLoader.getDefaultProperties("aliosskey", "");
-        String endpoint = PropertiesFileLoader.getDefaultProperties("aliossendpoit", "");
-        String bucketName = PropertiesFileLoader.getDefaultProperties("alibucketname", "");
-
-        // endpoint以杭州为例,其它region请按实际情况填写
-        // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
-        try {
-            // 初始化
-            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
-            String fileName = zipName + ".zip";
-            // 创建临时文件
-            File zipFile = File.createTempFile(zipName, ".zip");
-            FileOutputStream f = new FileOutputStream(zipFile);
-            /**
-             * 作用是为任何OutputStream产生校验和
-             * 第一个参数是制定产生校验和的输出流,第二个参数是指定Checksum的类型 (Adler32(较快)和CRC32两种)
-             */
-            CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
-            // 用于将数据压缩成Zip文件格式
-            ZipOutputStream zos = new ZipOutputStream(csum);
-
-            for (String ossfile : keyList) {
-                try {
-                    // 获取Object,返回结果为OSSObject对象
-                    OSSObject ossObject = ossClient.getObject(bucketName, ossfile);
-                    // 读去Object内容  返回
-                    InputStream inputStream = ossObject.getObjectContent();
-                    // 对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法,确保压缩包里面文件不同名
-
-                    zos.putNextEntry(new ZipEntry(ossfile.split("/")[ossfile.split("/").length - 1]));
-                    int bytesRead = 0;
-                    // 向压缩文件中输出数据
-                    while ((bytesRead = inputStream.read()) != -1) {
-                        zos.write(bytesRead);
-                    }
-                    inputStream.close();
-                    zos.closeEntry(); // 当前文件写完,定位为写入下一条项目
-                } catch (Exception e) {
-                    logger.error("ossfile, 压缩失败", e);
-                }
-            }
-            zos.close();
-            String header = request.getHeader("User-Agent").toUpperCase();
-            if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
-                fileName = URLEncoder.encode(fileName, "utf-8");
-                fileName = fileName.replace("+", "%20");    //IE下载文件名空格变+号问题
-            } else {
-                fileName = new String(fileName.getBytes(), "ISO8859-1");
-            }
-            response.reset();
-            response.setContentType("text/plain");
-            response.setContentType("application/octet-stream; charset=utf-8");
-            response.setHeader("Location", fileName);
-            response.setHeader("Cache-Control", "max-age=0");
-            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
-
-            FileInputStream fis = new FileInputStream(zipFile);
-            BufferedInputStream buff = new BufferedInputStream(fis);
-            BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
-            byte[] car = new byte[1024];
-            int l = 0;
-            while (l < zipFile.length()) {
-                int j = buff.read(car, 0, 1024);
-                l += j;
-                out.write(car, 0, j);
-            }
-            // 关闭流
-            fis.close();
-            buff.close();
-            out.close();
+    public boolean doesObjectExist(String path) {
 
-            ossClient.shutdown();
-            // 删除临时文件
-            zipFile.delete();
-        } catch (Exception e) {
-            logger.error("压缩失败", e);
-        }
-        return response;
-    }
-
-    /**
-     * 单张图片下载
-     *
-     * @param key
-     * @param request
-     * @param response
-     * @return
-     */
-    public HttpServletResponse singleFileDown(String key, HttpServletRequest request, HttpServletResponse response) {
-
-        String accessKeyId = PropertiesFileLoader.getDefaultProperties("aliossid", "");
-        String accessKeySecret = PropertiesFileLoader.getDefaultProperties("aliosskey", "");
-        String endpoint = PropertiesFileLoader.getDefaultProperties("aliossendpoit", "");
-        String bucketName = PropertiesFileLoader.getDefaultProperties("alibucketname", "");
-
-        // endpoint以杭州为例,其它region请按实际情况填写
-        // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
-        try {
-            // 初始化
-            OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
-
-            // 获取Object,返回结果为OSSObject对象
-            OSSObject ossObject = ossClient.getObject(bucketName, key);
-            // 读去Object内容  返回
-            InputStream inputStream = ossObject.getObjectContent();
-            // 对于每一个要被存放到压缩包的文件,都必须调用ZipOutputStream对象的putNextEntry()方法,确保压缩包里面文件不同名
-            String fileName = key.split("/")[key.split("/").length - 1];
-
-            String header = request.getHeader("User-Agent").toUpperCase();
-            if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
-                fileName = URLEncoder.encode(fileName, "utf-8");
-                fileName = fileName.replace("+", "%20");    //IE下载文件名空格变+号问题
-            } else {
-                fileName = new String(fileName.getBytes(), "ISO8859-1");
-            }
-            response.reset();
-            response.setContentType("text/plain");
-            response.setContentType("application/octet-stream; charset=utf-8");
-            response.setHeader("Location", fileName);
-            response.setHeader("Cache-Control", "max-age=0");
-            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
-
-            BufferedInputStream buff = new BufferedInputStream(inputStream);
-            BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
-            byte[] car = new byte[1024];
-            int l = 0;
-
-            while ((l = inputStream.read(car)) != -1) {
-                if (car.length != 0) {
-                    out.write(car, 0, l);
-                }
-            }
-
-            // 关闭流
-            inputStream.close();
-            buff.close();
-            out.close();
+        logger.info(String.format("OSS上传:\naliid: %s\nalikey: %s\naliossendpoit: %s\nbucketname: %s\npath: %s", aliid, alikey, aliossendpoit, bucketname, path));
 
-            ossClient.shutdown();
-        } catch (Exception e) {
-            logger.error("下载图片失败", e);
-        }
-        return response;
+        OSSClient client = new OSSClient(aliossendpoit, aliid, alikey);
+        boolean found = false;
+        // 判断文件是否存在。doesObjectExist还有一个参数isOnlyInOSS,如果为true则忽略302重定向或镜像;如果为false,则考虑302重定向或镜像。
+        found = client.doesObjectExist(bucketname, path);
+        System.out.println(found + "path");
+        client.shutdown();
+        return found;
     }
-
-
 }

+ 28 - 0
src/main/java/com/izouma/awesomeadmin/service/StoreCaseService.java

@@ -0,0 +1,28 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreCase;
+
+
+/**
+*  service接口类
+*/
+public interface StoreCaseService{
+    /*generatedStart*/
+    List<StoreCase> getStoreCaseList(StoreCase record);
+
+    List<StoreCase> getStoreCaseByPage(Page page, StoreCase record);
+
+    StoreCase getStoreCaseById(String id);
+
+    StoreCase getStoreCase(StoreCase record);
+
+    boolean createStoreCase(StoreCase record);
+
+    boolean deleteStoreCase(StoreCase record);
+
+    boolean updateStoreCase(StoreCase record);
+    /*generatedEnd*/
+}
+

+ 28 - 0
src/main/java/com/izouma/awesomeadmin/service/StoreIntroductionService.java

@@ -0,0 +1,28 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreIntroduction;
+
+
+/**
+*  service接口类
+*/
+public interface StoreIntroductionService{
+    /*generatedStart*/
+    List<StoreIntroduction> getStoreIntroductionList(StoreIntroduction record);
+
+    List<StoreIntroduction> getStoreIntroductionByPage(Page page, StoreIntroduction record);
+
+    StoreIntroduction getStoreIntroductionById(String id);
+
+    StoreIntroduction getStoreIntroduction(StoreIntroduction record);
+
+    boolean createStoreIntroduction(StoreIntroduction record);
+
+    boolean deleteStoreIntroduction(StoreIntroduction record);
+
+    boolean updateStoreIntroduction(StoreIntroduction record);
+    /*generatedEnd*/
+}
+

+ 28 - 0
src/main/java/com/izouma/awesomeadmin/service/StoreServiceLevelService.java

@@ -0,0 +1,28 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreServiceLevel;
+
+
+/**
+*  service接口类
+*/
+public interface StoreServiceLevelService{
+    /*generatedStart*/
+    List<StoreServiceLevel> getStoreServiceLevelList(StoreServiceLevel record);
+
+    List<StoreServiceLevel> getStoreServiceLevelByPage(Page page, StoreServiceLevel record);
+
+    StoreServiceLevel getStoreServiceLevelById(String id);
+
+    StoreServiceLevel getStoreServiceLevel(StoreServiceLevel record);
+
+    boolean createStoreServiceLevel(StoreServiceLevel record);
+
+    boolean deleteStoreServiceLevel(StoreServiceLevel record);
+
+    boolean updateStoreServiceLevel(StoreServiceLevel record);
+    /*generatedEnd*/
+}
+

+ 28 - 0
src/main/java/com/izouma/awesomeadmin/service/StoreServiceService.java

@@ -0,0 +1,28 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreService;
+
+
+/**
+*  service接口类
+*/
+public interface StoreServiceService{
+    /*generatedStart*/
+    List<StoreService> getStoreServiceList(StoreService record);
+
+    List<StoreService> getStoreServiceByPage(Page page, StoreService record);
+
+    StoreService getStoreServiceById(String id);
+
+    StoreService getStoreService(StoreService record);
+
+    boolean createStoreService(StoreService record);
+
+    boolean deleteStoreService(StoreService record);
+
+    boolean updateStoreService(StoreService record);
+    /*generatedEnd*/
+}
+

+ 22 - 45
src/main/java/com/izouma/awesomeadmin/service/impl/BannerInfoServiceImpl.java

@@ -1,140 +1,117 @@
 package com.izouma.awesomeadmin.service.impl;
 
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import com.izouma.awesomeadmin.constant.AppConstant;
-import com.izouma.awesomeadmin.dao.BannerInfoMapper;
 import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.model.BannerInfo;
 import com.izouma.awesomeadmin.service.BannerInfoService;
-import org.apache.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.izouma.awesomeadmin.dao.BannerInfoMapper;
 
 /**
 *  service接口实现类
 */
 @Service
-public class BannerInfoServiceImpl implements BannerInfoService {
-
+public class BannerInfoServiceImpl implements BannerInfoService{
+    /*generatedStart*/
     private static Logger logger = Logger.getLogger(BannerInfoServiceImpl.class);
 
     @Autowired
     private BannerInfoMapper bannerInfoMapper;
+    /*generatedEnd*/
 
+    /*generatedStart*/
     @Override
     public List<BannerInfo> getBannerInfoList(BannerInfo record) {
-
         logger.info("getBannerInfoList");
         try {
-
-        return bannerInfoMapper.queryAllBannerInfo(record);
+            return bannerInfoMapper.queryAllBannerInfo(record);
         } catch (Exception e) {
-        logger.error("getBannerInfoList", e);
+            logger.error("getBannerInfoList", e);
         }
-
         return null;
     }
+
     @Override
     public List<BannerInfo> getBannerInfoByPage(Page page, BannerInfo record) {
-
         logger.info("getBannerInfoByPage");
         try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
 
-        Map<String, Object> parameter = new HashMap<String, Object>();
-        parameter.put("record", record);
-        parameter.put(AppConstant.PAGE, page);
-
-        return bannerInfoMapper.queryBannerInfoByPage(parameter);
+            return bannerInfoMapper.queryBannerInfoByPage(parameter);
         } catch (Exception e) {
-        logger.error("getBannerInfoByPage", e);
+            logger.error("getBannerInfoByPage", e);
         }
-
         return null;
     }
 
     @Override
     public BannerInfo getBannerInfoById(String id) {
-
         logger.info("getBannerInfoyId");
         try {
-
             return bannerInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
         } catch (Exception e) {
-        logger.error("getBannerInfoById", e);
+            logger.error("getBannerInfoById", e);
         }
-
         return null;
     }
 
     @Override
     public BannerInfo getBannerInfo(BannerInfo record) {
-
         logger.info("getBannerInfo");
         try {
-
             return bannerInfoMapper.queryBannerInfo(record);
         } catch (Exception e) {
-        logger.error("getBannerInfo", e);
+            logger.error("getBannerInfo", e);
         }
-
         return null;
     }
 
     @Override
     public boolean createBannerInfo(BannerInfo record) {
-
         logger.info("createBannerInfo");
         try {
-
             int updates = bannerInfoMapper.insertSelective(record);
-
             if (updates > 0) {
                  return true;
             }
         } catch (Exception e) {
             logger.error("createBannerInfo", e);
         }
-
         return false;
     }
 
     @Override
-    public boolean deleteBannerInfo(String id) {
-
+    public boolean deleteBannerInfo(BannerInfo record) {
         logger.info("deleteBannerInfo");
         try {
-
-             int updates = bannerInfoMapper.delete(id);
-
+            int updates = bannerInfoMapper.delete(record);
             if (updates > 0) {
                  return true;
             }
         } catch (Exception e) {
              logger.error("deleteBannerInfo", e);
         }
-
         return false;
     }
 
     @Override
     public boolean updateBannerInfo(BannerInfo record) {
-
         logger.info("updateBannerInfo");
         try {
-
             int updates = bannerInfoMapper.updateByPrimaryKeySelective(record);
-
             if (updates > 0) {
                  return true;
             }
         } catch (Exception e) {
              logger.error("updateBannerInfo", e);
         }
-
         return false;
     }
+    /*generatedEnd*/
 }
 

+ 117 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/HomeAdServiceImpl.java

@@ -0,0 +1,117 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.HomeAd;
+import com.izouma.awesomeadmin.service.HomeAdService;
+import com.izouma.awesomeadmin.dao.HomeAdMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class HomeAdServiceImpl implements HomeAdService{
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(HomeAdServiceImpl.class);
+
+    @Autowired
+    private HomeAdMapper homeAdMapper;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @Override
+    public List<HomeAd> getHomeAdList(HomeAd record) {
+        logger.info("getHomeAdList");
+        try {
+            return homeAdMapper.queryAllHomeAd(record);
+        } catch (Exception e) {
+            logger.error("getHomeAdList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<HomeAd> getHomeAdByPage(Page page, HomeAd record) {
+        logger.info("getHomeAdByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return homeAdMapper.queryHomeAdByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getHomeAdByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public HomeAd getHomeAdById(String id) {
+        logger.info("getHomeAdyId");
+        try {
+            return homeAdMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getHomeAdById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public HomeAd getHomeAd(HomeAd record) {
+        logger.info("getHomeAd");
+        try {
+            return homeAdMapper.queryHomeAd(record);
+        } catch (Exception e) {
+            logger.error("getHomeAd", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createHomeAd(HomeAd record) {
+        logger.info("createHomeAd");
+        try {
+            int updates = homeAdMapper.insertSelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createHomeAd", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteHomeAd(HomeAd record) {
+        logger.info("deleteHomeAd");
+        try {
+            int updates = homeAdMapper.delete(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteHomeAd", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateHomeAd(HomeAd record) {
+        logger.info("updateHomeAd");
+        try {
+            int updates = homeAdMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateHomeAd", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+}
+

+ 117 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/HomeMenuServiceImpl.java

@@ -0,0 +1,117 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.HomeMenu;
+import com.izouma.awesomeadmin.service.HomeMenuService;
+import com.izouma.awesomeadmin.dao.HomeMenuMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class HomeMenuServiceImpl implements HomeMenuService{
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(HomeMenuServiceImpl.class);
+
+    @Autowired
+    private HomeMenuMapper homeMenuMapper;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @Override
+    public List<HomeMenu> getHomeMenuList(HomeMenu record) {
+        logger.info("getHomeMenuList");
+        try {
+            return homeMenuMapper.queryAllHomeMenu(record);
+        } catch (Exception e) {
+            logger.error("getHomeMenuList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<HomeMenu> getHomeMenuByPage(Page page, HomeMenu record) {
+        logger.info("getHomeMenuByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return homeMenuMapper.queryHomeMenuByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getHomeMenuByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public HomeMenu getHomeMenuById(String id) {
+        logger.info("getHomeMenuyId");
+        try {
+            return homeMenuMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getHomeMenuById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public HomeMenu getHomeMenu(HomeMenu record) {
+        logger.info("getHomeMenu");
+        try {
+            return homeMenuMapper.queryHomeMenu(record);
+        } catch (Exception e) {
+            logger.error("getHomeMenu", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createHomeMenu(HomeMenu record) {
+        logger.info("createHomeMenu");
+        try {
+            int updates = homeMenuMapper.insertSelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createHomeMenu", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteHomeMenu(HomeMenu record) {
+        logger.info("deleteHomeMenu");
+        try {
+            int updates = homeMenuMapper.delete(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteHomeMenu", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateHomeMenu(HomeMenu record) {
+        logger.info("updateHomeMenu");
+        try {
+            int updates = homeMenuMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateHomeMenu", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+}
+

+ 46 - 8
src/main/java/com/izouma/awesomeadmin/service/impl/ItemTypeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.izouma.awesomeadmin.service.impl;
 
 import java.util.*;
+
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -11,10 +12,10 @@ import com.izouma.awesomeadmin.service.ItemTypeService;
 import com.izouma.awesomeadmin.dao.ItemTypeMapper;
 
 /**
-*  service接口实现类
-*/
+ * service接口实现类
+ */
 @Service
-public class ItemTypeServiceImpl implements ItemTypeService{
+public class ItemTypeServiceImpl implements ItemTypeService {
     /*generatedStart*/
     private static Logger logger = Logger.getLogger(ItemTypeServiceImpl.class);
 
@@ -77,7 +78,7 @@ public class ItemTypeServiceImpl implements ItemTypeService{
         try {
             int updates = itemTypeMapper.insertSelective(record);
             if (updates > 0) {
-                 return true;
+                return true;
             }
         } catch (Exception e) {
             logger.error("createItemType", e);
@@ -91,10 +92,10 @@ public class ItemTypeServiceImpl implements ItemTypeService{
         try {
             int updates = itemTypeMapper.delete(record);
             if (updates > 0) {
-                 return true;
+                return true;
             }
         } catch (Exception e) {
-             logger.error("deleteItemType", e);
+            logger.error("deleteItemType", e);
         }
         return false;
     }
@@ -105,13 +106,50 @@ public class ItemTypeServiceImpl implements ItemTypeService{
         try {
             int updates = itemTypeMapper.updateByPrimaryKeySelective(record);
             if (updates > 0) {
-                 return true;
+                return true;
             }
         } catch (Exception e) {
-             logger.error("updateItemType", e);
+            logger.error("updateItemType", e);
         }
         return false;
     }
     /*generatedEnd*/
+
+
+    @Override
+    public List<ItemType> getItemTypeTree(ItemType record) {
+        logger.info("getItemTypeTree");
+        try {
+
+            List<ItemType> allItems = getItemTypeList(record);
+            List<ItemType> tree = new ArrayList<>();
+            makeTree(allItems, tree);
+            return tree;
+        } catch (Exception e) {
+            logger.error("getItemTypeTree", e);
+        }
+        return null;
+    }
+
+    private void makeTree(List<ItemType> nodes, List<ItemType> tree) {
+        for (ItemType item : nodes) {
+            if (item.getParentId() == 0) {
+                tree.add(item);
+            }
+            for (ItemType node : nodes) {
+                if (node.getParentId().equals(item.getId())) {
+                    if (item.getChildren() == null) {
+                        item.setChildren(new ArrayList<>());
+                    }
+                    item.getChildren().add(node);
+                }
+            }
+            if (item.getChildren() != null) {
+                item.getChildren().sort(Comparator.comparingInt(o -> o.getSort().intValue()));
+            }
+        }
+        tree.sort(Comparator.comparingInt(o -> o.getSort().intValue()));
+    }
+
 }
 

+ 117 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/StoreCaseServiceImpl.java

@@ -0,0 +1,117 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreCase;
+import com.izouma.awesomeadmin.service.StoreCaseService;
+import com.izouma.awesomeadmin.dao.StoreCaseMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class StoreCaseServiceImpl implements StoreCaseService{
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(StoreCaseServiceImpl.class);
+
+    @Autowired
+    private StoreCaseMapper storeCaseMapper;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @Override
+    public List<StoreCase> getStoreCaseList(StoreCase record) {
+        logger.info("getStoreCaseList");
+        try {
+            return storeCaseMapper.queryAllStoreCase(record);
+        } catch (Exception e) {
+            logger.error("getStoreCaseList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<StoreCase> getStoreCaseByPage(Page page, StoreCase record) {
+        logger.info("getStoreCaseByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return storeCaseMapper.queryStoreCaseByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getStoreCaseByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreCase getStoreCaseById(String id) {
+        logger.info("getStoreCaseyId");
+        try {
+            return storeCaseMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getStoreCaseById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreCase getStoreCase(StoreCase record) {
+        logger.info("getStoreCase");
+        try {
+            return storeCaseMapper.queryStoreCase(record);
+        } catch (Exception e) {
+            logger.error("getStoreCase", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createStoreCase(StoreCase record) {
+        logger.info("createStoreCase");
+        try {
+            int updates = storeCaseMapper.insertSelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createStoreCase", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteStoreCase(StoreCase record) {
+        logger.info("deleteStoreCase");
+        try {
+            int updates = storeCaseMapper.delete(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteStoreCase", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateStoreCase(StoreCase record) {
+        logger.info("updateStoreCase");
+        try {
+            int updates = storeCaseMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateStoreCase", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+}
+

+ 117 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/StoreIntroductionServiceImpl.java

@@ -0,0 +1,117 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreIntroduction;
+import com.izouma.awesomeadmin.service.StoreIntroductionService;
+import com.izouma.awesomeadmin.dao.StoreIntroductionMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class StoreIntroductionServiceImpl implements StoreIntroductionService{
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(StoreIntroductionServiceImpl.class);
+
+    @Autowired
+    private StoreIntroductionMapper storeIntroductionMapper;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @Override
+    public List<StoreIntroduction> getStoreIntroductionList(StoreIntroduction record) {
+        logger.info("getStoreIntroductionList");
+        try {
+            return storeIntroductionMapper.queryAllStoreIntroduction(record);
+        } catch (Exception e) {
+            logger.error("getStoreIntroductionList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<StoreIntroduction> getStoreIntroductionByPage(Page page, StoreIntroduction record) {
+        logger.info("getStoreIntroductionByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return storeIntroductionMapper.queryStoreIntroductionByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getStoreIntroductionByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreIntroduction getStoreIntroductionById(String id) {
+        logger.info("getStoreIntroductionyId");
+        try {
+            return storeIntroductionMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getStoreIntroductionById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreIntroduction getStoreIntroduction(StoreIntroduction record) {
+        logger.info("getStoreIntroduction");
+        try {
+            return storeIntroductionMapper.queryStoreIntroduction(record);
+        } catch (Exception e) {
+            logger.error("getStoreIntroduction", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createStoreIntroduction(StoreIntroduction record) {
+        logger.info("createStoreIntroduction");
+        try {
+            int updates = storeIntroductionMapper.insertSelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createStoreIntroduction", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteStoreIntroduction(StoreIntroduction record) {
+        logger.info("deleteStoreIntroduction");
+        try {
+            int updates = storeIntroductionMapper.delete(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteStoreIntroduction", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateStoreIntroduction(StoreIntroduction record) {
+        logger.info("updateStoreIntroduction");
+        try {
+            int updates = storeIntroductionMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateStoreIntroduction", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+}
+

+ 117 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/StoreServiceLevelServiceImpl.java

@@ -0,0 +1,117 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreServiceLevel;
+import com.izouma.awesomeadmin.service.StoreServiceLevelService;
+import com.izouma.awesomeadmin.dao.StoreServiceLevelMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class StoreServiceLevelServiceImpl implements StoreServiceLevelService{
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(StoreServiceLevelServiceImpl.class);
+
+    @Autowired
+    private StoreServiceLevelMapper storeServiceLevelMapper;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @Override
+    public List<StoreServiceLevel> getStoreServiceLevelList(StoreServiceLevel record) {
+        logger.info("getStoreServiceLevelList");
+        try {
+            return storeServiceLevelMapper.queryAllStoreServiceLevel(record);
+        } catch (Exception e) {
+            logger.error("getStoreServiceLevelList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<StoreServiceLevel> getStoreServiceLevelByPage(Page page, StoreServiceLevel record) {
+        logger.info("getStoreServiceLevelByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return storeServiceLevelMapper.queryStoreServiceLevelByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getStoreServiceLevelByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreServiceLevel getStoreServiceLevelById(String id) {
+        logger.info("getStoreServiceLevelyId");
+        try {
+            return storeServiceLevelMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getStoreServiceLevelById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreServiceLevel getStoreServiceLevel(StoreServiceLevel record) {
+        logger.info("getStoreServiceLevel");
+        try {
+            return storeServiceLevelMapper.queryStoreServiceLevel(record);
+        } catch (Exception e) {
+            logger.error("getStoreServiceLevel", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createStoreServiceLevel(StoreServiceLevel record) {
+        logger.info("createStoreServiceLevel");
+        try {
+            int updates = storeServiceLevelMapper.insertSelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createStoreServiceLevel", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteStoreServiceLevel(StoreServiceLevel record) {
+        logger.info("deleteStoreServiceLevel");
+        try {
+            int updates = storeServiceLevelMapper.delete(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteStoreServiceLevel", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateStoreServiceLevel(StoreServiceLevel record) {
+        logger.info("updateStoreServiceLevel");
+        try {
+            int updates = storeServiceLevelMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateStoreServiceLevel", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+}
+

+ 117 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/StoreServiceServiceImpl.java

@@ -0,0 +1,117 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.util.*;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.StoreService;
+import com.izouma.awesomeadmin.service.StoreServiceService;
+import com.izouma.awesomeadmin.dao.StoreServiceMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class StoreServiceServiceImpl implements StoreServiceService{
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(StoreServiceServiceImpl.class);
+
+    @Autowired
+    private StoreServiceMapper storeServiceMapper;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @Override
+    public List<StoreService> getStoreServiceList(StoreService record) {
+        logger.info("getStoreServiceList");
+        try {
+            return storeServiceMapper.queryAllStoreService(record);
+        } catch (Exception e) {
+            logger.error("getStoreServiceList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<StoreService> getStoreServiceByPage(Page page, StoreService record) {
+        logger.info("getStoreServiceByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return storeServiceMapper.queryStoreServiceByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getStoreServiceByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreService getStoreServiceById(String id) {
+        logger.info("getStoreServiceyId");
+        try {
+            return storeServiceMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getStoreServiceById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public StoreService getStoreService(StoreService record) {
+        logger.info("getStoreService");
+        try {
+            return storeServiceMapper.queryStoreService(record);
+        } catch (Exception e) {
+            logger.error("getStoreService", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createStoreService(StoreService record) {
+        logger.info("createStoreService");
+        try {
+            int updates = storeServiceMapper.insertSelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createStoreService", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteStoreService(StoreService record) {
+        logger.info("deleteStoreService");
+        try {
+            int updates = storeServiceMapper.delete(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteStoreService", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateStoreService(StoreService record) {
+        logger.info("updateStoreService");
+        try {
+            int updates = storeServiceMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateStoreService", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+}
+

+ 33 - 67
src/main/java/com/izouma/awesomeadmin/web/BannerInfoController.java

@@ -1,40 +1,32 @@
 package com.izouma.awesomeadmin.web;
 
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
 import com.izouma.awesomeadmin.constant.AppConstant;
 import com.izouma.awesomeadmin.dto.Page;
 import com.izouma.awesomeadmin.dto.Result;
 import com.izouma.awesomeadmin.model.BannerInfo;
 import com.izouma.awesomeadmin.service.BannerInfoService;
-import com.izouma.awesomeadmin.util.ExportExcelUtil;
-import org.apache.shiro.authz.annotation.RequiresAuthentication;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 
-/**
-*  controller类
-*/
 @Controller
 @RequestMapping("/bannerInfo")
-@RequiresAuthentication
 public class BannerInfoController {
-
+    /*generatedStart*/
     @Autowired
     private BannerInfoService bannerInfoService;
+    /*generatedEnd*/
 
-    /**
-    * <p>获取全部记录。</p>
-    */
-//    @RequiresAuthentication
+    /*generatedStart*/
+    @RequiresAuthentication
     @RequestMapping(value = "/all", method = RequestMethod.GET)
     @ResponseBody
     public Result all(BannerInfo record) {
@@ -42,9 +34,6 @@ public class BannerInfoController {
         return new Result(true, pp);
     }
 
-    /**
-    * <p>根据Id。</p>
-    */
     @RequestMapping(value = "/getBannerInfo", method = RequestMethod.GET)
     @ResponseBody
     public Result getBannerInfo(@RequestParam(required = false, value = "id") String id) {
@@ -52,9 +41,6 @@ public class BannerInfoController {
         return new Result(true, data);
     }
 
-    /**
-    * <p>根据条件获取。</p>
-    */
     @RequestMapping(value = "/getOne", method = RequestMethod.GET)
     @ResponseBody
     public Result getOne(BannerInfo record) {
@@ -62,10 +48,6 @@ public class BannerInfoController {
         return new Result(true, data);
     }
 
-
-    /**
-    * <p>分页查询。</p>
-    */
     @RequestMapping(value = "/page", method = RequestMethod.GET)
     @ResponseBody
     public Result page(Page page, BannerInfo record) {
@@ -78,10 +60,6 @@ public class BannerInfoController {
         return new Result(true, result);
     }
 
-
-    /**
-    * <p>保存。</p>
-    */
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ResponseBody
     public Result save(BannerInfo record) {
@@ -92,9 +70,6 @@ public class BannerInfoController {
         return new Result(false, "保存异常");
     }
 
-    /**
-    * <p>更新信息。</p>
-    */
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     @ResponseBody
     public Result updateBannerInfo(BannerInfo record) {
@@ -105,63 +80,54 @@ public class BannerInfoController {
         return new Result(false, "保存异常");
     }
 
-    /**
-    * <p>删除。</p>
-    */
     @RequestMapping(value = "/del", method = RequestMethod.POST)
     @ResponseBody
-    public Result deleteBannerInfo(@RequestParam(required = true, value = "id") String id) {
+    public Result deleteBannerInfo(BannerInfo record) {
 
-        boolean num = bannerInfoService.deleteBannerInfo(id);
+        boolean num = bannerInfoService.deleteBannerInfo(record);
         if (num) {
         return new Result(true, "删除成功");
         }
         return new Result(false, "删除异常");
     }
 
-    /**
-    * 导出Excel
-    * @param request
-    * @param response
-    * @param record
-    * @throws Exception
-    */
     @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
     @ResponseBody
     public void exportExcel(HttpServletRequest request, HttpServletResponse response, BannerInfo record) throws Exception {
 
-    List<BannerInfo> bannerInfos = bannerInfoService.getBannerInfoList(record);
-
+        List<BannerInfo> bannerInfos = bannerInfoService.getBannerInfoList(record);
 
         String sheetName = "banner_info";
         String titleName = "banner信息数据表";
         String fileName = "banner信息表";
-        int columnNumber = 12;
-        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
-        String[] columnName = {  "" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "位置" ,   "标题" ,   "副标题" ,   "跳转链接" ,   "图片" ,   "排序"  };
-        String[][] dataList = new String[bannerInfos.size()][12];
+        int columnNumber = 17;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "用户Id" ,   "小程序" ,   "店铺" ,   "状态" ,   "类型" ,   "标题" ,   "子标题" ,   "图片" ,   "地址" ,   "备注" ,   "排序"  };
+        String[][] dataList = new String[bannerInfos.size()][17];
 
         for (int i = 0; i < bannerInfos.size(); i++) {
-
                         dataList[i][0] = String.valueOf(bannerInfos.get(i).getId());
                         dataList[i][1] = String.valueOf(bannerInfos.get(i).getDelFlag());
                         dataList[i][2] = String.valueOf(bannerInfos.get(i).getUpdateTime());
                         dataList[i][3] = String.valueOf(bannerInfos.get(i).getUpdateUser());
                         dataList[i][4] = String.valueOf(bannerInfos.get(i).getCreateTime());
                         dataList[i][5] = String.valueOf(bannerInfos.get(i).getCreateUser());
-                        dataList[i][6] = String.valueOf(bannerInfos.get(i).getLocation());
-                        dataList[i][7] = String.valueOf(bannerInfos.get(i).getTitle());
-                        dataList[i][8] = String.valueOf(bannerInfos.get(i).getSubtitle());
-                        dataList[i][9] = String.valueOf(bannerInfos.get(i).getUrl());
-                        dataList[i][10] = String.valueOf(bannerInfos.get(i).getImageUrl());
-                        dataList[i][11] = String.valueOf(bannerInfos.get(i).getRank());
+                        dataList[i][6] = String.valueOf(bannerInfos.get(i).getUserId());
+                        dataList[i][7] = String.valueOf(bannerInfos.get(i).getMiniId());
+                        dataList[i][8] = String.valueOf(bannerInfos.get(i).getStoreId());
+                        dataList[i][9] = String.valueOf(bannerInfos.get(i).getStatusFlag());
+                        dataList[i][10] = String.valueOf(bannerInfos.get(i).getTypeFlag());
+                        dataList[i][11] = String.valueOf(bannerInfos.get(i).getTitle());
+                        dataList[i][12] = String.valueOf(bannerInfos.get(i).getSubtitle());
+                        dataList[i][13] = String.valueOf(bannerInfos.get(i).getImageUrl());
+                        dataList[i][14] = String.valueOf(bannerInfos.get(i).getPathUrl());
+                        dataList[i][15] = String.valueOf(bannerInfos.get(i).getRemark());
+                        dataList[i][16] = String.valueOf(bannerInfos.get(i).getRank());
                     }
 
-
         ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
-        columnNumber, columnWidth, columnName, dataList, response);
-
-
-        }
+                columnNumber, columnWidth, columnName, dataList, response);
     }
+    /*generatedEnd*/
+}
 

+ 133 - 0
src/main/java/com/izouma/awesomeadmin/web/HomeAdController.java

@@ -0,0 +1,133 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.HomeAd;
+import com.izouma.awesomeadmin.service.HomeAdService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/homeAd")
+public class HomeAdController {
+    /*generatedStart*/
+    @Autowired
+    private HomeAdService homeAdService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(HomeAd record) {
+        List<HomeAd> pp = homeAdService.getHomeAdList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getHomeAd", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getHomeAd(@RequestParam(required = false, value = "id") String id) {
+        HomeAd data = homeAdService.getHomeAdById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(HomeAd record) {
+        HomeAd data = homeAdService.getHomeAd(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, HomeAd record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<HomeAd> pp =homeAdService.getHomeAdByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(HomeAd record) {
+        boolean num = homeAdService.createHomeAd(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateHomeAd(HomeAd record) {
+        boolean num = homeAdService.updateHomeAd(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteHomeAd(HomeAd record) {
+
+        boolean num = homeAdService.deleteHomeAd(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, HomeAd record) throws Exception {
+
+        List<HomeAd> homeAds = homeAdService.getHomeAdList(record);
+
+        String sheetName = "home_ad";
+        String titleName = "首页广告数据表";
+        String fileName = "首页广告表";
+        int columnNumber = 17;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "用户Id" ,   "小程序" ,   "店铺" ,   "状态" ,   "类型" ,   "标题" ,   "子标题" ,   "图片" ,   "地址" ,   "备注" ,   "排序"  };
+        String[][] dataList = new String[homeAds.size()][17];
+
+        for (int i = 0; i < homeAds.size(); i++) {
+                        dataList[i][0] = String.valueOf(homeAds.get(i).getId());
+                        dataList[i][1] = String.valueOf(homeAds.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(homeAds.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(homeAds.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(homeAds.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(homeAds.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(homeAds.get(i).getUserId());
+                        dataList[i][7] = String.valueOf(homeAds.get(i).getMiniId());
+                        dataList[i][8] = String.valueOf(homeAds.get(i).getStoreId());
+                        dataList[i][9] = String.valueOf(homeAds.get(i).getStatusFlag());
+                        dataList[i][10] = String.valueOf(homeAds.get(i).getTypeFlag());
+                        dataList[i][11] = String.valueOf(homeAds.get(i).getTitle());
+                        dataList[i][12] = String.valueOf(homeAds.get(i).getSubtitle());
+                        dataList[i][13] = String.valueOf(homeAds.get(i).getImageUrl());
+                        dataList[i][14] = String.valueOf(homeAds.get(i).getPathUrl());
+                        dataList[i][15] = String.valueOf(homeAds.get(i).getRemark());
+                        dataList[i][16] = String.valueOf(homeAds.get(i).getRank());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+}
+

+ 132 - 0
src/main/java/com/izouma/awesomeadmin/web/HomeMenuController.java

@@ -0,0 +1,132 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.HomeMenu;
+import com.izouma.awesomeadmin.service.HomeMenuService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/homeMenu")
+public class HomeMenuController {
+    /*generatedStart*/
+    @Autowired
+    private HomeMenuService homeMenuService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(HomeMenu record) {
+        List<HomeMenu> pp = homeMenuService.getHomeMenuList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getHomeMenu", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getHomeMenu(@RequestParam(required = false, value = "id") String id) {
+        HomeMenu data = homeMenuService.getHomeMenuById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(HomeMenu record) {
+        HomeMenu data = homeMenuService.getHomeMenu(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, HomeMenu record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<HomeMenu> pp =homeMenuService.getHomeMenuByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(HomeMenu record) {
+        boolean num = homeMenuService.createHomeMenu(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateHomeMenu(HomeMenu record) {
+        boolean num = homeMenuService.updateHomeMenu(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteHomeMenu(HomeMenu record) {
+
+        boolean num = homeMenuService.deleteHomeMenu(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, HomeMenu record) throws Exception {
+
+        List<HomeMenu> homeMenus = homeMenuService.getHomeMenuList(record);
+
+        String sheetName = "home_menu";
+        String titleName = "首页导航菜单数据表";
+        String fileName = "首页导航菜单表";
+        int columnNumber = 16;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "用户" ,   "小程序" ,   "店铺" ,   "类型" ,   "标题" ,   "图标" ,   "地址" ,   "备注" ,   "排序" ,   "状态"  };
+        String[][] dataList = new String[homeMenus.size()][16];
+
+        for (int i = 0; i < homeMenus.size(); i++) {
+                        dataList[i][0] = String.valueOf(homeMenus.get(i).getId());
+                        dataList[i][1] = String.valueOf(homeMenus.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(homeMenus.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(homeMenus.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(homeMenus.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(homeMenus.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(homeMenus.get(i).getUserId());
+                        dataList[i][7] = String.valueOf(homeMenus.get(i).getMiniId());
+                        dataList[i][8] = String.valueOf(homeMenus.get(i).getStoreId());
+                        dataList[i][9] = String.valueOf(homeMenus.get(i).getTypeFlag());
+                        dataList[i][10] = String.valueOf(homeMenus.get(i).getTitle());
+                        dataList[i][11] = String.valueOf(homeMenus.get(i).getIcon());
+                        dataList[i][12] = String.valueOf(homeMenus.get(i).getPathUrl());
+                        dataList[i][13] = String.valueOf(homeMenus.get(i).getRemark());
+                        dataList[i][14] = String.valueOf(homeMenus.get(i).getRank());
+                        dataList[i][15] = String.valueOf(homeMenus.get(i).getStatusFlag());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+}
+

+ 34 - 20
src/main/java/com/izouma/awesomeadmin/web/ItemTypeController.java

@@ -53,7 +53,7 @@ public class ItemTypeController {
     public Result page(Page page, ItemType record) {
         Map<String, Object> result = new HashMap<>();
 
-        List<ItemType> pp =itemTypeService.getItemTypeByPage(page, record);
+        List<ItemType> pp = itemTypeService.getItemTypeByPage(page, record);
 
         result.put(AppConstant.PAGE, page);
         result.put("pp", pp);
@@ -65,7 +65,7 @@ public class ItemTypeController {
     public Result save(ItemType record) {
         boolean num = itemTypeService.createItemType(record);
         if (num) {
-        return new Result(true, record.getId());
+            return new Result(true, record.getId());
         }
         return new Result(false, "保存异常");
     }
@@ -75,7 +75,7 @@ public class ItemTypeController {
     public Result updateItemType(ItemType record) {
         boolean num = itemTypeService.updateItemType(record);
         if (num) {
-        return new Result(true, "保存成功");
+            return new Result(true, "保存成功");
         }
         return new Result(false, "保存异常");
     }
@@ -86,7 +86,7 @@ public class ItemTypeController {
 
         boolean num = itemTypeService.deleteItemType(record);
         if (num) {
-        return new Result(true, "删除成功");
+            return new Result(true, "删除成功");
         }
         return new Result(false, "删除异常");
     }
@@ -100,28 +100,42 @@ public class ItemTypeController {
         String sheetName = "item_type";
         String titleName = "类目数据表";
         String fileName = "类目表";
-        int columnNumber = 11;
-        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
-        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "名称" ,   "父级" ,   "排序" ,   "图标" ,   "备注"  };
-        String[][] dataList = new String[itemTypes.size()][11];
+        int columnNumber = 15;
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"ID", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "名称", "父级", "排序", "图标", "备注", "用户", "店铺", "小程序", "类型"};
+        String[][] dataList = new String[itemTypes.size()][15];
 
         for (int i = 0; i < itemTypes.size(); i++) {
-                        dataList[i][0] = String.valueOf(itemTypes.get(i).getId());
-                        dataList[i][1] = String.valueOf(itemTypes.get(i).getDelFlag());
-                        dataList[i][2] = String.valueOf(itemTypes.get(i).getUpdateTime());
-                        dataList[i][3] = String.valueOf(itemTypes.get(i).getUpdateUser());
-                        dataList[i][4] = String.valueOf(itemTypes.get(i).getCreateTime());
-                        dataList[i][5] = String.valueOf(itemTypes.get(i).getCreateUser());
-                        dataList[i][6] = String.valueOf(itemTypes.get(i).getTypeName());
-                        dataList[i][7] = String.valueOf(itemTypes.get(i).getParentId());
-                        dataList[i][8] = String.valueOf(itemTypes.get(i).getSort());
-                        dataList[i][9] = String.valueOf(itemTypes.get(i).getIcon());
-                        dataList[i][10] = String.valueOf(itemTypes.get(i).getRemark());
-                    }
+            dataList[i][0] = String.valueOf(itemTypes.get(i).getId());
+            dataList[i][1] = String.valueOf(itemTypes.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(itemTypes.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(itemTypes.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(itemTypes.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(itemTypes.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(itemTypes.get(i).getTypeName());
+            dataList[i][7] = String.valueOf(itemTypes.get(i).getParentId());
+            dataList[i][8] = String.valueOf(itemTypes.get(i).getSort());
+            dataList[i][9] = String.valueOf(itemTypes.get(i).getIcon());
+            dataList[i][10] = String.valueOf(itemTypes.get(i).getRemark());
+            dataList[i][11] = String.valueOf(itemTypes.get(i).getUserId());
+            dataList[i][12] = String.valueOf(itemTypes.get(i).getStoreId());
+            dataList[i][13] = String.valueOf(itemTypes.get(i).getMiniId());
+            dataList[i][14] = String.valueOf(itemTypes.get(i).getTypeFlag());
+        }
 
         ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
                 columnNumber, columnWidth, columnName, dataList, response);
     }
     /*generatedEnd*/
+
+    @RequestMapping(value = "/itemTree", method = RequestMethod.GET)
+    @ResponseBody
+    public Result itemTree(ItemType record) {
+        List<ItemType> trees = itemTypeService.getItemTypeTree(record);
+        if (trees != null) {
+            return new Result(true, trees);
+        }
+        return new Result(false, "获取失败");
+    }
 }
 

+ 131 - 0
src/main/java/com/izouma/awesomeadmin/web/StoreCaseController.java

@@ -0,0 +1,131 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.StoreCase;
+import com.izouma.awesomeadmin.service.StoreCaseService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/storeCase")
+public class StoreCaseController {
+    /*generatedStart*/
+    @Autowired
+    private StoreCaseService storeCaseService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(StoreCase record) {
+        List<StoreCase> pp = storeCaseService.getStoreCaseList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getStoreCase", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getStoreCase(@RequestParam(required = false, value = "id") String id) {
+        StoreCase data = storeCaseService.getStoreCaseById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(StoreCase record) {
+        StoreCase data = storeCaseService.getStoreCase(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, StoreCase record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<StoreCase> pp =storeCaseService.getStoreCaseByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(StoreCase record) {
+        boolean num = storeCaseService.createStoreCase(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateStoreCase(StoreCase record) {
+        boolean num = storeCaseService.updateStoreCase(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteStoreCase(StoreCase record) {
+
+        boolean num = storeCaseService.deleteStoreCase(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, StoreCase record) throws Exception {
+
+        List<StoreCase> storeCases = storeCaseService.getStoreCaseList(record);
+
+        String sheetName = "store_case";
+        String titleName = "案例图集数据表";
+        String fileName = "案例图集表";
+        int columnNumber = 15;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "Id" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "名称" ,   "标题" ,   "案例" ,   "图集" ,   "类型" ,   "排序" ,   "用户" ,   "小程序" ,   "店铺"  };
+        String[][] dataList = new String[storeCases.size()][15];
+
+        for (int i = 0; i < storeCases.size(); i++) {
+                        dataList[i][0] = String.valueOf(storeCases.get(i).getId());
+                        dataList[i][1] = String.valueOf(storeCases.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(storeCases.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(storeCases.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(storeCases.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(storeCases.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(storeCases.get(i).getCaseName());
+                        dataList[i][7] = String.valueOf(storeCases.get(i).getTitle());
+                        dataList[i][8] = String.valueOf(storeCases.get(i).getRemark());
+                        dataList[i][9] = String.valueOf(storeCases.get(i).getImage());
+                        dataList[i][10] = String.valueOf(storeCases.get(i).getTypeFlag());
+                        dataList[i][11] = String.valueOf(storeCases.get(i).getRank());
+                        dataList[i][12] = String.valueOf(storeCases.get(i).getUserId());
+                        dataList[i][13] = String.valueOf(storeCases.get(i).getMiniId());
+                        dataList[i][14] = String.valueOf(storeCases.get(i).getStoreId());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+}
+

+ 132 - 0
src/main/java/com/izouma/awesomeadmin/web/StoreIntroductionController.java

@@ -0,0 +1,132 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.StoreIntroduction;
+import com.izouma.awesomeadmin.service.StoreIntroductionService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/storeIntroduction")
+public class StoreIntroductionController {
+    /*generatedStart*/
+    @Autowired
+    private StoreIntroductionService storeIntroductionService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(StoreIntroduction record) {
+        List<StoreIntroduction> pp = storeIntroductionService.getStoreIntroductionList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getStoreIntroduction", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getStoreIntroduction(@RequestParam(required = false, value = "id") String id) {
+        StoreIntroduction data = storeIntroductionService.getStoreIntroductionById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(StoreIntroduction record) {
+        StoreIntroduction data = storeIntroductionService.getStoreIntroduction(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, StoreIntroduction record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<StoreIntroduction> pp =storeIntroductionService.getStoreIntroductionByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(StoreIntroduction record) {
+        boolean num = storeIntroductionService.createStoreIntroduction(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateStoreIntroduction(StoreIntroduction record) {
+        boolean num = storeIntroductionService.updateStoreIntroduction(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteStoreIntroduction(StoreIntroduction record) {
+
+        boolean num = storeIntroductionService.deleteStoreIntroduction(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, StoreIntroduction record) throws Exception {
+
+        List<StoreIntroduction> storeIntroductions = storeIntroductionService.getStoreIntroductionList(record);
+
+        String sheetName = "store_introduction";
+        String titleName = "店铺介绍数据表";
+        String fileName = "店铺介绍表";
+        int columnNumber = 16;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "Id" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "介绍" ,   "banner" ,   "地址" ,   "经度" ,   "纬度" ,   "标题" ,   "用户" ,   "小程序" ,   "店铺" ,   "备注"  };
+        String[][] dataList = new String[storeIntroductions.size()][16];
+
+        for (int i = 0; i < storeIntroductions.size(); i++) {
+                        dataList[i][0] = String.valueOf(storeIntroductions.get(i).getId());
+                        dataList[i][1] = String.valueOf(storeIntroductions.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(storeIntroductions.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(storeIntroductions.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(storeIntroductions.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(storeIntroductions.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(storeIntroductions.get(i).getIntroduction());
+                        dataList[i][7] = String.valueOf(storeIntroductions.get(i).getBanner());
+                        dataList[i][8] = String.valueOf(storeIntroductions.get(i).getAddress());
+                        dataList[i][9] = String.valueOf(storeIntroductions.get(i).getLongitude());
+                        dataList[i][10] = String.valueOf(storeIntroductions.get(i).getLatitude());
+                        dataList[i][11] = String.valueOf(storeIntroductions.get(i).getTitle());
+                        dataList[i][12] = String.valueOf(storeIntroductions.get(i).getUserId());
+                        dataList[i][13] = String.valueOf(storeIntroductions.get(i).getMiniId());
+                        dataList[i][14] = String.valueOf(storeIntroductions.get(i).getStoreId());
+                        dataList[i][15] = String.valueOf(storeIntroductions.get(i).getRemark());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+}
+

+ 138 - 0
src/main/java/com/izouma/awesomeadmin/web/StoreServiceController.java

@@ -0,0 +1,138 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.StoreService;
+import com.izouma.awesomeadmin.service.StoreServiceService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/storeService")
+public class StoreServiceController {
+    /*generatedStart*/
+    @Autowired
+    private StoreServiceService storeServiceService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(StoreService record) {
+        List<StoreService> pp = storeServiceService.getStoreServiceList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getStoreService", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getStoreService(@RequestParam(required = false, value = "id") String id) {
+        StoreService data = storeServiceService.getStoreServiceById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(StoreService record) {
+        StoreService data = storeServiceService.getStoreService(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, StoreService record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<StoreService> pp =storeServiceService.getStoreServiceByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(StoreService record) {
+        boolean num = storeServiceService.createStoreService(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateStoreService(StoreService record) {
+        boolean num = storeServiceService.updateStoreService(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteStoreService(StoreService record) {
+
+        boolean num = storeServiceService.deleteStoreService(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, StoreService record) throws Exception {
+
+        List<StoreService> storeServices = storeServiceService.getStoreServiceList(record);
+
+        String sheetName = "store_service";
+        String titleName = "店铺服务数据表";
+        String fileName = "店铺服务表";
+        int columnNumber = 22;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "介绍" ,   "店铺图" ,   "列表图" ,   "轮播图" ,   "类型" ,   "级别" ,   "名称" ,   "标题" ,   "价格" ,   "上架" ,   "店铺标识" ,   "用户" ,   "小程序" ,   "店铺" ,   "排序" ,   "备注"  };
+        String[][] dataList = new String[storeServices.size()][22];
+
+        for (int i = 0; i < storeServices.size(); i++) {
+                        dataList[i][0] = String.valueOf(storeServices.get(i).getId());
+                        dataList[i][1] = String.valueOf(storeServices.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(storeServices.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(storeServices.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(storeServices.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(storeServices.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(storeServices.get(i).getIntroduction());
+                        dataList[i][7] = String.valueOf(storeServices.get(i).getStoreImage());
+                        dataList[i][8] = String.valueOf(storeServices.get(i).getListImage());
+                        dataList[i][9] = String.valueOf(storeServices.get(i).getBanner());
+                        dataList[i][10] = String.valueOf(storeServices.get(i).getTypeFlag());
+                        dataList[i][11] = String.valueOf(storeServices.get(i).getTypeLevel());
+                        dataList[i][12] = String.valueOf(storeServices.get(i).getServiceName());
+                        dataList[i][13] = String.valueOf(storeServices.get(i).getTitle());
+                        dataList[i][14] = String.valueOf(storeServices.get(i).getPrice());
+                        dataList[i][15] = String.valueOf(storeServices.get(i).getShelfFlag());
+                        dataList[i][16] = String.valueOf(storeServices.get(i).getStoreFlag());
+                        dataList[i][17] = String.valueOf(storeServices.get(i).getUserId());
+                        dataList[i][18] = String.valueOf(storeServices.get(i).getMiniId());
+                        dataList[i][19] = String.valueOf(storeServices.get(i).getStoreId());
+                        dataList[i][20] = String.valueOf(storeServices.get(i).getRank());
+                        dataList[i][21] = String.valueOf(storeServices.get(i).getRemark());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+}
+

+ 129 - 0
src/main/java/com/izouma/awesomeadmin/web/StoreServiceLevelController.java

@@ -0,0 +1,129 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.commons.lang.StringUtils;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.StoreServiceLevel;
+import com.izouma.awesomeadmin.service.StoreServiceLevelService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/storeServiceLevel")
+public class StoreServiceLevelController {
+    /*generatedStart*/
+    @Autowired
+    private StoreServiceLevelService storeServiceLevelService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(StoreServiceLevel record) {
+        List<StoreServiceLevel> pp = storeServiceLevelService.getStoreServiceLevelList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getStoreServiceLevel", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getStoreServiceLevel(@RequestParam(required = false, value = "id") String id) {
+        StoreServiceLevel data = storeServiceLevelService.getStoreServiceLevelById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(StoreServiceLevel record) {
+        StoreServiceLevel data = storeServiceLevelService.getStoreServiceLevel(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, StoreServiceLevel record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<StoreServiceLevel> pp =storeServiceLevelService.getStoreServiceLevelByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(StoreServiceLevel record) {
+        boolean num = storeServiceLevelService.createStoreServiceLevel(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateStoreServiceLevel(StoreServiceLevel record) {
+        boolean num = storeServiceLevelService.updateStoreServiceLevel(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteStoreServiceLevel(StoreServiceLevel record) {
+
+        boolean num = storeServiceLevelService.deleteStoreServiceLevel(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, StoreServiceLevel record) throws Exception {
+
+        List<StoreServiceLevel> storeServiceLevels = storeServiceLevelService.getStoreServiceLevelList(record);
+
+        String sheetName = "store_service_level";
+        String titleName = "店铺服务类型级别数据表";
+        String fileName = "店铺服务类型级别表";
+        int columnNumber = 13;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "类型" ,   "级别" ,   "用户" ,   "小程序" ,   "店铺" ,   "" ,   "备注"  };
+        String[][] dataList = new String[storeServiceLevels.size()][13];
+
+        for (int i = 0; i < storeServiceLevels.size(); i++) {
+                        dataList[i][0] = String.valueOf(storeServiceLevels.get(i).getId());
+                        dataList[i][1] = String.valueOf(storeServiceLevels.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(storeServiceLevels.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(storeServiceLevels.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(storeServiceLevels.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(storeServiceLevels.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(storeServiceLevels.get(i).getTypeFlag());
+                        dataList[i][7] = String.valueOf(storeServiceLevels.get(i).getLevelName());
+                        dataList[i][8] = String.valueOf(storeServiceLevels.get(i).getUserId());
+                        dataList[i][9] = String.valueOf(storeServiceLevels.get(i).getMiniId());
+                        dataList[i][10] = String.valueOf(storeServiceLevels.get(i).getStoreId());
+                        dataList[i][11] = String.valueOf(storeServiceLevels.get(i).getRank());
+                        dataList[i][12] = String.valueOf(storeServiceLevels.get(i).getRemark());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+}
+

+ 2 - 2
src/main/resources/properties/jdbc.properties

@@ -1,9 +1,9 @@
 jdbc.driverClassName=org.gjt.mm.mysql.Driver
 
 #外网地址
-jdbc.url=jdbc:mysql://120.55.131.232:3306/zouma_dianshang
+jdbc.url=jdbc:mysql://120.55.131.232:3306/tutuxiang_xiaochengxu
 jdbc.username=microball
 jdbc.password=2wsx@WSX#EDC
-jdbc.databaseName=zouma_dianshang
+jdbc.databaseName=tutuxiang_xiaochengxu
 
 

+ 1 - 1
src/main/resources/properties/log4j.properties

@@ -5,7 +5,7 @@ log4j.appender.console.layout=org.apache.log4j.PatternLayout
 log4j.appender.console.layout.ConversionPattern=Time    \:\t%d{yyyy-MM-dd HH\:mm\:ss}%nClass   \:\t%c%nPriority\:\t%p%nMessage \:\t%m%n--------------------------------------------------------------------------------%n
 
 log4j.appender.fileout=org.apache.log4j.FileAppender
-log4j.appender.fileout.File=/var/log/yimishijie_output.log
+log4j.appender.fileout.File=/var/log/tutuxiang_miniback_output.log
 log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
 log4j.appender.fileout.layout.ConversionPattern=Time    \:\t%d{yyyy-MM-dd HH\:mm\:ss}%nClass   \:\t%c%nPriority\:\t%p%nMessage \:\t%m%n--------------------------------------------------------------------------------%n
 log4j.appender.fileout.encoding=UTF-8

+ 7 - 13
src/main/resources/properties/outsidews.properties

@@ -1,12 +1,12 @@
-projectname=yimishijie
+projectname=tutuxiang_minibacktest
 weixinapi=https://api.weixin.qq.com/sns/oauth2/
 weixinappid=wxc64234d6fdccca35
 weixinsecret=4c16604a837d8c2929c33a03a5080e60
-aliossid=PXzJyah5rZfWHIIH
-aliosskey=e1MS6j0wypXJrw8CM0hObZu8qKbfah
+aliossid=LTAIuzAMJlqhjdnn
+aliosskey=nsTk5mjVpqr7ga1ZBXAhyjcpIIJBqc
 aliossendpoit=http://oss-cn-hangzhou.aliyuncs.com
-alibucketname=microball
-aliImageSever=http://oss.izouma.com
+alibucketname=tutuxiang-xiaochengxu
+aliImageSever=http://tutuxiang-xiaochengxu.oss-cn-hangzhou.aliyuncs.com
 rongyunappkey=pwe86ga5ee376
 rongyunappsecret=ARj0hyU5Cp
 jwtsecret=3MgWy/pJjxHCQW2pHlQbkjomTUPRo9WhsPFjUPYZZlo=
@@ -16,6 +16,7 @@ ALIPAY_APP_ID=2019032863735600
 ALIPAY_APP_PRIVATE_KEY=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBw4moMxAnMJPWCi3yrd6gjG4c59Zx0dsZI6OQgZpkwcKtMJLDk5iA2jy6AxkCiPoJWEQ7vlX6ETOXcnZAqwlIVmBnLK9s4/jcuG6BO0y964T+X3ANEVQwCmJ7vPIA4RLXHIsRUq2nrQPCSIHjuSOU8OgI/+1EoKYwul/JxTtd8CV1qkzlJui3ki8fUnDUM5tzxleEcnQ7QkXH7iwcRjURwBml0oTEoXMx3h/kwCRi6EWLiKPfczCL9dQshTnCAemY1bunGQYaaAfvfEY+j1CyigLJSxJ1/nLTFXOn/rJokj6kHesWUmf/FiwjCdXmO2FU6Cx1HZEUqMjJyuuQijwRAgMBAAECggEBAJ/kvTbYlG7SjlxlYA9P3VP9LmyaAANC2pt/Jl18Ja0Zm42RdLsBlCpYbR5OqhfGcxa9COmIIqjOAxXptZ2dxnY0GS9q14RzB40UgNQR3D0pGkFS/kM6Vo+iMizL+aQyF3r9qeDsqjKg+mYbsVv7Dlq9Ba1PjDtCmoHBeoQlRt03eUIL5eY5Vh+SVeBzMWkNlUdh5rcGpLGttxAf+oQTkgMT7e3Vu4WKiywCkEF1NcQLTevCTjkCHh/nhmzHxeNnrAqK6SRJgGIjKe2wUtbA49TvSeMqylLATrkU8USEygRLnMIWH10YPET/P3qkhrSZ6cneSGycaRI87Nk2l5WexgECgYEA++7CsFOgrq+wmpei3HjEHx6kBKZhJ4zP4h8uZgN8kHAhZZwk4kSLgDzm5mwG5/JSx9VXGp/gw1EKTGTc6Ir8jv2/G8eg0raW53/uaQYKquxsTsVfKAiazrmxoIu+KMXEz7+afIA4zQ845mnKgQqU0kkbgNr9guHL9U8m5LDzJqECgYEAxORdb9gtchPYfBiSokvsYsypkW12SJqvymJ5Ke8Lx/XMbOuzo9uLSbK/gh+WQOD0m+cNlY8dTTT8V7ybtVl5dC0JRIWu/Ban7fT4ejiXJz/O0WKpgokY0tZZVoYD+30zP7CwqOdcDelIOglqklaCYx5zH2bPALp40WyL7ci6z3ECgYAI2GgzgqwolfiQZPSN4xuXsB64HxNYLSR7XvblFAhClf1GMQZGf3uaZAkDXBWd/S8U3xOw1p4wnV7MMdpju8WES7pzAj5OR6TiueYn/9NODwD6fwmJQUwWKATpix6BFfiEBskox+O2p2srA9ndT/7Lp0905bty5fSgR0gpTWEsIQKBgDG64GLEfk4G9zH43uiBNraJrPafaDXUZDxA/Qt7ZkVeLwD/04K6jAbUUAykv8WpS/8or8SrviHnFSlv6QA4FjYivemBvn3LlyTCMBRmwL7YHfvC6L+gsxVlsHDrLoxRxiT7EtPGg/i7iFOoVzOZCBvS8A7pX7V2Y9e5i+pGPfDxAoGBAJxfOGzJR1KAYSArLs+PCf/Cjl0Eu4mCJCiB0sc3Q4QkwpGYWiYdz0je3IaM4v4TsB4acwBK+8cTYrSHWabn/bqpKj2k7oaLxg+desATlv+TKjtnncfU/u/xsW+IBsxaH+vMliyOJ5DyBSb0lI6iPw0nKaINETZNUCnefffUxKpW
 ALIPAY_CHARSET=utf-8
 ALIPAY_ALIPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApFWFg9xMrqjlrYBmORjun/woTvfjqXo41KRlfW3lX9ksdrJp9Utwsf0gluLf2s04t5eSeH9sWUiMLswvTTq1GorCWTEe6h3Qjo9nQ0XPQOdZKocfaolxHQj55ViyDVxh7FbuniPTujL/UzYM4X8QJvAtzo7Em38RaGGi08Mftj4+6Bs7S+FSF4z5+eGTJL2X5MBA29YPameCO5KqT0GvSw/HzdJmlzGGAgjBhp2nwEU6WUWJ+HGlIfKRmGD5sleakV72jZLCFU5nUCKlavjKRKRI6KtpSdLGxqMCV/0XWTxUmqiBvUmHvpWTAbVD8egHSTuYcod1H5AeqQAW+Y3tEwIDAQAB
+ALIPAY_SIGN_TYPE=RSA2
 ALIPAY_SELLER=2088331233110526
 ALIPAY_GATEWAY=https://openapi.alipay.com/gateway.do
 weixin_mch_id=1533580721
@@ -23,12 +24,5 @@ weixin_mch_secret=liuhuohuyu6666666666688888888888
 weixin_notify_url=http://www.liuhuohuyu.com/wx/notify
 weixin_cert_path=/home/cert/apiclient_cert.p12
 weixin_notify_url_recharge=
-#第三方支付
-agpay_api_url=http://test.umbpay.com.cn:12080/qrpay/apitrans/service.do
-agpay_platmerid=CF3000048210
-agpay_pwd=umbpay
-agpay_merchantPfxPath=/home/app/platform/testmer.pfx
-agpay_publicKeyPath=/home/app/platform/testplat.cer
-agpay_notify_url=http://www.liuhuohuyu.com/agpay/notify
-agpay_wx_appid=wx2421b1c4370ec43b
+
 

+ 1 - 1
src/main/vue/src/config.js

@@ -1 +1 @@
-module.exports = {"imageUrlPrefix":"http://oss.izouma.com"}
+module.exports = {"imageUrlPrefix":"http://tutuxiang-xiaochengxu.oss-cn-hangzhou.aliyuncs.com"}

+ 141 - 110
src/main/vue/src/pages/BannerInfo.vue

@@ -1,28 +1,39 @@
 <template>
     <div>
-        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
-            <el-form-item prop="location" label="位置">
-                <template>
-                    <el-select v-model="formData.location" clearable placeholder="请选择" :disabled="'location'==subColumn">
-                        <el-option v-for="item in locationOptions" :key="item.value" :label="item.label" :value="item.value">
-                        </el-option>
-                    </el-select>
-                </template>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="userId" label="用户Id">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
             </el-form-item>
-            <el-form-item prop="title" label="标题">
-                <el-input v-model="formData.title" style="width:210px" :disabled="'title'==subColumn"></el-input>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="statusFlag" label="状态">
+                <el-input v-model="formData.statusFlag" :disabled="'statusFlag'==subColumn"></el-input>
             </el-form-item>
-            <el-form-item prop="subtitle" label="副标题">
-                <el-input v-model="formData.subtitle" style="width:210px"  :disabled="'subtitle'==subColumn"></el-input>
+            <el-form-item prop="typeFlag" label="类型">
+                <el-input v-model="formData.typeFlag" :disabled="'typeFlag'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="title" label="标题">
+                <el-input v-model="formData.title" :disabled="'title'==subColumn"></el-input>
             </el-form-item>
-            <el-form-item prop="url" label="跳转链接">
-                <el-input v-model="formData.url" style="width:210px"  :disabled="'url'==subColumn"></el-input>
+            <el-form-item prop="subtitle" label="子标题">
+                <el-input v-model="formData.subtitle" :disabled="'subtitle'==subColumn"></el-input>
             </el-form-item>
             <el-form-item prop="imageUrl" label="图片">
-                <single-upload v-model="formData.imageUrl" :disabled="'imageUrl'==subColumn"></single-upload>
+                            <single-upload v-model="formData.imageUrl" :disabled="'imageUrl'==subColumn"></single-upload>
+            </el-form-item>
+            <el-form-item prop="pathUrl" label="地址">
+                <el-input v-model="formData.pathUrl" :disabled="'pathUrl'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
             </el-form-item>
             <el-form-item prop="rank" label="排序">
-                <el-input v-model="formData.rank"  style="width:210px"  :disabled="'rank'==subColumn"></el-input>
+                <el-input v-model="formData.rank" :disabled="'rank'==subColumn"></el-input>
             </el-form-item>
             <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
@@ -33,115 +44,135 @@
     </div>
 </template>
 <script>
-import formValidator from '../formValidator'
+    import formValidator from '../formValidator'
+    import { mapState } from 'vuex'
+    import { format } from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
 
-export default {
-    created() {
-        if (this.$route.query.column) {
-            this.subColumn = this.$route.query.column.split(',')[1];
-            this.subValue = this.$route.query.column.split(',')[0];
-        }
-
-        if (this.$route.query.id) {
-            this.$http.get({
-                url: '/bannerInfo/getOne',
-                data: {
-                    id: this.$route.query.id
-                }
-            }).then(res => {
-                if (res.success) {
+    export default {
+        name: 'BannerInfo',
+        created() {
 
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
 
-                    this.formData = res.data;
-
-                    if (this.$route.query.column) {
-                        this.formData[this.subColumn] = this.subValue;
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/bannerInfo/getOne',
+                    data: {
+                        id: this.$route.query.id
                     }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            this.formData = res.data;
+                        if (this.$route.query.column) {
+                            this.formData[this.subColumn] = this.subValue;
+                        }
+                    }
+                })
+            } else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
                 }
-            })
-        } else {
-            if (this.$route.query.column) {
-                this.formData[this.subColumn] = this.subValue;
             }
-        }
 
-    },
-    data() {
-        return {
-            saving: false,
-            formData: {},
-            rules: {
-                location:
-                    [
-                        { required: true, message: '请输入 位置', trigger: 'blur' },
-                    ],
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
+        data() {
+            return {
+                saving: false,
+                formData: {
+                },
+                rules: {
+                },
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
             },
-            locationOptions: [
-                { label: '首页banner', value: '1' },
-                { label: '首页影楼修图消息', value: '2' },
-                { label: '首页商业修图消息', value: '4' },
-                { label: '首页摄影消息', value: '5' },
-                { label: '首页样片消息', value: '6' },
-                { label: '首页营销消息', value: '7' },
-                { label: '首页周边消息', value: '17' },
-                { label: '影楼修图banner', value: '8' },
-                { label: '商业修图banner', value: '9' },
-                { label: '摄影banner', value: '10' },
-                { label: '样片banner', value: '11' },
-                { label: '营销banner', value: '12' },
-                { label: '周边banner', value: '13' },
-                { label: '加入我们banner', value: '14' },
-                { label: '联系我们banner', value: '15' },
-                { label: '关于我们banner', value: '16' },
+            logicalValidate() {
+                let logicalData = {
+                };
 
-            ],
-            subColumn: '',
-            subValue: '',
-        }
-    },
-    methods: {
-        onSave() {
-            this.$refs.form.validate((valid) => {
-                if (valid) {
+                if (JSON.stringify(logicalData) == '{}') {
                     this.submit();
                 } else {
-                    return false;
+                    this.$http.get({
+                        url: '/bannerInfo/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
                 }
-            });
-        },
-        submit() {
-            var data = JSON.parse(JSON.stringify(this.formData));
-            this.$http.post({
-                url: this.formData.id ? '/bannerInfo/update' : '/bannerInfo/save',
-                data: data
-            }).then(res => {
-                if (res.success) {
-                    this.$message.success('成功');
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                                                                                                                                                                                                                
+                this.$http.post({
+                    url: this.formData.id ? '/bannerInfo/update' : '/bannerInfo/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                        url: '/bannerInfo/del',
+                        data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
                     this.$router.go(-1);
-                } else {
-                    this.$message.warning('失败')
-                }
-            });
-        },
-        onDelete() {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
-                return this.$http.post({
-                    url: '/bannerInfo/del',
-                    data: { id: this.formData.id }
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
                 })
-            }).then(() => {
-                this.$message.success('删除成功');
-                this.$router.go(-1);
-            }).catch(action => {
-                if (action === 'cancel') {
-                    this.$message.info('删除取消');
-                } else {
-                    this.$message.error('删除失败');
-                }
-            })
-        },
+            },
+        }
     }
-}
 </script>
 <style lang="less" scoped>
 </style>

+ 437 - 328
src/main/vue/src/pages/BannerInfos.vue

@@ -1,26 +1,25 @@
 <template>
     <div>
         <div class="filters-container">
-
-            <el-select v-model="slectLocation" clearable filterable placeholder="位置" @change="locationChange" size="small" style="width:120px">
-                <el-option v-for="item in locationOptions" :key="item.value" :label="item.label" :value="item.value">
-                </el-option>
-            </el-select>
-            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item" style="width:120px"></el-input>
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
             <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
             </el-button>
-            <!-- <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small" icon="el-icon-search" class="filter-item">高级查询
-            </el-button> -->
-            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small" icon="el-icon-sort" class="filter-item">排序
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/bannerInfo',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
             </el-button>
-            <el-button @click="$router.push({path:'/bannerInfo',query:{column:$route.query.column}})" type="primary" size="small" icon="el-icon-edit" class="filter-item">添加
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
             </el-button>
-            <!-- <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
-            </el-button> -->
             <el-dropdown trigger="click" size="medium" class="table-column-filter">
                 <span>
-                    筛选数据
-                    <i class="el-icon-arrow-down el-icon--right"></i>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
                 </span>
                 <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
                     <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
@@ -28,37 +27,119 @@
                 </el-dropdown-menu>
             </el-dropdown>
         </div>
-        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table">
-            <el-table-column v-if="multipleMode" align="center" type="selection" width="50">
-            </el-table-column>
-            <el-table-column type="index" min-width="50" align="center">
-            </el-table-column>
-
-            <el-table-column v-if="isColumnShow('location')" align="center" prop="location" :formatter="locationFormatter" label="位置" min-width="100">
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
             </el-table-column>
-
-            <el-table-column v-if="isColumnShow('title')" :show-overflow-tooltip='true' align="center" prop="title" label="标题" min-width="100">
-            </el-table-column>
-
-            <el-table-column v-if="isColumnShow('subtitle')" :show-overflow-tooltip='true' align="center" prop="subtitle" label="副标题" min-width="100">
-            </el-table-column>
-
-            <el-table-column v-if="isColumnShow('url')" :show-overflow-tooltip='true' align="center" prop="url" label="跳转链接" min-width="100">
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
             </el-table-column>
-
-            <el-table-column v-if="isColumnShow('imageUrl')" align="center" prop="imageUrl" label="图片" min-width="120">
-                <template slot-scope="{row}" v-if="row.imageUrl">
-                    <img :src="row.imageUrl+'?x-oss-process=image/resize,m_pad,h_60,w_150,color_FFFFFF'" style="cursor:pointer" @click="showImg(row.imageUrl)"/>
-                </template>
-
-            </el-table-column>
-
-            <el-table-column v-if="isColumnShow('rank')" align="center" prop="rank" label="排序" min-width="100">
-            </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" min-width="70">
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户Id"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('statusFlag')"
+                                prop="statusFlag"
+                                label="状态"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('title')"
+                                prop="title"
+                                label="标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('subtitle')"
+                                prop="subtitle"
+                                label="子标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('imageUrl')"
+                                prop="imageUrl"
+                                label="图片"
+                                min-width="100">
+                            <template slot-scope="{row}">
+                                <img :src="row.imageUrl" @click="showImg(row.imageUrl)" style="width: 100px;height: 100px;vertical-align: middle;" />
+                            </template>
+
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('pathUrl')"
+                                prop="pathUrl"
+                                label="地址"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('rank')"
+                                prop="rank"
+                                label="排序"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
                 <template slot-scope="scope">
-                    <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
-                    <!-- <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button> -->
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
                 </template>
             </el-table-column>
         </el-table>
@@ -71,7 +152,15 @@
                     <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
                 </el-button-group>
             </div>
-            <el-pagination background @size-change="pageSizeChange" @current-change="currentPageChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40, 50]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="totalNumber">
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
             </el-pagination>
         </div>
         <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
@@ -92,14 +181,16 @@
                     <template slot-scope="{row}">
                         <el-select v-model="row.name">
 
-                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value" :key="item.value"></el-option>
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
                         </el-select>
                     </template>
                 </el-table-column>
                 <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
                     <template slot-scope="{row}">
                         <el-select v-model="row.searchMethod">
-                            <el-option v-for="item in searchMethods" :label="item" :value="item" :key="item"></el-option>
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
                         </el-select>
                     </template>
                 </el-table-column>
@@ -129,7 +220,8 @@
                     <template slot-scope="{row}">
                         <el-select v-model="row.name">
 
-                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value" :key="item.value"></el-option>
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
                         </el-select>
                     </template>
                 </el-table-column>
@@ -156,324 +248,341 @@
             </span>
         </el-dialog>
 
-        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small" width="740px">
-            <img  :src="imgSrc+'?x-oss-process=image/resize,m_pad,h_300,w_700,color_FFFFFF'" alt="">
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
         </el-dialog>
 
     </div>
 </template>
 <script>
-import { mapState } from 'vuex'
-import { format } from 'date-fns'
-import zh from 'date-fns/locale/zh_cn'
-
-export default {
-    created() {
-        this.getData();
-    },
-    data() {
-        return {
-            totalNumber: 0,
-            totalPage: 10,
-            currentPage: 1,
-            pageSize: 20,
-            tableData: [],
-            filter1: '',
-            filter2: '',
-            tableColumns: [
-                {
-                    label: '位置',
-                    value: 'location',
-                    show: true
-                },
-                {
-                    label: '标题',
-                    value: 'title',
-                    show: true
-                },
-                {
-                    label: '副标题',
-                    value: 'subtitle',
-                    show: true
-                },
-                {
-                    label: '跳转链接',
-                    value: 'url',
-                    show: true
-                },
-                {
-                    label: '图片',
-                    value: 'imageUrl',
-                    show: true
-                },
-                {
-                    label: '排序',
-                    value: 'rank',
-                    show: true
-                },
-            ],
-            multipleMode: false,
-            showAdvancedQueryDialog: false,
-            advancedQueryFields: [],
-            showTableSortDialog: false,
-            tableSortFields: [],
-            searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
-            advancedQueryColumns: [
-                {
-                    label: '位置',
-                    value: 'location'
-                },
-                {
-                    label: '标题',
-                    value: 'title'
-                },
-                {
-                    label: '副标题',
-                    value: 'subtitle'
-                },
-                {
-                    label: '跳转链接',
-                    value: 'url'
-                },
-                {
-                    label: '图片',
-                    value: 'image_url'
-                },
-                {
-                    label: '排序',
-                    value: 'rank'
-                },
-            ],
-            advancedQuerySearchKey: '',
-            orderByStr: '',
-            imgSrc: '',
-            imageDialogVisible: false,
-            locationOptions: [
-                { label: '首页banner', value: '1' },
-                { label: '首页影楼修图消息', value: '2' },
-                { label: '首页商业修图消息', value: '4' },
-                { label: '首页摄影消息', value: '5' },
-                { label: '首页样片消息', value: '6' },
-                { label: '首页营销消息', value: '7' },
-                { label: '首页周边消息', value: '17' },
-                { label: '影楼修图banner', value: '8' },
-                { label: '商业修图banner', value: '9' },
-                { label: '摄影banner', value: '10' },
-                { label: '样片banner', value: '11' },
-                { label: '营销banner', value: '12' },
-                { label: '周边banner', value: '13' },
-                { label: '加入我们banner', value: '14' },
-                { label: '联系我们banner', value: '15' },
-                { label: '关于我们banner', value: '16' },
-
-            ],
-            slectLocation: '',
-        }
-    },
-    computed: {
-        ...mapState(['tableHeight']),
-        selection() {
-            return this.$refs.table.selection.map(i => i.id);
-        }
-    },
-    methods: {
-        pageSizeChange(size) {
-            this.currentPage = 1;
-            this.pageSize = size;
-            this.getData();
-        },
-        currentPageChange(page) {
-            this.currentPage = page;
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'BannerInfos',
+        created() {
             this.getData();
         },
-        getData() {
-
-            var data = {
-                currentPage: this.currentPage,
-                pageNumber: this.pageSize,
-                searchKey: this.filter1,
-                advancedQuery: this.advancedQuerySearchKey,
-                orderByStr: this.orderByStr,
-                location: this.slectLocation,
-            }
-
-            if (this.$route.query.column) {
-                var tempColumn = this.$route.query.column;
-                data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户Id',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'statusFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title',
+                                show: true
+                            },
+                                                                                                {
+                                label: '子标题',
+                                value: 'subtitle',
+                                show: true
+                            },
+                                                                                                {
+                                label: '图片',
+                                value: 'imageUrl',
+                                show: true
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'pathUrl',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户Id',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'status_flag'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title'
+                            },
+                                                                                                {
+                                label: '子标题',
+                                value: 'subtitle'
+                            },
+                                                                                                {
+                                label: '图片',
+                                value: 'image_url'
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'path_url'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
             }
-
-            this.$http.get({
-                url: '/bannerInfo/page',
-                data: data
-            }).then(res => {
-                if (res.success) {
-                    this.totalNumber = res.data.page.totalNumber;
-                    this.tableData = res.data.pp;
-                }
-            })
         },
-        isColumnShow(column) {
-            var row = this.tableColumns.find(i => i.value === column);
-            return row ? row.show : false;
-        },
-        toggleMultipleMode(multipleMode) {
-            this.multipleMode = multipleMode;
-            if (!multipleMode) {
-                this.$refs.table.clearSelection();
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
             }
         },
-        editRow(row) {
-            this.$router.push({
-                path: '/bannerInfo',
-                query: {
-                    id: row.id,
-                    column: this.$route.query.column,
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
                 }
-            })
-        },
-        operation1() {
-            this.$notify({
-                title: '提示',
-                message: this.selection
-            });
-        },
-        operation2() {
-            this.$message('操作2');
-        },
-        addField() {
-            this.advancedQueryFields.push({
-                link: 'AND',
-                name: '',
-                searchMethod: '=',
-                value: '',
-            });
-        },
-        removeField(i) {
-            if (this.advancedQueryFields.length > 0) {
-                this.advancedQueryFields.splice(i, 1);
-            }
-        },
-        advancedQuery() {
-
-            this.advancedQuerySearchKey = '';
 
-            if (this.advancedQueryFields.length > 0) {
-
-                var templist = [];
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
 
-                this.advancedQueryFields.forEach(item => {
-                    if (item.link && item.name && item.searchMethod && item.value) {
-                        var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
-                        templist.push(tempItem);
+                this.$http.get({
+                    url: '/bannerInfo/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
                     }
                 })
-
-                if (templist.length > 0) {
-
-                    this.advancedQuerySearchKey = templist.join('_;');
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
                 }
-            }
-
-            this.getData();
-            this.showAdvancedQueryDialog = false;
-        },
-        addSortField() {
-            this.tableSortFields.push({
-                name: '',
-                order: 'asc',
-            });
-        },
-        removeSortField(i) {
-            if (this.tableSortFields.length > 0) {
-                this.tableSortFields.splice(i, 1);
-            }
-        },
-        tableSortQuery() {
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/bannerInfo',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
 
-            this.orderByStr = '';
+                this.advancedQuerySearchKey = '';
 
-            if (this.tableSortFields.length > 0) {
+                if (this.advancedQueryFields.length > 0) {
 
-                var templist = [];
+                    var templist = [];
 
-                this.tableSortFields.forEach(item => {
-                    if (item.name && item.order) {
-                        var tempItem = item.name + '_,' + item.order;
-                        templist.push(tempItem);
-                    }
-                })
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
 
-                if (templist.length > 0) {
+                    if (templist.length > 0) {
 
-                    this.orderByStr = templist.join('_;');
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
                 }
-            }
 
-            this.getData();
-            this.showTableSortDialog = false;
-        },
-        exportExcel() {
-            window.location.href = this.$baseUrl + "/bannerInfo/exportExcel?searchKey="
-                + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey + "&orderByStr=" + this.orderByStr;
-        },
-        searchData() {
-            this.currentPage = 1;
-            this.getData();
-        },
-        deleteRow(row) {
-            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
-                return this.$http.post({
-                    url: '/bannerInfo/del',
-                    data: { id: row.id }
-                })
-            }).then(() => {
-                this.$message.success('删除成功');
                 this.getData();
-            }).catch(action => {
-                if (action === 'cancel') {
-                    this.$message.info('删除取消');
-                } else {
-                    this.$message.error('删除失败');
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
                 }
-            })
-        },
-        DateTimeFormatter(row, column, cellValue) {
-            if (cellValue) {
-                return format(cellValue, 'YYYY/MM/DD HH:mm', { locale: zh })
-            }
+            },
+            tableSortQuery() {
 
-        },
-        DateFormatter(row, column, cellValue) {
-            if (cellValue) {
-                return format(cellValue, 'YYYY/MM/DD', { locale: zh })
-            }
+                this.orderByStr = '';
 
-        },
-        showImg(img) {
-            this.imgSrc = img;
-            this.imageDialogVisible = true;
-        },
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
 
-        locationFormatter(row, column, cellValue) {
-            if (cellValue) {
-                var location = '';
-                this.locationOptions.forEach(item => {
-                    if (item.value == Number(cellValue)) {
-                        location = item.label;
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/bannerInfo/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/bannerInfo/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
                     }
                 })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
 
-                return location;
-            }
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
 
-        },
-        locationChange() {
-            this.currentPage = 1;
-            this.getData();
-        },
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
 
+        }
     }
-}
 </script>
 <style lang="less" scoped>
+
 </style>

+ 178 - 0
src/main/vue/src/pages/HomeAd.vue

@@ -0,0 +1,178 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="userId" label="用户Id">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="statusFlag" label="状态">
+                <el-input v-model="formData.statusFlag" :disabled="'statusFlag'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="typeFlag" label="类型">
+                <el-input v-model="formData.typeFlag" :disabled="'typeFlag'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="title" label="标题">
+                <el-input v-model="formData.title" :disabled="'title'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="subtitle" label="子标题">
+                <el-input v-model="formData.subtitle" :disabled="'subtitle'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="imageUrl" label="图片">
+                            <single-upload v-model="formData.imageUrl" :disabled="'imageUrl'==subColumn"></single-upload>
+            </el-form-item>
+            <el-form-item prop="pathUrl" label="地址">
+                <el-input v-model="formData.pathUrl" :disabled="'pathUrl'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="rank" label="排序">
+                <el-input v-model="formData.rank" :disabled="'rank'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+    import { mapState } from 'vuex'
+    import { format } from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'HomeAd',
+        created() {
+
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/homeAd/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            this.formData = res.data;
+                        if (this.$route.query.column) {
+                            this.formData[this.subColumn] = this.subValue;
+                        }
+                    }
+                })
+            } else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                },
+        data() {
+            return {
+                saving: false,
+                formData: {
+                },
+                rules: {
+                },
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            logicalValidate() {
+                let logicalData = {
+                };
+
+                if (JSON.stringify(logicalData) == '{}') {
+                    this.submit();
+                } else {
+                    this.$http.get({
+                        url: '/homeAd/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
+                }
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                                                                                                                                                                                                                
+                this.$http.post({
+                    url: this.formData.id ? '/homeAd/update' : '/homeAd/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                        url: '/homeAd/del',
+                        data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 588 - 0
src/main/vue/src/pages/HomeAds.vue

@@ -0,0 +1,588 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/homeAd',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户Id"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('statusFlag')"
+                                prop="statusFlag"
+                                label="状态"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('title')"
+                                prop="title"
+                                label="标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('subtitle')"
+                                prop="subtitle"
+                                label="子标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('imageUrl')"
+                                prop="imageUrl"
+                                label="图片"
+                                min-width="100">
+                            <template slot-scope="{row}">
+                                <img :src="row.imageUrl" @click="showImg(row.imageUrl)" style="width: 100px;height: 100px;vertical-align: middle;" />
+                            </template>
+
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('pathUrl')"
+                                prop="pathUrl"
+                                label="地址"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('rank')"
+                                prop="rank"
+                                label="排序"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'HomeAds',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户Id',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'statusFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title',
+                                show: true
+                            },
+                                                                                                {
+                                label: '子标题',
+                                value: 'subtitle',
+                                show: true
+                            },
+                                                                                                {
+                                label: '图片',
+                                value: 'imageUrl',
+                                show: true
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'pathUrl',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户Id',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'status_flag'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title'
+                            },
+                                                                                                {
+                                label: '子标题',
+                                value: 'subtitle'
+                            },
+                                                                                                {
+                                label: '图片',
+                                value: 'image_url'
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'path_url'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/homeAd/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/homeAd',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/homeAd/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/homeAd/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 175 - 0
src/main/vue/src/pages/HomeMenu.vue

@@ -0,0 +1,175 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="typeFlag" label="类型">
+                <el-input v-model="formData.typeFlag" :disabled="'typeFlag'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="title" label="标题">
+                <el-input v-model="formData.title" :disabled="'title'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="icon" label="图标">
+                            <single-upload v-model="formData.icon" :disabled="'icon'==subColumn"></single-upload>
+            </el-form-item>
+            <el-form-item prop="pathUrl" label="地址">
+                <el-input v-model="formData.pathUrl" :disabled="'pathUrl'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="rank" label="排序">
+                <el-input v-model="formData.rank" :disabled="'rank'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="statusFlag" label="状态">
+                <el-input v-model="formData.statusFlag" :disabled="'statusFlag'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+    import { mapState } from 'vuex'
+    import { format } from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'HomeMenu',
+        created() {
+
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/homeMenu/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                this.formData = res.data;
+                        if (this.$route.query.column) {
+                            this.formData[this.subColumn] = this.subValue;
+                        }
+                    }
+                })
+            } else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    },
+        data() {
+            return {
+                saving: false,
+                formData: {
+                },
+                rules: {
+                },
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            logicalValidate() {
+                let logicalData = {
+                };
+
+                if (JSON.stringify(logicalData) == '{}') {
+                    this.submit();
+                } else {
+                    this.$http.get({
+                        url: '/homeMenu/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
+                }
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                                                                                                                                                                                                
+                this.$http.post({
+                    url: this.formData.id ? '/homeMenu/update' : '/homeMenu/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                        url: '/homeMenu/del',
+                        data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 572 - 0
src/main/vue/src/pages/HomeMenus.vue

@@ -0,0 +1,572 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/homeMenu',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('title')"
+                                prop="title"
+                                label="标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('icon')"
+                                prop="icon"
+                                label="图标"
+                                min-width="100">
+                            <template slot-scope="{row}">
+                                <img :src="row.icon" @click="showImg(row.icon)" style="width: 100px;height: 100px;vertical-align: middle;" />
+                            </template>
+
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('pathUrl')"
+                                prop="pathUrl"
+                                label="地址"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('rank')"
+                                prop="rank"
+                                label="排序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('statusFlag')"
+                                prop="statusFlag"
+                                label="状态"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'HomeMenus',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title',
+                                show: true
+                            },
+                                                                                                {
+                                label: '图标',
+                                value: 'icon',
+                                show: true
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'pathUrl',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank',
+                                show: true
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'statusFlag',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title'
+                            },
+                                                                                                {
+                                label: '图标',
+                                value: 'icon'
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'path_url'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank'
+                            },
+                                                                                                {
+                                label: '状态',
+                                value: 'status_flag'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/homeMenu/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/homeMenu',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/homeMenu/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/homeMenu/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 15 - 3
src/main/vue/src/pages/ItemType.vue

@@ -17,6 +17,18 @@
             <el-form-item prop="remark" label="备注">
                 <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
             </el-form-item>
+            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="typeFlag" label="类型">
+                <el-input v-model="formData.typeFlag" :disabled="'typeFlag'==subColumn"></el-input>
+            </el-form-item>
             <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
                 <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
@@ -48,7 +60,7 @@
                     }
                 }).then(res => {
                     if (res.success) {
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    this.formData = res.data;
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    this.formData = res.data;
                         if (this.$route.query.column) {
                             this.formData[this.subColumn] = this.subValue;
                         }
@@ -60,7 +72,7 @@
                 }
             }
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
         data() {
             return {
                 saving: false,
@@ -123,7 +135,7 @@
             submit() {
                 let data = {...this.formData};
 
-                                                                                                                                                                                                
+                                                                                                                                                                                                                                                                
                 this.$http.post({
                     url: this.formData.id ? '/itemType/update' : '/itemType/save',
                     data: data

+ 64 - 0
src/main/vue/src/pages/ItemTypes.vue

@@ -78,6 +78,34 @@
                                 label="备注"
                                 min-width="100">
                         </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
                                                             <el-table-column
                     label="操作"
                     align="center"
@@ -245,6 +273,26 @@
                                 label: '备注',
                                 value: 'remark',
                                 show: true
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
                             },
                                                             ],
                 multipleMode: false,
@@ -273,6 +321,22 @@
                                                                                                 {
                                 label: '备注',
                                 value: 'remark'
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
                             },
                                                             ],
                 advancedQuerySearchKey: '',

+ 217 - 0
src/main/vue/src/pages/Items.vue

@@ -0,0 +1,217 @@
+<!--suppress ALL -->
+<template>
+    <div style="">
+        <el-tree :data="items" :render-content="renderContent" :highlight-current="true" :expand-on-click-node="true" node-key="id" default-expand-all>
+        </el-tree>
+        <el-button size="mini" type="text" @click="addRootItem" style="margin-left: 24px">添加</el-button>
+        <el-dialog :visible.sync="dialogVisible" title="添加类目">
+            <el-form :model="item" ref="form" label-position="top" size="small">
+                <el-form-item label="类目名" prop="typeName" :rules="[{required: true, message: '请填写类目名', trigger: 'blur'}]">
+                    <el-input v-model="item.typeName"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer">
+                <el-button @click="dialogVisible = false" size="small">取消</el-button>
+                <el-button type="primary" @click="addItem" :loading="loading" size="small">保存</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+<script>
+import axios from 'axios'
+
+export default {
+    created() {
+        this.getData();
+    },
+    data() {
+        return {
+            dialogVisible: false,
+            curr: null,
+            loading: false,
+            items: [],
+            item: {
+                typeName: '',
+            },
+        }
+    },
+    methods: {
+        addRootItem() {
+            this.item = {
+                parentId: 0,
+                typeName: '',
+            };
+            if (this.items && this.items.length > 0) {
+                this.item.sort = this.items[this.items.length - 1].sort + 1;
+            } else {
+                this.item.sort = 1;
+            }
+            this.dialogVisible = true;
+        },
+        showAddDialog(node, data) {
+            this.item = {
+                parentId: node.data.id,
+                typeName: '',
+            };
+            if (node.childNodes && node.childNodes.length > 0) {
+                this.item.sort = node.childNodes[node.childNodes.length - 1].data.sort + 1;
+            } else {
+                this.item.sort = 1;
+            }
+            this.dialogVisible = true;
+        },
+        showEditDialog(node, data) {
+            this.item = {
+                id: data.id,
+                typeName: data.typeName,
+            };
+            this.dialogVisible = true;
+        },
+        addItem() {
+            this.$refs.form.validate(valid => {
+                if (valid) {
+                    this.loading = true;
+                    this.$http.post({
+                        url: this.item.id ? '/itemType/update' : '/itemType/save',
+                        data: this.item
+                    }).then(res => {
+                        this.loading = false;
+                        if (res.success) {
+                            this.$message.success('添加成功')
+                            this.dialogVisible = false;
+                            this.getData();
+                        } else {
+                            this.$message.warning('添加失败')
+                        }
+                    })
+                }
+            });
+        },
+        remove(node, data) {
+            this.$confirm('确定删除类目?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'error'
+            }).then(() => {
+                this.$http.post({
+                    url: '/itemType/del',
+                    data: {
+                        id: data.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('删除成功');
+                        this.getData();
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            }).catch(() => {
+            });
+        },
+        moveUp(node, data) {
+            const formData = d => {
+                let formData = new FormData();
+                for (let key in d) {
+                    if (d.hasOwnProperty(key)) {
+                        formData.append(key, d[key]);
+                    }
+                }
+                return formData;
+            }
+            if (node.previousSibling) {
+                axios.all([axios.post(this.$baseUrl + '/itemType/update', formData({
+                    id: node.data.id,
+                    sort: node.previousSibling.data.sort
+                })), axios.post(this.$baseUrl + '/itemType/update', formData({
+                    id: node.previousSibling.data.id,
+                    sort: node.data.sort
+                }))]).then(axios.spread((acct, perms) => {
+                    this.getData();
+                }));
+            }
+        },
+        moveDown(node, data) {
+            const formData = d => {
+                let formData = new FormData();
+                for (let key in d) {
+                    if (d.hasOwnProperty(key)) {
+                        formData.append(key, d[key]);
+                    }
+                }
+                return formData;
+            }
+            if (node.nextSibling) {
+                axios.all([axios.post(this.$baseUrl + '/itemType/update', formData({
+                    id: node.data.id,
+                    sort: node.nextSibling.data.sort
+                })), axios.post(this.$baseUrl + '/itemType/update', formData({
+                    id: node.nextSibling.data.id,
+                    sort: node.data.sort
+                }))]).then(axios.spread((acct, perms) => {
+                    this.getData();
+                }));
+            }
+        },
+        getData() {
+            this.$http.get({
+                url: '/itemType/itemTree'
+            }).then(res => {
+                if (res.success) {
+                    this.items = res.data
+                }
+            })
+        },
+        renderContent(h, { node, data, store }) {
+            return (
+                <span class="custom-tree-node">
+                    <span>{data.typeName}</span>
+                    <span class="opt">
+                        <el-button size="mini" type="text" on-click={(e) => { this.moveUp(node, data), e.stopPropagation() }} class="up">上移</el-button>
+                        <el-button size="mini" type="text" on-click={(e) => { this.moveDown(node, data), e.stopPropagation() }}>下移</el-button>
+                        <el-button size="mini" type="text" on-click={(e) => { this.showEditDialog(node, data), e.stopPropagation() }}>编辑</el-button>
+                        <el-button size="mini" type="text" on-click={(e) => { this.showAddDialog(node, data), e.stopPropagation() }}>添加</el-button>
+                        <el-button size="mini" type="text" on-click={(e) => { this.remove(node, data), e.stopPropagation() }}>删除</el-button>
+                    </span>
+                </span>
+            );
+        },
+    },
+    watch: {
+    }
+}
+</script>
+<style lang="less">
+.custom-tree-node {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    font-size: 14px;
+    padding-right: 8px;
+    .url {
+        flex-grow: 1;
+        text-align: right;
+        margin-right: 20px;
+        color: #999;
+    }
+    .opt {
+        opacity: 0;
+    }
+}
+
+.custom-tree-node:hover {
+    .opt {
+        opacity: 1;
+    }
+}
+
+.available-icons {
+    color: #409eff;
+    text-decoration: none;
+    &:hover {
+        color: #409eff;
+        text-decoration: none;
+    }
+}
+</style>

+ 172 - 0
src/main/vue/src/pages/StoreCase.vue

@@ -0,0 +1,172 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="caseName" label="名称">
+                <el-input v-model="formData.caseName" :disabled="'caseName'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="title" label="标题">
+                <el-input v-model="formData.title" :disabled="'title'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="案例">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="image" label="图集">
+                <el-input v-model="formData.image" :disabled="'image'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="typeFlag" label="类型">
+                <el-input v-model="formData.typeFlag" :disabled="'typeFlag'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="rank" label="排序">
+                <el-input v-model="formData.rank" :disabled="'rank'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+    import { mapState } from 'vuex'
+    import { format } from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'StoreCase',
+        created() {
+
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/storeCase/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    this.formData = res.data;
+                        if (this.$route.query.column) {
+                            this.formData[this.subColumn] = this.subValue;
+                        }
+                    }
+                })
+            } else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
+        data() {
+            return {
+                saving: false,
+                formData: {
+                },
+                rules: {
+                },
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            logicalValidate() {
+                let logicalData = {
+                };
+
+                if (JSON.stringify(logicalData) == '{}') {
+                    this.submit();
+                } else {
+                    this.$http.get({
+                        url: '/storeCase/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
+                }
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                                                                                                                                                                                
+                this.$http.post({
+                    url: this.formData.id ? '/storeCase/update' : '/storeCase/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                        url: '/storeCase/del',
+                        data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 552 - 0
src/main/vue/src/pages/StoreCases.vue

@@ -0,0 +1,552 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/storeCase',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="Id"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('caseName')"
+                                prop="caseName"
+                                label="名称"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('title')"
+                                prop="title"
+                                label="标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="案例"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('image')"
+                                prop="image"
+                                label="图集"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('rank')"
+                                prop="rank"
+                                label="排序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'StoreCases',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'Id',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '名称',
+                                value: 'caseName',
+                                show: true
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title',
+                                show: true
+                            },
+                                                                                                {
+                                label: '案例',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '图集',
+                                value: 'image',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank',
+                                show: true
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'Id',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '名称',
+                                value: 'case_name'
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title'
+                            },
+                                                                                                {
+                                label: '案例',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '图集',
+                                value: 'image'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank'
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/storeCase/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/storeCase',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/storeCase/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/storeCase/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 178 - 0
src/main/vue/src/pages/StoreIntroduction.vue

@@ -0,0 +1,178 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="introduction" label="介绍">
+                            <rich-text
+                                    v-model="formData.introduction"
+                                    :disabled="'introduction'==subColumn">
+                            </rich-text>
+            </el-form-item>
+            <el-form-item prop="banner" label="banner">
+                            <multi-upload v-model="formData.banner" :disabled="'banner'==subColumn"></multi-upload>
+            </el-form-item>
+            <el-form-item prop="address" label="地址">
+                <el-input v-model="formData.address" :disabled="'address'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="longitude" label="经度">
+                <el-input v-model="formData.longitude" :disabled="'longitude'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="latitude" label="纬度">
+                <el-input v-model="formData.latitude" :disabled="'latitude'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="title" label="标题">
+                <el-input v-model="formData.title" :disabled="'title'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+    import { mapState } from 'vuex'
+    import { format } from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'StoreIntroduction',
+        created() {
+
+            if (this.$route.query.column) {
+                this.subColumn = this.$route.query.column.split(',')[1];
+                this.subValue = this.$route.query.column.split(',')[0];
+            }
+
+            if (this.$route.query.id) {
+                this.$http.get({
+                    url: '/storeIntroduction/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                this.formData = res.data;
+                        if (this.$route.query.column) {
+                            this.formData[this.subColumn] = this.subValue;
+                        }
+                    }
+                })
+            } else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    },
+        data() {
+            return {
+                saving: false,
+                formData: {
+                },
+                rules: {
+                },
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            logicalValidate() {
+                let logicalData = {
+                };
+
+                if (JSON.stringify(logicalData) == '{}') {
+                    this.submit();
+                } else {
+                    this.$http.get({
+                        url: '/storeIntroduction/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
+                }
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                                                                                                                                                                                                
+                this.$http.post({
+                    url: this.formData.id ? '/storeIntroduction/update' : '/storeIntroduction/save',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.$message.success('成功');
+                        this.$router.go(-1);
+                    } else {
+                        this.$message.warning('失败')
+                    }
+                });
+            },
+            onDelete() {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                    return this.$http.post({
+                        url: '/storeIntroduction/del',
+                        data: { id: this.formData.id }
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.$router.go(-1);
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+        }
+    }
+</script>
+<style lang="less" scoped>
+</style>

+ 568 - 0
src/main/vue/src/pages/StoreIntroductions.vue

@@ -0,0 +1,568 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/storeIntroduction',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="Id"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('introduction')"
+                                prop="introduction"
+                                label="介绍"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('banner')"
+                                prop="banner"
+                                label="banner"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('address')"
+                                prop="address"
+                                label="地址"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('longitude')"
+                                prop="longitude"
+                                label="经度"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('latitude')"
+                                prop="latitude"
+                                label="纬度"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('title')"
+                                prop="title"
+                                label="标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'StoreIntroductions',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'Id',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '介绍',
+                                value: 'introduction',
+                                show: true
+                            },
+                                                                                                {
+                                label: 'banner',
+                                value: 'banner',
+                                show: true
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'address',
+                                show: true
+                            },
+                                                                                                {
+                                label: '经度',
+                                value: 'longitude',
+                                show: true
+                            },
+                                                                                                {
+                                label: '纬度',
+                                value: 'latitude',
+                                show: true
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title',
+                                show: true
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'Id',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '介绍',
+                                value: 'introduction'
+                            },
+                                                                                                {
+                                label: 'banner',
+                                value: 'banner'
+                            },
+                                                                                                {
+                                label: '地址',
+                                value: 'address'
+                            },
+                                                                                                {
+                                label: '经度',
+                                value: 'longitude'
+                            },
+                                                                                                {
+                                label: '纬度',
+                                value: 'latitude'
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title'
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/storeIntroduction/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/storeIntroduction',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/storeIntroduction/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/storeIntroduction/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 221 - 0
src/main/vue/src/pages/StoreService.vue

@@ -0,0 +1,221 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="introduction" label="介绍">
+                <el-input v-model="formData.introduction" :disabled="'introduction'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeImage" label="店铺图">
+                <single-upload v-model="formData.storeImage" :disabled="'storeImage'==subColumn"></single-upload>
+            </el-form-item>
+            <el-form-item prop="listImage" label="列表图">
+                <single-upload v-model="formData.listImage" :disabled="'listImage'==subColumn"></single-upload>
+            </el-form-item>
+            <el-form-item prop="banner" label="轮播图">
+                <multi-upload v-model="formData.banner" :disabled="'banner'==subColumn"></multi-upload>
+            </el-form-item>
+            <el-form-item prop="typeFlag" label="类型">
+                <template>
+                    <el-select v-model="formData.typeFlag" clearable placeholder="请选择" :disabled="'typeFlag'==subColumn">
+                        <el-option v-for="item in typeFlagOptions" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="typeLevel" label="级别">
+                <template>
+                    <el-select v-model="formData.typeLevel" clearable placeholder="请选择" :disabled="'typeLevel'==subColumn">
+                        <el-option v-for="item in typeLevelOptions" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="serviceName" label="名称">
+                <el-input v-model="formData.serviceName" :disabled="'serviceName'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="title" label="标题">
+                <el-input v-model="formData.title" :disabled="'title'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="price" label="价格">
+                <el-input type="number" v-model="formData.price" :disabled="'price'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="shelfFlag" label="上架">
+                <el-switch v-model="formData.shelfFlag" :disabled="'shelfFlag'==subColumn">
+                </el-switch>
+            </el-form-item>
+            <el-form-item prop="storeFlag" label="店铺标识">
+                <el-switch v-model="formData.storeFlag" :disabled="'storeFlag'==subColumn">
+                </el-switch>
+            </el-form-item>
+            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="rank" label="排序">
+                <el-input type="number" v-model="formData.rank" :disabled="'rank'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+import { mapState } from 'vuex'
+import { format } from 'date-fns'
+import zh from 'date-fns/locale/zh_cn'
+
+export default {
+    name: 'StoreService',
+    created() {
+
+        if (this.$route.query.column) {
+            this.subColumn = this.$route.query.column.split(',')[1];
+            this.subValue = this.$route.query.column.split(',')[0];
+        }
+
+        if (this.$route.query.id) {
+            this.$http.get({
+                url: '/storeService/getOne',
+                data: {
+                    id: this.$route.query.id
+                }
+            }).then(res => {
+                if (res.success) {
+                    this.formData = res.data;
+                    if (this.$route.query.column) {
+                        this.formData[this.subColumn] = this.subValue;
+                    }
+                }
+            })
+        } else {
+            if (this.$route.query.column) {
+                this.formData[this.subColumn] = this.subValue;
+            }
+        }
+
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {
+            },
+            rules: {
+            },
+            typeFlagOptions: [{
+                value: 'photographer',
+                label: '摄影师'
+            }, {
+                value: 'makeup_artist',
+                label: '化妆师'
+            }, {
+                value: 'clothing',
+                label: '服装道具'
+            }, {
+                value: 'album',
+                label: '相框'
+            }, {
+                value: 'other',
+                label: '其他'
+            }],
+            typeLevelOptions: [],
+            subColumn: '',
+            subValue: '',
+        }
+    },
+    computed: {
+        ...mapState(['userInfo']),
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.logicalValidate();
+                } else {
+                    return false;
+                }
+            });
+        },
+        logicalValidate() {
+            let logicalData = {
+            };
+
+            if (JSON.stringify(logicalData) == '{}') {
+                this.submit();
+            } else {
+                this.$http.get({
+                    url: '/storeService/getOne',
+                    data: logicalData
+                }).then(res => {
+                    if (res.success) {
+                        let logicalFlag = true;
+                        if (res.data) {
+                            if (this.formData.id) {
+                                if (res.data.id != this.formData.id) {
+                                    logicalFlag = false;
+                                }
+                            } else {
+                                logicalFlag = false;
+                            }
+                        }
+
+                        if (logicalFlag) {
+                            this.submit();
+                        } else {
+                            this.$message.warning('逻辑关键字:' + '' + '验证失败')
+                        }
+
+                    } else {
+                        this.$message.warning('逻辑关键字:' + '' + '验证失败')
+                    }
+                });
+            }
+        },
+        submit() {
+            let data = { ...this.formData };
+
+
+            this.$http.post({
+                url: this.formData.id ? '/storeService/update' : '/storeService/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/storeService/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 186 - 0
src/main/vue/src/pages/StoreServiceLevel.vue

@@ -0,0 +1,186 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="typeFlag" label="类型">
+                <template>
+                    <el-select v-model="formData.typeFlag" clearable placeholder="请选择" :disabled="'typeFlag'==subColumn">
+                        <el-option v-for="item in typeFlagOptions" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="levelName" label="级别">
+                <el-input v-model="formData.levelName" :disabled="'levelName'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="miniId" label="小程序">
+                <el-input v-model="formData.miniId" :disabled="'miniId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="storeId" label="店铺">
+                <el-input v-model="formData.storeId" :disabled="'storeId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="rank" label="">
+                <el-input v-model="formData.rank" :disabled="'rank'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+import { mapState } from 'vuex'
+import { format } from 'date-fns'
+import zh from 'date-fns/locale/zh_cn'
+
+export default {
+    name: 'StoreServiceLevel',
+    created() {
+
+        if (this.$route.query.column) {
+            this.subColumn = this.$route.query.column.split(',')[1];
+            this.subValue = this.$route.query.column.split(',')[0];
+        }
+
+        if (this.$route.query.id) {
+            this.$http.get({
+                url: '/storeServiceLevel/getOne',
+                data: {
+                    id: this.$route.query.id
+                }
+            }).then(res => {
+                if (res.success) {
+                    this.formData = res.data;
+                    if (this.$route.query.column) {
+                        this.formData[this.subColumn] = this.subValue;
+                    }
+                }
+            })
+        } else {
+            if (this.$route.query.column) {
+                this.formData[this.subColumn] = this.subValue;
+            }
+        }
+
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {
+            },
+            rules: {
+            },
+            typeFlagOptions: [{
+                value: 'photographer',
+                label: '摄影师'
+            }, {
+                value: 'makeup_artist',
+                label: '化妆师'
+            }, {
+                value: 'clothing',
+                label: '服装道具'
+            }, {
+                value: 'album',
+                label: '相框'
+            }, {
+                value: 'other',
+                label: '其他'
+            }],
+            subColumn: '',
+            subValue: '',
+        }
+    },
+    computed: {
+        ...mapState(['userInfo']),
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.logicalValidate();
+                } else {
+                    return false;
+                }
+            });
+        },
+        logicalValidate() {
+            let logicalData = {
+            };
+
+            if (JSON.stringify(logicalData) == '{}') {
+                this.submit();
+            } else {
+                this.$http.get({
+                    url: '/storeServiceLevel/getOne',
+                    data: logicalData
+                }).then(res => {
+                    if (res.success) {
+                        let logicalFlag = true;
+                        if (res.data) {
+                            if (this.formData.id) {
+                                if (res.data.id != this.formData.id) {
+                                    logicalFlag = false;
+                                }
+                            } else {
+                                logicalFlag = false;
+                            }
+                        }
+
+                        if (logicalFlag) {
+                            this.submit();
+                        } else {
+                            this.$message.warning('逻辑关键字:' + '' + '验证失败')
+                        }
+
+                    } else {
+                        this.$message.warning('逻辑关键字:' + '' + '验证失败')
+                    }
+                });
+            }
+        },
+        submit() {
+            let data = { ...this.formData };
+
+
+            this.$http.post({
+                url: this.formData.id ? '/storeServiceLevel/update' : '/storeServiceLevel/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/storeServiceLevel/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$router.go(-1);
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
+                }
+            })
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 520 - 0
src/main/vue/src/pages/StoreServiceLevels.vue

@@ -0,0 +1,520 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/storeServiceLevel',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('levelName')"
+                                prop="levelName"
+                                label="级别"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('rank')"
+                                prop="rank"
+                                label=""
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'StoreServiceLevels',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '级别',
+                                value: 'levelName',
+                                show: true
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '',
+                                value: 'rank',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '级别',
+                                value: 'level_name'
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '',
+                                value: 'rank'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/storeServiceLevel/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/storeServiceLevel',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/storeServiceLevel/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/storeServiceLevel/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 672 - 0
src/main/vue/src/pages/StoreServices.vue

@@ -0,0 +1,672 @@
+<template>
+    <div>
+        <div class="filters-container">
+        
+            <el-input placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
+            <el-button @click="searchData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
+            </el-button>
+            <el-button @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small"
+                       icon="el-icon-search" class="filter-item">高级查询
+            </el-button>
+            <el-button @click="showTableSortDialog = !showTableSortDialog" type="primary" size="small"
+                       icon="el-icon-sort" class="filter-item">排序
+            </el-button>
+            <el-button @click="$router.push({path:'/storeService',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('introduction')"
+                                prop="introduction"
+                                label="介绍"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeImage')"
+                                prop="storeImage"
+                                label="店铺图"
+                                min-width="100">
+                            <template slot-scope="{row}">
+                                <img :src="row.storeImage" @click="showImg(row.storeImage)" style="width: 100px;height: 100px;vertical-align: middle;" />
+                            </template>
+
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('listImage')"
+                                prop="listImage"
+                                label="列表图"
+                                min-width="100">
+                            <template slot-scope="{row}">
+                                <img :src="row.listImage" @click="showImg(row.listImage)" style="width: 100px;height: 100px;vertical-align: middle;" />
+                            </template>
+
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('banner')"
+                                prop="banner"
+                                label="轮播图"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeLevel')"
+                                prop="typeLevel"
+                                label="级别"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('serviceName')"
+                                prop="serviceName"
+                                label="名称"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('title')"
+                                prop="title"
+                                label="标题"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('price')"
+                                prop="price"
+                                label="价格"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('shelfFlag')"
+                                prop="shelfFlag"
+                                label="上架"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeFlag')"
+                                prop="storeFlag"
+                                label="店铺标识"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('miniId')"
+                                prop="miniId"
+                                label="小程序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('storeId')"
+                                prop="storeId"
+                                label="店铺"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('rank')"
+                                prop="rank"
+                                label="排序"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                            <el-table-column
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'StoreServices',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '介绍',
+                                value: 'introduction',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺图',
+                                value: 'storeImage',
+                                show: true
+                            },
+                                                                                                {
+                                label: '列表图',
+                                value: 'listImage',
+                                show: true
+                            },
+                                                                                                {
+                                label: '轮播图',
+                                value: 'banner',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '级别',
+                                value: 'typeLevel',
+                                show: true
+                            },
+                                                                                                {
+                                label: '名称',
+                                value: 'serviceName',
+                                show: true
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title',
+                                show: true
+                            },
+                                                                                                {
+                                label: '价格',
+                                value: 'price',
+                                show: true
+                            },
+                                                                                                {
+                                label: '上架',
+                                value: 'shelfFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺标识',
+                                value: 'storeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'miniId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'storeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '介绍',
+                                value: 'introduction'
+                            },
+                                                                                                {
+                                label: '店铺图',
+                                value: 'store_image'
+                            },
+                                                                                                {
+                                label: '列表图',
+                                value: 'list_image'
+                            },
+                                                                                                {
+                                label: '轮播图',
+                                value: 'banner'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '级别',
+                                value: 'type_level'
+                            },
+                                                                                                {
+                                label: '名称',
+                                value: 'service_name'
+                            },
+                                                                                                {
+                                label: '标题',
+                                value: 'title'
+                            },
+                                                                                                {
+                                label: '价格',
+                                value: 'price'
+                            },
+                                                                                                {
+                                label: '上架',
+                                value: 'shelf_flag'
+                            },
+                                                                                                {
+                                label: '店铺标识',
+                                value: 'store_flag'
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '小程序',
+                                value: 'mini_id'
+                            },
+                                                                                                {
+                                label: '店铺',
+                                value: 'store_id'
+                            },
+                                                                                                {
+                                label: '排序',
+                                value: 'rank'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/storeService/page',
+                    data: data
+                }).then(res => {
+                    if (res.success) {
+                        this.totalNumber = res.data.page.totalNumber;
+                        this.tableData = res.data.pp;
+                    }
+                })
+            },
+            isColumnShow(column) {
+                var row = this.tableColumns.find(i => i.value === column);
+                return row ? row.show : false;
+            },
+            toggleMultipleMode(multipleMode) {
+                this.multipleMode = multipleMode;
+                if (!multipleMode) {
+                    this.$refs.table.clearSelection();
+                }
+            },
+            editRow(row) {
+                this.$router.push({
+                    path: '/storeService',
+                    query: {
+                        id: row.id,
+                        column: this.$route.query.column,
+                    }
+                })
+            },
+            operation1() {
+                this.$notify({
+                    title: '提示',
+                    message: this.selection
+                });
+            },
+            operation2() {
+                this.$message('操作2');
+            },
+            addField() {
+                this.advancedQueryFields.push({
+                    link: 'AND',
+                    name: '',
+                    searchMethod: '=',
+                    value: '',
+                });
+            },
+            removeField(i) {
+                if (this.advancedQueryFields.length > 0) {
+                    this.advancedQueryFields.splice(i, 1);
+                }
+            },
+            advancedQuery() {
+
+                this.advancedQuerySearchKey = '';
+
+                if (this.advancedQueryFields.length > 0) {
+
+                    var templist = [];
+
+                    this.advancedQueryFields.forEach(item => {
+                        if (item.link && item.name && item.searchMethod && item.value) {
+                            var tempItem = item.link + '_,' + item.name + '_,' + item.searchMethod + '_,' + item.value;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.advancedQuerySearchKey = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showAdvancedQueryDialog = false;
+            },
+            addSortField() {
+                this.tableSortFields.push({
+                    name: '',
+                    order: 'asc',
+                });
+            },
+            removeSortField(i) {
+                if (this.tableSortFields.length > 0) {
+                    this.tableSortFields.splice(i, 1);
+                }
+            },
+            tableSortQuery() {
+
+                this.orderByStr = '';
+
+                if (this.tableSortFields.length > 0) {
+
+                    var templist = [];
+
+                    this.tableSortFields.forEach(item => {
+                        if (item.name && item.order) {
+                            var tempItem = item.name + '_,' + item.order;
+                            templist.push(tempItem);
+                        }
+                    })
+
+                    if (templist.length > 0) {
+
+                        this.orderByStr = templist.join('_;');
+                    }
+                }
+
+                this.getData();
+                this.showTableSortDialog = false;
+            },
+            exportExcel() {
+                window.location.href = this.$baseUrl + "/storeService/exportExcel?searchKey="
+                        + this.filter1 + "&advancedQuery=" + this.advancedQuerySearchKey+"&orderByStr=" + this.orderByStr;
+            },
+            searchData() {
+                this.currentPage = 1;
+                this.getData();
+            },
+            deleteRow(row) {
+                this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                    return this.$http.post({
+                        url: '/storeService/del',
+                        data: {id: row.id}
+                    })
+                }).then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                    if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+            },
+            DateTimeFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD HH:mm', {locale: zh})
+                }
+
+            },
+            DateFormatter(row, column, cellValue) {
+                if (cellValue) {
+                    return format(cellValue, 'YYYY/MM/DD', {locale: zh})
+                }
+
+            },
+            showImg(img) {
+                this.imgSrc = img;
+                this.imageDialogVisible = true;
+            },
+
+        }
+    }
+</script>
+<style lang="less" scoped>
+
+</style>

+ 65 - 0
src/main/vue/src/router/index.js

@@ -578,6 +578,11 @@ const router = new Router({
                     name: 'ItemTypes',
                     component: () => import('../pages/ItemTypes')
                 },
+                {
+                    path: '/items',
+                    name: 'Items',
+                    component: () => import('../pages/Items')
+                },
                 {
                     path: '/propertyName',
                     name: 'PropertyName',
@@ -647,6 +652,66 @@ const router = new Router({
                     path: '/groupMembers',
                     name: 'GroupMembers',
                     component: () => import('../pages/GroupMembers')
+                },
+                {
+                    path: '/homeMenu',
+                    name: 'HomeMenu',
+                    component: () => import('../pages/HomeMenu')
+                },
+                {
+                    path: '/homeMenus',
+                    name: 'HomeMenus',
+                    component: () => import('../pages/HomeMenus')
+                },
+                {
+                    path: '/homeAd',
+                    name: 'HomeAd',
+                    component: () => import('../pages/HomeAd')
+                },
+                {
+                    path: '/homeAds',
+                    name: 'HomeAds',
+                    component: () => import('../pages/HomeAds')
+                },
+                {
+                    path: '/storeIntroduction',
+                    name: 'StoreIntroduction',
+                    component: () => import('../pages/StoreIntroduction')
+                },
+                {
+                    path: '/storeIntroductions',
+                    name: 'StoreIntroductions',
+                    component: () => import('../pages/StoreIntroductions')
+                },
+                {
+                    path: '/storeService',
+                    name: 'StoreService',
+                    component: () => import('../pages/StoreService')
+                },
+                {
+                    path: '/storeServices',
+                    name: 'StoreServices',
+                    component: () => import('../pages/StoreServices')
+                },
+                {
+                    path: '/storeServiceLevel',
+                    name: 'StoreServiceLevel',
+                    component: () => import('../pages/StoreServiceLevel')
+                },
+                {
+                    path: '/storeServiceLevels',
+                    name: 'StoreServiceLevels',
+                    component: () => import('../pages/StoreServiceLevels')
+                },
+                {
+                    path: '/storeCase',
+                    name: 'StoreCase',
+                    component: () => import('../pages/StoreCase')
+                },
+                {
+                    path: '/storeCases',
+                    name: 'StoreCases',
+                    component: () => import('../pages/StoreCases')
                 }
                 /**INSERT_LOCATION**/
         ]