SysPcAddressServiceImpl.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package com.ydtech.modules.admin.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.ydtech.modules.admin.dao.SysDeptMapper;
  6. import com.ydtech.modules.admin.dao.SysPcAddressMapper;
  7. import com.ydtech.modules.admin.model.SysDept;
  8. import com.ydtech.modules.admin.model.SysUser;
  9. import com.ydtech.modules.admin.model.dto.*;
  10. import com.ydtech.modules.admin.model.po.SysPcAddressHistory;
  11. import com.ydtech.modules.admin.model.po.SysPcAddress;
  12. import com.ydtech.modules.admin.model.vo.RegionInfoVo;
  13. import com.ydtech.modules.admin.model.vo.SysDeptTreeVo;
  14. import com.ydtech.modules.admin.service.GeoService;
  15. import com.ydtech.modules.admin.service.SysPcAddressHistoryService;
  16. import com.ydtech.modules.admin.service.SysPcAddressService;
  17. import com.ydtech.modules.admin.service.SysUserService;
  18. import com.ydtech.modules.order.entity.BasePageResult;
  19. import com.ydtech.utils.StringUtils;
  20. import lombok.RequiredArgsConstructor;
  21. import org.springframework.beans.BeanUtils;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import javax.annotation.Resource;
  25. import java.util.*;
  26. import java.util.stream.Collectors;
  27. /**
  28. * @author Administrator
  29. * @description 针对表【sys_pc_address(pc获取ip地址)】的数据库操作Service实现
  30. * @createDate 2024-09-02 09:40:08
  31. */
  32. @Service
  33. @RequiredArgsConstructor
  34. public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, SysPcAddress> implements SysPcAddressService {
  35. private final SysPcAddressHistoryService sysPcAddressHistoryService;
  36. private final SysPcAddressMapper sysPcAddressMapper;
  37. private final GeoService geoService;
  38. private static final String PC_GEO_KEY = "PCLocations";
  39. @Resource
  40. private SysDeptMapper sysDeptMapper;
  41. @Override
  42. @Transactional(rollbackFor = Exception.class)
  43. public void saveSysPcAddress(IpInfoDto ipInfoDto, SysUser user) {
  44. SysPcAddress sysPcAddress = getById(user.getId());
  45. if (sysPcAddress == null) {
  46. sysPcAddress = new SysPcAddress();
  47. }
  48. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
  49. .eq(SysDept::getId, user.getDeptId()).eq(SysDept::getDelFlag, 0));
  50. sysPcAddress.setUserId(user.getId());
  51. sysPcAddress.setUserName(user.getName());
  52. sysPcAddress.setIp(ipInfoDto.getIp());
  53. sysPcAddress.setLatitude(ipInfoDto.getLat());
  54. sysPcAddress.setLongitude(ipInfoDto.getLng());
  55. sysPcAddress.setProvince(ipInfoDto.getProv());
  56. sysPcAddress.setCity(ipInfoDto.getCity());
  57. sysPcAddress.setDistrict(ipInfoDto.getDistrict());
  58. sysPcAddress.setSource(sysDept.getManagementSource());
  59. sysPcAddress.setAddress(ipInfoDto.getProv() + ipInfoDto.getCity() + ipInfoDto.getDistrict());
  60. sysPcAddress.setOperationTime(new Date());
  61. SysPcAddressHistory sysPcAddressHistory = new SysPcAddressHistory();
  62. BeanUtils.copyProperties(sysPcAddress, sysPcAddressHistory);
  63. this.saveOrUpdate(sysPcAddress);
  64. sysPcAddressHistoryService.save(sysPcAddressHistory);
  65. }
  66. @Override
  67. public List<SysPcAddress> getEveryone(SysPcAddressDto sysPcAddressDto) {
  68. List<SysPcAddress> sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>()
  69. .eq(StringUtils.isNotEmpty(sysPcAddressDto.getProvince()), SysPcAddress::getProvince, sysPcAddressDto.getProvince())
  70. .eq(StringUtils.isNotEmpty(sysPcAddressDto.getCity()), SysPcAddress::getCity, sysPcAddressDto.getCity())
  71. .eq(StringUtils.isNotEmpty(sysPcAddressDto.getDistrict()), SysPcAddress::getDistrict, sysPcAddressDto.getDistrict())
  72. .eq(StringUtils.isNotEmpty(sysPcAddressDto.getSource()), SysPcAddress::getSource, sysPcAddressDto.getSource())
  73. .orderByDesc(SysPcAddress::getOperationTime));
  74. return sysPcAddresses;
  75. }
  76. @Override
  77. public List<SysPcAddress> findLocationsWithinRadius(AdressRangeDto adressRangeDto) {
  78. geoService.addLocations(list(), PC_GEO_KEY);
  79. List<String> nearbyIds = geoService.findNearbyIds(PC_GEO_KEY, adressRangeDto.getLongitude(), adressRangeDto.getLatitude(), adressRangeDto.getRadius());
  80. return listByIds(nearbyIds);
  81. }
  82. @Override
  83. public SysPcAddressNumVo queryPcNum() {
  84. SysPcAddressNumVo sysPcAddressNumVo = new SysPcAddressNumVo();
  85. Long all = sysPcAddressMapper.selectCount(new LambdaQueryWrapper<SysPcAddress>());
  86. Long channelNum = sysPcAddressMapper.selectCount(new LambdaQueryWrapper<SysPcAddress>().eq(SysPcAddress::getSource,1));
  87. Long proxyNum = sysPcAddressMapper.selectCount(new LambdaQueryWrapper<SysPcAddress>().eq(SysPcAddress::getSource,2));
  88. sysPcAddressNumVo.setAllNum(all);
  89. sysPcAddressNumVo.setProxyNum(proxyNum);
  90. sysPcAddressNumVo.setChannelNum(channelNum);
  91. return sysPcAddressNumVo;
  92. }
  93. @Override
  94. public List<RegionInfoVo> queryRegionInfo(Integer type) {
  95. List<RegionInfoVo> regionInfoVos = new ArrayList<>();
  96. //全部:0 渠道:1 代理:2
  97. if (type == 0){
  98. RegionInfoVo regionInfoVo = new RegionInfoVo();
  99. List<SysPcAddress> list = list();
  100. Map<String, List<SysPcAddress>> map = list.stream().collect(Collectors.groupingBy(SysPcAddress::getDistrict));
  101. // map.forEach();
  102. // for (Map.Entry<String, List<String>> entry : map.entrySet()) {
  103. // String key = entry.getKey();
  104. // List<String> list = entry.getValue();
  105. // int listSize = list.size();
  106. // System.out.println("Key: " + key + ", List size: " + listSize);
  107. // }
  108. }else if (type == 1) {
  109. List<SysPcAddress> sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>().eq(SysPcAddress::getSource, 1));
  110. }else if (type == 2){
  111. List<SysPcAddress> sysPcAddresses = sysPcAddressMapper.selectList(new LambdaQueryWrapper<SysPcAddress>().eq(SysPcAddress::getSource, 2));
  112. }
  113. return regionInfoVos;
  114. }
  115. }