|
@@ -51,6 +51,7 @@ import com.unis.module.system.dal.mysql.permission.UserRoleMapper;
|
51
|
51
|
import com.unis.module.system.dal.mysql.user.AdminUserMapper;
|
52
|
52
|
import com.unis.module.system.enums.permission.RoleIdEnum;
|
53
|
53
|
import lombok.extern.slf4j.Slf4j;
|
|
54
|
+import org.springframework.data.redis.core.RedisTemplate;
|
54
|
55
|
import org.jetbrains.annotations.Nullable;
|
55
|
56
|
import org.springframework.stereotype.Service;
|
56
|
57
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -112,6 +113,10 @@ public class DwxxServiceImpl implements DwxxService {
|
112
|
113
|
private UsersMapper usersMapper;
|
113
|
114
|
@Resource
|
114
|
115
|
private DictDataMapper dictDataMapper;
|
|
116
|
+ @Resource
|
|
117
|
+ private RedisTemplate<String, Object> redisTemplate;
|
|
118
|
+
|
|
119
|
+ private static final String ALL_AREA_LEVEL_KEY = "all_area_levels";
|
115
|
120
|
|
116
|
121
|
@Override
|
117
|
122
|
public Long createDwxx(DwxxSaveReqVO createReqVO) {
|
|
@@ -192,7 +197,15 @@ public class DwxxServiceImpl implements DwxxService {
|
192
|
197
|
if ("0".equals(areaLevel) || ObjectUtil.isEmpty(areaLevel)) {
|
193
|
198
|
if (pageReqVO.getAreaCode() != null) {
|
194
|
199
|
// 数据权限
|
195
|
|
- pageReqVO.setAreaCode(AreaUtils.getAreaCode(pageReqVO.getAreaLevel(), pageReqVO.getAreaCode(), pageReqVO.getParentCode()));
|
|
200
|
+ //pageReqVO.setAreaCode(AreaUtils.getAreaCode(pageReqVO.getAreaLevel(), pageReqVO.getAreaCode(), pageReqVO.getParentCode()));
|
|
201
|
+
|
|
202
|
+ // 获取区域集合
|
|
203
|
+ List<AreaLevelDO> allAreaLevels = (List<AreaLevelDO>) redisTemplate.opsForValue().get(ALL_AREA_LEVEL_KEY);
|
|
204
|
+ if (CollectionUtils.isEmpty(allAreaLevels)) {
|
|
205
|
+ allAreaLevels = areaLevelMapper.selectList(null);
|
|
206
|
+ }
|
|
207
|
+ // 根据区域级别设置区域代码
|
|
208
|
+ setAreaCodeBasedOnLevel(pageReqVO, allAreaLevels);
|
196
|
209
|
}
|
197
|
210
|
page = dwxxMapper.selectWrapperPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
|
198
|
211
|
|
|
@@ -849,4 +862,49 @@ public class DwxxServiceImpl implements DwxxService {
|
849
|
862
|
|
850
|
863
|
}
|
851
|
864
|
|
|
865
|
+ // 根据区域级别设置区域代码
|
|
866
|
+ private void setAreaCodeBasedOnLevel(DeliveryPageReqVO pageReqVO, List<AreaLevelDO> allAreaLevels) {
|
|
867
|
+ int areaLevel = pageReqVO.getAreaLevel();
|
|
868
|
+ switch (areaLevel) {
|
|
869
|
+ case 1:
|
|
870
|
+ AreaLevelDO sheng = findAreaLevel(allAreaLevels, pageReqVO.getAreaCode());
|
|
871
|
+ if (sheng != null) {
|
|
872
|
+ pageReqVO.setAreaCode(String.format("%s%s", sheng.getAreaName(), "%"));
|
|
873
|
+ }
|
|
874
|
+ break;
|
|
875
|
+ case 2:
|
|
876
|
+ AreaLevelDO shi = findAreaLevel(allAreaLevels, pageReqVO.getAreaCode());
|
|
877
|
+ AreaLevelDO sheng2 = findAreaLevel(allAreaLevels, pageReqVO.getParentCode());
|
|
878
|
+ if (shi != null && sheng2 != null) {
|
|
879
|
+ if (Arrays.asList(CityConstants.CITY).contains(sheng2.getAreaName())) {
|
|
880
|
+ pageReqVO.setAreaCode(String.format("%s%s%s", sheng2.getAreaName(), "%", shi.getAreaName()));
|
|
881
|
+ } else {
|
|
882
|
+ pageReqVO.setAreaCode(String.format("%s%s%s%s", sheng2.getAreaName(), ",", shi.getAreaName(), "%"));
|
|
883
|
+ }
|
|
884
|
+ }
|
|
885
|
+ break;
|
|
886
|
+ case 3:
|
|
887
|
+ AreaLevelDO xian = findAreaLevel(allAreaLevels, pageReqVO.getAreaCode());
|
|
888
|
+ AreaLevelDO shi3 = findAreaLevel(allAreaLevels, pageReqVO.getParentCode());
|
|
889
|
+ if (shi3 != null) {
|
|
890
|
+ AreaLevelDO sheng3 = findAreaLevel(allAreaLevels, shi3.getParentCode());
|
|
891
|
+ if (xian != null && sheng3 != null) {
|
|
892
|
+ pageReqVO.setAreaCode(String.format("%s%s%s%s%s%s", sheng3.getAreaName(), ",", shi3.getAreaName(), ",", xian.getAreaName(), "%"));
|
|
893
|
+ }
|
|
894
|
+ }
|
|
895
|
+ break;
|
|
896
|
+ }
|
|
897
|
+ }
|
|
898
|
+
|
|
899
|
+ // 根据区域代码查找 AreaLevelDO 对象
|
|
900
|
+ private AreaLevelDO findAreaLevel(List<AreaLevelDO> allAreaLevels, String areaCode) {
|
|
901
|
+ if (areaCode == null) {
|
|
902
|
+ return allAreaLevels.stream().findFirst().orElse(null);
|
|
903
|
+ }
|
|
904
|
+ return allAreaLevels.stream()
|
|
905
|
+ .filter(a -> a.getAreaCode().equals(areaCode))
|
|
906
|
+ .findFirst()
|
|
907
|
+ .orElse(null);
|
|
908
|
+ }
|
|
909
|
+
|
852
|
910
|
}
|