banner添加财富等级限制

This commit is contained in:
2025-06-24 18:26:37 +08:00
parent 2004b00589
commit 6d76351775
9 changed files with 48 additions and 125 deletions

View File

@@ -53,10 +53,10 @@ public class FirstPageBannerAdminService {
*/
public IPage<FirstPageBannerAdminVo> getFirstPageBannerList(Integer pageNumber, Integer pageSize, Byte skipType,
Byte bannerStatus, Byte bannerType, String beginTime,
String endTime, String appId, Integer partitionId, Integer regionId) {
String endTime, String appId, Integer partitionId, Integer regionId, String bannerName) {
QueryWrapper<FirstPageBanner> wrapper = new QueryWrapper<>();
LambdaQueryWrapper<FirstPageBanner> lambdaQueryWrapper = wrapper.lambda();
lambdaQueryWrapper.eq(skipType != null && skipType != 0, FirstPageBanner::getSkipType, skipType)
lambdaQueryWrapper.eq(skipType != null && skipType != -1, FirstPageBanner::getSkipType, skipType)
.eq(bannerStatus != null && bannerStatus != 0, FirstPageBanner::getBannerStatus, bannerStatus)
.eq(!StringUtils.isEmpty(appId), FirstPageBanner::getAppId, appId);
@@ -65,12 +65,15 @@ public class FirstPageBannerAdminService {
} else {
lambdaQueryWrapper.ne(FirstPageBanner::getBannerType, Constant.BannerType.BANNER_ACTIVITY);
}
if (StringUtils.isNotEmpty(bannerName)) {
lambdaQueryWrapper.like(FirstPageBanner::getBannerName, bannerName);
}
if (regionId != null && regionId != regionInfoService.ALL_REGION) {
lambdaQueryWrapper.eq(FirstPageBanner::getRegionId, regionId);
}
lambdaQueryWrapper.ge(!StringUtils.isEmpty(beginTime), FirstPageBanner::getStartTime, DateTimeUtil.convertStrToDate(beginTime))
.le(!StringUtils.isEmpty(endTime), FirstPageBanner::getEndTime, DateTimeUtil.convertStrToDate(endTime))
.like(partitionId != null, FirstPageBanner::getPartitionIds, partitionId)
.apply(partitionId != null && partitionId != 0, "JSON_CONTAINS(partition_ids, '"+ partitionId+"')")
.orderByAsc(FirstPageBanner::getSeqNo)
.orderByDesc(FirstPageBanner::getUpdateTime);
IPage<FirstPageBanner> iPage = new Page<>(pageNumber, pageSize);

View File

@@ -55,9 +55,10 @@ public class SecondPageBannerAdminService {
* @return
*/
public IPage<SecondPageBannerAdminVo> getSecondPageBannerList(Integer pageNumber, Integer pageSize, Byte skipType,
Byte bannerStatus, Byte bannerType, Integer timeStatus, String appId, Integer partitionId, Integer regionId) {
Byte bannerStatus, Byte bannerType, Integer timeStatus,
String appId, Integer partitionId, Integer regionId, String bannerName) {
LambdaQueryWrapper<SecondPageBanner> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(skipType != null && skipType != 0, SecondPageBanner::getSkipType, skipType)
lambdaQueryWrapper.eq(skipType != null && skipType != -1, SecondPageBanner::getSkipType, skipType)
.eq(bannerStatus != null && bannerStatus != 0, SecondPageBanner::getBannerStatus, bannerStatus)
.eq(!StringUtils.isEmpty(appId), SecondPageBanner::getAppId, appId);
@@ -74,11 +75,14 @@ public class SecondPageBannerAdminService {
} else if (timeStatus == 3) {//已过期
lambdaQueryWrapper.lt(SecondPageBanner::getEndTime, new Date());
}
if (StringUtils.isNotEmpty(bannerName)) {
lambdaQueryWrapper.like(SecondPageBanner::getBannerName, bannerName);
}
if (regionId != null && regionId != regionInfoService.ALL_REGION) {
lambdaQueryWrapper.eq(SecondPageBanner::getRegionId, regionId);
}
lambdaQueryWrapper.eq(SecondPageBanner::getDelTag, Constant.BannerDel.NO_DEL)
.like(partitionId != null, SecondPageBanner::getPartitionIds, partitionId)
.apply(partitionId != null && partitionId != 0, "JSON_CONTAINS(partition_ids, '"+ partitionId+"')")
.orderByAsc(SecondPageBanner::getSeqNo)
.orderByDesc(SecondPageBanner::getUpdateTime);
IPage<SecondPageBanner> iPage = new Page<>(pageNumber, pageSize);

View File

@@ -5,7 +5,6 @@ import com.accompany.admin.service.firstpage.SecondPageBannerAdminService;
import com.accompany.admin.service.system.AdminUserService;
import com.accompany.admin.service.userevent.vo.UserEventAdminVO;
import com.accompany.business.dto.DomainConfigDto;
import com.accompany.business.model.firstpage.FirstPageBanner;
import com.accompany.business.model.firstpage.SecondPageBanner;
import com.accompany.business.model.userevent.UserEvent;
import com.accompany.business.model.userevent.constant.UserEventConstant;
@@ -159,7 +158,7 @@ public class UserEventAdminService {
Long uid = userEvent.getUid();
if (eventStatus == UserEventConstant.EventStatus.PASS) {
baseSendService.sendSystemMsg(uid.toString(), I18NMessageSourceUtil.getMessage(I18nAlertEnum.USER_EVENT_PASS, uid));
this.addFirstBanner(userEvent, uid);
this.addSecondBanner(userEvent, uid);
} else if (eventStatus == UserEventConstant.EventStatus.REJECT) {
if (userEvent.getPayBanner() == UserEventConstant.PayBanner.YES) {
//扣钱
@@ -172,7 +171,7 @@ public class UserEventAdminService {
return BusiResult.success();
}
private void addFirstBanner(UserEvent userEvent, Long uid) {
private void addSecondBanner(UserEvent userEvent, Long uid) {
if (userEvent.getPayBanner() != UserEventConstant.PayBanner.YES) {
return;
}

View File

@@ -71,9 +71,9 @@ public class FirstPageBannerAdminController extends BaseController {
@GetMapping(value = "/list")
public Pagination<FirstPageBannerAdminVo> getFirstPageBannerList(Byte skipType, Byte bannerStatus, Byte bannerType,
String beginTime, String endTime, String appId,
Integer partitionId, Integer regionId) {
Integer partitionId, Integer regionId, String bannerName) {
IPage<FirstPageBannerAdminVo> pageInfo = firstPageBannerAdminService.getFirstPageBannerList(getPageNumber(), getPageSize(),
skipType, bannerStatus, bannerType,beginTime,endTime,appId, partitionId, regionId);
skipType, bannerStatus, bannerType,beginTime,endTime,appId, partitionId, regionId, bannerName);
return new Pagination<>(pageInfo);
}

View File

@@ -65,10 +65,10 @@ public class SecondPageBannerAdminController extends BaseController {
@GetMapping(value = "/list")
public Pagination<SecondPageBannerAdminVo> getSecondPageBannerList(Byte skipType, @RequestParam(defaultValue = "0") Byte bannerStatus,
Byte bannerType, @RequestParam(defaultValue = "0") Integer timeStatus,
String appId, Integer partitionId,
@RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "20") Integer pageSize, Integer regionId) {
String appId, Integer partitionId, @RequestParam(defaultValue = "1") Integer pageNo,
@RequestParam(defaultValue = "20") Integer pageSize, Integer regionId, String bannerName) {
IPage<SecondPageBannerAdminVo> pageInfo = secondPageBannerAdminService.getSecondPageBannerList(pageNo, pageSize,
skipType, bannerStatus, bannerType, timeStatus,appId, partitionId, regionId);
skipType, bannerStatus, bannerType, timeStatus,appId, partitionId, regionId, bannerName);
return new Pagination<>(pageInfo);
}

View File

@@ -57,8 +57,8 @@ public class FirstPageBanner implements Serializable {
private Date updateTime;
@TableField(value = "operator")
private String operator;
@TableField(value = "limit_level_exper")
private Long limitLevelExper;
@TableField(value = "limit_exp_level")
private Integer limitExpLevel;
@TableField(value = "show_type")
private Byte showType;
@TableField(value = "show_rule")

View File

@@ -57,8 +57,8 @@ public class SecondPageBanner implements Serializable {
private Date updateTime;
@TableField(value = "operator")
private String operator;
@TableField(value = "limit_level_exper")
private Long limitLevelExper;
@TableField(value = "limit_exp_level")
private Integer limitExpLevel;
@TableField(value = "show_type")
private Byte showType;
@TableField(value = "show_rule")

View File

@@ -1,12 +1,10 @@
package com.accompany.business.service.firstpage;
import cn.hutool.core.collection.CollectionUtil;
import com.accompany.business.model.LevelExperience;
import com.accompany.business.model.LevelExperienceExample;
import com.accompany.business.model.UserLevelExperience;
import com.accompany.business.model.firstpage.FirstPageBanner;
import com.accompany.business.mybatismapper.FirstPageBannerMapper;
import com.accompany.business.mybatismapper.LevelExperienceMapper;
import com.accompany.business.service.fillstrategy.strategy.FillConstant;
import com.accompany.business.service.fillstrategy.strategy.FillFactory;
import com.accompany.business.service.level.LevelService;
import com.accompany.business.service.user.UsersService;
@@ -46,8 +44,6 @@ public class FirstPageBannerService extends ServiceImpl<FirstPageBannerMapper, F
@Autowired
private UsersService usersService;
@Autowired
private LevelExperienceMapper levelExperienceMapper;
@Autowired
private LevelService levelService;
@Autowired
private FillFactory fillFactory;
@@ -104,6 +100,7 @@ public class FirstPageBannerService extends ServiceImpl<FirstPageBannerMapper, F
.collect(Collectors.toList());
}
List<FirstPageBannerVo> bannerVos = new ArrayList<>();
UserLevelExperience userExper = levelService.getUserExper(uid);
list.forEach(banner -> {
if (StringUtils.isNotBlank(banner.getNoShowChannels()) && StringUtils.isNotBlank(deviceInfo.getChannel())) {
// 检查是否不展示的渠道包
@@ -123,15 +120,14 @@ public class FirstPageBannerService extends ServiceImpl<FirstPageBannerMapper, F
return;
}
}
FirstPageBannerVo bannerVo = convertToBannerVo(banner);
if (banner.getSkipType() == 3 && banner.getLimitLevelExper() != null) {
UserLevelExperience userExper = levelService.getUserExper(uid);
if (userExper == null
|| (bannerVo.getActLimitLevelSeq() != null && bannerVo.getActLimitLevelSeq() > userExper.getLevelExperience().getLevelSeq()
&& banner.getShowRule().equals(Constant.ActShowRule.REACH_LIMIT_LEVEL_SHOW))) {
return;
}
if (banner.getSkipType() == FillConstant.SkipType.h5Link &&
Optional.ofNullable(banner.getLimitExpLevel())
.map(limitExpLevel -> userExper != null &&
userExper.getLevelExperience().getLevelSeq() < limitExpLevel)
.orElse(false)) {
return;
}
FirstPageBannerVo bannerVo = convertToBannerVo(banner);
bannerVo.setFillVo(fillFactory.getStrategy(banner.getSkipType()).calFillVo(partitionId));
bannerVos.add(bannerVo);
});
@@ -147,55 +143,19 @@ public class FirstPageBannerService extends ServiceImpl<FirstPageBannerMapper, F
private FirstPageBannerVo convertToBannerVo(FirstPageBanner banners) {
FirstPageBannerVo firstPageBannerVo = new FirstPageBannerVo();
BeanUtils.copyProperties(banners, firstPageBannerVo);
if (banners.getLimitLevelExper() != null) {
log.info("准备处理活动等级限制信息, firstPageBannerVo:{}, banners:{}", JSON.toJSONString(firstPageBannerVo), banners);
handleActLimitExper(firstPageBannerVo, banners);
log.info("完成处理活动等级限制信息, firstPageBannerVo:{}", firstPageBannerVo);
}
if (banners.getSkipType() == 2) {
firstPageBannerVo.setActLimitLevelSeq(banners.getLimitExpLevel());
if (banners.getSkipType() == FillConstant.SkipType.room) {
Users users = usersService.getUserByErbanNo(Long.valueOf(banners.getSkipUri()));
if (null != users) {
firstPageBannerVo.setSkipUri(users.getUid().toString());
}
}
if (banners.getSkipType() == 3 && firstPageBannerVo.getShowType() == null) {
if (banners.getSkipType() == FillConstant.SkipType.h5Link && firstPageBannerVo.getShowType() == null) {
firstPageBannerVo.setShowType(Constant.ActShowType.HALF_SCREEN);
}
return firstPageBannerVo;
}
/**
* 处理活动等级限制
*
* @param firstPageBannerVo
* @param firstPageBanner
*/
private void handleActLimitExper(FirstPageBannerVo firstPageBannerVo, FirstPageBanner firstPageBanner) {
LevelExperience levelInfo = getActLimitLevelInfo(firstPageBanner.getLimitLevelExper());
if (null != levelInfo) {
firstPageBannerVo.setActLimitLevelSeq(levelInfo.getLevelSeq());
firstPageBannerVo.setActLimitLevelName(levelInfo.getLevelName());
}
}
/**
* 获取活动的等级限制信息
*
* @param limitExper
* @return
*/
public LevelExperience getActLimitLevelInfo(Long limitExper) {
LevelExperienceExample levelExperienceExample = new LevelExperienceExample();
levelExperienceExample.createCriteria().andStatusEqualTo(Constant.status.valid)
.andAmountEqualTo(limitExper);
List<LevelExperience> levelExperienceList = levelExperienceMapper.selectByExample(levelExperienceExample);
LevelExperience levelExperience = null;
if (!CollectionUtils.isEmpty(levelExperienceList)) {
levelExperience = levelExperienceList.get(0);
}
return levelExperience;
}
/**
* 根据id获取banner
*

View File

@@ -1,12 +1,10 @@
package com.accompany.business.service.firstpage;
import cn.hutool.core.collection.CollectionUtil;
import com.accompany.business.model.LevelExperience;
import com.accompany.business.model.LevelExperienceExample;
import com.accompany.business.model.UserLevelExperience;
import com.accompany.business.model.firstpage.SecondPageBanner;
import com.accompany.business.mybatismapper.LevelExperienceMapper;
import com.accompany.business.mybatismapper.SecondPageBannerMapper;
import com.accompany.business.service.fillstrategy.strategy.FillConstant;
import com.accompany.business.service.level.LevelService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.firstpage.SecondPageBannerVo;
@@ -18,11 +16,8 @@ import com.accompany.common.utils.StringUtils;
import com.accompany.core.model.Users;
import com.accompany.core.service.common.JedisService;
import com.accompany.core.service.region.RegionInfoService;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
@@ -47,8 +42,6 @@ public class SecondPageBannerService extends ServiceImpl<SecondPageBannerMapper,
@Autowired
private UsersService usersService;
@Autowired
private LevelExperienceMapper levelExperienceMapper;
@Autowired
private LevelService levelService;
@Autowired
private RegionInfoService regionInfoService;
@@ -105,6 +98,7 @@ public class SecondPageBannerService extends ServiceImpl<SecondPageBannerMapper,
}
List<SecondPageBannerVo> bannerVos = new ArrayList<>();
UserLevelExperience userExper = levelService.getUserExper(uid);
list.forEach(banner -> {
if (StringUtils.isNotBlank(banner.getNoShowChannels()) && StringUtils.isNotBlank(deviceInfo.getChannel())) {
// 检查是否不展示的渠道包
@@ -124,15 +118,14 @@ public class SecondPageBannerService extends ServiceImpl<SecondPageBannerMapper,
return;
}
}
SecondPageBannerVo bannerVo = convertToBannerVo(banner);
if (banner.getSkipType() == 3 && banner.getLimitLevelExper() != null) {
UserLevelExperience userExper = levelService.getUserExper(uid);
if (userExper == null
|| (bannerVo.getActLimitLevelSeq() != null && bannerVo.getActLimitLevelSeq() > userExper.getLevelExperience().getLevelSeq()
&& banner.getShowRule().equals(Constant.ActShowRule.REACH_LIMIT_LEVEL_SHOW))) {
return;
}
if (banner.getSkipType() == FillConstant.SkipType.h5Link &&
Optional.ofNullable(banner.getLimitExpLevel())
.map(limitExpLevel -> userExper != null &&
userExper.getLevelExperience().getLevelSeq() < limitExpLevel)
.orElse(false)) {
return;
}
SecondPageBannerVo bannerVo = convertToBannerVo(banner);
bannerVos.add(bannerVo);
});
return bannerVos;
@@ -147,53 +140,17 @@ public class SecondPageBannerService extends ServiceImpl<SecondPageBannerMapper,
private SecondPageBannerVo convertToBannerVo(SecondPageBanner banners) {
SecondPageBannerVo firstPageBannerVo = new SecondPageBannerVo();
BeanUtils.copyProperties(banners, firstPageBannerVo);
if (banners.getLimitLevelExper() != null) {
log.info("准备处理活动等级限制信息, firstPageBannerVo:{}, banners:{}", JSON.toJSONString(firstPageBannerVo), banners);
handleActLimitExper(firstPageBannerVo, banners);
log.info("完成处理活动等级限制信息, firstPageBannerVo:{}", firstPageBannerVo);
}
if (banners.getSkipType() == 2) {
firstPageBannerVo.setActLimitLevelSeq(banners.getLimitExpLevel());
if (banners.getSkipType() == FillConstant.SkipType.room) {
Users users = usersService.getUserByErbanNo(Long.valueOf(banners.getSkipUri()));
if (null != users) {
firstPageBannerVo.setSkipUri(users.getUid().toString());
}
}
if (banners.getSkipType() == 3 && firstPageBannerVo.getShowType() == null) {
if (banners.getSkipType() == FillConstant.SkipType.h5Link && firstPageBannerVo.getShowType() == null) {
firstPageBannerVo.setShowType(Constant.ActShowType.HALF_SCREEN);
}
return firstPageBannerVo;
}
/**
* 处理活动等级限制
*
* @param firstPageBannerVo
* @param firstPageBanner
*/
private void handleActLimitExper(SecondPageBannerVo firstPageBannerVo, SecondPageBanner firstPageBanner) {
LevelExperience levelInfo = getActLimitLevelInfo(firstPageBanner.getLimitLevelExper());
if (null != levelInfo) {
firstPageBannerVo.setActLimitLevelSeq(levelInfo.getLevelSeq());
firstPageBannerVo.setActLimitLevelName(levelInfo.getLevelName());
}
}
/**
* 获取活动的等级限制信息
*
* @param limitExper
* @return
*/
public LevelExperience getActLimitLevelInfo(Long limitExper) {
LevelExperienceExample levelExperienceExample = new LevelExperienceExample();
levelExperienceExample.createCriteria().andStatusEqualTo(Constant.status.valid)
.andAmountEqualTo(limitExper);
List<LevelExperience> levelExperienceList = levelExperienceMapper.selectByExample(levelExperienceExample);
LevelExperience levelExperience = null;
if (!CollectionUtils.isEmpty(levelExperienceList)) {
levelExperience = levelExperienceList.get(0);
}
return levelExperience;
}
}