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); }