@ -10,10 +10,14 @@ import com.ecell.internationalize.app.entity.dto.UserDto;
@@ -10,10 +10,14 @@ import com.ecell.internationalize.app.entity.dto.UserDto;
import com.ecell.internationalize.app.mapper.AddressBookAppMapper ;
import com.ecell.internationalize.app.mapper.UserDeviceBindAppMapper ;
import com.ecell.internationalize.app.mapper.UserMapper ;
import com.ecell.internationalize.app.service.UserDeviceBindService ;
import com.ecell.internationalize.app.service.UserService ;
import com.ecell.internationalize.common.core.constant.SecurityConstants ;
import com.ecell.internationalize.common.core.context.SecurityContextHolder ;
import com.ecell.internationalize.common.core.exception.ServiceException ;
import com.ecell.internationalize.common.core.utils.JwtUtils ;
import com.ecell.internationalize.common.core.utils.SpringUtils ;
import com.ecell.internationalize.common.core.utils.StringUtils ;
import com.ecell.internationalize.common.core.utils.uuid.IdUtils ;
import com.ecell.internationalize.common.core.utils.uuid.UUID ;
import com.ecell.internationalize.common.issue.constant.CommonConstant ;
@ -28,8 +32,10 @@ import org.springframework.stereotype.Service;
@@ -28,8 +32,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
import java.util.concurrent.TimeUnit ;
import java.util.stream.Collectors ;
/ * *
* < p >
@ -54,12 +60,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@@ -54,12 +60,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
private BindingDeviceImpl bindingDevice ;
private static final long EXPIRATION = 30 ;
public final static String APP_TOKEN_KEY = "app_tokens:" ;
@Override
@Transactional ( rollbackFor = Exception . class )
public int insertUser ( UserDto userDto ) {
//对密码进行加密
String encryptPassword = SecurityUtils . encryptPassword ( userDto . getPassword ( ) ) ;
User user = new User ( ) ;
User user = new User ( ) ;
String userId = UUID . randomUUID ( ) . toString ( true ) ;
user . setUserId ( userId ) ;
//默认姓名为邮箱
@ -69,18 +76,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@@ -69,18 +76,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
user . setUserAgent ( userDto . getUserAgent ( ) ) ;
// UserDeviceBindApp userDeviceBindApp = insertData(user);
// userDeviceBindAppMapper.insert(userDeviceBindApp);
return userMapper . insert ( user ) ;
return userMapper . insert ( user ) ;
}
/ * *
* token生成
*
* @param user
* @return int
* @Title : UserService
* @Author : liy
* @Date : 2022 / 8 / 17 15 : 03
* @return int
* @param user
* /
@Override
public Map < String , Object > createToken ( User user , String osName , String deviceToken , String packages , String version ) {
public Map < String , Object > createToken ( User user , String osName , String deviceToken , String packages , String version ) {
//修改登录机型
user . setUserAgent ( osName ) ;
userMapper . updateById ( user ) ;
@ -96,118 +105,228 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@@ -96,118 +105,228 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
// 接口返回信息
Map < String , Object > rspMap = new HashMap < > ( 16 ) ;
rspMap . put ( "Authorization" , user . getToken ( ) ) ;
rspMap . put ( "expires_in" , EXPIRATION ) ;
rspMap . put ( "expires_in" , EXPIRATION ) ;
rspMap . put ( "openid" , user . getUserId ( ) ) ;
System . out . println ( "成功返回登录信息:" + rspMap ) ;
System . out . println ( "成功返回登录信息:" + rspMap ) ;
//IOS deviceToken存入redis
if ( "iOS" . equals ( osName ) ) {
logger . info ( "iOS机型,获取IOS的token并存入redis:{}" , deviceToken ) ;
if ( null ! = deviceToken & & ! "" . equals ( deviceToken ) ) {
logger . info ( "iOS机型,获取IOS的token并存入redis:{}" , deviceToken ) ;
if ( "iOS" . equals ( osName ) ) {
logger . info ( "iOS机型,获取IOS的token并存入redis:{}" , deviceToken ) ;
if ( null ! = deviceToken & & ! "" . equals ( deviceToken ) ) {
logger . info ( "iOS机型,获取IOS的token并存入redis:{}" , deviceToken ) ;
redisService . setCacheMapValue ( user . getUserId ( ) , CommonConstant . DEVICE_TOKEN , deviceToken ) ;
} else {
} else {
logger . info ( "苹果手机拒绝接收通知,token存入空" ) ;
redisService . setCacheMapValue ( user . getUserId ( ) , CommonConstant . DEVICE_TOKEN , null ) ;
}
redisService . setCacheMapValue ( user . getUserId ( ) , CommonConstant . IOS_PACKAGE , packages ) ;
redisService . setCacheMapValue ( user . getUserId ( ) , CommonConstant . IOS_VERSION , version ) ;
redisService . setCacheMapValue ( user . getUserId ( ) , CommonConstant . IOS_PACKAGE , packages ) ;
redisService . setCacheMapValue ( user . getUserId ( ) , CommonConstant . IOS_VERSION , version ) ;
}
return rspMap ;
}
// @Override 20241227 废弃
// public UserVo queryUser(String userId, String imei) {
// String phone="";
// //查询到的用户信息
// UserVo userVo = userMapper.queryUser(userId);
// //查询用户与设备绑定信息,获取手机号
// LambdaQueryWrapper<UserDeviceBindApp> lambdaQueryWrapper=new LambdaQueryWrapper<>();
// lambdaQueryWrapper.eq(UserDeviceBindApp::getImei,imei);
// lambdaQueryWrapper.eq(UserDeviceBindApp::getUserId,userId);
// UserDeviceBindApp userDeviceBindApp = userDeviceBindAppMapper.selectOne(lambdaQueryWrapper);
// if (null != userDeviceBindApp){
// phone = userDeviceBindApp.getPhone();
// }
// userVo.setPhone(phone);
// userVo.setImei(imei);
// if (null == userVo.getName() || "".equals(userVo.getName())){
// userVo.setName(SecurityContextHolder.getUserName());
// }
// return userVo;
// }
// @Override 20241227 废弃
// public UserVo queryUser(String userId, String imei) {
// String phone = "";
// //查询到的用户信息
// UserVo userVo = userMapper.queryUser(userId);
// //查询用户与设备绑定信息,获取手机号
// LambdaQueryWrapper<UserDeviceBindApp> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// lambdaQueryWrapper.eq(UserDeviceBindApp::getImei, imei);
// lambdaQueryWrapper.eq(UserDeviceBindApp::getUserId, userId);
// UserDeviceBindApp userDeviceBindApp = userDeviceBindAppMapper.selectOne(lambdaQueryWrapper);
// if (null != userDeviceBindApp) {
// phone = userDeviceBindApp.getPhone();
// }
// userVo.setPhone(phone);
// userVo.setImei(imei);
// if (null == userVo.getName() || "".equals(userVo.getName())) {
// userVo.setName(SecurityContextHolder.getUserName());
// }
// return userVo;
// }
@Override
public UserVo queryUser ( String userId , String imei ) {
String phone = "" ;
//查询到的用户信息
UserVo userVo = userMapper . queryUser ( userId ) ;
//查询用户与设备绑定信息,获取手机号
LambdaQueryWrapper < UserDeviceBindApp > lambdaQueryWrapper = new LambdaQueryWrapper < > ( ) ;
lambdaQueryWrapper . eq ( UserDeviceBindApp : : getImei , imei ) ;
lambdaQueryWrapper . eq ( UserDeviceBindApp : : getUserId , userId ) ;
UserDeviceBindApp userDeviceBindApp = userDeviceBindAppMapper . selectOne ( lambdaQueryWrapper ) ;
if ( null ! = userDeviceBindApp ) {
phone = userDeviceBindApp . getPhone ( ) ;
}
userVo . setPhone ( phone ) ;
userVo . setImei ( imei ) ;
if ( null = = userVo . getName ( ) | | "" . equals ( userVo . getName ( ) ) ) {
userVo . setName ( SecurityContextHolder . getUserName ( ) ) ;
}
return userVo ;
User user = userMapper . selectById ( userId ) ;
UserVo vo = new UserVo ( ) ;
vo . setImage ( user . getImage ( ) ) ;
vo . setName ( SecurityContextHolder . getUserName ( ) ) ;
vo . setPhone ( user . getPhone ( ) ) ;
return vo ;
}
// @Override 20241227 废弃
// @Transactional(rollbackFor = Exception.class)
// public int updateData(UpdateUserDto user) {
// //1.修改用户设备绑定表的手机号
// UserDeviceBindApp userDeviceBindApp = new UserDeviceBindApp();
// userDeviceBindApp.setPhone(user.getPhone());
// LambdaQueryWrapper<UserDeviceBindApp> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// lambdaQueryWrapper.eq(UserDeviceBindApp::getImei, user.getImei());
// lambdaQueryWrapper.eq(UserDeviceBindApp::getUserId, SecurityContextHolder.getStringUserId());
// userDeviceBindAppMapper.update(userDeviceBindApp, lambdaQueryWrapper);
// //2.修改通讯录的手机号
// AddressBookApp addressBookApp = new AddressBookApp();
// addressBookApp.setPhone(user.getPhone());
// LambdaQueryWrapper<AddressBookApp> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
// lambdaQueryWrapper1.eq(AddressBookApp::getImei, user.getImei());
// lambdaQueryWrapper1.eq(AddressBookApp::getUserId, SecurityContextHolder.getStringUserId());
// addressBookAppMapper.update(addressBookApp, lambdaQueryWrapper1);
// //3.修改用户表的信息
// User user1 = new User();
// user1.setUserId(SecurityContextHolder.getStringUserId());
// user1.setPhone(user.getPhone());
// user1.setName(user.getName());
// if (null != user.getImage()) {
// user1.setImage(user.getImage());
// }
// userMapper.updateById(user1);
// //若为管理员,中心号码下发
// UserDeviceBindApp deviceBindApp = userDeviceBindAppMapper.selectOne(lambdaQueryWrapper);
// if (null != deviceBindApp && "2".equals(deviceBindApp.getIdentity())) {
// BindingDeviceDto bindingDeviceDto = new BindingDeviceDto();
// bindingDeviceDto.setMy_phone(user.getPhone());
// bindingDeviceDto.setImei(user.getImei());
// bindingDevice.assembCenterPhone(bindingDeviceDto, deviceBindApp.getUserId());
// }
//
//
// return 1;
// }
@Override
@Transactional ( rollbackFor = Exception . class )
public int updateData ( UpdateUserDto user ) {
//1.修改用户设备绑定表的手机号
UserDeviceBindApp userDeviceBindApp = new UserDeviceBindApp ( ) ;
userDeviceBindApp . setPhone ( user . getPhone ( ) ) ;
LambdaQueryWrapper < UserDeviceBindApp > lambdaQueryWrapper = new LambdaQueryWrapper < > ( ) ;
lambdaQueryWrapper . eq ( UserDeviceBindApp : : getImei , user . getImei ( ) ) ;
lambdaQueryWrapper . eq ( UserDeviceBindApp : : getUserId , SecurityContextHolder . getStringUserId ( ) ) ;
userDeviceBindAppMapper . update ( userDeviceBindApp , lambdaQueryWrapper ) ;
//2.修改通讯录的手机号
AddressBookApp addressBookApp = new AddressBookApp ( ) ;
addressBookApp . setPhone ( user . getPhone ( ) ) ;
LambdaQueryWrapper < AddressBookApp > lambdaQueryWrapper1 = new LambdaQueryWrapper < > ( ) ;
lambdaQueryWrapper1 . eq ( AddressBookApp : : getImei , user . getImei ( ) ) ;
lambdaQueryWrapper1 . eq ( AddressBookApp : : getUserId , SecurityContextHolder . getStringUserId ( ) ) ;
addressBookAppMapper . update ( addressBookApp , lambdaQueryWrapper1 ) ;
public User updateData ( UpdateUserDto user ) {
String userId = SecurityContextHolder . getStringUserId ( ) ;
BindingDeviceImpl bindingDevice = SpringUtils . getBean ( BindingDeviceImpl . class ) ;
UserDeviceBindServiceImpl bean = SpringUtils . getBean ( UserDeviceBindServiceImpl . class ) ;
if ( StringUtils . isNotEmpty ( user . getPhone ( ) ) ) {
LambdaQueryWrapper < UserDeviceBindApp > Wrapper = new LambdaQueryWrapper < > ( ) ;
Wrapper . eq ( UserDeviceBindApp : : getUserId , SecurityContextHolder . getStringUserId ( ) ) ;
Integer i = bean . getBaseMapper ( ) . selectCount ( Wrapper ) ;
if ( i > 0 ) {
// 查询用户是否使用其余绑定该设备用户的手机号码进行绑定设备
UserDeviceBindApp userDeviceBindApp = bindingDevice . queryByPhone ( userId , user . getPhone ( ) ) ;
if ( StringUtils . isNotNull ( userDeviceBindApp ) ) {
throw new ServiceException ( "messagesIsPhoneBound" ) ;
}
LambdaQueryWrapper < UserDeviceBindApp > QueryWrapper = new LambdaQueryWrapper < > ( ) ;
QueryWrapper . eq ( UserDeviceBindApp : : getUserId , SecurityContextHolder . getStringUserId ( ) ) ;
QueryWrapper . eq ( UserDeviceBindApp : : getBindStatus , CommonConstant . AUDIT_STATUS_ONE ) ;
List < UserDeviceBindApp > userDeviceBindApps = userDeviceBindAppMapper . selectList ( QueryWrapper ) ;
if ( StringUtils . isNotNull ( userDeviceBindApps ) & & userDeviceBindApps . size ( ) > 0 ) {
List < UserDeviceBindApp > list = userDeviceBindApps . stream ( ) . map ( s - > s . setPhone ( user . getPhone ( ) ) ) . collect ( Collectors . toList ( ) ) ;
//修改绑定表的手机号
bean . updateBatchById ( list ) ;
//2.修改通讯录的手机号
AddressBookApp addressBookApp = new AddressBookApp ( ) ;
addressBookApp . setPhone ( user . getPhone ( ) ) ;
LambdaQueryWrapper < AddressBookApp > lambdaQueryWrapper1 = new LambdaQueryWrapper < > ( ) ;
lambdaQueryWrapper1 . eq ( AddressBookApp : : getUserId , SecurityContextHolder . getStringUserId ( ) ) ;
List < AddressBookApp > addressBookApps = addressBookAppMapper . selectList ( lambdaQueryWrapper1 ) ;
if ( StringUtils . isNotNull ( addressBookApps ) & & addressBookApps . size ( ) > 0 ) {
List < AddressBookApp > list1 = addressBookApps . stream ( ) . map ( s - > s . setPhone ( user . getPhone ( ) ) ) . collect ( Collectors . toList ( ) ) ;
AddressBookAppServiceImpl bean1 = SpringUtils . getBean ( AddressBookAppServiceImpl . class ) ;
bean1 . updateBatchById ( list1 ) ;
}
//若为管理员,中心号码下发
if ( StringUtils . isNotNull ( userDeviceBindApps ) & & userDeviceBindApps . size ( ) > 0 ) {
userDeviceBindApps . forEach ( s - > {
if ( null ! = s & & "2" . equals ( s . getIdentity ( ) ) ) {
BindingDeviceDto bindingDeviceDto = new BindingDeviceDto ( ) ;
bindingDeviceDto . setMy_phone ( user . getPhone ( ) ) ;
bindingDeviceDto . setImei ( user . getImei ( ) ) ;
bindingDevice . assembCenterPhone ( bindingDeviceDto , s . getUserId ( ) ) ;
}
} ) ;
}
}
}
}
//3.修改用户表的信息
User user1 = new User ( ) ;
User user1 = new User ( ) ;
user1 . setUserId ( SecurityContextHolder . getStringUserId ( ) ) ;
user1 . setPhone ( user . getPhone ( ) ) ;
user1 . setName ( user . getName ( ) ) ;
if ( null ! = user . getImage ( ) ) {
if ( StringUtils . isNotEmpty ( user . getPhone ( ) ) ) {
user1 . setPhone ( user . getPhone ( ) ) ;
}
if ( StringUtils . isNotEmpty ( user . getName ( ) ) ) {
user1 . setName ( user . getName ( ) ) ;
}
if ( null ! = user . getImage ( ) ) {
user1 . setImage ( user . getImage ( ) ) ;
}
userMapper . updateById ( user1 ) ;
//若为管理员,中心号码下发
UserDeviceBindApp deviceBindApp = userDeviceBindAppMapper . selectOne ( lambdaQueryWrapper ) ;
if ( null ! = deviceBindApp & & "2" . equals ( deviceBindApp . getIdentity ( ) ) ) {
BindingDeviceDto bindingDeviceDto = new BindingDeviceDto ( ) ;
bindingDeviceDto . setMy_phone ( user . getPhone ( ) ) ;
bindingDeviceDto . setImei ( user . getImei ( ) ) ;
bindingDevice . assembCenterPhone ( bindingDeviceDto , deviceBindApp . getUserId ( ) ) ;
}
return 1 ;
return user1 ;
}
@Override
public void getSystemToken ( String type , String token ) {
String userId = SecurityContextHolder . getStringUserId ( ) ;
if ( "HUAWEI" . equals ( type ) ) {
redisService . setCacheObject ( "HW:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "HW" ) ;
}
else if ( "HONOR" . equals ( type ) ) {
redisService . setCacheObject ( "HW:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "HW" ) ;
}
else if ( "Xiaomi" . equals ( type ) ) {
redisService . setCacheObject ( "XM:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "XM" ) ;
}
else if ( "VIVO" . equals ( type ) ) {
redisService . setCacheObject ( "VI:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "VI" ) ;
}
else if ( "realme" . equals ( type ) ) {
redisService . setCacheObject ( "OP:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "OP" ) ;
}
else if ( "OPPO" . equals ( type ) ) {
redisService . setCacheObject ( "OP:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "OP" ) ;
}
else {
redisService . setCacheObject ( "OT:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "OT" ) ;
String userId = SecurityContextHolder . getStringUserId ( ) ;
if ( "HUAWEI" . equals ( type ) ) {
redisService . setCacheObject ( "HW:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "HW" ) ;
} else if ( "HONOR" . equals ( type ) ) {
redisService . setCacheObject ( "HW:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "HW" ) ;
} else if ( "Xiaomi" . equals ( type ) ) {
redisService . setCacheObject ( "XM:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "XM" ) ;
} else if ( "VIVO" . equals ( type ) ) {
redisService . setCacheObject ( "VI:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "VI" ) ;
} else if ( "realme" . equals ( type ) ) {
redisService . setCacheObject ( "OP:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "OP" ) ;
} else if ( "OPPO" . equals ( type ) ) {
redisService . setCacheObject ( "OP:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "OP" ) ;
} else {
redisService . setCacheObject ( "OT:" + userId , token ) ;
redisService . setCacheObject ( CommonConstant . ANDROID_AGENT + userId , "OT" ) ;
}
}
/ * *
* App 刷新令牌有效期
*
* @param user 登录信息
* /
public void refreshToken ( User user ) {
@ -215,15 +334,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@@ -215,15 +334,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
String userKey = getTokenKey ( user . getToken ( ) ) ;
redisService . setCacheObject ( userKey , user , EXPIRATION , TimeUnit . DAYS ) ;
//终端只允许一台设备登录
String redisUserKey = "user_keys:" + user . getUserEmail ( ) ;
redisService . setCacheObject ( redisUserKey , user . getToken ( ) , EXPIRATION , TimeUnit . DAYS ) ;
String redisUserKey = "user_keys:" + user . getUserEmail ( ) ;
redisService . setCacheObject ( redisUserKey , user . getToken ( ) , EXPIRATION , TimeUnit . DAYS ) ;
}
private String getTokenKey ( String token ) {
return APP_TOKEN_KEY + token ;
}
private UserDeviceBindApp insertData ( User user ) {
UserDeviceBindApp userDeviceBindApp = new UserDeviceBindApp ( ) ;
private UserDeviceBindApp insertData ( User user ) {
UserDeviceBindApp userDeviceBindApp = new UserDeviceBindApp ( ) ;
userDeviceBindApp . setId ( UUID . randomUUID ( ) . toString ( true ) ) ;
userDeviceBindApp . setUserId ( user . getUserId ( ) ) ;
userDeviceBindApp . setUserEmail ( user . getUserEmail ( ) ) ;