...
|
...
|
@@ -17,6 +17,7 @@ import org.slf4j.LoggerFactory; |
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
import static com.yoho.tools.common.utils.RandomUtil.getRandom;
|
|
|
|
...
|
...
|
@@ -41,7 +42,7 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
@Autowired
|
|
|
private ConfigReader configReader;
|
|
|
|
|
|
public static final long INTERVAL = 3 * 24 * 60 * 60 * 1000l;//72小时
|
|
|
public static final long INTERVAL = 60 * 60 * 1000l;//1小时
|
|
|
|
|
|
// public static final long INTERVAL = 1 * 60 * 60 * 1000l;//1小时
|
|
|
|
...
|
...
|
@@ -55,7 +56,10 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
public void addVirtualPraise() {
|
|
|
logger.info("enter addVirtualPraise ");
|
|
|
long currentTime = System.currentTimeMillis();
|
|
|
long startTime = currentTime - INTERVAL;
|
|
|
//时间间隔
|
|
|
int timeConfig = configReader.getInt("platform.grass.virtual.time.interval", 1);
|
|
|
logger.info("addVirtualPraise virtual.time.interval is {}", timeConfig);
|
|
|
long startTime = currentTime - timeConfig * INTERVAL;
|
|
|
List<GrassArticle> articleList = grassArticleDao.selectByRecommendTime(startTime,currentTime);
|
|
|
if(CollectionUtils.isEmpty(articleList)){
|
|
|
logger.info("addVirtualPraise articleList is empty");
|
...
|
...
|
@@ -134,7 +138,10 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
public void addVirtualFans() {
|
|
|
logger.info("enter addVirtualFans ");
|
|
|
Long currentTime = System.currentTimeMillis();
|
|
|
Long startTime = currentTime - INTERVAL;
|
|
|
//时间间隔
|
|
|
int timeConfig = configReader.getInt("platform.grass.virtual.time.interval", 1);
|
|
|
logger.info("addVirtualPraise virtual.time.interval is {}", timeConfig);
|
|
|
long startTime = currentTime - timeConfig * INTERVAL;
|
|
|
|
|
|
List<GrassArticle> articleList = grassArticleDao.selectByRecommendTime(startTime,currentTime);
|
|
|
if(CollectionUtils.isEmpty(articleList)){
|
...
|
...
|
@@ -176,7 +183,7 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
Map<Integer,List<Integer>> commonUserFansMap = new HashMap<>();
|
|
|
Map<Integer,List<Integer>> guangUserFansMap = new HashMap<>();
|
|
|
|
|
|
//(普通作者的粉丝 && 逛小编的粉丝)
|
|
|
//(普通作者的粉丝 && 逛小编的粉丝)--已有的粉丝
|
|
|
//粉丝本身一定是有货用户,不需要区分类型
|
|
|
for(GrassUserAttention temp : fansList){
|
|
|
int authorUid = temp.getFollowUid();//作者
|
...
|
...
|
@@ -200,7 +207,7 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
}
|
|
|
|
|
|
List<GrassUserAttention> userAttentions = new ArrayList<>();
|
|
|
List<GrassUserAchieve> userAchieveList = new ArrayList<>();
|
|
|
List<GrassUserAchieve> userAchieveFansList = new ArrayList<>();
|
|
|
//普通作者--增粉数据
|
|
|
for(Integer authorUid : commonUid){
|
|
|
List<Integer> oldFansList = commonUserFansMap.get(authorUid);
|
...
|
...
|
@@ -212,7 +219,7 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
}
|
|
|
Set<Integer> randomUidList = getRandomFans(tempList, min, max);
|
|
|
//随机增粉
|
|
|
addFans(randomUidList,authorUid,GrassUserTypeEnum.COMMON.getValue(),userAttentions, userAchieveList,currentTime);
|
|
|
addFans(randomUidList,authorUid,GrassUserTypeEnum.COMMON.getValue(),userAttentions, userAchieveFansList,currentTime);
|
|
|
}
|
|
|
|
|
|
//逛作者--增粉数据
|
...
|
...
|
@@ -226,7 +233,7 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
}
|
|
|
Set<Integer> randomUidList = getRandomFans(tempList, min, max);
|
|
|
//随机增粉
|
|
|
addFans(randomUidList,authorUid,GrassUserTypeEnum.GUANG.getValue(),userAttentions, userAchieveList,currentTime);
|
|
|
addFans(randomUidList,authorUid,GrassUserTypeEnum.GUANG.getValue(),userAttentions, userAchieveFansList,currentTime);
|
|
|
}
|
|
|
|
|
|
//更新数据库
|
...
|
...
|
@@ -236,14 +243,35 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
return ;
|
|
|
}
|
|
|
|
|
|
//马甲的关注数
|
|
|
Map<Integer, Long> attMap = userAttentions.stream()
|
|
|
.collect(Collectors.groupingBy(GrassUserAttention::getUid,Collectors.counting()));
|
|
|
|
|
|
List<GrassUserAchieve> userAchieveAttList = new ArrayList<>();
|
|
|
for(Integer uid : attMap.keySet()){
|
|
|
GrassUserAchieve user = new GrassUserAchieve();
|
|
|
Integer attNum = Math.toIntExact(attMap.get(uid));
|
|
|
user.setUserType(GrassUserTypeEnum.COMMON.getValue());
|
|
|
user.setUid(uid);
|
|
|
user.setAttCount(attNum);
|
|
|
user.setCreateTime((int) (currentTime / 1000l));
|
|
|
user.setUpdateTime((int) (currentTime / 1000l));
|
|
|
userAchieveAttList.add(user);
|
|
|
}
|
|
|
|
|
|
|
|
|
logger.info("addVirtualFans update grassUserAttention,userAttentions={}", userAttentions);
|
|
|
logger.info("addVirtualFans update userAchieve userAchieveList={}",userAchieveList);
|
|
|
//更新关注明细表
|
|
|
logger.info("addVirtualFans update userAchieve userAchieveFansList={}",userAchieveFansList);
|
|
|
logger.info("addVirtualFans update userAchieve userAchieveAttList={}",userAchieveAttList);
|
|
|
//1)更新关注明细表
|
|
|
grassUserAttentionDao.batchInsert(userAttentions);
|
|
|
logger.info("addVirtualFans update grassUserAttention success!");
|
|
|
//批量更新作者表
|
|
|
userAchieveDAO.batchUpdateFans(userAchieveList);
|
|
|
logger.info("addVirtualFans success!");
|
|
|
//2)批量更新作者表,增加作者对应的粉丝数
|
|
|
userAchieveDAO.batchUpdateFans(userAchieveFansList);
|
|
|
logger.info("addVirtualFans batchUpdateFans success!");
|
|
|
//3)批量更新作者表,增加粉丝对应的关注数
|
|
|
userAchieveDAO.batchInsertOrUpAttentions(userAchieveAttList);
|
|
|
logger.info("addVirtualFans success!");
|
|
|
|
|
|
}
|
|
|
|
...
|
...
|
@@ -268,6 +296,7 @@ public class GrassUserVirtualImpl implements IGrassVirtualService{ |
|
|
userAttentions.add(attention);
|
|
|
}
|
|
|
|
|
|
//作者的粉丝需要增加
|
|
|
//粉丝总数表(一条数据)
|
|
|
GrassUserAchieve userAchieve = new GrassUserAchieve();
|
|
|
userAchieve.setUid(authorUid);//作者
|
...
|
...
|
|