Commit 45a0897d by Future

非sdk

parent 01e55a5d
......@@ -5,7 +5,7 @@ import cn.hutool.crypto.digest.MD5;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.im.entity.ImApplication;
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.ImClientService;
import com.wecloud.im.ws.utils.RedisUtils;
......@@ -85,7 +85,7 @@ public class LoginTest {
}
// 生成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
redisTemplate.opsForValue().set("client:" + imApplication.getAppKey() + ":" + clientId, generateToken);
......
......@@ -61,4 +61,12 @@ public class ImClient extends BaseEntity {
private String headPortrait;
@ApiModelProperty("主昵称")
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;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
public enum PlatformEunm implements BaseEnum {
public enum PlatformEnum implements BaseEnum {
WEB(1, "web端"),
ANDROID(2, "安卓端"),
......@@ -13,7 +13,7 @@ public enum PlatformEunm implements BaseEnum {
private final Integer code;
private final String desc;
PlatformEunm(Integer code, String desc) {
PlatformEnum(Integer code, String desc) {
this.code = code;
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;
import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
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.GetInfoListVo;
import com.wecloud.im.vo.MyInfoVo;
......@@ -34,7 +35,19 @@ public interface ImClientService extends BaseService<ImClient> {
*/
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);
......
......@@ -23,6 +23,7 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
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.ImClientBlacklistService;
import com.wecloud.im.service.ImClientService;
......@@ -62,6 +63,7 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Autowired
private ImClientMapper imClientMapper;
@Autowired
private ImApplicationService imApplicationService;
......@@ -85,15 +87,8 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd) throws Exception {
public boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd) {
ImClient curentClient = getCurentClient();
// shiro线程中获取当前token
JwtToken curentJwtToken = JwtUtil.getCurentJwtToken();
// 根据appKey查询appid
// ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
curentClient.setHeadPortrait(imClientHeadPortraitAdd.getHeadPortrait());
imClientMapper.updateById(curentClient);
......@@ -104,15 +99,20 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
}
@Override
public boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate) {
public boolean updateNickname(ImClientNicknameUpdate imClientNicknameUpdate) {
ImClient curentClient = getCurentClient();
curentClient.setNickname(imClientNicknameUpdate.getNickname());
imClientMapper.updateById(curentClient);
// shiro线程中获取当前token
JwtToken curentJwtToken = JwtUtil.getCurentJwtToken();
// 根据appKey查询appid
// ImApplication imApplication = imApplicationService.getOneByAppKey(curentJwtToken.getAppKey());
// 清除client的redis缓存
deleteCacheImClient(curentClient.getFkAppid(), curentClient.getClientId());
return true;
}
@Override
public boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate) {
ImClient curentClient = getCurentClient();
curentClient.setHeadPortrait(imClientHeadPortraitAndNicknameUpdate.getHeadPortrait());
curentClient.setNickname(imClientHeadPortraitAndNicknameUpdate.getNickname());
imClientMapper.updateById(curentClient);
......
......@@ -30,4 +30,18 @@ public class UserLoginParam implements Serializable {
@ApiModelProperty("密码")
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;
import cn.hutool.core.lang.Snowflake;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient;
import com.wecloud.im.enums.FriendStateEnum;
import com.wecloud.im.enums.RelationEnum;
import com.wecloud.im.enums.VerifySceneEnum;
import com.wecloud.im.friend.entity.ImFriend;
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.ImClientService;
import com.wecloud.im.user.constant.RedisKeyPrefixConstant;
......@@ -34,6 +39,7 @@ import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
......@@ -50,6 +56,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
private RedisUtils redisUtils;
@Autowired
private ImApplicationService imApplicationService;
@Autowired
private ImClientService imClientService;
@Autowired
......@@ -58,6 +67,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
@Autowired
private ImClientBlacklistService imClientBlacklistService;
/**
* 校验手机号码是否可使用
* @param param
......@@ -99,6 +109,11 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
* @param 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()
.eq(User::getPhone, param.getPhone()));
if (user == null) {
......@@ -107,6 +122,26 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
if (!param.getPassword().equals(AesUtil.decrypt(user.getPassword()))) {
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();
BeanUtils.copyProperties(user, loginSuccessDto);
loginSuccessDto.setUserId(user.getId().toString());
......@@ -176,7 +211,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
*/
public UserBaseDto findUser(FindUserParam param) {
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) {
throw new BusinessException("账号不存在");
}
......@@ -229,6 +266,7 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
* 修改头像
* @param param
*/
@Transactional(rollbackFor = Exception.class)
public void modifyHeadPortrait(ModifyHeadPortraitParam param) {
User user = this.getById(param.getUserId());
if (user == null) {
......@@ -236,12 +274,16 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
}
user.setHeadPortrait(param.getHeadPortrait());
this.updateById(user);
ImClientHeadPortraitAdd imClientHeadPortraitAdd = new ImClientHeadPortraitAdd();
imClientHeadPortraitAdd.setHeadPortrait(param.getHeadPortrait());
imClientService.updateHeadPortrait(imClientHeadPortraitAdd);
}
/**
* 修改昵称
* @param param
*/
@Transactional(rollbackFor = Exception.class)
public void modifyNickname(ModifyNicknameParam param) {
User user = this.getById(param.getUserId());
if (user == null) {
......@@ -249,6 +291,9 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
}
user.setNickname(param.getNickname());
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> {
throw new BusinessException("查无用户");
}
User userByLando = this.getByLandouNo(param.getLandouNo());
if (userByLando == null) {
if (userByLando != null) {
throw new BusinessException("该蓝豆号已被使用,请更换");
}
user.setIdNumber(param.getLandouNo());
......@@ -319,5 +364,4 @@ public class UserService extends BaseServiceImpl<UserMapper, User> {
} while (true);
return landouNo;
}
}
......@@ -5,7 +5,7 @@
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
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>
<select id="getImClientBlacklistById" resultType="com.wecloud.im.param.ImClientBlacklistQueryVo">
......@@ -17,8 +17,8 @@
<select id="getImClientBlacklistPageList" resultType="com.wecloud.im.param.ImClientBlacklistQueryVo">
SELECT im_client.client_id AS clientIdBePrevent
FROM im_client_blacklist
INNER JOIN im_client ON im_client.id = im_client_blacklist.fk_client_id_be_prevent
WHERE im_client_blacklist.fk_client_id_prevent = #{clientId}
INNER JOIN im_client ON im_client.id = im_client_blacklist.client_id_be_prevent
WHERE im_client_blacklist.client_id_prevent = #{clientId}
ORDER BY im_client_blacklist.create_time DESC
</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
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 ADD COLUMN `platform` int DEFAULT NULL COMMENT '平台编码:客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs';
CREATE TABLE `im_user`
(
`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