yujian
2020-05-13 585b487cc71d06b2f76883f6f3b7247d1378874e
Merge remote-tracking branch 'origin/div' into div
5个文件已添加
16个文件已修改
803 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderCountMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/UserOrderDailyStatisticDTO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/UserOrderDailyStatisticMapper.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/vip/UserVIPPreInfoMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/ThreeSaleDetailDao.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ThreeSaleDetail.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/team/TeamStatisticJob.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/order/UserOrderDailyStatisticMapper.xml 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/user/vip/UserVIPPreInfoMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleDetailSerivceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleDetailService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleSerivce.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/vip/UserVIPPreInfoService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/user/UserTeamStatisticManager.java 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/CommonOrderFactory.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java
@@ -16,14 +16,13 @@
    int insertSelective(ThreeSale record);
    int updateByPrimaryKey(ThreeSale record);
    int updateByPrimaryKeySelective(ThreeSale record);
    ThreeSale selectByPrimaryKey(Long id);
    UserInfo selectBoss(Long uid);
    /**
     * 根据被邀请者ID查询
     * 
@@ -31,7 +30,6 @@
     * @return
     */
    ThreeSale getByWorkerId(Long workerId);
    /**
     * 
@@ -39,7 +37,6 @@
     * @return
     */
    ThreeSale getMyBoss(@Param("uid") Long uid);
    /**
     * 根据下级查询成功的邀请关系
@@ -48,7 +45,6 @@
     */
    ThreeSale selectSuccessByWorkerId(Long workerId);
    /**
     * 根据邀请者ID查询关系
     * 
@@ -56,8 +52,6 @@
     * @return
     */
    List<ThreeSale> listByWorkerId(Long workerId);
    /**
     * 一级查询-后台查询
@@ -73,8 +67,9 @@
            @Param("state") Integer state, @Param("startTime") String startTime, @Param("endTime") String endTime,
            @Param("validState") Integer validState);
    long countFirstTeamQuery(@Param("uid") Long uid, @Param("state") Integer state, @Param("startTime") String startTime,
            @Param("endTime") String endTime, @Param("validState") Integer validState);
    long countFirstTeamQuery(@Param("uid") Long uid, @Param("state") Integer state,
            @Param("startTime") String startTime, @Param("endTime") String endTime,
            @Param("validState") Integer validState);
    /**
     * 二级查询 -后台查询
@@ -87,11 +82,12 @@
     * @return
     */
    List<ThreeSale> listSecondTeamQuery(@Param("start") long start, @Param("count") int count, @Param("uid") Long uid,
            @Param("state") Integer state, @Param("startTime") String startTime, @Param("endTime") String endTime
            ,@Param("validState") Integer validState);
            @Param("state") Integer state, @Param("startTime") String startTime, @Param("endTime") String endTime,
            @Param("validState") Integer validState);
    long countSecondTeamQuery(@Param("uid") Long uid, @Param("state") Integer state,
            @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("validState") Integer validState);
            @Param("startTime") String startTime, @Param("endTime") String endTime,
            @Param("validState") Integer validState);
    /**
     * 上级查询 -后台查询
@@ -106,8 +102,6 @@
    long countSuperiorQuery(@Param("state") Integer state, @Param("uid") Long uid);
    /**
     * 查询一级队员
     * @param start
@@ -116,7 +110,7 @@
     * @return
     */
    List<ThreeSale> listFirstTeam(@Param("start") long start, @Param("count") int count, @Param("uid") Long uid,
            @Param("listId")List<Long> listId);
            @Param("listId") List<Long> listId);
    /**
     * 查询二级队员
@@ -126,38 +120,36 @@
     * @return
     */
    List<ThreeSale> listSecondTeam(@Param("start") long start, @Param("count") int count, @Param("uid") Long uid,
            @Param("listId")List<Long> listId);
            @Param("listId") List<Long> listId);
    /**
     * 统计一级队员
     * @param uid
     * @return
     */
    long countFirstTeam(@Param("uid") Long uid, @Param("listId")List<Long> listId);
    long countFirstTeam(@Param("uid") Long uid, @Param("listId") List<Long> listId);
    /**
     * 统计二级队员
     * @param uid
     * @return
     */
    long countSecondTeam(@Param("uid") Long uid, @Param("listId")List<Long> listId);
    long countSecondTeam(@Param("uid") Long uid, @Param("listId") List<Long> listId);
    /**
     * 统计一级队员
     * @param uid
     * @return
     */
    long countFirstTeamByDate(@Param("uid") Long uid, @Param("dayType")int dayType);
    long countFirstTeamByDate(@Param("uid") Long uid, @Param("dayType") int dayType);
    /**
     * 统计二级队员
     * @param uid
     * @return
     */
    long countSecondTeamByDate(@Param("uid") Long uid, @Param("dayType")int dayType);
    long countSecondTeamByDate(@Param("uid") Long uid, @Param("dayType") int dayType);
    /**
     * 根据id、uid查询
     * 
@@ -167,7 +159,6 @@
     */
    List<ThreeSale> listbyIdAndBossId(@Param("id") Long id, @Param("uid") Long uid, @Param("expire") Integer expire);
    /**
     * 获取成功邀请关系数量
     * 
@@ -175,8 +166,7 @@
     * @return
     */
    int getSuccessRelationshipNum(@Param("uid") Long uid);
    /**
     * 根据邀请者ID、bossID查询 有效关系
     * 
@@ -184,8 +174,7 @@
     * @return
     */
    ThreeSale getRelationshipByBossIdAndWorkerId(@Param("bossId") Long bossId, @Param("workerId") Long workerId);
    /**
     * 最后一次关系记录 -无论
     * @param bossId
@@ -193,9 +182,7 @@
     * @return
     */
    ThreeSale getNearRelationByBossIdAndWorkerId(@Param("bossId") Long bossId, @Param("workerId") Long workerId);
    /**
     * 查询时间段邀请成功人信息
     * @param bossId
@@ -203,16 +190,17 @@
     * @param maxTime
     * @return
     */
    List<ThreeSale> getSuccessByDate(@Param("bossId")Long bossId,@Param("minTime")Long minTime, @Param("maxTime")Long maxTime);
    List<ThreeSale> getSuccessByDate(@Param("bossId") Long bossId, @Param("minTime") Long minTime,
            @Param("maxTime") Long maxTime);
    /**
     * 查询最近的信息(根据下级ID与状态)
     * @param workerId
     * @param state
     * @return
     */
    ThreeSale selectLatestByWorkerIdAndState(@Param("workerId") Long workerId,@Param("state") int state);
    ThreeSale selectLatestByWorkerIdAndState(@Param("workerId") Long workerId, @Param("state") int state);
    /**
     * 根据时间查询邀请关系
     * @param uid
@@ -220,28 +208,29 @@
     * @return
     */
    ThreeSale getByWorkerIdAndTime(@Param("workerId") Long workerId, @Param("time") long time);
    /**
     * 邀请关系脱离
     * @param bossId
     * @param workerId
     */
    void inviteSeparate(@Param("workerId") Long workerId, @Param("bossId")Long bossId);
    void inviteSeparate(@Param("workerId") Long workerId, @Param("bossId") Long bossId);
    /**
     * 队员在该boss 下第几个队员序号
     * @param workerId
     * @return
     */
    long getTeamOrderNumByWorkerId(@Param("workerId") Long workerId);
    /**
     * 有效粉丝uid
     * @param bossId
     * @param limitTime
     * @return
     */
    List<ThreeSale> getValidWorkerIdsByTime(@Param("uid") Long uid,@Param("limitTime") long limitTime);
    List<ThreeSale> getValidWorkerIdsByTime(@Param("uid") Long uid, @Param("limitTime") long limitTime);
    /**
     * 查询所有列表
     * @Title: listAll
@@ -252,8 +241,9 @@
     * List<ThreeSale> 返回类型
     * @throws
     */
    List<ThreeSale> listAll(@Param("start")long start,@Param("count")int count);
    List<ThreeSale> listAll(@Param("minTime") Long minTime, @Param("maxTime") Long maxTime, @Param("start") long start,
            @Param("count") int count);
    long countAll(@Param("minTime") Long minTime, @Param("maxTime") Long maxTime);
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderCountMapper.java
@@ -202,4 +202,7 @@
    Long countOrderBySourceAndNearDay(@Param("uid") Long uid, @Param("source") int source, @Param("day") int day);
    
    
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/UserOrderDailyStatisticDTO.java
New file
@@ -0,0 +1,42 @@
package com.yeshi.fanli.dao.mybatis.order;
import java.math.BigDecimal;
public class UserOrderDailyStatisticDTO {
    private Long uid;
    private String type;
    private String day;
    private int orderCount;
    private BigDecimal money;
    public Long getUid() {
        return uid;
    }
    public void setUid(Long uid) {
        this.uid = uid;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getDay() {
        return day;
    }
    public void setDay(String day) {
        this.day = day;
    }
    public int getOrderCount() {
        return orderCount;
    }
    public void setOrderCount(int orderCount) {
        this.orderCount = orderCount;
    }
    public BigDecimal getMoney() {
        return money;
    }
    public void setMoney(BigDecimal money) {
        this.money = money;
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/UserOrderDailyStatisticMapper.java
New file
@@ -0,0 +1,37 @@
package com.yeshi.fanli.dao.mybatis.order;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface UserOrderDailyStatisticMapper {
    /**
     * 根据下单时间统计(自购或分享订单)
     * @Title: listByPlaceOrderTime
     * @Description:
     * @param minTime
     * @param maxTime
     * @return
     * List<UserOrderDailyStatisticDTO> 返回类型
     * @throws
     */
    List<UserOrderDailyStatisticDTO> listFanLiAndShareByPlaceOrderTime(@Param("minTime") Date minTime,
            @Param("maxTime") Date maxTime);
    /**
     *
     * @Title: listTeamByPlaceOrderTime
     * @Description:
     * @param minTime
     * @param maxTime
     * @return
     * List<UserOrderDailyStatisticDTO> 返回类型
     * @throws
     */
    List<UserOrderDailyStatisticDTO> listTeamByPlaceOrderTime(@Param("minTime") Date minTime,
            @Param("maxTime") Date maxTime);
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/user/vip/UserVIPPreInfoMapper.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.dao.mybatis.user.vip;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
@@ -26,4 +27,20 @@
     */
    List<UserVIPPreInfo> listByUid(@Param("uid") Long uid);
    /**
     * 根据进度查询
     * @Title: listByProcess
     * @Description:
     * @param process
     * @param start
     * @param count
     * @return
     * List<UserVIPPreInfo> 返回类型
     * @throws
     */
    List<UserVIPPreInfo> listByProcess(@Param("process") int process, @Param("minTime") Date minTime,
            @Param("maxTime") Date maxTime, @Param("start") long start, @Param("count") int count);
    long countByProcess(@Param("process") int process, @Param("minTime") Date minTime, @Param("maxTime") Date maxTime);
}
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/ThreeSaleDetailDao.java
@@ -68,4 +68,10 @@
        return count(query);
    }
    public List<ThreeSaleDetail> listByWorkerUid(Long uid) {
        Query query = new Query();
        query.addCriteria(Criteria.where("workerUid").is(uid));
        return findList(query);
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ThreeSaleDetail.java
@@ -21,7 +21,8 @@
    private Long bossUid;
    @Indexed
    @Field
    private Long workUid;
    private Long workerUid;
    @Field
    private Integer level;// 第几级队员
    @Field
@@ -43,14 +44,6 @@
        this.bossUid = bossUid;
    }
    public Long getWorkUid() {
        return workUid;
    }
    public void setWorkUid(Long workUid) {
        this.workUid = workUid;
    }
    public Integer getLevel() {
        return level;
    }
@@ -67,4 +60,12 @@
        this.createTime = createTime;
    }
    public Long getWorkerUid() {
        return workerUid;
    }
    public void setWorkerUid(Long workerUid) {
        this.workerUid = workerUid;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/order/OrderMoneyDailyCount.java
@@ -42,6 +42,8 @@
            return icon;
        }
    }
    
    
fanli/src/main/java/com/yeshi/fanli/job/team/TeamStatisticJob.java
New file
@@ -0,0 +1,46 @@
package com.yeshi.fanli.job.team;
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.yeshi.fanli.service.manger.user.UserTeamStatisticManager;
import com.yeshi.fanli.util.TimeUtil;
/**
 * 团队统计
 * @author Administrator
 *
 */
@Component
public class TeamStatisticJob {
    @Resource
    private UserTeamStatisticManager userTeamStatisticManager;
    /**
     * 更新团队统计中的会员等级统计
     * @Title: updatePDDOrder
     * @Description:
     * @param param
     * @return
     * @throws Exception
     * ReturnT<String> 返回类型
     * @throws
     */
    @XxlJob("updateTeamStatisticLevelCount")
    public ReturnT<String> updatePDDOrder(String param) throws Exception {
        long now = System.currentTimeMillis();
        Date minTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(now, "yyyy-MM-dd"), "yyyy-MM-dd"));
        Date maxTime = new Date(TimeUtil
                .convertToTimeTemp(TimeUtil.getGernalTime(now + 1000 * 60 * 60 * 24L, "yyyy-MM-dd"), "yyyy-MM-dd"));
        userTeamStatisticManager.syncInviteData(minTime, maxTime);
        userTeamStatisticManager.syncVIPData(minTime, maxTime);
        return ReturnT.SUCCESS;
    }
}
fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml
@@ -57,8 +57,10 @@
        resultMap="com.yeshi.fanli.dao.mybatis.UserInfoMapper.BaseResultMap"
        parameterType="java.lang.Long">
        select u.* from yeshi_ec_threeSale s
        left join yeshi_ec_user u on u.id=s.boss_id
        where s.state = 1 AND s.worker_id = #{0}
        left join
        yeshi_ec_user u on u.id=s.boss_id
        where s.state = 1 AND s.worker_id =
        #{0}
        LIMIT 1
    </select>
@@ -154,7 +156,8 @@
    <update id="inviteSeparate">
        update yeshi_ec_threeSale t set t.state = 0,t.expire = 2,
        t.updateTime = <![CDATA[UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) * 1000]]>
        t.updateTime
        = <![CDATA[UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) * 1000]]>
        where t.worker_id=#{workerId} AND t.boss_id = #{bossId}
    </update>
@@ -217,7 +220,8 @@
    <select id="listSecondTeamQuery" resultMap="BaseResultMap">
        SELECT yet.*,d.`tvr_type` AS validState FROM (SELECT DISTINCT(ts.`id`)
        AS id FROM `yeshi_ec_threesale` ts
        LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`=tf.`worker_id` WHERE 1=1
        LEFT JOIN yeshi_ec_threesale tf ON
        ts.`boss_id`=tf.`worker_id` WHERE 1=1
        AND tf.`state` = 1
        <if test="uid != null">
            AND tf.`boss_id` = #{uid}
@@ -340,10 +344,13 @@
    <select id="listSecondTeam" resultMap="AllResultMap">
        SELECT yet.* FROM (
        SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts
        LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`= tf.`worker_id`
        SELECT DISTINCT(ts.`id`) AS id FROM
        `yeshi_ec_threesale` ts
        LEFT JOIN yeshi_ec_threesale tf ON
        ts.`boss_id`= tf.`worker_id`
        WHERE tf.`boss_id` = #{uid})A
        LEFT JOIN yeshi_ec_threesale yet ON yet.id =
        LEFT JOIN
        yeshi_ec_threesale yet ON yet.id =
        A.id
        <if test="listId != null and listId.size > 0">
            WHERE yet.worker_id in
@@ -356,8 +363,10 @@
    <select id="countSecondTeam" resultType="java.lang.Long">
        SELECT COUNT(A.id) FROM (
        SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts
        LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`=tf.`worker_id`
        SELECT DISTINCT(ts.`id`) AS id FROM
        `yeshi_ec_threesale` ts
        LEFT JOIN yeshi_ec_threesale tf ON
        ts.`boss_id`=tf.`worker_id`
        WHERE tf.`boss_id` = #{uid}
        <if test="listId != null and listId.size > 0">
            AND tf.worker_id in
@@ -383,8 +392,10 @@
    <select id="countSecondTeamByDate" resultType="java.lang.Long">
        SELECT COUNT(A.id) FROM (
        SELECT DISTINCT(ts.`id`) AS id FROM `yeshi_ec_threesale` ts
        LEFT JOIN yeshi_ec_threesale tf ON ts.`boss_id`=tf.`worker_id`
        SELECT DISTINCT(ts.`id`) AS id FROM
        `yeshi_ec_threesale` ts
        LEFT JOIN yeshi_ec_threesale tf ON
        ts.`boss_id`=tf.`worker_id`
        WHERE tf.`boss_id` = #{uid}
        <if test="dayType == 1"> <!-- 今日 -->
            AND TO_DAYS(FROM_UNIXTIME(ts.createTime/1000)) = TO_DAYS(NOW())
@@ -468,8 +479,10 @@
        SELECT IFNULL(COUNT(d.`id`),0) FROM yeshi_ec_threesale d
        LEFT JOIN
        (SELECT t.`id`,t.`boss_id` FROM `yeshi_ec_threesale` t
        WHERE t.`state` = 1 AND t.`worker_id` = #{workerId} LIMIT 1)t ON
        t.`boss_id` = d.`boss_id`
        WHERE t.`state`
        = 1 AND t.`worker_id` = #{workerId} LIMIT 1)t ON
        t.`boss_id` =
        d.`boss_id`
        WHERE d.`id` <![CDATA[<=]]>t.id
        AND d.`state` = 1
    </select>
@@ -477,13 +490,42 @@
    <select id="getValidWorkerIdsByTime" resultMap="BaseResultMap">
        SELECT * FROM `yeshi_ec_threesale` tr
        WHERE tr.`state` = 1 AND tr.`boss_id` = #{uid} AND tr.`succeedTime` <![CDATA[>=]]>
        WHERE tr.`state` = 1 AND
        tr.`boss_id` = #{uid} AND tr.`succeedTime` <![CDATA[>=]]>
        #{limitTime}
    </select>
    <select id="listAll" resultMap="BaseResultMap">
        SELECT * FROM
        `yeshi_ec_threesale` limit #{start},#{count}
        `yeshi_ec_threesale`
        where 1=1
        <if test="minTime!=null">
            and `succeedTime` >=#{minTime}
        </if>
        <if test="maxTime!=null">
            and #{maxTime}>`succeedTime`
        </if>
        limit #{start},#{count}
    </select>
    <select id="countAll" resultType="java.lang.Long">
        SELECT count(*) FROM
        `yeshi_ec_threesale`
        where 1=1
        <if test="minTime!=null">
            and `succeedTime` >=#{minTime}
        </if>
        <if test="maxTime!=null">
            and #{maxTime}>`succeedTime`
        </if>
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/mapping/order/UserOrderDailyStatisticMapper.xml
New file
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
    namespace="com.yeshi.fanli.dao.mybatis.order.UserOrderDailyStatisticMapper">
    <resultMap id="BaseResultMap"
        type="com.yeshi.fanli.dao.mybatis.order.UserOrderDailyStatisticDTO">
        <result column="uid" property="uid" jdbcType="BIGINT" />
        <result column="type" property="type" jdbcType="VARCHAR" />
        <result column="day" property="day" jdbcType="VARCHAR" />
        <result column="orderCount" property="orderCount" jdbcType="INTEGER" />
        <result column="money" property="money" jdbcType="DECIMAL" />
    </resultMap>
    <select id="listFanLiAndShareByPlaceOrderTime" resultMap="BaseResultMap">
        SELECT
        co.`co_uid` as
        uid,co.`co_child_source_type` AS `type`, SUM(v.`hb_money`)
        AS
        money,DATE(co.`co_third_create_time`) AS
        `day`,COUNT(DISTINCT(CONCAT(
        co.co_order_no,'#',co.co_source_type)))
        AS orderCount FROM
        yeshi_ec_hongbao_v2 v LEFT JOIN
        yeshi_ec_hongbao_order ho ON
        ho.`ho_hongbao_id`=v.`hb_id` LEFT JOIN
        yeshi_ec_common_order co ON
        co.`co_id`=ho.`ho_order_id` WHERE
        co.`co_id`>0 AND
        co.`co_third_create_time`>=#{minTime} and
        #{maxTime}>co.`co_third_create_time` AND
        v.`hb_state`!=4 GROUP BY
        co_uid,DATE(co.`co_third_create_time`),co.`co_child_source_type`
    </select>
    <select id="listTeamByPlaceOrderTime" resultMap="BaseResultMap">
        SELECT v.`hb_uid` as uid,co.`co_child_source_type` AS `type`, SUM(v.`hb_money`) AS
        money,DATE(co.`co_third_create_time`) AS `day`,COUNT(DISTINCT(CONCAT(
        co.co_order_no,'#',co.co_source_type))) AS orderCount FROM
        yeshi_ec_hongbao_v2 v LEFT JOIN yeshi_ec_hongbao_order ho ON
        ho.`ho_hongbao_id`=v.`hb_pid` LEFT JOIN yeshi_ec_common_order co ON
        co.`co_id`=ho.`ho_order_id` WHERE (v.`hb_type`=6 OR v.`hb_type`=7 OR
        v.`hb_type`=21 OR v.`hb_type`=22) AND co.`co_id`>0 AND
        co.`co_third_create_time`>=#{minTime} AND
        #{maxTime}>co.`co_third_create_time` AND v.`hb_state`!=4 GROUP BY
        v.`hb_uid`,DATE(co.`co_third_create_time`),co.`co_child_source_type`
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/mapping/user/vip/UserVIPPreInfoMapper.xml
@@ -89,4 +89,38 @@
        <include refid="Base_Column_List" />
        from yeshi_ec_user_vip_pre_info where vpi_uid = #{uid}
    </select>
    <select id="listByProcess" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from yeshi_ec_user_vip_pre_info where vpi_process = #{process}
        <if test="minTime!=null">
            and vpi_create_time>=#{minTime}
        </if>
        <if test="maxTime!=null">
            and #{maxTime}>vpi_create_time
        </if>
        limit #{start},#{count}
    </select>
    <select id="countByProcess" resultType="java.lang.Long">
        select
        count(*)
        from yeshi_ec_user_vip_pre_info where vpi_process =
        #{process}
        <if test="minTime!=null">
            and vpi_create_time>=#{minTime}
        </if>
        <if test="maxTime!=null">
            and #{maxTime}>vpi_create_time
        </if>
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java
@@ -22,7 +22,6 @@
    @Resource
    private OrderMoneyDailyCountDao orderMoneyDailyCountDao;
    @Override
    @RequestSerializableByKeyService(key = "#record.uid")
    public void saveDailyCount(OrderMoneyDailyCount record) {
@@ -30,18 +29,18 @@
            return; // 参数不全
        }
        String gernalTime = TimeUtil.getGernalTime(record.getCountDay().getTime());
        String id = StringUtil.Md5(record.getUid() + record.getSourceType().name() + gernalTime);
        String id = StringUtil.Md5(record.getUid() + "#" + record.getSourceType().name() + "#" + gernalTime);
        // id
        record.setId(id);
        // 统计日期-年月日
        record.setCountDay(new Date(TimeUtil.convertDateToTemp(gernalTime)));
        SimpleDateFormat formatMonth = new SimpleDateFormat("yyyy-MM");
        record.setYearMonth(formatMonth.format(record.getCountDay()) );
        OrderMoneyDailyCount dailyCount = orderMoneyDailyCountDao.getById(id);
        if (dailyCount == null) {
        record.setYearMonth(formatMonth.format(record.getCountDay()));
        OrderMoneyDailyCount dailyCount = orderMoneyDailyCountDao.getById(id);
        if (dailyCount != null) {
            // 选择性更新
            orderMoneyDailyCountDao.updateSelective(record);
        } else {
@@ -57,29 +56,29 @@
            orderMoneyDailyCountDao.save(record);
        }
    }
    @Override
    public List<OrderMoneyDailyCount> query(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.query(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount>  sumGroupBySourceType(Long uid, Date minDay, Date maxDay) {
    public List<OrderMoneyDailyCount> sumGroupBySourceType(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumGroupBySourceType(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount>  sumTeamGroupBySourceType(Long uid, Date minDay, Date maxDay) {
    public List<OrderMoneyDailyCount> sumTeamGroupBySourceType(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumTeamGroupBySourceType(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount>  sumGroupByCountDay(Long uid, Date minDay, Date maxDay) {
    public List<OrderMoneyDailyCount> sumGroupByCountDay(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumGroupByCountDay(uid, minDay, maxDay);
    }
    @Override
    public List<OrderMoneyDailyCount>  sumGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
    public List<OrderMoneyDailyCount> sumGroupByYearMonth(Long uid, Date minDay, Date maxDay) {
        return orderMoneyDailyCountDao.sumGroupByYearMonth(uid, minDay, maxDay);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleDetailSerivceImpl.java
@@ -25,11 +25,11 @@
    @Override
    public void addThreeSaleDetail(ThreeSaleDetail detail) throws ParamsException {
        if (detail.getBossUid() == null || detail.getWorkUid() == null || detail.getLevel() == null
        if (detail.getBossUid() == null || detail.getWorkerUid() == null || detail.getLevel() == null
                || detail.getCreateTime() == null) {
            throw new ParamsException(1, "参数不完整");
        }
        String id = detail.getBossUid() + "#" + detail.getWorkUid();
        String id = detail.getBossUid() + "#" + detail.getWorkerUid();
        detail.setId(id);
        // 根据主键查询
        ThreeSaleDetail old = threeSaleDetailDao.get(id);
@@ -66,7 +66,7 @@
            ThreeSaleDetail detail = new ThreeSaleDetail();
            detail.setBossUid(tts.getBoss().getId());
            detail.setLevel(level);
            detail.setWorkUid(workerUid);
            detail.setWorkerUid(workerUid);
            if (tts.getSucceedTime() != null)
                detail.setCreateTime(new Date(tts.getSucceedTime()));
            else
@@ -80,4 +80,9 @@
        }
    }
    @Override
    public List<ThreeSaleDetail> listByWorkerUid(Long uid) {
        return threeSaleDetailDao.listByWorkerUid(uid);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java
@@ -257,7 +257,7 @@
    @Override
    public JSONObject getMyFirstTeam(long start, int count, Long uid) {
        List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid,null);
        List<ThreeSale> list = threeSaleMapper.listFirstTeam(start, count, uid, null);
        if (list == null) {
            list = new ArrayList<ThreeSale>();
        }
@@ -517,7 +517,7 @@
    public long countSecondTeam(Long uid) {
        return threeSaleMapper.countSecondTeam(uid, null);
    }
    @Override
    public long countFirstTeam(Long uid, List<Long> listId) {
        return threeSaleMapper.countFirstTeam(uid, listId);
@@ -537,9 +537,7 @@
    public long countSecondTeamByDate(Long uid, int dayType) {
        return threeSaleMapper.countSecondTeamByDate(uid, dayType);
    }
    @Override
    public ThreeSale selectLatestByWorkerIdAndState(Long workerId, int state) {
        return threeSaleMapper.selectLatestByWorkerIdAndState(workerId, state);
@@ -597,8 +595,15 @@
    }
    @Override
    public List<ThreeSale> listAll(int page, int pageSize) {
        return threeSaleMapper.listAll((page-1)*pageSize, pageSize);
    public List<ThreeSale> listAll(Date minTime, Date maxTime, int page, int pageSize) {
        return threeSaleMapper.listAll(minTime == null ? null : minTime.getTime(),
                maxTime == null ? null : maxTime.getTime(), (page - 1) * pageSize, pageSize);
    }
    @Override
    public long countAll(Date minTime, Date maxTime) {
        return threeSaleMapper.countAll(minTime == null ? null : minTime.getTime(),
                maxTime == null ? null : maxTime.getTime());
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPPreInfoServiceImpl.java
@@ -100,7 +100,7 @@
            throw new UserVIPPreInfoException(1, "信息不完整");
        for (Long fuid : Constant.NO_UPGRADE_UIDS) {// 禁止不能升级的用户升级
            if (info.getUid().longValue() == fuid)
                return;
                throw new UserVIPPreInfoException(100, "禁止升级");
        }
        UserVIPPreInfo oldInfo = userVIPPreInfoMapper.selectByUidAndProcess(info.getUid(), info.getProcess());
@@ -281,7 +281,7 @@
            info.setSourceType(UserVIPPreInfo.SOURCE_TYPE_TEAM);
        else
            info.setSourceType(UserVIPPreInfo.SOURCE_TYPE_ORDER);
        addUserVIPPreInfo(info);
        // 升级弹框提示
@@ -333,4 +333,14 @@
        userVIPPreInfoMapper.deleteByPrimaryKey(id);
    }
    @Override
    public List<UserVIPPreInfo> listByProcess(int process, Date minTime, Date maxTime, int page, int pageSize) {
        return userVIPPreInfoMapper.listByProcess(process, minTime, maxTime, (page - 1) * pageSize, pageSize);
    }
    @Override
    public long countByProcess(int process, Date minTime, Date maxTime) {
        return userVIPPreInfoMapper.countByProcess(process, minTime, maxTime);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleDetailService.java
@@ -61,5 +61,17 @@
    public List<ThreeSaleDetail> listByBossUidAndMinLevel(Long bossUid, int minLevel, int page, int pageSize);
    public long countByBossUidAndMinLevel(Long bossUid, int minLevel);
    /**
     * 根据下级ID查询
     * @Title: listByWorkerUid
     * @Description:
     * @param uid
     * @return
     * List<ThreeSaleDetail> 返回类型
     * @throws
     */
    public List<ThreeSaleDetail> listByWorkerUid(Long uid);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleSerivce.java
@@ -1,5 +1,6 @@
package com.yeshi.fanli.service.inter.user.invite;
import java.util.Date;
import java.util.List;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
@@ -308,7 +309,9 @@
     * List<ThreeSale> 返回类型
     * @throws
     */
    public List<ThreeSale> listAll(int page,int pageSize);
    public List<ThreeSale> listAll(Date minTime,Date maxTime, int page,int pageSize);
    public long countAll(Date minTime,Date maxTime);
    /**
     * 根日期类型进行统计直接
fanli/src/main/java/com/yeshi/fanli/service/inter/user/vip/UserVIPPreInfoService.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.inter.user.vip;
import java.util.Date;
import java.util.List;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
import com.yeshi.fanli.exception.user.vip.UserVIPInfoException;
@@ -29,16 +30,15 @@
     * @return
     */
    public UserVIPPreInfo getLatestProcessInfo(Long uid);
    /**
     * 获取某个时间的进度
     * 
     * @param uid
     * @return
     */
    public UserVIPPreInfo getProcessInfo(Long uid,Date time);
    public UserVIPPreInfo getProcessInfo(Long uid, Date time);
    /**
     * 根据用户ID与步骤查询
     * @Title: selectByUidAndProcess
@@ -49,10 +49,9 @@
     * UserVIPPreInfo 返回类型
     * @throws
     */
    public UserVIPPreInfo selectByUidAndProcess(Long uid,int process);
    public UserVIPPreInfo selectByUidAndProcess(Long uid, int process);
    /**
     * 查询进度根据不同阶段
     * @param uid
@@ -62,31 +61,24 @@
     */
    public UserVIPPreInfo getVipByProcess(Long uid, int process);
    /**
     * 自购+ 分享订单到账 满足升级验证
     * @param uid
     */
    public void upgradeVipByMyOrder(Long uid);
    /**
     * 验证自身是否满足vip条件
     * @param uid  
     */
    public void upgradeVipByTeamNum(Long uid);
    /**
     * 粉丝完成收货-验证直接-间接粉丝
     * @param uid 粉丝id
     */
    public void upgradeBossVipByTeamNum(Long uid);
    /**
     * 根据主键删除
     * @Title: deleteByPrimaryKey
@@ -97,4 +89,21 @@
     */
    public void deleteByPrimaryKey(Long id);
    /**
     * 根据时间与过程查询
     * @Title: listByProcess
     * @Description:
     * @param process
     * @param minTime
     * @param maxTime
     * @param page
     * @param pageSize
     * @return
     * List<UserVIPPreInfo> 返回类型
     * @throws
     */
    public List<UserVIPPreInfo> listByProcess(int process, Date minTime, Date maxTime, int page, int pageSize);
    public long countByProcess(int process, Date minTime, Date maxTime);
}
fanli/src/main/java/com/yeshi/fanli/service/manger/user/UserTeamStatisticManager.java
New file
@@ -0,0 +1,245 @@
package com.yeshi.fanli.service.manger.user;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.ThreeSaleDetail;
import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPPreInfo;
import com.yeshi.fanli.exception.user.TeamDailyRecordException;
import com.yeshi.fanli.service.inter.user.invite.TeamDailyRecordService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
import com.yeshi.fanli.util.TimeUtil;
/**
 * 团队成员统计
 * @author Administrator
 *
 */
@Component
public class UserTeamStatisticManager {
    @Resource
    private UserVIPPreInfoService userVIPPreInfoService;
    @Resource
    private ThreeSaleDetailService threeSaleDetailService;
    @Resource
    private TeamDailyRecordService teamDailyRecordService;
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    /**
     * 用户等级升级
     * @Title: userUpgraded
     * @Description:
     * @param uid
     * @param level
     * @param date
     * void 返回类型
     * @throws
     */
    public void userUpgraded(Long uid, UserLevelEnum level, Date date) {
        // 更新一级,二级,二级外响应的等级提升
        // 统计
    }
    /**
     * 同步会员信息(一级/二级/二级外)
     * @Title: statisticVIPData
     * @Description:
     * @param minTime
     * @param maxTime
     * @return
     * int 返回类型
     * @throws
     */
    public void syncVIPData(Date minTime, Date maxTime) {
        List<UserVIPPreInfo> totalList = new ArrayList<>();
        long count = userVIPPreInfoService.countByProcess(UserLevelEnum.highVIP.getLevel(), minTime, maxTime);
        int pageSize = 1000;
        int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
        for (int i = 0; i < page; i++) {
            List<UserVIPPreInfo> list = userVIPPreInfoService.listByProcess(UserLevelEnum.highVIP.getLevel(), minTime,
                    maxTime, i + 1, pageSize);
            if (list != null)
                totalList.addAll(list);
        }
        count = userVIPPreInfoService.countByProcess(UserLevelEnum.superVIP.getLevel(), minTime, maxTime);
        page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
        for (int i = 0; i < page; i++) {
            List<UserVIPPreInfo> list = userVIPPreInfoService.listByProcess(UserLevelEnum.superVIP.getLevel(), minTime,
                    maxTime, i + 1, pageSize);
            if (list != null)
                totalList.addAll(list);
        }
        Map<String, Integer> map = new HashMap<>();
        for (UserVIPPreInfo vipPre : totalList) {
            String day = TimeUtil.getGernalTime(vipPre.getCreateTime().getTime(), "yyyy-MM-dd");
            List<ThreeSaleDetail> list = threeSaleDetailService.listByWorkerUid(vipPre.getUid());
            for (ThreeSaleDetail ts : list) {
                String key = ts.getBossUid() + "#" + day + "#" + vipPre.getProcess() + "#";
                if (ts.getLevel() == 1) {
                    key += "1";
                } else if (ts.getLevel() == 2) {
                    key += "2";
                } else {
                    key += "3";
                }
                if (map.get(key) == null) {
                    map.put(key, 0);
                }
                map.put(key, map.get(key) + 1);
            }
        }
        for (java.util.Iterator<String> its = map.keySet().iterator(); its.hasNext();) {
            String key = its.next();
            Long uid = Long.parseLong(key.split("#")[0]);
            String day = key.split("#")[1];
            int process = Integer.parseInt(key.split("#")[2]);
            int level = Integer.parseInt(key.split("#")[3]);
            TeamDailyRecord record = new TeamDailyRecord();
            record.setUid(uid);
            record.setCountDay(new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")));
            if (level == 1) {
                String tempKey = uid + "#" + day + "#" + UserLevelEnum.highVIP.getLevel() + "#" + level;
                record.setFirstHighVIP(map.get(tempKey));
                tempKey = uid + "#" + day + "#" + UserLevelEnum.superVIP.getLevel() + "#" + level;
                record.setFirstSuperVIP(map.get(tempKey));
            } else if (level == 2) {
                String tempKey = uid + "#" + day + "#" + UserLevelEnum.highVIP.getLevel() + "#" + level;
                record.setSecondHighVIP(map.get(tempKey));
                tempKey = uid + "#" + day + "#" + UserLevelEnum.superVIP.getLevel() + "#" + level;
                record.setSecondSuperVIP(map.get(tempKey));
            } else {
                String tempKey = uid + "#" + day + "#" + UserLevelEnum.highVIP.getLevel() + "#" + level;
                record.setBeyondHighVIP(map.get(tempKey));
                tempKey = uid + "#" + day + "#" + UserLevelEnum.superVIP.getLevel() + "#" + level;
                record.setBeyondSuperVIP(map.get(tempKey));
            }
            // 保存
            try {
                teamDailyRecordService.save(record);
            } catch (TeamDailyRecordException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 同步注册信息
     * @Title: syncRegisterData
     * @Description:
     * @param minTime
     * @param maxTime
     * void 返回类型
     * @throws
     */
    public void syncInviteData(Date minTime, Date maxTime) {
        List<ThreeSale> totalList = new ArrayList<>();
        long count = threeSaleSerivce.countAll(minTime, maxTime);
        int pageSize = 1000;
        int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
        for (int i = 0; i < page; i++) {
            List<ThreeSale> list = threeSaleSerivce.listAll(minTime, maxTime, i + 1, pageSize);
            if (list != null)
                totalList.addAll(list);
        }
        Map<String, Integer> map = new HashMap<>();
        for (ThreeSale threeSale : totalList) {
            String day = TimeUtil.getGernalTime(threeSale.getSucceedTime(), "yyyy-MM-dd");
            List<ThreeSaleDetail> list = threeSaleDetailService.listByWorkerUid(threeSale.getWorker().getId());
            for (ThreeSaleDetail ts : list) {
                String key = ts.getBossUid() + "#" + day + "#";
                if (ts.getLevel() == 1) {
                    key += "1";
                } else if (ts.getLevel() == 2) {
                    key += "2";
                } else {
                    key += "3";
                }
                if (map.get(key) == null) {
                    map.put(key, 0);
                }
                map.put(key, map.get(key) + 1);
            }
        }
        for (java.util.Iterator<String> its = map.keySet().iterator(); its.hasNext();) {
            String key = its.next();
            Long uid = Long.parseLong(key.split("#")[0]);
            String day = key.split("#")[1];
            int level = Integer.parseInt(key.split("#")[2]);
            TeamDailyRecord record = new TeamDailyRecord();
            record.setUid(uid);
            record.setCountDay(new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")));
            if (level == 1) {
                record.setFirstDaRen(map.get(key));
            } else if (level == 2) {
                record.setSecondDaRen(map.get(key));
            } else {
                record.setBeyondDaRen(map.get(key));
            }
            // 保存
            try {
                teamDailyRecordService.save(record);
            } catch (TeamDailyRecordException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * 邀请成功
     * @Title: inviteSuccess
     * @Description:
     * @param uid 被邀请人用户ID
     * @param date
     * void 返回类型
     * @throws
     */
    public void inviteSuccess(Long uid, Date date) {
    }
}
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/CommonOrderFactory.java
@@ -68,6 +68,7 @@
        commonOrder.setThirdCreateTime(new Date(order.getOrderCreateTime() * 1000));
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getOrderId());
        commonOrder.setChildSourceType("拼多多");
        return commonOrder;
    }
@@ -123,6 +124,7 @@
        commonOrder.setUpdateTime(new Date());
        commonOrder.setTradeId(order.getTradeId());
        commonOrder.setEstimate(order.getEstimateFee());
        commonOrder.setChildSourceType("京东");
        return commonOrder;
    }