suochencheng 6 ani în urmă
părinte
comite
2c7037e94c
100 a modificat fișierele cu 5389 adăugiri și 195 ștergeri
  1. 6 6
      src/main/java/com/izouma/awesomeadmin/constant/AppConstant.java
  2. 202 168
      src/main/java/com/izouma/awesomeadmin/dao/LandMarkVersionMapper.xml
  3. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/MarketCodeMapper.java
  4. 456 0
      src/main/java/com/izouma/awesomeadmin/dao/MarketCodeMapper.xml
  5. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/MarketTypeMapper.java
  6. 413 0
      src/main/java/com/izouma/awesomeadmin/dao/MarketTypeMapper.xml
  7. 33 0
      src/main/java/com/izouma/awesomeadmin/dao/UserCommentMapper.java
  8. 592 0
      src/main/java/com/izouma/awesomeadmin/dao/UserCommentMapper.xml
  9. 168 0
      src/main/java/com/izouma/awesomeadmin/model/MarketCode.java
  10. 141 0
      src/main/java/com/izouma/awesomeadmin/model/MarketType.java
  11. 204 0
      src/main/java/com/izouma/awesomeadmin/model/UserComment.java
  12. 27 0
      src/main/java/com/izouma/awesomeadmin/service/MarketCodeService.java
  13. 27 0
      src/main/java/com/izouma/awesomeadmin/service/MarketTypeService.java
  14. 27 0
      src/main/java/com/izouma/awesomeadmin/service/UserCommentService.java
  15. 137 0
      src/main/java/com/izouma/awesomeadmin/service/impl/MarketCodeServiceImpl.java
  16. 137 0
      src/main/java/com/izouma/awesomeadmin/service/impl/MarketTypeServiceImpl.java
  17. 137 0
      src/main/java/com/izouma/awesomeadmin/service/impl/UserCommentServiceImpl.java
  18. 32 5
      src/main/java/com/izouma/awesomeadmin/service/impl/UserOrderServiceImpl.java
  19. 184 0
      src/main/java/com/izouma/awesomeadmin/web/MarketCodeController.java
  20. 161 0
      src/main/java/com/izouma/awesomeadmin/web/MarketTypeController.java
  21. 169 0
      src/main/java/com/izouma/awesomeadmin/web/UserCommentController.java
  22. 38 4
      src/main/java/com/izouma/weixin/util/WeixinUtil.java
  23. 20 9
      src/main/java/com/izouma/weixin/web/WeiXinController.java
  24. 151 0
      src/main/vue/src/pages/MarketCode.vue
  25. 471 0
      src/main/vue/src/pages/MarketCodes.vue
  26. 130 0
      src/main/vue/src/pages/MarketType.vue
  27. 473 0
      src/main/vue/src/pages/MarketTypes.vue
  28. 138 0
      src/main/vue/src/pages/UserComment.vue
  29. 616 0
      src/main/vue/src/pages/UserComments.vue
  30. 30 0
      src/main/vue/src/router/index.js
  31. 1 1
      src/main/webapp/WEB-INF/html/admin.html
  32. 1 1
      src/main/webapp/WEB-INF/html/loginAdmin.html
  33. 0 0
      src/main/webapp/static/js/100.64911added615225c722.js
  34. 0 0
      src/main/webapp/static/js/101.55c8639394acbca3f68f.js
  35. 0 0
      src/main/webapp/static/js/102.63f167c7c49a30f01316.js
  36. 0 0
      src/main/webapp/static/js/103.31b582a1731d57fdbce4.js
  37. 0 0
      src/main/webapp/static/js/104.531fa41ce5f0ad0c751f.js
  38. 0 0
      src/main/webapp/static/js/105.c7ddaba7b2e4a7abab03.js
  39. 0 0
      src/main/webapp/static/js/106.649a05c8d294078042eb.js
  40. 0 0
      src/main/webapp/static/js/107.7953978851cc3afcd25c.js
  41. 0 0
      src/main/webapp/static/js/108.fc27d69ac2993db5f233.js
  42. 0 0
      src/main/webapp/static/js/109.43ca5e671cd30e78dd2c.js
  43. 1 1
      src/main/webapp/static/js/110.a3e8f62bf4a833735f91.js
  44. 0 0
      src/main/webapp/static/js/111.cf285bf1f4ff52b1b9f4.js
  45. 0 0
      src/main/webapp/static/js/112.612048cd8a4c080ead16.js
  46. 0 0
      src/main/webapp/static/js/32.97e523460970a5ef486d.js
  47. 0 0
      src/main/webapp/static/js/33.c0749bbc10fe97ae7dee.js
  48. 0 0
      src/main/webapp/static/js/34.db15fdacb14bb2d772fd.js
  49. 0 0
      src/main/webapp/static/js/35.e9a359dbff343e577be2.js
  50. 0 0
      src/main/webapp/static/js/36.a7db0e5a8590caf54532.js
  51. 0 0
      src/main/webapp/static/js/37.f390c28fe31d2f80b4fc.js
  52. 0 0
      src/main/webapp/static/js/38.8a13aeb0af7b2dbfe2c6.js
  53. 0 0
      src/main/webapp/static/js/39.de9bb8fe1b2ba2a8d8fa.js
  54. 0 0
      src/main/webapp/static/js/40.a6bcb0f50bafc8861628.js
  55. 0 0
      src/main/webapp/static/js/41.11e8ddd97e5a68a00f25.js
  56. 0 0
      src/main/webapp/static/js/42.2eb64def99bec4fe7e19.js
  57. 0 0
      src/main/webapp/static/js/43.13652a0a0738faaac52c.js
  58. 0 0
      src/main/webapp/static/js/44.350607e4f2160a9ba99b.js
  59. 0 0
      src/main/webapp/static/js/45.37dffe12d128668e7fcc.js
  60. 0 0
      src/main/webapp/static/js/46.b26c616f3d5f7b71fc35.js
  61. 0 0
      src/main/webapp/static/js/47.383edd76f598a2f06d60.js
  62. 0 0
      src/main/webapp/static/js/48.99ff6cfc6e2022a3b835.js
  63. 0 0
      src/main/webapp/static/js/49.da7f5abd6857072df56c.js
  64. 0 0
      src/main/webapp/static/js/50.9a437f4ac706dec55f85.js
  65. 0 0
      src/main/webapp/static/js/51.6f1538118182f45526a5.js
  66. 0 0
      src/main/webapp/static/js/52.7723a40ad7777d6562e3.js
  67. 0 0
      src/main/webapp/static/js/53.67372b767496f4030acf.js
  68. 0 0
      src/main/webapp/static/js/54.5b7868e58a78361d842e.js
  69. 0 0
      src/main/webapp/static/js/55.633090a66d037d0be1f3.js
  70. 0 0
      src/main/webapp/static/js/56.1cdccb668ab5451428e2.js
  71. 0 0
      src/main/webapp/static/js/57.15da053143e2621c0f96.js
  72. 0 0
      src/main/webapp/static/js/58.688ad395d5669fae1e51.js
  73. 0 0
      src/main/webapp/static/js/59.e5c0e524d406a84fdab3.js
  74. 0 0
      src/main/webapp/static/js/60.b2659ae1208e4f7d9c95.js
  75. 0 0
      src/main/webapp/static/js/61.bcc511777c30eba85035.js
  76. 0 0
      src/main/webapp/static/js/62.ba126825731bc81c2c7d.js
  77. 0 0
      src/main/webapp/static/js/63.47b488fc7c1758243bdb.js
  78. 0 0
      src/main/webapp/static/js/64.fa7c0ff112d92c34e4ad.js
  79. 0 0
      src/main/webapp/static/js/65.36795bc8a4382bc3fd85.js
  80. 0 0
      src/main/webapp/static/js/66.66fad3cfc1b6079e6cb9.js
  81. 0 0
      src/main/webapp/static/js/67.c23d5eda88502d704189.js
  82. 0 0
      src/main/webapp/static/js/68.82af26652ff5bcbb1a9a.js
  83. 0 0
      src/main/webapp/static/js/69.6f9e81a0e0c7def61a85.js
  84. 0 0
      src/main/webapp/static/js/70.052bcd122066f4f6e0f2.js
  85. 0 0
      src/main/webapp/static/js/71.fe994f9bb3b397715506.js
  86. 0 0
      src/main/webapp/static/js/72.03165cf113972c03fdd1.js
  87. 0 0
      src/main/webapp/static/js/73.7cf1234804145905ccb0.js
  88. 0 0
      src/main/webapp/static/js/74.ab8e81cab6460a4a2fde.js
  89. 0 0
      src/main/webapp/static/js/75.fb7300f18d89824b3c26.js
  90. 0 0
      src/main/webapp/static/js/76.4f6a83adb5d98af46ada.js
  91. 0 0
      src/main/webapp/static/js/77.0e90b135706e2c70eb74.js
  92. 0 0
      src/main/webapp/static/js/78.a702f6041a5604aa5856.js
  93. 0 0
      src/main/webapp/static/js/79.85bc6df510e21b0dd7be.js
  94. 0 0
      src/main/webapp/static/js/80.b9db7cc974e107ed298f.js
  95. 0 0
      src/main/webapp/static/js/81.e34114483b714e4b7e3f.js
  96. 0 0
      src/main/webapp/static/js/82.b1b5540fb7f9f7f929cf.js
  97. 0 0
      src/main/webapp/static/js/83.4163f0dac71b02e0c04a.js
  98. 0 0
      src/main/webapp/static/js/84.c318587aaa7629fb1a8c.js
  99. 0 0
      src/main/webapp/static/js/85.d18ac781db4478129812.js
  100. 0 0
      src/main/webapp/static/js/86.a612c05a1eed196efc04.js

+ 6 - 6
src/main/java/com/izouma/awesomeadmin/constant/AppConstant.java

@@ -279,18 +279,18 @@ public interface AppConstant {
     }
 
     /**
-     * 商品类型
+     * 推广码类型
      */
-    public interface ProductType {
+    public interface MarketType {
 
         /**
-         * 修图
+         * 减免
          */
-        String IMAGE = "0";
+        Integer REDUCTION = 1;
 
         /**
-         * 实体商品
+         * 折扣
          */
-        String PHYSICAL = "1";
+        Integer DISCOUNT = 2;
     }
 }

+ 202 - 168
src/main/java/com/izouma/awesomeadmin/dao/LandMarkVersionMapper.xml

@@ -1,20 +1,20 @@
 <?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.LandMarkVersionMapper" >
-    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.LandMarkVersion" >
-                <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="land_mark_id" property="landMarkId" jdbcType="INTEGER" />
-                                <result column="version" property="version" jdbcType="INTEGER" />
-                                <result column="json_text" property="jsonText" jdbcType="VARCHAR" />
-                                <result column="remark" property="remark" jdbcType="VARCHAR" />
-            </resultMap>
-    <sql id="Base_Column_List" >
-        <trim  suffixOverrides="," >
+<mapper namespace="com.izouma.awesomeadmin.dao.LandMarkVersionMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.LandMarkVersion">
+        <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="land_mark_id" property="landMarkId" jdbcType="INTEGER"/>
+        <result column="version" property="version" jdbcType="INTEGER"/>
+        <result column="json_text" property="jsonText" jdbcType="VARCHAR"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <trim suffixOverrides=",">
             id,
 
             del_flag,
@@ -35,119 +35,142 @@
 
             remark,
 
-            </trim>
+        </trim>
     </sql>
-    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    <sql id="WITHOUT_JSON_Column_List">
+        <trim suffixOverrides=",">
+            id,
+
+            del_flag,
+
+            update_time,
+
+            update_user,
+
+            create_time,
+
+            create_user,
+
+            land_mark_id,
+
+            version,
+
+            remark,
+
+        </trim>
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
         select
-        <include refid="Base_Column_List" />
+        <include refid="Base_Column_List"/>
         from land_mark_version
         where id = #{id,jdbcType=INTEGER}
     </select>
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
         delete from land_mark_version
         where id = #{id,jdbcType=INTEGER}
     </delete>
-    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.LandMarkVersion" useGeneratedKeys="true" keyProperty="id">
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.LandMarkVersion" useGeneratedKeys="true"
+            keyProperty="id">
         insert into land_mark_version
-        <trim prefix="(" suffix=")" suffixOverrides="," >
-                <if test="id!= null" >
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <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="landMarkId!= null" >
+            <if test="landMarkId!= null">
                 land_mark_id,
             </if>
-                <if test="version!= null" >
+            <if test="version!= null">
                 version,
             </if>
-                <if test="jsonText!= null" >
+            <if test="jsonText!= null">
                 json_text,
             </if>
-                <if test="remark!= null" >
+            <if test="remark!= null">
                 remark,
             </if>
-            </trim>
-        <trim prefix="values (" suffix=")" suffixOverrides="," >
-                    <if test="id != null" >
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <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="landMarkId != null" >
+            <if test="landMarkId != null">
                 #{landMarkId,jdbcType=INTEGER},
             </if>
-                    <if test="version != null" >
+            <if test="version != null">
                 #{version,jdbcType=INTEGER},
             </if>
-                    <if test="jsonText != null" >
+            <if test="jsonText != null">
                 #{jsonText,jdbcType=VARCHAR},
             </if>
-                    <if test="remark != null" >
+            <if test="remark != null">
                 #{remark,jdbcType=VARCHAR},
             </if>
-                </trim>
+        </trim>
     </insert>
-    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.LandMarkVersion" >
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.LandMarkVersion">
         update land_mark_version
-        <set >
-                    <if test="id != null" >
-               id= #{id,jdbcType=INTEGER},
+        <set>
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
             </if>
-                     <if test="delFlag != null" >
-               del_flag= #{delFlag,jdbcType=CHAR},
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
             </if>
-                     <if test="updateTime != null" >
-               update_time= #{updateTime,jdbcType=TIMESTAMP},
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
             </if>
-                     <if test="updateUser != null" >
-               update_user= #{updateUser,jdbcType=VARCHAR},
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
             </if>
-                     <if test="createTime != null" >
-               create_time= #{createTime,jdbcType=TIMESTAMP},
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
             </if>
-                     <if test="createUser != null" >
-               create_user= #{createUser,jdbcType=VARCHAR},
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
             </if>
-                     <if test="landMarkId != null" >
-               land_mark_id= #{landMarkId,jdbcType=INTEGER},
+            <if test="landMarkId != null">
+                land_mark_id= #{landMarkId,jdbcType=INTEGER},
             </if>
-                     <if test="version != null" >
-               version= #{version,jdbcType=INTEGER},
+            <if test="version != null">
+                version= #{version,jdbcType=INTEGER},
             </if>
-                     <if test="jsonText != null" >
-               json_text= #{jsonText,jdbcType=VARCHAR},
+            <if test="jsonText != null">
+                json_text= #{jsonText,jdbcType=VARCHAR},
             </if>
-                     <if test="remark != null" >
-               remark= #{remark,jdbcType=VARCHAR},
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
             </if>
-                 </set>
+        </set>
         where
         <if test="id != null and !&quot;&quot;.equals(id)">
             id = #{id,jdbcType=INTEGER}
@@ -158,51 +181,54 @@
         </if>
 
     </update>
-    <select id="queryLandMarkVersionByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.LandMarkVersion">
-        select <include refid="Base_Column_List"/> from land_mark_version
+    <select id="queryLandMarkVersionByPage" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.LandMarkVersion">
+        select
+        <include refid="WITHOUT_JSON_Column_List"/>
+        from land_mark_version
         <where>
             and del_flag = 'N'
             <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
                 and id in (${record.idStr})
             </if>
-                    <if test="record.id != null and !&quot;&quot;.equals(record.id)">
-                and  id = #{record.id}
+            <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 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 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 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 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 test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                and create_user = #{record.createUser}
             </if>
-                     <if test="record.landMarkId != null and !&quot;&quot;.equals(record.landMarkId)">
-                and  land_mark_id = #{record.landMarkId}
+            <if test="record.landMarkId != null and !&quot;&quot;.equals(record.landMarkId)">
+                and land_mark_id = #{record.landMarkId}
             </if>
-                     <if test="record.version != null and !&quot;&quot;.equals(record.version)">
-                and  version = #{record.version}
+            <if test="record.version != null and !&quot;&quot;.equals(record.version)">
+                and version = #{record.version}
             </if>
-                     <if test="record.jsonText != null and !&quot;&quot;.equals(record.jsonText)">
-                and  json_text = #{record.jsonText}
+            <if test="record.jsonText != null and !&quot;&quot;.equals(record.jsonText)">
+                and json_text = #{record.jsonText}
             </if>
-                     <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
-                and  remark = #{record.remark}
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and remark = #{record.remark}
+            </if>
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR land_mark_id LIKE concat('%',#{record.searchKey},'%')
+                    OR version LIKE concat('%',#{record.searchKey},'%')
+                    OR json_text LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                </trim>
             </if>
-                  <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
-             <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                                                                                                                                                                                                                                                                                    OR  land_mark_id LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  version LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  json_text LIKE concat('%',#{record.searchKey},'%')
-                                                                                                    OR  remark 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('_;')">
@@ -256,85 +282,88 @@
         </if>
         id desc
     </select>
-    <select id="queryAllLandMarkVersion" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.LandMarkVersion">
-        select <include refid="Base_Column_List"/> from land_mark_version
+    <select id="queryAllLandMarkVersion" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.LandMarkVersion">
+        select
+        <include refid="WITHOUT_JSON_Column_List"/>
+        from land_mark_version
         <where>
             and del_flag = 'N'
             <if test="idStr != null and !&quot;&quot;.equals(idStr)">
                 and id in (${idStr})
             </if>
-                    <if test="id != null and !&quot;&quot;.equals(id)">
-                and  id = #{id}
+            <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 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 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 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 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 test="createUser != null and !&quot;&quot;.equals(createUser)">
+                and create_user = #{createUser}
             </if>
-                    <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
-                and  land_mark_id = #{landMarkId}
+            <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
+                and land_mark_id = #{landMarkId}
             </if>
-                    <if test="version != null and !&quot;&quot;.equals(version)">
-                and  version = #{version}
+            <if test="version != null and !&quot;&quot;.equals(version)">
+                and version = #{version}
             </if>
-                    <if test="jsonText != null and !&quot;&quot;.equals(jsonText)">
-                and  json_text = #{jsonText}
+            <if test="jsonText != null and !&quot;&quot;.equals(jsonText)">
+                and json_text = #{jsonText}
             </if>
-                    <if test="remark != null and !&quot;&quot;.equals(remark)">
-                and  remark = #{remark}
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
             </if>
-                    <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
-                <trim prefix="and (" suffix=")" prefixOverrides="OR" >
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                OR  land_mark_id LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  version LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  json_text LIKE concat('%',#{searchKey},'%')
-                                                                                                                                                        OR  remark LIKE concat('%',#{searchKey},'%')
-                                                                                        </trim>
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR land_mark_id LIKE concat('%',#{searchKey},'%')
+                    OR version LIKE concat('%',#{searchKey},'%')
+                    OR json_text LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                </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="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>
+                                <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>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
 
-                </foreach>
-            </otherwise>
-        </choose>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+
+                            </foreach>
+                        </otherwise>
+                    </choose>
 
 
-    </foreach>
+                </foreach>
 
 
-</if>
+            </if>
         </where>
         order by
 
@@ -353,41 +382,44 @@
 
         id desc
     </select>
-    <select id="queryLandMarkVersion" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.LandMarkVersion">
-        select <include refid="Base_Column_List"/> from land_mark_version
+    <select id="queryLandMarkVersion" parameterType="java.util.Map"
+            resultType="com.izouma.awesomeadmin.model.LandMarkVersion">
+        select
+        <include refid="Base_Column_List"/>
+        from land_mark_version
         <where>
             and del_flag = 'N'
-                    <if test="id != null and !&quot;&quot;.equals(id)">
+            <if test="id != null and !&quot;&quot;.equals(id)">
                 and id = #{id}
             </if>
-                     <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
                 and del_flag = #{delFlag}
             </if>
-                     <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
                 and update_time = #{updateTime}
             </if>
-                     <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
                 and update_user = #{updateUser}
             </if>
-                     <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
                 and create_time = #{createTime}
             </if>
-                     <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
                 and create_user = #{createUser}
             </if>
-                     <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
+            <if test="landMarkId != null and !&quot;&quot;.equals(landMarkId)">
                 and land_mark_id = #{landMarkId}
             </if>
-                     <if test="version != null and !&quot;&quot;.equals(version)">
+            <if test="version != null and !&quot;&quot;.equals(version)">
                 and version = #{version}
             </if>
-                     <if test="jsonText != null and !&quot;&quot;.equals(jsonText)">
+            <if test="jsonText != null and !&quot;&quot;.equals(jsonText)">
                 and json_text = #{jsonText}
             </if>
-                     <if test="remark != null and !&quot;&quot;.equals(remark)">
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
                 and remark = #{remark}
             </if>
-         
+
         </where>
         LIMIT 1
     </select>
@@ -403,10 +435,12 @@
         </if>
     </update>
     <select id="query" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.LandMarkVersion">
-        select <include refid="Base_Column_List"/> from land_mark_version
+        select
+        <include refid="Base_Column_List"/>
+        from land_mark_version
         <where>
             and del_flag = 'N'
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </where>
+        </where>
         order by id desc
     </select>
 </mapper>

+ 33 - 0
src/main/java/com/izouma/awesomeadmin/dao/MarketCodeMapper.java

@@ -0,0 +1,33 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.MarketCode;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.MarketCodeMapper")
+public interface MarketCodeMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(MarketCode record);
+
+    MarketCode selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(MarketCode record);
+
+    List<MarketCode> queryAllMarketCode(MarketCode record);
+
+    List<MarketCode> queryMarketCodeByPage(Map<String, Object> parameter);
+
+    int delete(MarketCode record);
+
+    MarketCode queryMarketCode(MarketCode record);
+
+    List<MarketCode> query(MarketCode record);
+}
+

+ 456 - 0
src/main/java/com/izouma/awesomeadmin/dao/MarketCodeMapper.xml

@@ -0,0 +1,456 @@
+<?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.MarketCodeMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.MarketCode">
+        <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="market" property="market" jdbcType="VARCHAR"/>
+        <result column="code" property="code" jdbcType="VARCHAR"/>
+        <result column="type_id" property="typeId" jdbcType="INTEGER"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="use_flag" property="useFlag" jdbcType="CHAR"/>
+    </resultMap>
+    <sql id="Base_Column_List">
+        <trim suffixOverrides=",">
+            id,
+
+            del_flag,
+
+            update_time,
+
+            update_user,
+
+            create_time,
+
+            create_user,
+
+            market,
+
+            code,
+
+            type_id,
+
+            remark,
+
+            use_flag,
+
+        </trim>
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        select
+        <include refid="Base_Column_List"/>
+        from market_code
+        where id = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        delete from market_code
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.MarketCode" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into market_code
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <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="market!= null">
+                market,
+            </if>
+            <if test="code!= null">
+                code,
+            </if>
+            <if test="typeId!= null">
+                type_id,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <if test="useFlag!= null">
+                use_flag,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <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="market != null">
+                #{market,jdbcType=VARCHAR},
+            </if>
+            <if test="code != null">
+                #{code,jdbcType=VARCHAR},
+            </if>
+            <if test="typeId != null">
+                #{typeId,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="useFlag != null">
+                #{useFlag,jdbcType=CHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.MarketCode">
+        update market_code
+        <set>
+            <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="market != null">
+                market= #{market,jdbcType=VARCHAR},
+            </if>
+            <if test="code != null">
+                code= #{code,jdbcType=VARCHAR},
+            </if>
+            <if test="typeId != null">
+                type_id= #{typeId,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="useFlag != null">
+                use_flag= #{useFlag,jdbcType=CHAR},
+            </if>
+        </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="queryMarketCodeByPage" parameterType="java.util.Map"
+            resultMap="MarketCodeResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from market_code
+        <where>
+            and del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                and id in (${record.idStr})
+            </if>
+            <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.market != null and !&quot;&quot;.equals(record.market)">
+                and market = #{record.market}
+            </if>
+            <if test="record.code != null and !&quot;&quot;.equals(record.code)">
+                and code = #{record.code}
+            </if>
+            <if test="record.typeId != null and !&quot;&quot;.equals(record.typeId)">
+                and type_id = #{record.typeId}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and remark = #{record.remark}
+            </if>
+            <if test="record.useFlag != null and !&quot;&quot;.equals(record.useFlag)">
+                and use_flag = #{record.useFlag}
+            </if>
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR market LIKE concat('%',#{record.searchKey},'%')
+                    OR code LIKE concat('%',#{record.searchKey},'%')
+                    OR type_id LIKE concat('%',#{record.searchKey},'%')
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    OR use_flag 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('_;')">
+                    <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="queryAllMarketCode" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MarketCode">
+        select
+        <include refid="Base_Column_List"/>
+        from market_code
+        <where>
+            and del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                and id in (${idStr})
+            </if>
+            <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="market != null and !&quot;&quot;.equals(market)">
+                and market = #{market}
+            </if>
+            <if test="code != null and !&quot;&quot;.equals(code)">
+                and code = #{code}
+            </if>
+            <if test="typeId != null and !&quot;&quot;.equals(typeId)">
+                and type_id = #{typeId}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+            <if test="useFlag != null and !&quot;&quot;.equals(useFlag)">
+                and use_flag = #{useFlag}
+            </if>
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    OR market LIKE concat('%',#{searchKey},'%')
+                    OR code LIKE concat('%',#{searchKey},'%')
+                    OR type_id LIKE concat('%',#{searchKey},'%')
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    OR use_flag LIKE concat('%',#{searchKey},'%')
+                </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="queryMarketCode" parameterType="java.util.Map" resultMap="MarketCodeResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from market_code
+        <where>
+            and del_flag = 'N'
+            <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="market != null and !&quot;&quot;.equals(market)">
+                and market = #{market}
+            </if>
+            <if test="code != null and !&quot;&quot;.equals(code)">
+                and code = #{code}
+            </if>
+            <if test="typeId != null and !&quot;&quot;.equals(typeId)">
+                and type_id = #{typeId}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+            <if test="useFlag != null and !&quot;&quot;.equals(useFlag)">
+                and use_flag = #{useFlag}
+            </if>
+
+        </where>
+        LIMIT 1
+    </select>
+    <update id="delete">
+        UPDATE market_code 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.MarketCode">
+        select
+        <include refid="Base_Column_List"/>
+        from market_code
+        <where>
+            and del_flag = 'N'
+        </where>
+        order by id desc
+    </select>
+
+    <resultMap id="MarketCodeResultMap" type="com.izouma.awesomeadmin.model.MarketCode" extends="BaseResultMap">
+
+
+        <association property="marketType" javaType="com.izouma.awesomeadmin.model.MarketType"
+                     select="com.izouma.awesomeadmin.dao.MarketTypeMapper.queryMarketType"
+                     column="{id = type_id}">
+        </association>
+    </resultMap>
+
+</mapper>
+

+ 33 - 0
src/main/java/com/izouma/awesomeadmin/dao/MarketTypeMapper.java

@@ -0,0 +1,33 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.MarketType;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.MarketTypeMapper")
+public interface MarketTypeMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(MarketType record);
+
+    MarketType selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(MarketType record);
+
+    List<MarketType> queryAllMarketType(MarketType record);
+
+    List<MarketType> queryMarketTypeByPage(Map<String, Object> parameter);
+
+    int delete(MarketType record);
+
+    MarketType queryMarketType(MarketType record);
+
+    List<MarketType> query(MarketType record);
+}
+

+ 413 - 0
src/main/java/com/izouma/awesomeadmin/dao/MarketTypeMapper.xml

@@ -0,0 +1,413 @@
+<?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.MarketTypeMapper" >
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.MarketType" >
+                <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_name" property="typeName" jdbcType="VARCHAR" />
+                                <result column="type_flag" property="typeFlag" jdbcType="INTEGER" />
+                                <result column="money" property="money" jdbcType="DECIMAL" />
+                                <result column="remark" property="remark" jdbcType="VARCHAR" />
+            </resultMap>
+    <sql id="Base_Column_List" >
+        <trim  suffixOverrides="," >
+            id,
+
+            del_flag,
+
+            update_time,
+
+            update_user,
+
+            create_time,
+
+            create_user,
+
+            type_name,
+
+            type_flag,
+
+            money,
+
+            remark,
+
+            </trim>
+    </sql>
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+        select
+        <include refid="Base_Column_List" />
+        from market_type
+        where id = #{id,jdbcType=INTEGER}
+    </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+        delete from market_type
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.MarketType" useGeneratedKeys="true" keyProperty="id">
+        insert into market_type
+        <trim prefix="(" suffix=")" suffixOverrides="," >
+                <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="typeName!= null" >
+                type_name,
+            </if>
+                <if test="typeFlag!= null" >
+                type_flag,
+            </if>
+                <if test="money!= null" >
+                money,
+            </if>
+                <if test="remark!= null" >
+                remark,
+            </if>
+            </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides="," >
+                    <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="typeName != null" >
+                #{typeName,jdbcType=VARCHAR},
+            </if>
+                    <if test="typeFlag != null" >
+                #{typeFlag,jdbcType=INTEGER},
+            </if>
+                    <if test="money != null" >
+                #{money,jdbcType=DECIMAL},
+            </if>
+                    <if test="remark != null" >
+                #{remark,jdbcType=VARCHAR},
+            </if>
+                </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.MarketType" >
+        update market_type
+        <set >
+                    <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="typeName != null" >
+               type_name= #{typeName,jdbcType=VARCHAR},
+            </if>
+                     <if test="typeFlag != null" >
+               type_flag= #{typeFlag,jdbcType=INTEGER},
+            </if>
+                     <if test="money != null" >
+               money= #{money,jdbcType=DECIMAL},
+            </if>
+                     <if test="remark != null" >
+               remark= #{remark,jdbcType=VARCHAR},
+            </if>
+                 </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="queryMarketTypeByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MarketType">
+        select <include refid="Base_Column_List"/> from market_type
+        <where>
+            and del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                and id in (${record.idStr})
+            </if>
+                    <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.typeName != null and !&quot;&quot;.equals(record.typeName)">
+                and  type_name = #{record.typeName}
+            </if>
+                     <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                and  type_flag = #{record.typeFlag}
+            </if>
+                     <if test="record.money != null and !&quot;&quot;.equals(record.money)">
+                and  money = #{record.money}
+            </if>
+                     <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                and  remark = #{record.remark}
+            </if>
+                  <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+             <trim prefix="and (" suffix=")" prefixOverrides="OR" >
+                                                                                                                                                                                                                                                                                                                                                                                                                                    OR  type_name LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  type_flag LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  money LIKE concat('%',#{record.searchKey},'%')
+                                                                                                    OR  remark 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('_;')">
+                    <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="queryAllMarketType" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MarketType">
+        select <include refid="Base_Column_List"/> from market_type
+        <where>
+            and del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                and id in (${idStr})
+            </if>
+                    <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="typeName != null and !&quot;&quot;.equals(typeName)">
+                and  type_name = #{typeName}
+            </if>
+                    <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                and  type_flag = #{typeFlag}
+            </if>
+                    <if test="money != null and !&quot;&quot;.equals(money)">
+                and  money = #{money}
+            </if>
+                    <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and  remark = #{remark}
+            </if>
+                    <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR" >
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                OR  type_name LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  type_flag LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  money LIKE concat('%',#{searchKey},'%')
+                                                                                                                                                        OR  remark LIKE concat('%',#{searchKey},'%')
+                                                                                        </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="queryMarketType" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MarketType">
+        select <include refid="Base_Column_List"/> from market_type
+        <where>
+            and del_flag = 'N'
+                    <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="typeName != null and !&quot;&quot;.equals(typeName)">
+                and type_name = #{typeName}
+            </if>
+                     <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                and type_flag = #{typeFlag}
+            </if>
+                     <if test="money != null and !&quot;&quot;.equals(money)">
+                and money = #{money}
+            </if>
+                     <if test="remark != null and !&quot;&quot;.equals(remark)">
+                and remark = #{remark}
+            </if>
+         
+        </where>
+        LIMIT 1
+    </select>
+    <update id="delete">
+        UPDATE market_type 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.MarketType">
+        select <include refid="Base_Column_List"/> from market_type
+        <where>
+            and del_flag = 'N'
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </where>
+        order by id desc
+    </select>
+</mapper>
+

+ 33 - 0
src/main/java/com/izouma/awesomeadmin/dao/UserCommentMapper.java

@@ -0,0 +1,33 @@
+package com.izouma.awesomeadmin.dao;
+
+import java.util.*;
+import com.izouma.awesomeadmin.datasource.DataSource;
+import org.springframework.stereotype.Repository;
+import com.izouma.awesomeadmin.model.UserComment;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.UserCommentMapper")
+public interface UserCommentMapper{
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(UserComment record);
+
+    UserComment selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(UserComment record);
+
+    List<UserComment> queryAllUserComment(UserComment record);
+
+    List<UserComment> queryUserCommentByPage(Map<String, Object> parameter);
+
+    int delete(UserComment record);
+
+    UserComment queryUserComment(UserComment record);
+
+    List<UserComment> query(UserComment record);
+}
+

Fișier diff suprimat deoarece este prea mare
+ 592 - 0
src/main/java/com/izouma/awesomeadmin/dao/UserCommentMapper.xml


+ 168 - 0
src/main/java/com/izouma/awesomeadmin/model/MarketCode.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 MarketCode {
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String market;
+    private String code;
+    private Integer typeId;
+    private String remark;
+    private String useFlag;
+
+    private MarketType marketType;
+
+    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;
+
+    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 getMarket() {
+        return this.market;
+    }
+
+    public void setMarket(String market) {
+        this.market = market;
+    }
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Integer getTypeId() {
+        return this.typeId;
+    }
+
+    public void setTypeId(Integer typeId) {
+        this.typeId = typeId;
+    }
+
+    public String getRemark() {
+        return this.remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getUseFlag() {
+        return this.useFlag;
+    }
+
+    public void setUseFlag(String useFlag) {
+        this.useFlag = useFlag;
+    }
+
+    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;
+    }
+
+    public MarketType getMarketType() {
+        return marketType;
+    }
+
+    public void setMarketType(MarketType marketType) {
+        this.marketType = marketType;
+    }
+}
+

+ 141 - 0
src/main/java/com/izouma/awesomeadmin/model/MarketType.java

@@ -0,0 +1,141 @@
+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 MarketType{
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String typeName;
+    private Integer typeFlag;
+    private BigDecimal money;
+    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;
+
+    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 getTypeName(){
+        return this.typeName;
+    }
+
+    public void setTypeName(String typeName){
+        this.typeName = typeName;
+    }
+    public Integer getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public BigDecimal getMoney(){
+        return this.money;
+    }
+
+    public void setMoney(BigDecimal money) {
+        this.money = money;
+    }
+    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;
+}
+
+}
+

+ 204 - 0
src/main/java/com/izouma/awesomeadmin/model/UserComment.java

@@ -0,0 +1,204 @@
+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 UserComment{
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private String userId;
+    private String landmarkId;
+    private String startPlace;
+    private String endPlace;
+    private String commentText;
+    private String typeFlag;
+    private String starLevel;
+    private String remark;
+    private String remark1;
+    private String remark2;
+    private String remark3;
+    private String remark4;
+
+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;
+
+    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 getLandmarkId(){
+        return this.landmarkId;
+    }
+
+    public void setLandmarkId(String landmarkId){
+        this.landmarkId = landmarkId;
+    }
+    public String getStartPlace(){
+        return this.startPlace;
+    }
+
+    public void setStartPlace(String startPlace){
+        this.startPlace = startPlace;
+    }
+    public String getEndPlace(){
+        return this.endPlace;
+    }
+
+    public void setEndPlace(String endPlace){
+        this.endPlace = endPlace;
+    }
+    public String getCommentText(){
+        return this.commentText;
+    }
+
+    public void setCommentText(String commentText){
+        this.commentText = commentText;
+    }
+    public String getTypeFlag(){
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(String typeFlag){
+        this.typeFlag = typeFlag;
+    }
+    public String getStarLevel(){
+        return this.starLevel;
+    }
+
+    public void setStarLevel(String starLevel){
+        this.starLevel = starLevel;
+    }
+    public String getRemark(){
+        return this.remark;
+    }
+
+    public void setRemark(String remark){
+        this.remark = remark;
+    }
+    public String getRemark1(){
+        return this.remark1;
+    }
+
+    public void setRemark1(String remark1){
+        this.remark1 = remark1;
+    }
+    public String getRemark2(){
+        return this.remark2;
+    }
+
+    public void setRemark2(String remark2){
+        this.remark2 = remark2;
+    }
+    public String getRemark3(){
+        return this.remark3;
+    }
+
+    public void setRemark3(String remark3){
+        this.remark3 = remark3;
+    }
+    public String getRemark4(){
+        return this.remark4;
+    }
+
+    public void setRemark4(String remark4){
+        this.remark4 = remark4;
+    }
+
+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;
+}
+
+}
+

+ 27 - 0
src/main/java/com/izouma/awesomeadmin/service/MarketCodeService.java

@@ -0,0 +1,27 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.MarketCode;
+
+
+/**
+*  service接口类
+*/
+public interface MarketCodeService{
+
+    List<MarketCode> getMarketCodeList(MarketCode record);
+
+    List<MarketCode> getMarketCodeByPage(Page page, MarketCode record);
+
+    MarketCode getMarketCodeById(String id);
+
+    MarketCode getMarketCode(MarketCode record);
+
+    boolean createMarketCode(MarketCode record);
+
+    boolean deleteMarketCode(MarketCode record);
+
+    boolean updateMarketCode(MarketCode record);
+}
+

+ 27 - 0
src/main/java/com/izouma/awesomeadmin/service/MarketTypeService.java

@@ -0,0 +1,27 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.MarketType;
+
+
+/**
+*  service接口类
+*/
+public interface MarketTypeService{
+
+    List<MarketType> getMarketTypeList(MarketType record);
+
+    List<MarketType> getMarketTypeByPage(Page page, MarketType record);
+
+    MarketType getMarketTypeById(String id);
+
+    MarketType getMarketType(MarketType record);
+
+    boolean createMarketType(MarketType record);
+
+    boolean deleteMarketType(MarketType record);
+
+    boolean updateMarketType(MarketType record);
+}
+

+ 27 - 0
src/main/java/com/izouma/awesomeadmin/service/UserCommentService.java

@@ -0,0 +1,27 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.UserComment;
+
+
+/**
+*  service接口类
+*/
+public interface UserCommentService{
+
+    List<UserComment> getUserCommentList(UserComment record);
+
+    List<UserComment> getUserCommentByPage(Page page, UserComment record);
+
+    UserComment getUserCommentById(String id);
+
+    UserComment getUserComment(UserComment record);
+
+    boolean createUserComment(UserComment record);
+
+    boolean deleteUserComment(UserComment record);
+
+    boolean updateUserComment(UserComment record);
+}
+

+ 137 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/MarketCodeServiceImpl.java

@@ -0,0 +1,137 @@
+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.MarketCode;
+import com.izouma.awesomeadmin.service.MarketCodeService;
+import com.izouma.awesomeadmin.dao.MarketCodeMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class MarketCodeServiceImpl implements MarketCodeService{
+
+    private static Logger logger = Logger.getLogger(MarketCodeServiceImpl.class);
+
+    @Autowired
+    private MarketCodeMapper marketCodeMapper;
+
+    @Override
+    public List<MarketCode> getMarketCodeList(MarketCode record) {
+
+        logger.info("getMarketCodeList");
+        try {
+
+        return marketCodeMapper.queryAllMarketCode(record);
+        } catch (Exception e) {
+        logger.error("getMarketCodeList", e);
+        }
+
+        return null;
+    }
+    @Override
+    public List<MarketCode> getMarketCodeByPage(Page page, MarketCode record) {
+
+        logger.info("getMarketCodeByPage");
+        try {
+
+        Map<String, Object> parameter = new HashMap<String, Object>();
+        parameter.put("record", record);
+        parameter.put(AppConstant.PAGE, page);
+
+        return marketCodeMapper.queryMarketCodeByPage(parameter);
+        } catch (Exception e) {
+        logger.error("getMarketCodeByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MarketCode getMarketCodeById(String id) {
+
+        logger.info("getMarketCodeyId");
+        try {
+
+            return marketCodeMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+        logger.error("getMarketCodeById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MarketCode getMarketCode(MarketCode record) {
+
+        logger.info("getMarketCode");
+        try {
+
+            return marketCodeMapper.queryMarketCode(record);
+        } catch (Exception e) {
+        logger.error("getMarketCode", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createMarketCode(MarketCode record) {
+
+        logger.info("createMarketCode");
+        try {
+
+            int updates = marketCodeMapper.insertSelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createMarketCode", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean deleteMarketCode(MarketCode record) {
+
+        logger.info("deleteMarketCode");
+        try {
+
+             int updates = marketCodeMapper.delete(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteMarketCode", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateMarketCode(MarketCode record) {
+
+        logger.info("updateMarketCode");
+        try {
+
+            int updates = marketCodeMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateMarketCode", e);
+        }
+
+        return false;
+    }
+}
+

+ 137 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/MarketTypeServiceImpl.java

@@ -0,0 +1,137 @@
+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.MarketType;
+import com.izouma.awesomeadmin.service.MarketTypeService;
+import com.izouma.awesomeadmin.dao.MarketTypeMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class MarketTypeServiceImpl implements MarketTypeService{
+
+    private static Logger logger = Logger.getLogger(MarketTypeServiceImpl.class);
+
+    @Autowired
+    private MarketTypeMapper marketTypeMapper;
+
+    @Override
+    public List<MarketType> getMarketTypeList(MarketType record) {
+
+        logger.info("getMarketTypeList");
+        try {
+
+        return marketTypeMapper.queryAllMarketType(record);
+        } catch (Exception e) {
+        logger.error("getMarketTypeList", e);
+        }
+
+        return null;
+    }
+    @Override
+    public List<MarketType> getMarketTypeByPage(Page page, MarketType record) {
+
+        logger.info("getMarketTypeByPage");
+        try {
+
+        Map<String, Object> parameter = new HashMap<String, Object>();
+        parameter.put("record", record);
+        parameter.put(AppConstant.PAGE, page);
+
+        return marketTypeMapper.queryMarketTypeByPage(parameter);
+        } catch (Exception e) {
+        logger.error("getMarketTypeByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MarketType getMarketTypeById(String id) {
+
+        logger.info("getMarketTypeyId");
+        try {
+
+            return marketTypeMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+        logger.error("getMarketTypeById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public MarketType getMarketType(MarketType record) {
+
+        logger.info("getMarketType");
+        try {
+
+            return marketTypeMapper.queryMarketType(record);
+        } catch (Exception e) {
+        logger.error("getMarketType", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createMarketType(MarketType record) {
+
+        logger.info("createMarketType");
+        try {
+
+            int updates = marketTypeMapper.insertSelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createMarketType", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean deleteMarketType(MarketType record) {
+
+        logger.info("deleteMarketType");
+        try {
+
+             int updates = marketTypeMapper.delete(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteMarketType", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateMarketType(MarketType record) {
+
+        logger.info("updateMarketType");
+        try {
+
+            int updates = marketTypeMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateMarketType", e);
+        }
+
+        return false;
+    }
+}
+

+ 137 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/UserCommentServiceImpl.java

@@ -0,0 +1,137 @@
+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.UserComment;
+import com.izouma.awesomeadmin.service.UserCommentService;
+import com.izouma.awesomeadmin.dao.UserCommentMapper;
+
+/**
+*  service接口实现类
+*/
+@Service
+public class UserCommentServiceImpl implements UserCommentService{
+
+    private static Logger logger = Logger.getLogger(UserCommentServiceImpl.class);
+
+    @Autowired
+    private UserCommentMapper userCommentMapper;
+
+    @Override
+    public List<UserComment> getUserCommentList(UserComment record) {
+
+        logger.info("getUserCommentList");
+        try {
+
+        return userCommentMapper.queryAllUserComment(record);
+        } catch (Exception e) {
+        logger.error("getUserCommentList", e);
+        }
+
+        return null;
+    }
+    @Override
+    public List<UserComment> getUserCommentByPage(Page page, UserComment record) {
+
+        logger.info("getUserCommentByPage");
+        try {
+
+        Map<String, Object> parameter = new HashMap<String, Object>();
+        parameter.put("record", record);
+        parameter.put(AppConstant.PAGE, page);
+
+        return userCommentMapper.queryUserCommentByPage(parameter);
+        } catch (Exception e) {
+        logger.error("getUserCommentByPage", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public UserComment getUserCommentById(String id) {
+
+        logger.info("getUserCommentyId");
+        try {
+
+            return userCommentMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+        logger.error("getUserCommentById", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public UserComment getUserComment(UserComment record) {
+
+        logger.info("getUserComment");
+        try {
+
+            return userCommentMapper.queryUserComment(record);
+        } catch (Exception e) {
+        logger.error("getUserComment", e);
+        }
+
+        return null;
+    }
+
+    @Override
+    public boolean createUserComment(UserComment record) {
+
+        logger.info("createUserComment");
+        try {
+
+            int updates = userCommentMapper.insertSelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+            logger.error("createUserComment", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean deleteUserComment(UserComment record) {
+
+        logger.info("deleteUserComment");
+        try {
+
+             int updates = userCommentMapper.delete(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("deleteUserComment", e);
+        }
+
+        return false;
+    }
+
+    @Override
+    public boolean updateUserComment(UserComment record) {
+
+        logger.info("updateUserComment");
+        try {
+
+            int updates = userCommentMapper.updateByPrimaryKeySelective(record);
+
+            if (updates > 0) {
+                 return true;
+            }
+        } catch (Exception e) {
+             logger.error("updateUserComment", e);
+        }
+
+        return false;
+    }
+}
+

+ 32 - 5
src/main/java/com/izouma/awesomeadmin/service/impl/UserOrderServiceImpl.java

@@ -6,16 +6,13 @@ import java.util.*;
 import com.izouma.awesomeadmin.dao.NavigationPackageMapper;
 import com.izouma.awesomeadmin.dto.Result;
 import com.izouma.awesomeadmin.model.*;
-import com.izouma.awesomeadmin.service.MemberCoinService;
-import com.izouma.awesomeadmin.service.MemberPointService;
-import com.izouma.awesomeadmin.service.UserInfoService;
-import com.izouma.awesomeadmin.util.MsgUtil;
+import com.izouma.awesomeadmin.service.*;
+import org.apache.commons.lang.StringUtils;
 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.service.UserOrderService;
 import com.izouma.awesomeadmin.dao.UserOrderMapper;
 
 /**
@@ -41,6 +38,9 @@ public class UserOrderServiceImpl implements UserOrderService {
     @Autowired
     private MemberCoinService memberCoinService;
 
+    @Autowired
+    private MarketCodeService marketCodeService;
+
     @Override
     public List<UserOrder> getUserOrderList(UserOrder record) {
 
@@ -120,6 +120,33 @@ public class UserOrderServiceImpl implements UserOrderService {
                 BigDecimal totlePrice = navigationPackage.getPrice();
                 record.setTotlePrice(totlePrice);
                 BigDecimal dealPrice = totlePrice;
+
+                //推广码进行折扣或减价
+                if (StringUtils.isNotEmpty(record.getMarketCode())) {
+                    MarketCode marketCode = new MarketCode();
+                    marketCode.setCode(record.getMarketCode());
+                    marketCode = marketCodeService.getMarketCode(marketCode);
+                    if (marketCode == null) {
+                        return new Result(false, "推广码不存在");
+                    }
+
+                    if (marketCode.getMarketType() == null) {
+                        return new Result(false, "推广码无效");
+                    }
+
+                    MarketType marketType = marketCode.getMarketType();
+
+                    if (AppConstant.MarketType.REDUCTION == marketType.getTypeFlag()) { //减免
+
+                        dealPrice = totlePrice.subtract(marketType.getMoney());
+
+                    } else if (AppConstant.MarketType.DISCOUNT == marketType.getTypeFlag()) {//折扣
+                        dealPrice = totlePrice.multiply(marketType.getMoney().divide(BigDecimal.valueOf(100)));
+                    }
+
+
+                }
+
                 record.setDealPrice(dealPrice);
 
 

+ 184 - 0
src/main/java/com/izouma/awesomeadmin/web/MarketCodeController.java

@@ -0,0 +1,184 @@
+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.MarketCode;
+import com.izouma.awesomeadmin.service.MarketCodeService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * controller类
+ */
+@Controller
+@RequestMapping("/marketCode")
+public class MarketCodeController {
+
+    @Autowired
+    private MarketCodeService marketCodeService;
+
+    /**
+     * <p>获取全部记录。</p>
+     */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(MarketCode record) {
+        List<MarketCode> pp = marketCodeService.getMarketCodeList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+     * <p>根据Id。</p>
+     */
+    @RequestMapping(value = "/getMarketCode", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getMarketCode(@RequestParam(required = false, value = "id") String id) {
+        MarketCode data = marketCodeService.getMarketCodeById(id);
+        return new Result(true, data);
+    }
+
+    /**
+     * <p>根据条件获取。</p>
+     */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(MarketCode record) {
+        MarketCode data = marketCodeService.getMarketCode(record);
+        return new Result(true, data);
+    }
+
+    /**
+     * 检测推广码是否存在
+     *
+     * @param record
+     * @return
+     */
+    @RequestMapping(value = "/check", method = RequestMethod.GET)
+    @ResponseBody
+    public Result check(MarketCode record) {
+        if (StringUtils.isNotEmpty(record.getCode())) {
+
+            MarketCode data = marketCodeService.getMarketCode(record);
+            if (data != null) {
+
+                return new Result(true, data);
+            }
+            return new Result(false, "推广码不存在");
+        }
+        return new Result(false, "推广码不能为空");
+    }
+
+
+    /**
+     * <p>分页查询。</p>
+     */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, MarketCode record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<MarketCode> pp = marketCodeService.getMarketCodeByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+
+    /**
+     * <p>保存。</p>
+     */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(MarketCode record) {
+        boolean num = marketCodeService.createMarketCode(record);
+        if (num) {
+            return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * <p>更新信息。</p>
+     */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateMarketCode(MarketCode record) {
+        boolean num = marketCodeService.updateMarketCode(record);
+        if (num) {
+            return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+     * <p>删除。</p>
+     */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteMarketCode(MarketCode record) {
+
+        boolean num = marketCodeService.deleteMarketCode(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, MarketCode record) throws Exception {
+
+        List<MarketCode> marketCodes = marketCodeService.getMarketCodeList(record);
+
+
+        String sheetName = "market_code";
+        String titleName = "推广码数据表";
+        String fileName = "推广码表";
+        int columnNumber = 11;
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "推广人", "推广CODE", "类型", "备注", "可以"};
+        String[][] dataList = new String[marketCodes.size()][11];
+
+        for (int i = 0; i < marketCodes.size(); i++) {
+
+            dataList[i][0] = String.valueOf(marketCodes.get(i).getId());
+            dataList[i][1] = String.valueOf(marketCodes.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(marketCodes.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(marketCodes.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(marketCodes.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(marketCodes.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(marketCodes.get(i).getMarket());
+            dataList[i][7] = String.valueOf(marketCodes.get(i).getCode());
+            dataList[i][8] = String.valueOf(marketCodes.get(i).getTypeId());
+            dataList[i][9] = String.valueOf(marketCodes.get(i).getRemark());
+            dataList[i][10] = String.valueOf(marketCodes.get(i).getUseFlag());
+        }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+
+
+    }
+}
+

+ 161 - 0
src/main/java/com/izouma/awesomeadmin/web/MarketTypeController.java

@@ -0,0 +1,161 @@
+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.MarketType;
+import com.izouma.awesomeadmin.service.MarketTypeService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+*  controller类
+*/
+@Controller
+@RequestMapping("/marketType")
+public class MarketTypeController {
+
+    @Autowired
+    private MarketTypeService marketTypeService;
+
+    /**
+    * <p>获取全部记录。</p>
+    */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(MarketType record) {
+        List<MarketType> pp = marketTypeService.getMarketTypeList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+    * <p>根据Id。</p>
+    */
+    @RequestMapping(value = "/getMarketType", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getMarketType(@RequestParam(required = false, value = "id") String id) {
+        MarketType data = marketTypeService.getMarketTypeById(id);
+        return new Result(true, data);
+    }
+
+    /**
+    * <p>根据条件获取。</p>
+    */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(MarketType record) {
+        MarketType data = marketTypeService.getMarketType(record);
+        return new Result(true, data);
+    }
+
+
+    /**
+    * <p>分页查询。</p>
+    */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, MarketType record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<MarketType> pp =marketTypeService.getMarketTypeByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+
+    /**
+    * <p>保存。</p>
+    */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(MarketType record) {
+        boolean num = marketTypeService.createMarketType(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>更新信息。</p>
+    */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateMarketType(MarketType record) {
+        boolean num = marketTypeService.updateMarketType(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>删除。</p>
+    */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteMarketType(MarketType record) {
+
+        boolean num = marketTypeService.deleteMarketType(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, MarketType record) throws Exception {
+
+    List<MarketType> marketTypes = marketTypeService.getMarketTypeList(record);
+
+
+        String sheetName = "market_type";
+        String titleName = "推广类型数据表";
+        String fileName = "推广类型表";
+        int columnNumber = 10;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "名称" ,   "类型" ,   "数额" ,   "备注"  };
+        String[][] dataList = new String[marketTypes.size()][10];
+
+        for (int i = 0; i < marketTypes.size(); i++) {
+
+                        dataList[i][0] = String.valueOf(marketTypes.get(i).getId());
+                        dataList[i][1] = String.valueOf(marketTypes.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(marketTypes.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(marketTypes.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(marketTypes.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(marketTypes.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(marketTypes.get(i).getTypeName());
+                        dataList[i][7] = String.valueOf(marketTypes.get(i).getTypeFlag());
+                        dataList[i][8] = String.valueOf(marketTypes.get(i).getMoney());
+                        dataList[i][9] = String.valueOf(marketTypes.get(i).getRemark());
+                    }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+        columnNumber, columnWidth, columnName, dataList, response);
+
+
+        }
+    }
+

+ 169 - 0
src/main/java/com/izouma/awesomeadmin/web/UserCommentController.java

@@ -0,0 +1,169 @@
+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.UserComment;
+import com.izouma.awesomeadmin.service.UserCommentService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+*  controller类
+*/
+@Controller
+@RequestMapping("/userComment")
+public class UserCommentController {
+
+    @Autowired
+    private UserCommentService userCommentService;
+
+    /**
+    * <p>获取全部记录。</p>
+    */
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(UserComment record) {
+        List<UserComment> pp = userCommentService.getUserCommentList(record);
+        return new Result(true, pp);
+    }
+
+    /**
+    * <p>根据Id。</p>
+    */
+    @RequestMapping(value = "/getUserComment", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getUserComment(@RequestParam(required = false, value = "id") String id) {
+        UserComment data = userCommentService.getUserCommentById(id);
+        return new Result(true, data);
+    }
+
+    /**
+    * <p>根据条件获取。</p>
+    */
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(UserComment record) {
+        UserComment data = userCommentService.getUserComment(record);
+        return new Result(true, data);
+    }
+
+
+    /**
+    * <p>分页查询。</p>
+    */
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, UserComment record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<UserComment> pp =userCommentService.getUserCommentByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+
+    /**
+    * <p>保存。</p>
+    */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(UserComment record) {
+        boolean num = userCommentService.createUserComment(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>更新信息。</p>
+    */
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateUserComment(UserComment record) {
+        boolean num = userCommentService.updateUserComment(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    /**
+    * <p>删除。</p>
+    */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteUserComment(UserComment record) {
+
+        boolean num = userCommentService.deleteUserComment(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, UserComment record) throws Exception {
+
+    List<UserComment> userComments = userCommentService.getUserCommentList(record);
+
+
+        String sheetName = "user_comment";
+        String titleName = "用户评论数据表";
+        String fileName = "用户评论表";
+        int columnNumber = 18;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "ID" ,   "删除标识" ,   "更新时间" ,   "更新人" ,   "创建时间" ,   "创建人" ,   "用户" ,   "地标" ,   "起点" ,   "终点" ,   "评论" ,   "类别" ,   "星级" ,   "备注" ,   "备注1" ,   "备注2" ,   "备注3" ,   "备注4"  };
+        String[][] dataList = new String[userComments.size()][18];
+
+        for (int i = 0; i < userComments.size(); i++) {
+
+                        dataList[i][0] = String.valueOf(userComments.get(i).getId());
+                        dataList[i][1] = String.valueOf(userComments.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(userComments.get(i).getUpdateTime());
+                        dataList[i][3] = String.valueOf(userComments.get(i).getUpdateUser());
+                        dataList[i][4] = String.valueOf(userComments.get(i).getCreateTime());
+                        dataList[i][5] = String.valueOf(userComments.get(i).getCreateUser());
+                        dataList[i][6] = String.valueOf(userComments.get(i).getUserId());
+                        dataList[i][7] = String.valueOf(userComments.get(i).getLandmarkId());
+                        dataList[i][8] = String.valueOf(userComments.get(i).getStartPlace());
+                        dataList[i][9] = String.valueOf(userComments.get(i).getEndPlace());
+                        dataList[i][10] = String.valueOf(userComments.get(i).getCommentText());
+                        dataList[i][11] = String.valueOf(userComments.get(i).getTypeFlag());
+                        dataList[i][12] = String.valueOf(userComments.get(i).getStarLevel());
+                        dataList[i][13] = String.valueOf(userComments.get(i).getRemark());
+                        dataList[i][14] = String.valueOf(userComments.get(i).getRemark1());
+                        dataList[i][15] = String.valueOf(userComments.get(i).getRemark2());
+                        dataList[i][16] = String.valueOf(userComments.get(i).getRemark3());
+                        dataList[i][17] = String.valueOf(userComments.get(i).getRemark4());
+                    }
+
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+        columnNumber, columnWidth, columnName, dataList, response);
+
+
+        }
+    }
+

+ 38 - 4
src/main/java/com/izouma/weixin/util/WeixinUtil.java

@@ -4,18 +4,17 @@ import com.izouma.weixin.dto.WxPaySendData;
 import com.izouma.weixin.wxpay.MyConfig;
 import com.izouma.weixin.wxpay.WXPay;
 import com.izouma.weixin.wxpay.WXPayConstants;
+import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
 import org.json.JSONObject;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
-import java.net.InetAddress;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
+import java.net.*;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
@@ -220,5 +219,40 @@ public class WeixinUtil {
         return null;
     }
 
+    public static String getIpAdderss(HttpServletRequest request) {
+
+        InetAddress ia = null;
+        try {
+            // 获取客户端IP地址,考虑反向代理的问题
+            String ip = request.getHeader("x-forwarded-for");
+            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
+                ip = request.getHeader("Proxy-Client-IP");
+            }
+            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
+                ip = request.getHeader("WL-Proxy-Client-IP");
+            }
+            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
+                ip = request.getRemoteAddr();
+                if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
+                    InetAddress inet = null;
+                    try {
+                        inet = InetAddress.getLocalHost();
+                        ip = inet.getHostAddress();
+                    } catch (UnknownHostException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }
+            if (!StringUtils.isEmpty(ip) && ip.length() > 15) {
+                ip = ip.substring(0, ip.indexOf(","));
+            }
+            return ip;
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return null;
+    }
+
 
 }

+ 20 - 9
src/main/java/com/izouma/weixin/web/WeiXinController.java

@@ -8,7 +8,6 @@ import com.izouma.awesomeadmin.service.UserInfoService;
 import com.izouma.awesomeadmin.service.UserOrderService;
 import com.izouma.awesomeadmin.shiro.WechatToken;
 import com.izouma.awesomeadmin.util.Base64;
-import com.izouma.awesomeadmin.util.MbappUtil;
 import com.izouma.awesomeadmin.util.PropertiesFileLoader;
 import com.izouma.weixin.dao.WxpayTempMapper;
 import com.izouma.weixin.dto.WxPaySendData;
@@ -27,6 +26,8 @@ import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
@@ -205,6 +206,11 @@ public class WeiXinController {
 
         try {
 
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+
+            String ip = WeixinUtil.getIpAdderss(request);
+
+
             MyConfig config = new MyConfig();
 
             int total = money;
@@ -224,7 +230,7 @@ public class WeiXinController {
             data.setTotal_fee(total);
             data.setTrade_type(AppConstant.TRADE_TYPE_APP);
             //data.setSpbill_create_ip("117.62.182.63");
-            data.setSpbill_create_ip(WeixinUtil.getHostAdderss());
+            data.setSpbill_create_ip(ip);
             //扫码支付不需要openId
             //data.setOpenid(openId);
 
@@ -232,8 +238,8 @@ public class WeiXinController {
 
             Map<String, String> unified = WeixinUtil.unifiedOrder(data);
 
-            String timeStamp = MbappUtil.create_timestamp();
-            String nonceStr = MbappUtil.create_nonce_str();
+            String timeStamp = WeixinUtil.create_timestamp();
+            String nonceStr = WeixinUtil.create_nonce_str();
             String packageStr = "prepay_id=" + unified.get("prepay_id");
             //生成sign签名
             Map<String, String> params = new HashMap<>();
@@ -264,6 +270,10 @@ public class WeiXinController {
         Map<String, String> result = new HashMap<>();
         try {
 
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+
+            String ip = WeixinUtil.getIpAdderss(request);
+
             MyConfig config = new MyConfig();
 
             double cash = userOrderService.calculatedPrice(orderId, coin, point);
@@ -273,7 +283,7 @@ public class WeiXinController {
             total = (int) (cash * 100);
 
             //测试为一分
-            //total = 1;
+            total = 1;
 
             JSONObject attach = new JSONObject();
             attach.put("orderId", orderId);
@@ -289,20 +299,20 @@ public class WeiXinController {
 
             data.setDevice_info(AppConstant.DEVICE_INFO);
             data.setBody("一米世界-导游包");
-            data.setOut_trade_no(MbappUtil.create_out_trade_no());
+            data.setOut_trade_no(WeixinUtil.create_out_trade_no());
             data.setNotify_url(PropertiesFileLoader.getProperties("weixin_notify_url"));
             data.setTotal_fee(total);
             data.setTrade_type(AppConstant.TRADE_TYPE_APP);
             //data.setSpbill_create_ip("117.62.182.63");
-            data.setSpbill_create_ip(MbappUtil.getHostAdderss());
+            data.setSpbill_create_ip(ip);
             //data.setOpenid(openId);
             data.setAttach(attach.toString());
 
 
             Map<String, String> unified = WeixinUtil.unifiedOrder(data);
 
-            String timeStamp = MbappUtil.create_timestamp();
-            String nonceStr = MbappUtil.create_nonce_str();
+            String timeStamp = WeixinUtil.create_timestamp();
+            String nonceStr = WeixinUtil.create_nonce_str();
             //生成sign签名
             Map<String, String> params = new HashMap<>();
 
@@ -392,6 +402,7 @@ public class WeiXinController {
                 }
 
             } else {
+                System.out.println("报文验证签名错误:" + notityXml);
                 // 签名错误,如果数据里没有sign字段,也认为是签名错误
                 return null;
             }

+ 151 - 0
src/main/vue/src/pages/MarketCode.vue

@@ -0,0 +1,151 @@
+<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="market" label="推广人">
+                <el-input v-model="formData.market" :disabled="'market'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="code" label="推广CODE">
+                <el-input v-model="formData.code" :disabled="'code'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                                                                                                                                <el-form-item prop="typeId" label="类型">
+                <template>
+                    <el-select v-model="formData.typeId" clearable  placeholder="请选择" :disabled="'typeId'==subColumn">
+                        <el-option
+                                v-for="item in typeIdOptions"
+                                :key="item.value"
+                                :label="item.label"
+                                :value="item.value">
+                        </el-option>
+                    </el-select>
+                </template>
+            </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'
+
+    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: '/marketCode/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;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                
+
+
+                        this.$http.get({
+                        url:'/marketType/all'
+                        }).then(res => {
+                        if (res.success) {
+
+                        if (res.data.length > 0) {
+                        res.data.forEach(item => {
+                        this.typeIdOptions.push({label: item.typeName, value:item.id});
+                        })
+                        }
+                        }
+                        });
+                                                                                                                },
+        data() {
+            return {
+                saving: false,
+                formData: {},
+                rules: {
+                                                                                                                                                                                                                        market:
+                    [
+                                                {required: true, message: '请输入 推广人', trigger: 'blur'},
+                                                                    ],
+                                                                code:
+                    [
+                                                {required: true, message: '请输入 推广CODE', trigger: 'blur'},
+                                                                    ],
+                                                                typeId:
+                    [
+                                                {required: true, message: '请输入 类型', trigger: 'blur'},
+                                                                    ],
+                                                                                            },
+                                                                                        typeIdOptions:[],
+                                                subColumn: '',
+            subValue: '',
+        }
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.submit();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            submit() {
+                var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.post({
+                    url: this.formData.id ? '/marketCode/update' : '/marketCode/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: '/marketCode/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>

+ 471 - 0
src/main/vue/src/pages/MarketCodes.vue

@@ -0,0 +1,471 @@
+<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:'/marketCode',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('market')"
+                                prop="market"
+                                label="推广人"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('code')"
+                                prop="code"
+                                label="推广CODE"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeId')"
+                                prop="typeId"
+                                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 {
+        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: 'market',
+                                show: true
+                            },
+                                                                                                {
+                                label: '推广CODE',
+                                value: 'code',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                        ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                                                                                                            {
+                                label: '推广人',
+                                value: 'market'
+                            },
+                                                                                                {
+                                label: '推广CODE',
+                                value: 'code'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_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: '/marketCode/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: '/marketCode',
+                    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 + "/marketCode/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: '/marketCode/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>

+ 130 - 0
src/main/vue/src/pages/MarketType.vue

@@ -0,0 +1,130 @@
+<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="typeName" label="名称">
+                <el-input v-model="formData.typeName" :disabled="'typeName'==subColumn"></el-input>
+            </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="money" label="数额">
+                <el-input v-model="formData.money" :disabled="'money'==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'
+
+    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: '/marketType/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: '1',
+          label: '减免'
+        }, {
+          value: '2',
+          label: '折扣'
+        }],
+                                                subColumn: '',
+            subValue: '',
+        }
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.submit();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            submit() {
+                var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.post({
+                    url: this.formData.id ? '/marketType/update' : '/marketType/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: '/marketType/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>

+ 473 - 0
src/main/vue/src/pages/MarketTypes.vue

@@ -0,0 +1,473 @@
+<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:'/marketType',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('typeName')"
+                                prop="typeName"
+                                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('money')"
+                                prop="money"
+                                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="$router.push({path:'/MarketCodes',query:{column:scope.row.id+',typeId'}})" type="primary" size="small" 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>
+        <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 {
+        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: 'typeName',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '数额',
+                                value: 'money',
+                                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_name'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '数额',
+                                value: 'money'
+                            },
+                                                                                                {
+                                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: '/marketType/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: '/marketType',
+                    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 + "/marketType/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: '/marketType/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>

+ 138 - 0
src/main/vue/src/pages/UserComment.vue

@@ -0,0 +1,138 @@
+<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="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="landmarkId" label="地标">
+                <el-input v-model="formData.landmarkId" :disabled="'landmarkId'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="startPlace" label="起点">
+                <el-input v-model="formData.startPlace" :disabled="'startPlace'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="endPlace" label="终点">
+                <el-input v-model="formData.endPlace" :disabled="'endPlace'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="commentText" label="评论">
+                <el-input v-model="formData.commentText" :disabled="'commentText'==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="starLevel" label="星级">
+                <el-input v-model="formData.starLevel" :disabled="'starLevel'==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="remark1" label="备注1">
+                <el-input v-model="formData.remark1" :disabled="'remark1'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark2" label="备注2">
+                <el-input v-model="formData.remark2" :disabled="'remark2'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark3" label="备注3">
+                <el-input v-model="formData.remark3" :disabled="'remark3'==subColumn"></el-input>
+            </el-form-item>
+                                                                                                                                                                                                                                                                                                                            <el-form-item prop="remark4" label="备注4">
+                <el-input v-model="formData.remark4" :disabled="'remark4'==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'
+
+    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: '/userComment/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: '',
+        }
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.submit();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            submit() {
+                var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.post({
+                    url: this.formData.id ? '/userComment/update' : '/userComment/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: '/userComment/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>

+ 616 - 0
src/main/vue/src/pages/UserComments.vue

@@ -0,0 +1,616 @@
+<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:'/userComment',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('createTime')"
+                                prop="createTime"
+                                label="创建时间"
+                                :formatter="DateTimeFormatter"
+                                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('landmarkId')"
+                                prop="landmarkId"
+                                label="地标"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('startPlace')"
+                                prop="startPlace"
+                                label="起点"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('endPlace')"
+                                prop="endPlace"
+                                label="终点"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('commentText')"
+                                prop="commentText"
+                                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('starLevel')"
+                                prop="starLevel"
+                                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('remark1')"
+                                prop="remark1"
+                                label="备注1"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark2')"
+                                prop="remark2"
+                                label="备注2"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark3')"
+                                prop="remark3"
+                                label="备注3"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark4')"
+                                prop="remark4"
+                                label="备注4"
+                                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 {
+        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: 'createTime',
+                                show: true
+                            },
+                                                                                                                                            {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '地标',
+                                value: 'landmarkId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '起点',
+                                value: 'startPlace',
+                                show: true
+                            },
+                                                                                                {
+                                label: '终点',
+                                value: 'endPlace',
+                                show: true
+                            },
+                                                                                                {
+                                label: '评论',
+                                value: 'commentText',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类别',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '星级',
+                                value: 'starLevel',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注1',
+                                value: 'remark1',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注2',
+                                value: 'remark2',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注3',
+                                value: 'remark3',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注4',
+                                value: 'remark4',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'ID',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                    {
+                                label: '创建时间',
+                                value: 'create_time'
+                            },
+                                                                                                                                            {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '地标',
+                                value: 'landmark_id'
+                            },
+                                                                                                {
+                                label: '起点',
+                                value: 'start_place'
+                            },
+                                                                                                {
+                                label: '终点',
+                                value: 'end_place'
+                            },
+                                                                                                {
+                                label: '评论',
+                                value: 'comment_text'
+                            },
+                                                                                                {
+                                label: '类别',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '星级',
+                                value: 'star_level'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '备注1',
+                                value: 'remark1'
+                            },
+                                                                                                {
+                                label: '备注2',
+                                value: 'remark2'
+                            },
+                                                                                                {
+                                label: '备注3',
+                                value: 'remark3'
+                            },
+                                                                                                {
+                                label: '备注4',
+                                value: 'remark4'
+                            },
+                                                            ],
+                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: '/userComment/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: '/userComment',
+                    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 + "/userComment/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: '/userComment/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>

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

@@ -644,6 +644,36 @@ const router = new Router({
                     path: '/marketCodeLogs',
                     name: 'MarketCodeLogs',
                     component: () => import('../pages/MarketCodeLogs')
+                },
+                {
+                    path: '/marketCode',
+                    name: 'MarketCode',
+                    component: () => import('../pages/MarketCode')
+                },
+                {
+                    path: '/marketCodes',
+                    name: 'MarketCodes',
+                    component: () => import('../pages/MarketCodes')
+                },
+                {
+                    path: '/marketType',
+                    name: 'MarketType',
+                    component: () => import('../pages/MarketType')
+                },
+                {
+                    path: '/marketTypes',
+                    name: 'MarketTypes',
+                    component: () => import('../pages/MarketTypes')
+                },
+                {
+                    path: '/userComment',
+                    name: 'UserComment',
+                    component: () => import('../pages/UserComment')
+                },
+                {
+                    path: '/userComments',
+                    name: 'UserComments',
+                    component: () => import('../pages/UserComments')
                 }
                 /**INSERT_LOCATION**/
             ]

+ 1 - 1
src/main/webapp/WEB-INF/html/admin.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.e95f4bdd1cd9c08fb560ff59f29250f5.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.274fd2a1b28d84604c1a.js></script><script type=text/javascript src=/static/js/vendor.2ec35927ffef2d198211.js></script><script type=text/javascript src=/static/js/admin.77d7cee6672a0f8943d9.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><script src=/static/fontawesome-v5.2.0.js></script><link href=/static/css/admin.e95f4bdd1cd9c08fb560ff59f29250f5.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.7903d364c752fed92cf8.js></script><script type=text/javascript src=/static/js/vendor.7594de9aaa3d9dda0ec6.js></script><script type=text/javascript src=/static/js/admin.df89974073523e22a4fd.js></script></body></html>

+ 1 - 1
src/main/webapp/WEB-INF/html/loginAdmin.html

@@ -1 +1 @@
-<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><link href=/static/css/loginAdmin.46a5161090cd0d8998f220733fc576f0.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.274fd2a1b28d84604c1a.js></script><script type=text/javascript src=/static/js/vendor.2ec35927ffef2d198211.js></script><script type=text/javascript src=/static/js/loginAdmin.bca53a5ab535438e9956.js></script></body></html>
+<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=origin><title>管理后台</title><link rel=icon href=/static/favicon.ico><script src=/static/polyfill.min.js></script><link href=/static/css/loginAdmin.46a5161090cd0d8998f220733fc576f0.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.7903d364c752fed92cf8.js></script><script type=text/javascript src=/static/js/vendor.7594de9aaa3d9dda0ec6.js></script><script type=text/javascript src=/static/js/loginAdmin.f71354eb64421d74f100.js></script></body></html>

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/100.64911added615225c722.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/101.55c8639394acbca3f68f.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/102.63f167c7c49a30f01316.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/103.31b582a1731d57fdbce4.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/104.531fa41ce5f0ad0c751f.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/105.c7ddaba7b2e4a7abab03.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/106.649a05c8d294078042eb.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/107.7953978851cc3afcd25c.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/108.fc27d69ac2993db5f233.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/109.43ca5e671cd30e78dd2c.js


+ 1 - 1
src/main/webapp/static/js/104.a56704efd53dc87a2f57.js → src/main/webapp/static/js/110.a3e8f62bf4a833735f91.js

@@ -1 +1 @@
-webpackJsonp([104],{izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("xnY9")},"data-v-04168182",null);e.default=c.exports},xnY9:function(t,e){}});
+webpackJsonp([110],{izdZ:function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});r("NYxO");var i={created:function(){this.getIframeSrc()},data:function(){return{iframeSrc:"/404"}},computed:{height:function(){return window.innerHeight-104+"px"}},methods:{getIframeSrc:function(){this.iframeSrc=this.$route.query.code}},watch:{$route:function(){this.getIframeSrc()}}},n={render:function(){var t=this.$createElement;return(this._self._c||t)("iframe",{staticClass:"iframe",attrs:{src:this.iframeSrc,height:this.height,width:"100%"}})},staticRenderFns:[]};var c=r("VU/8")(i,n,!1,function(t){r("xnY9")},"data-v-04168182",null);e.default=c.exports},xnY9:function(t,e){}});

Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/111.cf285bf1f4ff52b1b9f4.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/112.612048cd8a4c080ead16.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/32.97e523460970a5ef486d.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/33.c0749bbc10fe97ae7dee.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/34.db15fdacb14bb2d772fd.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/35.e9a359dbff343e577be2.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/36.a7db0e5a8590caf54532.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/37.f390c28fe31d2f80b4fc.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/38.8a13aeb0af7b2dbfe2c6.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/39.de9bb8fe1b2ba2a8d8fa.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/40.a6bcb0f50bafc8861628.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/41.11e8ddd97e5a68a00f25.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/42.2eb64def99bec4fe7e19.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/43.13652a0a0738faaac52c.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/44.350607e4f2160a9ba99b.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/45.37dffe12d128668e7fcc.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/46.b26c616f3d5f7b71fc35.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/47.383edd76f598a2f06d60.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/48.99ff6cfc6e2022a3b835.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/49.da7f5abd6857072df56c.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/50.9a437f4ac706dec55f85.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/51.6f1538118182f45526a5.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/52.7723a40ad7777d6562e3.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/53.67372b767496f4030acf.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/54.5b7868e58a78361d842e.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/55.633090a66d037d0be1f3.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/56.1cdccb668ab5451428e2.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/57.15da053143e2621c0f96.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/58.688ad395d5669fae1e51.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/59.e5c0e524d406a84fdab3.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/60.b2659ae1208e4f7d9c95.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/61.bcc511777c30eba85035.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/62.ba126825731bc81c2c7d.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/63.47b488fc7c1758243bdb.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/64.fa7c0ff112d92c34e4ad.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/65.36795bc8a4382bc3fd85.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/66.66fad3cfc1b6079e6cb9.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/67.c23d5eda88502d704189.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/68.82af26652ff5bcbb1a9a.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/69.6f9e81a0e0c7def61a85.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/70.052bcd122066f4f6e0f2.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/71.fe994f9bb3b397715506.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/72.03165cf113972c03fdd1.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/73.7cf1234804145905ccb0.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/74.ab8e81cab6460a4a2fde.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/75.fb7300f18d89824b3c26.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/76.4f6a83adb5d98af46ada.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/77.0e90b135706e2c70eb74.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/78.a702f6041a5604aa5856.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/79.85bc6df510e21b0dd7be.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/80.b9db7cc974e107ed298f.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/81.e34114483b714e4b7e3f.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/82.b1b5540fb7f9f7f929cf.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/83.4163f0dac71b02e0c04a.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/84.c318587aaa7629fb1a8c.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/85.d18ac781db4478129812.js


Fișier diff suprimat deoarece este prea mare
+ 0 - 0
src/main/webapp/static/js/86.a612c05a1eed196efc04.js


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff