Sfoglia il codice sorgente

20190603金币改奖牌

suochencheng 7 anni fa
parent
commit
22ae180432

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

@@ -496,5 +496,52 @@ public interface AppConstant {
 
 
     }
     }
 
 
+    /**
+     * 奖牌
+     */
+    public interface Medals {
+        /**
+         * 金牌
+         */
+        String GOLD = "gold";
+
+        /**
+         * 金牌积分
+         */
+        Integer GOLD_SCORE = 10;
+
+        /**
+         * 银牌
+         */
+        String SILVER = "silver";
+
+        /**
+         * 银牌积分
+         */
+        Integer SILVER_SCORE = 5;
+
+        /**
+         * 铜牌
+         */
+        String BRONZE = "bronze";
+
+        /**
+         * 铜牌积分
+         */
+        Integer BRONZE_SCORE = 2;
+
+        /**
+         * 白金牌
+         */
+        String PLATINUM = "platinum";
+
+        /**
+         * 白金牌积分
+         */
+        Integer PLATINUM_SCORE = 15;
+
+
+    }
+
 
 
 }
 }

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

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

+ 487 - 0
src/main/java/com/izouma/awesomeadmin/dao/MemberTicketMapper.xml

@@ -0,0 +1,487 @@
+<?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.MemberTicketMapper">
+    <resultMap id="BaseResultMap" type="com.izouma.awesomeadmin.model.MemberTicket">
+        <!--generatedStart-->
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="del_flag" property="delFlag" jdbcType="CHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="game_id" property="gameId" jdbcType="INTEGER"/>
+        <result column="house_id" property="houseId" jdbcType="INTEGER"/>
+        <result column="user_id" property="userId" jdbcType="INTEGER"/>
+        <result column="remark" property="remark" jdbcType="VARCHAR"/>
+        <result column="type_flag" property="typeFlag" jdbcType="INTEGER"/>
+        <result column="money" property="money" jdbcType="DECIMAL"/>
+        <result column="balance" property="balance" jdbcType="DECIMAL"/>
+        <result column="season_id" property="seasonId" jdbcType="INTEGER"/>
+        <result column="player_id" property="playerId" jdbcType="INTEGER"/>
+        <!--generatedEnd-->
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        <!--generatedStart-->
+        id, del_flag, update_time, update_user, create_time, create_user, game_id, house_id, user_id, remark, type_flag, money, balance, season_id, player_id        <!--generatedEnd-->
+    </sql>
+
+    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM member_ticket
+        WHERE id = #{id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        DELETE
+        FROM member_ticket
+        WHERE id = #{id,jdbcType=INTEGER}
+    </delete>
+
+    <insert id="insertSelective" parameterType="com.izouma.awesomeadmin.model.MemberTicket" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO member_ticket
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id!= null">
+                id,
+            </if>
+            <if test="delFlag!= null">
+                del_flag,
+            </if>
+            <if test="updateTime!= null">
+                update_time,
+            </if>
+            <if test="updateUser!= null">
+                update_user,
+            </if>
+            <if test="createTime!= null">
+                create_time,
+            </if>
+            <if test="createUser!= null">
+                create_user,
+            </if>
+            <if test="gameId!= null">
+                game_id,
+            </if>
+            <if test="houseId!= null">
+                house_id,
+            </if>
+            <if test="userId!= null">
+                user_id,
+            </if>
+            <if test="remark!= null">
+                remark,
+            </if>
+            <if test="typeFlag!= null">
+                type_flag,
+            </if>
+            <if test="money!= null">
+                money,
+            </if>
+            <if test="balance!= null">
+                balance,
+            </if>
+            <if test="seasonId!= null">
+                season_id,
+            </if>
+            <if test="playerId!= null">
+                player_id,
+            </if>
+            <!--generatedEnd-->
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <!--generatedStart-->
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="gameId != null">
+                #{gameId,jdbcType=INTEGER},
+            </if>
+            <if test="houseId != null">
+                #{houseId,jdbcType=INTEGER},
+            </if>
+            <if test="userId != null">
+                #{userId,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="money != null">
+                #{money,jdbcType=DECIMAL},
+            </if>
+            <if test="balance != null">
+                #{balance,jdbcType=DECIMAL},
+            </if>
+            <if test="seasonId != null">
+                #{seasonId,jdbcType=INTEGER},
+            </if>
+            <if test="playerId != null">
+                #{playerId,jdbcType=INTEGER},
+            </if>
+            <!--generatedEnd-->
+        </trim>
+    </insert>
+
+    <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.MemberTicket">
+        UPDATE member_ticket
+        <set>
+            <!--generatedStart-->
+            <if test="id != null">
+                id= #{id,jdbcType=INTEGER},
+            </if>
+            <if test="delFlag != null">
+                del_flag= #{delFlag,jdbcType=CHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time= #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user= #{updateUser,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                create_time= #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                create_user= #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="gameId != null">
+                game_id= #{gameId,jdbcType=INTEGER},
+            </if>
+            <if test="houseId != null">
+                house_id= #{houseId,jdbcType=INTEGER},
+            </if>
+            <if test="userId != null">
+                user_id= #{userId,jdbcType=INTEGER},
+            </if>
+            <if test="remark != null">
+                remark= #{remark,jdbcType=VARCHAR},
+            </if>
+            <if test="typeFlag != null">
+                type_flag= #{typeFlag,jdbcType=INTEGER},
+            </if>
+            <if test="money != null">
+                money= #{money,jdbcType=DECIMAL},
+            </if>
+            <if test="balance != null">
+                balance= #{balance,jdbcType=DECIMAL},
+            </if>
+            <if test="seasonId != null">
+                season_id= #{seasonId,jdbcType=INTEGER},
+            </if>
+            <if test="playerId != null">
+                player_id= #{playerId,jdbcType=INTEGER},
+            </if>
+            <!--generatedEnd-->
+        </set>
+        WHERE
+        <if test="id != null and !&quot;&quot;.equals(id)">
+            id = #{id,jdbcType=INTEGER}
+        </if>
+        <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+            id IN (${idStr})
+        </if>
+    </update>
+
+    <select id="queryMemberTicketByPage" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MemberTicket">
+        SELECT <include refid="Base_Column_List"/> FROM member_ticket
+        <where>
+            AND del_flag = 'N'
+            <if test="record.idStr != null and !&quot;&quot;.equals(record.idStr)">
+                AND id IN (${record.idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="record.id != null and !&quot;&quot;.equals(record.id)">
+                AND id = #{record.id}
+            </if>
+            <if test="record.delFlag != null and !&quot;&quot;.equals(record.delFlag)">
+                AND del_flag = #{record.delFlag}
+            </if>
+            <if test="record.updateTime != null and !&quot;&quot;.equals(record.updateTime)">
+                AND update_time = #{record.updateTime}
+            </if>
+            <if test="record.updateUser != null and !&quot;&quot;.equals(record.updateUser)">
+                AND update_user = #{record.updateUser}
+            </if>
+            <if test="record.createTime != null and !&quot;&quot;.equals(record.createTime)">
+                AND create_time = #{record.createTime}
+            </if>
+            <if test="record.createUser != null and !&quot;&quot;.equals(record.createUser)">
+                AND create_user = #{record.createUser}
+            </if>
+            <if test="record.gameId != null and !&quot;&quot;.equals(record.gameId)">
+                AND game_id = #{record.gameId}
+            </if>
+            <if test="record.houseId != null and !&quot;&quot;.equals(record.houseId)">
+                AND house_id = #{record.houseId}
+            </if>
+            <if test="record.userId != null and !&quot;&quot;.equals(record.userId)">
+                AND user_id = #{record.userId}
+            </if>
+            <if test="record.remark != null and !&quot;&quot;.equals(record.remark)">
+                AND remark = #{record.remark}
+            </if>
+            <if test="record.typeFlag != null and !&quot;&quot;.equals(record.typeFlag)">
+                AND type_flag = #{record.typeFlag}
+            </if>
+            <if test="record.money != null and !&quot;&quot;.equals(record.money)">
+                AND money = #{record.money}
+            </if>
+            <if test="record.balance != null and !&quot;&quot;.equals(record.balance)">
+                AND balance = #{record.balance}
+            </if>
+            <if test="record.seasonId != null and !&quot;&quot;.equals(record.seasonId)">
+                AND season_id = #{record.seasonId}
+            </if>
+            <if test="record.playerId != null and !&quot;&quot;.equals(record.playerId)">
+                AND player_id = #{record.playerId}
+            </if>
+            <!--generatedEnd-->
+            <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR remark LIKE concat('%',#{record.searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+
+            <if test="record.advancedQuery != null and !&quot;&quot;.equals(record.advancedQuery)">
+                <foreach item="item" index="index" collection="record.advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="record.orderByStr != null and !&quot;&quot;.equals(record.orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="record.orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryAllMemberTicket" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MemberTicket">
+        SELECT <include refid="Base_Column_List"/> FROM member_ticket
+        <where>
+            AND del_flag = 'N'
+            <if test="idStr != null and !&quot;&quot;.equals(idStr)">
+                AND id IN (${idStr})
+            </if>
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="gameId != null and !&quot;&quot;.equals(gameId)">
+                AND game_id = #{gameId}
+            </if>
+            <if test="houseId != null and !&quot;&quot;.equals(houseId)">
+                AND house_id = #{houseId}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="money != null and !&quot;&quot;.equals(money)">
+                AND money = #{money}
+            </if>
+            <if test="balance != null and !&quot;&quot;.equals(balance)">
+                AND balance = #{balance}
+            </if>
+            <if test="seasonId != null and !&quot;&quot;.equals(seasonId)">
+                AND season_id = #{seasonId}
+            </if>
+            <if test="playerId != null and !&quot;&quot;.equals(playerId)">
+                AND player_id = #{playerId}
+            </if>
+            <!--generatedEnd-->
+            <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
+                <trim prefix="and (" suffix=")" prefixOverrides="OR">
+                    <!--generatedStart-->
+                    OR remark LIKE concat('%',#{searchKey},'%')
+                    <!--generatedEnd-->
+                </trim>
+            </if>
+            <if test="advancedQuery != null and !&quot;&quot;.equals(advancedQuery)">
+                <foreach item="item" index="index" collection="advancedQuery.split('_;')">
+                    <choose>
+                        <when test="item.indexOf('like') != -1">
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    concat('%',#{itemDetail},'%')
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </when>
+                        <otherwise>
+                            <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                                <if test="detailIndex == 3">
+                                    #{itemDetail}
+                                </if>
+                                <if test="detailIndex &lt; 3">
+                                    ${itemDetail}
+                                </if>
+                            </foreach>
+                        </otherwise>
+                    </choose>
+                </foreach>
+            </if>
+        </where>
+        ORDER BY
+        <if test="orderByStr != null and !&quot;&quot;.equals(orderByStr)">
+            <trim suffixOverrides=",">
+                <foreach item="item" index="index" separator="," collection="orderByStr.split('_;')">
+                    <foreach item="itemDetail" index="detailIndex" collection="item.split('_,')">
+                        ${itemDetail}
+                    </foreach>
+                </foreach>
+            </trim>
+            ,
+        </if>
+        id DESC
+    </select>
+
+    <select id="queryMemberTicket" parameterType="java.util.Map" resultType="com.izouma.awesomeadmin.model.MemberTicket">
+        SELECT <include refid="Base_Column_List"/> FROM member_ticket
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <if test="id != null and !&quot;&quot;.equals(id)">
+                AND id = #{id}
+            </if>
+            <if test="delFlag != null and !&quot;&quot;.equals(delFlag)">
+                AND del_flag = #{delFlag}
+            </if>
+            <if test="updateTime != null and !&quot;&quot;.equals(updateTime)">
+                AND update_time = #{updateTime}
+            </if>
+            <if test="updateUser != null and !&quot;&quot;.equals(updateUser)">
+                AND update_user = #{updateUser}
+            </if>
+            <if test="createTime != null and !&quot;&quot;.equals(createTime)">
+                AND create_time = #{createTime}
+            </if>
+            <if test="createUser != null and !&quot;&quot;.equals(createUser)">
+                AND create_user = #{createUser}
+            </if>
+            <if test="gameId != null and !&quot;&quot;.equals(gameId)">
+                AND game_id = #{gameId}
+            </if>
+            <if test="houseId != null and !&quot;&quot;.equals(houseId)">
+                AND house_id = #{houseId}
+            </if>
+            <if test="userId != null and !&quot;&quot;.equals(userId)">
+                AND user_id = #{userId}
+            </if>
+            <if test="remark != null and !&quot;&quot;.equals(remark)">
+                AND remark = #{remark}
+            </if>
+            <if test="typeFlag != null and !&quot;&quot;.equals(typeFlag)">
+                AND type_flag = #{typeFlag}
+            </if>
+            <if test="money != null and !&quot;&quot;.equals(money)">
+                AND money = #{money}
+            </if>
+            <if test="balance != null and !&quot;&quot;.equals(balance)">
+                AND balance = #{balance}
+            </if>
+            <if test="seasonId != null and !&quot;&quot;.equals(seasonId)">
+                AND season_id = #{seasonId}
+            </if>
+            <if test="playerId != null and !&quot;&quot;.equals(playerId)">
+                AND player_id = #{playerId}
+            </if>
+            <!--generatedEnd-->
+        </where>
+        LIMIT 1
+    </select>
+
+    <update id="delete">
+        UPDATE member_ticket 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.MemberTicket">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM member_ticket
+        <where>
+            AND del_flag = 'N'
+            <!--generatedStart-->
+            <!--generatedEnd-->
+        </where>
+        ORDER BY id DESC
+    </select>
+</mapper>
+

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

@@ -30,6 +30,7 @@
         <result column="season_id" property="seasonId" jdbcType="INTEGER"/>
         <result column="season_id" property="seasonId" jdbcType="INTEGER"/>
         <result column="house_rank" property="houseRank" jdbcType="INTEGER"/>
         <result column="house_rank" property="houseRank" jdbcType="INTEGER"/>
         <result column="score" property="score" jdbcType="FLOAT"/>
         <result column="score" property="score" jdbcType="FLOAT"/>
+        <result column="medal" property="medal" jdbcType="VARCHAR"/>
     </resultMap>
     </resultMap>
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
         <trim suffixOverrides=",">
         <trim suffixOverrides=",">
@@ -89,6 +90,8 @@
 
 
             score,
             score,
 
 
+            medal,
+
         </trim>
         </trim>
     </sql>
     </sql>
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
@@ -189,6 +192,9 @@
             <if test="score!= null">
             <if test="score!= null">
                 score,
                 score,
             </if>
             </if>
+            <if test="medal!= null">
+                medal,
+            </if>
         </trim>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">
             <if test="id != null">
@@ -275,6 +281,9 @@
             <if test="score != null">
             <if test="score != null">
                 #{score,jdbcType=FLOAT},
                 #{score,jdbcType=FLOAT},
             </if>
             </if>
+            <if test="medal != null">
+                #{medal},
+            </if>
         </trim>
         </trim>
     </insert>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.PlayerInfo">
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.PlayerInfo">
@@ -364,6 +373,9 @@
             <if test="score != null">
             <if test="score != null">
                 score= #{score,jdbcType=INTEGER},
                 score= #{score,jdbcType=INTEGER},
             </if>
             </if>
+            <if test="medal != null">
+                medal= #{medal},
+            </if>
         </set>
         </set>
         where
         where
         <if test="id != null and !&quot;&quot;.equals(id)">
         <if test="id != null and !&quot;&quot;.equals(id)">
@@ -463,6 +475,9 @@
             <if test="record.seasonId != null and !&quot;&quot;.equals(record.seasonId)">
             <if test="record.seasonId != null and !&quot;&quot;.equals(record.seasonId)">
                 and season_id = #{record.seasonId}
                 and season_id = #{record.seasonId}
             </if>
             </if>
+            <if test="record.medal != null and !&quot;&quot;.equals(record.medal)">
+                and medal = #{record.medal}
+            </if>
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR game_id LIKE concat('%',#{record.searchKey},'%')
                     OR game_id LIKE concat('%',#{record.searchKey},'%')
@@ -628,6 +643,9 @@
             <if test="record.seasonId != null and !&quot;&quot;.equals(record.seasonId)">
             <if test="record.seasonId != null and !&quot;&quot;.equals(record.seasonId)">
                 and season_id = #{record.seasonId}
                 and season_id = #{record.seasonId}
             </if>
             </if>
+            <if test="record.medal != null and !&quot;&quot;.equals(record.medal)">
+                and medal = #{record.medal}
+            </if>
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR game_id LIKE concat('%',#{record.searchKey},'%')
                     OR game_id LIKE concat('%',#{record.searchKey},'%')
@@ -807,6 +825,10 @@
                 and season_id = #{record.seasonId}
                 and season_id = #{record.seasonId}
             </if>
             </if>
 
 
+            <if test="record.medal != null and !&quot;&quot;.equals(record.medal)">
+                and medal = #{record.medal}
+            </if>
+
         </where>
         </where>
         GROUP BY
         GROUP BY
         game_id,
         game_id,
@@ -968,6 +990,11 @@
             <if test="seasonId != null and !&quot;&quot;.equals(seasonId)">
             <if test="seasonId != null and !&quot;&quot;.equals(seasonId)">
                 and season_id = #{seasonId}
                 and season_id = #{seasonId}
             </if>
             </if>
+
+            <if test="medal != null and !&quot;&quot;.equals(medal)">
+                and medal = #{medal}
+            </if>
+
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR game_id LIKE concat('%',#{searchKey},'%')
                     OR game_id LIKE concat('%',#{searchKey},'%')
@@ -1129,6 +1156,10 @@
                 and season_id = #{seasonId}
                 and season_id = #{seasonId}
             </if>
             </if>
 
 
+            <if test="medal != null and !&quot;&quot;.equals(medal)">
+                and medal = #{medal}
+            </if>
+
         </where>
         </where>
         LIMIT 1
         LIMIT 1
     </select>
     </select>
@@ -1256,6 +1287,10 @@
                 and user_rank.season_id = #{seasonId}
                 and user_rank.season_id = #{seasonId}
             </if>
             </if>
 
 
+            <if test="medal != null and !&quot;&quot;.equals(medal)">
+                and user_rank.medal = #{medal}
+            </if>
+
         </where>
         </where>
     </select>
     </select>
     <select id="endNum" parameterType="java.util.Map" resultType="java.lang.Integer">
     <select id="endNum" parameterType="java.util.Map" resultType="java.lang.Integer">

+ 28 - 1
src/main/java/com/izouma/awesomeadmin/dao/UserInfoMapper.xml

@@ -37,6 +37,7 @@
         <result column="level_id" property="levelId" jdbcType="INTEGER"/>
         <result column="level_id" property="levelId" jdbcType="INTEGER"/>
         <result column="house_card" property="houseCard" jdbcType="INTEGER"/>
         <result column="house_card" property="houseCard" jdbcType="INTEGER"/>
         <result column="recommender" property="recommender" jdbcType="INTEGER"/>
         <result column="recommender" property="recommender" jdbcType="INTEGER"/>
+        <result column="money_ticket" property="moneyTicket" jdbcType="INTEGER"/>
 
 
         <association property="departId" javaType="string" column="id"
         <association property="departId" javaType="string" column="id"
                      select="com.izouma.awesomeadmin.dao.DepartInfoMapper.getUserDepartId"/>
                      select="com.izouma.awesomeadmin.dao.DepartInfoMapper.getUserDepartId"/>
@@ -80,6 +81,7 @@
         <result column="level_id" property="levelId" jdbcType="INTEGER"/>
         <result column="level_id" property="levelId" jdbcType="INTEGER"/>
         <result column="house_card" property="houseCard" jdbcType="INTEGER"/>
         <result column="house_card" property="houseCard" jdbcType="INTEGER"/>
         <result column="recommender" property="recommender" jdbcType="INTEGER"/>
         <result column="recommender" property="recommender" jdbcType="INTEGER"/>
+        <result column="money_ticket" property="moneyTicket" jdbcType="INTEGER"/>
     </resultMap>
     </resultMap>
 
 
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
@@ -87,7 +89,7 @@
         country, province, city, district, create_time, del_flag, money_coin, money_point,
         country, province, city, district, create_time, del_flag, money_coin, money_point,
         contacter, contact_phone, company_name, company_type, admin_flag, cash_pledge,
         contacter, contact_phone, company_name, company_type, admin_flag, cash_pledge,
         approve_flag, store_flag, company_flag, approve_step, notice_flag, remind_flag,
         approve_flag, store_flag, company_flag, approve_step, notice_flag, remind_flag,
-        create_flag, level_id, house_card, recommender
+        create_flag, level_id, house_card, recommender, money_ticket
     </sql>
     </sql>
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
     <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
         select
         select
@@ -212,6 +214,9 @@
             <if test="recommender != null">
             <if test="recommender != null">
                 recommender,
                 recommender,
             </if>
             </if>
+            <if test="moneyTicket != null">
+                money_ticket,
+            </if>
         </trim>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">
             <if test="id != null">
@@ -322,6 +327,9 @@
             <if test="recommender != null">
             <if test="recommender != null">
                 #{recommender},
                 #{recommender},
             </if>
             </if>
+            <if test="moneyTicket != null">
+                #{moneyTicket},
+            </if>
         </trim>
         </trim>
     </insert>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.UserInfo">
     <update id="updateByPrimaryKeySelective" parameterType="com.izouma.awesomeadmin.model.UserInfo">
@@ -432,6 +440,9 @@
             <if test="recommender != null">
             <if test="recommender != null">
                 recommender = #{recommender},
                 recommender = #{recommender},
             </if>
             </if>
+            <if test="moneyTicket != null">
+                money_ticket = #{moneyTicket},
+            </if>
         </set>
         </set>
         where id = #{id,jdbcType=INTEGER}
         where id = #{id,jdbcType=INTEGER}
     </update>
     </update>
@@ -539,6 +550,11 @@
                 and recommender = #{record.recommender}
                 and recommender = #{record.recommender}
             </if>
             </if>
 
 
+            <if test="record.moneyTicket != null and !&quot;&quot;.equals(record.moneyTicket)">
+                and money_ticket = #{record.moneyTicket}
+            </if>
+
+
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
             <if test="record.searchKey != null and !&quot;&quot;.equals(record.searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR nickname LIKE concat('%',#{record.searchKey},'%')
                     OR nickname LIKE concat('%',#{record.searchKey},'%')
@@ -657,6 +673,10 @@
                 and recommender = #{recommender}
                 and recommender = #{recommender}
             </if>
             </if>
 
 
+            <if test="moneyTicket != null and !&quot;&quot;.equals(moneyTicket)">
+                and money_ticket = #{moneyTicket}
+            </if>
+
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
             <if test="searchKey != null and !&quot;&quot;.equals(searchKey)">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                 <trim prefix="and (" suffix=")" prefixOverrides="OR">
                     OR nickname LIKE concat('%',#{searchKey},'%')
                     OR nickname LIKE concat('%',#{searchKey},'%')
@@ -732,6 +752,9 @@
             <if test="createFlag != null and !&quot;&quot;.equals(createFlag)">
             <if test="createFlag != null and !&quot;&quot;.equals(createFlag)">
                 and create_flag = #{createFlag}
                 and create_flag = #{createFlag}
             </if>
             </if>
+            <if test="moneyTicket != null and !&quot;&quot;.equals(moneyTicket)">
+                and money_ticket = #{moneyTicket}
+            </if>
         </where>
         </where>
         LIMIT 1
         LIMIT 1
     </select>
     </select>
@@ -809,6 +832,10 @@
                 and recommender = #{recommender}
                 and recommender = #{recommender}
             </if>
             </if>
 
 
+            <if test="moneyTicket != null and !&quot;&quot;.equals(moneyTicket)">
+                and money_ticket = #{moneyTicket}
+            </if>
+
         </where>
         </where>
         LIMIT 1
         LIMIT 1
     </select>
     </select>

+ 213 - 0
src/main/java/com/izouma/awesomeadmin/model/MemberTicket.java

@@ -0,0 +1,213 @@
+package com.izouma.awesomeadmin.model;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class MemberTicket {
+    /*generatedStart*/
+    private Integer id;
+    private String delFlag;
+    private Date updateTime;
+    private String updateUser;
+    private Date createTime;
+    private String createUser;
+    private Integer gameId;
+    private Integer houseId;
+    private Integer userId;
+    private String remark;
+    private Integer typeFlag;
+    private BigDecimal money;
+    private BigDecimal balance;
+    private Integer seasonId;
+    private Integer playerId;
+
+    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*/
+
+
+    /**
+     * 充值类型
+     */
+    private Integer rechargeType;
+
+    /*generatedStart*/
+    public Integer getId() {
+        return this.id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getDelFlag() {
+        return this.delFlag;
+    }
+
+    public void setDelFlag(String delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Date getUpdateTime() {
+        return this.updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getUpdateUser() {
+        return this.updateUser;
+    }
+
+    public void setUpdateUser(String updateUser) {
+        this.updateUser = updateUser;
+    }
+
+    public Date getCreateTime() {
+        return this.createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCreateUser() {
+        return this.createUser;
+    }
+
+    public void setCreateUser(String createUser) {
+        this.createUser = createUser;
+    }
+
+    public Integer getGameId() {
+        return this.gameId;
+    }
+
+    public void setGameId(Integer gameId) {
+        this.gameId = gameId;
+    }
+
+    public Integer getHouseId() {
+        return this.houseId;
+    }
+
+    public void setHouseId(Integer houseId) {
+        this.houseId = houseId;
+    }
+
+    public Integer getUserId() {
+        return this.userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public String getRemark() {
+        return this.remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public Integer getTypeFlag() {
+        return this.typeFlag;
+    }
+
+    public void setTypeFlag(Integer typeFlag) {
+        this.typeFlag = typeFlag;
+    }
+
+    public BigDecimal getMoney() {
+        return this.money;
+    }
+
+    public void setMoney(BigDecimal money) {
+        this.money = money;
+    }
+
+    public BigDecimal getBalance() {
+        return this.balance;
+    }
+
+    public void setBalance(BigDecimal balance) {
+        this.balance = balance;
+    }
+
+    public Integer getSeasonId() {
+        return this.seasonId;
+    }
+
+    public void setSeasonId(Integer seasonId) {
+        this.seasonId = seasonId;
+    }
+
+    public Integer getPlayerId() {
+        return this.playerId;
+    }
+
+    public void setPlayerId(Integer playerId) {
+        this.playerId = playerId;
+    }
+
+    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*/
+
+    public Integer getRechargeType() {
+        return rechargeType;
+    }
+
+    public void setRechargeType(Integer rechargeType) {
+        this.rechargeType = rechargeType;
+    }
+}
+

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

@@ -65,6 +65,11 @@ public class PlayerInfo {
      */
      */
     private String orderByStr;
     private String orderByStr;
 
 
+    /**
+     * 奖章
+     */
+    private String medal;
+
 
 
     public Integer getId() {
     public Integer getId() {
         return this.id;
         return this.id;
@@ -361,5 +366,13 @@ public class PlayerInfo {
     public void setScoreType(Integer scoreType) {
     public void setScoreType(Integer scoreType) {
         this.scoreType = scoreType;
         this.scoreType = scoreType;
     }
     }
+
+    public String getMedal() {
+        return medal;
+    }
+
+    public void setMedal(String medal) {
+        this.medal = medal;
+    }
 }
 }
 
 

+ 10 - 0
src/main/java/com/izouma/awesomeadmin/model/UserInfo.java

@@ -91,6 +91,8 @@ public class UserInfo {
 
 
     private UserLevel userLevel;
     private UserLevel userLevel;
 
 
+    private Integer moneyTicket;
+
 
 
     public String getDepartId() {
     public String getDepartId() {
         return departId;
         return departId;
@@ -404,5 +406,13 @@ public class UserInfo {
     public void setUserLevel(UserLevel userLevel) {
     public void setUserLevel(UserLevel userLevel) {
         this.userLevel = userLevel;
         this.userLevel = userLevel;
     }
     }
+
+    public Integer getMoneyTicket() {
+        return moneyTicket;
+    }
+
+    public void setMoneyTicket(Integer moneyTicket) {
+        this.moneyTicket = moneyTicket;
+    }
 }
 }
 
 

+ 36 - 0
src/main/java/com/izouma/awesomeadmin/service/MemberTicketService.java

@@ -0,0 +1,36 @@
+package com.izouma.awesomeadmin.service;
+
+import java.util.*;
+
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.MemberTicket;
+
+
+/**
+ * service接口类
+ */
+public interface MemberTicketService {
+    /*generatedStart*/
+    List<MemberTicket> getMemberTicketList(MemberTicket record);
+
+    List<MemberTicket> getMemberTicketByPage(Page page, MemberTicket record);
+
+    MemberTicket getMemberTicketById(String id);
+
+    MemberTicket getMemberTicket(MemberTicket record);
+
+    boolean createMemberTicket(MemberTicket record);
+
+    boolean deleteMemberTicket(MemberTicket record);
+
+    boolean updateMemberTicket(MemberTicket record);
+    /*generatedEnd*/
+
+
+    int song(MemberTicket record);
+
+    int recharge(MemberTicket record);
+
+    int consumption(MemberTicket record);
+}
+

+ 275 - 104
src/main/java/com/izouma/awesomeadmin/service/impl/HouseInfoServiceImpl.java

@@ -37,7 +37,7 @@ public class HouseInfoServiceImpl implements HouseInfoService {
     private UserInfoService userInfoService;
     private UserInfoService userInfoService;
 
 
     @Autowired
     @Autowired
-    private MemberCoinService memberCoinService;
+    private MemberTicketService memberTicketService;
 
 
     @Autowired
     @Autowired
     private PlayerInfoService playerInfoService;
     private PlayerInfoService playerInfoService;
@@ -235,15 +235,8 @@ public class HouseInfoServiceImpl implements HouseInfoService {
 
 
                 if (houseInfo.getStatusFlag() == AppConstant.HouseStatus.ANALYSIS) {//只有结束比赛的才能结算
                 if (houseInfo.getStatusFlag() == AppConstant.HouseStatus.ANALYSIS) {//只有结束比赛的才能结算
 
 
-                    HouseLevel houseLevel = houseInfo.getHouseLevelInfo();
 
 
-                    BigDecimal firstRatio = houseLevel.getFirstRatio();
-                    BigDecimal secondRatio = houseLevel.getSecondRatio();
-                    BigDecimal thirdRatio = houseLevel.getThirdRatio();
-                    BigDecimal poolRatio = houseLevel.getPoolRatio();
-                    BigDecimal avgRatio = houseLevel.getAvgRatio();
-
-                    int winNum = 0;//吃鸡人数
+//                    int winNum = 0;//吃鸡人数
 
 
 
 
                     PlayerInfo param = new PlayerInfo();
                     PlayerInfo param = new PlayerInfo();
@@ -256,24 +249,26 @@ public class HouseInfoServiceImpl implements HouseInfoService {
 
 
                     if (CollectionUtils.isNotEmpty(playerInfoList)) {
                     if (CollectionUtils.isNotEmpty(playerInfoList)) {
 
 
-                        if (houseInfo.getScoreType() > 0) {//如果是平分模式,获取吃鸡人数。
-                            param.setRanking(1);
-                            List<PlayerInfo> winList = playerInfoService.getSettlementPlayer(param);
-                            winNum = winList.size();
-                        }
+//                        if (houseInfo.getScoreType() > 0) {//如果是平分模式,获取吃鸡人数。
+//                            param.setRanking(1);
+//                            List<PlayerInfo> winList = playerInfoService.getSettlementPlayer(param);
+//                            winNum = winList.size();
+//                        }
 
 
                         for (int i = 0; i < playerInfoList.size(); i++) {
                         for (int i = 0; i < playerInfoList.size(); i++) {
                             PlayerInfo playerInfo = playerInfoList.get(i);
                             PlayerInfo playerInfo = playerInfoList.get(i);
                             playerInfo.setHouseRank(i + 1);
                             playerInfo.setHouseRank(i + 1);
+
                             BigDecimal bonus = BigDecimal.ZERO;
                             BigDecimal bonus = BigDecimal.ZERO;
+
                             String content = "";
                             String content = "";
-                            int typeFlag = AppConstant.NoticeType.RECEIVE;
+                            int typeFlag = AppConstant.NoticeType.RESULT;
 
 
                             if (AppConstant.PlayerStatus.PROCESSED_FAIL == playerInfo.getStatusFlag()) {
                             if (AppConstant.PlayerStatus.PROCESSED_FAIL == playerInfo.getStatusFlag()) {
 
 
                                 content = "很遗憾,你在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
                                 content = "很遗憾,你在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
                                         + "开始的游戏竞赛 " + houseInfo.getHouseName()
                                         + "开始的游戏竞赛 " + houseInfo.getHouseName()
-                                        + ",未解析到结果,无法获得奖励。";
+                                        + ",无有效结果,无法获得奖励。";
                                 typeFlag = AppConstant.NoticeType.RESULT;
                                 typeFlag = AppConstant.NoticeType.RESULT;
                             } else if (AppConstant.PlayerStatus.OVERTIME == playerInfo.getStatusFlag()) {
                             } else if (AppConstant.PlayerStatus.OVERTIME == playerInfo.getStatusFlag()) {
                                 content = "很遗憾,你在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
                                 content = "很遗憾,你在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
@@ -282,52 +277,51 @@ public class HouseInfoServiceImpl implements HouseInfoService {
                                 typeFlag = AppConstant.NoticeType.RESULT;
                                 typeFlag = AppConstant.NoticeType.RESULT;
                             } else {
                             } else {
                                 if (houseInfo.getScoreType() == 0) {//吃鸡模式
                                 if (houseInfo.getScoreType() == 0) {//吃鸡模式
-                                    if (playerInfo.getRanking() != null && 1 == playerInfo.getRanking()) {//只有吃鸡才能获得奖励
+                                    if (playerInfo.getRanking() != null && i < 3) {//只有吃鸡才能获得奖励
 
 
-                                        if (i == 0) {//第一名
-                                            bonus = BigDecimal.valueOf((firstRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
+                                        if (i == 0) {//第一名 金牌
+                                            playerInfo.setMedal(AppConstant.Medals.GOLD);
+                                            bonus = BigDecimal.valueOf(AppConstant.Medals.GOLD_SCORE);
 
 
 
 
                                         }
                                         }
-                                        if (i == 1) {//第二名
-                                            bonus = BigDecimal.valueOf((secondRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
+                                        if (i == 1) {//第二名 银牌
+                                            playerInfo.setMedal(AppConstant.Medals.SILVER);
+                                            bonus = BigDecimal.valueOf(AppConstant.Medals.SILVER_SCORE);
                                         }
                                         }
-                                        if (i == 2) {//第三名
-                                            bonus = BigDecimal.valueOf((thirdRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
+                                        if (i == 2) {//第三名 铜牌
+                                            playerInfo.setMedal(AppConstant.Medals.BRONZE);
+                                            bonus = BigDecimal.valueOf(AppConstant.Medals.BRONZE_SCORE);
                                         }
                                         }
 
 
                                         content = "恭喜你,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
                                         content = "恭喜你,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
-                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(吃鸡模式)获得了第" + playerInfo.getHouseRank()
-                                                + "名,获得" + bonus + "积分,赶快领取你的奖励吧。";
+                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(评分模式)获得了第" + playerInfo.getHouseRank()
+                                                + "名,该局参赛人数" + houseInfo.getPlayerNumber() + "人。";
                                     } else {
                                     } else {
 
 
                                         content = "很遗憾,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
                                         content = "很遗憾,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
-                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(吃鸡模式)获得了第" + playerInfo.getHouseRank()
-                                                + "名,但未能吃鸡,因此无法获得奖励。";
+                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(评分模式)获得了第" + playerInfo.getHouseRank()
+                                                + "名,该局参赛人数" + houseInfo.getPlayerNumber() + "人。";
                                         typeFlag = AppConstant.NoticeType.RESULT;
                                         typeFlag = AppConstant.NoticeType.RESULT;
                                     }
                                     }
                                 } else {
                                 } else {
-                                    if (playerInfo.getRanking() != null && 1 == playerInfo.getRanking()) {//只有评分大于0才能获得奖励
-
-                                        if (winNum > 0) {//吃鸡人数大于0
-                                            bonus = BigDecimal.valueOf(((avgRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue()) / winNum);
-
+                                    if (playerInfo.getRanking() != null && 1 == playerInfo.getRanking()) {//只有吃鸡才能获得奖励
 
 
-                                        }
+                                        playerInfo.setMedal(AppConstant.Medals.PLATINUM);
+                                        bonus = BigDecimal.valueOf(AppConstant.Medals.PLATINUM_SCORE);
 
 
                                         content = "恭喜你,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
                                         content = "恭喜你,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
-                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(平分模式)获得了第" + playerInfo.getHouseRank()
-                                                + "名,获得" + bonus + "积分,赶快领取你的奖励吧。";
+                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(吃鸡模式)获得了第" + playerInfo.getHouseRank()
+                                                + "名,该局参赛人数" + houseInfo.getPlayerNumber() + "人。";
                                     } else {
                                     } else {
                                         content = "很遗憾,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
                                         content = "很遗憾,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
-                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(平分模式)获得了第" + playerInfo.getHouseRank()
-                                                + "名,但未吃鸡,因此无法获得奖励。";
+                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(吃鸡模式)获得了第" + playerInfo.getHouseRank()
+                                                + "名,该局参赛人数" + houseInfo.getPlayerNumber() + "人。";
                                         typeFlag = AppConstant.NoticeType.RESULT;
                                         typeFlag = AppConstant.NoticeType.RESULT;
                                     }
                                     }
                                 }
                                 }
                             }
                             }
 
 
-
                             playerInfo.setBonus(bonus);
                             playerInfo.setBonus(bonus);
 
 
 
 
@@ -373,46 +367,6 @@ public class HouseInfoServiceImpl implements HouseInfoService {
                         }
                         }
                     }
                     }
 
 
-                    if (poolRatio.doubleValue() > 0) {
-                        //加入到赛季奖金池中
-                        try {
-
-                            BigDecimal pool = BigDecimal.valueOf((poolRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
-
-                            CompetitionSeason competitionSeason = competitionSeasonMapper.selectByPrimaryKey(houseInfo.getSeasonId());
-
-                            if (competitionSeason != null) {
-
-
-                                double balance = competitionSeason.getBonus().doubleValue();
-                                double moneyCoin = balance + pool.doubleValue();
-
-                                BonusRecord bonusRecord = new BonusRecord();
-                                bonusRecord.setMoney(pool);
-                                bonusRecord.setBonus(BigDecimal.valueOf(moneyCoin));
-                                bonusRecord.setSeasonId(houseInfo.getSeasonId());
-                                bonusRecord.setGameId(houseInfo.getGameId());
-                                bonusRecord.setHouseId(houseInfo.getId());
-                                bonusRecord.setTypeFlag(0);
-                                bonusRecord.setRemark(houseInfo.getHouseName() + "比赛结算," + pool.doubleValue() + " 积分");
-                                bonusRecordService.createBonusRecord(bonusRecord);
-
-                                CompetitionSeason addBonus = new CompetitionSeason();
-                                addBonus.setId(competitionSeason.getId());
-                                addBonus.setBonus(pool);
-
-                                competitionSeasonMapper.addBonus(addBonus);
-
-
-                            }
-
-                        } catch (Exception e) {
-                            logger.error("赛季奖金池添加奖金异常!", e);
-                        }
-
-                    }
-
-
                     //更新为结算完成状态。
                     //更新为结算完成状态。
                     houseInfo.setStatusFlag(AppConstant.HouseStatus.SETTLEMENT);
                     houseInfo.setStatusFlag(AppConstant.HouseStatus.SETTLEMENT);
                     houseInfoMapper.updateByPrimaryKeySelective(houseInfo);
                     houseInfoMapper.updateByPrimaryKeySelective(houseInfo);
@@ -430,6 +384,223 @@ public class HouseInfoServiceImpl implements HouseInfoService {
 
 
         return false;
         return false;
     }
     }
+//    /**
+//     * 房间比赛结果结算。
+//     *
+//     * @param record
+//     * @return
+//     */
+//    @Override
+//    public boolean settlementHouse(HouseInfo record) {
+//
+//        logger.info("settlementHouse");
+//
+//
+//        try {
+//
+//            HouseInfo houseInfo = new HouseInfo();
+//            houseInfo.setId(record.getId());
+//            houseInfo = houseInfoMapper.queryHouseInfo(houseInfo);
+//
+//            if (houseInfo != null) {
+//
+//                if (houseInfo.getStatusFlag() == AppConstant.HouseStatus.ANALYSIS) {//只有结束比赛的才能结算
+//
+//                    HouseLevel houseLevel = houseInfo.getHouseLevelInfo();
+//
+//                    BigDecimal firstRatio = houseLevel.getFirstRatio();
+//                    BigDecimal secondRatio = houseLevel.getSecondRatio();
+//                    BigDecimal thirdRatio = houseLevel.getThirdRatio();
+//                    BigDecimal poolRatio = houseLevel.getPoolRatio();
+//                    BigDecimal avgRatio = houseLevel.getAvgRatio();
+//
+//                    int winNum = 0;//吃鸡人数
+//
+//
+//                    PlayerInfo param = new PlayerInfo();
+//                    if (houseInfo.getScoreType() > 0) {
+//                        param.setScoreType(1);
+//                    }
+//                    param.setHouseId(record.getId());
+//
+//                    List<PlayerInfo> playerInfoList = playerInfoService.getSettlementPlayer(param);
+//
+//                    if (CollectionUtils.isNotEmpty(playerInfoList)) {
+//
+//                        if (houseInfo.getScoreType() > 0) {//如果是平分模式,获取吃鸡人数。
+//                            param.setRanking(1);
+//                            List<PlayerInfo> winList = playerInfoService.getSettlementPlayer(param);
+//                            winNum = winList.size();
+//                        }
+//
+//                        for (int i = 0; i < playerInfoList.size(); i++) {
+//                            PlayerInfo playerInfo = playerInfoList.get(i);
+//                            playerInfo.setHouseRank(i + 1);
+//                            BigDecimal bonus = BigDecimal.ZERO;
+//                            String content = "";
+//                            int typeFlag = AppConstant.NoticeType.RECEIVE;
+//
+//                            if (AppConstant.PlayerStatus.PROCESSED_FAIL == playerInfo.getStatusFlag()) {
+//
+//                                content = "很遗憾,你在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
+//                                        + "开始的游戏竞赛 " + houseInfo.getHouseName()
+//                                        + ",未解析到结果,无法获得奖励。";
+//                                typeFlag = AppConstant.NoticeType.RESULT;
+//                            } else if (AppConstant.PlayerStatus.OVERTIME == playerInfo.getStatusFlag()) {
+//                                content = "很遗憾,你在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
+//                                        + "开始的游戏竞赛 " + houseInfo.getHouseName()
+//                                        + ",比赛超时,无法获得奖励。";
+//                                typeFlag = AppConstant.NoticeType.RESULT;
+//                            } else {
+//                                if (houseInfo.getScoreType() == 0) {//吃鸡模式
+//                                    if (playerInfo.getRanking() != null && 1 == playerInfo.getRanking()) {//只有吃鸡才能获得奖励
+//
+//                                        if (i == 0) {//第一名
+//                                            bonus = BigDecimal.valueOf((firstRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
+//
+//
+//                                        }
+//                                        if (i == 1) {//第二名
+//                                            bonus = BigDecimal.valueOf((secondRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
+//                                        }
+//                                        if (i == 2) {//第三名
+//                                            bonus = BigDecimal.valueOf((thirdRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
+//                                        }
+//
+//                                        content = "恭喜你,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
+//                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(吃鸡模式)获得了第" + playerInfo.getHouseRank()
+//                                                + "名,获得" + bonus + "积分,赶快领取你的奖励吧。";
+//                                    } else {
+//
+//                                        content = "很遗憾,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
+//                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(吃鸡模式)获得了第" + playerInfo.getHouseRank()
+//                                                + "名,但未能吃鸡,因此无法获得奖励。";
+//                                        typeFlag = AppConstant.NoticeType.RESULT;
+//                                    }
+//                                } else {
+//                                    if (playerInfo.getRanking() != null && 1 == playerInfo.getRanking()) {//只有评分大于0才能获得奖励
+//
+//                                        if (winNum > 0) {//吃鸡人数大于0
+//                                            bonus = BigDecimal.valueOf(((avgRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue()) / winNum);
+//
+//
+//                                        }
+//
+//                                        content = "恭喜你,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
+//                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(平分模式)获得了第" + playerInfo.getHouseRank()
+//                                                + "名,获得" + bonus + "积分,赶快领取你的奖励吧。";
+//                                    } else {
+//                                        content = "很遗憾,在" + DateTimeTool.dateTimeToTimeYYYYHHmmStr(houseInfo.getBeginTime())
+//                                                + "开始的游戏竞赛 " + houseInfo.getHouseName() + "(平分模式)获得了第" + playerInfo.getHouseRank()
+//                                                + "名,但未吃鸡,因此无法获得奖励。";
+//                                        typeFlag = AppConstant.NoticeType.RESULT;
+//                                    }
+//                                }
+//                            }
+//
+//
+//                            playerInfo.setBonus(bonus);
+//
+//
+//                            SystemNotice systemNotice = new SystemNotice();
+//                            systemNotice.setGameId(playerInfo.getGameId());
+//                            systemNotice.setHouseId(playerInfo.getHouseId());
+//                            systemNotice.setUserId(playerInfo.getUserId());
+//                            systemNotice.setSeasonId(playerInfo.getSeasonId());
+//                            systemNotice.setPlayerId(playerInfo.getId());
+//                            systemNotice.setRemark("定时任务");
+//
+//                            systemNotice.setContent(content);
+//                            systemNotice.setTypeFlag(typeFlag);
+//
+//                            systemNoticeService.createSystemNotice(systemNotice);
+//
+//                            //推送
+//                            try {
+//                                UserInfo userInfo = new UserInfo();
+//                                userInfo.setId(playerInfo.getUserId());
+//                                userInfo = userInfoService.getSingleUserInfo(userInfo);
+//                                if (userInfo != null) {
+//                                    if ("Y".equals(userInfo.getNoticeFlag())) {
+//                                        String[] ids = new String[]{userInfo.getId().toString()};
+//
+//                                        PushUtil.pushMsg(ids, content);
+//                                    }
+//
+//                                }
+//
+//
+//                            } catch (Exception e) {
+//                                logger.error("结算推送消息异常。", e);
+//                            }
+//
+//                            if (AppConstant.PlayerStatus.PROCESSED == playerInfo.getStatusFlag()) {//如果正常结束的则更新状态
+//                                playerInfo.setStatusFlag(AppConstant.PlayerStatus.SETTLEMENT);
+//
+//                            }
+//                            playerInfoService.updatePlayerInfo(playerInfo);
+//
+//
+//                        }
+//                    }
+//
+//                    if (poolRatio.doubleValue() > 0) {
+//                        //加入到赛季奖金池中
+//                        try {
+//
+//                            BigDecimal pool = BigDecimal.valueOf((poolRatio.doubleValue() / 100) * houseInfo.getBonus().doubleValue());
+//
+//                            CompetitionSeason competitionSeason = competitionSeasonMapper.selectByPrimaryKey(houseInfo.getSeasonId());
+//
+//                            if (competitionSeason != null) {
+//
+//
+//                                double balance = competitionSeason.getBonus().doubleValue();
+//                                double moneyCoin = balance + pool.doubleValue();
+//
+//                                BonusRecord bonusRecord = new BonusRecord();
+//                                bonusRecord.setMoney(pool);
+//                                bonusRecord.setBonus(BigDecimal.valueOf(moneyCoin));
+//                                bonusRecord.setSeasonId(houseInfo.getSeasonId());
+//                                bonusRecord.setGameId(houseInfo.getGameId());
+//                                bonusRecord.setHouseId(houseInfo.getId());
+//                                bonusRecord.setTypeFlag(0);
+//                                bonusRecord.setRemark(houseInfo.getHouseName() + "比赛结算," + pool.doubleValue() + " 积分");
+//                                bonusRecordService.createBonusRecord(bonusRecord);
+//
+//                                CompetitionSeason addBonus = new CompetitionSeason();
+//                                addBonus.setId(competitionSeason.getId());
+//                                addBonus.setBonus(pool);
+//
+//                                competitionSeasonMapper.addBonus(addBonus);
+//
+//
+//                            }
+//
+//                        } catch (Exception e) {
+//                            logger.error("赛季奖金池添加奖金异常!", e);
+//                        }
+//
+//                    }
+//
+//
+//                    //更新为结算完成状态。
+//                    houseInfo.setStatusFlag(AppConstant.HouseStatus.SETTLEMENT);
+//                    houseInfoMapper.updateByPrimaryKeySelective(houseInfo);
+//
+//                    return true;
+//                }
+//
+//
+//            }
+//
+//
+//        } catch (Exception e) {
+//            logger.error("settlementHouse", e);
+//        }
+//
+//        return false;
+//    }
 
 
     /**
     /**
      * 加入房间
      * 加入房间
@@ -478,60 +649,60 @@ public class HouseInfoServiceImpl implements HouseInfoService {
                 return new Result(false, "加入失败,不能重复加入");
                 return new Result(false, "加入失败,不能重复加入");
             }
             }
 
 
-            double entryCoin = 50;
+            int entryTicket = 1;//门票一张
 
 
-            HouseLevel houseLevel = houseInfo.getHouseLevelInfo();
-            if (houseLevel != null) {
-                entryCoin = houseLevel.getEntryCoin().doubleValue();
-            }
+//            HouseLevel houseLevel = houseInfo.getHouseLevelInfo();
+//            if (houseLevel != null) {
+//                entryCoin = houseLevel.getEntryCoin().doubleValue();
+//            }
 
 
             /**
             /**
-             * 余额
+             * 门票
              */
              */
-            double moneyCoin = userInfo.getMoneyCoin();
+            int moneyTicket = userInfo.getMoneyTicket();
 
 
-            if (entryCoin > moneyCoin) {
-                return new Result(false, "加入失败,余额不足");
+            if (entryTicket > moneyTicket) {
+                return new Result(false, "加入失败,门票不足");
             }
             }
 
 
 
 
             record.setGameId(houseInfo.getGameId());
             record.setGameId(houseInfo.getGameId());
             record.setHouseId(houseInfo.getId());
             record.setHouseId(houseInfo.getId());
             record.setJoinTime(new Date());
             record.setJoinTime(new Date());
-            record.setPrincipal(BigDecimal.valueOf(entryCoin));
+            record.setPrincipal(BigDecimal.valueOf(entryTicket));
             record.setSeasonId(houseInfo.getSeasonId());
             record.setSeasonId(houseInfo.getSeasonId());
 
 
             playerInfoService.createPlayerInfo(record);
             playerInfoService.createPlayerInfo(record);
 
 
-            // 只能用余额支付
-            if (entryCoin > 0) {
+            // 只能用门票支付
+            if (entryTicket > 0) {
 
 
-                MemberCoin memberCoin = new MemberCoin();
-                memberCoin.setCreateUser("系统");
-                memberCoin.setHouseId(houseInfo.getId());
-                memberCoin.setUserId(userInfo.getId());
-                memberCoin.setGameId(houseInfo.getGameId());
-                memberCoin.setSeasonId(houseInfo.getSeasonId());
-                memberCoin.setPlayerId(record.getId());
+                MemberTicket memberTicket = new MemberTicket();
+                memberTicket.setCreateUser("系统");
+                memberTicket.setHouseId(houseInfo.getId());
+                memberTicket.setUserId(userInfo.getId());
+                memberTicket.setGameId(houseInfo.getGameId());
+                memberTicket.setSeasonId(houseInfo.getSeasonId());
+                memberTicket.setPlayerId(record.getId());
 
 
-                memberCoin.setMoney(BigDecimal.valueOf(-entryCoin));
-                memberCoin.setBalance(BigDecimal.valueOf(moneyCoin - entryCoin));
-                memberCoin.setTypeFlag(AppConstant.CoinType.CONSUMPTION);
-                memberCoin.setRemark("加入房间:" + houseInfo.getHouseCode());
-                memberCoinService.createMemberCoin(memberCoin);
+                memberTicket.setMoney(BigDecimal.valueOf(-entryTicket));
+                memberTicket.setBalance(BigDecimal.valueOf(moneyTicket - entryTicket));
+                memberTicket.setTypeFlag(AppConstant.CoinType.CONSUMPTION);
+                memberTicket.setRemark("加入房间:" + houseInfo.getHouseCode());
+                memberTicketService.createMemberTicket(memberTicket);
 
 
             }
             }
 
 
             UserInfo updateUser = new UserInfo();
             UserInfo updateUser = new UserInfo();
             updateUser.setId(userInfo.getId());
             updateUser.setId(userInfo.getId());
-            updateUser.setMoneyCoin(moneyCoin - entryCoin);
+            updateUser.setMoneyTicket(moneyTicket - entryTicket);
             userInfoService.updateUserInfo(updateUser);
             userInfoService.updateUserInfo(updateUser);
 
 
 
 
             HouseInfo joinHouseInfo = new HouseInfo();
             HouseInfo joinHouseInfo = new HouseInfo();
             joinHouseInfo.setId(houseInfo.getId());
             joinHouseInfo.setId(houseInfo.getId());
             joinHouseInfo.setPlayerNumber(1);
             joinHouseInfo.setPlayerNumber(1);
-            joinHouseInfo.setBonus(BigDecimal.valueOf(entryCoin));
+            joinHouseInfo.setBonus(BigDecimal.valueOf(entryTicket));
 
 
             houseInfoMapper.joinHouseInfo(joinHouseInfo);
             houseInfoMapper.joinHouseInfo(joinHouseInfo);
 
 

+ 273 - 0
src/main/java/com/izouma/awesomeadmin/service/impl/MemberTicketServiceImpl.java

@@ -0,0 +1,273 @@
+package com.izouma.awesomeadmin.service.impl;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+import com.izouma.awesomeadmin.model.UserInfo;
+import com.izouma.awesomeadmin.service.UserInfoService;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.model.MemberTicket;
+import com.izouma.awesomeadmin.service.MemberTicketService;
+import com.izouma.awesomeadmin.dao.MemberTicketMapper;
+
+/**
+ * service接口实现类
+ */
+@Service
+public class MemberTicketServiceImpl implements MemberTicketService {
+    /*generatedStart*/
+    private static Logger logger = Logger.getLogger(MemberTicketServiceImpl.class);
+
+    @Autowired
+    private MemberTicketMapper memberTicketMapper;
+    /*generatedEnd*/
+
+    @Autowired
+    private UserInfoService userInfoService;
+
+    /*generatedStart*/
+    @Override
+    public List<MemberTicket> getMemberTicketList(MemberTicket record) {
+        logger.info("getMemberTicketList");
+        try {
+            return memberTicketMapper.queryAllMemberTicket(record);
+        } catch (Exception e) {
+            logger.error("getMemberTicketList", e);
+        }
+        return null;
+    }
+
+    @Override
+    public List<MemberTicket> getMemberTicketByPage(Page page, MemberTicket record) {
+        logger.info("getMemberTicketByPage");
+        try {
+            Map<String, Object> parameter = new HashMap<String, Object>();
+            parameter.put("record", record);
+            parameter.put(AppConstant.PAGE, page);
+
+            return memberTicketMapper.queryMemberTicketByPage(parameter);
+        } catch (Exception e) {
+            logger.error("getMemberTicketByPage", e);
+        }
+        return null;
+    }
+
+    @Override
+    public MemberTicket getMemberTicketById(String id) {
+        logger.info("getMemberTicketyId");
+        try {
+            return memberTicketMapper.selectByPrimaryKey(Integer.valueOf(id));
+        } catch (Exception e) {
+            logger.error("getMemberTicketById", e);
+        }
+        return null;
+    }
+
+    @Override
+    public MemberTicket getMemberTicket(MemberTicket record) {
+        logger.info("getMemberTicket");
+        try {
+            return memberTicketMapper.queryMemberTicket(record);
+        } catch (Exception e) {
+            logger.error("getMemberTicket", e);
+        }
+        return null;
+    }
+
+    @Override
+    public boolean createMemberTicket(MemberTicket record) {
+        logger.info("createMemberTicket");
+        try {
+            int updates = memberTicketMapper.insertSelective(record);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("createMemberTicket", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean deleteMemberTicket(MemberTicket record) {
+        logger.info("deleteMemberTicket");
+        try {
+            int updates = memberTicketMapper.delete(record);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("deleteMemberTicket", e);
+        }
+        return false;
+    }
+
+    @Override
+    public boolean updateMemberTicket(MemberTicket record) {
+        logger.info("updateMemberTicket");
+        try {
+            int updates = memberTicketMapper.updateByPrimaryKeySelective(record);
+            if (updates > 0) {
+                return true;
+            }
+        } catch (Exception e) {
+            logger.error("updateMemberTicket", e);
+        }
+        return false;
+    }
+    /*generatedEnd*/
+
+
+    @Override
+    public int song(MemberTicket record) {
+
+        logger.info("song:送门票  ");
+        try {
+
+            int key = 0;
+
+            int money = record.getMoney().intValue();
+
+
+            int userId = Integer.valueOf(record.getUserId());
+            UserInfo userInfo = userInfoService.getUserInfoById(userId + "");
+
+            UserInfo updateUser = new UserInfo();
+            updateUser.setId(userId);
+
+
+            int balance = userInfo.getMoneyTicket();
+            int moneyTicket = balance + money;
+
+            record.setCreateUser("管理员");
+            record.setBalance(BigDecimal.valueOf(moneyTicket));
+            record.setTypeFlag(AppConstant.CoinType.SONG);
+            record.setRemark("后台赠送:" + money + "门票");
+            key += memberTicketMapper.insertSelective(record);
+
+
+            updateUser.setMoneyTicket(moneyTicket);
+            userInfoService.updateUserInfo(updateUser);
+
+
+            return key;
+        } catch (Exception e) {
+            logger.error("song:送门票异常  ", e);
+        }
+
+        return 0;
+    }
+
+    @Override
+    public int recharge(MemberTicket record) {
+
+        logger.info("recharge:充值门票  ");
+        try {
+
+            int key = 0;
+
+            int money = record.getMoney().intValue();
+
+
+            int userId = Integer.valueOf(record.getUserId());
+            UserInfo userInfo = userInfoService.getUserInfoById(userId + "");
+
+            UserInfo updateUser = new UserInfo();
+            updateUser.setId(userId);
+            String remark = "充值";
+
+            switch (record.getRechargeType()) {
+                case 0:
+                    remark = "支付宝充值";
+                    break;
+                case 1:
+                    remark = "微信充值";
+                    break;
+                case 2:
+                    remark = "管理员手动充值";
+                    break;
+                case 3:
+                    remark = "其他途径充值";
+                    break;
+
+            }
+
+            if (StringUtils.isNotEmpty(record.getRemark())) {
+                remark = record.getRemark();
+            }
+
+
+            int balance = userInfo.getMoneyTicket();
+            int moneyTicket = balance + money;
+
+            record.setCreateUser(remark);
+            record.setBalance(BigDecimal.valueOf(moneyTicket));
+            record.setTypeFlag(AppConstant.CoinType.RECHARGE);
+            record.setRemark(remark + money + "门票");
+            key += memberTicketMapper.insertSelective(record);
+
+
+            updateUser.setMoneyTicket(moneyTicket);
+            userInfoService.updateUserInfo(updateUser);
+
+
+            return key;
+        } catch (Exception e) {
+            logger.error("recharge:充值门票异常  ", e);
+        }
+
+        return 0;
+    }
+
+    @Override
+    public int consumption(MemberTicket record) {
+
+        logger.info("consumption:门票消耗  ");
+        try {
+
+            int key = 0;
+
+            int money = record.getMoney().intValue();
+
+
+            int userId = Integer.valueOf(record.getUserId());
+            UserInfo userInfo = userInfoService.getUserInfoById(userId + "");
+
+            UserInfo updateUser = new UserInfo();
+            updateUser.setId(userId);
+            String remark = "消费";
+
+            if (StringUtils.isNotEmpty(record.getRemark())) {
+                remark = record.getRemark();
+            }
+
+
+            int balance = userInfo.getMoneyTicket();
+            int moneyTicket = balance - money;
+
+            record.setMoney(BigDecimal.valueOf(-money));
+            record.setCreateUser(remark);
+            record.setBalance(BigDecimal.valueOf(moneyTicket));
+            record.setTypeFlag(AppConstant.CoinType.CONSUMPTION);
+            record.setRemark(remark + money + "门票");
+            key += memberTicketMapper.insertSelective(record);
+
+
+            updateUser.setMoneyTicket(moneyTicket);
+            userInfoService.updateUserInfo(updateUser);
+
+            return key;
+        } catch (Exception e) {
+            logger.error("consumption:门票门票消耗异常  ", e);
+        }
+
+        return 0;
+    }
+
+}
+

+ 12 - 6
src/main/java/com/izouma/awesomeadmin/service/impl/ProductInfoServiceImpl.java

@@ -3,7 +3,9 @@ package com.izouma.awesomeadmin.service.impl;
 import java.util.*;
 import java.util.*;
 
 
 import com.izouma.awesomeadmin.model.MemberCoin;
 import com.izouma.awesomeadmin.model.MemberCoin;
+import com.izouma.awesomeadmin.model.MemberTicket;
 import com.izouma.awesomeadmin.service.MemberCoinService;
 import com.izouma.awesomeadmin.service.MemberCoinService;
+import com.izouma.awesomeadmin.service.MemberTicketService;
 import org.apache.log4j.Logger;
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -24,6 +26,9 @@ public class ProductInfoServiceImpl implements ProductInfoService {
     @Autowired
     @Autowired
     private ProductInfoMapper productInfoMapper;
     private ProductInfoMapper productInfoMapper;
 
 
+    @Autowired
+    private MemberTicketService memberTicketService;
+
     @Autowired
     @Autowired
     private MemberCoinService memberCoinService;
     private MemberCoinService memberCoinService;
 
 
@@ -152,13 +157,13 @@ public class ProductInfoServiceImpl implements ProductInfoService {
                 if (AppConstant.ProductType.RECHARGE == productInfo.getTypeFlag()) {//如果是充值类型
                 if (AppConstant.ProductType.RECHARGE == productInfo.getTypeFlag()) {//如果是充值类型
                     if (record.getMoney().compareTo(productInfo.getMoney()) >= 0) {
                     if (record.getMoney().compareTo(productInfo.getMoney()) >= 0) {
 
 
-                        MemberCoin memberCoin = new MemberCoin();
-                        memberCoin.setMoney(productInfo.getCoin());
-                        memberCoin.setUserId(record.getUserId());
-                        memberCoin.setRemark("购买" + productInfo.getProductName() + "套餐,充值");
-                        memberCoin.setRechargeType(AppConstant.RechargeType.OTHER);
+                        MemberTicket memberTicket = new MemberTicket();
+                        memberTicket.setMoney(productInfo.getCoin());
+                        memberTicket.setUserId(record.getUserId());
+                        memberTicket.setRemark("购买" + productInfo.getProductName() + "套餐,充值");
+                        memberTicket.setRechargeType(AppConstant.RechargeType.OTHER);
 
 
-                        updates = memberCoinService.recharge(memberCoin);
+                        updates = memberTicketService.recharge(memberTicket);
 
 
                     }
                     }
 
 
@@ -171,6 +176,7 @@ public class ProductInfoServiceImpl implements ProductInfoService {
                         memberCoin.setRemark("购买" + productInfo.getProductName() + "套餐,消费");
                         memberCoin.setRemark("购买" + productInfo.getProductName() + "套餐,消费");
 
 
                         updates = memberCoinService.consumption(memberCoin);
                         updates = memberCoinService.consumption(memberCoin);
+
                     }
                     }
                 }
                 }
 
 

+ 167 - 0
src/main/java/com/izouma/awesomeadmin/web/MemberTicketController.java

@@ -0,0 +1,167 @@
+package com.izouma.awesomeadmin.web;
+
+import java.util.*;
+
+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.*;
+import com.izouma.awesomeadmin.constant.AppConstant;
+import com.izouma.awesomeadmin.dto.Page;
+import com.izouma.awesomeadmin.dto.Result;
+import com.izouma.awesomeadmin.model.MemberTicket;
+import com.izouma.awesomeadmin.service.MemberTicketService;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/memberTicket")
+public class MemberTicketController {
+    /*generatedStart*/
+    @Autowired
+    private MemberTicketService memberTicketService;
+    /*generatedEnd*/
+
+    /*generatedStart*/
+    @RequiresAuthentication
+    @RequestMapping(value = "/all", method = RequestMethod.GET)
+    @ResponseBody
+    public Result all(MemberTicket record) {
+        List<MemberTicket> pp = memberTicketService.getMemberTicketList(record);
+        return new Result(true, pp);
+    }
+
+    @RequestMapping(value = "/getMemberTicket", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getMemberTicket(@RequestParam(required = false, value = "id") String id) {
+        MemberTicket data = memberTicketService.getMemberTicketById(id);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/getOne", method = RequestMethod.GET)
+    @ResponseBody
+    public Result getOne(MemberTicket record) {
+        MemberTicket data = memberTicketService.getMemberTicket(record);
+        return new Result(true, data);
+    }
+
+    @RequestMapping(value = "/page", method = RequestMethod.GET)
+    @ResponseBody
+    public Result page(Page page, MemberTicket record) {
+        Map<String, Object> result = new HashMap<>();
+
+        List<MemberTicket> pp = memberTicketService.getMemberTicketByPage(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(MemberTicket record) {
+        boolean num = memberTicketService.createMemberTicket(record);
+        if (num) {
+            return new Result(true, record.getId());
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/update", method = RequestMethod.POST)
+    @ResponseBody
+    public Result updateMemberTicket(MemberTicket record) {
+        boolean num = memberTicketService.updateMemberTicket(record);
+        if (num) {
+            return new Result(true, "保存成功");
+        }
+        return new Result(false, "保存异常");
+    }
+
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    @ResponseBody
+    public Result deleteMemberTicket(MemberTicket record) {
+
+        boolean num = memberTicketService.deleteMemberTicket(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, MemberTicket record) throws Exception {
+
+        List<MemberTicket> memberTickets = memberTicketService.getMemberTicketList(record);
+
+        String sheetName = "member_ticket";
+        String titleName = "用户门票数据表";
+        String fileName = "用户门票表";
+        int columnNumber = 15;
+        int[] columnWidth = {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20};
+        String[] columnName = {"id", "删除标识", "更新时间", "更新人", "创建时间", "创建人", "游戏", "房间", "用户", "备注", "类型", "金额", "余额", "赛季ID", "选手ID"};
+        String[][] dataList = new String[memberTickets.size()][15];
+
+        for (int i = 0; i < memberTickets.size(); i++) {
+            dataList[i][0] = String.valueOf(memberTickets.get(i).getId());
+            dataList[i][1] = String.valueOf(memberTickets.get(i).getDelFlag());
+            dataList[i][2] = String.valueOf(memberTickets.get(i).getUpdateTime());
+            dataList[i][3] = String.valueOf(memberTickets.get(i).getUpdateUser());
+            dataList[i][4] = String.valueOf(memberTickets.get(i).getCreateTime());
+            dataList[i][5] = String.valueOf(memberTickets.get(i).getCreateUser());
+            dataList[i][6] = String.valueOf(memberTickets.get(i).getGameId());
+            dataList[i][7] = String.valueOf(memberTickets.get(i).getHouseId());
+            dataList[i][8] = String.valueOf(memberTickets.get(i).getUserId());
+            dataList[i][9] = String.valueOf(memberTickets.get(i).getRemark());
+            dataList[i][10] = String.valueOf(memberTickets.get(i).getTypeFlag());
+            dataList[i][11] = String.valueOf(memberTickets.get(i).getMoney());
+            dataList[i][12] = String.valueOf(memberTickets.get(i).getBalance());
+            dataList[i][13] = String.valueOf(memberTickets.get(i).getSeasonId());
+            dataList[i][14] = String.valueOf(memberTickets.get(i).getPlayerId());
+        }
+
+        ExportExcelUtil.ExportWithResponse(sheetName, titleName, fileName,
+                columnNumber, columnWidth, columnName, dataList, response);
+    }
+    /*generatedEnd*/
+
+
+    @RequestMapping(value = "/song", method = RequestMethod.POST)
+    @ResponseBody
+    public Result song(MemberTicket record) {
+
+        int num = memberTicketService.song(record);
+        if (num > 0) {
+            return new Result(true, "赠送成功");
+        }
+        return new Result(false, "赠送异常");
+
+    }
+
+    @RequestMapping(value = "/recharge", method = RequestMethod.POST)
+    @ResponseBody
+    public Result recharge(MemberTicket record) {
+
+        int num = memberTicketService.recharge(record);
+        if (num > 0) {
+            return new Result(true, "充值成功");
+        }
+        return new Result(false, "充值异常");
+
+    }
+
+    @RequestMapping(value = "/consumption", method = RequestMethod.POST)
+    @ResponseBody
+    public Result consumption(MemberTicket record) {
+
+        int num = memberTicketService.consumption(record);
+        if (num > 0) {
+            return new Result(true, "消费成功");
+        }
+        return new Result(false, "消费异常");
+
+    }
+}
+

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

@@ -0,0 +1,172 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
+                 style="max-width: 500px;">
+            <el-form-item prop="gameId" label="游戏">
+                <el-input v-model="formData.gameId" :disabled="'gameId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="houseId" label="房间">
+                <el-input v-model="formData.houseId" :disabled="'houseId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="userId" label="用户">
+                <el-input v-model="formData.userId" :disabled="'userId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="remark" label="备注">
+                <el-input v-model="formData.remark" :disabled="'remark'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="typeFlag" label="类型">
+                <el-input v-model="formData.typeFlag" :disabled="'typeFlag'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="money" label="金额">
+                <el-input v-model="formData.money" :disabled="'money'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="balance" label="余额">
+                <el-input v-model="formData.balance" :disabled="'balance'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="seasonId" label="赛季ID">
+                <el-input v-model="formData.seasonId" :disabled="'seasonId'==subColumn"></el-input>
+            </el-form-item>
+            <el-form-item prop="playerId" label="选手ID">
+                <el-input v-model="formData.playerId" :disabled="'playerId'==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: 'MemberTicket',
+        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: '/memberTicket/getOne',
+                    data: {
+                        id: this.$route.query.id
+                    }
+                }).then(res => {
+                    if (res.success) {
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    this.formData = res.data;
+                        if (this.$route.query.column) {
+                            this.formData[this.subColumn] = this.subValue;
+                        }
+                    }
+                })
+            } else {
+                if (this.$route.query.column) {
+                    this.formData[this.subColumn] = this.subValue;
+                }
+            }
+
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        },
+        data() {
+            return {
+                saving: false,
+                formData: {
+                },
+                rules: {
+                },
+                subColumn: '',
+                subValue: '',
+            }
+        },
+        computed: {
+            ...mapState(['userInfo']),
+        },
+        methods: {
+            onSave() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        this.logicalValidate();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            logicalValidate() {
+                let logicalData = {
+                };
+
+                if (JSON.stringify(logicalData) == '{}') {
+                    this.submit();
+                } else {
+                    this.$http.get({
+                        url: '/memberTicket/getOne',
+                        data: logicalData
+                    }).then(res => {
+                        if (res.success) {
+                            let logicalFlag = true;
+                            if (res.data) {
+                                if (this.formData.id) {
+                                    if (res.data.id != this.formData.id) {
+                                        logicalFlag = false;
+                                    }
+                                } else {
+                                    logicalFlag = false;
+                                }
+                            }
+
+                            if (logicalFlag) {
+                                this.submit();
+                            } else {
+                                this.$message.warning('逻辑关键字:'+''+'验证失败')
+                            }
+
+                        } else {
+                            this.$message.warning('逻辑关键字:'+''+'验证失败')
+                        }
+                    });
+                }
+            },
+            submit() {
+                let data = {...this.formData};
+
+                                                                                                                                                                                                                                                                
+                this.$http.post({
+                    url: this.formData.id ? '/memberTicket/update' : '/memberTicket/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: '/memberTicket/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>

+ 83 - 0
src/main/vue/src/pages/MemberTicketSong.vue

@@ -0,0 +1,83 @@
+<template>
+    <div>
+        <el-form :model="formData" :rules="rules" ref="form" label-width="80px" label-position="right" size="small" style="max-width: 500px;">
+            <el-form-item prop="userId" label="用户">
+                <template>
+                    <el-select v-model="formData.userId" clearable  filterable  placeholder="请选择">
+                        <el-option v-for="item in userIdOptions" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+                </template>
+            </el-form-item>
+            <el-form-item prop="money" label="金额">
+                <el-input v-model="formData.money"></el-input>
+            </el-form-item>
+            <el-form-item>
+                <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">赠送</el-button>
+                <el-button @click="$router.go(-1)">取消</el-button>
+            </el-form-item>
+        </el-form>
+    </div>
+</template>
+<script>
+import formValidator from '../formValidator'
+
+export default {
+    created() {
+
+        this.$http.get({
+            url: '/userInfo/all'
+        }).then(res => {
+            if (res.success) {
+
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.userIdOptions.push({ label: item.username, value: item.id });
+                    })
+                }
+            }
+        });
+
+    },
+    data() {
+        return {
+            saving: false,
+            formData: {
+                money: 10
+            },
+            rules: {
+            },
+            subColumn: '',
+            subValue: '',
+            userIdOptions: [],
+        }
+    },
+    methods: {
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.submit();
+                } else {
+                    return false;
+                }
+            });
+        },
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+            this.$http.post({
+                url: '/memberTicket/song',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$router.go(-1);
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+</style>

+ 569 - 0
src/main/vue/src/pages/MemberTickets.vue

@@ -0,0 +1,569 @@
+<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:'/memberTicket',query:{column:$route.query.column}})" type="primary"
+                       size="small" icon="el-icon-edit"
+                       class="filter-item">添加
+            </el-button>
+            <el-button @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
+            </el-button>
+            <el-dropdown trigger="click" size="medium" class="table-column-filter">
+                <span>
+                  筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
+                </span>
+                <el-dropdown-menu slot="dropdown" class="table-column-filter-wrapper">
+                    <el-checkbox v-for="item in tableColumns" :key="item.value" v-model="item.show">{{item.label}}
+                    </el-checkbox>
+                </el-dropdown-menu>
+            </el-dropdown>
+        </div>
+        <el-table
+                :data="tableData"
+                :height="tableHeight"
+                row-key="id"
+                ref="table">
+            <el-table-column
+                    v-if="multipleMode"
+                    align="center"
+                    type="selection"
+                    width="50">
+            </el-table-column>
+            <el-table-column
+                    type="index"
+                    min-width="50"
+                    align="center">
+            </el-table-column>
+                            
+                                            <el-table-column
+                                v-if="isColumnShow('id')"
+                                prop="id"
+                                label="id"
+                                min-width="100">
+                        </el-table-column>
+                                                                                                                                                    
+                                            <el-table-column
+                                v-if="isColumnShow('createTime')"
+                                prop="createTime"
+                                label="创建时间"
+                                :formatter="DateTimeFormatter"
+                                min-width="100">
+                        </el-table-column>
+                                                                                            
+                                            <el-table-column
+                                v-if="isColumnShow('gameId')"
+                                prop="gameId"
+                                label="游戏"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('houseId')"
+                                prop="houseId"
+                                label="房间"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('userId')"
+                                prop="userId"
+                                label="用户"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('remark')"
+                                prop="remark"
+                                label="备注"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('typeFlag')"
+                                prop="typeFlag"
+                                label="类型"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('money')"
+                                prop="money"
+                                label="金额"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('balance')"
+                                prop="balance"
+                                label="余额"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('seasonId')"
+                                prop="seasonId"
+                                label="赛季ID"
+                                min-width="100">
+                        </el-table-column>
+                                                                
+                                            <el-table-column
+                                v-if="isColumnShow('playerId')"
+                                prop="playerId"
+                                label="选手ID"
+                                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: 'MemberTickets',
+        created() {
+            this.getData();
+        },
+        data() {
+            return {
+                totalNumber: 0,
+                totalPage: 10,
+                currentPage: 1,
+                pageSize: 20,
+                tableData: [],
+                filter1: '',
+                filter2: '',
+                tableColumns: [
+                                                                        {
+                                label: 'id',
+                                value: 'id',
+                                show: true
+                            },
+                                                                                                                                                                                                                                    {
+                                label: '创建时间',
+                                value: 'createTime',
+                                show: true
+                            },
+                                                                                                                                            {
+                                label: '游戏',
+                                value: 'gameId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '房间',
+                                value: 'houseId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'userId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark',
+                                show: true
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'typeFlag',
+                                show: true
+                            },
+                                                                                                {
+                                label: '金额',
+                                value: 'money',
+                                show: true
+                            },
+                                                                                                {
+                                label: '余额',
+                                value: 'balance',
+                                show: true
+                            },
+                                                                                                {
+                                label: '赛季ID',
+                                value: 'seasonId',
+                                show: true
+                            },
+                                                                                                {
+                                label: '选手ID',
+                                value: 'playerId',
+                                show: true
+                            },
+                                                            ],
+                multipleMode: false,
+                showAdvancedQueryDialog: false,
+                advancedQueryFields: [],
+                showTableSortDialog: false,
+                tableSortFields: [],
+                searchMethods: ['=', '!=', '>', '>=', '<', '<=', 'like'],
+                advancedQueryColumns: [
+                                                                        {
+                                label: 'id',
+                                value: 'id'
+                            },
+                                                                                                                                                                                                                                    {
+                                label: '创建时间',
+                                value: 'create_time'
+                            },
+                                                                                                                                            {
+                                label: '游戏',
+                                value: 'game_id'
+                            },
+                                                                                                {
+                                label: '房间',
+                                value: 'house_id'
+                            },
+                                                                                                {
+                                label: '用户',
+                                value: 'user_id'
+                            },
+                                                                                                {
+                                label: '备注',
+                                value: 'remark'
+                            },
+                                                                                                {
+                                label: '类型',
+                                value: 'type_flag'
+                            },
+                                                                                                {
+                                label: '金额',
+                                value: 'money'
+                            },
+                                                                                                {
+                                label: '余额',
+                                value: 'balance'
+                            },
+                                                                                                {
+                                label: '赛季ID',
+                                value: 'season_id'
+                            },
+                                                                                                {
+                                label: '选手ID',
+                                value: 'player_id'
+                            },
+                                                            ],
+                advancedQuerySearchKey: '',
+                orderByStr: '',
+                imgSrc: '',
+                imageDialogVisible: false,
+            }
+        },
+        computed: {
+            ...mapState(['tableHeight']),
+            selection() {
+                return this.$refs.table.selection.map(i => i.id);
+            }
+        },
+        methods: {
+            pageSizeChange(size) {
+                this.currentPage = 1;
+                this.pageSize = size;
+                this.getData();
+            },
+            currentPageChange(page) {
+                this.currentPage = page;
+                this.getData();
+            },
+            getData() {
+
+                var data = {
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    searchKey: this.filter1,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    orderByStr: this.orderByStr,
+                }
+
+                if (this.$route.query.column) {
+                    var tempColumn = this.$route.query.column;
+                    data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
+                }
+
+                this.$http.get({
+                    url: '/memberTicket/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: '/memberTicket',
+                    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 + "/memberTicket/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: '/memberTicket/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>

+ 2 - 2
src/main/vue/src/pages/Users.vue

@@ -7,7 +7,7 @@
             </el-button>
             </el-button>
             <el-button @click="$router.push('/user')" type="primary" size="small" icon="el-icon-edit" class="filter-item">添加
             <el-button @click="$router.push('/user')" type="primary" size="small" icon="el-icon-edit" class="filter-item">添加
             </el-button>
             </el-button>
-            <el-button @click="$router.push({path:'/memberCoinSong',query:{}})" type="primary" size="small" icon="el-icon-edit" class="filter-item">赠送积分
+            <el-button @click="$router.push({path:'/memberTicketSong',query:{}})" type="primary" size="small" icon="el-icon-edit" class="filter-item">赠送门票
             </el-button>
             </el-button>
             <el-button @click="$router.push({path:'/memberHouseCardSong',query:{}})" type="primary" size="small" icon="el-icon-edit" class="filter-item">充值房卡
             <el-button @click="$router.push({path:'/memberHouseCardSong',query:{}})" type="primary" size="small" icon="el-icon-edit" class="filter-item">充值房卡
             </el-button>
             </el-button>
@@ -59,7 +59,7 @@
             <el-table-column prop="userLevel.name" label="级别" width="100">
             <el-table-column prop="userLevel.name" label="级别" width="100">
             </el-table-column>
             </el-table-column>
 
 
-            <el-table-column prop="moneyCoin" label="积分" min-width="100">
+            <el-table-column prop="moneyTicket" label="门票" min-width="100">
             </el-table-column>
             </el-table-column>
             <el-table-column prop="houseCard" label="场次" min-width="100">
             <el-table-column prop="houseCard" label="场次" min-width="100">
             </el-table-column>
             </el-table-column>

+ 429 - 414
src/main/vue/src/router/index.js

@@ -14,423 +14,438 @@ const router = new Router({
             path: '/',
             path: '/',
             redirect: 'dashboard'
             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: '/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')
-                }
-                /**INSERT_LOCATION**/
-        ]
-    },
         {
         {
-            path: '/login',
-            name: 'login',
+            path: '/404',
+            name: '404',
             component: () =>
             component: () =>
-                import('../pages/Login')
+                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')
         }
         }
+            /**INSERT_LOCATION**/
+        ]
+    },
+    {
+        path: '/login',
+        name: 'login',
+        component: () =>
+            import('../pages/Login')
+    }
     ]
     ]
 });
 });
 router.beforeEach((to, from, next) => {
 router.beforeEach((to, from, next) => {