x1ongzhu vor 7 Jahren
Ursprung
Commit
c670a9e6dc

+ 36 - 0
src/main/java/com/izouma/awesomeadmin/dao/AppealInfoMapper.java

@@ -0,0 +1,36 @@
+package com.izouma.awesomeadmin.dao;
+
+import com.izouma.awesomeadmin.model.AppealInfo;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+*  Dao接口
+*/
+@Repository("com.zoumaframe.dao.AppealInfoMapper")
+public interface AppealInfoMapper{
+    /*generatedStart*/
+    int deleteByPrimaryKey(Integer id);
+
+    int insertSelective(AppealInfo record);
+
+    AppealInfo selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(AppealInfo record);
+
+    List<AppealInfo> queryAllAppealInfo(AppealInfo record);
+
+    List<AppealInfo> queryAppealInfoByPage(Map<String, Object> parameter);
+
+    int delete(AppealInfo record);
+
+    AppealInfo queryAppealInfo(AppealInfo record);
+
+    List<AppealInfo> query(AppealInfo record);
+    /*generatedEnd*/
+
+}
+

+ 398 - 0
src/main/java/com/izouma/awesomeadmin/dao/AppealInfoMapper.xml

@@ -0,0 +1,398 @@
+<?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.AppealInfoMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.AppealInfo">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="user_id" property="userId" jdbcType="INTEGER"/>
+        <result column="player_info_id" property="playerInfoId" jdbcType="INTEGER"/>
+        <result column="competition_id" property="competitionId" jdbcType="INTEGER"/>
+        <result column="house_id" property="houseId" jdbcType="INTEGER"/>
+        <result column="pic" property="pic" jdbcType="VARCHAR"/>
+        <result column="status" property="status" jdbcType="INTEGER"/>
+        <result column="points" property="points" jdbcType="INTEGER"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, user_id, player_info_id, competition_id, house_id, pic, status, points, create_time        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM appeal_info
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM appeal_info
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.AppealInfo" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO appeal_info
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="playerInfoId!= null">
+                player_info_id,
+            </if>
+            <if test="competitionId!= null">
+                competition_id,
+            </if>
+            <if test="houseId!= null">
+                house_id,
+            </if>
+            <if test="pic!= null">
+                pic,
+            </if>
+            <if test="status!= null">
+                status,
+            </if>
+            <if test="points!= null">
+                points,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=INTEGER},
+            </if>
+            <if test="playerInfoId != null">
+                #{playerInfoId,jdbcType=INTEGER},
+            </if>
+            <if test="competitionId != null">
+                #{competitionId,jdbcType=INTEGER},
+            </if>
+            <if test="houseId != null">
+                #{houseId,jdbcType=INTEGER},
+            </if>
+            <if test="pic != null">
+                #{pic,jdbcType=VARCHAR},
+            </if>
+            <if test="status != null">
+                #{status,jdbcType=INTEGER},
+            </if>
+            <if test="points != null">
+                #{points,jdbcType=INTEGER},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.AppealInfo">
+        UPDATE appeal_info
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=INTEGER},
+            </if>
+            <if test="playerInfoId != null">
+                player_info_id= #{playerInfoId,jdbcType=INTEGER},
+            </if>
+            <if test="competitionId != null">
+                competition_id= #{competitionId,jdbcType=INTEGER},
+            </if>
+            <if test="houseId != null">
+                house_id= #{houseId,jdbcType=INTEGER},
+            </if>
+            <if test="pic != null">
+                pic= #{pic,jdbcType=VARCHAR},
+            </if>
+            <if test="status != null">
+                status= #{status,jdbcType=INTEGER},
+            </if>
+            <if test="points != null">
+                points= #{points,jdbcType=INTEGER},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryAppealInfoByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.AppealInfo">
+        SELECT <include refid="Base_Column_List"/> FROM appeal_info
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.playerInfoId != null and !&quot;&quot;.equals(record.playerInfoId)">
+                AND player_info_id = #{record.playerInfoId}
+            </if>
+            <if test="record.competitionId != null and !&quot;&quot;.equals(record.competitionId)">
+                AND competition_id = #{record.competitionId}
+            </if>
+            <if test="record.houseId != null and !&quot;&quot;.equals(record.houseId)">
+                AND house_id = #{record.houseId}
+            </if>
+            <if test="record.pic != null and !&quot;&quot;.equals(record.pic)">
+                AND pic = #{record.pic}
+            </if>
+            <if test="record.status != null and !&quot;&quot;.equals(record.status)">
+                AND status = #{record.status}
+            </if>
+            <if test="record.points != null and !&quot;&quot;.equals(record.points)">
+                AND points = #{record.points}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{record.searchKey},'%')
+                    OR player_info_id LIKE concat('%',#{record.searchKey},'%')
+                    OR competition_id LIKE concat('%',#{record.searchKey},'%')
+                    OR house_id LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllAppealInfo" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.AppealInfo">
+        SELECT <include refid="Base_Column_List"/> FROM appeal_info
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="playerInfoId != null and !&quot;&quot;.equals(playerInfoId)">
+                AND player_info_id = #{playerInfoId}
+            </if>
+            <if test="competitionId != null and !&quot;&quot;.equals(competitionId)">
+                AND competition_id = #{competitionId}
+            </if>
+            <if test="houseId != null and !&quot;&quot;.equals(houseId)">
+                AND house_id = #{houseId}
+            </if>
+            <if test="pic != null and !&quot;&quot;.equals(pic)">
+                AND pic = #{pic}
+            </if>
+            <if test="status != null and !&quot;&quot;.equals(status)">
+                AND status = #{status}
+            </if>
+            <if test="points != null and !&quot;&quot;.equals(points)">
+                AND points = #{points}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR user_id LIKE concat('%',#{searchKey},'%')
+                    OR player_info_id LIKE concat('%',#{searchKey},'%')
+                    OR competition_id LIKE concat('%',#{searchKey},'%')
+                    OR house_id LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAppealInfo" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.AppealInfo">
+        SELECT <include refid="Base_Column_List"/> FROM appeal_info
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="playerInfoId != null and !&quot;&quot;.equals(playerInfoId)">
+                AND player_info_id = #{playerInfoId}
+            </if>
+            <if test="competitionId != null and !&quot;&quot;.equals(competitionId)">
+                AND competition_id = #{competitionId}
+            </if>
+            <if test="houseId != null and !&quot;&quot;.equals(houseId)">
+                AND house_id = #{houseId}
+            </if>
+            <if test="pic != null and !&quot;&quot;.equals(pic)">
+                AND pic = #{pic}
+            </if>
+            <if test="status != null and !&quot;&quot;.equals(status)">
+                AND status = #{status}
+            </if>
+            <if test="points != null and !&quot;&quot;.equals(points)">
+                AND points = #{points}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE appeal_info 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.AppealInfo">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM appeal_info
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

+ 30 - 0
src/main/java/com/izouma/awesomeadmin/dao/PlayerInfoMapper.xml

@@ -31,6 +31,7 @@
         <result column="house_rank" property="houseRank" jdbcType="INTEGER"/>
         <result column="score" property="score" jdbcType="FLOAT"/>
         <result column="medal" property="medal" jdbcType="VARCHAR"/>
+        <result column="played" property="played" jdbcType="BIT"/>
         <result column="result_error" property="resultError" jdbcType="BIT"/>
         <result column="data_error" property="dataError" jdbcType="BIT"/>
     </resultMap>
@@ -94,6 +95,8 @@
 
             medal,
 
+            played,
+
             result_error,
 
             data_error
@@ -201,6 +204,9 @@
             <if test="medal!= null">
                 medal,
             </if>
+            <if test="played!= null">
+                played,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">
@@ -290,6 +296,9 @@
             <if test="medal != null">
                 #{medal},
             </if>
+            <if test="played!= null">
+                #{played,jdbcType=BIT},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.PlayerInfo">
@@ -382,6 +391,9 @@
             <if test="medal != null">
                 medal= #{medal},
             </if>
+            <if test="played != null">
+                played = #{played,jdbcType=BIT},
+            </if>
             <if test="resultError != null">
                 result_error = #{resultError,jdbcType=BIT},
             </if>
@@ -490,6 +502,9 @@
             <if test="record.medal != null and !&quot;&quot;.equals(record.medal)">
                 and medal = #{record.medal}
             </if>
+            <if test="record.played != null and !&quot;&quot;.equals(record.played)">
+                and played = #{record.played}
+            </if>
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR game_id LIKE concat('%',#{record.searchKey},'%')
@@ -658,6 +673,9 @@
             <if test="record.medal != null and !&quot;&quot;.equals(record.medal)">
                 and medal = #{record.medal}
             </if>
+            <if test="record.played != null and !&quot;&quot;.equals(record.played)">
+                and played = #{record.played}
+            </if>
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR game_id LIKE concat('%',#{record.searchKey},'%')
@@ -890,6 +908,9 @@
             <if test="record.medal != null and !&quot;&quot;.equals(record.medal)">
                 and medal = #{record.medal}
             </if>
+            <if test="record.played != null and !&quot;&quot;.equals(record.played)">
+                and played = #{record.played}
+            </if>
 
         </where>
         GROUP BY
@@ -1105,6 +1126,9 @@
             <if test="medal != null and !&quot;&quot;.equals(medal)">
                 and medal = #{medal}
             </if>
+            <if test="played != null and !&quot;&quot;.equals(played)">
+                and played = #{played}
+            </if>
 
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
@@ -1270,6 +1294,9 @@
             <if test="medal != null and !&quot;&quot;.equals(medal)">
                 and medal = #{medal}
             </if>
+            <if test="played != null and !&quot;&quot;.equals(played)">
+                and played = #{played}
+            </if>
 
         </where>
         LIMIT 1
@@ -1490,6 +1517,9 @@
             <if test="seasonId != null and !&quot;&quot;.equals(seasonId)">
                 and season_id = #{seasonId}
             </if>
+            <if test="played != null and !&quot;&quot;.equals(played)">
+                and played = #{played}
+            </if>
 
         </where>
     </select>

+ 145 - 0
src/main/java/com/izouma/awesomeadmin/model/AppealInfo.java

@@ -0,0 +1,145 @@
+package com.izouma.awesomeadmin.model;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import java.util.Date;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AppealInfo {
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Integer userId;
+    private Integer playerInfoId;
+    private Integer competitionId;
+    private Integer houseId;
+    private String pic;
+    private Integer status;
+    private Integer points;
+    private Date createTime;
+
+    private String idStr;
+
+    private String searchKey;
+
+    /**
+    * and,test_name,like,value;or,remark,=,123
+    */
+    private String advancedQuery;
+
+    /**
+    * column_name_,desc_;column_name_,asc
+    */
+    private String orderByStr;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    public Integer getId(){
+        return this.id;
+    }
+
+    public void setId(Integer id){
+        this.id = id;
+    }
+    public String getDelFlag(){
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag){
+        this.delFlag = delFlag;
+    }
+    public Integer getUserId(){
+        return this.userId;
+    }
+
+    public void setUserId(Integer userId){
+        this.userId = userId;
+    }
+    public Integer getPlayerInfoId(){
+        return this.playerInfoId;
+    }
+
+    public void setPlayerInfoId(Integer playerInfoId){
+        this.playerInfoId = playerInfoId;
+    }
+    public Integer getCompetitionId(){
+        return this.competitionId;
+    }
+
+    public void setCompetitionId(Integer competitionId){
+        this.competitionId = competitionId;
+    }
+    public Integer getHouseId(){
+        return this.houseId;
+    }
+
+    public void setHouseId(Integer houseId){
+        this.houseId = houseId;
+    }
+    public String getPic(){
+        return this.pic;
+    }
+
+    public void setPic(String pic){
+        this.pic = pic;
+    }
+    public Integer getStatus(){
+        return this.status;
+    }
+
+    public void setStatus(Integer status){
+        this.status = status;
+    }
+    public Integer getPoints(){
+        return this.points;
+    }
+
+    public void setPoints(Integer points){
+        this.points = points;
+    }
+    public Date getCreateTime(){
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime){
+        this.createTime = createTime;
+    }
+
+    public String getSearchKey() {
+        return searchKey;
+    }
+
+    public void setSearchKey(String searchKey) {
+        this.searchKey = searchKey;
+    }
+
+    public String getAdvancedQuery() {
+        return advancedQuery;
+    }
+
+    public void setAdvancedQuery(String advancedQuery) {
+        this.advancedQuery = advancedQuery;
+    }
+
+    public String getOrderByStr() {
+        return orderByStr;
+    }
+
+    public void setOrderByStr(String orderByStr) {
+        this.orderByStr = orderByStr;
+    }
+
+    public String getIdStr() {
+        return idStr;
+    }
+
+    public void setIdStr(String idStr) {
+        this.idStr = idStr;
+    }
+    /*generatedEnd*/
+
+}
+

+ 3 - 3
src/main/java/com/izouma/awesomeadmin/model/PlayerInfo.java

@@ -43,9 +43,9 @@ public class PlayerInfo {
     private UserInfo   userInfo;
     private HouseInfo  houseInfo;
     private GameInfo   gameInfo;
-    private Boolean     resultError;
-    private Boolean     dataError;
-
+    private Boolean    resultError;
+    private Boolean    dataError;
+    private Boolean    played;
     private String     idStr;
     private String     searchKey;
 

+ 29 - 0
src/main/java/com/izouma/awesomeadmin/service/AppealInfoService.java

@@ -0,0 +1,29 @@
+package com.izouma.awesomeadmin.service;
+
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.AppealInfo;
+
+import java.util.List;
+
+
+/**
+*  service接口类
+*/
+public interface AppealInfoService {
+    /*generatedStart*/
+    List<AppealInfo> getAppealInfoList(AppealInfo record);
+
+    List<AppealInfo> getAppealInfoByPage(Page page, AppealInfo record);
+
+    AppealInfo getAppealInfoById(String id);
+
+    AppealInfo getAppealInfo(AppealInfo record);
+
+    boolean createAppealInfo(AppealInfo record);
+
+    boolean deleteAppealInfo(AppealInfo record);
+
+    boolean updateAppealInfo(AppealInfo record);
+    /*generatedEnd*/
+}
+

+ 130 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/AppealInfoServiceImpl.java

@@ -0,0 +1,130 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dao.AppealInfoMapper;
+import com.izouma.awesomeadmin.dao.PlayerInfoMapper;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.AppealInfo;
+import com.izouma.awesomeadmin.model.PlayerInfo;
+import com.izouma.awesomeadmin.service.AppealInfoService;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * service接口实现类
+ */
+@Service
+public class AppealInfoServiceImpl implements AppealInfoService {
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(AppealInfoServiceImpl.class);
+
+    @Autowired
+    private AppealInfoMapper appealInfoMapper;
+    /*generatedEnd*/
+    @Autowired
+    private PlayerInfoMapper playerInfoMapper;
+
+    /*generatedStart*/
+    @Override
+    public List<AppealInfo> getAppealInfoList(AppealInfo record) {
+        logger.info("getAppealInfoList");
+        try {
+            return appealInfoMapper.queryAllAppealInfo(record);
+        } catch (Exception e) {
+            logger.error("getAppealInfoList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<AppealInfo> getAppealInfoByPage(Page page, AppealInfo record) {
+        logger.info("getAppealInfoByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return appealInfoMapper.queryAppealInfoByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getAppealInfoByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public AppealInfo getAppealInfoById(String id) {
+        logger.info("getAppealInfoyId");
+        try {
+            return appealInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getAppealInfoById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public AppealInfo getAppealInfo(AppealInfo record) {
+        logger.info("getAppealInfo");
+        try {
+            return appealInfoMapper.queryAppealInfo(record);
+        } catch (Exception e) {
+            logger.error("getAppealInfo", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createAppealInfo(AppealInfo record) {
+        logger.info("createAppealInfo");
+        try {
+            int updates = appealInfoMapper.insertSelective(record);
+            PlayerInfo playerInfo = playerInfoMapper.selectByPrimaryKey(record.getPlayerInfoId());
+            if (playerInfo.getStatusFlag() == AppConstant.PlayerStatus.START) {
+                playerInfo.setStatusFlag(AppConstant.PlayerStatus.OVERTIME);
+                playerInfo.setResultError(true);
+                playerInfoMapper.updateByPrimaryKeySelective(playerInfo);
+            }
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("createAppealInfo", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteAppealInfo(AppealInfo record) {
+        logger.info("deleteAppealInfo");
+        try {
+            int updates = appealInfoMapper.delete(record);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("deleteAppealInfo", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateAppealInfo(AppealInfo record) {
+        logger.info("updateAppealInfo");
+        try {
+            int updates = appealInfoMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("updateAppealInfo", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+}
+

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

@@ -0,0 +1,129 @@
+package com.izouma.awesomeadmin.web;
+
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.AppealInfo;
+import com.izouma.awesomeadmin.service.AppealInfoService;
+import com.izouma.awesomeadmin.util.ExportExcelUtil;
+import org.apache.shiro.authz.annotation.RequiresAuthentication;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Controller
+@RequestMapping("/appealInfo")
+public class AppealInfoController {
+    /*generatedStart*/
+    @Autowired
+    private AppealInfoService appealInfoService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(AppealInfo record) {
+        List<AppealInfo> pp = appealInfoService.getAppealInfoList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getAppealInfo", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getAppealInfo(@RequestParam(required = false, value = "id") String id) {
+        AppealInfo data = appealInfoService.getAppealInfoById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(AppealInfo record) {
+        AppealInfo data = appealInfoService.getAppealInfo(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, AppealInfo record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<AppealInfo> pp =appealInfoService.getAppealInfoByPage(page, record);
+
+        result.put(AppConstant.PAGE, page);
+        result.put("pp", pp);
+        return new Result(true, result);
+    }
+
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ResponseBody
+    public Result save(AppealInfo record) {
+        boolean num = appealInfoService.createAppealInfo(record);
+        if (num) {
+        return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateAppealInfo(AppealInfo record) {
+        boolean num = appealInfoService.updateAppealInfo(record);
+        if (num) {
+        return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteAppealInfo(AppealInfo record) {
+
+        boolean num = appealInfoService.deleteAppealInfo(record);
+        if (num) {
+        return new Result(true, "删除成功");
+        }
+        return new Result(false, "删除异常");
+    }
+
+    @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
+    @ResponseBody
+    public void exportExcel(HttpServletRequest request, HttpServletResponse response, AppealInfo record) throws Exception {
+
+        List<AppealInfo> appealInfos = appealInfoService.getAppealInfoList(record);
+
+        String sheetName = "appeal_info";
+        String titleName = "申诉信息数据表";
+        String fileName = "申诉信息表";
+        int columnNumber = 10;
+        int[] columnWidth = { 20,  20,  20,  20,  20,  20,  20,  20,  20,  20 };
+        String[] columnName = {  "" ,   "删除标识" ,   "用户id" ,   "参赛id" ,   "赛事id" ,   "房间id" ,   "截图" ,   "状态" ,   "补发积分" ,   "创建时间"  };
+        String[][] dataList = new String[appealInfos.size()][10];
+
+        for (int i = 0; i < appealInfos.size(); i++) {
+                        dataList[i][0] = String.valueOf(appealInfos.get(i).getId());
+                        dataList[i][1] = String.valueOf(appealInfos.get(i).getDelFlag());
+                        dataList[i][2] = String.valueOf(appealInfos.get(i).getUserId());
+                        dataList[i][3] = String.valueOf(appealInfos.get(i).getPlayerInfoId());
+                        dataList[i][4] = String.valueOf(appealInfos.get(i).getCompetitionId());
+                        dataList[i][5] = String.valueOf(appealInfos.get(i).getHouseId());
+                        dataList[i][6] = String.valueOf(appealInfos.get(i).getPic());
+                        dataList[i][7] = String.valueOf(appealInfos.get(i).getStatus());
+                        dataList[i][8] = String.valueOf(appealInfos.get(i).getPoints());
+                        dataList[i][9] = String.valueOf(appealInfos.get(i).getCreateTime());
+                    }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+}
+

+ 5 - 1
src/main/vue/src/components/MultiUpload.vue

@@ -26,7 +26,7 @@
             this.updateFileList(this.value);
         },
         props: {
-            value: Array,
+            value: {},
             usePrefix: {
                 type: Boolean,
                 default: true
@@ -64,6 +64,10 @@
                 this.$emit('input', fileList.map(i => i.value));
             },
             updateFileList(list) {
+                list = list || [];
+                if (typeof list == 'string') {
+                    list = list.split(',')
+                }
                 this.fileList = list.map(i => {
                     if (this.usePrefix && i && i.indexOf(this.prefix) === -1 && i.indexOf('http') === -1) {
                         return {

+ 207 - 0
src/main/vue/src/pages/AppealInfo.vue

@@ -0,0 +1,207 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="userId" label="用户id">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="playerInfoId" label="参赛id">
+                <el-input v-model="formData.playerInfoId" :disabled="'playerInfoId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="competitionId" label="赛事id">
+                <el-input v-model="formData.competitionId" :disabled="'competitionId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="houseId" label="房间id">
+                <el-input v-model="formData.houseId" :disabled="'houseId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="pic" label="截图">
+                            <multi-upload v-model="formData.pic" :disabled="'pic'==subColumn"></multi-upload>
+            </el-form-item>
+            <el-form-item prop="status" label="状态">
+                <template>
+                    <el-select v-model="formData.status" clearable  placeholder="请选择" :disabled="'status'==subColumn">
+                        <el-option
+                            v-for="item in statusOptions"
+                            :key="item.value"
+                            :label="item.label"
+                            :value="item.value">
+                        </el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="points" label="补发积分">
+                <el-input v-model="formData.points" :disabled="'points'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
+                <el-button @click="onDelete" v-if="formData.id" type="danger">删除</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+    import formValidator from '../formValidator'
+    import { mapState } from 'vuex'
+    import { format } from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'AppealInfo',
+        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: '/appealInfo/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            if(res.data.createTime){
+                                    res.data.createTime = format(new Date(res.data.createTime), 'YYYY/MM/DD HH:mm', { locale: zh });
+                                }
+                                                                                                        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: {
+createTime:format(new Date(), 'YYYY/MM/DD HH:mm', { locale: zh }),
+                },
+                rules: {
+                    userId: [
+                        {required: true, message: '请输入 用户id', trigger: 'blur'},
+                    ],
+                    playerInfoId: [
+                        {required: true, message: '请输入 参赛id', trigger: 'blur'},
+                    ],
+                    competitionId: [
+                        {required: true, message: '请输入 赛事id', trigger: 'blur'},
+                    ],
+                    houseId: [
+                        {required: true, message: '请输入 房间id', trigger: 'blur'},
+                    ],
+                    pic: [
+                        {required: true, message: '请输入 截图', trigger: 'blur'},
+                    ],
+                    status: [
+                        {required: true, message: '请输入 状态', trigger: 'blur'},
+                    ],
+                    points: [
+                        {required: true, message: '请输入 补发积分', trigger: 'blur'},
+                    ],
+                    createTime: [
+                        {required: true, message: '请输入 创建时间', trigger: 'blur'},
+                    ],
+                },
+            statusOptions:[{"label":"待处理","value":0},{"label":"已处理","value":1}],
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            logicalValidate() {
+                let logicalData = {
+                };
+
+                if (JSON.stringify(logicalData) == '{}') {
+                    this.submit();
+                } else {
+                    this.$http.get({
+                        url: '/appealInfo/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
+                }
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                                                                                                if(data.createTime){
+                    data.createTime = Date.parse(new Date(data.createTime));
+                }
+                
+                this.$http.post({
+                    url: this.formData.id ? '/appealInfo/update' : '/appealInfo/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: '/appealInfo/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>

+ 505 - 0
src/main/vue/src/pages/AppealInfos.vue

@@ -0,0 +1,505 @@
+<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:'/appealInfo',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('userId')"
+                                prop="userId"
+                                label="用户id"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('playerInfoId')"
+                                prop="playerInfoId"
+                                label="参赛id"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('competitionId')"
+                                prop="competitionId"
+                                label="赛事id"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('houseId')"
+                                prop="houseId"
+                                label="房间id"
+                                min-width="100">
+                        </el-table-column>
+                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('status')"
+                                prop="status"
+                                label="状态"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('points')"
+                                prop="points"
+                                label="补发积分"
+                                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
+                    label="操作"
+                    align="center"
+                    fixed="right"
+                    min-width="150"
+            >
+                <template slot-scope="scope">
+                                        <el-button @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                    <el-button @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <div class="multiple-mode-wrapper" v-if="0">
+                <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button size="small" @click="operation1">批量操作1</el-button>
+                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div>
+            <el-pagination
+                    background
+                    @size-change="pageSizeChange"
+                    @current-change="currentPageChange"
+                    :current-page="currentPage"
+                    :page-sizes="[10, 20, 30, 40, 50]"
+                    :page-size="pageSize"
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="totalNumber">
+            </el-pagination>
+        </div>
+        <el-dialog title="高级查询" :visible.sync="showAdvancedQueryDialog">
+            <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="advancedQueryFields">
+
+                <el-table-column prop="link" label="链接符" align="center">
+                    <template slot-scope="{row}">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                            <el-option label="AND" value="AND">
+                            </el-option>
+                            <el-option label="OR" value="OR">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.searchMethod">
+                            <el-option v-for="item in searchMethods" :label="item" :value="item"
+                                       :key="item"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="value" label="参数" align="center">
+                    <template slot-scope="{row}">
+                        <el-input v-model="row.value"></el-input>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="advancedQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="排序" :visible.sync="showTableSortDialog">
+            <el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
+            <el-table :data="tableSortFields">
+
+                <el-table-column prop="name" label="字段" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.name">
+
+                            <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
+                                       :key="item.value"></el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="order" label="排序" align="center">
+                    <template slot-scope="{row}">
+                        <el-select v-model="row.order">
+                            <el-option label="降序" value="desc">
+                            </el-option>
+                            <el-option label="升序" value="asc">
+                            </el-option>
+                        </el-select>
+                    </template>
+                </el-table-column>
+                <el-table-column width="60" align="center">
+                    <template slot-scope="{ row, column, $index }">
+                        <el-button @click="removeSortField($index)" size="small" type="text">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+            <span slot="footer" class="dialog-footer">
+
+                <el-button @click="tableSortQuery" :loading="$store.state.fetchingData">确定</el-button>
+            </span>
+        </el-dialog>
+
+        <el-dialog title="查看图片" :visible.sync="imageDialogVisible" size="small">
+            <img width="100%" :src="imgSrc" alt="">
+        </el-dialog>
+
+    </div>
+</template>
+<script>
+    import {mapState} from 'vuex'
+    import {format} from 'date-fns'
+    import zh from 'date-fns/locale/zh_cn'
+
+    export default {
+        name: 'AppealInfos',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                                                                                                                {
+                                label: '用户id',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '参赛id',
+                                value: 'playerInfoId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '赛事id',
+                                value: 'competitionId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '房间id',
+                                value: 'houseId',
+                                show: true
+                            },
+                                                                                                                                            {
+                                label: '状态',
+                                value: 'status',
+                                show: true
+                            },
+                                                                                                {
+                                label: '补发积分',
+                                value: 'points',
+                                show: true
+                            },
+                                                                                                {
+                                label: '创建时间',
+                                value: 'createTime',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                                                                                                                {
+                                label: '用户id',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '参赛id',
+                                value: 'player_info_id'
+                            },
+                                                                                                {
+                                label: '赛事id',
+                                value: 'competition_id'
+                            },
+                                                                                                {
+                                label: '房间id',
+                                value: 'house_id'
+                            },
+                                                                                                                                            {
+                                label: '状态',
+                                value: 'status'
+                            },
+                                                                                                {
+                                label: '补发积分',
+                                value: 'points'
+                            },
+                                                                                                {
+                                label: '创建时间',
+                                value: 'create_time'
+                            },
+                                                            ],
+                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: '/appealInfo/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: '/appealInfo',
+                    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 + "/appealInfo/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: '/appealInfo/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>

+ 440 - 430
src/main/vue/src/router/index.js

@@ -14,438 +14,448 @@ const router = new Router({
             path: '/',
             redirect: 'dashboard'
         },
-        {
-            path: '/404',
-            name: '404',
-            component: () =>
-                import('../pages/404')
-        },
-        {
-            path: '/dashboard',
-            name: 'dashboard',
-            component: () =>
-                import('../pages/Dashboard')
-        },
-        {
-            path: '/users',
-            name: 'users',
-            component: () =>
-                import('../pages/Users')
-        },
-        {
-            path: '/user',
-            name: 'user',
-            component: () =>
-                import('../pages/User')
-        },
-        {
-            path: '/menus',
-            name: 'menus',
-            component: () =>
-                import('../pages/Menus')
-        },
-        {
-            path: '/roles',
-            name: 'roles',
-            component: () =>
-                import('../pages/Roles')
-        },
-        {
-            path: '/role',
-            name: 'role',
-            component: () =>
-                import('../pages/Role')
-        },
-        {
-            path: '/api',
-            name: 'api',
-            component: () =>
-                import('../pages/Api')
-        },
-        {
-            path: '/genCodes',
-            name: 'genCodes',
-            component: () =>
-                import('../pages/GenCodes')
-        },
-        {
-            path: '/genCode',
-            name: 'genCode',
-            component: () =>
-                import('../pages/GenCode')
-        },
-        {
-            path: '/permissions',
-            name: 'permissions',
-            component: () =>
-                import('../pages/Permissions')
-        },
-        {
-            path: '/permission',
-            name: 'permission',
-            component: () =>
-                import('../pages/Permission')
-        },
-        {
-            path: '/departs',
-            name: 'departs',
-            component: () =>
-                import('../pages/Departs')
-        },
-        {
-            path: '/lineChart',
-            name: 'lineChart',
-            component: () =>
-                import('../pages/LineChart')
-        },
-        {
-            path: '/barChart',
-            name: 'barChart',
-            component: () =>
-                import('../pages/BarChart')
-        },
-        {
-            path: '/polarAreaChart',
-            name: 'polarAreaChart',
-            component: () =>
-                import('../pages/PolarAreaChart')
-        },
-        {
-            path: '/pieChart',
-            name: 'pieChart',
-            component: () =>
-                import('../pages/PieChart')
-        },
-        {
-            path: '/radarChart',
-            name: 'radarChart',
-            component: () =>
-                import('../pages/RadarChart')
-        },
-        {
-            path: '/bubbleChart',
-            name: 'bubbleChart',
-            component: () =>
-                import('../pages/BubbleChart')
-        },
-        {
-            path: '/processModels',
-            name: 'processModels',
-            component: () =>
-                import('../pages/ProcessModels')
-        },
-        {
-            path: '/processDefinitions',
-            name: 'processDefinitions',
-            component: () =>
-                import('../pages/ProcessDefinitions')
-        },
-        {
-            path: '/myProcesses',
-            name: 'myProcesses',
-            component: () =>
-                import('../pages/MyProcesses')
-        },
-        {
-            path: '/myTasks',
-            name: 'myTasks',
-            component: () =>
-                import('../pages/MyTasks')
-        },
-        {
-            path: '/completeTaskDynamic',
-            name: 'CompleteTaskDynamic',
-            component: () =>
-                import('../pages/CompleteTaskDynamic')
-        },
-        {
-            path: '/commonQuerys',
-            name: 'commonQuerys',
-            component: () =>
-                import('../pages/CommonQuerys')
-        },
-        {
-            path: '/commonQuery',
-            name: 'commonQuery',
-            component: () =>
-                import('../pages/CommonQuery')
-        },
-        {
-            path: '/commonIframe',
-            name: 'commonIframe',
-            component: () =>
-                import('../pages/CommonIframe')
-        },
-        {
-            path: '/queryConfigs',
-            name: 'queryConfigs',
-            component: () =>
-                import('../pages/QueryConfigs')
-        },
-        {
-            path: '/queryConfig',
-            name: 'queryConfig',
-            component: () =>
-                import('../pages/QueryConfig')
-        },
-        {
-            path: '/dataSourceInfos',
-            name: 'dataSourceInfos',
-            component: () =>
-                import('../pages/DataSourceInfos')
-        },
-        {
-            path: '/dataSourceInfo',
-            name: 'dataSourceInfo',
-            component: () =>
-                import('../pages/DataSourceInfo')
-        },
-        {
-            path: '/deploySystem',
-            name: 'DeploySystem',
-            component: () =>
-                import('../pages/DeploySystem')
-        },
-        {
-            path: '/myCanvas',
-            name: 'MyCanvas',
-            component: () =>
-                import('../pages/MyCanvas')
-        },
-        {
-            path: '/houseInfo',
-            name: 'HouseInfo',
-            component: () => import('../pages/HouseInfo')
-        },
-        {
-            path: '/houseInfos',
-            name: 'HouseInfos',
-            component: () => import('../pages/HouseInfos')
-        },
-        {
-            path: '/houseLevel',
-            name: 'HouseLevel',
-            component: () => import('../pages/HouseLevel')
-        },
-        {
-            path: '/houseLevels',
-            name: 'HouseLevels',
-            component: () => import('../pages/HouseLevels')
-        },
-        {
-            path: '/bannerInfo',
-            name: 'BannerInfo',
-            component: () => import('../pages/BannerInfo')
-        },
-        {
-            path: '/bannerInfos',
-            name: 'BannerInfos',
-            component: () => import('../pages/BannerInfos')
-        },
-        {
-            path: '/gameInfo',
-            name: 'GameInfo',
-            component: () => import('../pages/GameInfo')
-        },
-        {
-            path: '/gameInfos',
-            name: 'GameInfos',
-            component: () => import('../pages/GameInfos')
-        },
-        {
-            path: '/playerInfo',
-            name: 'PlayerInfo',
-            component: () => import('../pages/PlayerInfo')
-        },
-        {
-            path: '/playerInfos',
-            name: 'PlayerInfos',
-            component: () => import('../pages/PlayerInfos')
-        },
-        {
-            path: '/productInfos',
-            name: 'ProductInfos',
-            component: () => import('../pages/ProductInfos')
-        },
-        {
-            path: '/productInfo',
-            name: 'ProductInfo',
-            component: () => import('../pages/ProductInfo')
-        },
-        {
-            path: '/memberCoin',
-            name: 'MemberCoin',
-            component: () => import('../pages/MemberCoin')
-        },
-        {
-            path: '/memberCoinSong',
-            name: 'MemberCoinSong',
-            component: () => import('../pages/MemberCoinSong')
-        },
-        {
-            path: '/memberTicketSong',
-            name: 'MemberTicketSong',
-            component: () => import('../pages/MemberTicketSong')
-        },
-        {
-            path: '/memberHouseCardSong',                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
-            name: 'MemberHouseCardSong',
-            component: () => import('../pages/MemberHouseCardSong')
-        },
-        {
-            path: '/memberCoins',
-            name: 'MemberCoins',
-            component: () => import('../pages/MemberCoins')
-        },
-        {
-            path: '/platformIncomeRecord',
-            name: 'PlatformIncomeRecord',
-            component: () => import('../pages/PlatformIncomeRecord')
-        },
-        {
-            path: '/platformIncomeRecords',
-            name: 'PlatformIncomeRecords',
-            component: () => import('../pages/PlatformIncomeRecords')
-        },
-        {
-            path: '/systemNotice',
-            name: 'SystemNotice',
-            component: () => import('../pages/SystemNotice')
-        },
-        {
-            path: '/systemNotices',
-            name: 'SystemNotices',
-            component: () => import('../pages/SystemNotices')
-        },
-        {
-            path: '/rechargeRecord',
-            name: 'RechargeRecord',
-            component: () => import('../pages/RechargeRecord')
-        },
-        {
-            path: '/rechargeRecords',
-            name: 'RechargeRecords',
-            component: () => import('../pages/RechargeRecords')
-        },
-        {
-            path: '/memberCoinTixian',
-            name: 'MemberCoinTixian',
-            component: () => import('../pages/MemberCoinTixian')
-        },
-        {
-            path: '/memberCoinTixians',
-            name: 'MemberCoinTixians',
-            component: () => import('../pages/MemberCoinTixians')
-        },
-        {
-            path: '/competitionSeason',
-            name: 'CompetitionSeason',
-            component: () => import('../pages/CompetitionSeason')
-        },
-        {
-            path: '/competitionSeasons',
-            name: 'CompetitionSeasons',
-            component: () => import('../pages/CompetitionSeasons')
-        },
-        {
-            path: '/bonusRecord',
-            name: 'BonusRecord',
-            component: () => import('../pages/BonusRecord')
-        },
-        {
-            path: '/bonusRecords',
-            name: 'BonusRecords',
-            component: () => import('../pages/BonusRecords')
-        },
-        {
-            path: '/videoTest',
-            name: 'VideoTest',
-            component: () => import('../pages/VideoTest')
-        },
-        {
-            path: '/bindGame',
-            name: 'BindGame',
-            component: () => import('../pages/BindGame')
-        },
-        {
-            path: '/bindGames',
-            name: 'BindGames',
-            component: () => import('../pages/BindGames')
-        },
-        {
-            path: '/systemVariable',
-            name: 'SystemVariable',
-            component: () => import('../pages/SystemVariable')
-        },
-        {
-            path: '/systemVariables',
-            name: 'SystemVariables',
-            component: () => import('../pages/SystemVariables')
-        },
-        {
-            path: '/alertMessage',
-            name: 'AlertMessage',
-            component: () => import('../pages/AlertMessage')
-        },
-        {
-            path: '/alertMessages',
-            name: 'AlertMessages',
-            component: () => import('../pages/AlertMessages')
-        },
-        {
-            path: '/userLevel',
-            name: 'UserLevel',
-            component: () => import('../pages/UserLevel')
-        },
-        {
-            path: '/userLevels',
-            name: 'UserLevels',
-            component: () => import('../pages/UserLevels')
-        },
-        {
-            path: '/memberHouseCard',
-            name: 'MemberHouseCard',
-            component: () => import('../pages/MemberHouseCard')
-        },
-        {
-            path: '/memberHouseCards',
-            name: 'MemberHouseCards',
-            component: () => import('../pages/MemberHouseCards')
-        },
-        {
-            path: '/userTeam',
-            name: 'UserTeam',
-            component: () => import('../pages/UserTeam')
-        },
-        {
-            path: '/recommenderLog',
-            name: 'RecommenderLog',
-            component: () => import('../pages/RecommenderLog')
-        },
-        {
-            path: '/recommenderLogs',
-            name: 'RecommenderLogs',
-            component: () => import('../pages/RecommenderLogs')
-        },
-        {
-            path: '/memberTicket',
-            name: 'MemberTicket',
-            component: () => import('../pages/MemberTicket')
-        },
-        {
-            path: '/memberTickets',
-            name: 'MemberTickets',
-            component: () => import('../pages/MemberTickets')
-        }
+            {
+                path: '/404',
+                name: '404',
+                component: () =>
+                    import('../pages/404')
+            },
+            {
+                path: '/dashboard',
+                name: 'dashboard',
+                component: () =>
+                    import('../pages/Dashboard')
+            },
+            {
+                path: '/users',
+                name: 'users',
+                component: () =>
+                    import('../pages/Users')
+            },
+            {
+                path: '/user',
+                name: 'user',
+                component: () =>
+                    import('../pages/User')
+            },
+            {
+                path: '/menus',
+                name: 'menus',
+                component: () =>
+                    import('../pages/Menus')
+            },
+            {
+                path: '/roles',
+                name: 'roles',
+                component: () =>
+                    import('../pages/Roles')
+            },
+            {
+                path: '/role',
+                name: 'role',
+                component: () =>
+                    import('../pages/Role')
+            },
+            {
+                path: '/api',
+                name: 'api',
+                component: () =>
+                    import('../pages/Api')
+            },
+            {
+                path: '/genCodes',
+                name: 'genCodes',
+                component: () =>
+                    import('../pages/GenCodes')
+            },
+            {
+                path: '/genCode',
+                name: 'genCode',
+                component: () =>
+                    import('../pages/GenCode')
+            },
+            {
+                path: '/permissions',
+                name: 'permissions',
+                component: () =>
+                    import('../pages/Permissions')
+            },
+            {
+                path: '/permission',
+                name: 'permission',
+                component: () =>
+                    import('../pages/Permission')
+            },
+            {
+                path: '/departs',
+                name: 'departs',
+                component: () =>
+                    import('../pages/Departs')
+            },
+            {
+                path: '/lineChart',
+                name: 'lineChart',
+                component: () =>
+                    import('../pages/LineChart')
+            },
+            {
+                path: '/barChart',
+                name: 'barChart',
+                component: () =>
+                    import('../pages/BarChart')
+            },
+            {
+                path: '/polarAreaChart',
+                name: 'polarAreaChart',
+                component: () =>
+                    import('../pages/PolarAreaChart')
+            },
+            {
+                path: '/pieChart',
+                name: 'pieChart',
+                component: () =>
+                    import('../pages/PieChart')
+            },
+            {
+                path: '/radarChart',
+                name: 'radarChart',
+                component: () =>
+                    import('../pages/RadarChart')
+            },
+            {
+                path: '/bubbleChart',
+                name: 'bubbleChart',
+                component: () =>
+                    import('../pages/BubbleChart')
+            },
+            {
+                path: '/processModels',
+                name: 'processModels',
+                component: () =>
+                    import('../pages/ProcessModels')
+            },
+            {
+                path: '/processDefinitions',
+                name: 'processDefinitions',
+                component: () =>
+                    import('../pages/ProcessDefinitions')
+            },
+            {
+                path: '/myProcesses',
+                name: 'myProcesses',
+                component: () =>
+                    import('../pages/MyProcesses')
+            },
+            {
+                path: '/myTasks',
+                name: 'myTasks',
+                component: () =>
+                    import('../pages/MyTasks')
+            },
+            {
+                path: '/completeTaskDynamic',
+                name: 'CompleteTaskDynamic',
+                component: () =>
+                    import('../pages/CompleteTaskDynamic')
+            },
+            {
+                path: '/commonQuerys',
+                name: 'commonQuerys',
+                component: () =>
+                    import('../pages/CommonQuerys')
+            },
+            {
+                path: '/commonQuery',
+                name: 'commonQuery',
+                component: () =>
+                    import('../pages/CommonQuery')
+            },
+            {
+                path: '/commonIframe',
+                name: 'commonIframe',
+                component: () =>
+                    import('../pages/CommonIframe')
+            },
+            {
+                path: '/queryConfigs',
+                name: 'queryConfigs',
+                component: () =>
+                    import('../pages/QueryConfigs')
+            },
+            {
+                path: '/queryConfig',
+                name: 'queryConfig',
+                component: () =>
+                    import('../pages/QueryConfig')
+            },
+            {
+                path: '/dataSourceInfos',
+                name: 'dataSourceInfos',
+                component: () =>
+                    import('../pages/DataSourceInfos')
+            },
+            {
+                path: '/dataSourceInfo',
+                name: 'dataSourceInfo',
+                component: () =>
+                    import('../pages/DataSourceInfo')
+            },
+            {
+                path: '/deploySystem',
+                name: 'DeploySystem',
+                component: () =>
+                    import('../pages/DeploySystem')
+            },
+            {
+                path: '/myCanvas',
+                name: 'MyCanvas',
+                component: () =>
+                    import('../pages/MyCanvas')
+            },
+            {
+                path: '/houseInfo',
+                name: 'HouseInfo',
+                component: () => import('../pages/HouseInfo')
+            },
+            {
+                path: '/houseInfos',
+                name: 'HouseInfos',
+                component: () => import('../pages/HouseInfos')
+            },
+            {
+                path: '/houseLevel',
+                name: 'HouseLevel',
+                component: () => import('../pages/HouseLevel')
+            },
+            {
+                path: '/houseLevels',
+                name: 'HouseLevels',
+                component: () => import('../pages/HouseLevels')
+            },
+            {
+                path: '/bannerInfo',
+                name: 'BannerInfo',
+                component: () => import('../pages/BannerInfo')
+            },
+            {
+                path: '/bannerInfos',
+                name: 'BannerInfos',
+                component: () => import('../pages/BannerInfos')
+            },
+            {
+                path: '/gameInfo',
+                name: 'GameInfo',
+                component: () => import('../pages/GameInfo')
+            },
+            {
+                path: '/gameInfos',
+                name: 'GameInfos',
+                component: () => import('../pages/GameInfos')
+            },
+            {
+                path: '/playerInfo',
+                name: 'PlayerInfo',
+                component: () => import('../pages/PlayerInfo')
+            },
+            {
+                path: '/playerInfos',
+                name: 'PlayerInfos',
+                component: () => import('../pages/PlayerInfos')
+            },
+            {
+                path: '/productInfos',
+                name: 'ProductInfos',
+                component: () => import('../pages/ProductInfos')
+            },
+            {
+                path: '/productInfo',
+                name: 'ProductInfo',
+                component: () => import('../pages/ProductInfo')
+            },
+            {
+                path: '/memberCoin',
+                name: 'MemberCoin',
+                component: () => import('../pages/MemberCoin')
+            },
+            {
+                path: '/memberCoinSong',
+                name: 'MemberCoinSong',
+                component: () => import('../pages/MemberCoinSong')
+            },
+            {
+                path: '/memberTicketSong',
+                name: 'MemberTicketSong',
+                component: () => import('../pages/MemberTicketSong')
+            },
+            {
+                path: '/memberHouseCardSong',
+                name: 'MemberHouseCardSong',
+                component: () => import('../pages/MemberHouseCardSong')
+            },
+            {
+                path: '/memberCoins',
+                name: 'MemberCoins',
+                component: () => import('../pages/MemberCoins')
+            },
+            {
+                path: '/platformIncomeRecord',
+                name: 'PlatformIncomeRecord',
+                component: () => import('../pages/PlatformIncomeRecord')
+            },
+            {
+                path: '/platformIncomeRecords',
+                name: 'PlatformIncomeRecords',
+                component: () => import('../pages/PlatformIncomeRecords')
+            },
+            {
+                path: '/systemNotice',
+                name: 'SystemNotice',
+                component: () => import('../pages/SystemNotice')
+            },
+            {
+                path: '/systemNotices',
+                name: 'SystemNotices',
+                component: () => import('../pages/SystemNotices')
+            },
+            {
+                path: '/rechargeRecord',
+                name: 'RechargeRecord',
+                component: () => import('../pages/RechargeRecord')
+            },
+            {
+                path: '/rechargeRecords',
+                name: 'RechargeRecords',
+                component: () => import('../pages/RechargeRecords')
+            },
+            {
+                path: '/memberCoinTixian',
+                name: 'MemberCoinTixian',
+                component: () => import('../pages/MemberCoinTixian')
+            },
+            {
+                path: '/memberCoinTixians',
+                name: 'MemberCoinTixians',
+                component: () => import('../pages/MemberCoinTixians')
+            },
+            {
+                path: '/competitionSeason',
+                name: 'CompetitionSeason',
+                component: () => import('../pages/CompetitionSeason')
+            },
+            {
+                path: '/competitionSeasons',
+                name: 'CompetitionSeasons',
+                component: () => import('../pages/CompetitionSeasons')
+            },
+            {
+                path: '/bonusRecord',
+                name: 'BonusRecord',
+                component: () => import('../pages/BonusRecord')
+            },
+            {
+                path: '/bonusRecords',
+                name: 'BonusRecords',
+                component: () => import('../pages/BonusRecords')
+            },
+            {
+                path: '/videoTest',
+                name: 'VideoTest',
+                component: () => import('../pages/VideoTest')
+            },
+            {
+                path: '/bindGame',
+                name: 'BindGame',
+                component: () => import('../pages/BindGame')
+            },
+            {
+                path: '/bindGames',
+                name: 'BindGames',
+                component: () => import('../pages/BindGames')
+            },
+            {
+                path: '/systemVariable',
+                name: 'SystemVariable',
+                component: () => import('../pages/SystemVariable')
+            },
+            {
+                path: '/systemVariables',
+                name: 'SystemVariables',
+                component: () => import('../pages/SystemVariables')
+            },
+            {
+                path: '/alertMessage',
+                name: 'AlertMessage',
+                component: () => import('../pages/AlertMessage')
+            },
+            {
+                path: '/alertMessages',
+                name: 'AlertMessages',
+                component: () => import('../pages/AlertMessages')
+            },
+            {
+                path: '/userLevel',
+                name: 'UserLevel',
+                component: () => import('../pages/UserLevel')
+            },
+            {
+                path: '/userLevels',
+                name: 'UserLevels',
+                component: () => import('../pages/UserLevels')
+            },
+            {
+                path: '/memberHouseCard',
+                name: 'MemberHouseCard',
+                component: () => import('../pages/MemberHouseCard')
+            },
+            {
+                path: '/memberHouseCards',
+                name: 'MemberHouseCards',
+                component: () => import('../pages/MemberHouseCards')
+            },
+            {
+                path: '/userTeam',
+                name: 'UserTeam',
+                component: () => import('../pages/UserTeam')
+            },
+            {
+                path: '/recommenderLog',
+                name: 'RecommenderLog',
+                component: () => import('../pages/RecommenderLog')
+            },
+            {
+                path: '/recommenderLogs',
+                name: 'RecommenderLogs',
+                component: () => import('../pages/RecommenderLogs')
+            },
+            {
+                path: '/memberTicket',
+                name: 'MemberTicket',
+                component: () => import('../pages/MemberTicket')
+            },
+            {
+                path: '/memberTickets',
+                name: 'MemberTickets',
+                component: () => import('../pages/MemberTickets')
+            },
+            {
+                path: '/appealInfo',
+                name: 'AppealInfo',
+                component: () => import('../pages/AppealInfo')
+            },
+            {
+                path: '/appealInfos',
+                name: 'AppealInfos',
+                component: () => import('../pages/AppealInfos')
+            }
             /**INSERT_LOCATION**/
         ]
     },
-    {
-        path: '/login',
-        name: 'login',
-        component: () =>
-            import('../pages/Login')
-    }
+        {
+            path: '/login',
+            name: 'login',
+            component: () =>
+                import('../pages/Login')
+        }
     ]
 });
 router.beforeEach((to, from, next) => {
@@ -490,4 +500,4 @@ router.afterEach((to, from) => {
     window.onresize();
 });
 
-export default router;
+export default router;