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.common.constant.ErrorCode; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.common.response.PageInfo; import com.fdkankan.manage.entity.User; import com.fdkankan.manage.mapper.IUserMapper; import com.fdkankan.manage.service.*; 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; @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(ErrorCode.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); 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()); 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); voList.add(vo); } } return voList; } }