@@ -1,6 +1,9 @@
|
||||
package com.hula.utils;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.redis.connection.RedisConnection;
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
@@ -20,9 +23,11 @@ import java.util.stream.Collectors;
|
||||
public class RedisUtils {
|
||||
|
||||
private static StringRedisTemplate stringRedisTemplate;
|
||||
private static ObjectMapper objectMapper;
|
||||
|
||||
static {
|
||||
RedisUtils.stringRedisTemplate = SpringUtil.getBean(StringRedisTemplate.class);
|
||||
RedisUtils.objectMapper = SpringUtil.getBean(ObjectMapper.class);
|
||||
}
|
||||
|
||||
private static final String LUA_INCR_EXPIRE =
|
||||
@@ -340,10 +345,26 @@ public class RedisUtils {
|
||||
* @param item 项 不能为null
|
||||
* @return 值
|
||||
*/
|
||||
public static Object hget(String key, String item) {
|
||||
return stringRedisTemplate.opsForHash().get(key, item);
|
||||
public static <T> T hget(String key, String item) {
|
||||
return hget(key, item, new TypeReference<>() {});
|
||||
}
|
||||
|
||||
public static <T> T readValue(String value, TypeReference<T> typeReference) {
|
||||
try {
|
||||
return objectMapper.readValue(value, typeReference);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("hGet 序列号失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static <T> T hget(String key, String item, TypeReference<T> typeReference) {
|
||||
Object result = stringRedisTemplate.opsForHash().get(key, item);
|
||||
if (result == null) {
|
||||
return null;
|
||||
}
|
||||
return readValue(result.toString(), typeReference);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取hashKey对应的所有键值
|
||||
*
|
||||
@@ -412,7 +433,7 @@ public class RedisUtils {
|
||||
*/
|
||||
public static Boolean hset(String key, String item, Object value) {
|
||||
try {
|
||||
stringRedisTemplate.opsForHash().put(key, item, value);
|
||||
stringRedisTemplate.opsForHash().put(key, item, objectMapper.writeValueAsString(value));
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
||||
@@ -44,7 +44,7 @@ public class BaseConfig {
|
||||
@Bean
|
||||
@Primary
|
||||
@ConditionalOnMissingBean
|
||||
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
|
||||
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
|
||||
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
|
||||
objectMapper
|
||||
.setLocale(Locale.CHINA)
|
||||
|
||||
@@ -31,6 +31,21 @@ public class RedisKey {
|
||||
*/
|
||||
public static final String HOT_ROOM_ZET = "hotRoom";
|
||||
|
||||
/**
|
||||
* 用户朋友圈的信息汇总
|
||||
*/
|
||||
public static final String USER_FEED_STRING = BASE_KEY + "userFeed";
|
||||
|
||||
/**
|
||||
* 朋友圈素材
|
||||
*/
|
||||
public static final String FEED_MEDIA = BASE_KEY + "feedMedia";
|
||||
|
||||
/**
|
||||
* 朋友圈权限
|
||||
*/
|
||||
public static final String FEED_TARGET = BASE_KEY + "feedTarget";
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
|
||||
@@ -34,7 +34,7 @@ public class CursorPageBaseResp<T> {
|
||||
private Long total;
|
||||
|
||||
public static <T> CursorPageBaseResp<T> init(CursorPageBaseResp cursorPage, List<T> list, Long total) {
|
||||
CursorPageBaseResp<T> cursorPageBaseResp = new CursorPageBaseResp<T>();
|
||||
CursorPageBaseResp<T> cursorPageBaseResp = new CursorPageBaseResp<>();
|
||||
cursorPageBaseResp.setIsLast(cursorPage.getIsLast());
|
||||
cursorPageBaseResp.setList(list);
|
||||
cursorPageBaseResp.setCursor(cursorPage.getCursor());
|
||||
@@ -48,9 +48,9 @@ public class CursorPageBaseResp<T> {
|
||||
}
|
||||
|
||||
public static <T> CursorPageBaseResp<T> empty() {
|
||||
CursorPageBaseResp<T> cursorPageBaseResp = new CursorPageBaseResp<T>();
|
||||
CursorPageBaseResp<T> cursorPageBaseResp = new CursorPageBaseResp<>();
|
||||
cursorPageBaseResp.setIsLast(true);
|
||||
cursorPageBaseResp.setList(new ArrayList<T>());
|
||||
cursorPageBaseResp.setList(new ArrayList<>());
|
||||
cursorPageBaseResp.setTotal(0L);
|
||||
return cursorPageBaseResp;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.hula.core.user.domain.entity.UserFriend;
|
||||
import com.hula.core.user.domain.enums.WsBaseResp;
|
||||
import com.hula.core.user.domain.enums.WSRespTypeEnum;
|
||||
import com.hula.core.user.domain.vo.resp.ws.ChatMemberResp;
|
||||
import com.hula.core.user.domain.vo.resp.ws.WSFeedMemberResp;
|
||||
import com.hula.core.user.domain.vo.resp.ws.WSMemberChange;
|
||||
import com.hula.core.user.service.cache.UserCache;
|
||||
import jakarta.annotation.Resource;
|
||||
@@ -106,4 +107,16 @@ public class MemberAdapter {
|
||||
wsBaseResp.setData(wsMemberChange);
|
||||
return wsBaseResp;
|
||||
}
|
||||
|
||||
/**
|
||||
* 发朋友圈以后推送的消息
|
||||
* @param uid 发布人
|
||||
* @return
|
||||
*/
|
||||
public static WsBaseResp<WSFeedMemberResp> buildFeedPushWS(Long uid){
|
||||
WsBaseResp<WSFeedMemberResp> wsBaseResp = new WsBaseResp<>();
|
||||
wsBaseResp.setType(WSRespTypeEnum.FEED_SEND_MSG.getType());
|
||||
wsBaseResp.setData(new WSFeedMemberResp(uid));
|
||||
return wsBaseResp;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.date.DateUnit;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Pair;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.hula.common.annotation.RedissonLock;
|
||||
import com.hula.common.domain.vo.req.CursorPageBaseReq;
|
||||
import com.hula.common.domain.vo.res.CursorPageBaseResp;
|
||||
@@ -103,14 +104,8 @@ public class ChatServiceImpl implements ChatService {
|
||||
|
||||
private void check(ChatMessageReq request, Long uid) {
|
||||
Room room = roomCache.get(request.getRoomId());
|
||||
if (room.isHotRoom()) {
|
||||
// 全员群跳过校验
|
||||
return;
|
||||
}
|
||||
if (room.isRoomFriend()) {
|
||||
RoomFriend roomFriend = roomFriendDao.getByRoomId(request.getRoomId());
|
||||
AssertUtil.equal(NormalOrNoEnum.NORMAL.getStatus(), roomFriend.getStatus(), "您已经被对方拉黑");
|
||||
AssertUtil.isTrue(uid.equals(roomFriend.getUid1()) || uid.equals(roomFriend.getUid2()), "您已经被对方拉黑");
|
||||
if (ObjectUtil.isNull(room)) {
|
||||
throw new RuntimeException("您已经被移除该群!");
|
||||
}
|
||||
if (room.isRoomGroup()) {
|
||||
RoomGroup roomGroup = roomGroupCache.get(request.getRoomId());
|
||||
@@ -119,8 +114,12 @@ public class ChatServiceImpl implements ChatService {
|
||||
if(member.getDeFriend()){
|
||||
throw new RuntimeException("您已经屏蔽群聊!");
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
RoomFriend roomFriend = roomFriendDao.getByRoomId(request.getRoomId());
|
||||
AssertUtil.isNotEmpty(roomFriend, "你们之间不是好友!");
|
||||
AssertUtil.equal(NormalOrNoEnum.NORMAL.getStatus(), roomFriend.getStatus(), "您已经被对方拉黑");
|
||||
AssertUtil.isTrue(uid.equals(roomFriend.getUid1()) || uid.equals(roomFriend.getUid2()), "您已经被对方拉黑");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.hula.core.user.controller;
|
||||
|
||||
import com.hula.common.domain.vo.req.CursorPageBaseReq;
|
||||
import com.hula.common.domain.vo.res.CursorPageBaseResp;
|
||||
import com.hula.core.user.domain.vo.OperParam;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedParam;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedPermission;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedVo;
|
||||
import com.hula.core.user.service.FeedService;
|
||||
import com.hula.domain.vo.res.ApiResult;
|
||||
import com.hula.utils.RequestHolder;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.groups.Default;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 朋友圈功能 发布朋友圈、编辑朋友圈、设置谁可见、谁不可见、仅聊天、不看他、不让他看我
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/feed/")
|
||||
public class FeedController {
|
||||
|
||||
@Resource
|
||||
private FeedService feedService;
|
||||
|
||||
@PostMapping("list")
|
||||
@Operation(summary = "朋友圈列表")
|
||||
public ApiResult<CursorPageBaseResp<FeedVo>> list(@Valid @RequestBody CursorPageBaseReq request) {
|
||||
return ApiResult.success(feedService.getFeedPage(request, RequestHolder.get().getUid()));
|
||||
}
|
||||
|
||||
@PostMapping("pushFeed")
|
||||
@Operation(summary = "发布朋友圈")
|
||||
public ApiResult<Boolean> pushFeed(@Valid @RequestBody FeedParam param) {
|
||||
return ApiResult.success(feedService.pushFeed(RequestHolder.get().getUid(), param));
|
||||
}
|
||||
|
||||
@GetMapping("getFeedPermission/{feedId}")
|
||||
@Operation(summary = "查看朋友圈权限")
|
||||
public ApiResult<FeedPermission> getFeedPermission(@PathVariable("feedId") Long feedId) {
|
||||
return ApiResult.success(feedService.getFeedPermission(RequestHolder.get().getUid(), feedId));
|
||||
}
|
||||
|
||||
@PostMapping("edit")
|
||||
@Operation(summary = "编辑朋友圈")
|
||||
public ApiResult<Boolean> editFeed(@Validated(value = {OperParam.Update.class, Default.class}) @RequestBody FeedParam param){
|
||||
return ApiResult.success(feedService.editFeed(RequestHolder.get().getUid(), param));
|
||||
}
|
||||
|
||||
@PostMapping("del/{feedId}")
|
||||
@Operation(summary = "删除朋友圈")
|
||||
public ApiResult<Boolean> delFeed(@PathVariable("feedId") Long feedId) {
|
||||
return ApiResult.success(feedService.delFeed(feedId));
|
||||
}
|
||||
|
||||
@GetMapping("detail/{feedId}")
|
||||
@Operation(summary = "用户查看详情")
|
||||
public ApiResult<FeedVo> feedDetail(@PathVariable("feedId") Long feedId) {
|
||||
return ApiResult.success(feedService.feedDetail(feedId));
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.hula.core.user.controller;
|
||||
|
||||
import com.hula.core.chat.domain.vo.request.room.TargetParam;
|
||||
import com.hula.core.chat.domain.vo.request.room.TargetVo;
|
||||
import com.hula.core.chat.domain.vo.request.room.UserTargetRelParam;
|
||||
import com.hula.core.user.domain.entity.Target;
|
||||
import com.hula.core.user.service.TargetService;
|
||||
import com.hula.core.user.service.UserTargetRelService;
|
||||
import com.hula.domain.vo.res.ApiResult;
|
||||
@@ -30,34 +32,34 @@ public class TargetController {
|
||||
private UserTargetRelService userTargetRelService;
|
||||
|
||||
@PostMapping("/add")
|
||||
public ApiResult save(@RequestBody TargetParam param){
|
||||
public ApiResult<Boolean> save(@RequestBody TargetParam param){
|
||||
return ApiResult.success(targetService.save(RequestHolder.get().getUid(), param));
|
||||
}
|
||||
|
||||
@PostMapping("/edit")
|
||||
public ApiResult edit(@RequestBody TargetParam param){
|
||||
public ApiResult<Boolean> edit(@RequestBody TargetParam param){
|
||||
return ApiResult.success(targetService.edit(param));
|
||||
}
|
||||
|
||||
@GetMapping("/detail")
|
||||
public ApiResult detail(@RequestParam("id")Long id){
|
||||
public ApiResult<Target> detail(@RequestParam("id")Long id){
|
||||
return ApiResult.success(targetService.detail(id));
|
||||
}
|
||||
|
||||
@PostMapping("/del")
|
||||
public ApiResult del(@RequestBody List<Long> ids){
|
||||
public ApiResult<Boolean> del(@RequestBody List<Long> ids){
|
||||
return ApiResult.success(targetService.removeByIds(ids));
|
||||
}
|
||||
|
||||
@GetMapping("/rel/detail")
|
||||
@Operation(summary = "查询好友的标签列表")
|
||||
public ApiResult relDetail(@RequestParam("friendId") Long friendId) {
|
||||
public ApiResult<List<TargetVo>> relDetail(@RequestParam("friendId") Long friendId) {
|
||||
return ApiResult.success(userTargetRelService.detail(RequestHolder.get().getUid(), friendId));
|
||||
}
|
||||
|
||||
@Operation(summary = "标签绑定修改")
|
||||
@PostMapping("/rel/edit")
|
||||
public ApiResult editTarget(@RequestBody UserTargetRelParam param){
|
||||
public ApiResult<Boolean> editTarget(@RequestBody UserTargetRelParam param){
|
||||
return ApiResult.success(userTargetRelService.editTarget(RequestHolder.get().getUid(), param));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.hula.core.user.controller;
|
||||
|
||||
import com.hula.core.user.domain.entity.UserState;
|
||||
import com.hula.core.user.service.UserStateService;
|
||||
import com.hula.domain.vo.res.ApiResult;
|
||||
import com.hula.utils.RequestHolder;
|
||||
@@ -11,6 +12,8 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户在线状态管理
|
||||
*/
|
||||
@@ -23,13 +26,13 @@ public class UserStateController {
|
||||
|
||||
@PostMapping("changeState/{id}")
|
||||
@Operation(summary = "用户状态改变")
|
||||
public ApiResult changeState(@PathVariable("id") Long id){
|
||||
public ApiResult<Boolean> changeState(@PathVariable("id") Long id){
|
||||
return ApiResult.success(userStateService.changeState(RequestHolder.get().getUid(), id));
|
||||
}
|
||||
|
||||
@GetMapping("list")
|
||||
@Operation(summary = "获取所有用户状态")
|
||||
public ApiResult list(){
|
||||
public ApiResult<List<UserState>> list(){
|
||||
return ApiResult.success(userStateService.list());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.hula.core.user.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hula.common.domain.vo.req.CursorPageBaseReq;
|
||||
import com.hula.common.domain.vo.res.CursorPageBaseResp;
|
||||
import com.hula.common.utils.CursorUtils;
|
||||
import com.hula.core.user.domain.entity.Feed;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedVo;
|
||||
import com.hula.core.user.mapper.FeedMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 朋友圈基础信息
|
||||
*/
|
||||
@Service
|
||||
public class FeedDao extends ServiceImpl<FeedMapper, Feed> {
|
||||
|
||||
public CursorPageBaseResp<Feed> getFeedPage(Long uid, CursorPageBaseReq request) {
|
||||
return CursorUtils.getCursorPageByMysql(this, request, wrapper -> wrapper.eq(Feed::getUid, uid), Feed::getCreatedTime);
|
||||
}
|
||||
|
||||
public FeedVo getDetail(Long id) {
|
||||
return baseMapper.getDetail(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.hula.core.user.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hula.core.user.domain.entity.FeedMedia;
|
||||
import com.hula.core.user.mapper.FeedMediaMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 朋友圈素材
|
||||
*/
|
||||
@Service
|
||||
public class FeedMediaDao extends ServiceImpl<FeedMediaMapper, FeedMedia> {
|
||||
|
||||
/**
|
||||
* 批量添加朋友圈的资源的数据
|
||||
* @param feedId 朋友圈id
|
||||
* @param urls 素材地址
|
||||
* @param type 0 纯文字 1 图片 2 视频
|
||||
*/
|
||||
public List<FeedMedia> batchSaveMedia(Long feedId, List<String> urls, Integer type){
|
||||
List<FeedMedia> feedMediaList = new ArrayList<>();
|
||||
for (int i = 0; i < urls.size(); i++) {
|
||||
String url = urls.get(i);
|
||||
FeedMedia feedMedia = new FeedMedia();
|
||||
feedMedia.setSort(i);
|
||||
feedMedia.setFeedId(feedId);
|
||||
feedMedia.setUrl(url);
|
||||
feedMediaList.add(feedMedia);
|
||||
}
|
||||
saveBatch(feedMediaList);
|
||||
return feedMediaList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除朋友圈的资源等消息
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
public boolean delMediaByFeedId(Long feedId) {
|
||||
return remove(new LambdaQueryWrapper<FeedMedia>().eq(FeedMedia::getFeedId, feedId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id获取到朋友圈资源信息
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
public List<FeedMedia> getMediaByFeedId(Long feedId) {
|
||||
return list(new LambdaQueryWrapper<FeedMedia>().eq(FeedMedia::getFeedId, feedId));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.hula.core.user.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hula.core.user.domain.entity.FeedTarget;
|
||||
import com.hula.core.user.mapper.FeedTargetMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class FeedTargetDao extends ServiceImpl<FeedTargetMapper, FeedTarget> {
|
||||
|
||||
/**
|
||||
* 删除朋友圈和标签的管理
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
public boolean delByFeedId(Long feedId) {
|
||||
return remove(new LambdaQueryWrapper<FeedTarget>()
|
||||
.eq(FeedTarget::getFeedId, feedId));
|
||||
}
|
||||
|
||||
public List<FeedTarget> selectFeedTargets(Long feedId) {
|
||||
LambdaQueryWrapper<FeedTarget> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(FeedTarget::getFeedId, feedId).select(FeedTarget::getTargetId, FeedTarget::getType);
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,19 @@
|
||||
package com.hula.core.user.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hula.common.domain.vo.req.CursorPageBaseReq;
|
||||
import com.hula.common.domain.vo.res.CursorPageBaseResp;
|
||||
import com.hula.common.utils.CursorUtils;
|
||||
import com.hula.core.user.domain.entity.UserFriend;
|
||||
import com.hula.core.user.mapper.UserFriendMapper;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -46,4 +51,87 @@ public class UserFriendDao extends ServiceImpl<UserFriendMapper, UserFriend> {
|
||||
.select(UserFriend::getId)
|
||||
.list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询他不看我的好友
|
||||
* @param uid 操作人
|
||||
* @return
|
||||
*/
|
||||
public List<Long> getHideLookMe(Long uid) {
|
||||
return baseMapper.selectObjs(new LambdaQueryWrapper<UserFriend>()
|
||||
.select(UserFriend::getUid)
|
||||
.eq(UserFriend::getFriendUid, uid)
|
||||
.eq(UserFriend::getHideTheirPosts, 1))
|
||||
.stream()
|
||||
.map(o -> (Long) o)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询不让他看我的好友
|
||||
* @param uid 操作人
|
||||
* @return
|
||||
*/
|
||||
public List<Long> getHideMyPosts(Long uid) {
|
||||
return baseMapper.selectObjs(new LambdaQueryWrapper<UserFriend>()
|
||||
.select(UserFriend::getFriendUid)
|
||||
.eq(UserFriend::getUid, uid)
|
||||
.eq(UserFriend::getHideMyPosts, 1))
|
||||
.stream()
|
||||
.map(o -> (Long) o)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询我不看他的好友
|
||||
* @param uid 操作人
|
||||
* @return
|
||||
*/
|
||||
public List<Long> getHideTheirPosts(Long uid) {
|
||||
return baseMapper.selectObjs(new LambdaQueryWrapper<UserFriend>()
|
||||
.select(UserFriend::getFriendUid)
|
||||
.eq(UserFriend::getUid, uid)
|
||||
.eq(UserFriend::getHideTheirPosts, 1))
|
||||
.stream()
|
||||
.map(o -> (Long) o)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询仅聊天的好友
|
||||
* @param uid 操作人
|
||||
* @return
|
||||
*/
|
||||
public List<Long> getJustChat(Long uid) {
|
||||
return baseMapper.selectObjs(new LambdaQueryWrapper<UserFriend>()
|
||||
.select(UserFriend::getFriendUid)
|
||||
.eq(UserFriend::getUid, uid)
|
||||
.eq(UserFriend::getHideMyPosts, 1)
|
||||
.eq(UserFriend::getHideTheirPosts, 1))
|
||||
.stream()
|
||||
.map(o -> (Long) o)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取到当前登录人员的所有的好友的信息
|
||||
* @return
|
||||
*/
|
||||
@Cacheable(cacheNames = "user", key = "'friends'+#uid")
|
||||
public List<Long> getAllFriendIdsByUid(Long uid){
|
||||
LambdaQueryWrapper<UserFriend> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.select(UserFriend::getFriendUid)
|
||||
.eq(UserFriend::getUid, uid);
|
||||
return baseMapper.selectObjs(queryWrapper).stream().map(obj -> (Long) obj).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
/**
|
||||
* 当uid的朋友改变后需要调用此方法
|
||||
* @param uid
|
||||
* @return
|
||||
*/
|
||||
@CacheEvict(cacheNames = "user", key = "'findGroup'+#uid")
|
||||
public List<Long> evictGroup(Long uid) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.hula.core.user.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 朋友圈表
|
||||
*/
|
||||
@TableName("feed")
|
||||
@Data
|
||||
public class Feed implements Serializable {
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "发布人id")
|
||||
private Long uid;
|
||||
|
||||
@Schema(description = "朋友圈文案")
|
||||
private String content;
|
||||
|
||||
@Schema(description = "privacy -> 私密 open -> 公开 partVisible -> 部分可见 notAnyone -> 不给谁看")
|
||||
private String permission;
|
||||
|
||||
@Schema(description = "朋友圈内容类型(0: 纯文字 1: 图片, 2: 视频)")
|
||||
private Integer mediaType;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private LocalDateTime createdTime;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.hula.core.user.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 朋友圈发的图片或者视频表
|
||||
*/
|
||||
@TableName("feed_media")
|
||||
@Data
|
||||
public class FeedMedia implements Serializable {
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "朋友圈ID")
|
||||
private Long feedId;
|
||||
|
||||
@Schema(description = "图片或视频的路径")
|
||||
private String url;
|
||||
|
||||
@Schema(description = "排序")
|
||||
private Integer sort;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.hula.core.user.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 朋友圈标签、用户可见表
|
||||
*/
|
||||
@TableName("feed_target")
|
||||
@Data
|
||||
public class FeedTarget implements Serializable {
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "朋友圈ID")
|
||||
private Long feedId;
|
||||
|
||||
/**
|
||||
* @see Target
|
||||
*/
|
||||
@Schema(description = "标签ID")
|
||||
private Long targetId;
|
||||
|
||||
@Schema(description = "1 -> 关联标签id 2 -> 关联用户id")
|
||||
private Integer type;
|
||||
}
|
||||
@@ -47,6 +47,18 @@ public class UserFriend implements Serializable {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 不让他看我(0-允许,1-禁止)
|
||||
*/
|
||||
@TableField("hide_my_posts")
|
||||
private Boolean hideMyPosts;
|
||||
|
||||
/**
|
||||
* 不看他(0-允许,1-禁止)
|
||||
*/
|
||||
@TableField("hide_their_posts")
|
||||
private Boolean hideTheirPosts;
|
||||
|
||||
/**
|
||||
* 逻辑删除(0-正常,1-删除)
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.hula.core.user.domain.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 朋友圈的枚举
|
||||
*
|
||||
* @author 乾乾
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
public enum FeedEnum implements Serializable {
|
||||
|
||||
WORD(0, "纯文字"),
|
||||
IMAGE(1, "图片"),
|
||||
VIDEO(2, "视频");
|
||||
|
||||
/**
|
||||
* 根据当前枚举的name匹配
|
||||
*/
|
||||
public static FeedEnum match(Integer val) {
|
||||
return Stream.of(values()).parallel().filter(item -> item.getType().equals(val)).findAny().orElse(WORD);
|
||||
}
|
||||
|
||||
public static FeedEnum get(Integer val) {
|
||||
return match(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* 朋友圈类型
|
||||
*/
|
||||
private final Integer type;
|
||||
private final String name;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.hula.core.user.domain.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* 朋友圈权限的枚举
|
||||
*
|
||||
* @author 乾乾
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Getter
|
||||
public enum FeedPermissionEnum implements Serializable {
|
||||
|
||||
privacy("privacy", "私密"),
|
||||
open("open", "公开"),
|
||||
notAnyone("notAnyone", "不给谁看"),
|
||||
partVisible("partVisible", "部分可见");
|
||||
|
||||
/**
|
||||
* 根据当前枚举的name匹配
|
||||
*/
|
||||
public static FeedPermissionEnum match(String val) {
|
||||
return Stream.of(values()).parallel().filter(item -> item.getType().equals(val)).findAny().orElse(open);
|
||||
}
|
||||
|
||||
public static FeedPermissionEnum get(String val) {
|
||||
return match(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* 朋友圈类型
|
||||
*/
|
||||
private final String type;
|
||||
private final String name;
|
||||
}
|
||||
@@ -35,6 +35,7 @@ public enum WSRespTypeEnum {
|
||||
MSG_RECALL("msgRecall", "消息撤回", WSMsgRecall.class),
|
||||
ROOM_GROUP_NOTICE_MSG("roomGroupNoticeMsg", "群公告消息", null),
|
||||
ROOM_GROUP_NOTICE_READ_MSG("roomGroupNoticeReadMsg", "群公告已读", null),
|
||||
FEED_SEND_MSG("feedSendMsg", "朋友圈发布", null),
|
||||
ROOM_DISSOLUTION("roomDissolution", "群解散", null),
|
||||
ROOM_NOTIFICATION("roomNotification", "会话消息接收类型改变", null),
|
||||
REQUEST_NEW_FRIEND("requestNewFriend", "好友申请", WSFriendApply.class),
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.hula.core.user.domain.vo;
|
||||
|
||||
import jakarta.validation.groups.Default;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* OperParam 操作类
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Accessors(chain = true)
|
||||
public class OperParam implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 保存和缺省验证组
|
||||
*/
|
||||
public interface Save extends Default {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新和缺省验证组
|
||||
*/
|
||||
public interface Update extends Default {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除和缺省验证组
|
||||
*/
|
||||
public interface Delete extends Default {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.hula.core.user.domain.vo.req.feed;
|
||||
|
||||
import com.hula.core.user.domain.enums.FeedEnum;
|
||||
import com.hula.core.user.domain.enums.FeedPermissionEnum;
|
||||
import com.hula.core.user.domain.vo.OperParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Max;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 发布朋友圈的参数
|
||||
*/
|
||||
@Data
|
||||
public class FeedParam extends OperParam {
|
||||
|
||||
@NotNull(message = "请选择朋友圈", groups = {Update.class})
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "朋友圈文案")
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* @see FeedEnum
|
||||
*/
|
||||
@Schema(description = "发布内容的类型")
|
||||
@Min(value = 0, message = "请选择正确的素材类型")
|
||||
@Max(value = 2, message = "请选择正确的素材类型")
|
||||
private Integer mediaType;
|
||||
|
||||
@Schema(description = "发布的图片的url")
|
||||
private List<String> urls;
|
||||
|
||||
@Schema(description = "发布视频的url")
|
||||
private String videoUrl;
|
||||
|
||||
/**
|
||||
* @see FeedPermissionEnum
|
||||
*/
|
||||
@Schema(description = "privacy -> 私密 open -> 公开 partVisible -> 部分可见 notAnyone -> 不给谁看")
|
||||
@Min(value = 0, message = "请选择正确的可见类型")
|
||||
private String permission;
|
||||
|
||||
@Schema(description = "permission 限制的用户id")
|
||||
private List<Long> uidList;
|
||||
|
||||
@Schema(description = "permission 限制的标签id")
|
||||
private List<Long> targetIds;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.hula.core.user.domain.vo.req.feed;
|
||||
|
||||
import com.hula.core.user.domain.entity.Feed;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 发布朋友圈的返回体
|
||||
*/
|
||||
@Data
|
||||
public class FeedPermission extends Feed {
|
||||
|
||||
@Schema(description = "permission 限制的用户id")
|
||||
private List<Long> uidList;
|
||||
|
||||
@Schema(description = "permission 限制的标签id")
|
||||
private List<Long> targetIds;
|
||||
|
||||
public FeedPermission() {
|
||||
}
|
||||
|
||||
public FeedPermission(List<Long> uidList, List<Long> targetIds) {
|
||||
this.uidList = uidList;
|
||||
this.targetIds = targetIds;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.hula.core.user.domain.vo.req.feed;
|
||||
|
||||
import com.hula.core.user.domain.entity.Feed;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 发布朋友圈的返回体
|
||||
*/
|
||||
@Data
|
||||
public class FeedVo extends Feed {
|
||||
|
||||
@Schema(description = "发布的内容的url")
|
||||
private List<String> urls;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.hula.core.user.domain.vo.resp.ws;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 朋友圈发布推送的消息
|
||||
*/
|
||||
@Data
|
||||
public class WSFeedMemberResp {
|
||||
|
||||
@Schema(description = "发布人")
|
||||
private Long uid;
|
||||
|
||||
public WSFeedMemberResp() {
|
||||
}
|
||||
|
||||
public WSFeedMemberResp(Long uid) {
|
||||
this.uid = uid;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.hula.core.user.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hula.core.user.domain.entity.Feed;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedVo;
|
||||
|
||||
public interface FeedMapper extends BaseMapper<Feed> {
|
||||
|
||||
FeedVo getDetail(Long id);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.hula.core.user.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hula.core.user.domain.entity.FeedMedia;
|
||||
|
||||
public interface FeedMediaMapper extends BaseMapper<FeedMedia> {
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.hula.core.user.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hula.core.user.domain.entity.FeedTarget;
|
||||
|
||||
public interface FeedTargetMapper extends BaseMapper<FeedTarget> {
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.hula.core.user.service;
|
||||
|
||||
import com.hula.common.domain.vo.req.CursorPageBaseReq;
|
||||
import com.hula.common.domain.vo.res.CursorPageBaseResp;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedParam;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedPermission;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedVo;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 朋友圈核心服务
|
||||
*/
|
||||
public interface FeedService {
|
||||
|
||||
/**
|
||||
* 游标刷新朋友圈列表
|
||||
* @param request
|
||||
* @param uid
|
||||
*/
|
||||
CursorPageBaseResp<FeedVo> getFeedPage(CursorPageBaseReq request, Long uid);
|
||||
|
||||
/**
|
||||
* 发布朋友圈
|
||||
* @param uid 操作人
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
Boolean pushFeed(Long uid, FeedParam param);
|
||||
|
||||
/**
|
||||
* 删除朋友圈
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
Boolean delFeed(Long feedId);
|
||||
|
||||
FeedVo getDetail(Long id);
|
||||
|
||||
/**
|
||||
* 查看朋友圈
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
FeedVo feedDetail(Long feedId);
|
||||
|
||||
/**
|
||||
* 获取朋友圈的可见权限
|
||||
* @param uid 操作人
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
FeedPermission getFeedPermission(Long uid, Long feedId);
|
||||
|
||||
/**
|
||||
* 修改朋友圈的信息
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
Boolean editFeed(Long uid, FeedParam param);
|
||||
}
|
||||
@@ -20,5 +20,15 @@ public interface UserTargetRelService {
|
||||
*/
|
||||
List<Long> getRelTarget(Long uid, Long friendId);
|
||||
|
||||
/**
|
||||
* 查询标签详情
|
||||
* @return
|
||||
*/
|
||||
List<TargetVo> detail(Long uid, Long friendId);
|
||||
|
||||
/**
|
||||
* 获取到朋友圈可见的人员
|
||||
* @param targetIds 标签集合
|
||||
*/
|
||||
List<Long> getFeedUidList(List<Long> targetIds, Long uid);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.hula.core.user.service.impl;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.hula.common.constant.RedisKey;
|
||||
import com.hula.core.user.domain.entity.Config;
|
||||
import com.hula.core.user.domain.vo.req.config.ConfigParam;
|
||||
@@ -75,7 +76,7 @@ public class ConfigServiceImpl implements ConfigService {
|
||||
*/
|
||||
public String get(String name) {
|
||||
loadingConfigCache();
|
||||
String data = (String) RedisUtils.hget(RedisKey.CONFIG_KEY, name);
|
||||
String data = RedisUtils.hget(RedisKey.CONFIG_KEY, name);
|
||||
if (ObjectUtil.isNull(data) || StrUtil.isBlank(data)) {
|
||||
// 没有找到数据
|
||||
return "";
|
||||
|
||||
@@ -0,0 +1,324 @@
|
||||
package com.hula.core.user.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.hula.common.constant.RedisKey;
|
||||
import com.hula.common.domain.vo.req.CursorPageBaseReq;
|
||||
import com.hula.common.domain.vo.res.CursorPageBaseResp;
|
||||
import com.hula.core.chat.service.adapter.MemberAdapter;
|
||||
import com.hula.core.user.dao.FeedDao;
|
||||
import com.hula.core.user.dao.FeedMediaDao;
|
||||
import com.hula.core.user.dao.FeedTargetDao;
|
||||
import com.hula.core.user.dao.UserFriendDao;
|
||||
import com.hula.core.user.domain.entity.Feed;
|
||||
import com.hula.core.user.domain.entity.FeedMedia;
|
||||
import com.hula.core.user.domain.entity.FeedTarget;
|
||||
import com.hula.core.user.domain.enums.FeedEnum;
|
||||
import com.hula.core.user.domain.enums.FeedPermissionEnum;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedParam;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedPermission;
|
||||
import com.hula.core.user.domain.vo.req.feed.FeedVo;
|
||||
import com.hula.core.user.service.FeedService;
|
||||
import com.hula.core.user.service.UserTargetRelService;
|
||||
import com.hula.utils.RedisUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 朋友圈核心服务
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class FeedServiceImpl implements FeedService {
|
||||
|
||||
private final PushService pushService;
|
||||
|
||||
private final FeedDao feedDao;
|
||||
|
||||
private final FeedMediaDao feedMediaDao;
|
||||
|
||||
private final UserTargetRelService userTargetRelService;
|
||||
|
||||
private final UserFriendDao userFriendDao;
|
||||
|
||||
private final FeedTargetDao feedTargetDao;
|
||||
|
||||
/**
|
||||
* @param feedList 朋友圈基础内容
|
||||
* @return
|
||||
*/
|
||||
private List<FeedVo> buildFeedResp(List<Feed> feedList) {
|
||||
List<FeedVo> feedVos = new ArrayList<>();
|
||||
for (Feed feed : feedList) {
|
||||
FeedVo feedVo = new FeedVo();
|
||||
BeanUtil.copyProperties(feed, feedVo);
|
||||
|
||||
if(!feed.getMediaType().equals(FeedEnum.WORD.getType())){
|
||||
List<FeedMedia> mediaList = RedisUtils.hget(RedisKey.USER_FEED_STRING, feed.getId().toString());
|
||||
if(CollUtil.isEmpty(mediaList)){
|
||||
mediaList = feedMediaDao.getMediaByFeedId(feed.getId());
|
||||
RedisUtils.hset(RedisKey.USER_FEED_STRING, feed.getId().toString(), mediaList);
|
||||
}
|
||||
feedVo.setUrls(mediaList.stream().sorted(Comparator.comparingInt(FeedMedia::getSort)).map(FeedMedia::getUrl).collect(Collectors.toList()));
|
||||
}
|
||||
feedVos.add(feedVo);
|
||||
}
|
||||
return feedVos;
|
||||
}
|
||||
|
||||
/**
|
||||
* 游标刷新朋友圈列表
|
||||
* @param request
|
||||
* @param uid
|
||||
*/
|
||||
@Override
|
||||
public CursorPageBaseResp<FeedVo> getFeedPage(CursorPageBaseReq request, Long uid) {
|
||||
// 1. 查询朋友圈列表
|
||||
CursorPageBaseResp<Feed> page = feedDao.getFeedPage(uid, request);
|
||||
|
||||
// 2. 合并朋友圈内容
|
||||
List<FeedVo> result = buildFeedResp(page.getList());
|
||||
return CursorPageBaseResp.init(page, result, page.getTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布朋友圈
|
||||
*/
|
||||
@Transactional
|
||||
public Boolean pushFeed(Long uid, FeedParam param){
|
||||
// 1. 保存朋友圈
|
||||
Feed feed = new Feed();
|
||||
feed.setUid(uid);
|
||||
feed.setContent(param.getContent());
|
||||
feed.setMediaType(param.getMediaType());
|
||||
feed.setPermission(param.getPermission());
|
||||
feedDao.save(feed);
|
||||
|
||||
// 2. 告知所有人我的朋友圈更新了,所有人朋友圈按钮出现红点 + 头像
|
||||
saveFeed(param, uid, feed);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存朋友圈权限+素材
|
||||
* @param param 参数
|
||||
* @param uid 操作人
|
||||
* @param feed 朋友圈
|
||||
*/
|
||||
private void saveFeed(FeedParam param, Long uid, Feed feed) {
|
||||
List<Long> pushList = new ArrayList<>();
|
||||
List<FeedTarget> feedTargets = new ArrayList<>();
|
||||
List<FeedMedia> mediaList = new ArrayList<>();
|
||||
switch (FeedPermissionEnum.get(param.getPermission())){
|
||||
case open -> {
|
||||
// 1. 查询所有好友,排除【不让他看我, 他不看我】的好友
|
||||
List<Long> uidList = userFriendDao.getAllFriendIdsByUid(uid);
|
||||
uidList.removeAll(userFriendDao.getHideMyPosts(uid));
|
||||
uidList.removeAll(userFriendDao.getHideLookMe(uid));
|
||||
pushList.addAll(uidList);
|
||||
}
|
||||
case privacy -> pushList.add(uid);
|
||||
case notAnyone -> {
|
||||
// 2.1 查询所有好友, 排除【选中的标签+选中的好友+不让他看我+他不看我】
|
||||
List<Long> uidList = userFriendDao.getAllFriendIdsByUid(uid);
|
||||
if(CollUtil.isNotEmpty(param.getTargetIds())){
|
||||
feedTargets.addAll(saveFeedTarget(param.getTargetIds(), feed.getId(), uid));
|
||||
uidList.removeAll(userTargetRelService.getFeedUidList(param.getTargetIds(), uid));
|
||||
}
|
||||
if(CollUtil.isNotEmpty(param.getUidList())){
|
||||
feedTargets.addAll(saveFeedUser(param.getUidList(), feed.getId(), uid));
|
||||
uidList.removeAll(param.getUidList());
|
||||
}
|
||||
uidList.removeAll(userFriendDao.getHideMyPosts(uid));
|
||||
uidList.removeAll(userFriendDao.getHideLookMe(uid));
|
||||
pushList.addAll(uidList);
|
||||
}
|
||||
case partVisible -> {
|
||||
// 2.2 解析标签映射的好友 + 选中的好友;同时排除【不让他看我, 他不看我】
|
||||
Set<Long> uidList = new HashSet<>();
|
||||
if(CollUtil.isNotEmpty(param.getTargetIds())){
|
||||
feedTargets.addAll(saveFeedTarget(param.getTargetIds(), feed.getId(), uid));
|
||||
uidList.addAll(userTargetRelService.getFeedUidList(param.getTargetIds(), uid));
|
||||
}
|
||||
|
||||
if(CollUtil.isNotEmpty(param.getUidList())){
|
||||
feedTargets.addAll(saveFeedUser(param.getUidList(), feed.getId(), uid));
|
||||
uidList.addAll(param.getUidList());
|
||||
}
|
||||
uidList.removeAll(userFriendDao.getHideMyPosts(uid));
|
||||
uidList.removeAll(userFriendDao.getHideLookMe(uid));
|
||||
pushList.addAll(uidList);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. 处理不同类型的朋友圈内容
|
||||
switch (FeedEnum.get(param.getMediaType())){
|
||||
case WORD -> log.info("发布了一条纯文字朋友圈~~");
|
||||
case IMAGE, VIDEO -> {
|
||||
List<String> urls = param.getUrls();
|
||||
if (CollUtil.isEmpty(urls)){
|
||||
throw new RuntimeException("请至少上传一条素材!");
|
||||
}
|
||||
mediaList = feedMediaDao.batchSaveMedia(feed.getId(), urls, param.getMediaType());
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 缓存权限+素材 告知 pushList 我发布了朋友圈
|
||||
RedisUtils.hdel(RedisKey.FEED_MEDIA, feed.getId());
|
||||
RedisUtils.hdel(RedisKey.FEED_TARGET, feed.getId());
|
||||
RedisUtils.hset(RedisKey.FEED_MEDIA, feed.getId().toString(), mediaList);
|
||||
RedisUtils.hset(RedisKey.FEED_TARGET, feed.getId().toString(), feedTargets);
|
||||
pushService.sendPushMsg(MemberAdapter.buildFeedPushWS(uid), pushList, uid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存朋友圈的标签
|
||||
* @param targetIds 标签id
|
||||
* @param feedId 朋友圈ID
|
||||
* @param uid 用户id
|
||||
*/
|
||||
private List<FeedTarget> saveFeedTarget(List<Long> targetIds, Long feedId, Long uid) {
|
||||
List<FeedTarget> feedTargetList = new ArrayList<>();
|
||||
targetIds.forEach(item -> {
|
||||
FeedTarget feedTarget = new FeedTarget();
|
||||
feedTarget.setFeedId(feedId);
|
||||
feedTarget.setTargetId(item);
|
||||
feedTarget.setType(1);
|
||||
feedTargetList.add(feedTarget);
|
||||
});
|
||||
feedTargetDao.saveBatch(feedTargetList);
|
||||
return feedTargetList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存朋友圈关联的用户id
|
||||
* @param uidList 用户id集合
|
||||
* @param feedId 朋友圈id
|
||||
* @param uid 操作人id
|
||||
*/
|
||||
private List<FeedTarget> saveFeedUser(List<Long> uidList, Long feedId, Long uid) {
|
||||
List<FeedTarget> feedTargetList = new ArrayList<>();
|
||||
uidList.forEach(item -> {
|
||||
FeedTarget feedTarget = new FeedTarget();
|
||||
feedTarget.setFeedId(feedId);
|
||||
feedTarget.setTargetId(item);
|
||||
feedTarget.setType(2);
|
||||
feedTargetList.add(feedTarget);
|
||||
});
|
||||
feedTargetDao.saveBatch(feedTargetList);
|
||||
return feedTargetList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除朋友圈
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
@Transactional
|
||||
public Boolean delFeed(Long feedId){
|
||||
// 1. 首先将朋友圈素材、权限删除
|
||||
feedMediaDao.delMediaByFeedId(feedId);
|
||||
feedTargetDao.delByFeedId(feedId);
|
||||
feedDao.removeById(feedId);
|
||||
|
||||
// 2. 清空缓存
|
||||
RedisUtils.hdel(RedisKey.FEED_TARGET, feedId);
|
||||
RedisUtils.hdel(RedisKey.FEED_MEDIA, feedId);
|
||||
return true;
|
||||
}
|
||||
|
||||
public FeedVo getDetail(Long id) {
|
||||
return feedDao.getDetail(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看朋友圈
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
public FeedVo feedDetail(Long feedId) {
|
||||
FeedVo feed = getDetail(feedId);
|
||||
|
||||
if(feed.getMediaType().equals(FeedEnum.WORD.getType())){
|
||||
List<FeedMedia> feedMediaList = RedisUtils.hget(RedisKey.FEED_MEDIA, feedId.toString());
|
||||
if(CollUtil.isEmpty(feedMediaList)){
|
||||
feedMediaList = feedMediaDao.getMediaByFeedId(feedId);
|
||||
}
|
||||
if (CollUtil.isNotEmpty(feedMediaList)){
|
||||
feed.setUrls(feedMediaList.stream().sorted(Comparator.comparingInt(FeedMedia::getSort)).map(FeedMedia::getUrl).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
|
||||
return feed;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取朋友圈的可见权限
|
||||
* @param feedId
|
||||
* @return
|
||||
*/
|
||||
public FeedPermission getFeedPermission(Long uid, Long feedId) {
|
||||
FeedVo feedVo = feedDetail(feedId);
|
||||
if(ObjectUtil.isNull(feedVo)){
|
||||
throw new RuntimeException("请选择朋友圈!");
|
||||
}
|
||||
|
||||
if(!feedVo.getUid().equals(uid)){
|
||||
throw new RuntimeException("只能查看自己的朋友圈!");
|
||||
}
|
||||
|
||||
// 处理朋友圈权限
|
||||
if(feedVo.getPermission().equals(FeedPermissionEnum.open.getType()) && feedVo.getPermission().equals(FeedPermissionEnum.privacy.getType())){
|
||||
List<FeedTarget> feedTargets = RedisUtils.hget(RedisKey.FEED_TARGET, feedId.toString());
|
||||
if(CollUtil.isEmpty(feedTargets)){
|
||||
feedTargets = feedTargetDao.selectFeedTargets(feedId);
|
||||
}
|
||||
|
||||
List<Long> taggetList = feedTargets.stream().filter(item -> item.getType().equals(1)).map(FeedTarget::getTargetId).collect(Collectors.toUnmodifiableList());
|
||||
List<Long> userList = feedTargets.stream().filter(item -> item.getType().equals(2)).map(FeedTarget::getTargetId).collect(Collectors.toUnmodifiableList());
|
||||
return new FeedPermission(taggetList, userList);
|
||||
}
|
||||
return new FeedPermission();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改朋友圈的信息
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
public Boolean editFeed(Long uid, FeedParam param){
|
||||
Feed feed = feedDao.getById(param.getId());
|
||||
if(ObjectUtil.isNull(feed)){
|
||||
throw new RuntimeException("请选择一条朋友圈!");
|
||||
}
|
||||
|
||||
if(!feed.getUid().equals(uid)){
|
||||
throw new RuntimeException("只能编辑自己的朋友圈!");
|
||||
}
|
||||
|
||||
// 1. 更新朋友圈基础信息
|
||||
feed.setMediaType(param.getMediaType());
|
||||
feed.setPermission(param.getPermission());
|
||||
feed.setContent(param.getContent());
|
||||
feedDao.updateById(feed);
|
||||
|
||||
// 2. 删除之前的权限+素材
|
||||
feedTargetDao.delByFeedId(feed.getId());
|
||||
feedMediaDao.delMediaByFeedId(feed.getId());
|
||||
|
||||
// 3. 更新朋友圈的权限+素材
|
||||
saveFeed(param, uid, feed);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.hula.core.user.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.hula.common.annotation.RedissonLock;
|
||||
import com.hula.core.user.domain.entity.UserTargetRel;
|
||||
import com.hula.core.chat.domain.vo.request.room.TargetVo;
|
||||
@@ -14,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -69,4 +71,19 @@ public class UserTargetRelServiceImpl implements UserTargetRelService {
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取到朋友圈可见的人员
|
||||
* @param targetIds 标签集合
|
||||
* @return
|
||||
*/
|
||||
public List<Long> getFeedUidList(List<Long> targetIds, Long uid) {
|
||||
return userTargetRelDao.getBaseMapper().selectObjs(new LambdaQueryWrapper<UserTargetRel>()
|
||||
.select(UserTargetRel::getFriendId)
|
||||
.in(UserTargetRel::getTargetId, targetIds)
|
||||
.eq(UserTargetRel::getUid, uid))
|
||||
.stream()
|
||||
.map(o -> (Long) o)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hula.core.user.mapper.TargetMapper">
|
||||
|
||||
<select id="getDetail" resultType="com.hula.core.user.mapper.FeedMapper">
|
||||
SELECT content, uid, media_type, created_time, id
|
||||
FROM feed WHERE id = #{id}
|
||||
</select>
|
||||
</mapper>
|
||||
718
sql/hula-im.sql
718
sql/hula-im.sql
@@ -11,7 +11,7 @@
|
||||
Target Server Version : 80031 (8.0.31)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 27/02/2025 18:20:24
|
||||
Date: 03/03/2025 13:20:44
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
@@ -22,18 +22,18 @@ SET FOREIGN_KEY_CHECKS = 0;
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `announcements`;
|
||||
CREATE TABLE `announcements` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`room_id` bigint NOT NULL COMMENT '群id',
|
||||
`u_id` bigint NOT NULL COMMENT '发布者id',
|
||||
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '公告内容',
|
||||
`publish_time` datetime NOT NULL COMMENT '发布时间',
|
||||
`created_by` bigint NOT NULL COMMENT '创建者',
|
||||
`created_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天公告表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`room_id` bigint NOT NULL COMMENT '群id',
|
||||
`u_id` bigint NOT NULL COMMENT '发布者id',
|
||||
`content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '公告内容',
|
||||
`publish_time` datetime NOT NULL COMMENT '发布时间',
|
||||
`created_by` bigint NOT NULL COMMENT '创建者',
|
||||
`created_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天公告表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of announcements
|
||||
@@ -44,17 +44,17 @@ CREATE TABLE `announcements` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `announcements_read_records`;
|
||||
CREATE TABLE `announcements_read_records` (
|
||||
`id` bigint NOT NULL,
|
||||
`announcements_id` bigint NOT NULL COMMENT '公告id',
|
||||
`u_id` bigint NOT NULL COMMENT '阅读人id',
|
||||
`is_check` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已读 0:未读 1:已读',
|
||||
`created_by` bigint NOT NULL COMMENT '创建者',
|
||||
`created_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '公告是否已读表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint NOT NULL,
|
||||
`announcements_id` bigint NOT NULL COMMENT '公告id',
|
||||
`u_id` bigint NOT NULL COMMENT '阅读人id',
|
||||
`is_check` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已读 0:未读 1:已读',
|
||||
`created_by` bigint NOT NULL COMMENT '创建者',
|
||||
`created_time` datetime NOT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '公告是否已读表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of announcements_read_records
|
||||
@@ -65,40 +65,69 @@ CREATE TABLE `announcements_read_records` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `black`;
|
||||
CREATE TABLE `black` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`type` int NOT NULL COMMENT '拉黑目标类型 1.ip 2uid',
|
||||
`target` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '拉黑目标',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `idx_type_target`(`type` ASC, `target` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '黑名单' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`type` int NOT NULL COMMENT '拉黑目标类型 1.ip 2uid',
|
||||
`target` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '拉黑目标',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `idx_type_target`(`type` ASC, `target` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '黑名单' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of black
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for config
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `config`;
|
||||
CREATE TABLE `config` (
|
||||
`id` int NOT NULL AUTO_INCREMENT COMMENT '参数主键',
|
||||
`type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '类型',
|
||||
`config_name` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '参数名称',
|
||||
`config_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT '' COMMENT '参数键名',
|
||||
`config_value` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL COMMENT '参数键值',
|
||||
`is_del` tinyint UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `key`(`config_key` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 333 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '参数配置表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of config
|
||||
-- ----------------------------
|
||||
INSERT INTO `config` VALUES (1, 'system', '{\"title\":\"系统名称\",\"componentType\":\"text\",\"value\":\"Hula-IM\",\"configKey\":\"systemName\",\"type\":\"system\"}', 'systemName', 'Hula-IM', 0);
|
||||
INSERT INTO `config` VALUES (2, 'system', '{\"title\":\"系统Logo\",\"componentType\":\"text\",\"value\":\"/static/img/Iogo.png\",\"configKey\":\"logo\",\"type\":\"system\"}', 'logo', '/static/img/Iogo.png', 0);
|
||||
INSERT INTO `config` VALUES (3, 'qiniu_up_config', '{\"title\":\"空间域名 Domain\",\"componentType\":\"text\",\"value\":\"https://upload-z2.qiniup.com\",\"configKey\":\"qnUploadUrl\",\"type\":\"qiniu_up_config\"}', 'qnUploadUrl', 'https://upload-z2.qiniup.com', 0);
|
||||
INSERT INTO `config` VALUES (4, 'qiniu_up_config', '{\"title\":\"accessKey\",\"componentType\":\"text\",\"value\":\"8si6G12t2MG9IOdkNDYmL0vGAYFTW-rHl4LgA5_\",\"configKey\":\"qnAccessKey\",\"type\":\"qiniu_up_config\"}', 'qnAccessKey', '8si6G12t2MG9IOdkNDYmL0vGAYFTW-rHl4LgA5_', 0);
|
||||
INSERT INTO `config` VALUES (5, 'qiniu_up_config', '{\"title\":\"SecretKey\",\"componentType\":\"text\",\"value\":\"MLzT2U2daTXFDEG9PuAy4TnvfR1oXvK2Yipm_eS9\",\"configKey\":\"qnSecretKey\",\"type\":\"qiniu_up_config\"}', 'qnSecretKey', 'MLzT2U2daTXFDEG9PuAy4TnvfR1oXvK2Yipm_eS9', 0);
|
||||
INSERT INTO `config` VALUES (6, 'qiniu_up_config', '{\"title\":\"存储空间名称\",\"componentType\":\"text\",\"value\":\"hula\",\"configKey\":\"qnStorageName\",\"type\":\"qiniu_up_config\"}', 'qnStorageName', 'hula', 0);
|
||||
INSERT INTO `config` VALUES (7, 'qiniu_up_config', '{\"title\":\"七牛云CDN(访问图片用的)\",\"componentType\":\"text\",\"value\":\"https://file.hula.com/\",\"configKey\":\"qnStorageCDN\",\"type\":\"qiniu_up_config\"}', 'qnStorageCDN', 'https://file.hula.com/', 0);
|
||||
INSERT INTO `config` VALUES (8, 'system', '{\"title\":\"大群ID\",\"componentType\":\"text\",\"value\":\"1\",\"configKey\":\"roomGroupId\",\"type\":\"system\"}', 'roomGroupId', '1', 0);
|
||||
INSERT INTO `config` VALUES (9, 'qiniu_up_config', '{\"title\":\"超过多少MB开启分片上传\",\"componentType\":\"text\",\"value\":\"500\",\"configKey\":\"turnSharSize\",\"type\":\"qiniu_up_config\"}', 'turnSharSize', '500', 0);
|
||||
INSERT INTO `config` VALUES (10, 'qiniu_up_config', '{\"title\":\"分片大小\",\"componentType\":\"text\",\"value\":\"50\",\"configKey\":\"fragmentSize\",\"type\":\"shop_config\"}', 'fragmentSize', '50', 0);
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for contact
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `contact`;
|
||||
CREATE TABLE `contact` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`room_id` bigint NOT NULL COMMENT '房间id',
|
||||
`mute_notification` tinyint NOT NULL DEFAULT 0 COMMENT '免打扰',
|
||||
`read_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '阅读到的时间',
|
||||
`top` tinyint NOT NULL DEFAULT 0 COMMENT '置顶消息',
|
||||
`active_time` datetime(3) NULL DEFAULT NULL COMMENT '会话内消息最后更新的时间(只有普通会话需要维护,全员会话不需要维护)',
|
||||
`last_msg_id` bigint NULL DEFAULT NULL COMMENT '会话最新消息id',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uniq_uid_room_id`(`uid` ASC, `room_id` ASC) USING BTREE,
|
||||
INDEX `idx_room_id_read_time`(`room_id` ASC, `read_time` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 12053 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '会话列表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`room_id` bigint NOT NULL COMMENT '房间id',
|
||||
`mute_notification` tinyint NOT NULL DEFAULT 0 COMMENT '免打扰',
|
||||
`read_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '阅读到的时间',
|
||||
`top` tinyint NOT NULL DEFAULT 0 COMMENT '置顶消息',
|
||||
`active_time` datetime(3) NULL DEFAULT NULL COMMENT '会话内消息最后更新的时间(只有普通会话需要维护,全员会话不需要维护)',
|
||||
`last_msg_id` bigint NULL DEFAULT NULL COMMENT '会话最新消息id',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uniq_uid_room_id`(`uid` ASC, `room_id` ASC) USING BTREE,
|
||||
INDEX `idx_room_id_read_time`(`room_id` ASC, `read_time` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 12053 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '会话列表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of contact
|
||||
@@ -106,25 +135,76 @@ CREATE TABLE `contact` (
|
||||
INSERT INTO `contact` VALUES (1, 20018, 1, 0, '2024-11-16 13:10:46.646', 0, NULL, NULL, '2024-11-16 12:12:49.035', '2025-02-25 15:07:03.944');
|
||||
INSERT INTO `contact` VALUES (2, 20000, 1, 0, '2025-02-27 18:17:15.866', 0, NULL, NULL, '2024-11-16 12:12:49.171', '2025-02-27 18:17:15.903');
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for feed
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `feed`;
|
||||
CREATE TABLE `feed` (
|
||||
`id` bigint NOT NULL,
|
||||
`u_id` bigint NOT NULL COMMENT '用户id',
|
||||
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '朋友圈文案',
|
||||
`permission` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL DEFAULT '1' COMMENT 'privacy -> 私密 open -> 公开 partVisible -> 部分可见 notAnyone -> 不给谁看',
|
||||
`media_type` tinyint NULL DEFAULT NULL COMMENT '朋友圈内容类型(0: 纯文字 1: 图片, 2: 视频)',
|
||||
`created_time` datetime NOT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `uid`(`u_id` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '朋友圈表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of feed
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for feed_media
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `feed_media`;
|
||||
CREATE TABLE `feed_media` (
|
||||
`id` bigint NOT NULL,
|
||||
`feed_id` bigint NOT NULL COMMENT '朋友圈id',
|
||||
`url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '图片或视频的路径',
|
||||
`sort` int NOT NULL COMMENT '排序',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '朋友圈资源表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of feed_media
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for feed_target
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `feed_target`;
|
||||
CREATE TABLE `feed_target` (
|
||||
`id` bigint NOT NULL,
|
||||
`type` tinyint NOT NULL DEFAULT 1 COMMENT '1 -> 关联标签id 2 -> 关联用户id',
|
||||
`feed_id` bigint NOT NULL COMMENT '朋友圈id',
|
||||
`target_id` bigint NOT NULL COMMENT '标签id',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '朋友圈可见表' ROW_FORMAT = Dynamic;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of feed_target
|
||||
-- ----------------------------
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for group_member
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `group_member`;
|
||||
CREATE TABLE `group_member` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`group_id` bigint NOT NULL COMMENT '群组id',
|
||||
`uid` bigint NOT NULL COMMENT '成员uid',
|
||||
`role` int NOT NULL COMMENT '成员角色 1群主 2管理员 3普通成员',
|
||||
`remark` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '群备注',
|
||||
`de_friend` tinyint NOT NULL DEFAULT 0 COMMENT '屏蔽群 1 -> 屏蔽 0 -> 正常',
|
||||
`my_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '我的群昵称',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_group_id_role`(`group_id` ASC, `role` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 79 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群成员表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`group_id` bigint NOT NULL COMMENT '群组id',
|
||||
`uid` bigint NOT NULL COMMENT '成员uid',
|
||||
`role` int NOT NULL COMMENT '成员角色 1群主 2管理员 3普通成员',
|
||||
`remark` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '群备注',
|
||||
`de_friend` tinyint NOT NULL DEFAULT 0 COMMENT '屏蔽群 1 -> 屏蔽 0 -> 正常',
|
||||
`my_name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '我的群昵称',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_group_id_role`(`group_id` ASC, `role` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 79 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群成员表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of group_member
|
||||
@@ -141,16 +221,16 @@ INSERT INTO `group_member` VALUES (6, 2, 20017, 3, NULL, 0, NULL, '2024-11-30 13
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `item_config`;
|
||||
CREATE TABLE `item_config` (
|
||||
`id` bigint UNSIGNED NOT NULL COMMENT 'id',
|
||||
`type` int NOT NULL COMMENT '物品类型 1改名卡 2徽章',
|
||||
`img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '物品图片',
|
||||
`describe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '物品功能描述',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '功能物品配置表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL COMMENT 'id',
|
||||
`type` int NOT NULL COMMENT '物品类型 1改名卡 2徽章',
|
||||
`img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '物品图片',
|
||||
`describe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '物品功能描述',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '功能物品配置表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of item_config
|
||||
@@ -167,23 +247,23 @@ INSERT INTO `item_config` VALUES (6, 2, 'https://hulaspark.com/minio/hula/badge/
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `message`;
|
||||
CREATE TABLE `message` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`room_id` bigint NOT NULL COMMENT '会话表id',
|
||||
`from_uid` bigint NOT NULL COMMENT '消息发送者uid',
|
||||
`content` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '消息内容',
|
||||
`reply_msg_id` bigint NULL DEFAULT NULL COMMENT '回复的消息内容',
|
||||
`status` int NOT NULL COMMENT '消息状态 0正常 1删除',
|
||||
`gap_count` int NULL DEFAULT NULL COMMENT '与回复的消息间隔多少条',
|
||||
`type` int NULL DEFAULT 1 COMMENT '消息类型 1正常文本 2.撤回消息',
|
||||
`extra` json NULL COMMENT '扩展信息',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
|
||||
INDEX `idx_from_uid`(`from_uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 5947 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`room_id` bigint NOT NULL COMMENT '会话表id',
|
||||
`from_uid` bigint NOT NULL COMMENT '消息发送者uid',
|
||||
`content` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '消息内容',
|
||||
`reply_msg_id` bigint NULL DEFAULT NULL COMMENT '回复的消息内容',
|
||||
`status` int NOT NULL COMMENT '消息状态 0正常 1删除',
|
||||
`gap_count` int NULL DEFAULT NULL COMMENT '与回复的消息间隔多少条',
|
||||
`type` int NULL DEFAULT 1 COMMENT '消息类型 1正常文本 2.撤回消息',
|
||||
`extra` json NULL COMMENT '扩展信息',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
|
||||
INDEX `idx_from_uid`(`from_uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 5947 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of message
|
||||
@@ -195,19 +275,19 @@ INSERT INTO `message` VALUES (5946, 1, 20000, '123', NULL, 0, NULL, 1, '{\"recal
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `message_mark`;
|
||||
CREATE TABLE `message_mark` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`msg_id` bigint NOT NULL COMMENT '消息表id',
|
||||
`uid` bigint NOT NULL COMMENT '标记人uid',
|
||||
`type` int NOT NULL COMMENT '标记类型 1点赞 2举报',
|
||||
`status` int NOT NULL COMMENT '消息状态 0正常 1取消',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_msg_id`(`msg_id` ASC) USING BTREE,
|
||||
INDEX `idx_uid`(`uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息标记表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`msg_id` bigint NOT NULL COMMENT '消息表id',
|
||||
`uid` bigint NOT NULL COMMENT '标记人uid',
|
||||
`type` int NOT NULL COMMENT '标记类型 1点赞 2举报',
|
||||
`status` int NOT NULL COMMENT '消息状态 0正常 1取消',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_msg_id`(`msg_id` ASC) USING BTREE,
|
||||
INDEX `idx_uid`(`uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息标记表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of message_mark
|
||||
@@ -218,14 +298,14 @@ CREATE TABLE `message_mark` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `role`;
|
||||
CREATE TABLE `role` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '角色名称',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '角色表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of role
|
||||
@@ -238,18 +318,18 @@ INSERT INTO `role` VALUES (2, 'HuLa群聊管理员', '2024-07-10 11:17:15.091',
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `room`;
|
||||
CREATE TABLE `room` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`type` int NOT NULL COMMENT '房间类型 1群聊 2单聊',
|
||||
`hot_flag` int NULL DEFAULT 0 COMMENT '是否全员展示 0否 1是',
|
||||
`active_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '群最后消息的更新时间(热点群不需要写扩散,只更新这里)',
|
||||
`last_msg_id` bigint NULL DEFAULT NULL COMMENT '会话中的最后一条消息id',
|
||||
`ext_json` json NULL COMMENT '额外信息(根据不同类型房间有不同存储的东西)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 139 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '房间表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`type` int NOT NULL COMMENT '房间类型 1群聊 2单聊',
|
||||
`hot_flag` int NULL DEFAULT 0 COMMENT '是否全员展示 0否 1是',
|
||||
`active_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '群最后消息的更新时间(热点群不需要写扩散,只更新这里)',
|
||||
`last_msg_id` bigint NULL DEFAULT NULL COMMENT '会话中的最后一条消息id',
|
||||
`ext_json` json NULL COMMENT '额外信息(根据不同类型房间有不同存储的东西)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 139 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '房间表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of room
|
||||
@@ -263,20 +343,20 @@ INSERT INTO `room` VALUES (3, 2, 0, '2024-11-13 15:56:49.303', 661, NULL, '2024-
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `room_friend`;
|
||||
CREATE TABLE `room_friend` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`room_id` bigint NOT NULL COMMENT '房间id',
|
||||
`uid1` bigint NOT NULL COMMENT 'uid1(更小的uid)',
|
||||
`uid2` bigint NOT NULL COMMENT 'uid2(更大的uid)',
|
||||
`room_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '房间key由两个uid拼接,先做排序uid1_uid2',
|
||||
`status` int NOT NULL COMMENT '房间状态 0正常 1禁用(删好友了禁用)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `room_key`(`room_key` ASC) USING BTREE,
|
||||
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 88 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '单聊房间表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`room_id` bigint NOT NULL COMMENT '房间id',
|
||||
`uid1` bigint NOT NULL COMMENT 'uid1(更小的uid)',
|
||||
`uid2` bigint NOT NULL COMMENT 'uid2(更大的uid)',
|
||||
`room_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '房间key由两个uid拼接,先做排序uid1_uid2',
|
||||
`status` int NOT NULL COMMENT '房间状态 0正常 1禁用(删好友了禁用)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `room_key`(`room_key` ASC) USING BTREE,
|
||||
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 88 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '单聊房间表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of room_friend
|
||||
@@ -288,20 +368,20 @@ INSERT INTO `room_friend` VALUES (3, 12, 20016, 20017, '20016,20017', 0, '2024-1
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `room_group`;
|
||||
CREATE TABLE `room_group` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`room_id` bigint NOT NULL COMMENT '房间id',
|
||||
`account_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '群名称',
|
||||
`avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '群头像',
|
||||
`ext_json` json NULL COMMENT '额外信息(根据不同类型房间有不同存储的东西)',
|
||||
`delete_status` int NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-正常,1-删除)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群聊房间表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`room_id` bigint NOT NULL COMMENT '房间id',
|
||||
`account_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '群名称',
|
||||
`avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '群头像',
|
||||
`ext_json` json NULL COMMENT '额外信息(根据不同类型房间有不同存储的东西)',
|
||||
`delete_status` int NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-正常,1-删除)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 31 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群聊房间表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of room_group
|
||||
@@ -326,18 +406,18 @@ INSERT INTO `room_group` VALUES (30, 134, '', '', 'http://111.92.241.175:9000/hu
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `secure_invoke_record`;
|
||||
CREATE TABLE `secure_invoke_record` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`secure_invoke_json` json NOT NULL COMMENT '请求快照参数json',
|
||||
`status` tinyint NOT NULL COMMENT '状态 1待执行 2已失败',
|
||||
`next_retry_time` datetime(3) NOT NULL COMMENT '下一次重试的时间',
|
||||
`retry_times` int NOT NULL COMMENT '已经重试的次数',
|
||||
`max_retry_times` int NOT NULL COMMENT '最大重试次数',
|
||||
`fail_reason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '执行失败的堆栈',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_next_retry_time`(`next_retry_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '本地消息表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`secure_invoke_json` json NOT NULL COMMENT '请求快照参数json',
|
||||
`status` tinyint NOT NULL COMMENT '状态 1待执行 2已失败',
|
||||
`next_retry_time` datetime(3) NOT NULL COMMENT '下一次重试的时间',
|
||||
`retry_times` int NOT NULL COMMENT '已经重试的次数',
|
||||
`max_retry_times` int NOT NULL COMMENT '最大重试次数',
|
||||
`fail_reason` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '执行失败的堆栈',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_next_retry_time`(`next_retry_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '本地消息表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of secure_invoke_record
|
||||
@@ -348,8 +428,8 @@ CREATE TABLE `secure_invoke_record` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `sensitive_word`;
|
||||
CREATE TABLE `sensitive_word` (
|
||||
`word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '敏感词'
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '敏感词库' ROW_FORMAT = Dynamic;
|
||||
`word` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '敏感词'
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '敏感词库' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of sensitive_word
|
||||
@@ -362,18 +442,18 @@ INSERT INTO `sensitive_word` VALUES ('tmd');
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `target`;
|
||||
CREATE TABLE `target` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`u_id` bigint NOT NULL COMMENT '用户id',
|
||||
`name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '标签名',
|
||||
`icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL DEFAULT '' COMMENT '标签图标',
|
||||
`created_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`created_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `employee`(`u_id` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天的标签' ROW_FORMAT = Dynamic;
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`u_id` bigint NOT NULL COMMENT '用户id',
|
||||
`name` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '标签名',
|
||||
`icon` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL DEFAULT '' COMMENT '标签图标',
|
||||
`created_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`created_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `employee`(`u_id` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天的标签' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of target
|
||||
@@ -384,30 +464,30 @@ CREATE TABLE `target` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user`;
|
||||
CREATE TABLE `user` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id',
|
||||
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户昵称',
|
||||
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户头像',
|
||||
`account_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`sex` int NULL DEFAULT NULL COMMENT '性别 1为男性,2为女性',
|
||||
`open_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
|
||||
`active_status` int NULL DEFAULT 2 COMMENT '在线状态 1在线 2离线',
|
||||
`user_state_id` bigint NOT NULL DEFAULT 0 COMMENT '用户状态id',
|
||||
`last_opt_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '最后上下线时间',
|
||||
`ip_info` json NULL COMMENT 'ip信息',
|
||||
`item_id` bigint NULL DEFAULT NULL COMMENT '佩戴的徽章id',
|
||||
`status` int NULL DEFAULT 0 COMMENT '使用状态 0.正常 1拉黑',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
`account` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户账号',
|
||||
`password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户密码',
|
||||
`avatar_update_time` datetime(3) NULL DEFAULT NULL COMMENT '头像修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `account_code`(`account_code` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE,
|
||||
INDEX `idx_active_status_last_opt_time`(`active_status` ASC, `last_opt_time` ASC) USING BTREE,
|
||||
INDEX `account_UNIQUE`(`account` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 20696 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户id',
|
||||
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户昵称',
|
||||
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '用户头像',
|
||||
`account_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
|
||||
`sex` int NULL DEFAULT NULL COMMENT '性别 1为男性,2为女性',
|
||||
`open_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
|
||||
`active_status` int NULL DEFAULT 2 COMMENT '在线状态 1在线 2离线',
|
||||
`user_state_id` bigint NOT NULL DEFAULT 0 COMMENT '用户状态id',
|
||||
`last_opt_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '最后上下线时间',
|
||||
`ip_info` json NULL COMMENT 'ip信息',
|
||||
`item_id` bigint NULL DEFAULT NULL COMMENT '佩戴的徽章id',
|
||||
`status` int NULL DEFAULT 0 COMMENT '使用状态 0.正常 1拉黑',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
`account` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户账号',
|
||||
`password` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户密码',
|
||||
`avatar_update_time` datetime(3) NULL DEFAULT NULL COMMENT '头像修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `account_code`(`account_code` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE,
|
||||
INDEX `idx_active_status_last_opt_time`(`active_status` ASC, `last_opt_time` ASC) USING BTREE,
|
||||
INDEX `account_UNIQUE`(`account` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 20696 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user
|
||||
@@ -419,23 +499,23 @@ INSERT INTO `user` VALUES (20000, 'admin', 'https://thirdwx.qlogo.cn/mmopen/vi_3
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_apply`;
|
||||
CREATE TABLE `user_apply` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT '申请人uid',
|
||||
`type` int NOT NULL COMMENT '申请类型 1加好友 2 加群',
|
||||
`target_id` bigint NOT NULL COMMENT '接收对象 type: 1 -> uid; type: 2 -> roomGroupId',
|
||||
`msg` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '申请信息',
|
||||
`status` int NOT NULL COMMENT '申请状态 1待审批 2同意',
|
||||
`read_status` int NOT NULL COMMENT '阅读状态 1未读 2已读',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
`deleted` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态 0:未删 1 申请人删除 2 被申请人删除 3都删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_uid_target_id`(`uid` ASC, `target_id` ASC) USING BTREE,
|
||||
INDEX `idx_target_id_read_status`(`target_id` ASC, `read_status` ASC) USING BTREE,
|
||||
INDEX `idx_target_id`(`target_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 159 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户申请表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT '申请人uid',
|
||||
`type` int NOT NULL COMMENT '申请类型 1加好友 2 加群',
|
||||
`target_id` bigint NOT NULL COMMENT '接收对象 type: 1 -> uid; type: 2 -> roomGroupId',
|
||||
`msg` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '申请信息',
|
||||
`status` int NOT NULL COMMENT '申请状态 1待审批 2同意',
|
||||
`read_status` int NOT NULL COMMENT '阅读状态 1未读 2已读',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
`deleted` tinyint NOT NULL DEFAULT 0 COMMENT '删除状态 0:未删 1 申请人删除 2 被申请人删除 3都删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_uid_target_id`(`uid` ASC, `target_id` ASC) USING BTREE,
|
||||
INDEX `idx_target_id_read_status`(`target_id` ASC, `read_status` ASC) USING BTREE,
|
||||
INDEX `idx_target_id`(`target_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 159 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户申请表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_apply
|
||||
@@ -446,19 +526,19 @@ CREATE TABLE `user_apply` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_backpack`;
|
||||
CREATE TABLE `user_backpack` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`item_id` int NOT NULL COMMENT '物品id',
|
||||
`status` int NOT NULL COMMENT '使用状态 0.待使用 1已使用',
|
||||
`idempotent` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '幂等号',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uniq_idempotent`(`idempotent` ASC) USING BTREE,
|
||||
INDEX `idx_uid`(`uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 804 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户背包表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`item_id` int NOT NULL COMMENT '物品id',
|
||||
`status` int NOT NULL COMMENT '使用状态 0.待使用 1已使用',
|
||||
`idempotent` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '幂等号',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uniq_idempotent`(`idempotent` ASC) USING BTREE,
|
||||
INDEX `idx_uid`(`uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 804 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户背包表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_backpack
|
||||
@@ -469,15 +549,15 @@ CREATE TABLE `user_backpack` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_block`;
|
||||
CREATE TABLE `user_block` (
|
||||
`id` bigint NOT NULL COMMENT '主键',
|
||||
`blocker_uid` bigint NOT NULL COMMENT '屏蔽方用户ID',
|
||||
`blocked_uid` bigint NOT NULL COMMENT '被屏蔽方用户ID',
|
||||
`created_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '屏蔽时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uk_blocker_blocked`(`blocker_uid` ASC, `blocked_uid` ASC) USING BTREE,
|
||||
INDEX `idx_blocker`(`blocker_uid` ASC) USING BTREE,
|
||||
INDEX `idx_blocked`(`blocked_uid` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户屏蔽关系表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint NOT NULL COMMENT '主键',
|
||||
`blocker_uid` bigint NOT NULL COMMENT '屏蔽方用户ID',
|
||||
`blocked_uid` bigint NOT NULL COMMENT '被屏蔽方用户ID',
|
||||
`created_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '屏蔽时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE INDEX `uk_blocker_blocked`(`blocker_uid` ASC, `blocked_uid` ASC) USING BTREE,
|
||||
INDEX `idx_blocker`(`blocker_uid` ASC) USING BTREE,
|
||||
INDEX `idx_blocked`(`blocked_uid` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户屏蔽关系表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_block
|
||||
@@ -488,15 +568,15 @@ CREATE TABLE `user_block` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_emoji`;
|
||||
CREATE TABLE `user_emoji` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT '用户表ID',
|
||||
`expression_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '表情地址',
|
||||
`delete_status` int NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-正常,1-删除)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `IDX_USER_EMOJIS_UID`(`uid` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表情包' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT '用户表ID',
|
||||
`expression_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '表情地址',
|
||||
`delete_status` int NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-正常,1-删除)',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `IDX_USER_EMOJIS_UID`(`uid` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表情包' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_emoji
|
||||
@@ -507,19 +587,21 @@ CREATE TABLE `user_emoji` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_friend`;
|
||||
CREATE TABLE `user_friend` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`friend_uid` bigint NOT NULL COMMENT '好友uid',
|
||||
`delete_status` tinyint NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-正常,1-删除)',
|
||||
`mute_notification` tinyint NOT NULL DEFAULT 0 COMMENT '免打扰',
|
||||
`remark` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '好友备注',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_uid_friend_uid`(`uid` ASC, `friend_uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 215 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户联系人表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`friend_uid` bigint NOT NULL COMMENT '好友uid',
|
||||
`delete_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除(0-正常,1-删除)',
|
||||
`mute_notification` tinyint(1) NOT NULL DEFAULT 0 COMMENT '免打扰',
|
||||
`hide_my_posts` tinyint(1) NOT NULL DEFAULT 0 COMMENT '不让他看我(0-允许,1-禁止)',
|
||||
`hide_their_posts` tinyint(1) NOT NULL DEFAULT 0 COMMENT '不看他(0-允许,1-禁止)',
|
||||
`remark` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '好友备注',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_uid_friend_uid`(`uid` ASC, `friend_uid` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 215 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户联系人表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_friend
|
||||
@@ -530,17 +612,17 @@ CREATE TABLE `user_friend` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_role`;
|
||||
CREATE TABLE `user_role` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`role_id` bigint NOT NULL COMMENT '角色id',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_uid`(`uid` ASC) USING BTREE,
|
||||
INDEX `idx_role_id`(`role_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`uid` bigint NOT NULL COMMENT 'uid',
|
||||
`role_id` bigint NOT NULL COMMENT '角色id',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_uid`(`uid` ASC) USING BTREE,
|
||||
INDEX `idx_role_id`(`role_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户角色关系表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_role
|
||||
@@ -551,16 +633,16 @@ CREATE TABLE `user_role` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_state`;
|
||||
CREATE TABLE `user_state` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '状态名',
|
||||
`url` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '状态图标',
|
||||
`created_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`created_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天用户状态表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '状态名',
|
||||
`url` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '状态图标',
|
||||
`created_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`created_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天用户状态表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_state
|
||||
@@ -604,18 +686,18 @@ INSERT INTO `user_state` VALUES (33, '游戏中', '/status/game_3x.png', 1, '202
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `user_target_rel`;
|
||||
CREATE TABLE `user_target_rel` (
|
||||
`id` bigint NOT NULL,
|
||||
`u_id` bigint NOT NULL COMMENT '人员id',
|
||||
`friend_id` bigint NOT NULL COMMENT '被绑定的人员id',
|
||||
`target_id` bigint NOT NULL COMMENT '标签id',
|
||||
`created_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`created_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `employee`(`u_id` ASC, `friend_id` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '人员标签关联表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint NOT NULL,
|
||||
`u_id` bigint NOT NULL COMMENT '人员id',
|
||||
`friend_id` bigint NOT NULL COMMENT '被绑定的人员id',
|
||||
`target_id` bigint NOT NULL COMMENT '标签id',
|
||||
`created_by` bigint NULL DEFAULT NULL COMMENT '创建者',
|
||||
`created_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
|
||||
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
|
||||
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
|
||||
`is_del` tinyint(1) NOT NULL COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `employee`(`u_id` ASC, `friend_id` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '人员标签关联表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of user_target_rel
|
||||
@@ -626,15 +708,15 @@ CREATE TABLE `user_target_rel` (
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `worker_node`;
|
||||
CREATE TABLE `worker_node` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'auto;increment id',
|
||||
`host_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主机名',
|
||||
`port` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '端口',
|
||||
`type` int NOT NULL COMMENT '节点类型:;ACTUAL 或者 CONTAINER',
|
||||
`launch_date` date NOT NULL COMMENT '上线日期',
|
||||
`modified` timestamp NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`created` timestamp NULL DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'DB;WorkerID Assigner for UID Generator' ROW_FORMAT = DYNAMIC;
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT 'auto;increment id',
|
||||
`host_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '主机名',
|
||||
`port` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '端口',
|
||||
`type` int NOT NULL COMMENT '节点类型:;ACTUAL 或者 CONTAINER',
|
||||
`launch_date` date NOT NULL COMMENT '上线日期',
|
||||
`modified` timestamp NULL DEFAULT NULL COMMENT '修改时间',
|
||||
`created` timestamp NULL DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'DB;WorkerID Assigner for UID Generator' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of worker_node
|
||||
@@ -648,22 +730,32 @@ INSERT INTO `worker_node` VALUES (6, '192.168.1.105', '1740645676926-31636', 2,
|
||||
INSERT INTO `worker_node` VALUES (7, '192.168.1.105', '1740649171235-18216', 2, '2025-02-27', '2025-02-27 17:39:31', '2025-02-27 17:39:31');
|
||||
INSERT INTO `worker_node` VALUES (8, '192.168.1.105', '1740650592465-20161', 2, '2025-02-27', '2025-02-27 18:03:12', '2025-02-27 18:03:12');
|
||||
INSERT INTO `worker_node` VALUES (9, '192.168.1.105', '1740651241906-67540', 2, '2025-02-27', '2025-02-27 18:14:02', '2025-02-27 18:14:02');
|
||||
INSERT INTO `worker_node` VALUES (10, '192.168.1.105', '1740911912923-43299', 2, '2025-03-02', '2025-03-02 18:38:33', '2025-03-02 18:38:33');
|
||||
INSERT INTO `worker_node` VALUES (11, '192.168.1.105', '1740974696482-23085', 2, '2025-03-03', '2025-03-03 12:04:56', '2025-03-03 12:04:56');
|
||||
INSERT INTO `worker_node` VALUES (12, '192.168.1.105', '1740974744186-69746', 2, '2025-03-03', '2025-03-03 12:05:44', '2025-03-03 12:05:44');
|
||||
INSERT INTO `worker_node` VALUES (13, '192.168.1.105', '1740976190991-80068', 2, '2025-03-03', '2025-03-03 12:29:51', '2025-03-03 12:29:51');
|
||||
INSERT INTO `worker_node` VALUES (14, '192.168.1.105', '1740976446395-17497', 2, '2025-03-03', '2025-03-03 12:34:06', '2025-03-03 12:34:06');
|
||||
INSERT INTO `worker_node` VALUES (15, '192.168.1.105', '1740976825093-79338', 2, '2025-03-03', '2025-03-03 12:40:25', '2025-03-03 12:40:25');
|
||||
INSERT INTO `worker_node` VALUES (16, '192.168.1.105', '1740976869970-90188', 2, '2025-03-03', '2025-03-03 12:41:10', '2025-03-03 12:41:10');
|
||||
INSERT INTO `worker_node` VALUES (17, '192.168.1.105', '1740977125946-60633', 2, '2025-03-03', '2025-03-03 12:45:26', '2025-03-03 12:45:26');
|
||||
INSERT INTO `worker_node` VALUES (18, '192.168.1.105', '1740977161406-14512', 2, '2025-03-03', '2025-03-03 12:46:01', '2025-03-03 12:46:01');
|
||||
INSERT INTO `worker_node` VALUES (19, '192.168.1.105', '1740979045821-69473', 2, '2025-03-03', '2025-03-03 13:17:26', '2025-03-03 13:17:26');
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for wx_msg
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `wx_msg`;
|
||||
CREATE TABLE `wx_msg` (
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`open_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '微信openid用户标识',
|
||||
`msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户消息',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_open_id`(`open_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息表' ROW_FORMAT = Dynamic;
|
||||
`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||
`open_id` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '微信openid用户标识',
|
||||
`msg` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户消息',
|
||||
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
|
||||
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `idx_open_id`(`open_id` ASC) USING BTREE,
|
||||
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
|
||||
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '微信消息表' ROW_FORMAT = DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Records of wx_msg
|
||||
|
||||
Reference in New Issue
Block a user