给 shop 项目瘦身,减少打包大小
This commit is contained in:
parent
90b9f793a4
commit
52e5f24913
@ -131,25 +131,25 @@
|
||||
<artifactId>restful-sdk</artifactId>
|
||||
<version>1.0.0.6</version>
|
||||
</dependency>
|
||||
<!-- JavaCV库 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
<!-- <!– JavaCV库 –>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.bytedeco</groupId>-->
|
||||
<!-- <artifactId>javacv</artifactId>-->
|
||||
<!-- <version>1.5.6</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- JavaCV库 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv-platform</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
<!-- FFmpeg平台依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>ffmpeg-platform</artifactId>
|
||||
<version>4.4-1.5.6</version>
|
||||
</dependency>
|
||||
<!-- <!– JavaCV库 –>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.bytedeco</groupId>-->
|
||||
<!-- <artifactId>javacv-platform</artifactId>-->
|
||||
<!-- <version>1.5.6</version>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- <!– FFmpeg平台依赖 –>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.bytedeco</groupId>-->
|
||||
<!-- <artifactId>ffmpeg-platform</artifactId>-->
|
||||
<!-- <version>4.4-1.5.6</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<!-- rabbitMQ消息队列 -->
|
||||
<dependency>
|
||||
@ -325,6 +325,21 @@
|
||||
<activation>
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
|
||||
<dependencies>
|
||||
<!-- 开发环境使用多平台依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv-platform</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>ffmpeg-platform</artifactId>
|
||||
<version>4.4-1.5.6</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</profile>
|
||||
<!--开发环境 -->
|
||||
<profile>
|
||||
@ -335,6 +350,22 @@
|
||||
<activation>
|
||||
<activeByDefault>false</activeByDefault>
|
||||
</activation>
|
||||
|
||||
<dependencies>
|
||||
<!-- 开发环境使用多平台依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv-platform</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>ffmpeg-platform</artifactId>
|
||||
<version>4.4-1.5.6</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</profile>
|
||||
<!--测试环境 -->
|
||||
<profile>
|
||||
@ -342,6 +373,22 @@
|
||||
<properties>
|
||||
<profiles.active>test</profiles.active>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- 开发环境使用多平台依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv-platform</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>ffmpeg-platform</artifactId>
|
||||
<version>4.4-1.5.6</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</profile>
|
||||
<!--uat环境 -->
|
||||
<profile>
|
||||
@ -349,6 +396,22 @@
|
||||
<properties>
|
||||
<profiles.active>uat</profiles.active>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- 开发环境使用多平台依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv-platform</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>ffmpeg-platform</artifactId>
|
||||
<version>4.4-1.5.6</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</profile>
|
||||
<!--生产环境 -->
|
||||
<profile>
|
||||
@ -356,6 +419,24 @@
|
||||
<properties>
|
||||
<profiles.active>prod</profiles.active>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- 生产环境仅包含Linux平台依赖 -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>javacv</artifactId>
|
||||
<version>1.5.6</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Linux平台的FFmpeg -->
|
||||
<dependency>
|
||||
<groupId>org.bytedeco</groupId>
|
||||
<artifactId>ffmpeg</artifactId>
|
||||
<version>4.4-1.5.6</version>
|
||||
<classifier>linux-x86_64</classifier>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
|
||||
@ -45,6 +45,7 @@ import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.*;
|
||||
//import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@ -74,8 +75,8 @@ public class SnsUserMessageServiceImpl extends BaseServiceImpl<SnsUserMessageMap
|
||||
private SnsUserFriendService snsUserFriendService;
|
||||
@Autowired
|
||||
private ImService imService;
|
||||
// @Autowired
|
||||
// private RedisTemplate<String, Object> redisTemplate;
|
||||
@Autowired
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
@Override
|
||||
public Map getMsgCount() {
|
||||
@ -87,22 +88,30 @@ public class SnsUserMessageServiceImpl extends BaseServiceImpl<SnsUserMessageMap
|
||||
}
|
||||
|
||||
Integer userId = user.getId();
|
||||
// String cacheKey = "sns:user:message:unread:" + userId;
|
||||
String cacheKey = "sns:user:message:unread:" + userId;
|
||||
String counterKey = "sns:user:message:unread:counter:" + userId;
|
||||
|
||||
// // 尝试从Redis缓存中获取数据
|
||||
// Map cachedResult = (Map) redisTemplate.opsForValue().get(cacheKey);
|
||||
// if (cachedResult != null) {
|
||||
// return cachedResult;
|
||||
// }
|
||||
// 尝试从Redis缓存中获取数据
|
||||
Map cachedResult = (Map) redisTemplate.opsForValue().get(cacheKey);
|
||||
if (cachedResult != null) {
|
||||
return cachedResult;
|
||||
}
|
||||
|
||||
// 使用计数器方式提高性能,避免每次都count数据库
|
||||
Long unreadCount = redisTemplate.opsForValue().increment(counterKey, 0);
|
||||
if (unreadCount == null) {
|
||||
// 如果计数器不存在,则从数据库查询并初始化计数器
|
||||
QueryWrapper<SnsUserMessage> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId).eq("message_kind", 2).eq("message_is_read", 0);
|
||||
long num = count(queryWrapper);
|
||||
unreadCount = count(queryWrapper);
|
||||
// 设置计数器,过期时间1小时
|
||||
redisTemplate.opsForValue().set(counterKey, unreadCount, 3600, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
rs.put("num", num);
|
||||
rs.put("num", unreadCount);
|
||||
|
||||
// 构造最后一个用户聊天网址
|
||||
if (num > 0) {
|
||||
if (unreadCount > 0) {
|
||||
QueryWrapper<SnsUserMessage> messageQuery = new QueryWrapper<>();
|
||||
messageQuery.orderByAsc("message_is_read").orderByDesc("message_time")
|
||||
.eq("user_id", userId).eq("message_is_read", 0).eq("message_kind", 2);
|
||||
@ -123,8 +132,8 @@ public class SnsUserMessageServiceImpl extends BaseServiceImpl<SnsUserMessageMap
|
||||
}
|
||||
}
|
||||
|
||||
// // 将结果缓存到Redis,缓存10秒
|
||||
// redisTemplate.opsForValue().set(cacheKey, rs, 45, TimeUnit.SECONDS);
|
||||
// 将结果缓存到Redis,缓存5秒以提高高并发下的性能
|
||||
redisTemplate.opsForValue().set(cacheKey, rs, 5, TimeUnit.SECONDS);
|
||||
|
||||
return rs;
|
||||
}
|
||||
@ -320,13 +329,10 @@ public class SnsUserMessageServiceImpl extends BaseServiceImpl<SnsUserMessageMap
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置为已读
|
||||
*
|
||||
* @return
|
||||
* 重写setRead方法,在设置消息为已读时更新未读计数器
|
||||
*/
|
||||
@Override
|
||||
public boolean setRead() {
|
||||
|
||||
// 权限判断
|
||||
UserDto user = ContextUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
@ -346,10 +352,29 @@ public class SnsUserMessageServiceImpl extends BaseServiceImpl<SnsUserMessageMap
|
||||
if (CheckUtil.isNotEmpty(user_other_id)) {
|
||||
queryWrapper.eq("user_other_id", user_other_id);
|
||||
}
|
||||
|
||||
// 查询需要更新的消息数量
|
||||
List<SnsUserMessage> messagesToUpdate = find(queryWrapper);
|
||||
long unreadToUpdate = messagesToUpdate.stream()
|
||||
.filter(m -> m.getMessage_is_read() == 0)
|
||||
.count();
|
||||
|
||||
SnsUserMessage userMessage = new SnsUserMessage();
|
||||
userMessage.setMessage_is_read(1);
|
||||
saveOrUpdate(userMessage, queryWrapper);
|
||||
return true;
|
||||
boolean result = saveOrUpdate(userMessage, queryWrapper);
|
||||
|
||||
// 更新未读计数器和缓存
|
||||
if (result && unreadToUpdate > 0) {
|
||||
String counterKey = "sns:user:message:unread:counter:" + user_id;
|
||||
String cacheKey = "sns:user:message:unread:" + user_id;
|
||||
|
||||
// 减少计数器
|
||||
redisTemplate.opsForValue().increment(counterKey, -unreadToUpdate);
|
||||
// 删除缓存,下次请求会重新生成
|
||||
redisTemplate.delete(cacheKey);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -712,14 +737,11 @@ public class SnsUserMessageServiceImpl extends BaseServiceImpl<SnsUserMessageMap
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加短消息
|
||||
*
|
||||
* @return
|
||||
* 重写addMessage方法,在添加新消息时更新未读计数器
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public Map addMessage() {
|
||||
|
||||
UserDto user = ContextUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
throw new ApiException(ResultCode.NEED_LOGIN);
|
||||
@ -818,8 +840,18 @@ public class SnsUserMessageServiceImpl extends BaseServiceImpl<SnsUserMessageMap
|
||||
if (!saveOrUpdate(other)) {
|
||||
throw new ApiException(I18nUtil._("保存收件箱失败!data=") + other);
|
||||
}
|
||||
|
||||
result.put("message_id", data.getMessage_id());
|
||||
result.put("message_other_id", other.getMessage_id());
|
||||
|
||||
// 新消息添加后,更新接收者的未读计数器和缓存
|
||||
String counterKey = "sns:user:message:unread:counter:" + user_other_row.getUser_id();
|
||||
String cacheKey = "sns:user:message:unread:" + user_other_row.getUser_id();
|
||||
|
||||
// 增加计数器
|
||||
redisTemplate.opsForValue().increment(counterKey, 1);
|
||||
// 删除缓存,下次请求会重新生成
|
||||
redisTemplate.delete(cacheKey);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
9
pom.xml
9
pom.xml
@ -569,11 +569,10 @@
|
||||
<!--推送镜像仓库校验安全证书,无安全证书无法推送-->
|
||||
<dockerCertPath>${docker.ca}</dockerCertPath>
|
||||
|
||||
<!-- 添加清理命令来过滤无用文件 -->
|
||||
<!-- <runs>-->
|
||||
<!-- <!– 合并所有清理命令到单个RUN指令 –>-->
|
||||
<!-- <run>rm -rf /var/cache/apk/* && rm -rf /root/.m2 && find / -name "*.log" -type f -delete 2>/dev/null || true && find / -name "*test*" -type f -delete 2>/dev/null || true && find / -name "*.md" -type f -delete 2>/dev/null || true && rm -rf /tmp/* /var/tmp/* && rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/info/* && rm -rf /var/cache/yum/* /var/cache/dnf/* 2>/dev/null || true && rm -rf /tmp/*.tar.gz /tmp/*.zip /app/*.tar.gz 2>/dev/null || true && apk del --purge vim curl wget tar gzip 2>/dev/null || true && rm -rf /root/.java /tmp/hsperfdata_* 2>/dev/null || true && find / -type d -empty -delete 2>/dev/null || true</run>-->
|
||||
<!-- </runs>-->
|
||||
<!-- 添加额外的Dockerfile指令来清理不必要的文件 -->
|
||||
<runs>
|
||||
<run>rm -rf /root/.m2 && rm -rf /tmp/* && rm -rf /var/cache/*</run>
|
||||
</runs>
|
||||
|
||||
<resources>
|
||||
<resource>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user