Commit 45a0897d by Future

非sdk

parent 01e55a5d
...@@ -5,7 +5,7 @@ import cn.hutool.crypto.digest.MD5; ...@@ -5,7 +5,7 @@ import cn.hutool.crypto.digest.MD5;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.enums.PlatformEunm; import com.wecloud.im.enums.PlatformEnum;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.ws.utils.RedisUtils; import com.wecloud.im.ws.utils.RedisUtils;
...@@ -85,7 +85,7 @@ public class LoginTest { ...@@ -85,7 +85,7 @@ public class LoginTest {
} }
// 生成token // 生成token
String generateToken = JwtUtil.generateToken(clientId, appKey, imApplication.getAppSecret(), Duration.ofDays(99999), PlatformEunm.WEB.getCode()); String generateToken = JwtUtil.generateToken(clientId, appKey, imApplication.getAppSecret(), Duration.ofDays(99999), PlatformEnum.WEB.getCode());
// 保存redis // 保存redis
redisTemplate.opsForValue().set("client:" + imApplication.getAppKey() + ":" + clientId, generateToken); redisTemplate.opsForValue().set("client:" + imApplication.getAppKey() + ":" + clientId, generateToken);
......
...@@ -61,4 +61,12 @@ public class ImClient extends BaseEntity { ...@@ -61,4 +61,12 @@ public class ImClient extends BaseEntity {
private String headPortrait; private String headPortrait;
@ApiModelProperty("主昵称") @ApiModelProperty("主昵称")
private String nickname; private String nickname;
/**
* 客户端平台
* @see com.wecloud.im.enums.PlatformEnum
*/
@NotNull(message = "平台不可为空")
@ApiModelProperty("客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs")
private Integer platform;
} }
...@@ -2,7 +2,7 @@ package com.wecloud.im.enums; ...@@ -2,7 +2,7 @@ package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum; import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
public enum PlatformEunm implements BaseEnum { public enum PlatformEnum implements BaseEnum {
WEB(1, "web端"), WEB(1, "web端"),
ANDROID(2, "安卓端"), ANDROID(2, "安卓端"),
...@@ -13,7 +13,7 @@ public enum PlatformEunm implements BaseEnum { ...@@ -13,7 +13,7 @@ public enum PlatformEunm implements BaseEnum {
private final Integer code; private final Integer code;
private final String desc; private final String desc;
PlatformEunm(Integer code, String desc) { PlatformEnum(Integer code, String desc) {
this.code = code; this.code = code;
this.desc = desc; this.desc = desc;
} }
......
package com.wecloud.im.param.add;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* @Author wenzhida
* @Date 2022/2/24 18:46
* @Description 修改头像昵称
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImClientNicknameUpdate")
public class ImClientNicknameUpdate extends BaseEntity {
private static final long serialVersionUID = -921593100534519109L;
@ApiModelProperty("主昵称")
private String nickname;
}
...@@ -10,6 +10,7 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd; ...@@ -10,6 +10,7 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAdd; import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate; import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
import com.wecloud.im.param.add.ImClientNicknameAdd; import com.wecloud.im.param.add.ImClientNicknameAdd;
import com.wecloud.im.param.add.ImClientNicknameUpdate;
import com.wecloud.im.vo.ClientInfoVo; import com.wecloud.im.vo.ClientInfoVo;
import com.wecloud.im.vo.GetInfoListVo; import com.wecloud.im.vo.GetInfoListVo;
import com.wecloud.im.vo.MyInfoVo; import com.wecloud.im.vo.MyInfoVo;
...@@ -34,7 +35,19 @@ public interface ImClientService extends BaseService<ImClient> { ...@@ -34,7 +35,19 @@ public interface ImClientService extends BaseService<ImClient> {
*/ */
MyInfoVo getMyInfo(); MyInfoVo getMyInfo();
boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd) throws Exception; /**
* 更新头像
* @param imClientHeadPortraitAdd
* @return
*/
boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd);
/**
* 修改昵称
* @param imClientNicknameUpdate
* @return
*/
boolean updateNickname(ImClientNicknameUpdate imClientNicknameUpdate);
boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate); boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate);
......
...@@ -23,6 +23,7 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd; ...@@ -23,6 +23,7 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAdd; import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate; import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
import com.wecloud.im.param.add.ImClientNicknameAdd; import com.wecloud.im.param.add.ImClientNicknameAdd;
import com.wecloud.im.param.add.ImClientNicknameUpdate;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientBlacklistService; import com.wecloud.im.service.ImClientBlacklistService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
...@@ -62,6 +63,7 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien ...@@ -62,6 +63,7 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Autowired @Autowired
private ImClientMapper imClientMapper; private ImClientMapper imClientMapper;
@Autowired @Autowired
private ImApplicationService imApplicationService; private ImApplicationService imApplicationService;
...@@ -85,15 +87,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien ...@@ -85,15 +87,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd) throws Exception { public boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd) {
ImClient curentClient = getCurentClient(); ImClient curentClient = getCurentClient();
// shiro线程中获取当前token
JwtToken curentJwtToken = JwtUtil.getCurentJwtToken();
// 根据appKey查询appid
// ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
curentClient.setHeadPortrait(imClientHeadPortraitAdd.getHeadPortrait()); curentClient.setHeadPortrait(imClientHeadPortraitAdd.getHeadPortrait());
imClientMapper.updateById(curentClient); imClientMapper.updateById(curentClient);
...@@ -104,15 +99,20 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien ...@@ -104,15 +99,20 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
} }
@Override @Override
public boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate) { public boolean updateNickname(ImClientNicknameUpdate imClientNicknameUpdate) {
ImClient curentClient = getCurentClient(); ImClient curentClient = getCurentClient();
curentClient.setNickname(imClientNicknameUpdate.getNickname());
imClientMapper.updateById(curentClient);
// shiro线程中获取当前token // 清除client的redis缓存
JwtToken curentJwtToken = JwtUtil.getCurentJwtToken(); deleteCacheImClient(curentClient.getFkAppid(), curentClient.getClientId());
// 根据appKey查询appid
// ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
return true;
}
@Override
public boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate) {
ImClient curentClient = getCurentClient();
curentClient.setHeadPortrait(imClientHeadPortraitAndNicknameUpdate.getHeadPortrait()); curentClient.setHeadPortrait(imClientHeadPortraitAndNicknameUpdate.getHeadPortrait());
curentClient.setNickname(imClientHeadPortraitAndNicknameUpdate.getNickname()); curentClient.setNickname(imClientHeadPortraitAndNicknameUpdate.getNickname());
imClientMapper.updateById(curentClient); imClientMapper.updateById(curentClient);
......
...@@ -30,4 +30,18 @@ public class UserLoginParam implements Serializable { ...@@ -30,4 +30,18 @@ public class UserLoginParam implements Serializable {
@ApiModelProperty("密码") @ApiModelProperty("密码")
private String password; private String password;
@NotNull(message = "appKey不可为空")
@ApiModelProperty("appKey")
private String appKey;
/**
* 客户端平台
* @see com.wecloud.im.enums.PlatformEnum
*/
@NotNull(message = "平台不可为空")
@ApiModelProperty("客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs")
private Integer platform;
@ApiModelProperty("设备推送token")
private String deviceToken;
} }
package com.wecloud.im.user.service; package com.wecloud.im.user.service;
import cn.hutool.core.lang.Snowflake;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.enums.FriendStateEnum; import com.wecloud.im.enums.FriendStateEnum;
import com.wecloud.im.enums.RelationEnum; import com.wecloud.im.enums.RelationEnum;
import com.wecloud.im.enums.VerifySceneEnum; import com.wecloud.im.enums.VerifySceneEnum;
import com.wecloud.im.friend.entity.ImFriend; import com.wecloud.im.friend.entity.ImFriend;
import com.wecloud.im.friend.service.ImFriendService; import com.wecloud.im.friend.service.ImFriendService;
import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.param.add.ImClientNicknameUpdate;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientBlacklistService; import com.wecloud.im.service.ImClientBlacklistService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.user.constant.RedisKeyPrefixConstant; import com.wecloud.im.user.constant.RedisKeyPrefixConstant;
...@@ -34,6 +39,7 @@ import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; ...@@ -34,6 +39,7 @@ import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
...@@ -50,6 +56,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -50,6 +56,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
private RedisUtils redisUtils; private RedisUtils redisUtils;
@Autowired @Autowired
private ImApplicationService imApplicationService;
@Autowired
private ImClientService imClientService; private ImClientService imClientService;
@Autowired @Autowired
...@@ -58,6 +67,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -58,6 +67,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
@Autowired @Autowired
private ImClientBlacklistService imClientBlacklistService; private ImClientBlacklistService imClientBlacklistService;
/** /**
* 校验手机号码是否可使用 * 校验手机号码是否可使用
* @param param * @param param
...@@ -99,6 +109,11 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -99,6 +109,11 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
* @param param * @param param
*/ */
public LoginSuccessDto loginUser(UserLoginParam param) { public LoginSuccessDto loginUser(UserLoginParam param) {
// 根据appKey从数据库查询密钥
ImApplication imApplication = imApplicationService.getCacheAppByAppKey(param.getAppKey());
if (imApplication == null) {
throw new BusinessException("查无应用信息");
}
User user = this.getOne(new QueryWrapper<User>().lambda() User user = this.getOne(new QueryWrapper<User>().lambda()
.eq(User::getPhone, param.getPhone())); .eq(User::getPhone, param.getPhone()));
if (user == null) { if (user == null) {
...@@ -107,6 +122,26 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -107,6 +122,26 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
if (!param.getPassword().equals(AesUtil.decrypt(user.getPassword()))) { if (!param.getPassword().equals(AesUtil.decrypt(user.getPassword()))) {
throw new BusinessException("账户或密码错误"); throw new BusinessException("账户或密码错误");
} }
// 判断client是否存在
ImClient imClient = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
.eq(ImClient::getFkAppid, imApplication.getId())
.eq(ImClient::getPlatform, param.getPlatform())
.eq(ImClient::getClientId, user.getId()));
if (imClient == null) {
imClient = new ImClient();
imClient.setId(new Snowflake(1L, 1L).nextId());
imClient.setFkAppid(imApplication.getId());
imClient.setClientId(user.getId().toString());
imClient.setHeadPortrait(user.getHeadPortrait());
imClient.setNickname(user.getNickname());
imClient.setPlatform(param.getPlatform());
imClientService.save(imClient);
} else {
imClient.setPlatform(param.getPlatform());
imClientService.updateById(imClient);
}
LoginSuccessDto loginSuccessDto = new LoginSuccessDto(); LoginSuccessDto loginSuccessDto = new LoginSuccessDto();
BeanUtils.copyProperties(user, loginSuccessDto); BeanUtils.copyProperties(user, loginSuccessDto);
loginSuccessDto.setUserId(user.getId().toString()); loginSuccessDto.setUserId(user.getId().toString());
...@@ -176,7 +211,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -176,7 +211,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
*/ */
public UserBaseDto findUser(FindUserParam param) { public UserBaseDto findUser(FindUserParam param) {
User user = this.getOne(new QueryWrapper<User>().lambda() User user = this.getOne(new QueryWrapper<User>().lambda()
.eq(User::getPhone, param.getQueryStr())); .eq(User::getPhone, param.getQueryStr())
.or()
.eq(User::getIdNumber, param.getQueryStr()));
if (user == null) { if (user == null) {
throw new BusinessException("账号不存在"); throw new BusinessException("账号不存在");
} }
...@@ -229,6 +266,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -229,6 +266,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
* 修改头像 * 修改头像
* @param param * @param param
*/ */
@Transactional(rollbackFor = Exception.class)
public void modifyHeadPortrait(ModifyHeadPortraitParam param) { public void modifyHeadPortrait(ModifyHeadPortraitParam param) {
User user = this.getById(param.getUserId()); User user = this.getById(param.getUserId());
if (user == null) { if (user == null) {
...@@ -236,12 +274,16 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -236,12 +274,16 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
} }
user.setHeadPortrait(param.getHeadPortrait()); user.setHeadPortrait(param.getHeadPortrait());
this.updateById(user); this.updateById(user);
ImClientHeadPortraitAdd imClientHeadPortraitAdd = new ImClientHeadPortraitAdd();
imClientHeadPortraitAdd.setHeadPortrait(param.getHeadPortrait());
imClientService.updateHeadPortrait(imClientHeadPortraitAdd);
} }
/** /**
* 修改昵称 * 修改昵称
* @param param * @param param
*/ */
@Transactional(rollbackFor = Exception.class)
public void modifyNickname(ModifyNicknameParam param) { public void modifyNickname(ModifyNicknameParam param) {
User user = this.getById(param.getUserId()); User user = this.getById(param.getUserId());
if (user == null) { if (user == null) {
...@@ -249,6 +291,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -249,6 +291,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
} }
user.setNickname(param.getNickname()); user.setNickname(param.getNickname());
this.updateById(user); this.updateById(user);
ImClientNicknameUpdate imClientNicknameUpdate = new ImClientNicknameUpdate();
imClientNicknameUpdate.setNickname(param.getNickname());
imClientService.updateNickname(imClientNicknameUpdate);
} }
/** /**
...@@ -261,7 +306,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -261,7 +306,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
throw new BusinessException("查无用户"); throw new BusinessException("查无用户");
} }
User userByLando = this.getByLandouNo(param.getLandouNo()); User userByLando = this.getByLandouNo(param.getLandouNo());
if (userByLando == null) { if (userByLando != null) {
throw new BusinessException("该蓝豆号已被使用,请更换"); throw new BusinessException("该蓝豆号已被使用,请更换");
} }
user.setIdNumber(param.getLandouNo()); user.setIdNumber(param.getLandouNo());
...@@ -319,5 +364,4 @@ public class UserService extends BaseServiceImpl<UserMapper, User> { ...@@ -319,5 +364,4 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
} while (true); } while (true);
return landouNo; return landouNo;
} }
} }
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<!-- 通用查询结果列 --> <!-- 通用查询结果列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id id
, create_time, update_time, fk_appid, fk_client_id_prevent, fk_client_id_be_prevent , create_time, update_time, fk_appid, client_id_prevent, client_id_be_prevent
</sql> </sql>
<select id="getImClientBlacklistById" resultType="com.wecloud.im.param.ImClientBlacklistQueryVo"> <select id="getImClientBlacklistById" resultType="com.wecloud.im.param.ImClientBlacklistQueryVo">
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
<select id="getImClientBlacklistPageList" resultType="com.wecloud.im.param.ImClientBlacklistQueryVo"> <select id="getImClientBlacklistPageList" resultType="com.wecloud.im.param.ImClientBlacklistQueryVo">
SELECT im_client.client_id AS clientIdBePrevent SELECT im_client.client_id AS clientIdBePrevent
FROM im_client_blacklist FROM im_client_blacklist
INNER JOIN im_client ON im_client.id = im_client_blacklist.fk_client_id_be_prevent INNER JOIN im_client ON im_client.id = im_client_blacklist.client_id_be_prevent
WHERE im_client_blacklist.fk_client_id_prevent = #{clientId} WHERE im_client_blacklist.client_id_prevent = #{clientId}
ORDER BY im_client_blacklist.create_time DESC ORDER BY im_client_blacklist.create_time DESC
</select> </select>
......
-- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本 -- 在feature-cluster 2021年12月22日之后,需要执行的的sql增量脚本
...@@ -78,6 +78,8 @@ ALTER TABLE im_conversation_members ADD COLUMN `client_id` varchar(200) DEFAULT ...@@ -78,6 +78,8 @@ ALTER TABLE im_conversation_members ADD COLUMN `client_id` varchar(200) DEFAULT
ALTER TABLE im_client_blacklist CHANGE fk_client_id_prevent client_id_prevent varchar(32) DEFAULT NULL COMMENT '拉黑者'; ALTER TABLE im_client_blacklist CHANGE fk_client_id_prevent client_id_prevent varchar(32) DEFAULT NULL COMMENT '拉黑者';
ALTER TABLE im_client_blacklist CHANGE fk_client_id_be_prevent client_id_be_prevent varchar(32) DEFAULT NULL COMMENT '被拉黑'; ALTER TABLE im_client_blacklist CHANGE fk_client_id_be_prevent client_id_be_prevent varchar(32) DEFAULT NULL COMMENT '被拉黑';
ALTER TABLE im_client ADD COLUMN `platform` int DEFAULT NULL COMMENT '平台编码:客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs';
CREATE TABLE `im_user` CREATE TABLE `im_user`
( (
`id` bigint NOT NULL COMMENT '主键id', `id` bigint NOT NULL COMMENT '主键id',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment