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)
|
||||
.and("release").is(Boolean.TRUE)
|
||||
.and("sysOrigin").is(sysOrigin))
|
||||
.with(Sort.by(Sort.Order.desc("createTime"))),
|
||||
.with(newestFirst()),
|
||||
TeamPolicyManager.class);
|
||||
}
|
||||
|
||||
@ -81,7 +81,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
||||
Criteria.where("region").is(region)
|
||||
.and("release").is(Boolean.TRUE)
|
||||
.and("sysOrigin").is(sysOrigin)
|
||||
), TeamPolicyManager.class);
|
||||
).with(newestFirst()), TeamPolicyManager.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -98,7 +98,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
||||
}
|
||||
criteria.and("countryCode").is(countryCode);
|
||||
|
||||
return mongoTemplate.findOne(Query.query(criteria), TeamPolicyManager.class);
|
||||
return mongoTemplate.findOne(Query.query(criteria).with(newestFirst()), TeamPolicyManager.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -109,7 +109,8 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if (CollectionUtils.isEmpty(teamPolicyManagers)) {
|
||||
@ -117,7 +118,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
||||
}
|
||||
|
||||
return teamPolicyManagers.stream()
|
||||
.collect(Collectors.toMap(TeamPolicyManager::getRegion, v -> v));
|
||||
.collect(Collectors.toMap(TeamPolicyManager::getRegion, v -> v, (existing, replacement) -> existing));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -130,7 +131,8 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
||||
// 查询所有 region 的已发布政策(所有 countryCode)
|
||||
List<TeamPolicyManager> policies = mongoTemplate.find(
|
||||
Query.query(Criteria.where("region").in(regions)
|
||||
.and("release").is(Boolean.TRUE)),
|
||||
.and("release").is(Boolean.TRUE))
|
||||
.with(newestFirst()),
|
||||
TeamPolicyManager.class);
|
||||
|
||||
if (CollectionUtils.isEmpty(policies)) {
|
||||
@ -170,6 +172,7 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
||||
&& StringUtils.isNotBlank(policyManager.getSysOrigin())) {
|
||||
|
||||
policyManager.setHistoryRelease(Boolean.TRUE);
|
||||
disableOtherReleasedPolicies(policyManager);
|
||||
}
|
||||
|
||||
policyManager.setPolicy(policyManager.getPolicy().stream()
|
||||
@ -178,6 +181,33 @@ public class TeamPolicyManagerServiceImpl implements TeamPolicyManagerService {
|
||||
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
|
||||
public void deleteById(Long id) {
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user