1
zj
2025-09-20 02d6a517f7d4dac2d5271cefe421a628d838414b
ruoyi-admin/src/main/java/com/ruoyi/im/ImApiController.java
@@ -1,7 +1,9 @@
package com.ruoyi.im;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.im.comm.Result;
@@ -9,9 +11,12 @@
import com.ruoyi.im.dto.UpdateUserBusinessDto;
import com.ruoyi.im.service.ImApiServcie;
import com.ruoyi.im.dto.RegisterDto;
import com.ruoyi.im.util.SymmetricCryptoUtil;
import com.ruoyi.im.util.ValidatorUtil;
import com.ruoyi.system.domain.GroupWelcomeConfig;
import com.ruoyi.system.domain.IpBlacklist;
import com.ruoyi.system.domain.UserAccount;
import com.ruoyi.system.domain.vo.UserAccountUpdateVo;
import com.ruoyi.system.service.GroupWelcomeConfigService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.IpBlacklistService;
@@ -34,9 +39,7 @@
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.*;
@RestController
@RequestMapping("/im/api")
@@ -51,6 +54,8 @@
    @Autowired
    UserAccountService userAccountService;
    @Autowired
    GroupWelcomeConfigService groupWelcomeConfigService;
@@ -67,10 +72,61 @@
    @PostMapping("/register")
    public Result register(@Validated RegisterDto dto){
        try {
            // 验证手机号
            boolean isPhoneValid = ValidatorUtil.isValidPhone(dto.getAccount());
            if(!isPhoneValid){
                return Result.error("手机号格式不正确");
            }
            return imApiServcie.register(dto);
        }catch (Exception e){
            log.error("注册报错:",e);
            return Result.error("注册失败,请稍后再试!");
        } catch (RuntimeException e) {
            // 从异常消息中解析Result对象
            return JSON.parseObject(e.getMessage(), Result.class);
        }
    }
    /**
     * 获取二维码链接和邀请码
     */
    @GetMapping("/getUserCodeAndUrl")
    public Result getUserCodeAndUrl(@RequestParam("account") String account){
        try {
            GroupWelcomeConfig groupWelcomeConfig = groupWelcomeConfigService.getOne(new LambdaQueryWrapper<>(GroupWelcomeConfig.class)
                    .eq(GroupWelcomeConfig::getConfigurationName, "IM-BASICS").last(" limit 1"));
            UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper<UserAccount>().eq(UserAccount::getAccount, account));
            Map<String,String> map = new HashMap<>();
            map.put("url",ObjectUtil.isNotEmpty(groupWelcomeConfig.getCodeUrl()) ? groupWelcomeConfig.getCodeUrl() : "");
            map.put("code",userAccount.getInvitationCode());
            return Result.success(map);
        } catch (RuntimeException e) {
            // 从异常消息中解析Result对象
            return JSON.parseObject(e.getMessage(), Result.class);
        }
    }
    /**
     * 修改用户信息只有数据库
     * @return
     */
    @PostMapping("/updateUser")
    public Result updateUser(UserAccountUpdateVo vo){
        try {
            UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper<UserAccount>().eq(UserAccount::getAccount,vo.getAccountId()));
            if (StringUtils.isNotBlank(vo.getNickname())) {
                userAccount.setNickname(vo.getNickname());
            }
            if (StringUtils.isNotBlank(vo.getSignature())) {
                userAccount.setSignature(vo.getSignature());
            }
            userAccount.setUpdateTime(new Date());
            userAccountService.updateById(userAccount);
            return Result.success();
        } catch (RuntimeException e) {
            e.printStackTrace();
            log.error("修改用户数据库信息失败");
            return Result.error("修改失败!");
        }
    }
@@ -93,6 +149,7 @@
                return Result.error("账号不存在!");
            }
            userAccount.setLoginIp(clientIp);
            userAccount.setLoginTime(new Date());
            userAccountService.updateById(userAccount);
            return Result.success();
        }catch (Exception e){