package com.panzhihua.service_user.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.panzhihua.common.constants.UserConstants;
|
import com.panzhihua.common.model.vos.LoginUserInfoVO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.partybuilding.ActivityManagerVO;
|
import com.panzhihua.common.model.vos.user.ChangePasswordVO;
|
import com.panzhihua.service_user.dao.RoleDAO;
|
import com.panzhihua.service_user.dao.UserDao;
|
import com.panzhihua.service_user.model.dos.SysRoleDO;
|
import com.panzhihua.service_user.model.dos.SysUserDO;
|
import com.panzhihua.service_user.service.UserService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.ObjectUtils;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
/**
|
* @program: springcloud_k8s_panzhihuazhihuishequ
|
* @description: 用户
|
* @author: huang.hongfa weixin hhf9596 qq 959656820
|
* @create: 2020-11-24 09:13
|
**/
|
@Service
|
public class UserServiceImpl implements UserService {
|
@Resource
|
private UserDao userDao;
|
@Resource
|
private RoleDAO roleDAO;
|
|
/**
|
* 小程序微信用户信息更新
|
*
|
* @param openid 小程序唯一ID
|
* @param sessionKey 会话密钥
|
* @param unionid 用户在开放平台的唯一标识符
|
* @return token
|
*/
|
@Override
|
public R updateInsertUser(String openid, String sessionKey, String unionid) {
|
SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getOpenid, openid));
|
boolean empty = ObjectUtils.isEmpty(sysUserDO);
|
int num = 0;
|
if (empty) {
|
SysUserDO sysUserDO1 = new SysUserDO();
|
Date date = new Date();
|
String encode = new BCryptPasswordEncoder().encode(UserConstants.PASSWORD);
|
sysUserDO1.setOpenid(openid);
|
sysUserDO1.setUnionid(unionid);
|
sysUserDO1.setSessionKey(sessionKey);
|
sysUserDO1.setCreateTime(date);
|
sysUserDO1.setLastLoginTime(date);
|
sysUserDO1.setPassword(encode);
|
sysUserDO1.setType(1);
|
num = userDao.insert(sysUserDO1);
|
} else {
|
String encode = new BCryptPasswordEncoder().encode(UserConstants.PASSWORD);
|
sysUserDO.setUnionid(unionid);
|
sysUserDO.setSessionKey(sessionKey);
|
sysUserDO.setPassword(encode);
|
sysUserDO.setType(1);
|
num = userDao.updateById(sysUserDO);
|
}
|
if (num > 0) {
|
return R.ok();
|
} else {
|
return R.fail("登录失败");
|
}
|
}
|
|
/**
|
* 维护小程序用户基本信息 头像 昵称 性别
|
*
|
* @param userId 数据库用户ID
|
* @param nickName 昵称
|
* @param gender 性别
|
* @param avatarUrl 头像
|
* @return 维护结果
|
*/
|
@Override
|
public R updateUserWeiXinInfo(Long userId, String nickName, int gender, String avatarUrl) {
|
SysUserDO sysUserDO = new SysUserDO();
|
sysUserDO.setSex(gender);
|
sysUserDO.setNickName(nickName);
|
sysUserDO.setImageUrl(avatarUrl);
|
sysUserDO.setUserId(userId);
|
int i = userDao.updateById(sysUserDO);
|
if (i > 0) {
|
return R.ok();
|
} else {
|
return R.fail("维护微信基本信息失败");
|
}
|
}
|
|
/**
|
* 维护微信用户手机号
|
*
|
* @param userId 数据库ID
|
* @param purePhoneNumber 没有区号的手机号
|
* @return 维护结果
|
*/
|
@Override
|
public R updateUserWeiXinPhone(Long userId, String purePhoneNumber) {
|
SysUserDO sysUserDO = new SysUserDO();
|
sysUserDO.setPhone(purePhoneNumber);
|
sysUserDO.setUserId(userId);
|
int i = userDao.updateById(sysUserDO);
|
if (i > 0) {
|
return R.ok();
|
} else {
|
return R.fail("维护微信手机号失败");
|
}
|
}
|
|
/**
|
* 认证中心获取平台用户信息
|
*
|
* @param name 登录账户
|
* @param type 用户类型 用户类型 1 小程序 2 运营平台 3 社区平台
|
* @return 用户基本信息、角色
|
*/
|
@Override
|
public R<LoginUserInfoVO> getUserInfo(String name, int type) {
|
SysUserDO sysUserDO = null;
|
if (1 == type) {
|
sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type).eq(SysUserDO::getOpenid, name));
|
} else {
|
LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type);
|
wrapper.and(sysUserDOLambdaQueryWrapper ->sysUserDOLambdaQueryWrapper .eq(SysUserDO::getAccount, name).or().eq(SysUserDO::getPhone, name));
|
sysUserDO = userDao.selectOne(wrapper);
|
}
|
boolean empty = ObjectUtils.isEmpty(sysUserDO);
|
if (empty) {
|
return R.fail();
|
}
|
LoginUserInfoVO loginUserInfoVO=new LoginUserInfoVO();
|
loginUserInfoVO.setUserId(sysUserDO.getUserId());
|
loginUserInfoVO.setName(sysUserDO.getName());
|
loginUserInfoVO.setPassword(sysUserDO.getPassword());
|
loginUserInfoVO.setStatus(sysUserDO.getStatus());
|
loginUserInfoVO.setAccount(name);
|
loginUserInfoVO.setType(sysUserDO.getType());
|
List<SysRoleDO> roleDOList=roleDAO.selectByUserId(sysUserDO.getUserId());
|
Set<String> set=new HashSet<>();
|
if (!ObjectUtils.isEmpty(roleDOList)) {
|
roleDOList.forEach(sysRoleDO -> {
|
set.add(sysRoleDO.getRoleKey());
|
});
|
}
|
return R.ok(loginUserInfoVO);
|
}
|
|
/**
|
* 三端获取用户信息
|
*
|
* @param userId 用户ID
|
* @return 用户基本信息、角色
|
*/
|
@Override
|
public R<LoginUserInfoVO> getUserInfo(String userId) {
|
SysUserDO sysUserDO = userDao.selectById(userId);
|
boolean empty = ObjectUtils.isEmpty(sysUserDO);
|
if (empty) {
|
return R.fail();
|
}
|
LoginUserInfoVO loginUserInfoVO=new LoginUserInfoVO();
|
BeanUtils.copyProperties(sysUserDO,loginUserInfoVO);
|
List<SysRoleDO> roleDOList=roleDAO.selectByUserId(sysUserDO.getUserId());
|
Set<String> set=new HashSet<>();
|
if (!ObjectUtils.isEmpty(roleDOList)) {
|
roleDOList.forEach(sysRoleDO -> {
|
set.add(sysRoleDO.getRoleKey());
|
});
|
loginUserInfoVO.setRoles(set);
|
}
|
return R.ok(loginUserInfoVO);
|
}
|
|
/**
|
* 修改用户登录密码
|
*
|
* @param changePasswordVO 新密码
|
* @return 修改结果
|
*/
|
@Override
|
public R changePassword(ChangePasswordVO changePasswordVO) {
|
Long userId = changePasswordVO.getUserId();
|
String newPassword = changePasswordVO.getNewPassword();
|
SysUserDO sysUserDO=new SysUserDO();
|
sysUserDO.setUserId(userId);
|
String encode = new BCryptPasswordEncoder().encode(newPassword);
|
sysUserDO.setPassword(encode);
|
int update = userDao.updateById(sysUserDO);
|
if (update>0) {
|
return R.ok();
|
}
|
return R.fail();
|
}
|
|
/**
|
* 某社区后台人员查询
|
*
|
* @param param 名字
|
* @param communityId 社区id
|
* @return 人员集合
|
*/
|
@Override
|
public R listActivityManager(String param, Long communityId) {
|
LambdaQueryWrapper<SysUserDO> queryWrapper=new LambdaQueryWrapper<>();
|
List<ActivityManagerVO> activityManagerVOS=new ArrayList<>();
|
queryWrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getCommunityId, communityId).eq(SysUserDO::getStatus, 1).eq(SysUserDO::getType,3);
|
if (!ObjectUtils.isEmpty(param)) {
|
queryWrapper = queryWrapper.eq(SysUserDO::getName, param);
|
}
|
List<SysUserDO> sysUserDOS = userDao.selectList(queryWrapper);
|
if (!ObjectUtils.isEmpty(sysUserDOS)) {
|
sysUserDOS.forEach(sysUserDO -> {
|
ActivityManagerVO activityManagerVO=new ActivityManagerVO();
|
activityManagerVO.setManagerId(sysUserDO.getUserId());
|
activityManagerVO.setName(sysUserDO.getName());
|
activityManagerVOS.add(activityManagerVO);
|
});
|
}
|
return R.ok(activityManagerVOS);
|
}
|
|
public static void main(String[] args) {
|
String encode = new BCryptPasswordEncoder().encode("123456");
|
System.out.println(encode);
|
}
|
}
|