Commit 847d9e2d by zhuyajie

接口优化

parent c3c55647
......@@ -66,13 +66,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
......@@ -129,6 +123,10 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
* 读书活动进群的欢迎语
*/
private static final String ACTIVITY_USER_JOIN_GROUP_GUIDE="BOOK:ACTIVITY_USER_JOIN_GROUP_GUIDE";
/**
* 活动关联书刊
*/
private static final String ACTIVITY_USER_BOOK = "BOOK:READING_ACTIVITY:USER_BOOK";
@ParamLog("[receiveMoney]")
@Transactional(rollbackFor = {Exception.class})
......@@ -1009,8 +1007,16 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
}
Map<Long, AdvertisingBrand> brandMap = advertisingBrandDao.getMapByIds(brandIds);
List<ActivityUserCountDTO> userCountDTOS = readingUserDao.getUserCountsByActivityIds(activityIds);
List<ActivityUserBookDTO> userBookDTOS = readingUserDao.getBooksByActivityIds(activityIds);
Map<Long, List<ActivityUserBookDTO>> userBookDTOSMap = userBookDTOS.stream().collect(Collectors.groupingBy(ActivityUserBookDTO::getActivityId));
//书刊缓存
Boolean exist = JedisClusterUtils.exists(ACTIVITY_USER_BOOK);
Map<Long, List<ActivityUserBookDTO>> userBookDTOSMap = new HashMap<>();
if (!exist){
ThreadPoolUtils.OTHER_THREAD_POOL.execute(()->{
this.setReadingActivityRedis();
});
List<ActivityUserBookDTO> userBookDTOS = readingUserDao.getBooksByActivityIds(activityIds);
userBookDTOSMap = userBookDTOS.stream().collect(Collectors.groupingBy(ActivityUserBookDTO::getActivityId));
}
Map<Long, Integer> userCountMap = new HashMap<>();
for (ActivityUserCountDTO activityUserCountDTO : userCountDTOS) {
userCountMap.put(activityUserCountDTO.getActivityId(), activityUserCountDTO.getCount());
......@@ -1021,7 +1027,17 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
readingActivityDTO.setBrandName(advertisingBrand.getBrandName());
}
readingActivityDTO.setUserCount(userCountMap.get(readingActivityDTO.getId()));
readingActivityDTO.setActivityUserBookDTOS(userBookDTOSMap.get(readingActivityDTO.getId()));
List<ActivityUserBookDTO> bookDTOS;
if (!exist){
bookDTOS = userBookDTOSMap.get(readingActivityDTO.getId());
}else {
bookDTOS = JedisClusterUtils.hgetJson2List(ACTIVITY_USER_BOOK,readingActivityDTO.getId().toString(),ActivityUserBookDTO.class);
}
if (ListUtils.isEmpty(bookDTOS)){
bookDTOS = readingUserDao.getBooksByActivityIds(Arrays.asList(readingActivityDTO.getId()));
JedisClusterUtils.hset2Json(ACTIVITY_USER_BOOK, readingActivityDTO.getId().toString(), bookDTOS);
}
readingActivityDTO.setActivityUserBookDTOS(bookDTOS);
}
}
return page;
......@@ -1176,4 +1192,22 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
return 0L;
}
}
/**
* 添加书刊缓存
*/
public void setReadingActivityRedis() {
List<Long> activityIds = readingActivityDao.getAllActivityIds();
if (ListUtils.isEmpty(activityIds)){
return;
}
List<ActivityUserBookDTO> userBookDTOS = readingUserDao.getBooksByActivityIds(activityIds);
if (ListUtils.isEmpty(userBookDTOS)){
return;
}
Map<Long, List<ActivityUserBookDTO>> userBookDTOSMap = userBookDTOS.stream().collect(Collectors.groupingBy(ActivityUserBookDTO::getActivityId));
for (Map.Entry<Long,List<ActivityUserBookDTO>> entrySet: userBookDTOSMap.entrySet()){
JedisClusterUtils.hset2Json(ACTIVITY_USER_BOOK, entrySet.getKey().toString(), entrySet.getValue());
}
}
}
......@@ -3,6 +3,8 @@ package com.pcloud.book.reading.dao;
import com.pcloud.book.reading.entity.ReadingActivity;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* @描述:共读活动基本设置
* @作者:zhuyajie
......@@ -43,4 +45,10 @@ public interface ReadingActivityDao extends BaseDao<ReadingActivity> {
* @return
*/
ReadingActivity getJoinActivityByKeyword(String altId,String wxUserId,String text);
/**
* 获取所有活动id
* @return
*/
List<Long> getAllActivityIds();
}
......@@ -7,6 +7,7 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
......@@ -49,4 +50,9 @@ public class ReadingActivityDaoImpl extends BaseDaoImpl<ReadingActivity> impleme
return getSessionTemplate().selectOne(getStatement("getJoinActivityByKeyword"), map);
}
@Override
public List<Long> getAllActivityIds() {
return getSessionTemplate().selectList(getStatement("getAllActivityIds"));
}
}
......@@ -234,4 +234,9 @@
create_time DESC
LIMIT 1
</select>
<select id="getAllActivityIds" resultType="long">
SELECT DISTINCT id FROM reading_activity
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment