diff --git a/wisenergy-common/src/main/java/cn/wisenergy/common/utils/Constants.java b/wisenergy-common/src/main/java/cn/wisenergy/common/utils/Constants.java
index 8bb32c69ea3fcf67863b16c5cb261b1ea5bf8e3e..0dd27b5e2b2ca6e1e1f9681007acc938f39bbc01 100644
--- a/wisenergy-common/src/main/java/cn/wisenergy/common/utils/Constants.java
+++ b/wisenergy-common/src/main/java/cn/wisenergy/common/utils/Constants.java
@@ -19,6 +19,9 @@ public class Constants {
         public final static Integer SEX_MAN = 1;
         //数据精度
         public final static Integer DECIMAL_DIGITS = 2;
+
+        //头像地址
+        public final static String HEAD_POTRAIT= "http://8.131.244.76:81/upload/14c54de0d-ee41-4e90-8c3e-ae6b93a2ad91.png";
     }
     //访问来源
     public static class SourceType{
diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/CustomerServiceMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/CustomerServiceMapper.java
index d41f572e61108c7992282a27acc982650fc0fc62..90af4446055aca171d40fbe0572eec4c9577bd5c 100644
--- a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/CustomerServiceMapper.java
+++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/CustomerServiceMapper.java
@@ -2,6 +2,7 @@ package cn.wisenergy.mapper;
 
 import cn.wisenergy.model.app.CustomerService;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 专属客服对应表
@@ -14,4 +15,11 @@ public interface CustomerServiceMapper extends BaseMapper<CustomerService> {
      * @return
      */
     CustomerService randService();
+
+    /**
+     * 根据wechatId查询专属客服
+     * @param customerServiceId
+     * @return
+     */
+    CustomerService selectbyWeChatId(@Param("customerServiceId") String customerServiceId);
 }
diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/ShopZxMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/ShopZxMapper.java
index a9504bb925ae5a3e89164e25a99440db6dd71a7a..6ce043e6b27ca2ce655628a942f02044c2bd3479 100644
--- a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/ShopZxMapper.java
+++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/ShopZxMapper.java
@@ -23,6 +23,14 @@ public interface ShopZxMapper extends BaseMapper<shopZx> {
      */
     int zxadd(@Param("zxUrl") String zxUrl,@Param("zxField") String zxField,@Param("zxAddress") String zxAddress,@Param("inviteCode") String inviteCode,@Param("zxDate") Long zxDate);
 
+    /**
+     * 用户头像上传
+     * @param zxUrl
+     * @param zxDate
+     * @return
+     */
+    int zxadd1(@Param("zxUrl") String zxUrl ,@Param("zxDate") Long zxDate);
+
     /**
      * 查询资讯数据
      */
diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java
index c125e660c736fa37c839ebdec6ad68b1994a0fd8..c9de99d97e34caa8d73b660a9077a646dbb302a9 100644
--- a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java
+++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/UsersMapper.java
@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -112,15 +113,14 @@ public interface UsersMapper extends BaseMapper<User> {
 
     /**
      * 用户注册
-     *
-     * @param userId
+     *  @param userId
      * @param inviteCode
      * @param beInvitedCode
      * @param userLevel
      */
-    Integer save(@Param("userId") String userId, @Param("inviteCode") String inviteCode, @Param("beInvitedCode") String beInvitedCode, @Param("userLevel") Integer userLevel);
+    Integer insertbyint(@Param("userId") String userId, @Param("inviteCode") String inviteCode, @Param("beInvitedCode") String beInvitedCode, @Param("userLevel") Integer userLevel, @Param("headImage") String headImage);
 
-    Integer insertbyint(@Param("userId") String userId, @Param("beInvitedCode") String beInvitedCode);
+    Integer save(@Param("userId") String userId, @Param("beInvitedCode") String beInvitedCode);
 
     User edit1(int userLevel, String intiveCode, String userId);
 
@@ -168,4 +168,13 @@ public interface UsersMapper extends BaseMapper<User> {
      * @return
      */
     User InvitedCode2(@Param("inviteCode") String inviteCode);
+
+    /**
+     * 根据用户的推荐人邀请码 查询上级用户的id
+     * @param beInvitedCode
+     * @return
+     */
+    String getUserByIntiveCode(String beInvitedCode);
+
+    String getUserIdByIntiveCode(String outerUserId);
 }
diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/VariableMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/VariableMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..396ccc3c0ab868d9a2f6e63534e15a83b9ebfb56
--- /dev/null
+++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/VariableMapper.java
@@ -0,0 +1,44 @@
+package cn.wisenergy.mapper;
+
+import cn.wisenergy.model.app.Variable;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author 86187
+ * @ Description:  变量表mapper
+ * @ Author     : 86187
+ * @ Date       : 2021/3/15 15:09
+ */
+public interface VariableMapper extends BaseMapper<Variable> {
+    /**
+     * 新增
+     *
+     * @param variable 变量信息
+     * @return 1
+     */
+    int add(Variable variable);
+
+    /**
+     * 编辑
+     *
+     * @param variable 变量信息
+     * @return 1
+     */
+    int edit(Variable variable);
+
+    /**
+     * 删除
+     *
+     * @param id 主键id
+     * @return 1
+     */
+    int delById(@Param("id") Integer id);
+
+    /**
+     * 根据key,获取变量信息
+     * @param key 变量唯一标识
+     * @return
+     */
+    Variable getByKey(@Param("key") String key);
+}
diff --git a/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/userLikesMapper.java b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/userLikesMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..5630de0d26ce70f662465d81aea89b1b52e95e55
--- /dev/null
+++ b/wisenergy-mapper/src/main/java/cn/wisenergy/mapper/userLikesMapper.java
@@ -0,0 +1,27 @@
+package cn.wisenergy.mapper;
+
+import cn.wisenergy.model.app.userLikes;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 用户点赞记录表
+ * Created by m1991 on 2021/3/15 12:54
+ */
+@Mapper
+public interface userLikesMapper extends BaseMapper<userLikes> {
+
+    /**
+     * userId查询用户点赞记录
+     * @param userLikeId
+     * @return
+     */
+    userLikes selectlikes(@Param("userLikeId") String userLikeId, @Param("likedId") int likedId);
+
+    /**
+     * 添加点赞记录
+     * @return
+     */
+    int addlikes(@Param("userLikeId") String userLikeId,@Param("likedId")int likedId,@Param("likedStaus")int likedStaus,@Param("likedType")int likedType);
+}
diff --git a/wisenergy-mapper/src/main/resources/mapper/CustomerServiceMapper.xml b/wisenergy-mapper/src/main/resources/mapper/CustomerServiceMapper.xml
index 8d438d2791fc7d6819a6965e816abea6d90afb9b..15a6814803401f5a9ac1e4ddd33cf680af1272da 100644
--- a/wisenergy-mapper/src/main/resources/mapper/CustomerServiceMapper.xml
+++ b/wisenergy-mapper/src/main/resources/mapper/CustomerServiceMapper.xml
@@ -48,4 +48,14 @@
         order by rand() limit 1
     </select>
 
+    <select id="selectbyWeChatId" parameterType="string" resultType="cn.wisenergy.model.app.CustomerService">
+        select
+        <include refid="cols_all"/>
+        from
+        <include refid="table"/>
+        <where>
+            wechat_id = #{customerServiceId}
+        </where>
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml b/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml
index 3fafb1ee754575f82392be5bc079cfc7b172ace8..f1a3915cf4118a19eaa33362ddc759ff322cb42b 100644
--- a/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml
+++ b/wisenergy-mapper/src/main/resources/mapper/OrderMapper.xml
@@ -3,7 +3,7 @@
 <mapper namespace="cn.wisenergy.mapper.OrderMapper">
     <resultMap id="OrderMap" type="cn.wisenergy.model.app.OrderInfo">
         <id column="id" property="id"/>
-        <result column="buyer_id" property="buyerId"/>
+        <result column="user_id" property="userId"/>
         <result column="item_id" property="itemId"/>
         <result column="pay_type" property="payType"/>
         <result column="youzan_update_time" property="youzanUpdateTime"/>
@@ -34,18 +34,18 @@
     </sql>
 
     <sql id="cols_exclude_id">
-        buyer_id,item_id,pay_type,youzan_update_time,tid,created,team_type,pay_time,pay_type_str,close_type,refund_state,
+        user_id,item_id,pay_type,youzan_update_time,tid,created,team_type,pay_time,pay_type_str,close_type,refund_state,
         success_time,payment,rebate_status,level_status,month_order_status,monthly_task_status,create_time,update_time
     </sql>
 
     <sql id="vals">
-        #{buyerId},#{itemId},#{payType},#{youzanUpdateTime}, #{tid},#{created},#{teamType},#{payTime},#{payTypeStr},
+        #{userId},#{itemId},#{payType},#{youzanUpdateTime}, #{tid},#{created},#{teamType},#{payTime},#{payTypeStr},
         #{closeType},#{refundState},#{successTime},#{payment},
         #{rebateStatus},#{levelStatus},#{monthOrderStatus},#{monthlyTaskStatus},now(),now()
     </sql>
 
     <sql id="updateCondition">
-        <if test="buyerId != null">buyer_id = #{buyerId},</if>
+        <if test="userId != null">user_id = #{userId},</if>
         <if test="itemId != null">item_id =#{itemId},</if>
         <if test="payType != null">pay_type =#{payType},</if>
         <if test="youzanUpdateTime != null">youzan_update_time =#{youzanUpdateTime},</if>
@@ -67,7 +67,7 @@
 
     <sql id="criteria">
         <if test="id != null">id = #{id}</if>
-        <if test="buyerId != null">and buyer_id = #{buyerId}</if>
+        <if test="userId != null">and user_id = #{userId}</if>
         <if test="itemId != null">and item_id =#{itemId}</if>
         <if test="payType != null">and pay_type =#{payType}</if>
         <if test="youzanUpdateTime != null">youzan_update_time =#{youzanUpdateTime}</if>
@@ -123,7 +123,7 @@
         from
         <include refid="table"/>
         <where>
-            buyer_id=#{userid}
+            user_id=#{userid}
         </where>
     </select>
 
diff --git a/wisenergy-mapper/src/main/resources/mapper/ShopZxMapper.xml b/wisenergy-mapper/src/main/resources/mapper/ShopZxMapper.xml
index 2daa4b58f7e3f985fa52d9e1b7bca50f93a72284..cd670f479133017540aea3a33986ebe89b0b9ac8 100644
--- a/wisenergy-mapper/src/main/resources/mapper/ShopZxMapper.xml
+++ b/wisenergy-mapper/src/main/resources/mapper/ShopZxMapper.xml
@@ -42,9 +42,20 @@
         )
     </insert>
 
+    <!--用户头像插入-->
+    <insert id="zxadd1" parameterType="cn.wisenergy.model.app.shopZx">
+        insert into
+        <include refid="table"/>
+        zx_url,zx_date
+        value(
+        #{zxUrl},#{zxDate}
+        )
+    </insert>
+
+
     <!--资讯内容倒叙查询-->
     <select id="selectPage" parameterType="java.lang.Integer" resultType="cn.wisenergy.model.app.zxUserDto">
-      select
+       select
       b.zx_id as zxid,
       b.zx_url as zxUrl,
       b.zx_likes as zxLikes,
@@ -54,7 +65,7 @@
       b.invite_code as inviteCode,
       a.user_id as userId,
       a.head_image as headImage
-      from shop_zx b inner join user_info a ON a.invite_code=b.invite_code
+      from shop_zx b left join user_info a ON a.invite_code=b.invite_code
       WHERE zx_to_examine != 0
       order by zxid desc limit #{pageNum},#{pageSize}
     </select>
@@ -62,6 +73,10 @@
     <select id="selectAllNum" parameterType="cn.wisenergy.model.app.shopZx" >
     select count (*) from shop_zx
     </select>
+    <!--查询点赞记录-->
+    <select id="selectlikes" parameterType="cn.wisenergy.model.app.userLikes" >
+    select * from user_likes
+    </select>
     <!--资讯点赞专用sql-->
     <select id="selectByzxid" parameterType="java.lang.Integer" resultType="cn.wisenergy.model.app.shopZx">
     select * from shop_zx where zx_id=#{zxid}
diff --git a/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml b/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml
index add5ad96c9dd224c431ba844e5a8651da8fda4a8..e67bcd93a31c16229961c5e948b853f78e4da74f 100644
--- a/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml
+++ b/wisenergy-mapper/src/main/resources/mapper/UsersMapper.xml
@@ -14,6 +14,7 @@
         <result column="fans_id" property="fansId"/>
         <result column="invite_code" property="inviteCode"/>
         <result column="be_invited_code" property="beInvitedCode"/>
+        <result column="customer_service_id" property="customerServiceId"/>
         <result column="create_time" property="createTime"/>
         <result column="update_time" property="updateTime"/>
     </resultMap>
@@ -29,12 +30,12 @@
 
     <sql id="cols_exclude_id">
         user_id,password,head_image,user_level,cross_border_line,id_card_number,fans_nickname,fans_id, invite_code,
-        be_invited_code,create_time,update_time
+        be_invited_code,customer_service_id,create_time,update_time
     </sql>
 
     <sql id="vals">
         #{userId},#{password},#{headImage},#{userLevel},#{crossBorderLine},#{idCardNumber},#{fansNickname},#{fansId},#{inviteCode},
-        #{beInvitedCode},now(),now()
+        #{beInvitedCode},#{customerServiceId},now(),now()
     </sql>
 
     <sql id="updateCondition">
@@ -48,6 +49,7 @@
         <if test="fansId != null">fans_id =#{fansId},</if>
         <if test="inviteCode != null">invite_code =#{inviteCode},</if>
         <if test="beInvitedCode != null">be_invited_code = #{beInvitedCode},</if>
+        <if test="customerServiceId != null">customer_service_id = #{customerServiceId},</if>
         update_time =now()
     </sql>
 
@@ -63,6 +65,7 @@
         <if test="fansId != null">and fans_id =#{fansId}</if>
         <if test="inviteCode != null">and invite_code =#{inviteCode}</if>
         <if test="beInvitedCode != null">and be_invited_code = #{beInvitedCode}</if>
+        <if test="customerServiceId != null">and customer_service_id = #{customerServiceId}</if>
         <if test="createTime != null">and create_time &gt;= #{createTime}</if>
         <if test="updateTime != null">and #{updateTime} &gt;= update_time</if>
     </sql>
@@ -122,7 +125,7 @@
     <select id="getByUserId" resultType="cn.wisenergy.model.app.User" parameterType="string">
         select
         id,user_id,password,head_image,user_level,cross_border_line,id_card_number,fans_nickname,fans_id, invite_code,
-        be_invited_code,create_time,update_time
+        be_invited_code,customer_service_id,create_time,update_time
         from
         user_info
         <where>
@@ -184,11 +187,11 @@
     </select>
 
     <!--用户注册-->
-    <insert id="save">
-        insert into user(user_id,invite_code,be_invited_code,user_level,create_time,update_time) value
-        (#{userId},#{inviteCode},#{beInvitedCode},#{userLevel}#{now()},#{now()})
-    </insert>
     <insert id="insertbyint">
+        insert into user_info(user_id,invite_code,be_invited_code,user_level,head_image) value
+        (#{userId},#{inviteCode},#{beInvitedCode},#{userLevel},#{headImage})
+    </insert>
+    <insert id="save">
         insert into user_info(user_id,be_invited_code) value (#{userId},#{beInvitedCode})
     </insert>
 
@@ -228,7 +231,7 @@
         from
         <include refid="table"/>
         <where>
-            invite_code=#{InviteCode}
+            invite_code=#{inviteCode}
         </where>
     </select>
 
@@ -349,5 +352,20 @@
         </where>
     </select>
 
+    <select id="getUserByIntiveCode" parameterType="string" resultType="string">
+        select user_id
+        from
+        <include refid="table"/>
+        where
+        invite_code = #{beInvitedCode}
+    </select>
+
+    <select id="getUserIdByIntiveCode" resultType="string" parameterType="string">
+        select user_id
+        from
+        <include refid="table"/>
+        where
+        invite_code = #{outerUserId}
+    </select>
 
 </mapper>
diff --git a/wisenergy-mapper/src/main/resources/mapper/VariableMapper.xml b/wisenergy-mapper/src/main/resources/mapper/VariableMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..85ecf5fcee5aeb318ef250694612e45613411c87
--- /dev/null
+++ b/wisenergy-mapper/src/main/resources/mapper/VariableMapper.xml
@@ -0,0 +1,83 @@
+<?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="cn.wisenergy.mapper.VariableMapper">
+    <resultMap id="variableMap" type="cn.wisenergy.model.app.Variable">
+        <id column="id" property="id"/>
+        <result column="key" property="key"/>
+        <result column="variable_value" property="variableValue"/>
+        <result column="desc" property="desc"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+    </resultMap>
+
+    <sql id="table">
+        variable
+    </sql>
+
+    <sql id="cols_all">
+        id,
+        <include refid="cols_exclude_id"/>
+    </sql>
+
+    <sql id="cols_exclude_id">
+        key,password,variable_value,desc,create_time,update_time
+    </sql>
+
+    <sql id="vals">
+        #{key},#{variableValue},#{desc},now(),now()
+    </sql>
+
+    <sql id="updateCondition">
+        <if test="key != null">key = #{key},</if>
+        <if test="variableValue != null">variable_value =#{variableValue},</if>
+        <if test="desc != null">desc =#{desc},</if>
+        update_time =now()
+    </sql>
+
+    <sql id="criteria">
+        <if test="id != null">id = #{id}</if>
+        <if test="key != null">and key = #{key}</if>
+        <if test="variableValue != null">and variable_value =#{variableValue}</if>
+        <if test="desc != null">and desc =#{desc}</if>
+        <if test="createTime != null">and create_time &gt;= #{createTime}</if>
+        <if test="updateTime != null">and #{updateTime} &gt;= update_time</if>
+    </sql>
+
+
+    <insert id="add" parameterType="cn.wisenergy.model.app.Variable" keyProperty="id" useGeneratedKeys="true">
+        insert into
+        <include refid="table"/>
+        (<include refid="cols_exclude_id"/>)
+        value(
+        <include refid="vals"/>
+        )
+    </insert>
+
+    <update id="edit" parameterType="cn.wisenergy.model.app.Variable">
+        UPDATE
+        <include refid="table"/>
+        <set>
+            <include refid="updateCondition"/>
+        </set>
+        <where>
+            id = #{id}
+        </where>
+    </update>
+
+    <delete id="delById" parameterType="java.lang.Integer">
+        delete from
+        <include refid="table"/>
+        where id = #{id}
+    </delete>
+    <select id="getByKey" resultType="cn.wisenergy.model.app.Variable">
+        select
+        <include refid="cols_all"/>
+        from
+        <include refid="table"/>
+        <where>
+            key=#{key}
+        </where>
+    </select>
+
+</mapper>
diff --git a/wisenergy-mapper/src/main/resources/mapper/userLikesMapper.xml b/wisenergy-mapper/src/main/resources/mapper/userLikesMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a4951c28a214370cbf15d5017965dccf3aea0ed3
--- /dev/null
+++ b/wisenergy-mapper/src/main/resources/mapper/userLikesMapper.xml
@@ -0,0 +1,49 @@
+<?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="cn.wisenergy.mapper.userLikesMapper">
+    <resultMap id="zxMap" type="cn.wisenergy.model.app.userLikes">
+        <id column="like_id" property="likeId"/>
+        <result column="user_like_id" property="userLikeId"/>
+        <result column="liked_id" property="likedId"/>
+        <result column="liked_status" property="likedStatus"/>
+        <result column="liked_type" property="likedType"/>
+        <result column="liked_time" property="likedTime"/>
+    </resultMap>
+
+    <sql id="table">
+        user_likes
+    </sql>
+
+    <sql id="cols_all">
+        like_id as likeId,
+        <include refid="cols_exclude_id"/>
+    </sql>
+
+    <sql id="cols_exclude_id">
+        user_like_id as userLikeId,
+        liked_id as likedId,
+        liked_status as likedStaus,
+        liked_type as likedType
+    </sql>
+
+    <sql id="vals">
+        #{userLikeId},#{likedId},#{likedStaus},#{likedType}
+    </sql>
+
+    <!--查询点赞记录-->
+    <select id="selectlikes" parameterType="cn.wisenergy.model.app.userLikes" resultType="cn.wisenergy.model.app.userLikes" >
+    select *  from user_likes WHERE user_like_id=#{userLikeId} and  liked_id=#{likedId}
+    </select>
+
+    <!--点赞内容插入-->
+    <insert id="addlikes" parameterType="cn.wisenergy.model.app.userLikes">
+        insert into user_likes
+        (user_like_id,
+        liked_id ,
+        liked_status,
+        liked_type)
+        value(
+        #{userLikeId},#{likedId},#{likedStaus},#{likedType}
+        )
+    </insert>
+</mapper>
\ No newline at end of file
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/CustomerService.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/CustomerService.java
index df90bd04cbe7d8da27c75d00d7d00db1b71ceae9..e490bdb553948b6dc9024aa3f7119e3e50bb2492 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/CustomerService.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/CustomerService.java
@@ -21,7 +21,7 @@ public class CustomerService implements Serializable {
     @ApiModelProperty(name = "id", value = "主键id")
     private int id;
 
-    /**wechatImgUrl
+    /**
      * 专属客服id(微信号)
      */
     @ApiModelProperty(name = "wechatId", value = "专属客服id(微信号)")
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/MonthAward.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/MonthAward.java
index 7ff63bd62da90015688b54681419b689d578c575..d16d6600e1f6f2295877bbc5a0cae4a321f097bd 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/MonthAward.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/MonthAward.java
@@ -5,7 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.Date;
 
 /**
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java
index 95a3967a33fdc7ece8fd498038213af63a8bcbd7..c6d6f65335aec95ff69847e8529c7f387c510946 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/OrderInfo.java
@@ -28,8 +28,8 @@ public class OrderInfo {
     /**
      * ä¹°å®¶id
      */
-    @ApiModelProperty(name = "buyerId", value = "ä¹°å®¶id")
-    private String buyerId;
+    @ApiModelProperty(name = "userId", value = "用户id")
+    private String userId;
 
     /**
      * 商品id
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java
index 72d83c6c39e419a1ad099a49cdf2ae3ec5057e40..0c40409ed489c8c02c8ca57dd972760a4821e884 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/User.java
@@ -90,6 +90,12 @@ public class User  implements Serializable{
     @ApiModelProperty(name = "be_invited_code", value = "推荐人邀请码")
     private String beInvitedCode;
 
+    /**
+     * 专属客服id
+     */
+    @ApiModelProperty(name = "customerServiceId", value ="专属客服id" )
+    private String customerServiceId;
+
     /**
      * 创建时间
      */
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/UsersDto.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/UsersDto.java
index c6cdb9a0481ad89f46a02c0b2f38134ccac96080..ab1ba34113e3e890bbd8dcc1659f34f9e439a84b 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/UsersDto.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/UsersDto.java
@@ -1,19 +1,19 @@
 package cn.wisenergy.model.app;
 
-import io.swagger.annotations.ApiModelProperty;
 
+import lombok.Data;
 import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
 
 /**
  * Created by m1991 on 2021/3/1 14:00
+ * @author 86187
  */
+@Data
 public class UsersDto extends User implements Serializable {
     /**
      * 主键id
      */
-    private Integer id;     //  beInvitedCode":"1","id":65,"inviteCode":"GBY34L","userId":"19919990669","userLevel":0
+    private Integer id;
     /**
      * 手机号作为用户账号
      */
@@ -21,91 +21,16 @@ public class UsersDto extends User implements Serializable {
     /**
      * 用户头像
      */
-//    private String headImage;
+    private String headImage;
     /**
      * 用户会员等级
      */
     private int userLevel;
 
-    /**
-     * 跨境额度
-     */
-
-//    private BigDecimal crossBorderLine;
-
-
     /**
      * 用户本人邀请码
      */
     private String inviteCode;
 
-    /**
-     * 推荐人邀请码
-     */
-//    private String beInvitedCode;
-
-    /**
-     * 用户名称
-     */
-//    private Integer userName;
-
-    /**
-     * 创建时间
-     */
-//    private Date createTime;
-
-    //用户token
     private String token;
-
-    @Override
-    public Integer getId() {
-        return id;
-    }
-
-    @Override
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    @Override
-    public String getUserId() {
-        return userId;
-    }
-
-    @Override
-    public void setUserId(String userId) {
-        this.userId = userId;
-    }
-
-
-
-    @Override
-    public int getUserLevel() {
-        return userLevel;
-    }
-
-    @Override
-    public void setUserLevel(int userLevel) {
-        this.userLevel = userLevel;
-    }
-
-
-
-    @Override
-    public String getInviteCode() {
-        return inviteCode;
-    }
-
-    @Override
-    public void setInviteCode(String inviteCode) {
-        this.inviteCode = inviteCode;
-    }
-
-
-    public String getToken() {
-        return token;
-    }
-    public void setToken(String token) {
-        this.token = token;
-    }
 }
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/Variable.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/Variable.java
new file mode 100644
index 0000000000000000000000000000000000000000..e9eeab41224ecab66196e66f65967827451b97b5
--- /dev/null
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/Variable.java
@@ -0,0 +1,44 @@
+package cn.wisenergy.model.app;
+
+import lombok.Data;
+import java.util.Date;
+
+/**
+*@ Description:  变量表实体类
+*@ Author     : 86187
+*@ Date       : 2021/3/15 15:04
+ * @author 86187
+ */
+@Data
+public class Variable {
+    /**
+     * 变量主键
+     */
+    private Integer id;
+
+    /**
+     * 变量唯一标识
+     */
+    private String key;
+
+    /**
+     * 变量值
+     */
+    private String variableValue;
+
+    /**
+     * 变量描述
+     */
+    private String desc;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * æ›´æ–°æ—¶é—´
+     */
+    private Date updateTime;
+
+}
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/userLikes.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/userLikes.java
index 5d7760b50643a3805df63b2d854769b45163b0c3..9d7ffe75b9470deb73080774ab6e8e753ed58ba1 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/userLikes.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/userLikes.java
@@ -12,7 +12,7 @@ import java.sql.Timestamp;
  * Created by m1991 on 2021/3/12 15:57
  */
 @Data
-@ApiModel(value = "userLikes")
+@ApiModel(value = "userl_ikes")
 public class userLikes implements Serializable {
 
     private static final long serialVersionUID = 3050641578536493424L;
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/app/zxUserDto.java b/wisenergy-model/src/main/java/cn/wisenergy/model/app/zxUserDto.java
index 3d576bca4365b6617d87ab4d2d8bc8b742f84de6..69eb309bd6e6eca4c62aed4f3b3ffffe1fd053ec 100644
--- a/wisenergy-model/src/main/java/cn/wisenergy/model/app/zxUserDto.java
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/app/zxUserDto.java
@@ -17,7 +17,12 @@ public class zxUserDto {
     @TableField(exist = false)
     @ApiModelProperty(name = "user_id", value = "用户id")
     private String userId;
-
+    /*
+         * 用户头像
+     */
+    @TableField(exist = false)
+    @ApiModelProperty(name = "headImage", value = "用户头像")
+    private String headImage;
     /**
      * 资讯主键id
      */
diff --git a/wisenergy-model/src/main/java/cn/wisenergy/model/vo/TaxRateVo.java b/wisenergy-model/src/main/java/cn/wisenergy/model/vo/TaxRateVo.java
new file mode 100644
index 0000000000000000000000000000000000000000..5dd396b69c68385a8f0efda372da50f3fd433602
--- /dev/null
+++ b/wisenergy-model/src/main/java/cn/wisenergy/model/vo/TaxRateVo.java
@@ -0,0 +1,27 @@
+package cn.wisenergy.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author 86187
+ * @ Description:  提现税率Vo
+ * @ Author     : 86187
+ * @ Date       : 2021/3/15 15:24
+ */
+@Data
+@ApiModel("TaxRateVo")
+public class TaxRateVo  {
+    /**
+     * 实际金额
+     */
+    @ApiModelProperty(value = "实际金额", name = "actualMoney")
+    private Double actualMoney;
+
+    /**
+     * 税款金额
+     */
+    @ApiModelProperty(value = "税款金额", name = "taxMoney")
+    private Double taxMoney;
+}
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/Manager/AccountManager.java b/wisenergy-service/src/main/java/cn/wisenergy/service/Manager/AccountManager.java
index 0c6abf0c5756eed7e1ec518666e81d67abf480a4..086f0c6e49f784a9c2c4884ba6a8d6200d5a3fa6 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/Manager/AccountManager.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/Manager/AccountManager.java
@@ -86,7 +86,7 @@ public class AccountManager {
 
         //4、添加交易流水记录
         TradeRecord tradeRecord = new TradeRecord();
-        tradeRecord.setUserId(orderInfo.getBuyerId());
+        tradeRecord.setUserId(orderInfo.getUserId());
         tradeRecord.setTradeType(TradeRecordEnum.ORDER_REBATE.getCode());
         tradeRecord.setTradeNo(orderInfo.getTid());
         tradeRecord.setStatus(TradeStatusEnum.ALREADY_SETTLE_ACCOUNTS.getCode());
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/BankService.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/BankService.java
index 98058bc05897560a69c7778f29c92351d5e7f052..33d1adf053105c1c6bacfca306d0d459303b573b 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/BankService.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/BankService.java
@@ -3,6 +3,9 @@ package cn.wisenergy.service.app;
 import cn.wisenergy.common.utils.R;
 import cn.wisenergy.model.app.BankInfo;
 import cn.wisenergy.model.dto.WithdrawBankDto;
+import cn.wisenergy.model.vo.TaxRateVo;
+
+import java.util.List;
 
 /**
  * @author 86187
@@ -48,4 +51,20 @@ public interface BankService {
      */
     R<Boolean> userWithdrawBank(WithdrawBankDto dto);
 
+
+    /**
+     * 获取银行卡名称列表
+     *
+     * @return
+     */
+    R<List<String>> getBankNameList();
+
+    /**
+     * 获取提现税率信息
+     *
+     * @param money 提现金额
+     * @return 提现税率信息
+     */
+    R<TaxRateVo> getTaxRate(Double money);
+
 }
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/CustomerServiceService.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/CustomerServiceService.java
index f800e1a0f5933ba525a6251177cd38d419b55e33..d0ebf9f1557161e3e14f64c0c804663c31a4f70b 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/CustomerServiceService.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/CustomerServiceService.java
@@ -9,7 +9,11 @@ import java.io.IOException;
 import java.util.Map;
 
 public interface CustomerServiceService {
-    CustomerService getServiceByRand();
+    /**
+     * 获取专属客服
+     * @return
+     */
+    CustomerService getServiceByRand(String userId);
 
     void setWeChatQRImg(String wechatId, String file);
 
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/UploadService.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/UploadService.java
index b49b698bcb3cdf4a5e3e0315c3f7244927ff0c40..b97818e12fc5490841aaa60f98c8399342fa8726 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/UploadService.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/UploadService.java
@@ -22,13 +22,11 @@ public interface UploadService {
      Map<String, Object> uploadVideo(MultipartFile file,HttpServletRequest request,String zxField,String zxAddress,String inviteCode) throws Exception;
 
     /**
-     * TODO 图片文件上传
-     * @param request
-     * @param zxField
-     * @param zxAddress
+     * TODO 用户头像上传
+     *
      * @return
      */
-     Map<String, Object> uploadImage(MultipartFile file, HttpServletRequest request, String zxField, String zxAddress,String inviteCode) throws Exception;
+     Map<String, Object> uploadImage(MultipartFile file) throws Exception;
 
 
     /**
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java
index 26dd52584180be158bb779dc8774aedf8e257fde..da659e57f4806eb8872aabf0869f8b112a010415 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/AccountServiceImpl.java
@@ -82,7 +82,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo>
             long time = System.currentTimeMillis();
             if (RebateStatusEnum.NO_REBATE.getCode().equals(orderInfo.getRebateStatus()) && successTime <= time) {
                 //获取用户信息
-                User user = usersMapper.getByUserId(orderInfo.getBuyerId());
+                User user = usersMapper.getByUserId(orderInfo.getUserId());
                 if (null == user) {
                     continue;
                 }
@@ -132,13 +132,13 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, AccountInfo>
         //统计出出每个用户当月订单成交额 key:userId  value:用户当月订单成交额
         Map<String, Double> map = new HashMap<>();
         for (OrderInfo orderInfo : list) {
-            String userId = orderInfo.getBuyerId();
+            String userId = orderInfo.getUserId();
             double payMoney = orderInfo.getPayment().doubleValue();
 
             //key 存在  累加订单金额 到 value
             if (map.containsKey(userId)) {
-                double money = payMoney + map.get(orderInfo.getBuyerId());
-                map.put(orderInfo.getBuyerId(), money);
+                double money = payMoney + map.get(orderInfo.getUserId());
+                map.put(orderInfo.getUserId(), money);
             } else {
                 //key 不存在,加入集合
                 map.put(userId, payMoney);
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/BankServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/BankServiceImpl.java
index 2001de94a668782edf990e0831fe59d485b0912f..e46c49cfe6dc4f733dcf7c0769fe31d3ac0564d5 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/BankServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/BankServiceImpl.java
@@ -1,24 +1,24 @@
 package cn.wisenergy.service.app.impl;
 
 import cn.wisenergy.common.utils.*;
-import cn.wisenergy.mapper.AccountMapper;
-import cn.wisenergy.mapper.BankInfoMapper;
-import cn.wisenergy.mapper.TradeRecordMapper;
-import cn.wisenergy.mapper.UsersMapper;
-import cn.wisenergy.model.app.AccountInfo;
-import cn.wisenergy.model.app.BankInfo;
-import cn.wisenergy.model.app.TradeRecord;
-import cn.wisenergy.model.app.User;
+import cn.wisenergy.mapper.*;
+import cn.wisenergy.model.app.*;
 import cn.wisenergy.model.dto.WithdrawBankDto;
 import cn.wisenergy.model.enums.TradeRecordEnum;
 import cn.wisenergy.model.enums.TradeStatusEnum;
+import cn.wisenergy.model.vo.TaxRateVo;
 import cn.wisenergy.service.app.BankService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.Validate;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * @author 86187
  * @ Description: 银行卡相关接口实现
@@ -47,6 +47,11 @@ public class BankServiceImpl extends ServiceImpl<BankInfoMapper, BankInfo> imple
     @Autowired
     private TradeRecordMapper recordMapper;
 
+    @Autowired
+    private VariableMapper variableMapper;
+
+    private static final String TAX_RATE_KEY = "TAX_RATE_CODE";
+
 
     @Override
     public R<BankInfo> add(BankInfo bankInfo) {
@@ -166,4 +171,47 @@ public class BankServiceImpl extends ServiceImpl<BankInfoMapper, BankInfo> imple
         }
         return R.ok(0, true);
     }
+
+    @Override
+    public R<List<String>> getBankNameList() {
+        log.info("shop-mall[]BankServiceImpl[]edit[]input.method");
+
+        List<String> list = new ArrayList<>();
+        list.add("中国工商银行");
+        list.add("中国农业银行");
+        list.add("中国建设银行");
+        list.add("中国交通银行");
+        list.add("中国民生银行");
+        list.add("中国招商银行");
+        list.add("中国农商银行");
+        list.add("中国银行");
+        list.add("平安银行");
+        list.add("中国邮政储蓄银行");
+        list.add("浦发银行");
+        list.add("兴业银行");
+        list.add("中信银行");
+        return R.ok(list);
+    }
+
+    @Override
+    public R<TaxRateVo> getTaxRate(Double money) {
+        log.info("shop-mall[]BankServiceImpl[]getTaxRate[]input.param.money:" + money);
+        if (null == money) {
+            return R.error("入参为空!");
+        }
+
+        //获取提现税率信息
+        Variable validate = variableMapper.getByKey(TAX_RATE_KEY);
+        if (null == validate) {
+            return R.error("未设置提现税率,请联系后台管理员设置!");
+        }
+
+        TaxRateVo taxRateVo = new TaxRateVo();
+        Double value = Double.valueOf(validate.getVariableValue());
+        Double taxMoney = Math.floor(money * value / 100);
+        Double actualMoney = money - taxMoney;
+        taxRateVo.setActualMoney(actualMoney);
+        taxRateVo.setTaxMoney(taxMoney);
+        return R.ok(taxRateVo);
+    }
 }
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/CustomerServiceServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/CustomerServiceServiceImpl.java
index 36dbdbda987d6ba5381708491ef81df3c88ad6df..0da50936f03d0c61fe6cbc7e1e68805cf4af54f4 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/CustomerServiceServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/CustomerServiceServiceImpl.java
@@ -2,13 +2,17 @@ package cn.wisenergy.service.app.impl;
 
 import cn.wisenergy.common.utils.R;
 import cn.wisenergy.mapper.CustomerServiceMapper;
+import cn.wisenergy.mapper.UsersMapper;
 import cn.wisenergy.model.app.CustomerService;
+import cn.wisenergy.model.app.User;
 import cn.wisenergy.service.app.CustomerServiceService;
 import lombok.extern.slf4j.Slf4j;
+import org.aspectj.weaver.ast.Var;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
+import org.yaml.snakeyaml.events.Event;
 
 import javax.servlet.http.HttpServletRequest;
 import java.io.File;
@@ -24,12 +28,29 @@ public class CustomerServiceServiceImpl implements CustomerServiceService {
     @Autowired
     private CustomerServiceMapper customerServiceMapper;
 
+    @Autowired
+    private UsersMapper usersMapper;
+
     @Value("${uploadFile.location}")
     private String uploadQRImagesLocation;
 
     @Override
-    public CustomerService getServiceByRand(){
-        return customerServiceMapper.randService();
+    public CustomerService getServiceByRand(String userId){
+
+        User byUserId = usersMapper.getByUserId(userId);
+        String customerServiceId = byUserId.getCustomerServiceId();
+        if (null == customerServiceId){
+            CustomerService customerService = customerServiceMapper.randService();
+            String wechatImgUrl = customerService.getWechatId();
+            byUserId.setCustomerServiceId(wechatImgUrl);
+            usersMapper.updateById(byUserId);
+            return customerService;
+        }else {
+            CustomerService customerService = customerServiceMapper.selectbyWeChatId(customerServiceId);
+            return customerService;
+        }
+
+
     }
 
     @Override
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthAwardServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthAwardServiceImpl.java
index 4d0626bff87106a399a023c064a7c6cfb86db0c1..3e8d2b973a6be451993d960c0d5c70d4c892ee14 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthAwardServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthAwardServiceImpl.java
@@ -51,7 +51,11 @@ public class MonthAwardServiceImpl extends ServiceImpl<MonthAwardMapper, MonthAw
 
         //获取用户本月奖金
         Double sum = tradeRecordMapper.queryMonthAward(userId, new Date());
-        monthAwardVo.setUserMonthAward(sum);
+        if (null == sum) {
+            monthAwardVo.setUserMonthAward(0.00);
+        } else {
+            monthAwardVo.setUserMonthAward(sum);
+        }
         return R.ok(monthAwardVo);
     }
 }
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthTaskServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthTaskServiceImpl.java
index 095d996c92f3f7632eecf3a686c5238c7c460732..747fde35d9e92db352cb8c299dbe46e75ede38c1 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthTaskServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/MonthTaskServiceImpl.java
@@ -90,13 +90,13 @@ public class MonthTaskServiceImpl implements MonthTaskService {
         //统计出出每个用户上月订单成交额 key:userId  value:用户上月订单成交额
         Map<String, Double> map = new HashMap<>();
         for (OrderInfo orderInfo : list) {
-            String userId = orderInfo.getBuyerId();
+            String userId = orderInfo.getUserId();
             double payMoney = orderInfo.getPayment().doubleValue();
 
             //key 存在  累加订单金额 到 value
             if (map.containsKey(userId)) {
-                double money = payMoney + map.get(orderInfo.getBuyerId());
-                map.put(orderInfo.getBuyerId(), money);
+                double money = payMoney + map.get(orderInfo.getUserId());
+                map.put(orderInfo.getUserId(), money);
             } else {
                 //key 不存在,加入集合
                 map.put(userId, payMoney);
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java
index cd0a96d0a4d2e9d4777e2e01c7082ee9c84f8e0b..cfce71b8bac1ab09d89ca64f1979cad0999fb7be 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/OrderServiceImpl.java
@@ -1,6 +1,7 @@
 package cn.wisenergy.service.app.impl;
 
 import cn.wisenergy.mapper.OrderMapper;
+import cn.wisenergy.mapper.UsersMapper;
 import cn.wisenergy.model.app.OrderInfo;
 import cn.wisenergy.service.app.OrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -38,6 +39,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
 
     @Autowired
     private OrderMapper orderMapper;
+
+    @Autowired
+    private UsersMapper usersMapper;
     //有赞客户端
     DefaultYZClient yzClient = new DefaultYZClient();
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -98,8 +102,10 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
             }
 
             orderInfo.setItemId(itemList.toString());
-            //有赞的outer_user_id
-            orderInfo.setBuyerId(buyerInfo.getOuterUserId());
+            //有赞的outer_user_id 与有赞的对应关系是邀请码 邀请码唯一
+            String outerUserId = buyerInfo.getOuterUserId();
+            String userId = usersMapper.getUserIdByIntiveCode(outerUserId);
+            orderInfo.setUserId(userId);
             //支付方式
             orderInfo.setPayType(youzanOrderInfo.getPayType().toString());
             //有赞update_time
@@ -124,6 +130,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, OrderInfo> implem
             orderInfo.setPayment(new BigDecimal(payInfo.getPayment()));
             //rebate_status  返佣状态
             orderInfo.setRebateStatus(0);
+            //level_status  升级状态
+            orderInfo.setLevelStatus(0);
             //month_order_status  //当月订单处理状态
             orderInfo.setMonthOrderStatus(0);
             //monthly_task_status  //月度任务处理状态
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java
index 89f6220578a9e834dbd249775445a93a0174cbf1..962e3294d53c9616843af7f28dd7a6627cb8fd1c 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UploadServiceImpl.java
@@ -4,8 +4,10 @@ import cn.wisenergy.common.expection.BaseException;
 import cn.wisenergy.common.utils.*;
 
 import cn.wisenergy.mapper.UsersMapper;
+import cn.wisenergy.mapper.userLikesMapper;
 import cn.wisenergy.model.app.User;
 import cn.wisenergy.model.app.shopZx;
+import cn.wisenergy.model.app.userLikes;
 import cn.wisenergy.model.app.zxUserDto;
 import com.alibaba.fastjson.JSON;
 import org.springframework.core.io.Resource;
@@ -44,6 +46,9 @@ public class UploadServiceImpl implements UploadService {
     @Autowired
     private UsersMapper usersMapper;
 
+    @Autowired
+    private userLikesMapper LikesMapper;
+
    // @Value("${file.upload.path:#{null}}")
     private String path;
 
@@ -103,13 +108,13 @@ public class UploadServiceImpl implements UploadService {
          * 图片文件上传
          */
         @Override
-        public Map<String, Object> uploadImage(MultipartFile file, HttpServletRequest request,String zxField, String zxAddress,String inviteCode) throws Exception {
+        public Map<String, Object> uploadImage(MultipartFile file) throws Exception {
             Map<String, Object> resultMap=new HashMap<String, Object>();
 
             /**
              * 生成当前时间戳
              */
-            Long zxDate= Long.valueOf(System.currentTimeMillis());
+            Long zxDate= System.currentTimeMillis();
 
 //            request.getScheme() + "://" + request.getServerName()
 //                    + ":" + request.getServerPort()+"/upload/";
@@ -119,6 +124,7 @@ public class UploadServiceImpl implements UploadService {
             Long time = System.currentTimeMillis();
 
             String zxName = file.getOriginalFilename();//文件原始名称
+            assert zxName != null;
             String suffixName = zxName.substring(zxName.lastIndexOf("."));//从最后一个.开始截取。截取zxName的后缀名
             String newzxName = time+suffixName; //文件新名称
             //设置文件存储路径,可以存放在你想要指定的路径里面
@@ -138,7 +144,7 @@ public class UploadServiceImpl implements UploadService {
 
             resultMap.put("zxUrl", zxUrl);
             resultMap.put("returnCode", 0);
-            shopZxMapper.zxadd(zxUrl,zxField,zxAddress,inviteCode, zxDate);
+            shopZxMapper.zxadd1(zxUrl, zxDate);
             return resultMap;
         }
 
@@ -272,14 +278,20 @@ public class UploadServiceImpl implements UploadService {
         pageNum=pageNum-1;
         List<zxUserDto> shopZxList = shopZxMapper.selectPage(pageNum,pageSize);
         for (zxUserDto shopZx : shopZxList) {
-            String zxUrl = shopZx.getZxUrl();
-            ;
-            shopZx.setUserId(shopZx.getUserId().replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"));
-            String[] split = StringUtils.split(zxUrl, ",");
-            if (null != split){
-                List<String> strings = Arrays.asList(split);
-                shopZx.setAskImgList(strings);
+            String[] zxUrl = shopZx.getZxUrl().split(",");
+
+           // List<String> strings = Arrays.asList(split);
+          ArrayList list =new ArrayList();
+            if (null != zxUrl){
+            for (String split:zxUrl) {
+
+                boolean arrayList=Collections.addAll(list,split);
+
+                    shopZx.setAskImgList(list);
+                }
             }
+            shopZx.setUserId(shopZx.getUserId().replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2"));
+
         }
         map.put("data",shopZxList);
 
@@ -288,7 +300,7 @@ public class UploadServiceImpl implements UploadService {
 
     /**
      * 资讯点赞实现
-     * @param zxid
+     * @param
      * @return
      */
     @Override
@@ -298,32 +310,40 @@ public class UploadServiceImpl implements UploadService {
         User user=usersMapper.InvitedCode2(inviteCode);
 
         //用户等于null
-        if(null == inviteCode || "".equals(inviteCode)){
+        if(null == user || "".equals(user)){
             map.put("code",1);
             map.put("msg","用户信息不存在,请先注册!");
             return map;
             //用户存在
         }else {
             //判断该用户是否点过赞,如果点过赞,就返回信息告知前端,
-            user.getUserId();
-//            usersMapper.
-            // 没有点过的话,就进行插入点赞记录表,更新点赞数
-        }
+            String userLikeId=user.getUserId();
+            int likedId= zxid;
+            userLikes b= LikesMapper.selectlikes(userLikeId, likedId);
 
 
+            if(b==null){
 
+                // 没有点过的话,就进行插入点赞记录表,更新点赞数
+                Integer likedType=0;//点赞类型为扩展类型,暂时默认0
+                Integer likedStaus=1; //更新点赞状态
+                LikesMapper.addlikes(userLikeId,likedId,likedStaus,likedType);
+
+                    shopZx shopZx = shopZxMapper.selectByzxid(zxid);
+                    int a = shopZx.getZxLikes();
+                    Integer zxLikes=shopZx.setZxLikes(a + 1);
+                    shopZxMapper.updateByzxid(zxid,zxLikes);
+                    map.put("LikedStatus",likedStaus);
+                    map.put("code",0);
+                    map.put("msg","点赞成功!");
+                }else {
+
+                    map.put("code",1);
+                    map.put("msg","点赞失败!");
+                };
+
+        }
 
-        try {
-            shopZx shopZx = shopZxMapper.selectByzxid(zxid);
-            int a = shopZx.getZxLikes();
-            Integer zxLikes=shopZx.setZxLikes(a + 1);
-            shopZxMapper.updateByzxid(zxid,zxLikes);
-            map.put("code",0);
-            map.put("msg","点赞成功!");
-        }catch ( BaseException e){
-            map.put("code",1);
-            map.put("msg","点赞失败!");
-        };
         return map;
     }
 
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java
index eed1a212b53e07d606dfe5008d278d0c28e50135..7e4003ccf317da5b99cd6be554713845d681c2ef 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserForestStatusServiceImpl.java
@@ -72,15 +72,36 @@ public class UserForestStatusServiceImpl implements UserForestStatusService {
         TeamUserInfo teamUserInfobyUserId = teamUserInfoMapper.getByUserId(userId);
 
         //6.距离下级升级条件
-        if(userLevel < 2){
+        if(userLevel == 0){
             //用户等级 < 幼苗 显示业绩缺少额度
             //获取当前用户的业绩
             BigDecimal performanceByUserid = orderMapper.getPerformanceByUserid(userId);
+            if (performanceByUserid == null){
+                performanceByUserid = new BigDecimal(0);
+            }
             //距离升级还差多少额度
             BigDecimal differenceAmount = levelTerm.subtract(performanceByUserid);
             difference.put("differenceAmount",differenceAmount);
             userForestStatusMap.put("differenceMap",difference);
-        }else if (userLevel == 2){
+        }else if(userLevel == 1){
+            //用户等级为幼苗
+            //到达青铜树升级条件
+            int recommendSeedling = 5;
+            //获取当前用户直接推荐表中幼苗数量
+            Integer recommendseedlingNum = recommendUserMapperByUserId.getSeedlingNum();
+            //距离升级还差  recommendDifferenceSeedling
+            int recommendDifferenceSeedling =  recommendSeedling - recommendseedlingNum;
+            if (recommendDifferenceSeedling < 0){
+                recommendDifferenceSeedling = 0;
+            }
+            difference.put("recommendDifferenceSeedling",recommendDifferenceSeedling);
+            //距离升级所差百分比
+            float perenctFloat = ((float)recommendseedlingNum / recommendSeedling);
+            float perpenct = (float) Math.round(perenctFloat*100)/100;
+            userForestStatusMap.put("perenct",perpenct);
+            userForestStatusMap.put("differenceMap",difference);
+        }
+        else if (userLevel == 2){
             //用户等级为青铜树
             //到达白银树升级条件
             int recommendSeedling = 20;
@@ -134,7 +155,6 @@ public class UserForestStatusServiceImpl implements UserForestStatusService {
             difference.put("teamDifferenceBronze",teamDifferenceBronze);
             userForestStatusMap.put("differenceMap",difference);
 
-
         }else if (userLevel == 4){
             //用户等级为黄金树
 
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserLevelServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserLevelServiceImpl.java
index 2abe925ed74026c58d61f42d9681bbe33e954708..3f9dcfc20fcf1941c4234f2efcc349d08af07c50 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserLevelServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserLevelServiceImpl.java
@@ -59,7 +59,7 @@ public class UserLevelServiceImpl extends ServiceImpl<UsersMapper,User> implemen
         log.info("------------------------用户升级开始----------------------------------");
         List<OrderInfo> ordersByLevelStatus = orderMapper.getByLevelStatus(0);
         for (OrderInfo orderInfo : ordersByLevelStatus) {
-            String buyerId = orderInfo.getBuyerId();
+            String buyerId = orderInfo.getUserId();
             userLevelUpgrade(buyerId);
             //当前订单升级状态置为1
             orderInfo.setLevelStatus(1);
diff --git a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java
index 8b9d9e5ea23986748811e3b4099c596c06db20de..4f09510f6f0803649a95396e3ad5978b3153136e 100644
--- a/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java
+++ b/wisenergy-service/src/main/java/cn/wisenergy/service/app/impl/UserServiceImpl.java
@@ -15,8 +15,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.yaml.snakeyaml.events.Event;
 
 import java.math.BigDecimal;
+import java.sql.Timestamp;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -115,24 +117,49 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
             map.put("msg", "该用户已存在!请直接登录!");
             return map;
         }
+
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-ddhh:mm:ss");
+            Timestamp date =  java.sql.Timestamp.valueOf("2012-12-1201:12:11");
+            System.out.println(date);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
         /**
          * 判断用户推荐人的邀请码是否为空,空的话填写1   || "" == beInvitedCode
          */
         if ("".equals(beInvitedCode)  || null==beInvitedCode) {
-            beInvitedCode = "1";
 
-            //插入用户手机号与推荐人邀请码
-            usersMapper.insertbyint(userId, beInvitedCode);
-        } else if ("1".equals(beInvitedCode)) {
+
+            //插入用户手机号与推荐人邀请码user_id,invite_code,be_invited_code,user_level,create_time,update_time
+            String inviteCode="0";
+            beInvitedCode = "1";
+            int userLevel=0;
+            String headImage= Constants.Common.HEAD_POTRAIT;
+            usersMapper.insertbyint(userId, inviteCode,beInvitedCode,userLevel,headImage);
+            registUserMoudleInit(userId);
+        } else {
             //用户的被邀请码,查询到推荐人用户,根据推荐人用户的邀请码查询/修改
             User user = usersMapper.getByBeInvitedCode(beInvitedCode);
-            int ida = user.getId();
+
 //        邀请人的被邀请码
             String byqm = user.getBeInvitedCode();
 //        通过被邀请码,比对本人邀请码查询本人id
-            int idb = usersMapper.beInvitedCode1(beInvitedCode);
+
+            String idb = String.valueOf(usersMapper.beInvitedCode1(beInvitedCode));
+            //判断是否存在被邀请人的用户
+            if(null==usersMapper.beInvitedCode1(beInvitedCode)){
+                Map map = new HashMap();
+                R.error(1, "邀请码填写无效!邀请人不存在,请重新填写!");
+                map.put("code:", 1);
+                map.put("msg:", "邀请码填写无效!邀请人不存在,请重新填写!");
+                return map;
+            }
+            int idbc=Integer.valueOf(idb);
+            int ida = user.getId();
             //判断被邀请用户的创建时间是否比推荐人的用户时间晚
-            if (idb < ida) {
+            if (idbc > ida) {
                 Map map = new HashMap();
                 R.error(1, "注册失败!邀请码无效,请重新填写!");
                 map.put("code:", 1);
@@ -166,35 +193,21 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
             map.put("msg", "注册成功!");
             return map;
         }
-        //插入直推用户表
-        RecommendUser recommendUser = new RecommendUser();
-        recommendUser.setUserId(userId);
-        recommendUserMapper.insert(recommendUser);
-        //插入用户团队表
-        TeamUserInfo teamUserInfo = new TeamUserInfo();
-        teamUserInfo.setUserId(userId);
-        teamUserInfoMapper.insert(teamUserInfo);
-        //根据用户的推荐人邀请码比对推荐人的本人邀请码,查询推荐人的用户ID=userid
-        String userid = String.valueOf(usersMapper.inviteCodeBeInvitedCode(Integer.valueOf(beInvitedCode)));
-        //根据用户推荐人的userid,查询数据库,看推荐人用户是否存在
-        Integer a = recommendUserMapper.zcByUserId(userid);
-
-        //判断从数据库中是否存在该用户    如果存在,普通用户+1
-        if (null != a && 0 != a) {
-            Integer normalUserNum = recommendUser.getNormalUserNum();
-            //更新直推表用户中的普通用户字段+1
-            recommendUser.setNormalUserNum(normalUserNum + 1);
-            //更新直推表用户数据
-            recommendUserMapper.updateById(recommendUser);
-        } else {
-            Map map = new HashMap();
-            R.error(1, "注册失败!验证码无效,请重新填写!");
-            map.put("code:", 1);
-            map.put("msg:", "注册失败!验证码无效,请重新填写!");
-            return map;
+
+        //根据当前推荐人的邀请码查询 上级用户id
+        String userIdByIntive = usersMapper.getUserByIntiveCode(beInvitedCode);
+        if (null == userIdByIntive){
+            R.error(1,"用户推荐人邀请码不存在,请填写正确的邀请码");
+        }else{
+            //上级用户的直推信息 普通用户数量+1
+            RecommendUser recommendUserMapperByUserId = recommendUserMapper.getByUserId(userIdByIntive);
+            Integer normalUserNum = recommendUserMapperByUserId.getNormalUserNum();
+            recommendUserMapperByUserId.setNormalUserNum(normalUserNum+1);
+            recommendUserMapper.updateById(recommendUserMapperByUserId);
         }
+
         //递归向上修改团队用户信息表
-        teamgg(beInvitedCode);
+        teamUserInfo(beInvitedCode);
         Map map = new HashMap();
         R.ok("直推表普通用户数量+1成功!", 0);
         map.put("code:", 0);
@@ -233,6 +246,7 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
         return R.ok(aerialDeliveryVo);
     }
 
+
     @Override
     public R<Boolean> setHeadImage(String userId, String headImage) {
         log.info("shop-mall[]UserServiceImpl[]setHeadImage[]input.param.userId,headImage:" + userId, headImage);
@@ -288,28 +302,26 @@ public class UserServiceImpl extends ServiceImpl<UsersMapper, User> implements U
         return R.ok(0, true);
     }
 
-    //私有构造方法-传入被邀请码
-    private R teamgg(String beInvitedCode) {
-        //用户的被邀请码,查询到推荐人用户,根据推荐人用户的邀请码查询/修改
-        User user = usersMapper.getByBeInvitedCode(beInvitedCode);
-        //根据用户的推荐人邀请码比对推荐人的本人邀请码,查询推荐人的用户ID=userid
-        String userid = String.valueOf(usersMapper.inviteCodeBeInvitedCode(Integer.valueOf(beInvitedCode)));
-        //根据用户推荐人的userid,查询数据库,看推荐人用户是否存在
-        Integer c = teamUserInfoMapper.czByUserId(userid);
-        if (null != c && 0 != c) {
-            TeamUserInfo teamUserInfo = new TeamUserInfo();
-            int normalUserNum1 = teamUserInfo.getNormalUserNum();
-            //更新团队表用户中的普通用户字段+1
-            teamUserInfo.setNormalUserNum(normalUserNum1 + 1);
-            //更新团队表用户数据
-            teamUserInfoMapper.updateById(teamUserInfo);
-        } else {
-            return R.error(0, "验证码无效");
+    //团队用户数据维护
+    public void teamUserInfo(String beInvitedCode) {
+        //根据邀请码查询上级用户的id
+        String teamUserId = usersMapper.getUserByIntiveCode(beInvitedCode);
+        //查询上级用户的团队信息表
+        TeamUserInfo teamUserInfoByUserId = teamUserInfoMapper.getByUserId(teamUserId);
+        //上级用户团队信息普通用户数量+1
+        Integer normalUserNum = teamUserInfoByUserId.getNormalUserNum();
+        teamUserInfoByUserId.setNormalUserNum(normalUserNum + 1);
+        teamUserInfoMapper.updateById(teamUserInfoByUserId);
+        //根据上级用户id查询上级用户的邀请码
+        User teamUser = usersMapper.getByUserId(teamUserId);
+        String teamUserBeInvitedCode = teamUser.getBeInvitedCode();
+        //递归实现上级所有的用户普通数量 + 1
+        //若团队用户的被邀请码为 1 时 则没有上级用户用户
+        if ("1".equals(teamUserBeInvitedCode)){
+            teamUserInfo(teamUserBeInvitedCode);
+        }else {
+            return;
         }
-        beInvitedCode = user.getBeInvitedCode();
-        //递归向上修改团队用户信息表
-        teamgg(beInvitedCode);
-        return R.ok("团队表普通用户数量+1成功!", 0);
     }
     /**
      * 用户登出
diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/BankController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/BankController.java
index 151515edc87708007776b64d950fc6f50d37b45d..8023ad9439248a294dcb7f1b7a62ba4a7035649c 100644
--- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/BankController.java
+++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/BankController.java
@@ -3,6 +3,7 @@ package cn.wisenergy.web.admin.controller.app;
 import cn.wisenergy.common.utils.R;
 import cn.wisenergy.model.app.BankInfo;
 import cn.wisenergy.model.dto.WithdrawBankDto;
+import cn.wisenergy.model.vo.TaxRateVo;
 import cn.wisenergy.service.app.BankService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -12,6 +13,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * @author 86187
  */
@@ -80,4 +83,19 @@ public class BankController {
 
         return bankService.userWithdrawBank(dto);
     }
+
+    @ApiOperation(value = "获取银行名称列表", notes = "获取银行名称列表", httpMethod = "GET")
+    @GetMapping("/getBankNameList")
+    public R<List<String>> getBankNameList() {
+        log.info("shop-mall[]BankController[]getBankNameList[]input.method");
+        return bankService.getBankNameList();
+    }
+
+    @ApiOperation(value = "获取提现税率信息", notes = "获取提现税率信息", httpMethod = "GET")
+    @ApiImplicitParam(name = "money", value = "提现金额", dataType = "double")
+    @GetMapping("/getTaxRate")
+    public R<TaxRateVo> getTaxRate(Double money) {
+        log.info("shop-mall[]BankController[]getTaxRate[]input.method");
+        return bankService.getTaxRate(money);
+    }
 }
diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/CustomerServiceController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/CustomerServiceController.java
index 0ee741bb73d9d4a43fa80c4b811174715952562a..4d5139b224a8af655a8122d0c57ca1836891d0cd 100644
--- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/CustomerServiceController.java
+++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/CustomerServiceController.java
@@ -1,6 +1,7 @@
 package cn.wisenergy.web.admin.controller.app;
 
 import cn.wisenergy.common.utils.R;
+import cn.wisenergy.mapper.UsersMapper;
 import cn.wisenergy.model.app.CustomerService;
 import cn.wisenergy.service.app.CustomerServiceService;
 import io.swagger.annotations.Api;
@@ -25,11 +26,16 @@ public class CustomerServiceController {
     @Autowired
     private CustomerServiceService customerServiceService;
 
+    /**
+     * 给用户分配专属客服
+     * @param userId
+     * @return
+     */
     @ApiOperation(value = "获取专属客服", notes = "获取专属客服")
     @GetMapping("/service")
-    public R getServiceByRand(){
+    public R<String> getServiceByRand(String userId){
         try {
-            CustomerService serviceByRand = customerServiceService.getServiceByRand();
+            CustomerService serviceByRand = customerServiceService.getServiceByRand(userId);
             String wechatImgUrl = serviceByRand.getWechatImgUrl();
             return R.ok(wechatImgUrl);
         }catch (Exception e){
@@ -38,12 +44,16 @@ public class CustomerServiceController {
     }
 
     /**
-     * String wechatId ,@RequestParam("file") MultipartFile file,
-     * 上传专属客服微信二维码图片
+     *  上传专属客服的二维码图片及微信ID
+     * @param file  图片文件
+     * @param request
+     * @param wechatId   微信ID
+     * @return
      */
+    @ApiOperation(value = "设置专属客服二维码图片及微信id", notes = "设置专属客服二维码图片及微信id")
     @ResponseBody
     @PostMapping("/uploadWeChatImg")
-    public R uploadWeChatQRImg(@RequestParam("file")MultipartFile file,HttpServletRequest request,String wechatId){
+    public R<String> uploadWeChatQRImg(@RequestParam("file")MultipartFile file,HttpServletRequest request,String wechatId){
 
         try {
             customerServiceService.uploadImage(file,request,wechatId);
diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/LoginController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/LoginController.java
index 89e2dc35a87f733cb34d9d2bf3786c790d2aeef9..323e57910b37b44bbfc3b64b6bfb18bc851e59c9 100644
--- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/LoginController.java
+++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/LoginController.java
@@ -34,6 +34,7 @@ import java.util.Map;
 
 /**
  * Created by m1991 on 2021/3/2 13:35
+ * @author 86187
  */
 @Api(tags = "登录/注册")
 @Slf4j
@@ -48,16 +49,13 @@ public class LoginController {
     @Autowired
     private UserService usersService;
 
-//        @Autowired
-//        private Result result;
-
     /**
      * 手机登录接口
      *
-     * @param userId
-     * @param sms
-     * @return
-     * @throws Exception
+     * @param userId 用户id
+     * @param sms 短信验证码
+     * @return 返回结果
+     * @throws Exception 异常
      */
 
     @ApiOperation(value = "登录", notes = "登录", httpMethod = "POST", produces = "application/json;charset=UTF-8")
@@ -74,13 +72,14 @@ public class LoginController {
 
             map.put("code", "1003");
             map.put("msg", "验证码错误");
-//            throw new BaseException(ResultEnum.FAIL_VERIFY);
             return map;
         }
         redisUtils.delete(key);
         //根据手机号判断用户是否存在
         //不存在则保存用户信息--修改为提示用户注册
         users = usersService.queryUsersByPhone(userId);
+        register(userId,"1",sms);
+
         if (null == users) {
             //throw new BaseException(ResultEnum.FAIL_ACCOUNT_NOT_EXIST);
             map.put("code", "1005");
@@ -102,6 +101,8 @@ public class LoginController {
         return (Map) ResultUtils.returnFail();
     }
 
+
+
     public String createToken(User users) throws Exception {
         String token = StringUtil.createToken();
         //保存token
@@ -119,9 +120,9 @@ public class LoginController {
         String tokenKey = StringUtil.formatKeyWithPrefix(Constants.RedisKey.PROJECT_PRIFIX, Constants.RedisKey.TOKEN_PRIFIX, token);
         String userDtoJson = redisUtils.getValue(tokenKey);
         if (StringUtil.isBlank(userDtoJson)) {
-//            Map map = new HashMap();
-//            map.put("code", "2001");
-//            map.put("msg", "未登录");
+            Map map = new HashMap();
+            map.put("code", "2001");
+            map.put("msg", "未登录");
             return ResultUtils.returnFail("未登录");
         }
         UsersDto usersDto = JSONObject.parseObject(userDtoJson, UsersDto.class);
@@ -193,17 +194,17 @@ public class LoginController {
     /**
      * 退出登录
      *
-     * @param request
+     * @param token
      * @return
      */
     @ApiOperation(value = "退出登录", produces = "application/json", notes = "退出登录")
     @ApiImplicitParam(paramType = "header", name = "token", value = "用户token", required = true, dataType = "String")
     @PostMapping("/logout")
-    public Result logout(HttpServletRequest request) {
+    public Result logout(String token) {
         log.info("退出登录");
         Result result = ResultUtils.returnFail();
-        String token = request.getHeader("token");
-        String key = RedisKeyUtils.formatKeyWithPrefix(Constants.Redis.PREFIX_TOKEN, token);
+//        String token = request.getHeader("token");HttpServletRequest request
+        String key = RedisKeyUtils.formatKeyWithPrefix(token);
         if (redisUtils.getValue(key) == null) {
             log.info("要退出登录的用户未登录");
             return ResultUtils.returnResult(ResultEnum.FILE_NOT_LOGIN);
diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/MonthTaskController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/MonthTaskController.java
new file mode 100644
index 0000000000000000000000000000000000000000..770a321052f4644878b41b537b43a70b5617940c
--- /dev/null
+++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/MonthTaskController.java
@@ -0,0 +1,44 @@
+package cn.wisenergy.web.admin.controller.app;
+
+import cn.wisenergy.common.utils.R;
+import cn.wisenergy.service.app.MonthTaskService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 86187
+ */
+@Api(tags = "月度任务管理")
+@RestController
+@RequestMapping("/task")
+@Slf4j
+public class MonthTaskController {
+    @Autowired
+    private MonthTaskService monthTaskService;
+
+    @ApiOperation(value = "月度肥料--月定时任务", notes = "月度肥料--月定时任务", httpMethod = "GET")
+    @GetMapping("/monthManure")
+    public R<Boolean> monthManure() {
+        return monthTaskService.performanceCount();
+    }
+
+    @ApiOperation(value = "最大进步奖--月定时任务", notes = "最大进步奖--月定时任务", httpMethod = "GET")
+    @GetMapping("/growAward")
+    public R<Boolean> growAward() {
+        return monthTaskService.progressPrizeCount();
+    }
+
+    @ApiOperation(value = "", notes = "账户表镜像---每月更新一次,保存上一个的数据", httpMethod = "GET")
+    @GetMapping("/mirrorImage")
+    public R<String> mirrorImage() {
+        monthTaskService.mirrorImage();
+        return R.ok("success");
+    }
+
+
+}
diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/TestController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/TestController.java
index 51a940305e9a5054bf38f00732bb2759a3e19fd1..f8086482685ef4c8ba174f6161615b93094d219f 100644
--- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/TestController.java
+++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/TestController.java
@@ -1,10 +1,7 @@
 package cn.wisenergy.web.admin.controller.app;
 
 
-import cn.wisenergy.common.utils.Result;
-import cn.wisenergy.common.utils.ResultUtils;
-import cn.wisenergy.common.utils.ShareCodeUtil;
-import cn.wisenergy.common.utils.SmsUtils;
+import cn.wisenergy.common.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -13,7 +10,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
 @Api(tags = "短信服务测试,邀请码测试")
 @RestController
@@ -55,12 +54,38 @@ public class TestController {
 
     public static void main(String [] args){
 
-        /**
-         * 隐藏中间四位的方法
-         */
-        String phone = "18501234234";
+        String str="/upload/1a65a6a40-f158-4b03-929a-454c88935a8b.jpg,/upload/1c9dfb994-9f5b-471a-ac7d-93a323089dd2.jpg,/upload/10c03f8cf-d210-486e-bbd4-813a271be298.jpeg,/upload/15e340d63-157c-4374-bf98-ffd1528f0aae.jpeg,";
 
-        String hidenPhone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
+        List list =new ArrayList();
+           // String str = "打印机*钟表//自行车**雨伞%%收音机??电脑";
+            String temp[] = str.split(",");
+            for(String word : temp)
+            {
+
+                boolean arrayList=Collections.addAll(list,word);
+
+            }
+        System.out.println(list.get(1));
+
+
+
+        //        String[] split= StringUtils.split(",");
+//        List list = new ArrayList();
+//        list.add(split);
+//        System.out.println(list);
+
+//        String[] dbcodeArray = techCatalog.getDbcodeArray();
+//        List<String> dbCode=null;
+//        if(dbcodeArray!=null){
+//            dbCode = Arrays.asList(dbcodeArray);
+//        }
+
+//        /**
+//         * 隐藏中间四位的方法
+//         */
+//        String phone = "18501234234";
+//
+//        String hidenPhone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})","$1****$2");
 
 
 //        /**
@@ -80,7 +105,7 @@ public class TestController {
 //        String b = ShareCodeUtil.idToCode(1);
 //       String a= ShareCodeUtil.idToCode(1,0+1);
 
-       System.out.println(hidenPhone);
+
     }
 
     @ApiOperation(value = "测试短信服务,发送手机号", notes = "测试短信服务,发送手机号", httpMethod = "POST", produces = "application/json; charset=UTF-8")
diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UploadController.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UploadController.java
index 47e5e83c085d0e8990f1953bbc2c860962041cd0..63bc361ab604ca7dacf008adb385783d92bc8807 100644
--- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UploadController.java
+++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/admin/controller/app/UploadController.java
@@ -29,6 +29,9 @@ public class UploadController {
     @Autowired
     private UploadService uploadService;
 
+    @Autowired
+    private UserController userController;
+
     /**
      * @param request
      * @return
@@ -61,7 +64,7 @@ public class UploadController {
     /**
      * TODO 用户头像上传
      *
-     * @param request
+     * @param
      * @return
      * @throws Exception
      */
@@ -70,8 +73,9 @@ public class UploadController {
             @ApiImplicitParam(name = "file", value = "单图片", dataType = "MultipartFile"),
             @ApiImplicitParam(name = "inviteCode", value = "用户本人邀请码(发布人)", required = true, dataType = "String")})
     @RequestMapping(value = "/uploadImage", method = RequestMethod.POST)
-    public Map<String, Object> uploadImage(@RequestParam(value = "files")MultipartFile file, HttpServletRequest request, String zxField, String zxAddress ,String inviteCode) throws Exception {
-        return uploadService.uploadImage(file,request,zxField,zxAddress,inviteCode);
+    public Map<String, Object> uploadImage(@RequestParam(value = "files")MultipartFile file) throws Exception {
+
+        return uploadService.uploadImage(file);
     }
 
 
diff --git a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/shiro/filter/JwtFilter.java b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/shiro/filter/JwtFilter.java
index f12c10affc96e09ce992df0d270014187c93869e..1463a0d7e41a98af7ee6d4c3a6df5181ee30cc72 100644
--- a/wisenergy-web-admin/src/main/java/cn/wisenergy/web/shiro/filter/JwtFilter.java
+++ b/wisenergy-web-admin/src/main/java/cn/wisenergy/web/shiro/filter/JwtFilter.java
@@ -1,14 +1,11 @@
 package cn.wisenergy.web.shiro.filter;
 
 import cn.wisenergy.common.enums.RespCodeEnum;
-import cn.wisenergy.common.utils.HttpContextUtils;
 import cn.wisenergy.common.utils.exception.Result;
 import cn.wisenergy.web.shiro.AuthToken;
 import com.alibaba.fastjson.JSON;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.AuthenticationToken;
-import org.apache.shiro.authz.UnauthorizedException;
 import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,7 +39,7 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
     @Override
     protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) {
         //获取请求token
-        String token = ((HttpServletRequest) request).getHeader("Authorization");
+        String token = ((HttpServletRequest) request).getHeader("token");
         if (StringUtils.isBlank(token)) {
             return null;
         }
@@ -73,7 +70,7 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
     @Override
     protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) {
         HttpServletRequest req = (HttpServletRequest) request;
-        String authorization = req.getHeader("Authorization");
+        String authorization = req.getHeader("token");
         return authorization != null;
     }
 
@@ -84,11 +81,11 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
     protected boolean executeLogin(ServletRequest servletRequest, ServletResponse servletResponse) {
         HttpServletRequest request = (HttpServletRequest) servletRequest;
         String authorization = getRequestToken(request);
-        if (StringUtils.isNotBlank(authorization)) {
-            if (authorization.startsWith("Bearer ")) {
-                authorization = authorization.substring(7);
-            }
-        }
+ /*       if (StringUtils.isNotBlank(authorization)) {
+                if (authorization.startsWith("Bearer ")) {
+                    authorization = authorization.substring(7);
+                }
+        }*/
 
         AuthToken token = new AuthToken(authorization);
         // 提交给realm进行登入,如果错误他会抛出异常并被捕获
@@ -161,7 +158,7 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
      */
     private String getRequestToken(HttpServletRequest httpRequest) {
         //从header中获取token
-        return httpRequest.getHeader("Authorization");
+        return httpRequest.getHeader("token");
     }
 
 }
diff --git a/wisenergy-web-admin/src/main/resources/application-dev.yml b/wisenergy-web-admin/src/main/resources/application-dev.yml
index 8ec5489f1595eed4f549e199d9ac9dd6f7724b6f..3c8f9e56f2ed1e87649ca020757c3d5d2655c148 100644
--- a/wisenergy-web-admin/src/main/resources/application-dev.yml
+++ b/wisenergy-web-admin/src/main/resources/application-dev.yml
@@ -43,12 +43,12 @@ spring:
       max-file-size: 20MB
       # 总限制
       max-request-size: 40MB
-#  192.168.110.165  adm4HYservice$
+  #  192.168.110.165  adm4HYservice$
   redis:
     database: 0
-    host: 192.168.110.165
+    host: 127.0.0.1
     port: 6379
-    password: adm4HYservice$    # 密码(默认为空)
+    password: 123456    # 密码(默认为空)
     timeout: 6000ms  # 连接超时时长(毫秒)
     jedis:
       pool:
diff --git a/wisenergy-web-admin/wisenergy-web-admin.iml b/wisenergy-web-admin/wisenergy-web-admin.iml
index eccc40cf8657ec5eb15c70cf6a24b1d64e62ed92..7e61bed3fdd76931ccc50aaabc956ce7d5996e56 100644
--- a/wisenergy-web-admin/wisenergy-web-admin.iml
+++ b/wisenergy-web-admin/wisenergy-web-admin.iml
@@ -10,4 +10,213 @@
       </configuration>
     </facet>
   </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:1.3.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-core:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.27" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-json:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.11.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.4" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-parameter-names:2.11.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.43" level="project" />
+    <orderEntry type="library" name="Maven: org.glassfish:jakarta.el:3.0.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:9.0.43" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-web:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.3.4" level="project" />
+    <orderEntry type="module" module-name="wisenergy-service" />
+    <orderEntry type="module" module-name="wisenergy-mapper" />
+    <orderEntry type="module" module-name="wisenergy-model" />
+    <orderEntry type="module" module-name="wisenergy-common" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: io.undertow:undertow-core:2.2.4.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.4.1.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.8.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.wildfly.common:wildfly-common:1.5.2.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.wildfly.client:wildfly-client-config:1.0.1.Final" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.8.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.threads:jboss-threads:3.1.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.2.4.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.3_spec:2.0.1.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.2.4.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.jboss.spec.javax.websocket:jboss-websocket-api_1.1_spec:2.0.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: jakarta.servlet:jakarta.servlet-api:4.0.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.9.6" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:2.1.4" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.5.6" level="project" />
+    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:2.0.6" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.3.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:5.2.0" level="project" />
+    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:3.2" level="project" />
+    <orderEntry type="library" name="Maven: mysql:mysql-connector-java:8.0.23" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-boot-starter:3.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus:3.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-extension:3.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-core:3.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.baomidou:mybatis-plus-annotation:3.3.2" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.2.5" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:druid:1.2.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:2.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:2.4.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:2.4.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.4.5" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:5.3.4" level="project" />
+    <orderEntry type="library" name="Maven: io.lettuce:lettuce-core:6.0.2.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.59.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.59.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.59.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.59.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.59.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.59.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.3" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.10.20" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.5.1" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
+    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.6.2" level="project" />
+    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.6.2" level="project" />
+    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
+    <orderEntry type="library" name="Maven: joda-time:joda-time:2.10.8" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi:3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.9" level="project" />
+    <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" />
+    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.0.b2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.9" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:guava:30.1-jre" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:failureaccess:1.0.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.findbugs:jsr305:3.0.2" level="project" />
+    <orderEntry type="library" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
+    <orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.3.4" level="project" />
+    <orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
+    <orderEntry type="library" name="Maven: com.hikvision.ga:artemis-http-client:1.1.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.1" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
+    <orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" />
+    <orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.11.66.ALL" level="project" />
+    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.75" level="project" />
+    <orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
+    <orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.14.9" level="project" />
+    <orderEntry type="library" name="Maven: com.squareup.okio:okio:1.17.2" level="project" />
+    <orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.13" level="project" />
+    <orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
+    <orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
+    <orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-core:1.0.7-RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-gen:1.0.7.78771202102051104-RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-api:1.0.7-RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.youzan.cloud:open-sdk-common:1.0.7-RELEASE" level="project" />
+    <orderEntry type="library" name="Maven: com.xuxueli:xxl-job-core:2.3.0" level="project" />
+    <orderEntry type="library" name="Maven: io.netty:netty-all:4.1.59.Final" level="project" />
+    <orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.5.14" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco:javacv:1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco:javacpp:1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:opencv:3.4.3-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:flycapture:2.11.3.121-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libdc1394:2.2.5-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libfreenect:0.5.3-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:libfreenect2:0.2.0-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:librealsense:1.12.1-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:videoinput:0.200-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:artoolkitplus:2.3.1-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:flandmark:1.07-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:leptonica:1.76.0-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:tesseract:4.0.0-rc2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg-platform:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:android-arm:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:android-arm64:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:android-x86:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:android-x86_64:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:linux-x86:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:linux-x86_64:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:linux-armhf:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:linux-ppc64le:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:macosx-x86_64:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:windows-x86:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.bytedeco.javacpp-presets:ffmpeg:windows-x86_64:4.0.2-1.4.3" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-cache:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-hash:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-core:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-crypto-cipher:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-core:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-config-ogdl:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-event:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.7.1" level="project" />
+    <orderEntry type="library" name="Maven: org.owasp.encoder:encoder:1.2.2" level="project" />
+    <orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.3" level="project" />
+    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.6" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.12" level="project" />
+    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.13" level="project" />
+    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
+    <orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
+    <orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
+    <orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
+    <orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
+    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
+    <orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
+    <orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
+    <orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
+    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.17" level="project" />
+    <orderEntry type="library" name="Maven: com.google.zxing:javase:3.4.1" level="project" />
+    <orderEntry type="library" name="Maven: com.google.zxing:core:3.4.1" level="project" />
+    <orderEntry type="library" name="Maven: com.beust:jcommander:1.78" level="project" />
+    <orderEntry type="library" scope="RUNTIME" name="Maven: com.github.jai-imageio:jai-imageio-core:1.4.0" level="project" />
+    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.4" level="project" />
+    <orderEntry type="library" name="Maven: commons-io:commons-io:2.8.0" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: javax.servlet:javax.servlet-api:4.0.1" level="project" />
+    <orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.18" level="project" />
+  </component>
 </module>
\ No newline at end of file