yujian
2020-05-12 b843e1c35f5bd1d8497321c2ce139893998e89c9
队员统计
1个文件已删除
1 文件已重命名
6个文件已修改
375 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/order/DateTypeEnum.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java 119 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/invite/TeamDailyRecord.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
@@ -1878,21 +1878,28 @@
     */
    @RequestMapping(value = "setextrainfo", method = RequestMethod.POST)
    public void setExtraInfo(AcceptData acceptData, long uid, long inviteId, String memoName, PrintWriter out) {
        List<ThreeSale> listThreeSale = threeSaleSerivce.listbyIdAndBossId(inviteId, uid, null);
        if (listThreeSale == null || listThreeSale.size() == 0) {
        ThreeSale threeSale = threeSaleSerivce.selectByPrimaryKey(inviteId);
        if (threeSale == null) {
            out.print(JsonUtil.loadFalseResult("该记录不存在"));
            return;
        }
        UserInfo worker = listThreeSale.get(0).getWorker();
        UserInfo worker = threeSale.getWorker();
        if (worker == null) {
            out.print(JsonUtil.loadFalseResult("该记录不存在"));
            return;
        }
        ThreeSaleExtraInfo extraInfo = threeSaleExtraInfoSerivce.getbyBossIdAndWorkerId(uid, worker.getId());
        if (extraInfo == null) {
            extraInfo = new ThreeSaleExtraInfo();
            Long bossUid = threeSale.getBoss().getId();
            if (uid == bossUid) {
                extraInfo.setType(1); // 直接
            } else {
                extraInfo.setType(2); // 间接
            }
            extraInfo.setWorker(worker);
            extraInfo.setNickname(memoName);
            extraInfo.setCreateTime(new Date());
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -32,7 +32,7 @@
import com.yeshi.fanli.entity.bus.user.UserInviteValidNum;
import com.yeshi.fanli.entity.bus.user.UserInviteValidRecord;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.entity.bus.user.vip.TeamDailyRecord;
import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic;
import com.yeshi.fanli.entity.bus.user.vip.TearcherInfo;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
@@ -995,28 +995,72 @@
                highVIP.put("total", statistic.getHighFirstCount() + statistic.getHighSecondCount());
                superVIP.put("total", statistic.getSuperFirstCount() + statistic.getSuperSecondCount());
            }
            // 统计达人
            long darenToday = threeSaleSerivce.countFirstTeamByDate(uid, 1)    + threeSaleSerivce.countSecondTeamByDate(uid, 1);
            long darenMonth = threeSaleSerivce.countFirstTeamByDate(uid, 2)    + threeSaleSerivce.countSecondTeamByDate(uid, 2);
            int darenToday = 0;
            int highVIPToday = 0;
            int superVIPToday = 0;
            String createId = teamDailyRecordService.createId(uid, new Date());
            TeamDailyRecord record = teamDailyRecordService.getById(createId);
            if (record != null) {
                if (record.getFirstDaRen() != null)
                    darenToday += record.getFirstDaRen();
                if (record.getSecondDaRen() != null)
                    darenToday += record.getSecondDaRen();
                if (record.getFirstHighVIP() != null)
                    highVIPToday += record.getFirstHighVIP();
                if (record.getSecondHighVIP() != null)
                    highVIPToday += record.getSecondHighVIP();
                if (record.getFirstSuperVIP() != null)
                    superVIPToday += record.getFirstSuperVIP();
                if (record.getSecondSuperVIP() != null)
                    superVIPToday += record.getSecondSuperVIP();
            }
            // 获取当月第一天和最后一天
            Calendar cale = Calendar.getInstance();
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            String firstday, lastday;
            // 获取前月的第一天
            cale = Calendar.getInstance();
            cale.add(Calendar.MONTH, 0);
            cale.set(Calendar.DAY_OF_MONTH, 1);
            firstday = format.format(cale.getTime());
            // 获取前月的最后一天
            cale = Calendar.getInstance();
            cale.add(Calendar.MONTH, 1);
            cale.set(Calendar.DAY_OF_MONTH, 0);
            lastday = format.format(cale.getTime());
            int darenMonth = 0;
            int highVIPMonth = 0;
            int superVIPMonth = 0;
            Date date = new Date();
            Date minTime = TimeUtil.parseYYYYMMDD(firstday);
            Date maxTime = TimeUtil.parseYYYYMMDD_HHMMSS(lastday + " 23:59:59");
            List<TeamDailyRecord> listMonth = teamDailyRecordService.sumGroupByYearMonth(uid, minTime, maxTime);
            if (listMonth != null && listMonth.size() > 0) {
                TeamDailyRecord teamRecord = listMonth.get(0);
                if (teamRecord.getFirstDaRen() != null)
                    darenMonth += teamRecord.getFirstDaRen();
                if (teamRecord.getSecondDaRen() != null)
                    darenMonth += teamRecord.getSecondDaRen();
                if (teamRecord.getFirstHighVIP() != null)
                    highVIPMonth += teamRecord.getFirstHighVIP();
                if (teamRecord.getSecondHighVIP() != null)
                    highVIPMonth += teamRecord.getSecondHighVIP();
                if (teamRecord.getFirstSuperVIP() != null)
                    superVIPMonth += teamRecord.getFirstSuperVIP();
                if (teamRecord.getSecondSuperVIP() != null)
                    superVIPMonth += teamRecord.getSecondSuperVIP();
            }
            // 达人
            daren.put("today", darenToday);
            daren.put("month", darenMonth);
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
            String today = sd.format(new Date());
            // 当月1号
            Calendar calendar1 = Calendar.getInstance();
            calendar1.set(Calendar.DAY_OF_MONTH, 1);
            Date minTime = sd.parse(sd.format(calendar1.getTime()));
            int highVIPToday = 0;
            int highVIPMonth = 0;
             // TODO 统计高级会员数量
            // 高级会会员
            highVIP.put("today", highVIPToday);
            highVIP.put("month", highVIPMonth);
            int superVIPToday = 0;
            int superVIPMonth = 0;
             // 统计超级会员数量
            superVIP.put("today", superVIPToday);
            superVIP.put("month", superVIPMonth);
@@ -1234,7 +1278,7 @@
            TeamDailyRecord monthRecord = new TeamDailyRecord(0,0,0);
            TeamDailyRecord totalityRecord = new TeamDailyRecord(0,0,0);
            
            List<TeamDailyRecord> list = teamDailyRecordService.getbyUid(uid);
            List<TeamDailyRecord> list = teamDailyRecordService.getByUid(uid);
            if (list != null && list.size() > 0) {
                for (TeamDailyRecord record: list) {
                    Date statisticDay = record.getCountDay();
fanli/src/main/java/com/yeshi/fanli/dao/order/DateTypeEnum.java
File was deleted
fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java
@@ -113,7 +113,6 @@
     * @return
     */
    public List<OrderMoneyDailyCount> sumGroupBySourceType(Long uid, Date minDate, Date maxDate) {
        String collectionName = "order_money_daily_count";
        List<OrderMoneyDailyCount> listDailyCount = new ArrayList<>();
        // 统计方法
@@ -180,7 +179,6 @@
     * @return
     */
    public List<OrderMoneyDailyCount> sumTeamGroupBySourceType(Long uid, Date minDate, Date maxDate) {
        String collectionName = "order_money_daily_count";
        List<OrderMoneyDailyCount> listDailyCount = new ArrayList<>();
        // 统计方法
fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
@@ -1,36 +1,28 @@
package com.yeshi.fanli.dao.user.invite;
import java.math.BigDecimal;
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.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;
import com.yeshi.fanli.entity.bus.user.vip.TeamDailyRecord;
import com.mongodb.BasicDBObject;
import com.mongodb.DBObject;
import com.yeshi.fanli.dao.MongodbBaseDao;
import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
@Repository
public class TeamDailyRecordDao {
public class TeamDailyRecordDao extends MongodbBaseDao<TeamDailyRecord> {
    @Resource
    private MongoTemplate mongoTemplate;
    private static String collectionName = "team_daily_Record";
    /**
     * 新增
     *
     * @param record
     */
    public void save(TeamDailyRecord record) {
        if (record == null) {
            return;
        }
        mongoTemplate.save(record);
    }
    /**
     * 选择性更新
     * @param record
@@ -65,7 +57,7 @@
        if (record.getBeyondSuperVIP() != null)
            update.set("beyondSuperVIP", record.getBeyondSuperVIP());
        update.set("updateTime", new Date());
        mongoTemplate.updateMulti(query, update, TeamDailyRecord.class);
        update(query, update);
    }
    /**
@@ -85,10 +77,10 @@
     * 
     * @return
     */
    public List<TeamDailyRecord> getbyUid(Long uid) {
    public List<TeamDailyRecord> getByUid(Long uid) {
        Query query = new Query();
        query.addCriteria(Criteria.where("uid").is(uid));
        return mongoTemplate.find(query, TeamDailyRecord.class);
        return findList(query);
    }
    /**
@@ -96,11 +88,86 @@
     * 
     * @return
     */
    public List<TeamDailyRecord> getbyUid(Long uid, Date minTime) {
    public List<TeamDailyRecord> listByUid(Long uid, Date minDate, Date maxDate) {
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        query.addCriteria(Criteria.where("uid").is(uid));
        query.addCriteria(Criteria.where("countDay").lte(minTime));
        return mongoTemplate.find(query, TeamDailyRecord.class);
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        return findList(query);
    }
    /**
     * 统计年月
     * @param uid
     * @param minDate
     * @param maxDate
     * @return
     */
    public List<TeamDailyRecord> sumGroupByYearMonth(Long uid, Date minDate, Date maxDate) {
        List<TeamDailyRecord> listDailyCount = new ArrayList<>();
        // 统计方法
        String reduce = "function(doc, aggr){"
                + " aggr.firstDaRen += doc.firstDaRen;"
                + " aggr.secondDaRen += doc.secondDaRen;"
                + " aggr.firstHighVIP += doc.firstHighVIP;"
                + " aggr.secondHighVIP += doc.secondHighVIP;"
                + " aggr.firstSuperVIP += doc.firstSuperVIP;"
                + " aggr.secondSuperVIP += doc.secondSuperVIP;"
                + "}";
        // 查询条件
        List<Criteria> list = new ArrayList<Criteria>();
        list.add(Criteria.where("uid").is(uid));
        if (minDate != null)
            list.add(Criteria.where("countDay").gte(minDate));
        if (maxDate != null)
            list.add(Criteria.where("countDay").lte(maxDate));
        Query query = new Query();
        if (list.size() > 0) {
            Criteria[] cas = new Criteria[list.size()];
            for (int i = 0; i < list.size(); i++)
                cas[i] = list.get(i);
            query.addCriteria(new Criteria().andOperator(cas));
        }
        BasicDBObject agg = new BasicDBObject("yearMonth", "");
        Map<String, Object> map = new HashMap<>();
        map.put("firstDaRen", 0);
        map.put("secondDaRen", 0);
        map.put("firstHighVIP", 0);
        map.put("secondHighVIP", 0);
        map.put("firstSuperVIP", 0);
        map.put("secondSuperVIP", 0);
        BasicDBObject dbObject = new BasicDBObject(map);
        DBObject result = mongoTemplate.getCollection(collectionName).group(agg, query.getQueryObject(), dbObject, reduce);
        Map<String, BasicDBObject> mapResult = result.toMap();
        if (mapResult.size() > 0) {
            for (int i = 0; i < mapResult.size(); i++) {
                BasicDBObject object = mapResult.get(i + "");
                TeamDailyRecord record = new TeamDailyRecord();
                record.setFirstDaRen(new BigDecimal(object.get("totalNum").toString()).intValue());
                record.setFirstHighVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
                record.setFirstSuperVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
                record.setSecondDaRen(new BigDecimal(object.get("totalNum").toString()).intValue());
                record.setSecondHighVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
                record.setSecondSuperVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
                listDailyCount.add(record);
            }
        }
        return listDailyCount;
    }
}
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/invite/TeamDailyRecord.java
File was renamed from fanli/src/main/java/com/yeshi/fanli/entity/bus/user/vip/TeamDailyRecord.java
@@ -1,4 +1,4 @@
package com.yeshi.fanli.entity.bus.user.vip;
package com.yeshi.fanli.entity.bus.user.invite;
import java.util.Date;
@@ -13,7 +13,7 @@
 * @author Administrator
 *
 */
@Document(collection = "team_daily_Record")
@Document(collection = "team_daily_record")
public class TeamDailyRecord {
    @Id
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java
@@ -9,15 +9,12 @@
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.user.invite.TeamDailyRecordDao;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.vip.TeamDailyRecord;
import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
import com.yeshi.fanli.exception.user.TeamDailyRecordException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.user.invite.TeamDailyRecordService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
@Service
public class TeamDailyRecordServiceImpl implements TeamDailyRecordService {
@@ -41,7 +38,7 @@
        
        // id
        record.setId(id);
        TeamDailyRecord teamDaily = teamDailyRecordDao.getById(id);
        TeamDailyRecord teamDaily = teamDailyRecordDao.get(id);
        if (teamDaily != null) {
            teamDailyRecordDao.updateSelective(record);
        } else {
@@ -51,45 +48,31 @@
            teamDailyRecordDao.save(record);
        }
    }
    @Override
    public String createId(Long uid, Date date) {
        String gernalTime = TimeUtil.getGernalTime(date.getTime());
        return StringUtil.Md5(uid + "#" + gernalTime);
    }
    
    @Override
    @RequestSerializableByKeyService(key = "#uid")
    public void addDailyRecord(Long uid) {
        // 重新统计队员等级数量
        recountRecord(uid);
        // 统计上级队员数量
        ThreeSale threeSale = threeSaleSerivce.getByWorkerId(uid);
        if (threeSale != null) {
            recountRecord(threeSale.getBoss().getId());
        }
    }
    private void recountRecord(Long uid) {
        try {
            // 直接粉丝
            int firstCount = (int) threeSaleSerivce.countFirstTeamByDate(uid, 1);
            // 间接粉丝
            int secondCount = (int) threeSaleSerivce.countSecondTeamByDate(uid, 1);
            int secondBeyond = 0;
        } catch (Exception e) {
            e.getSuppressed();
            LogHelper.errorDetailInfo(e);
        }
    }
    @Override
    public List<TeamDailyRecord> getbyUid(Long uid) {
        return teamDailyRecordDao.getbyUid(uid);
    public TeamDailyRecord getById(String id) {
        return teamDailyRecordDao.get(id);
    }
    
    @Override
    public List<TeamDailyRecord> getbyUid(Long uid, Date minTime) {
        return teamDailyRecordDao.getbyUid(uid, minTime);
    public List<TeamDailyRecord> getByUid(Long uid) {
        return teamDailyRecordDao.getByUid(uid);
    }
    
    @Override
    public List<TeamDailyRecord> listByUid(Long uid, Date minTime, Date maxTime) {
        return teamDailyRecordDao.listByUid(uid, minTime, maxTime);
    }
    @Override
    public List<TeamDailyRecord> sumGroupByYearMonth(Long uid, Date minTime, Date maxTime) {
        return teamDailyRecordDao.sumGroupByYearMonth(uid, minTime, maxTime);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java
@@ -3,34 +3,10 @@
import java.util.Date;
import java.util.List;
import com.yeshi.fanli.entity.bus.user.vip.TeamDailyRecord;
import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
import com.yeshi.fanli.exception.user.TeamDailyRecordException;
public interface TeamDailyRecordService {
    /**
     * 初始化统计粉丝等级数量
     * @param uid
     */
    public void addDailyRecord(Long uid);
    /**
     * 查询所有
     * @param uid
     * @return
     */
    public List<TeamDailyRecord> getbyUid(Long uid);
    /**
     * 查询数据
     * @param uid
     * @param level
     * @param minTime
     * @return
     */
    public List<TeamDailyRecord> getbyUid(Long uid, Date minTime);
    /**
     * 保存信息- 新增、选择更新
@@ -38,4 +14,36 @@
     * @throws TeamDailyRecordException
     */
    public void save(TeamDailyRecord record) throws TeamDailyRecordException;
    /**
     * 用户id 时间筛选
     * @param uid
     * @param minTime
     * @param maxTime
     * @return
     */
    List<TeamDailyRecord> listByUid(Long uid, Date minTime, Date maxTime);
    /**
     * 根据月份分组统计
     * @param uid
     * @param minTime
     * @param maxTime
     * @return
     */
    public List<TeamDailyRecord> sumGroupByYearMonth(Long uid, Date minTime, Date maxTime);
    /**
     * 查询根据id
     * @param id
     * @return
     */
    public TeamDailyRecord getById(String id);
    public String createId(Long uid, Date date);
    public List<TeamDailyRecord> getByUid(Long uid);
}