banner 新增 countryCode 字段
This commit is contained in:
parent
cdeb90f4a3
commit
eccdd57045
@ -25,6 +25,10 @@ public class SysBannerConfigQryCmd extends PageCommand {
|
|||||||
*/
|
*/
|
||||||
private String sysOrigin;
|
private String sysOrigin;
|
||||||
|
|
||||||
|
private String platform;
|
||||||
|
|
||||||
|
private String countryCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 区域.
|
* 区域.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -37,6 +37,10 @@ public class SysBannerConfigDTO extends DTO {
|
|||||||
*/
|
*/
|
||||||
private String sysOrigin;
|
private String sysOrigin;
|
||||||
|
|
||||||
|
private String platform;
|
||||||
|
|
||||||
|
private String countryCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 封面.
|
* 封面.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -45,6 +45,12 @@ public class SysBannerConfigCO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String sysOrigin;
|
private String sysOrigin;
|
||||||
|
|
||||||
|
private String platform;
|
||||||
|
|
||||||
|
private String countryId;
|
||||||
|
|
||||||
|
private String countryCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 小封面图.
|
* 小封面图.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -7,7 +7,9 @@ import com.red.circle.framework.core.response.CommonErrorCode;
|
|||||||
import com.red.circle.order.inner.endpoint.OrderPurchaseHistoryClient;
|
import com.red.circle.order.inner.endpoint.OrderPurchaseHistoryClient;
|
||||||
import com.red.circle.other.app.convertor.sys.SysConfigAppConvertor;
|
import com.red.circle.other.app.convertor.sys.SysConfigAppConvertor;
|
||||||
import com.red.circle.other.app.dto.clientobject.sys.BannerCO;
|
import com.red.circle.other.app.dto.clientobject.sys.BannerCO;
|
||||||
|
import com.red.circle.other.domain.gateway.user.UserProfileGateway;
|
||||||
import com.red.circle.other.domain.gateway.user.ability.UserRegionGateway;
|
import com.red.circle.other.domain.gateway.user.ability.UserRegionGateway;
|
||||||
|
import com.red.circle.other.domain.model.user.UserProfile;
|
||||||
import com.red.circle.other.infra.database.cache.entity.sys.BannerCache;
|
import com.red.circle.other.infra.database.cache.entity.sys.BannerCache;
|
||||||
import com.red.circle.other.infra.database.cache.service.other.BannerCacheService;
|
import com.red.circle.other.infra.database.cache.service.other.BannerCacheService;
|
||||||
import com.red.circle.other.infra.database.rds.entity.sys.BannerConfig;
|
import com.red.circle.other.infra.database.rds.entity.sys.BannerConfig;
|
||||||
@ -34,27 +36,32 @@ public class BannerQryExe {
|
|||||||
private final BannerConfigService bannerConfigService;
|
private final BannerConfigService bannerConfigService;
|
||||||
private final SysConfigAppConvertor sysConfigAppConvertor;
|
private final SysConfigAppConvertor sysConfigAppConvertor;
|
||||||
private final OrderPurchaseHistoryClient orderPurchaseHistoryClient;
|
private final OrderPurchaseHistoryClient orderPurchaseHistoryClient;
|
||||||
|
private final UserProfileGateway userProfileGateway;
|
||||||
|
|
||||||
public List<BannerCO> execute(AppExtCommand cmd) {
|
public List<BannerCO> execute(AppExtCommand cmd) {
|
||||||
|
UserProfile userProfile = userProfileGateway.getByUserId(cmd.requiredReqUserId());
|
||||||
String regionId = userRegionGateway.getRegionId(cmd.requiredReqUserId());
|
String regionId = userRegionGateway.getRegionId(cmd.requiredReqUserId());
|
||||||
ResponseAssert.notBlank(CommonErrorCode.REGION_NOT_SUPPORTED_ERROR, regionId);
|
ResponseAssert.notBlank(CommonErrorCode.REGION_NOT_SUPPORTED_ERROR, regionId);
|
||||||
List<BannerCache> list = bannerCacheService.listBannerCacheBySysOrigin(cmd.requireReqSysOrigin(), () -> {
|
String reqClient = cmd.getReqClient().getClientName();
|
||||||
List<BannerConfig> configs = listEffectiveCache(cmd.requireReqSysOrigin(), cmd.getReqClient().getClientName());
|
String sysOrigin = cmd.requireReqSysOrigin();
|
||||||
|
String countryCode = userProfile.getCountryCode();
|
||||||
|
|
||||||
|
List<BannerCache> list = bannerCacheService.listBannerCacheBySysOrigin(sysOrigin, reqClient, countryCode, () -> {
|
||||||
|
List<BannerConfig> configs = listEffectiveCache(sysOrigin, reqClient, countryCode);
|
||||||
if (CollectionUtils.isEmpty(configs)) {
|
if (CollectionUtils.isEmpty(configs)) {
|
||||||
return Lists.newArrayList();
|
return Lists.newArrayList();
|
||||||
}
|
}
|
||||||
return sysConfigAppConvertor.toListBannerCache(configs);
|
return sysConfigAppConvertor.toListBannerCache(configs);
|
||||||
}).stream().filter(
|
}).stream()
|
||||||
bannerCache -> StringUtils.isBlank(bannerCache.getRegions()) || bannerCache.getRegions()
|
.filter(bannerCache -> StringUtils.isBlank(bannerCache.getRegions()) || bannerCache.getRegions().contains(regionId))
|
||||||
.contains(regionId))
|
.filter(bannerCache -> StringUtils.isBlank(bannerCache.getCountryCode()) || bannerCache.getCountryCode().contains(countryCode))
|
||||||
.toList();
|
.toList();
|
||||||
return sysConfigAppConvertor.toListBannerCO(list);
|
return sysConfigAppConvertor.toListBannerCO(list);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<BannerConfig> listEffectiveCache(String sysOrigin, String platform) {
|
private List<BannerConfig> listEffectiveCache(String sysOrigin, String platform, String countryCode) {
|
||||||
return bannerConfigService.listEffective(sysOrigin, platform);
|
return bannerConfigService.listEffective(sysOrigin, platform, countryCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,10 @@ public class BannerCache implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String sysOrigin;
|
private String sysOrigin;
|
||||||
|
|
||||||
|
private String platform;
|
||||||
|
|
||||||
|
private String countryCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 封面.
|
* 封面.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -18,7 +18,8 @@ public interface BannerCacheService {
|
|||||||
* @param orElsePut 否则put
|
* @param orElsePut 否则put
|
||||||
* @return banner
|
* @return banner
|
||||||
*/
|
*/
|
||||||
List<BannerCache> listBannerCacheBySysOrigin(String sysOrigin, VoidCallable<List<BannerCache>> orElsePut);
|
List<BannerCache> listBannerCacheBySysOrigin(String sysOrigin, String reqClient, String countryCode,
|
||||||
|
VoidCallable<List<BannerCache>> orElsePut);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 移除banner.
|
* 移除banner.
|
||||||
|
|||||||
@ -27,15 +27,15 @@ public class BannerCacheServiceImpl implements BannerCacheService {
|
|||||||
private final RedisService redisService;
|
private final RedisService redisService;
|
||||||
|
|
||||||
|
|
||||||
private String getBannerKey(String sysOrigin) {
|
private String getBannerKey(String sysOrigin, String reqClient, String countryCode) {
|
||||||
return sysOrigin + "_" + BannerKeys.BANNER.name();
|
return String.join("_", BannerKeys.BANNER.name(), sysOrigin, reqClient, countryCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BannerCache> listBannerCacheBySysOrigin(String sysOrigin, VoidCallable<List<BannerCache>> orElsePut) {
|
public List<BannerCache> listBannerCacheBySysOrigin(String sysOrigin, String reqClient, String countryCode, VoidCallable<List<BannerCache>> orElsePut) {
|
||||||
|
|
||||||
return Optional
|
return Optional
|
||||||
.ofNullable(redisService.hashGet(BannerKeys.BANNER.getKey(), getBannerKey(sysOrigin + "22"),
|
.ofNullable(redisService.hashGet(BannerKeys.BANNER.getKey(), getBannerKey(sysOrigin, reqClient, countryCode),
|
||||||
new TypeReference<List<BannerCache>>() {
|
new TypeReference<List<BannerCache>>() {
|
||||||
}))
|
}))
|
||||||
.map(bannerCaches -> bannerCaches.stream()
|
.map(bannerCaches -> bannerCaches.stream()
|
||||||
@ -49,7 +49,7 @@ public class BannerCacheServiceImpl implements BannerCacheService {
|
|||||||
.orElseGet(() -> {
|
.orElseGet(() -> {
|
||||||
List<BannerCache> bannerCaches = orElsePut.apply();
|
List<BannerCache> bannerCaches = orElsePut.apply();
|
||||||
if (CollectionUtils.isNotEmpty(bannerCaches)) {
|
if (CollectionUtils.isNotEmpty(bannerCaches)) {
|
||||||
redisService.hashPut(BannerKeys.BANNER.getKey(), getBannerKey(sysOrigin),
|
redisService.hashPut(BannerKeys.BANNER.getKey(), getBannerKey(sysOrigin, reqClient, countryCode),
|
||||||
bannerCaches);
|
bannerCaches);
|
||||||
}
|
}
|
||||||
return bannerCaches;
|
return bannerCaches;
|
||||||
|
|||||||
@ -45,6 +45,12 @@ public class BannerConfig extends TimestampBaseEntity {
|
|||||||
@TableField("platform")
|
@TableField("platform")
|
||||||
private String platform;
|
private String platform;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国家编码
|
||||||
|
*/
|
||||||
|
@TableField("country_code")
|
||||||
|
private String countryCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 封面.
|
* 封面.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -22,7 +22,7 @@ public interface BannerConfigService extends BaseService<BannerConfig> {
|
|||||||
* @param sysOrigin 来源系统
|
* @param sysOrigin 来源系统
|
||||||
* @return ignore
|
* @return ignore
|
||||||
*/
|
*/
|
||||||
List<BannerConfig> listEffective(String sysOrigin, String platform);
|
List<BannerConfig> listEffective(String sysOrigin, String platform, String countryCode);
|
||||||
|
|
||||||
PageResult<BannerConfig> pageBanner(SysBannerConfigQryCmd query);
|
PageResult<BannerConfig> pageBanner(SysBannerConfigQryCmd query);
|
||||||
|
|
||||||
|
|||||||
@ -28,10 +28,15 @@ public class BannerConfigServiceImpl extends
|
|||||||
BaseServiceImpl<BannerConfigDAO, BannerConfig> implements BannerConfigService {
|
BaseServiceImpl<BannerConfigDAO, BannerConfig> implements BannerConfigService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BannerConfig> listEffective(String sysOrigin, String platform) {
|
public List<BannerConfig> listEffective(String sysOrigin, String platform, String countryCode) {
|
||||||
return query()
|
return query()
|
||||||
.eq(BannerConfig::getSysOrigin, sysOrigin)
|
.eq(BannerConfig::getSysOrigin, sysOrigin)
|
||||||
.in(BannerConfig::getPlatform, Arrays.asList(platform, ""))
|
.and(StringUtils.isNotBlank(platform), wrapper ->
|
||||||
|
wrapper.in(BannerConfig::getPlatform, "", platform)
|
||||||
|
)
|
||||||
|
.and(StringUtils.isNotBlank(countryCode), wrapper ->
|
||||||
|
wrapper.in(BannerConfig::getCountryCode, "", countryCode)
|
||||||
|
)
|
||||||
.gt(BannerConfig::getExpiredTime, LocalDateTime.now())
|
.gt(BannerConfig::getExpiredTime, LocalDateTime.now())
|
||||||
.eq(BannerConfig::getShowcase, Boolean.TRUE)
|
.eq(BannerConfig::getShowcase, Boolean.TRUE)
|
||||||
.orderByDesc(BannerConfig::getSort)
|
.orderByDesc(BannerConfig::getSort)
|
||||||
@ -42,6 +47,12 @@ public class BannerConfigServiceImpl extends
|
|||||||
public PageResult<BannerConfig> pageBanner(SysBannerConfigQryCmd query) {
|
public PageResult<BannerConfig> pageBanner(SysBannerConfigQryCmd query) {
|
||||||
return query()
|
return query()
|
||||||
.eq(StringUtils.isNotBlank(query.getSysOrigin()), BannerConfig::getSysOrigin, query.getSysOrigin())
|
.eq(StringUtils.isNotBlank(query.getSysOrigin()), BannerConfig::getSysOrigin, query.getSysOrigin())
|
||||||
|
.and(StringUtils.isNotBlank(query.getPlatform()), wrapper ->
|
||||||
|
wrapper.in(BannerConfig::getPlatform, "", query.getPlatform())
|
||||||
|
)
|
||||||
|
.and(StringUtils.isNotBlank(query.getCountryCode()), wrapper ->
|
||||||
|
wrapper.in(BannerConfig::getCountryCode, "", query.getCountryCode())
|
||||||
|
)
|
||||||
.eq(Objects.equals(query.getShowcase(), 1), BannerConfig::getShowcase, Boolean.TRUE)
|
.eq(Objects.equals(query.getShowcase(), 1), BannerConfig::getShowcase, Boolean.TRUE)
|
||||||
.gt(Objects.equals(query.getShowcase(), 1), BannerConfig::getExpiredTime, TimestampUtils.now())
|
.gt(Objects.equals(query.getShowcase(), 1), BannerConfig::getExpiredTime, TimestampUtils.now())
|
||||||
.eq(Objects.equals(query.getShowcase(), 2), BannerConfig::getShowcase, Boolean.FALSE)
|
.eq(Objects.equals(query.getShowcase(), 2), BannerConfig::getShowcase, Boolean.FALSE)
|
||||||
|
|||||||
@ -55,7 +55,7 @@ public class SysBannerConfigClientServiceImpl implements SysBannerConfigClientSe
|
|||||||
public void updateBanner(SysBannerConfigDTO bannerConfigDTO) {
|
public void updateBanner(SysBannerConfigDTO bannerConfigDTO) {
|
||||||
BannerConfig bannerConfig = getSysBannerConfig(bannerConfigDTO);
|
BannerConfig bannerConfig = getSysBannerConfig(bannerConfigDTO);
|
||||||
ResponseAssert.isTrue(CommonErrorCode.UPDATE_FAILURE,
|
ResponseAssert.isTrue(CommonErrorCode.UPDATE_FAILURE,
|
||||||
bannerConfigService.updateInfo(bannerConfig));
|
bannerConfigService.updateSelectiveById(bannerConfig));
|
||||||
bannerCacheService.remove(bannerConfigDTO.getSysOrigin());
|
bannerCacheService.remove(bannerConfigDTO.getSysOrigin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user