|
@@ -1,14 +1,21 @@
|
|
package com.fdkankan.agent.service.impl;
|
|
package com.fdkankan.agent.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.fdkankan.agent.common.PageInfo;
|
|
import com.fdkankan.agent.entity.User;
|
|
import com.fdkankan.agent.entity.User;
|
|
import com.fdkankan.agent.mapper.IUserMapper;
|
|
import com.fdkankan.agent.mapper.IUserMapper;
|
|
-import com.fdkankan.agent.service.IUserService;
|
|
|
|
|
|
+import com.fdkankan.agent.request.UserParam;
|
|
|
|
+import com.fdkankan.agent.response.UserVo;
|
|
|
|
+import com.fdkankan.agent.service.*;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.HashMap;
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -21,6 +28,20 @@ import java.util.List;
|
|
@Service
|
|
@Service
|
|
public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements IUserService {
|
|
public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements IUserService {
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private IUserIncrementService userIncrementService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ICameraService cameraService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ICameraDetailService cameraDetailService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISceneService sceneService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISceneProService sceneProService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IScenePlusService scenePlusService;
|
|
|
|
+
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Boolean checkUserName(String userName) {
|
|
public Boolean checkUserName(String userName) {
|
|
User user = this.getByUserName(userName);
|
|
User user = this.getByUserName(userName);
|
|
@@ -60,4 +81,56 @@ public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements I
|
|
list.forEach(entity -> map.put(entity.getId(),entity));
|
|
list.forEach(entity -> map.put(entity.getId(),entity));
|
|
return map;
|
|
return map;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public PageInfo pageList(UserParam param) {
|
|
|
|
+ LambdaQueryWrapper<User> 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.isNotNull(User::getAgentKey);
|
|
|
|
+ wrapper.orderByDesc(User::getCreateTime);
|
|
|
|
+ Page<User> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
|
|
|
|
+ List<User> records = page.getRecords();
|
|
|
|
+ List<UserVo> userVo = getUserVo(records);
|
|
|
|
+ Page<UserVo> pageVo = new Page<>(page.getCurrent(),page.getSize());
|
|
|
|
+ pageVo.setTotal(page.getTotal());
|
|
|
|
+ pageVo.setRecords(userVo);
|
|
|
|
+ return PageInfo.PageInfo(pageVo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<UserVo> getUserVo(List<User> userList){
|
|
|
|
+ List<UserVo> voList = new ArrayList<>();
|
|
|
|
+ if(userList.size() >0){
|
|
|
|
+ List<Long> userIdList = userList.parallelStream().map(User::getId).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ HashMap<Long,Long> incrementCountMap = userIncrementService.getValidCountGroupByUserId(userIdList);
|
|
|
|
+ HashMap<Long,Long> cameraCountMap = cameraDetailService.getCountGroupByUserId(userIdList);
|
|
|
|
+ HashMap<Long,Long> sceneCountMap = sceneService.getCountGroupByUserId(userIdList);
|
|
|
|
+ HashMap<Long,Long> sceneProCountMap = sceneProService.getCountGroupByUserId(userIdList);
|
|
|
|
+ HashMap<Long,Long> scenePlusCountMap = scenePlusService.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());
|
|
|
|
+ long scenePlusCount = scenePlusCountMap.get(user.getId()) == null ? 0 : scenePlusCountMap.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 + scenePlusCount );
|
|
|
|
+ voList.add(vo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return voList;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|