package com.fdkankan.manage.service.impl; import java.util.Date; import java.util.*; import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.common.util.Base64Converter; import com.fdkankan.common.util.SecurityUtil; import com.fdkankan.manage.common.*; import com.fdkankan.manage.config.ManageConfig; import com.fdkankan.manage.entity.*; import com.fdkankan.manage.exception.BusinessException; import com.fdkankan.manage.httpClient.service.LaserService; import com.fdkankan.manage.mapper.IUserMapper; import com.fdkankan.manage.service.*; import com.fdkankan.manage.util.AesUtil; import com.fdkankan.manage.util.Dateutils; import com.fdkankan.manage.vo.request.SceneParam; import com.fdkankan.manage.vo.request.UserIncrementParam; import com.fdkankan.manage.vo.request.UserParam; import com.fdkankan.manage.vo.response.ManageLoginResponse; import com.fdkankan.manage.vo.response.UserVo; import com.fdkankan.redis.util.RedisUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.stream.Collectors; /** *

* 用户信息表 服务实现类 *

* * @author * @since 2022-06-16 */ @Service @Slf4j public class UserServiceImpl extends ServiceImpl implements IUserService { @Autowired private IUserIncrementService userIncrementService; @Autowired private ICameraDetailService cameraDetailService; @Autowired private ISysUserService sysUserService; @Autowired private IJyUserService jyUserService; @Autowired private IJySceneUserAuthService jySceneUserAuthService; @Autowired ManageService manageService; @Autowired IJyPlatformService jyPlatformService; @Autowired IJyUserPlatformService jyUserPlatformService; @Autowired ManageConfig manageConfig; @Override public PageInfo pageList(UserParam param) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if(StringUtils.isNotBlank(param.getUserName())){ wrapper.like(User::getUserName,param.getUserName()); } if(StringUtils.isNotBlank(param.getEmail())){ wrapper.like(User::getEmail,param.getEmail()); } if(StringUtils.isNotBlank(param.getNickName())){ wrapper.like(User::getNickName,param.getNickName()); } wrapper.orderByDesc(User::getCreateTime); Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper); List records = page.getRecords(); List userVo = getUserVo(records); Page pageVo = new Page<>(page.getCurrent(),page.getSize()); pageVo.setTotal(page.getTotal()); pageVo.setRecords(userVo); return PageInfo.PageInfo(pageVo); } @Override public void addDownNum(UserIncrementParam param) { User user = this.getById(param.getUserId()); if(user == null){ throw new BusinessException(ResultCode.USER_NOT_EXIST); } Integer totalNum = user.getDownloadNumTotal() == null ? 0 : user.getDownloadNumTotal() + param.getCount(); user.setDownloadNumTotal(totalNum); this.updateById(user); } @Override public List userDetail(Integer userId) { User user = this.getById(userId); if(user!=null){ return getUserVo(Arrays.asList(user)); } return new ArrayList<>(); } private List getUserVo(List userList){ List voList = new ArrayList<>(); Set collect = userList.stream().map(User::getId).collect(Collectors.toSet()); HashMap mapByUserIds = jyUserService.getMapByUserIds(collect); if(userList.size() >0){ for (User user :userList) { UserVo vo = new UserVo(); BeanUtils.copyProperties(user,vo); JyUser jyUser = mapByUserIds.get(user.getId()); if(jyUser !=null){ vo.setRyId(jyUser.getRyId()); SysUser sysUser = sysUserService.getById(jyUser.getSysUserId()); if(sysUser !=null){ vo.setStatus(sysUser.getStatus()); } } voList.add(vo); } } return voList; } @Override public HashMap getByIds(List userIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(User::getId,userIds); List list = this.list(wrapper); HashMap map = new HashMap<>(); list.forEach(entity -> map.put(entity.getId(),entity)); return map; } @Override public List getByUserName(String userName) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(User::getUserName,userName); return this.list(wrapper); } @Override public List getLikeUserName(String userName) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.like(User::getUserName,userName); return this.list(wrapper); } @Override public Boolean checkUserName(String userName) { List userList = this.getByUserName(userName); if(userList == null || userList.size() <=0){ return false; } return true; } @Autowired IJyPlatformUserWaitService platformUserWaitService; @Override @Transactional(rollbackFor = Exception.class) public synchronized void addUcenterUser(UserParam param) { if( StringUtils.isBlank(param.getRyId()) || StringUtils.isBlank(param.getRyNo())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } JyUser jyUser = jyUserService.getByRyId(param.getRyId()); List jyUserList = jyUserService.getByAddParam(param); if(!jyUserList.isEmpty()){ List ryNos = jyUserList.stream().map(JyUser::getRyNo).collect(Collectors.toList()); List phones = jyUserList.stream().map(JyUser::getPhone).collect(Collectors.toList()); List idCards = jyUserList.stream().map(JyUser::getIdCard).collect(Collectors.toList()); if(StringUtils.isNotBlank(param.getRyNo()) && ryNos.contains(param.getRyNo())){ throw new BusinessException(ResultCode.RYNO_EXITS); } if(StringUtils.isNotBlank(param.getPhone()) && phones.contains(param.getPhone())){ throw new BusinessException(ResultCode.PHONE_EXIT); } if(StringUtils.isNotBlank(param.getIdCard()) && idCards.contains(param.getIdCard())){ throw new BusinessException(ResultCode.ID_CARD_EXIT); } } if(jyUser == null){ jyUser = new JyUser(); param.setIsJm(param.getIsJm() ==null?1:param.getIsJm()); param.setPassword(StringUtils.isBlank(param.getPassword()) ? manageConfig.getDefaultPassword() :param.getPassword()); param.setNickName(StringUtils.isBlank(param.getNickName())?param.getUserName():param.getNickName() ); } User user = this.addUser(jyUser.getUserId(), param.getPassword(), param.getRyNo(), param.getNickName()); SysUser sysUser = this.addSysUser(jyUser.getSysUserId(),param.getPassword(), param.getRyNo(), param.getNickName()); jyUser.setRyId(param.getRyId()); jyUser.setRyPassword(param.getPassword()); jyUser.setRyNo(param.getRyNo()); jyUser.setRyNickName(param.getNickName()); jyUser.setUserId(user.getId()); jyUser.setSysUserId(sysUser.getId()); jyUser.setUpdateTime(null); jyUser.setPhone(param.getPhone()); jyUser.setIdCard(param.getIdCard()); jyUser.setIsJm(param.getIsJm()); if(param.getPlatformId() != null){ jyUser.setPlatformId(param.getPlatformId()); } if(param.getIsJm() != null && param.getIsJm() == 1){ sysUser = sysUserService.getById(sysUser.getId()); if(sysUser.getRoleId() == 48L ){ sysUserService.updateRoleId(sysUser.getId(),47L); JyPlatform jyPlatform = jyPlatformService.getByIdCard(jyUser.getIdCard()); if(jyPlatform != null && jyPlatform.getStatus() == 0){ jyPlatform.setName(null); jyPlatform.setPhone(null); jyPlatform.setIdCard(null); jyPlatform.setUpdateTime(null); jyPlatformService.updateById(jyPlatform); } } jyUser.setPlatformId(1); } if(param.getIsJm() != null ){ JyPlatformUserWait platformUserWait = platformUserWaitService.getByIdCard(jyUser.getIdCard()); if(platformUserWait != null){ jyUser.setPlatformId(param.getIsJm() == 0?platformUserWait.getPlatformId():1); platformUserWaitService.del(platformUserWait.getId()); } } if(param.getIsJm()!=null && param.getIsJm() == 0){ if(StringUtils.isNotBlank(param.getIdCard()) ){ JyPlatform jyPlatform = jyPlatformService.getByIdCard(jyUser.getIdCard()); if(jyPlatform != null && jyPlatform.getStatus() == 0){ jyUser.setPlatformId(jyPlatform.getId()); sysUserService.updateRoleId(sysUser.getId(),48L); } } jyUser.setPlatformId(jyUser.getPlatformId()!=null && jyUser.getPlatformId() == 1 ? null :jyUser.getPlatformId()); } jyUserService.saveOrUpdate(jyUser); } private User addUser(Long userId, String passwordMd5, String userName, String nickName){ User user = new User(); user.setId(userId); user.setHead(manageConfig.getQueryPath() + OssPath.default_head); user.setPassword(userId == null && StringUtils.isBlank(passwordMd5) ? manageConfig.getDefaultPassword() : passwordMd5); user.setStatus(1); user.setIsNotice(1); user.setUserName(userName); user.setNickName(nickName); user.setCountry("86"); user.setDownloadNumTotal(1000); user.setDownloadNum(0); user.setRecStatus("A"); if(userId == null){ user.setRegisterTime(new Date()); } this.saveOrUpdate(user); return user; } private SysUser addSysUser(Long sysUserId,String passwordMd5, String ryNo, String nickName) { SysUser sysUser = new SysUser(); sysUser.setId(sysUserId); sysUser.setUserName(ryNo); sysUser.setPassword(sysUserId == null && StringUtils.isBlank(passwordMd5) ? manageConfig.getDefaultPassword() : passwordMd5); sysUser.setNickName(nickName); if(sysUserId == null){ sysUser.setRoleId(47L); } sysUser.setUpdateTime(null); sysUserService.saveOrUpdate(sysUser); return sysUser; } @Override public void delUcenterUser(UserParam userParam) { if(StringUtils.isBlank(userParam.getRyId())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } JyUser jyuser = jyUserService.getByRyId(userParam.getRyId()); if(jyuser == null){ throw new BusinessException(ResultCode.JY_ID_NO_EXIST); } SysUser sysUser = sysUserService.getById(jyuser.getSysUserId()); if(sysUser.getRoleId() == 1L || sysUser.getRoleId() == 45L || sysUser.getRoleId() == 48L){ throw new BusinessException(ResultCode.ADMIN_NOT_DISABLE); } //将相机和场景归属超管 cameraDetailService.giveSuperAdmin(jyuser); this.del(jyuser.getUserId()); sysUserService.del(jyuser.getSysUserId()); jySceneUserAuthService.delByJyUserId(jyuser.getId()); jyUserService.del(jyuser.getId()); } private void del(Long userId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(User::getId,userId); wrapper.set(User::getRecStatus,userId); this.update(wrapper); } @Override public void updateStatus(UserParam userParam) { if((StringUtils.isNotBlank(userParam.getRyNo()) && StringUtils.isBlank(userParam.getRyNo())) || userParam.getStatus() == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } JyUser jyuser = null; if(StringUtils.isNotBlank(userParam.getRyId())){ jyuser = jyUserService.getByRyId(userParam.getRyId()); } if(StringUtils.isNotBlank(userParam.getRyNo())){ jyuser = jyUserService.getByRyNo(userParam.getRyNo()); } if(StringUtils.isNotBlank(userParam.getRyId()) && StringUtils.isNotBlank(userParam.getRyNo())){ if(! (jyuser.getRyId().equals(userParam.getRyId()) && jyuser.getRyNo().equals(userParam.getRyNo()))){ throw new BusinessException(ResultCode.JY_ID_NO_EXIST); } } if(jyuser == null){ throw new BusinessException(ResultCode.JY_ID_NO_EXIST); } SysUser sysUser = sysUserService.getById(jyuser.getSysUserId()); if(sysUser.getRoleId() == 1L || sysUser.getRoleId() == 45L || sysUser.getRoleId() == 48L){ throw new BusinessException(ResultCode.ADMIN_NOT_DISABLE); } if(userParam.getStatus() == 0){ //将相机和场景归属超管 cameraDetailService.giveSuperAdmin(jyuser); } manageService.updateLoginUserStatus(jyuser.getRyNo(),userParam.getStatus()); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(SysUser::getId,jyuser.getSysUserId()); wrapper.set(SysUser::getStatus,userParam.getStatus()); sysUserService.update(wrapper); LambdaUpdateWrapper wrapper2 = new LambdaUpdateWrapper<>(); wrapper2.eq(JyUser::getId,jyuser.getId()); wrapper2.set(JyUser::getStatus,userParam.getStatus()); jyUserService.update(wrapper2); } }