package com.fdkankan.manage.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.manage.common.ResultCode; 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.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.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; 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; @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()); 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()); SceneParam param = new SceneParam(); param.setUserName(user.getUserName()); PageInfo pageInfo = laserService.pageList(param); 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 + pageInfo.getTotal()); 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 userParam) { if(StringUtils.isBlank(userParam.getUserName()) || StringUtils.isBlank(userParam.getNickName()) || StringUtils.isBlank(userParam.getPassword())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } Boolean ubo = this.checkUserName(userParam.getUserName()); if(ubo){ throw new BusinessException(ResultCode.USER_EXIST); } } }