diff --git a/im-platform/src/main/java/com/bx/implatform/controller/FileController.java b/im-platform/src/main/java/com/bx/implatform/controller/FileController.java index 5288ca3..3d54f38 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/FileController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/FileController.java @@ -1,8 +1,10 @@ package com.bx.implatform.controller; +import com.bx.implatform.enums.ResultCode; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; import com.bx.implatform.service.FileService; +import com.bx.implatform.service.ImAgentService; import com.bx.implatform.vo.UploadImageVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -22,6 +24,8 @@ public class FileController { private final FileService fileService; + private final ImAgentService agentService; + @Operation(summary = "上传图片", description = "上传图片,上传后返回原图和缩略图的url") @PostMapping("/image/upload") public Result uploadImage(@RequestParam("file") MultipartFile file, @@ -30,8 +34,13 @@ public class FileController { } @Operation(summary = "上传文件", description = "上传文件,上传后返回文件url") - //@PostMapping("/file/upload") + @PostMapping("/file/upload") public Result uploadFile(@RequestParam("file") MultipartFile file) { + + if (!agentService.ifOpenFile()) { + return ResultUtils.error(ResultCode.XSS_PARAM_ERROR); + } + return ResultUtils.success(fileService.uploadFile(file), Strings.EMPTY); } diff --git a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java b/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java index 04cf129..6dce7a2 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/LoginController.java @@ -1,10 +1,12 @@ package com.bx.implatform.controller; +import cn.hutool.json.JSONObject; import com.bx.implatform.dto.LoginDTO; import com.bx.implatform.dto.ModifyPwdDTO; import com.bx.implatform.dto.RegisterDTO; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; +import com.bx.implatform.service.ImAgentService; import com.bx.implatform.service.UserService; import com.bx.implatform.vo.LoginVO; import com.github.xiaoymin.knife4j.annotations.Ignore; @@ -21,6 +23,8 @@ public class LoginController { private final UserService userService; + private final ImAgentService agentService; + @PostMapping("/login") @Operation(summary = "用户登录", description = "用户登录") public Result login(@Valid @RequestBody LoginDTO dto) { @@ -56,4 +60,17 @@ public class LoginController { return ResultUtils.success(); } + @PostMapping("/getSetting") + @Operation(summary = "获取配置", description = "用户注册") + public Result register() { + JSONObject jsonObject = new JSONObject(); + + if(agentService.ifOpenFile()){ + jsonObject.set("isFileOpen", 1); + }else{ + jsonObject.set("isFileOpen", 0); + } + return ResultUtils.success(jsonObject); + } + } diff --git a/im-platform/src/main/java/com/bx/implatform/entity/ImAgent.java b/im-platform/src/main/java/com/bx/implatform/entity/ImAgent.java index 2394869..b83ed8f 100644 --- a/im-platform/src/main/java/com/bx/implatform/entity/ImAgent.java +++ b/im-platform/src/main/java/com/bx/implatform/entity/ImAgent.java @@ -60,4 +60,9 @@ public class ImAgent { * 客服人数上限 */ private Long maxCustomer; + + /** + * 是否开启文件上传 + */ + private int isFileOpen; } diff --git a/im-platform/src/main/java/com/bx/implatform/service/ImAgentService.java b/im-platform/src/main/java/com/bx/implatform/service/ImAgentService.java index 3d073a0..6614bae 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/ImAgentService.java +++ b/im-platform/src/main/java/com/bx/implatform/service/ImAgentService.java @@ -11,4 +11,6 @@ public interface ImAgentService extends IService { * @return 如果套餐过期返回true,否则返回false */ boolean isPackageExpire(String uniqueToken); + + boolean ifOpenFile(); } diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/ImAgentServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/ImAgentServiceImpl.java index d3ba7d4..e0ba100 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/ImAgentServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/ImAgentServiceImpl.java @@ -1,10 +1,14 @@ package com.bx.implatform.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bx.implatform.entity.ImAgent; +import com.bx.implatform.entity.User; import com.bx.implatform.mapper.ImAgentMapper; +import com.bx.implatform.mapper.UserMapper; import com.bx.implatform.service.ImAgentService; +import com.bx.implatform.session.SessionContext; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -18,6 +22,8 @@ public class ImAgentServiceImpl extends ServiceImpl impl private final ImAgentMapper baseMapper; + private final UserMapper userMapper; + @Override public boolean isPackageExpire(String uniqueToken) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -35,4 +41,31 @@ public class ImAgentServiceImpl extends ServiceImpl impl //过期 return expireTime.before(new Date()); } + + @Override + public boolean ifOpenFile() { + Long userId = SessionContext.getSession().getUserId(); + if(userId == null) { + return false; + } + + User user = userMapper.selectById(userId); + if(user == null || ObjectUtil.isEmpty(user)){ + return false; + } + + String token = user.getUniqueToken(); + if(token == null || ObjectUtil.isEmpty(token)){ + return false; + } + + ImAgent imAgent = baseMapper.selectOne(new LambdaQueryWrapper().eq(ImAgent::getUniqueToken, token)); + if(imAgent == null || ObjectUtil.isEmpty(imAgent)) { + return false; + } + + int isFileOpen = imAgent.getIsFileOpen(); + + return isFileOpen == 1; + } } diff --git a/im-uniapp/pages/chat/chat-box.vue b/im-uniapp/pages/chat/chat-box.vue index 081ae2a..5fe4523 100644 --- a/im-uniapp/pages/chat/chat-box.vue +++ b/im-uniapp/pages/chat/chat-box.vue @@ -1,89 +1,170 @@ \ No newline at end of file +