diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 29e0083ba..1bdd7783f 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -132,6 +132,8 @@ tenant:
- t_fans
- sys_tenant
- sys_tenant_package
+ - aws_system_statistics
+ - act_integral_history
- sys_role_dept
- sys_role_menu
- sys_user_post
diff --git a/ruoyi-modules/ruoyi-content/pom.xml b/ruoyi-modules/ruoyi-content/pom.xml
index ad15ce273..22e7eb083 100644
--- a/ruoyi-modules/ruoyi-content/pom.xml
+++ b/ruoyi-modules/ruoyi-content/pom.xml
@@ -178,7 +178,10 @@
org.dromara
ruoyi-system
-
+
+ org.dromara
+ ruoyi-im
+
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/VlogController.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/VlogController.java
index 24642043c..377be4302 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/VlogController.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/controller/VlogController.java
@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import com.wzj.soopin.content.utils.RedisOperator;
import org.springframework.web.bind.annotation.*;
@@ -34,6 +35,8 @@ public class VlogController extends BaseInfoProperties {
private QcCloud qcCloud;
@Autowired
private VlogUploadService vlogUploadService;
+ @Autowired
+ public RedisOperator redis;
@PostMapping("vodCallBack")
public R vodCallBack(@RequestBody Map callbackData) {
diff --git a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java
index b1057ee42..98dcb8c63 100644
--- a/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java
+++ b/ruoyi-modules/ruoyi-content/src/main/java/com/wzj/soopin/content/service/impl/VlogServiceImpl.java
@@ -75,7 +75,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
@Autowired
private ISysMessageTemplateService templateService;
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void updateVlogStatus(String fileId, Integer status, String reason) {
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
@@ -90,7 +90,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
String uploaderId = vlog.getVlogerId();
// 2. 选择模板(假设你有模板ID,实际可配置到常量或数据库)
- Long templateId = (status == 1) ? 1001L : 1002L; // 1001=审核通过模板,1002=驳回模板
+ Long templateId = (status == 1) ? 1938491493736902658L : 1938491899007332353L; // 1001=审核通过模板,1002=驳回模板
SysMessageTemplateVo template = templateService.selectTemplateById(templateId);
if (template == null) return;
@@ -110,7 +110,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
sysMessageService.sendMessageToUser(messageBo, Long.valueOf(uploaderId));
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void updateVlogFirstImg(String fileId, String url, String fileUrl) {
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
@@ -120,7 +120,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
vlogMapper.update(null, updateWrapper);
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void createVlog(VlogBO vlogBO) {
String vid = sid.nextShort();
@@ -257,7 +257,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
return vo;
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void changeToPrivateOrPublic(String userId, String vlogId, Integer yesOrNo) {
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
@@ -267,7 +267,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
vlogMapper.update(null, updateWrapper);
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void changeVlogStatus(String userId, String vlogId, Integer status) {
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
@@ -304,7 +304,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
return null;
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void userLikeVlog(String userId, String vlogId) {
String rid = sid.nextShort();
@@ -325,13 +325,18 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
Vlog vlog = vlogMapper.selectById(vlogId);
if (vlog != null) {
String vlogerId = vlog.getVlogerId();
- if (!userId.equals(vlogerId)) { // 不给自己发
- Long templateId = 1003L; // 假设1003是点赞通知模板
+ if (!userId.equals(vlogerId)) {
+ Long templateId = 1938491299175723009L;
SysMessageTemplateVo template = templateService.selectTemplateById(templateId);
if (template != null) {
+ // 查询点赞用户昵称
+ Users liker = usersMapper.selectById(userId);
+ String likerNickname = liker != null && liker.getNickname() != null ? liker.getNickname() : "";
+
String content = template.getTemplateContent()
.replace("${videoTitle}", vlog.getTitle() == null ? "" : vlog.getTitle())
- .replace("${liker}", userId); // 可查昵称
+ .replace("${liker}", userId)
+ .replace("${likerNickname}", likerNickname);
SysMessageBo messageBo = new SysMessageBo();
messageBo.setTitle(template.getTitle());
messageBo.setContent(content);
@@ -347,7 +352,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
return vlogMapper.selectById(id);
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void flushCounts(String vlogId, Integer counts) {
LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>();
@@ -356,7 +361,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
vlogMapper.update(null, updateWrapper);
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void userUnLikeVlog(String userId, String vlogId) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
@@ -581,7 +586,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
} catch (Exception e) {
// 处理解析异常,例如日志记录
System.err.println("Error parsing beginTime: " + beginTimeStr + " - " + e.getMessage());
- vlogBO.setStartTime(null); // 设置为null以避免SQL错误
+ vlogBO.setStartTime(null);
}
} else {
System.out.println("beginTimeStr is blank or null.");
@@ -602,7 +607,7 @@ public class VlogServiceImpl extends BaseInfoProperties implements VlogService {
} catch (Exception e) {
// 处理解析异常,例如日志记录
System.err.println("Error parsing endTime: " + endTimeStr + " - " + e.getMessage());
- vlogBO.setEndTime(null); // 设置为null以避免SQL错误
+ vlogBO.setEndTime(null);
}
} else {
System.out.println("endTimeStr is blank or null.");
diff --git a/ruoyi-modules/ruoyi-im/pom.xml b/ruoyi-modules/ruoyi-im/pom.xml
index c6c53acd9..ecd6dec8c 100644
--- a/ruoyi-modules/ruoyi-im/pom.xml
+++ b/ruoyi-modules/ruoyi-im/pom.xml
@@ -72,6 +72,14 @@
org.dromara
ruoyi-common-web
+
+
+
+
+
+ org.dromara
+ ruoyi-system
+
org.dromara
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/consumer/MessageRocketMQConsumer.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/consumer/MessageRocketMQConsumer.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/consumer/MessageRocketMQConsumer.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/consumer/MessageRocketMQConsumer.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMessageController.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/controller/SysMessageController.java
similarity index 91%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMessageController.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/controller/SysMessageController.java
index 99af4512e..8cc5b8afc 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMessageController.java
+++ b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/controller/SysMessageController.java
@@ -1,41 +1,31 @@
package org.dromara.system.controller;
-import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.wzj.soopin.member.domain.po.Member;
-import com.wzj.soopin.member.mapper.MemberMapper;
-import io.swagger.v3.oas.annotations.Operation;
+//import com.wzj.soopin.member.domain.po.Member;
+//import com.wzj.soopin.member.mapper.MemberMapper;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
-import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.core.validate.QueryGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.SysMessage;
-import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.SysMessageBo;
-import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysMessageTemplateVo;
import org.dromara.system.domain.vo.SysMessageVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysMessageService;
import org.dromara.system.service.ISysMessageTemplateService;
-import org.dromara.system.service.ISysUserService;
-import org.dromara.common.satoken.utils.LoginHelper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.dromara.system.service.ISysUserService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -56,7 +46,7 @@ public class SysMessageController extends BaseController {
private final ISysMessageService messageService;
private final ISysUserService userService;
private final ISysMessageTemplateService templateService;
- private final MemberMapper umsMemberMapper;
+// private final MemberMapper umsMemberMapper;
/**
* 获取当前用户ID
@@ -143,10 +133,10 @@ public class SysMessageController extends BaseController {
// 当logmess=1时,sendScope接收的是角色ID或特殊标识
if ("all".equals(scope)) {
// 全部会员用户(查ums_member表)
- List members = umsMemberMapper.selectList(
- new QueryWrapper().eq("status", 1)
- );
- userIdStrings = members.stream().map(m -> String.valueOf(m.getId())).toList();
+// List members = umsMemberMapper.selectList(
+// new QueryWrapper().eq("status", 1)
+// );
+// userIdStrings = members.stream().map(m -> String.valueOf(m.getId())).toList();
} else if ("expert".equals(scope) || "merchant".equals(scope) || "user".equals(scope)) {
List users = userService.selectUserListByDept(null);
List userIds;
@@ -346,13 +336,13 @@ public class SysMessageController extends BaseController {
return R.ok(readPage);
}
- /**
- * 获取用户列表
- */
-// @SaCheckPermission("system:message:list")
- @GetMapping("/user/list")
- public R> getUserList(@RequestParam(required = false) String keyword) {
- // 无论是否有关键词,都查询 ums_member 表中的用户信息
- return R.ok(userService.selectMemberUsers(keyword));
- }
+// /**
+// * 获取用户列表
+// */
+//// @SaCheckPermission("system:message:list")
+// @GetMapping("/user/list")
+// public R> getUserList(@RequestParam(required = false) String keyword) {
+// // 无论是否有关键词,都查询 ums_member 表中的用户信息
+// return R.ok(userService.selectMemberUsers(keyword));
+// }
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMessageTemplateController.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/controller/SysMessageTemplateController.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysMessageTemplateController.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/controller/SysMessageTemplateController.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/converter/SysMessageConvert.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/converter/SysMessageConvert.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/converter/SysMessageConvert.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/converter/SysMessageConvert.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMessage.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/SysMessage.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMessage.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/SysMessage.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMessageTemplate.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/SysMessageTemplate.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMessageTemplate.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/SysMessageTemplate.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMessageUser.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/SysMessageUser.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysMessageUser.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/SysMessageUser.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysMessageBo.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/bo/SysMessageBo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysMessageBo.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/bo/SysMessageBo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysMessageTemplateBo.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/bo/SysMessageTemplateBo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysMessageTemplateBo.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/bo/SysMessageTemplateBo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/event/MessageEvent.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/event/MessageEvent.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/event/MessageEvent.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/event/MessageEvent.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMessageTemplateVo.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/vo/SysMessageTemplateVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMessageTemplateVo.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/vo/SysMessageTemplateVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMessageUserVo.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/vo/SysMessageUserVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMessageUserVo.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/vo/SysMessageUserVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMessageVo.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/vo/SysMessageVo.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMessageVo.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/domain/vo/SysMessageVo.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/event/MessageEventListener.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/event/MessageEventListener.java
similarity index 93%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/event/MessageEventListener.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/event/MessageEventListener.java
index d6cb9ed7d..f4a497c46 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/event/MessageEventListener.java
+++ b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/event/MessageEventListener.java
@@ -1,11 +1,8 @@
package org.dromara.system.event;
-import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.system.config.RocketMQConfig;
import org.dromara.system.consumer.MessageRocketMQConsumer;
import org.dromara.system.domain.event.MessageEvent;
import org.dromara.system.service.IRocketMQService;
@@ -33,10 +30,10 @@ public class MessageEventListener {
@Autowired
private IRocketMQService rocketMQService;
-
+
@Autowired
private MessageWebSocketServer messageWebSocketServer;
-
+
@Autowired
@Qualifier("systemTencentIMService")
private ITencentIMService tencentIMService;
@@ -50,47 +47,47 @@ public class MessageEventListener {
try {
// 提取消息和用户ID
String userId = event.getUserIdStr();
-
+
// 创建消息包装对象
MessageRocketMQConsumer.MessageWrapper wrapper = new MessageRocketMQConsumer.MessageWrapper();
wrapper.setUserId(userId);
wrapper.setMessage(event.getMessage());
-
+
// 首先尝试发送消息到腾讯IM
boolean tencentIMSendSuccess = false;
try {
// 消息发送者可能是系统或管理员,这里使用固定的管理员账号作为发送者
- String fromUserId = "administrator";
+ String fromUserId = "administrator";
String toUserId = userId; // 接收者是事件中的用户ID
String content = event.getMessage().getContent(); // 只取content字段
-
+
// 处理消息变量替换(如果有)
Map variables = new HashMap<>();
// 这里可以添加变量映射,例如:variables.put("userName", "张三");
-
+
// 从消息中提取标题和描述
String title = event.getMessage().getTitle();
String desc = event.getMessage().getContent();
-
+
// 处理变量替换
if (variables.size() > 0) {
title = tencentIMService.processMessageVariables(title, variables);
desc = tencentIMService.processMessageVariables(desc, variables);
}
-
+
// 扩展字段,可以在APP端获取
String ext = null;
if (event.getMessage().getParams() != null && !event.getMessage().getParams().isEmpty()) {
ext = JsonUtils.toJsonString(event.getMessage().getParams());
}
-
+
// 根据消息类型决定推送方式
Map params = event.getMessage().getParams();
String pushType = null;
if (params != null && params.containsKey("pushType")) {
pushType = String.valueOf(params.get("pushType"));
}
-
+
if (pushType != null) {
switch (pushType) {
case "ALL":
@@ -114,7 +111,7 @@ public class MessageEventListener {
if (params != null && params.containsKey("tags")) {
Object tagsObj = params.get("tags");
if (tagsObj instanceof String[]) {
- tencentIMSendSuccess = tencentIMService.pushByTags(title, desc,
+ tencentIMSendSuccess = tencentIMService.pushByTags(title, desc,
Arrays.asList((String[]) tagsObj), true, ext);
}
}
@@ -122,7 +119,7 @@ public class MessageEventListener {
case "USER":
default:
// 单用户推送(默认)
- tencentIMSendSuccess = tencentIMService.pushToUsers(title, desc,
+ tencentIMSendSuccess = tencentIMService.pushToUsers(title, desc,
Collections.singletonList(toUserId), true, ext);
break;
}
@@ -130,7 +127,7 @@ public class MessageEventListener {
// 默认为单用户推送
tencentIMSendSuccess = tencentIMService.sendMessageToTencentIM(fromUserId, toUserId, content);
}
-
+
if (tencentIMSendSuccess) {
log.info("消息已成功发送到腾讯IM,接收者: {}", toUserId);
} else {
@@ -139,7 +136,7 @@ public class MessageEventListener {
} catch (Exception e) {
log.error("发送消息到腾讯IM异常,将尝试通过其他方式发送", e);
}
-
+
// 无论腾讯IM是否发送成功,都继续尝试通过RocketMQ发送消息
// 这样可以确保消息至少通过一种方式发送出去
/*
@@ -157,12 +154,12 @@ public class MessageEventListener {
}
*/
boolean rocketMQSendSuccess = false; // 直接设为false,表示不走MQ
-
+
// 如果前两种方式都失败,则尝试直接通过WebSocket发送
if (!tencentIMSendSuccess && !rocketMQSendSuccess && event.getUserId() != null) {
try {
messageWebSocketServer.sendMessage(
- event.getUserId(),
+ event.getUserId(),
JsonUtils.toJsonString(event.getMessage())
);
log.info("消息事件已直接通过WebSocket发送,userId: {}", event.getUserId());
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMessageMapper.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/mapper/SysMessageMapper.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMessageMapper.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/mapper/SysMessageMapper.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMessageTemplateMapper.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/mapper/SysMessageTemplateMapper.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMessageTemplateMapper.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/mapper/SysMessageTemplateMapper.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMessageUserMapper.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/mapper/SysMessageUserMapper.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMessageUserMapper.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/mapper/SysMessageUserMapper.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IMessageWebSocketService.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/IMessageWebSocketService.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/IMessageWebSocketService.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/IMessageWebSocketService.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMessageService.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/ISysMessageService.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMessageService.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/ISysMessageService.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMessageTemplateService.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/ISysMessageTemplateService.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysMessageTemplateService.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/ISysMessageTemplateService.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/MessageWebSocketServiceImpl.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/MessageWebSocketServiceImpl.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/MessageWebSocketServiceImpl.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/MessageWebSocketServiceImpl.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/SysMessageServiceImpl.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageTemplateServiceImpl.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/SysMessageTemplateServiceImpl.java
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMessageTemplateServiceImpl.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/SysMessageTemplateServiceImpl.java
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/TencentIMServiceImpl.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/TencentIMServiceImpl.java
similarity index 99%
rename from ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/TencentIMServiceImpl.java
rename to ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/TencentIMServiceImpl.java
index e3af563e4..87555e6fe 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/TencentIMServiceImpl.java
+++ b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/service/impl/TencentIMServiceImpl.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.dromara.system.service.ITencentIMService;
+import org.dromara.system.util.TLSSigAPIv2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
@@ -19,7 +20,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.Deflater;
import java.util.Base64;
-import com.wzj.soopin.member.util.TLSSigAPIv2;
+
/**
* 腾讯IM服务实现类
diff --git a/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/util/TLSSigAPIv2.java b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/util/TLSSigAPIv2.java
new file mode 100644
index 000000000..083d69b4c
--- /dev/null
+++ b/ruoyi-modules/ruoyi-im/src/main/java/org/dromara/system/util/TLSSigAPIv2.java
@@ -0,0 +1,194 @@
+package org.dromara.system.util;
+
+
+import cn.hutool.json.JSONException;
+import cn.hutool.json.JSONObject;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+import java.util.Base64;
+import java.util.zip.Deflater;
+
+public class TLSSigAPIv2 {
+ private static long sdkappid = 1600080789; // 替换为您的 SDKAppID
+
+ private static String key = "311b5309d714a20f7f5b54360ee21b1e24ec208ebcd25ce8f47d24753bccc091"; // 替换为您的密钥
+
+ public TLSSigAPIv2(long sdkappid, String key) {
+ this.sdkappid = sdkappid;
+ this.key = key;
+ }
+
+ /**
+ * 生成 UserSig 签名
+ *
+ * @param userid - 用户id,限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符
+ * @param expire - UserSig 票据的过期时间,单位是秒,比如 86400 代表生成的 UserSig 票据在一天后就无法再使用了
+ * @return usersig - 生成的签名
+ */
+ public String genUserSig(String userid, long expire) {
+ return genUserSig(userid, expire, null);
+ }
+
+ /**
+ * 生成带 UserBuf 的 UserSig
+ *
+ * @param userid - 用户id
+ * @param expire - 过期时间,单位秒
+ * @param userbuf - 用户数据
+ * @return 生成的签名
+ */
+ private String genUserSig(String userid, long expire, byte[] userbuf) {
+ long currTime = System.currentTimeMillis() / 1000;
+
+ JSONObject sigDoc = new JSONObject();
+ try {
+ sigDoc.put("TLS.ver", "2.0");
+ sigDoc.put("TLS.identifier", userid);
+ sigDoc.put("TLS.sdkappid", sdkappid);
+ sigDoc.put("TLS.expire", expire);
+ sigDoc.put("TLS.time", currTime);
+
+ String base64UserBuf = null;
+ if (null != userbuf) {
+ base64UserBuf = Base64.getEncoder().encodeToString(userbuf).replaceAll("\\s*", "");
+ sigDoc.put("TLS.userbuf", base64UserBuf);
+ }
+
+ String sig = hmacsha256(userid, currTime, expire, base64UserBuf);
+ if (sig.length() == 0) {
+ return "";
+ }
+ sigDoc.put("TLS.sig", sig);
+
+ Deflater compressor = new Deflater();
+ compressor.setInput(sigDoc.toString().getBytes(StandardCharsets.UTF_8));
+ compressor.finish();
+ byte[] compressedBytes = new byte[2048];
+ int compressedBytesLength = compressor.deflate(compressedBytes);
+ compressor.end();
+
+ return Base64.getEncoder().encodeToString(
+ Arrays.copyOfRange(compressedBytes, 0, compressedBytesLength)
+ ).replaceAll("\\s*", "");
+
+ } catch (JSONException e) {
+ return "";
+ }
+ }
+
+ /**
+ * 生成 PrivateMapKey
+ */
+ public String genPrivateMapKey(String userid, long expire, long roomid, long privilegeMap) {
+ byte[] userbuf = genUserBuf(userid, roomid, expire, privilegeMap, 0, "");
+ return genUserSig(userid, expire, userbuf);
+ }
+
+ /**
+ * 生成带字符串房间号的 PrivateMapKey
+ */
+ public String genPrivateMapKeyWithStringRoomID(String userid, long expire, String roomstr, long privilegeMap) {
+ byte[] userbuf = genUserBuf(userid, 0, expire, privilegeMap, 0, roomstr);
+ return genUserSig(userid, expire, userbuf);
+ }
+
+ /**
+ * 生成 HMAC-SHA256 签名
+ */
+ private String hmacsha256(String identifier, long currTime, long expire, String base64Userbuf) {
+ String contentToBeSigned = "TLS.identifier:" + identifier + "\n"
+ + "TLS.sdkappid:" + sdkappid + "\n"
+ + "TLS.time:" + currTime + "\n"
+ + "TLS.expire:" + expire + "\n";
+ if (null != base64Userbuf) {
+ contentToBeSigned += "TLS.userbuf:" + base64Userbuf + "\n";
+ }
+
+ try {
+ byte[] byteKey = key.getBytes(StandardCharsets.UTF_8);
+ Mac hmac = Mac.getInstance("HmacSHA256");
+ SecretKeySpec keySpec = new SecretKeySpec(byteKey, "HmacSHA256");
+ hmac.init(keySpec);
+ byte[] byteSig = hmac.doFinal(contentToBeSigned.getBytes(StandardCharsets.UTF_8));
+ return Base64.getEncoder().encodeToString(byteSig).replaceAll("\\s*", "");
+ } catch (NoSuchAlgorithmException | InvalidKeyException e) {
+ return "";
+ }
+ }
+
+ /**
+ * 生成用户数据
+ */
+ private byte[] genUserBuf(String account, long dwAuthID, long dwExpTime,
+ long dwPrivilegeMap, long dwAccountType, String roomStr) {
+ int accountLength = account.length();
+ int roomStrLength = roomStr.length();
+ int offset = 0;
+ int bufLength = 1 + 2 + accountLength + 20;
+
+ if (roomStrLength > 0) {
+ bufLength = bufLength + 2 + roomStrLength;
+ }
+
+ byte[] userbuf = new byte[bufLength];
+
+ // 版本号
+ userbuf[offset++] = (byte)(roomStrLength > 0 ? 1 : 0);
+
+ // 账号长度
+ userbuf[offset++] = (byte) ((accountLength & 0xFF00) >> 8);
+ userbuf[offset++] = (byte) (accountLength & 0x00FF);
+
+ // 写入账号
+ for (; offset < 3 + accountLength; ++offset) {
+ userbuf[offset] = (byte) account.charAt(offset - 3);
+ }
+
+ // 写入 sdkappid
+ userbuf[offset++] = (byte) ((sdkappid & 0xFF000000) >> 24);
+ userbuf[offset++] = (byte) ((sdkappid & 0x00FF0000) >> 16);
+ userbuf[offset++] = (byte) ((sdkappid & 0x0000FF00) >> 8);
+ userbuf[offset++] = (byte) (sdkappid & 0x000000FF);
+
+ // 写入房间号
+ userbuf[offset++] = (byte) ((dwAuthID & 0xFF000000) >> 24);
+ userbuf[offset++] = (byte) ((dwAuthID & 0x00FF0000) >> 16);
+ userbuf[offset++] = (byte) ((dwAuthID & 0x0000FF00) >> 8);
+ userbuf[offset++] = (byte) (dwAuthID & 0x000000FF);
+
+ // 过期时间
+ long expire = System.currentTimeMillis() / 1000 + dwExpTime;
+ userbuf[offset++] = (byte) ((expire & 0xFF000000) >> 24);
+ userbuf[offset++] = (byte) ((expire & 0x00FF0000) >> 16);
+ userbuf[offset++] = (byte) ((expire & 0x0000FF00) >> 8);
+ userbuf[offset++] = (byte) (expire & 0x000000FF);
+
+ // 权限位
+ userbuf[offset++] = (byte) ((dwPrivilegeMap & 0xFF000000) >> 24);
+ userbuf[offset++] = (byte) ((dwPrivilegeMap & 0x00FF0000) >> 16);
+ userbuf[offset++] = (byte) ((dwPrivilegeMap & 0x0000FF00) >> 8);
+ userbuf[offset++] = (byte) (dwPrivilegeMap & 0x000000FF);
+
+ // 账号类型
+ userbuf[offset++] = (byte) ((dwAccountType & 0xFF000000) >> 24);
+ userbuf[offset++] = (byte) ((dwAccountType & 0x00FF0000) >> 16);
+ userbuf[offset++] = (byte) ((dwAccountType & 0x0000FF00) >> 8);
+ userbuf[offset++] = (byte) (dwAccountType & 0x000000FF);
+
+ // 房间号字符串
+ if (roomStrLength > 0) {
+ userbuf[offset++] = (byte) ((roomStrLength & 0xFF00) >> 8);
+ userbuf[offset++] = (byte) (roomStrLength & 0x00FF);
+ for (; offset < bufLength; ++offset) {
+ userbuf[offset] = (byte) roomStr.charAt(offset - (bufLength - roomStrLength));
+ }
+ }
+
+ return userbuf;
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMessageMapper.xml b/ruoyi-modules/ruoyi-im/src/main/resources/mapper.system/SysMessageMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMessageMapper.xml
rename to ruoyi-modules/ruoyi-im/src/main/resources/mapper.system/SysMessageMapper.xml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMessageUserMapper.xml b/ruoyi-modules/ruoyi-im/src/main/resources/mapper.system/SysMessageUserMapper.xml
similarity index 100%
rename from ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMessageUserMapper.xml
rename to ruoyi-modules/ruoyi-im/src/main/resources/mapper.system/SysMessageUserMapper.xml
diff --git a/ruoyi-modules/ruoyi-member/pom.xml b/ruoyi-modules/ruoyi-member/pom.xml
index 0e1cbf41d..4a388b461 100644
--- a/ruoyi-modules/ruoyi-member/pom.xml
+++ b/ruoyi-modules/ruoyi-member/pom.xml
@@ -36,7 +36,10 @@
org.dromara
ruoyi-common-translation
-
+
+ org.dromara
+ ruoyi-im
+
org.dromara
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java
index 7386dd018..0e8c62dc7 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/wzj/soopin/member/service/impl/FansServiceImpl.java
@@ -17,6 +17,13 @@ import org.dromara.common.redis.config.RedisConfig;
import org.dromara.common.redis.redis.RedisCache;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.dromara.system.service.ISysMessageService;
+import org.dromara.system.service.ISysMessageTemplateService;
+import org.dromara.system.domain.bo.SysMessageBo;
+import org.dromara.system.domain.vo.SysMessageTemplateVo;
+import com.wzj.soopin.member.domain.po.Member;
+import com.wzj.soopin.member.service.IMemberService;
+import org.springframework.beans.factory.annotation.Autowired;
import java.util.HashMap;
import java.util.Map;
@@ -28,8 +35,14 @@ public class FansServiceImpl extends ServiceImpl implements IF
private final RedisCache redisCache;
+ @Autowired
+ private ISysMessageService sysMessageService;
+ @Autowired
+ private ISysMessageTemplateService templateService;
+ @Autowired
+ private IMemberService memberService;
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void doFollow(Long myId, Long vloggerId) {
@@ -49,12 +62,23 @@ public class FansServiceImpl extends ServiceImpl implements IF
fans.setFriendFlag(YesOrNo.YES.type);
}
baseMapper.insert(fans);
-
- // 系统消息:关注
-// MessageMO messageMO = new MessageMO();
-// messageMO.setFromUserId(myId);
-// messageMO.setToUserId(vlogerId);
-// rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_MSG, "sys.msg." + MessageEnum.FOLLOW_YOU.enValue, JsonUtils.objectToJson(messageMO));
+ // 推送关注消息
+ Member follower = memberService.getById(myId);
+ Member vlogger = memberService.getById(vloggerId);
+ if (follower != null && vlogger != null && !myId.equals(vloggerId)) {
+ Long templateId = 1938489429145284609L;
+ SysMessageTemplateVo template = templateService.selectTemplateById(templateId);
+ if (template != null) {
+ String content = template.getTemplateContent()
+ .replace("${followerNickname}", follower.getNickname() == null ? "" : follower.getNickname())
+ .replace("${vloggerNickname}", vlogger.getNickname() == null ? "" : vlogger.getNickname());
+ SysMessageBo messageBo = new SysMessageBo();
+ messageBo.setTitle(template.getTitle());
+ messageBo.setContent(content);
+ messageBo.setSenderId(myId);
+ sysMessageService.sendMessageToUser(messageBo, vloggerId);
+ }
+ }
}
public Fans queryFansRelationship(Long fanId, Long vlogerId) {
@@ -65,12 +89,12 @@ public class FansServiceImpl extends ServiceImpl implements IF
return baseMapper.selectOne(queryWrapper);
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void doCancel(Long myId, Long vloggerId) {
// 判断我们是否朋友关系,如果是,则需要取消双方的关系
Fans fan = queryFansRelationship(myId, vloggerId);
- if (fan != null && fan.getFriendFlag() == YesOrNo.YES.type) {
+ if (fan != null && YesOrNo.YES.type.equals(fan.getFriendFlag())) {
// 抹除双方的朋友关系,自己的关系删除即可
Fans pendingFan = queryFansRelationship(vloggerId, myId);
pendingFan.setBothFriend(YesOrNo.NO.type);
@@ -81,6 +105,23 @@ public class FansServiceImpl extends ServiceImpl implements IF
LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>();
deleteWrapper.eq(Fans::getId, fan.getId());
baseMapper.delete(deleteWrapper);
+ // 推送取关消息
+ Member follower = memberService.getById(myId);
+ Member vlogger = memberService.getById(vloggerId);
+ if (follower != null && vlogger != null && !myId.equals(vloggerId)) {
+ Long templateId = 1938491158159028226L;
+ SysMessageTemplateVo template = templateService.selectTemplateById(templateId);
+ if (template != null) {
+ String content = template.getTemplateContent()
+ .replace("${followerNickname}", follower.getNickname() == null ? "" : follower.getNickname())
+ .replace("${vloggerNickname}", vlogger.getNickname() == null ? "" : vlogger.getNickname());
+ SysMessageBo messageBo = new SysMessageBo();
+ messageBo.setTitle(template.getTitle());
+ messageBo.setContent(content);
+ messageBo.setSenderId(myId);
+ sysMessageService.sendMessageToUser(messageBo, vloggerId);
+ }
+ }
}
@Override
diff --git a/ruoyi-modules/ruoyi-system/pom.xml b/ruoyi-modules/ruoyi-system/pom.xml
index 3f92aa590..23ebb9862 100644
--- a/ruoyi-modules/ruoyi-system/pom.xml
+++ b/ruoyi-modules/ruoyi-system/pom.xml
@@ -103,10 +103,10 @@
org.dromara
ruoyi-common-sse
-
- org.dromara
- ruoyi-member
-
+
+
+
+
org.apache.tomcat.embed
tomcat-embed-core
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysAddressController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysAddressController.java
index 5dc0a7e3f..4ac38ba38 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysAddressController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/SysAddressController.java
@@ -2,8 +2,8 @@ package org.dromara.system.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.wzj.soopin.member.domain.po.Address;
-import org.dromara.system.mapper.AddressMapper;
+//import com.wzj.soopin.member.domain.po.Address;
+//import org.dromara.system.mapper.AddressMapper;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.dromara.common.core.config.RuoYiConfig;
@@ -45,8 +45,8 @@ public class SysAddressController
@Autowired
private RedisService redisService;
- @Autowired
- private AddressMapper addressMapper;
+// @Autowired
+// private AddressMapper addressMapper;
/**
* 通用下载请求
@@ -133,52 +133,52 @@ public class SysAddressController
}
}
- @GetMapping("/common/area")
- public AjaxResult getAddressList() {
- String addresses = redisService.getAddressList();
- if (org.apache.commons.lang3.StringUtils.isNotEmpty(addresses)) {
- List addressDTOList = JSON.parseArray(addresses, AddressDTO.class);
- if(addressDTOList.size()>0){
- return AjaxResult.success(addressDTOList);
- }
- }
- QueryWrapper addressQueryWrapper = new QueryWrapper<>();
- addressQueryWrapper.in("level", Arrays.asList(0,1,2));
- List addressList = addressMapper.selectList(addressQueryWrapper);
- Map> cityMap = addressList.stream().filter(it -> it.getLevel() == 1).collect(Collectors.groupingBy(it -> it.getParentCode()));
- Map> districtMap = addressList.stream().filter(it -> it.getLevel() == 2).collect(Collectors.groupingBy(it -> it.getParentCode()));
- List result = new ArrayList<>();
- addressList.stream().filter(it -> it.getLevel() == 0).forEach(it -> {
- AddressDTO dto = new AddressDTO();
- dto.setId(it.getCode());
- dto.setLevel("province");
- dto.setName(it.getName());
- dto.setPid(0L);
- //获取城市列表
- List child = new ArrayList<>();
- if (cityMap.containsKey(it.getCode())) {
- cityMap.get(it.getCode()).forEach(city -> {
- AddressDTO cityDto = new AddressDTO();
- cityDto.setId(city.getCode());
- cityDto.setLevel("city");
- cityDto.setName(city.getName());
- cityDto.setPid(city.getParentCode());
- cityDto.setChildren(districtMap.containsKey(city.getCode()) ?
- districtMap.get(city.getCode()).stream().map(district -> {
- AddressDTO districtDto = new AddressDTO();
- districtDto.setId(district.getCode());
- districtDto.setLevel("district");
- districtDto.setName(district.getName());
- districtDto.setPid(district.getParentCode());
- return districtDto;
- }).collect(Collectors.toList()) : Collections.EMPTY_LIST);
- child.add(cityDto);
- });
- }
- dto.setChildren(child);
- result.add(dto);
- });
- redisService.setAddressList(JSON.toJSONString(result));
- return AjaxResult.success(result);
- }
+// @GetMapping("/common/area")
+// public AjaxResult getAddressList() {
+// String addresses = redisService.getAddressList();
+// if (org.apache.commons.lang3.StringUtils.isNotEmpty(addresses)) {
+// List addressDTOList = JSON.parseArray(addresses, AddressDTO.class);
+// if(addressDTOList.size()>0){
+// return AjaxResult.success(addressDTOList);
+// }
+// }
+// QueryWrapper addressQueryWrapper = new QueryWrapper<>();
+// addressQueryWrapper.in("level", Arrays.asList(0,1,2));
+// List addressList = addressMapper.selectList(addressQueryWrapper);
+// Map> cityMap = addressList.stream().filter(it -> it.getLevel() == 1).collect(Collectors.groupingBy(it -> it.getParentCode()));
+// Map> districtMap = addressList.stream().filter(it -> it.getLevel() == 2).collect(Collectors.groupingBy(it -> it.getParentCode()));
+// List result = new ArrayList<>();
+// addressList.stream().filter(it -> it.getLevel() == 0).forEach(it -> {
+// AddressDTO dto = new AddressDTO();
+// dto.setId(it.getCode());
+// dto.setLevel("province");
+// dto.setName(it.getName());
+// dto.setPid(0L);
+// //获取城市列表
+// List child = new ArrayList<>();
+// if (cityMap.containsKey(it.getCode())) {
+// cityMap.get(it.getCode()).forEach(city -> {
+// AddressDTO cityDto = new AddressDTO();
+// cityDto.setId(city.getCode());
+// cityDto.setLevel("city");
+// cityDto.setName(city.getName());
+// cityDto.setPid(city.getParentCode());
+// cityDto.setChildren(districtMap.containsKey(city.getCode()) ?
+// districtMap.get(city.getCode()).stream().map(district -> {
+// AddressDTO districtDto = new AddressDTO();
+// districtDto.setId(district.getCode());
+// districtDto.setLevel("district");
+// districtDto.setName(district.getName());
+// districtDto.setPid(district.getParentCode());
+// return districtDto;
+// }).collect(Collectors.toList()) : Collections.EMPTY_LIST);
+// child.add(cityDto);
+// });
+// }
+// dto.setChildren(child);
+// result.add(dto);
+// });
+// redisService.setAddressList(JSON.toJSONString(result));
+// return AjaxResult.success(result);
+// }
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AddressMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AddressMapper.java
index b7317369b..cc3f50f44 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AddressMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/AddressMapper.java
@@ -2,7 +2,7 @@ package org.dromara.system.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.wzj.soopin.member.domain.po.Address;
+//import com.wzj.soopin.member.domain.po.Address;
import java.util.List;
@@ -11,7 +11,7 @@ import java.util.List;
*
* @author sjm
*/
-@InterceptorIgnore(tenantLine = "true") // 忽略租户过滤
-public interface AddressMapper extends BaseMapper {
-
-}
+//@InterceptorIgnore(tenantLine = "true") // 忽略租户过滤
+//public interface AddressMapper extends BaseMapper {
+//
+//}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
index 937da0c60..a10d0e96c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
@@ -229,29 +229,29 @@ public interface ISysUserService {
*/
List selectUserListByDept(Long deptId);
- /**
- * 根据条件查询用户列表
- *
- * @param user 用户信息
- * @return 用户列表
- */
- List selectUserList(SysUserBo user);
-
- /**
- * 查询所有会员用户信息(ums_member表)
- *
- * @return 会员用户列表
- */
- List selectAllMemberUsers();
+// /**
+// * 根据条件查询用户列表
+// *
+// * @param user 用户信息
+// * @return 用户列表
+// */
+// List selectUserList(SysUserBo user);
+//
+// /**
+// * 查询所有会员用户信息(ums_member表)
+// *
+// * @return 会员用户列表
+// */
+// List selectAllMemberUsers();
/**
* 根据关键字查询会员用户信息(ums_member表)
*
* @param keyword 关键字(用户名、昵称或手机号)
* @return 会员用户列表
- */
- List selectMemberUsers(String keyword);
-
+// */
+// List selectMemberUsers(String keyword);
+
/**
* 根据角色ID查询用户ID列表
*
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
index ec1f92fa0..c1e2741bb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
@@ -41,8 +41,8 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
-import com.wzj.soopin.member.domain.po.Member;
-import com.wzj.soopin.member.service.IMemberService;
+//import com.wzj.soopin.member.domain.po.Member;
+//import com.wzj.soopin.member.service.IMemberService;
import org.dromara.common.core.utils.SpringUtils;
/**
@@ -730,132 +730,132 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
* @param user 用户信息
* @return 用户列表
*/
- @Override
- public List selectUserList(SysUserBo user) {
- LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();
- lqw.eq(SysUser::getStatus, SystemConstants.NORMAL);
-
- // 模糊搜索昵称或手机号
- if (StringUtils.isNotBlank(user.getNickName())) {
- lqw.and(wrapper -> wrapper
- .like(SysUser::getNickName, user.getNickName())
- .or()
- .like(StringUtils.isNotBlank(user.getPhonenumber()), SysUser::getPhonenumber, user.getPhonenumber()));
- }
-
- return baseMapper.selectUserList(lqw);
- }
+// @Override
+// public List selectUserList(SysUserBo user) {
+// LambdaQueryWrapper lqw = new LambdaQueryWrapper<>();
+// lqw.eq(SysUser::getStatus, SystemConstants.NORMAL);
+//
+// // 模糊搜索昵称或手机号
+// if (StringUtils.isNotBlank(user.getNickName())) {
+// lqw.and(wrapper -> wrapper
+// .like(SysUser::getNickName, user.getNickName())
+// .or()
+// .like(StringUtils.isNotBlank(user.getPhonenumber()), SysUser::getPhonenumber, user.getPhonenumber()));
+// }
+//
+// return baseMapper.selectUserList(lqw);
+// }
- @Override
- public List selectAllMemberUsers() {
- try {
- // 获取 Spring 上下文中的 MemberService bean
- IMemberService memberService = SpringUtils.getBean(IMemberService.class);
-
- if (memberService != null) {
- // 查询所有会员信息
- List members = memberService.list();
-
- // 将 Member 转换为 SysUserVo
- return members.stream().map(member -> {
- SysUserVo userVo = new SysUserVo();
- // 设置用户ID
- userVo.setUserId(member.getId());
- // 设置用户名
- userVo.setUserName(member.getUserName());
- // 设置昵称
- userVo.setNickName(member.getNickname());
- // 设置手机号,如果加密了就用隐藏版本
- userVo.setPhonenumber(StringUtils.isNotBlank(member.getPhoneHidden()) ?
- member.getPhoneHidden() : member.getPhoneEncrypted());
- // 设置头像
- if (StringUtils.isNotBlank(member.getAvatar())) {
- try {
- userVo.setAvatar(Long.parseLong(member.getAvatar()));
- } catch (NumberFormatException e) {
- log.warn("会员头像ID格式不正确: {}", member.getAvatar());
- }
- }
- // 设置性别
- if (member.getGender() != null) {
- userVo.setSex(member.getGender().toString());
- }
- // 设置状态
- userVo.setStatus(member.getStatus() == 1 ? "0" : "1"); // 转换状态值
-
- return userVo;
- }).collect(Collectors.toList());
- }
- } catch (Exception e) {
- log.error("查询会员信息失败", e);
- }
-
- // 如果查询失败或会员服务不可用,返回空列表
- return new ArrayList<>();
- }
+// @Override
+// public List selectAllMemberUsers() {
+// try {
+// // 获取 Spring 上下文中的 MemberService bean
+// IMemberService memberService = SpringUtils.getBean(IMemberService.class);
+//
+// if (memberService != null) {
+// // 查询所有会员信息
+// List members = memberService.list();
+//
+// // 将 Member 转换为 SysUserVo
+// return members.stream().map(member -> {
+// SysUserVo userVo = new SysUserVo();
+// // 设置用户ID
+// userVo.setUserId(member.getId());
+// // 设置用户名
+// userVo.setUserName(member.getUserName());
+// // 设置昵称
+// userVo.setNickName(member.getNickname());
+// // 设置手机号,如果加密了就用隐藏版本
+// userVo.setPhonenumber(StringUtils.isNotBlank(member.getPhoneHidden()) ?
+// member.getPhoneHidden() : member.getPhoneEncrypted());
+// // 设置头像
+// if (StringUtils.isNotBlank(member.getAvatar())) {
+// try {
+// userVo.setAvatar(Long.parseLong(member.getAvatar()));
+// } catch (NumberFormatException e) {
+// log.warn("会员头像ID格式不正确: {}", member.getAvatar());
+// }
+// }
+// // 设置性别
+// if (member.getGender() != null) {
+// userVo.setSex(member.getGender().toString());
+// }
+// // 设置状态
+// userVo.setStatus(member.getStatus() == 1 ? "0" : "1"); // 转换状态值
+//
+// return userVo;
+// }).collect(Collectors.toList());
+// }
+// } catch (Exception e) {
+// log.error("查询会员信息失败", e);
+// }
+//
+// // 如果查询失败或会员服务不可用,返回空列表
+// return new ArrayList<>();
+// }
- @Override
- public List selectMemberUsers(String keyword) {
- // 尝试获取会员服务
- try {
- // 获取 Spring 上下文中的 MemberService bean
- IMemberService memberService = SpringUtils.getBean(IMemberService.class);
-
- if (memberService != null) {
- // 创建查询条件
- LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
-
- // 如果有关键词,添加模糊查询条件(昵称、用户名、手机号)
- if (StringUtils.isNotBlank(keyword)) {
- queryWrapper.like(Member::getNickname, keyword)
- .or()
- .like(Member::getUserName, keyword)
- .or()
- .like(Member::getPhoneEncrypted, keyword)
- .or()
- .like(Member::getPhoneHidden, keyword);
- }
-
- // 查询会员信息
- List members = memberService.list(queryWrapper);
-
- // 将 Member 转换为 SysUserVo
- return members.stream().map(member -> {
- SysUserVo userVo = new SysUserVo();
- // 设置用户ID
- userVo.setUserId(member.getId());
- // 设置用户名
- userVo.setUserName(member.getUserName());
- // 设置昵称
- userVo.setNickName(member.getNickname());
- // 设置手机号,如果加密了就用隐藏版本
- userVo.setPhonenumber(StringUtils.isNotBlank(member.getPhoneHidden()) ?
- member.getPhoneHidden() : member.getPhoneEncrypted());
- // 设置头像
- if (StringUtils.isNotBlank(member.getAvatar())) {
- try {
- userVo.setAvatar(Long.parseLong(member.getAvatar()));
- } catch (NumberFormatException e) {
- log.warn("会员头像ID格式不正确: {}", member.getAvatar());
- }
- }
- // 设置性别
- if (member.getGender() != null) {
- userVo.setSex(member.getGender().toString());
- }
- // 设置状态
- userVo.setStatus(member.getStatus() == 1 ? "0" : "1"); // 转换状态值
-
- return userVo;
- }).collect(Collectors.toList());
- }
- } catch (Exception e) {
- log.error("查询会员信息失败", e);
- }
-
- // 如果查询失败或会员服务不可用,返回空列表
- return new ArrayList<>();
- }
+// @Override
+// public List selectMemberUsers(String keyword) {
+// // 尝试获取会员服务
+// try {
+// // 获取 Spring 上下文中的 MemberService bean
+// IMemberService memberService = SpringUtils.getBean(IMemberService.class);
+//
+// if (memberService != null) {
+// // 创建查询条件
+// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+//
+// // 如果有关键词,添加模糊查询条件(昵称、用户名、手机号)
+// if (StringUtils.isNotBlank(keyword)) {
+// queryWrapper.like(Member::getNickname, keyword)
+// .or()
+// .like(Member::getUserName, keyword)
+// .or()
+// .like(Member::getPhoneEncrypted, keyword)
+// .or()
+// .like(Member::getPhoneHidden, keyword);
+// }
+//
+// // 查询会员信息
+// List members = memberService.list(queryWrapper);
+//
+// // 将 Member 转换为 SysUserVo
+// return members.stream().map(member -> {
+// SysUserVo userVo = new SysUserVo();
+// // 设置用户ID
+// userVo.setUserId(member.getId());
+// // 设置用户名
+// userVo.setUserName(member.getUserName());
+// // 设置昵称
+// userVo.setNickName(member.getNickname());
+// // 设置手机号,如果加密了就用隐藏版本
+// userVo.setPhonenumber(StringUtils.isNotBlank(member.getPhoneHidden()) ?
+// member.getPhoneHidden() : member.getPhoneEncrypted());
+// // 设置头像
+// if (StringUtils.isNotBlank(member.getAvatar())) {
+// try {
+// userVo.setAvatar(Long.parseLong(member.getAvatar()));
+// } catch (NumberFormatException e) {
+// log.warn("会员头像ID格式不正确: {}", member.getAvatar());
+// }
+// }
+// // 设置性别
+// if (member.getGender() != null) {
+// userVo.setSex(member.getGender().toString());
+// }
+// // 设置状态
+// userVo.setStatus(member.getStatus() == 1 ? "0" : "1"); // 转换状态值
+//
+// return userVo;
+// }).collect(Collectors.toList());
+// }
+// } catch (Exception e) {
+// log.error("查询会员信息失败", e);
+// }
+//
+// // 如果查询失败或会员服务不可用,返回空列表
+// return new ArrayList<>();
+// }
/**
* 根据角色ID查询用户ID列表
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/task/MessageScheduledTask.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/task/MessageScheduledTask.java
index 44d5124ad..d865b9e5c 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/task/MessageScheduledTask.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/task/MessageScheduledTask.java
@@ -1,23 +1,9 @@
package org.dromara.system.task;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.system.domain.SysMessage;
-//import org.dromara.system.domain.SysMessageUser;
-import org.dromara.system.domain.SysMessageUser;
-import org.dromara.system.domain.vo.SysMessageVo;
-import org.dromara.system.mapper.SysMessageMapper;
-//import org.dromara.system.mapper.SysMessageUserMapper
-import org.dromara.system.mapper.SysMessageUserMapper;
import org.dromara.system.websocket.MessageWebSocketServer;
-import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalDateTime;
-import java.util.List;
/**
* 消息定时任务
@@ -29,8 +15,8 @@ import java.util.List;
@RequiredArgsConstructor
public class MessageScheduledTask {
- private final SysMessageMapper messageMapper;
- private final SysMessageUserMapper messageUserMapper;
+// private final SysMessageMapper messageMapper;
+// private final SysMessageUserMapper messageUserMapper;
private final MessageWebSocketServer messageWebSocketServer;
/**