新增表情包功能

This commit is contained in:
WSJ
2023-07-04 09:22:35 +08:00
parent 5347d4f56b
commit ae1c1ed098
9 changed files with 147 additions and 103 deletions

View File

@@ -1,12 +1,11 @@
package com.abin.mallchat.custom.user.controller;
import cn.hutool.core.util.StrUtil;
import com.abin.mallchat.common.chat.domain.entity.McEmojis;
import com.abin.mallchat.common.chat.domain.entity.UserEmojis;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.ApiResult;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.utils.RequestHolder;
import com.abin.mallchat.custom.user.service.EmojisService;
import com.abin.mallchat.custom.user.service.UserEmojisService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -22,15 +21,15 @@ import javax.validation.Valid;
* @createTime: 2023/7/3 14:21
*/
@RestController
@RequestMapping("/capi/emojis")
@RequestMapping("/capi/userEmojis")
@Api(tags = "用户表情包管理相关接口")
public class EmojisController {
public class UserEmojisController {
/**
* 用户表情包 Service
*/
@Resource
private EmojisService emojisService;
private UserEmojisService emojisService;
/**
@@ -43,7 +42,7 @@ public class EmojisController {
**/
@GetMapping("/getEmojisPage")
@ApiOperation("表情包列表")
public ApiResult<CursorPageBaseResp<McEmojis>> getEmojisPage(@Valid CursorPageBaseReq request) {
public ApiResult<CursorPageBaseResp<UserEmojis>> getEmojisPage(@Valid CursorPageBaseReq request) {
return ApiResult.success(emojisService.getEmojisPage(request, RequestHolder.get().getUid()));
}
@@ -57,14 +56,9 @@ public class EmojisController {
* @createTime 2023/7/3 14:46
**/
@PostMapping("/insertEmojis")
@ApiOperation("表情包列表")
public ApiResult<McEmojis> insertEmojis(@Valid @RequestBody McEmojis emojis) {
emojis.setUserId(RequestHolder.get().getUid());
LambdaQueryWrapper<McEmojis> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(McEmojis::getUserId,emojis.getUserId());
queryWrapper.eq(McEmojis::getExpressionUrl,emojis.getExpressionUrl());
emojisService.saveOrUpdate(emojis, queryWrapper);
return ApiResult.success(emojis);
@ApiOperation("新增表情包")
public ApiResult<UserEmojis> insertEmojis(@Valid @RequestBody UserEmojis emojis) {
return emojisService.insertEmojis(emojis,RequestHolder.get().getUid());
}
/**
@@ -76,7 +70,7 @@ public class EmojisController {
* @createTime 2023/7/3 14:46
**/
@GetMapping("/deleteEmojis")
@ApiOperation("表情包列表")
@ApiOperation("删除表情包")
public ApiResult<Void> deleteEmojis(@RequestParam("id") String id) {
emojisService.removeById(id);
return ApiResult.success();

View File

@@ -1,26 +0,0 @@
package com.abin.mallchat.custom.user.service;
import com.abin.mallchat.common.chat.domain.entity.McEmojis;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.custom.chat.domain.vo.response.ChatRoomResp;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* 用户表情包 Service
*
* @author: WuShiJie
* @createTime: 2023/7/3 14:22
*/
public interface EmojisService extends IService<McEmojis> {
/**
* 表情包列表
*
* @param request 游标翻页请求参数
* @return 表情包列表
* @author WuShiJie
* @createTime 2023/7/3 14:46
**/
CursorPageBaseResp<McEmojis> getEmojisPage(CursorPageBaseReq request, Long uid);
}

View File

@@ -0,0 +1,37 @@
package com.abin.mallchat.custom.user.service;
import com.abin.mallchat.common.chat.domain.entity.UserEmojis;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.ApiResult;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* 用户表情包 Service
*
* @author: WuShiJie
* @createTime: 2023/7/3 14:22
*/
public interface UserEmojisService extends IService<UserEmojis> {
/**
* 表情包列表
*
* @param request 游标翻页请求参数
* @return 表情包列表
* @author WuShiJie
* @createTime 2023/7/3 14:46
**/
CursorPageBaseResp<UserEmojis> getEmojisPage(CursorPageBaseReq request, Long uid);
/**
* 新增表情包
*
* @param emojis 用户表情包
* @param uid 用户ID
* @return 表情包
* @author WuShiJie
* @createTime 2023/7/3 14:46
**/
ApiResult<UserEmojis> insertEmojis(UserEmojis emojis, Long uid);
}

View File

@@ -1,43 +0,0 @@
package com.abin.mallchat.custom.user.service.impl;
import com.abin.mallchat.common.chat.domain.entity.McEmojis;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.utils.CursorUtils;
import com.abin.mallchat.common.user.mapper.EmojisMapper;
import com.abin.mallchat.custom.chat.service.adapter.RoomAdapter;
import com.abin.mallchat.custom.user.service.EmojisService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 用户表情包 ServiceImpl
*
* @author: WuShiJie
* @createTime: 2023/7/3 14:23
*/
@Service
@Slf4j
public class EmojisServiceImpl extends ServiceImpl<EmojisMapper, McEmojis> implements EmojisService {
@Autowired
private CursorUtils cursorUtils;
/**
* 表情包列表
*
* @param request 游标翻页请求参数
* @return 表情包列表
* @author WuShiJie
* @createTime 2023/7/3 14:46
**/
@Override
public CursorPageBaseResp<McEmojis> getEmojisPage(CursorPageBaseReq request, Long uid) {
CursorPageBaseResp<McEmojis> cursorPageByMysql = cursorUtils.getCursorPageByMysql(this, request, wrapper -> {
wrapper.eq(McEmojis::getUserId, uid);
}, McEmojis::getId);
return cursorPageByMysql;
}
}

View File

@@ -0,0 +1,82 @@
package com.abin.mallchat.custom.user.service.impl;
import com.abin.mallchat.common.chat.domain.entity.UserEmojis;
import com.abin.mallchat.common.common.annotation.RedissonLock;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.ApiResult;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.utils.CursorUtils;
import com.abin.mallchat.common.common.utils.RequestHolder;
import com.abin.mallchat.common.user.mapper.UserEmojisMapper;
import com.abin.mallchat.custom.user.service.UserEmojisService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 用户表情包 ServiceImpl
*
* @author: WuShiJie
* @createTime: 2023/7/3 14:23
*/
@Service
@Slf4j
public class UserEmojisServiceImpl extends ServiceImpl<UserEmojisMapper, UserEmojis> implements UserEmojisService {
/**
* 游标分页工具类
*/
@Resource
private CursorUtils cursorUtils;
/**
* 表情包列表
*
* @param request 游标翻页请求参数
* @return 表情包列表
* @author WuShiJie
* @createTime 2023/7/3 14:46
**/
@Override
public CursorPageBaseResp<UserEmojis> getEmojisPage(CursorPageBaseReq request, Long uid) {
CursorPageBaseResp<UserEmojis> cursorPageByMysql = cursorUtils.getCursorPageByMysql(this, request, wrapper -> {
wrapper.eq(UserEmojis::getUid, uid);
}, UserEmojis::getId);
return cursorPageByMysql;
}
/**
* 新增表情包
*
* @param emojis 用户表情包
* @param uid 用户ID
* @return 表情包
* @author WuShiJie
* @createTime 2023/7/3 14:46
**/
@Override
@RedissonLock(key = "#uid")
public ApiResult<UserEmojis> insertEmojis(UserEmojis emojis, Long uid) {
//校验表情数量是否超过30
LambdaQueryWrapper<UserEmojis> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(UserEmojis::getUid,uid);
int count = this.count(queryWrapper);
if (count>30){
return ApiResult.fail(-1,"最多只能添加30个表情");
}
//校验表情是否存在
queryWrapper.eq(UserEmojis::getExpressionUrl,emojis.getExpressionUrl());
count = this.count(queryWrapper);
if (count >0){
return ApiResult.fail(-1,"当前表情已存在");
}
emojis.setUid(RequestHolder.get().getUid());
this.saveOrUpdate(emojis, queryWrapper);
return ApiResult.success(emojis);
}
}