|
@@ -22,6 +22,8 @@ import org.springframework.stereotype.Service;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* 浏览记录Service业务层处理
|
|
@@ -48,12 +50,16 @@ public class BrowseRecordInfoServiceImpl extends ServiceImpl<BrowseRecordInfoMap
|
|
|
*/
|
|
|
@Override
|
|
|
public List<BrowseRecordCustomerInfoVo> getBrowseRecordInfoList(UserInfo userInfo) {
|
|
|
- //从缓存获取
|
|
|
- List<String> values = redisTemplate.opsForHash().values(Constants.BROWSE_RECORD_KEY + userInfo.getId());
|
|
|
ArrayList<BrowseRecordCustomerInfoVo> infoVos = new ArrayList<>();
|
|
|
- for (String value : values) {
|
|
|
- BrowseRecordCustomerInfoVo customerInfoVo = JSONObject.parseObject(value).toJavaObject(BrowseRecordCustomerInfoVo.class);
|
|
|
- infoVos.add(customerInfoVo);
|
|
|
+ String str = Constants.BROWSE_RECORD_KEY + userInfo.getId();
|
|
|
+ //获取以key前缀所有的key
|
|
|
+ Set keys = redisTemplate.keys(str + "*");
|
|
|
+ if (!keys.isEmpty()){
|
|
|
+ for (Object key : keys) {
|
|
|
+ String jsonStr = (String) redisTemplate.opsForValue().get(key);
|
|
|
+ BrowseRecordCustomerInfoVo customerInfoVo = JSONObject.parseObject(jsonStr).toJavaObject(BrowseRecordCustomerInfoVo.class);
|
|
|
+ infoVos.add(customerInfoVo);
|
|
|
+ }
|
|
|
}
|
|
|
return infoVos;
|
|
|
}
|
|
@@ -69,18 +75,17 @@ public class BrowseRecordInfoServiceImpl extends ServiceImpl<BrowseRecordInfoMap
|
|
|
public Response insertBrowseRecord(UserInfo userInfo, Long id) {
|
|
|
|
|
|
//判断用户是否有浏览此商家记录
|
|
|
- if (redisTemplate.opsForHash().hasKey(Constants.BROWSE_RECORD_KEY +userInfo.getId(),id)){
|
|
|
- String jsonStr = (String) redisTemplate.opsForHash().get(Constants.BROWSE_RECORD_KEY + userInfo.getId(), id);
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(jsonStr);
|
|
|
- BrowseRecordCustomerInfoVo customerInfoVo = jsonObject.toJavaObject(BrowseRecordCustomerInfoVo.class);
|
|
|
+ if (redisTemplate.hasKey(Constants.BROWSE_RECORD_KEY + userInfo.getId())){
|
|
|
+ String jsonStr = (String) redisTemplate.opsForValue().get(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":" + id);
|
|
|
+ BrowseRecordCustomerInfoVo customerInfoVo = JSONObject.parseObject(jsonStr).toJavaObject(BrowseRecordCustomerInfoVo.class);
|
|
|
customerInfoVo.setBrowseTime(new Date());
|
|
|
- redisTemplate.opsForHash().put(Constants.BROWSE_RECORD_KEY+userInfo.getId(),id,JSON.toJSONString(customerInfoVo));
|
|
|
+ redisTemplate.opsForValue().set(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":" + id,JSON.toJSONString(customerInfoVo),30, TimeUnit.DAYS);
|
|
|
}else {
|
|
|
//商家详情
|
|
|
BrowseRecordCustomerInfoVo customerDetail = customerInfoMapper.getCustomerDetailsById(id);
|
|
|
customerDetail.setBrowseTime(new Date());
|
|
|
//添加缓存
|
|
|
- redisTemplate.opsForHash().put(Constants.BROWSE_RECORD_KEY+userInfo.getId(),id,JSON.toJSONString(customerDetail));
|
|
|
+ redisTemplate.opsForValue().set(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":" + id,JSON.toJSONString(customerDetail),30, TimeUnit.DAYS);
|
|
|
}
|
|
|
return Response.success();
|
|
|
}
|
|
@@ -94,8 +99,10 @@ public class BrowseRecordInfoServiceImpl extends ServiceImpl<BrowseRecordInfoMap
|
|
|
@Override
|
|
|
public Response removeBrowseRecord(UserInfo userInfo, Long[] ids) {
|
|
|
try {
|
|
|
- //删除浏览记录缓存
|
|
|
- redisTemplate.opsForHash().delete(Constants.BROWSE_RECORD_KEY + userInfo.getId(), ids);
|
|
|
+ for (Long id : ids) {
|
|
|
+ //删除浏览记录缓存
|
|
|
+ redisTemplate.delete(Constants.BROWSE_RECORD_KEY + userInfo.getId() + ":"+id);
|
|
|
+ }
|
|
|
return Response.success();
|
|
|
}catch (Exception e){
|
|
|
throw new CustomException("系统异常");
|