fix: keep latest team policy release active
This commit is contained in:
parent
541493692c
commit
5580dcabb4
@ -70,7 +70,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
.find(Query.query(Criteria.where("region").is(region)
|
.find(Query.query(Criteria.where("region").is(region)
|
||||||
.and("release").is(Boolean.TRUE)
|
.and("release").is(Boolean.TRUE)
|
||||||
.and("sysOrigin").is(sysOrigin))
|
.and("sysOrigin").is(sysOrigin))
|
||||||
.with(Sort.by(Sort.Order.desc("createTime"))),
|
.with(newestFirst()),
|
||||||
TeamPolicyManager.class);
|
TeamPolicyManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
Criteria.where("region").is(region)
|
Criteria.where("region").is(region)
|
||||||
.and("release").is(Boolean.TRUE)
|
.and("release").is(Boolean.TRUE)
|
||||||
.and("sysOrigin").is(sysOrigin)
|
.and("sysOrigin").is(sysOrigin)
|
||||||
), TeamPolicyManager.class);
|
).with(newestFirst()), TeamPolicyManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -98,7 +98,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
}
|
}
|
||||||
criteria.and("countryCode").is(countryCode);
|
criteria.and("countryCode").is(countryCode);
|
||||||
|
|
||||||
return mongoTemplate.findOne(Query.query(criteria), TeamPolicyManager.class);
|
return mongoTemplate.findOne(Query.query(criteria).with(newestFirst()), TeamPolicyManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -109,7 +109,8 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<TeamPolicyManager> teamPolicyManagers = mongoTemplate.find(
|
List<TeamPolicyManager> teamPolicyManagers = mongoTemplate.find(
|
||||||
Query.query(Criteria.where("region").in(regions).and("release").is(Boolean.TRUE)),
|
Query.query(Criteria.where("region").in(regions).and("release").is(Boolean.TRUE))
|
||||||
|
.with(newestFirst()),
|
||||||
TeamPolicyManager.class);
|
TeamPolicyManager.class);
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(teamPolicyManagers)) {
|
if (CollectionUtils.isEmpty(teamPolicyManagers)) {
|
||||||
@ -117,7 +118,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return teamPolicyManagers.stream()
|
return teamPolicyManagers.stream()
|
||||||
.collect(Collectors.toMap(TeamPolicyManager::getRegion, v -> v));
|
.collect(Collectors.toMap(TeamPolicyManager::getRegion, v -> v, (existing, replacement) -> existing));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -130,7 +131,8 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
// 查询所有 region 的已发布政策(所有 countryCode)
|
// 查询所有 region 的已发布政策(所有 countryCode)
|
||||||
List<TeamPolicyManager> policies = mongoTemplate.find(
|
List<TeamPolicyManager> policies = mongoTemplate.find(
|
||||||
Query.query(Criteria.where("region").in(regions)
|
Query.query(Criteria.where("region").in(regions)
|
||||||
.and("release").is(Boolean.TRUE)),
|
.and("release").is(Boolean.TRUE))
|
||||||
|
.with(newestFirst()),
|
||||||
TeamPolicyManager.class);
|
TeamPolicyManager.class);
|
||||||
|
|
||||||
if (CollectionUtils.isEmpty(policies)) {
|
if (CollectionUtils.isEmpty(policies)) {
|
||||||
@ -170,6 +172,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
&& StringUtils.isNotBlank(policyManager.getSysOrigin())) {
|
&& StringUtils.isNotBlank(policyManager.getSysOrigin())) {
|
||||||
|
|
||||||
policyManager.setHistoryRelease(Boolean.TRUE);
|
policyManager.setHistoryRelease(Boolean.TRUE);
|
||||||
|
disableOtherReleasedPolicies(policyManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
policyManager.setPolicy(policyManager.getPolicy().stream()
|
policyManager.setPolicy(policyManager.getPolicy().stream()
|
||||||
@ -178,6 +181,33 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
|||||||
mongoTemplate.save(policyManager);
|
mongoTemplate.save(policyManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布政策时保持同一作用域只有一个正在使用的政策,避免端内按国家或默认政策匹配到旧版本。
|
||||||
|
*/
|
||||||
|
private void disableOtherReleasedPolicies(TeamPolicyManager policyManager) {
|
||||||
|
Criteria criteria = Criteria.where("sysOrigin").is(policyManager.getSysOrigin())
|
||||||
|
.and("region").is(policyManager.getRegion())
|
||||||
|
.and("release").is(Boolean.TRUE)
|
||||||
|
.and("id").ne(policyManager.getId());
|
||||||
|
|
||||||
|
if (Objects.equals(policyManager.getPolicyType(), TeamPolicyTypeEnum.SALARY_DIAMOND.name())) {
|
||||||
|
criteria.and("policyType").is(TeamPolicyTypeEnum.SALARY_DIAMOND.name());
|
||||||
|
} else {
|
||||||
|
criteria.and("policyType").ne(TeamPolicyTypeEnum.SALARY_DIAMOND.name());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isNotBlank(policyManager.getCountryCode())) {
|
||||||
|
criteria.and("countryCode").is(policyManager.getCountryCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
mongoTemplate.updateMulti(Query.query(criteria),
|
||||||
|
Update.update("release", Boolean.FALSE), TeamPolicyManager.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Sort newestFirst() {
|
||||||
|
return Sort.by(Sort.Order.desc("createTime"));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteById(Long id) {
|
public void deleteById(Long id) {
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user