package com.fdkankan.manage.service.impl; import java.util.*; import cn.dev33.satoken.stp.StpUtil; 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.CacheUtil; import com.fdkankan.manage.common.OssPath; import com.fdkankan.manage.common.ResultCode; import com.fdkankan.manage.entity.SysUser; import com.fdkankan.manage.entity.UserIncrement; import com.fdkankan.manage.exception.BusinessException; import com.fdkankan.manage.common.PageInfo; import com.fdkankan.manage.entity.User; import com.fdkankan.manage.httpClient.service.LaserService; import com.fdkankan.manage.mapper.IUserMapper; import com.fdkankan.manage.service.*; 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.UserVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.stream.Collectors; /** *

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

* * @author * @since 2022-06-16 */ @Service public class UserServiceImpl extends ServiceImpl implements IUserService { @Autowired private IUserIncrementService userIncrementService; @Autowired private ICameraDetailService cameraDetailService; @Autowired private ISceneService sceneService; @Autowired private ISceneProService sceneProService; @Autowired private IScenePlusService scenePlusService; @Autowired private LaserService laserService; @Autowired private ISysUserService sysUserService; @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()); } 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<>(); if(userList.size() >0){ List userIdList = userList.parallelStream().map(User::getId).collect(Collectors.toList()); Set sysUserIds = userList.stream().map(User::getSysUserId).collect(Collectors.toSet()); HashMap sysMap = sysUserService.getByIds(sysUserIds); HashMap incrementCountMap = userIncrementService.getValidCountGroupByUserId(userIdList); HashMap cameraCountMap = cameraDetailService.getCountGroupByUserId(userIdList); HashMap sceneCountMap = sceneService.getCountGroupByUserId(userIdList); HashMap sceneProCountMap = sceneProService.getCountGroupByUserId(userIdList,0); HashMap scenePlusCountMap = scenePlusService.getCountGroupByUserId(userIdList,0); // HashMap sceneProCountObjMap = sceneProService.getCountGroupByUserId(userIdList,1); // HashMap scenePlusCountObjMap = scenePlusService.getCountGroupByUserId(userIdList,1); for (User user :userList) { long incrementCount = incrementCountMap.get(user.getId()) == null ? 0 : incrementCountMap.get(user.getId()); long cameraCount = cameraCountMap.get(user.getId()) == null ? 0 : cameraCountMap.get(user.getId()); long sceneCount = sceneCountMap.get(user.getId()) == null ? 0 : sceneCountMap.get(user.getId()); long sceneProCount = sceneProCountMap.get(user.getId()) == null ? 0 : sceneProCountMap.get(user.getId()); long scenePlusCount = scenePlusCountMap.get(user.getId()) == null ? 0 : scenePlusCountMap.get(user.getId()); // long sceneProObjCount = sceneProCountObjMap.get(user.getId()) == null ? 0 : sceneProCountObjMap.get(user.getId()); // long scenePlusObjCount = scenePlusCountObjMap.get(user.getId()) == null ? 0 : scenePlusCountObjMap.get(user.getId()); Long ssNum = 0L; if(!CacheUtil.uploadType.equals("local")){ SceneParam param = new SceneParam(); param.setUserName(user.getUserName()); PageInfo pageInfo = laserService.pageList(param); ssNum = pageInfo.getTotal(); } UserVo vo = new UserVo(); BeanUtils.copyProperties(user,vo); vo.setVip(incrementCount > 0 ? 1: 0); vo.setIncrementCount(incrementCount); vo.setSurDownNum(user.getDownloadNumTotal() - user.getDownloadNum()); vo.setCameraCount(cameraCount); vo.setSceneNum(sceneCount + sceneProCount + scenePlusCount + ssNum); if(user.getSysUserId() != null){ SysUser sysUser = sysMap.get(user.getSysUserId()); if(sysUser != null){ vo.setSysUserName(sysUser.getNickName()); } } 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 Boolean checkUserName(String userName) { List userList = this.getByUserName(userName); if(userList == null || userList.size() <=0){ return false; } return true; } @Override public void addUcenterUser(UserParam param) { if(StringUtils.isBlank(param.getUserName()) || StringUtils.isBlank(param.getNickName()) || StringUtils.isBlank(param.getPassword())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } Boolean ubo = this.checkUserName(param.getUserName()); if(ubo){ throw new BusinessException(ResultCode.USER_EXIST); } try { String passwordMd5 = SecurityUtil.MD5(Base64Converter.decode(Base64Converter.subText(param.getPassword()))); User user = new User(); user.setHead(OssPath.default_head); user.setPassword(passwordMd5); user.setStatus(1); user.setIsNotice(1); user.setRegisterTime(new Date()); user.setUserName(param.getUserName()); user.setNickName(param.getNickName()); user.setCountry("86"); user.setDownloadNumTotal(1000); user.setDownloadNum(0); user.setCreateTime(Dateutils.getDate(new Date())); user.setRecStatus("A"); user.setUpdateTime(Dateutils.getDate(new Date())); user.setSysUserId(Long.valueOf((String) StpUtil.getLoginId())); this.save(user); UserIncrement userIncrement = new UserIncrement(); userIncrement.setKeyWord(UUID.randomUUID().toString().replace("-", "")); userIncrement.setIsExpired(0); userIncrement.setIncrementStartTime(Dateutils.getDate(new Date())); userIncrement.setUserId(user.getId()); userIncrement.setIncrementTypeId(1); userIncrement.setIncrementEndTime("2199-01-01 00:00:00"); userIncrementService.save(userIncrement); }catch (Exception e){ log.error("ReUcenterUserPassword:error",e); throw new BusinessException(ResultCode.PASSWORD_ERROR_G); } } @Override public void delUcenterUser(UserParam userParam) { if(userParam.getId() == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } this.removeById(userParam.getId()); } @Override public void ReUcenterUserPassword(UserParam userParam) { if(userParam.getId() == null || StringUtils.isBlank(userParam.getNewPassword())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } try { String passwordMd5 = SecurityUtil.MD5(Base64Converter.decode(Base64Converter.subText(userParam.getNewPassword()))); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(User::getId,userParam.getId()); wrapper.set(User::getPassword,passwordMd5); this.update(wrapper); }catch (Exception e){ log.error("ReUcenterUserPassword:error",e); throw new BusinessException(ResultCode.PASSWORD_ERROR_G); } } @Override public void updateUcenterUser(UserParam userParam) { if(userParam.getId() == null || StringUtils.isBlank(userParam.getNickName())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(User::getId,userParam.getId()); wrapper.set(User::getNickName,userParam.getNickName()); this.update(wrapper); } }