Commit 847d9e2d by zhuyajie

接口优化

parent c3c55647
...@@ -66,13 +66,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -66,13 +66,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
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.stream.Collectors; import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -129,6 +123,10 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{ ...@@ -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_JOIN_GROUP_GUIDE="BOOK:ACTIVITY_USER_JOIN_GROUP_GUIDE";
/**
* 活动关联书刊
*/
private static final String ACTIVITY_USER_BOOK = "BOOK:READING_ACTIVITY:USER_BOOK";
@ParamLog("[receiveMoney]") @ParamLog("[receiveMoney]")
@Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class})
...@@ -1009,8 +1007,16 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{ ...@@ -1009,8 +1007,16 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
} }
Map<Long, AdvertisingBrand> brandMap = advertisingBrandDao.getMapByIds(brandIds); Map<Long, AdvertisingBrand> brandMap = advertisingBrandDao.getMapByIds(brandIds);
List<ActivityUserCountDTO> userCountDTOS = readingUserDao.getUserCountsByActivityIds(activityIds); 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<>(); Map<Long, Integer> userCountMap = new HashMap<>();
for (ActivityUserCountDTO activityUserCountDTO : userCountDTOS) { for (ActivityUserCountDTO activityUserCountDTO : userCountDTOS) {
userCountMap.put(activityUserCountDTO.getActivityId(), activityUserCountDTO.getCount()); userCountMap.put(activityUserCountDTO.getActivityId(), activityUserCountDTO.getCount());
...@@ -1021,7 +1027,17 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{ ...@@ -1021,7 +1027,17 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
readingActivityDTO.setBrandName(advertisingBrand.getBrandName()); readingActivityDTO.setBrandName(advertisingBrand.getBrandName());
} }
readingActivityDTO.setUserCount(userCountMap.get(readingActivityDTO.getId())); 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; return page;
...@@ -1176,4 +1192,22 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{ ...@@ -1176,4 +1192,22 @@ public class ReadingActivityBizImpl implements ReadingActivityBiz{
return 0L; 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; ...@@ -3,6 +3,8 @@ package com.pcloud.book.reading.dao;
import com.pcloud.book.reading.entity.ReadingActivity; import com.pcloud.book.reading.entity.ReadingActivity;
import com.pcloud.common.core.dao.BaseDao; import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/** /**
* @描述:共读活动基本设置 * @描述:共读活动基本设置
* @作者:zhuyajie * @作者:zhuyajie
...@@ -43,4 +45,10 @@ public interface ReadingActivityDao extends BaseDao<ReadingActivity> { ...@@ -43,4 +45,10 @@ public interface ReadingActivityDao extends BaseDao<ReadingActivity> {
* @return * @return
*/ */
ReadingActivity getJoinActivityByKeyword(String altId,String wxUserId,String text); ReadingActivity getJoinActivityByKeyword(String altId,String wxUserId,String text);
/**
* 获取所有活动id
* @return
*/
List<Long> getAllActivityIds();
} }
...@@ -7,6 +7,7 @@ import com.pcloud.common.core.dao.BaseDaoImpl; ...@@ -7,6 +7,7 @@ import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -49,4 +50,9 @@ public class ReadingActivityDaoImpl extends BaseDaoImpl<ReadingActivity> impleme ...@@ -49,4 +50,9 @@ public class ReadingActivityDaoImpl extends BaseDaoImpl<ReadingActivity> impleme
return getSessionTemplate().selectOne(getStatement("getJoinActivityByKeyword"), map); return getSessionTemplate().selectOne(getStatement("getJoinActivityByKeyword"), map);
} }
@Override
public List<Long> getAllActivityIds() {
return getSessionTemplate().selectList(getStatement("getAllActivityIds"));
}
} }
...@@ -234,4 +234,9 @@ ...@@ -234,4 +234,9 @@
create_time DESC create_time DESC
LIMIT 1 LIMIT 1
</select> </select>
<select id="getAllActivityIds" resultType="long">
SELECT DISTINCT id FROM reading_activity
</select>
</mapper> </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