广告校验,前端补充,bug修复

This commit is contained in:
SjS 2025-04-22 11:50:16 +08:00
parent ffe2d1b3bb
commit dd2aef808e
8 changed files with 50 additions and 10 deletions

View File

@ -1,5 +1,8 @@
package com.ruoyi.bst.ad.domain; package com.ruoyi.bst.ad.domain;
import com.ruoyi.common.constants.DictType;
import com.ruoyi.common.core.validate.ValidGroup;
import com.ruoyi.common.valid.DictValid;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
@ -7,6 +10,9 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@ -30,8 +36,8 @@ public class Ad extends BaseEntity
@ApiModelProperty("广告类型 1活动推广") @ApiModelProperty("广告类型 1活动推广")
private String type; private String type;
@ApiModelProperty("广告图片") @ApiModelProperty("广告图片")
@NotBlank(message = "广告图片不能为空",groups = {ValidGroup.Create.class})
private String picture; private String picture;
@Excel(name = "运营商id") @Excel(name = "运营商id")
@ -40,14 +46,19 @@ public class Ad extends BaseEntity
@Excel(name = "运营区id") @Excel(name = "运营区id")
@ApiModelProperty("运营区id") @ApiModelProperty("运营区id")
@NotNull(message = "运营区ID不能为空", groups = {ValidGroup.Create.class})
@Min(value = 1, message = "运营区ID需大于0")
private Long areaId; private Long areaId;
@Excel(name = "跳转链接") @Excel(name = "跳转链接")
@ApiModelProperty("跳转链接") @ApiModelProperty("跳转链接")
@NotBlank(message = "跳转链接不能为空", groups = {ValidGroup.Create.class})
private String url; private String url;
@Excel(name = "跳转类型1外链跳转2站内跳转") @Excel(name = "跳转类型1外链跳转2站内跳转")
@ApiModelProperty("跳转类型1外链跳转2站内跳转") @ApiModelProperty("跳转类型1外链跳转2站内跳转")
@NotBlank(message = "跳转类型不能为空", groups = {ValidGroup.Create.class})
@DictValid(type = DictType.URL_TYPE, message = "非法的跳转类型")
private String urlType; private String urlType;
@Excel(name = "审核状态") @Excel(name = "审核状态")

View File

@ -46,8 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
su.agent_id su.agent_id
from bst_ad bad from bst_ad bad
left join bst_area ba on bad.area_id = ba.id left join bst_area ba on bad.area_id = ba.id
left join bst_order bo ON ba.id = bo.area_id left join sys_user su on ba.user_id = su.user_id
left join sys_user su on bo.user_id = su.user_id
left join sys_user su_verify on bad.verify_by = su_verify.user_id left join sys_user su_verify on bad.verify_by = su_verify.user_id
</sql> </sql>

View File

@ -13,4 +13,6 @@ public interface AdConverter {
AdQuery toAdAdminVO(); AdQuery toAdAdminVO();
AdQuery toAdStoreVO(); AdQuery toAdStoreVO();
Ad toPoByCreate(Ad ad);
} }

View File

@ -4,6 +4,7 @@ import com.ruoyi.bst.ad.domain.Ad;
import com.ruoyi.bst.ad.domain.AdQuery; import com.ruoyi.bst.ad.domain.AdQuery;
import com.ruoyi.bst.ad.enums.AdBlong; import com.ruoyi.bst.ad.enums.AdBlong;
import com.ruoyi.bst.ad.service.AdConverter; import com.ruoyi.bst.ad.service.AdConverter;
import com.ruoyi.bst.area.domain.Area;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -34,4 +35,20 @@ public class AdConverterImpl implements AdConverter {
return query; return query;
} }
@Override
public Ad toPoByCreate(Ad data) {
if (data == null) {
return null;
}
Ad po = new Ad();
// 基础信息
po.setAreaId(data.getAreaId());
po.setType(data.getType());
po.setPicture(data.getPicture());
po.setBelong(data.getBelong());
po.setUrl(data.getUrl());
po.setUrlType(data.getUrlType());
return po;
}
} }

View File

@ -80,14 +80,18 @@ public class AdServiceImpl implements AdService
@Override @Override
public int insertAd(Ad ad) public int insertAd(Ad ad)
{ {
// 默认设置为商户广告
if (ad.getBelong() == null || ad.getBelong().equals("")){ if (ad.getBelong() == null || ad.getBelong().equals("")){
ad.setBelong(AdBlong.STORE.getCode()); ad.setBelong(AdBlong.STORE.getCode());
} }
AdQuery query = new AdQuery(); // 商户广告存在上限
query.setAreaId(ad.getAreaId()); if (ad.getBelong().equals(AdBlong.STORE.getCode())){
if (ad.getAreaId() != null){
AreaVO area = areaService.selectAreaById(ad.getAreaId()); AreaVO area = areaService.selectAreaById(ad.getAreaId());
ad.setStoreId(area.getUserId()); ad.setStoreId(area.getUserId());
// 条件查询广告
AdQuery query = new AdQuery();
query.setAreaId(ad.getAreaId());
query.setDeleted(false);
ServiceUtil.assertion(adMapper.selectOne(query)!=null,"当前运营区存在广告已达上限"); ServiceUtil.assertion(adMapper.selectOne(query)!=null,"当前运营区存在广告已达上限");
} }
ad.setCreateTime(DateUtils.getNowDate()); ad.setCreateTime(DateUtils.getNowDate());

View File

@ -18,4 +18,6 @@ public class DictType {
public static final String SUIT_TYPE = "suit_type"; public static final String SUIT_TYPE = "suit_type";
// 支付渠道类型 // 支付渠道类型
public static final String CHANNEL_TYPE = "channel_type"; public static final String CHANNEL_TYPE = "channel_type";
// 广告跳转类型
public static final String URL_TYPE = "ad_url_type";
} }

View File

@ -1,6 +1,7 @@
package com.ruoyi.web.app; package com.ruoyi.web.app;
import com.ruoyi.bst.ad.domain.AdQuery; import com.ruoyi.bst.ad.domain.AdQuery;
import com.ruoyi.bst.ad.enums.AdVerifyStatus;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -25,6 +26,7 @@ public class AppAdController extends BaseController {
@Anonymous @Anonymous
public AjaxResult getAd(AdQuery query) { public AjaxResult getAd(AdQuery query) {
query.setUserId(getUserId()); query.setUserId(getUserId());
query.setAuditStatus(AdVerifyStatus.PASSED.getCode());
return success(adService.toAppVOList(query)); return success(adService.toAppVOList(query));
} }

View File

@ -5,6 +5,7 @@ import com.ruoyi.bst.ad.domain.AdQuery;
import com.ruoyi.bst.ad.domain.AdVO; import com.ruoyi.bst.ad.domain.AdVO;
import com.ruoyi.bst.ad.domain.AdVerifyDTO; import com.ruoyi.bst.ad.domain.AdVerifyDTO;
import com.ruoyi.bst.ad.enums.AdBlong; import com.ruoyi.bst.ad.enums.AdBlong;
import com.ruoyi.bst.ad.enums.AdVerifyStatus;
import com.ruoyi.bst.ad.service.AdConverter; import com.ruoyi.bst.ad.service.AdConverter;
import com.ruoyi.bst.ad.service.AdService; import com.ruoyi.bst.ad.service.AdService;
import com.ruoyi.bst.ad.service.AdValidator; import com.ruoyi.bst.ad.service.AdValidator;
@ -15,6 +16,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.ValidGroup;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.UserType; import com.ruoyi.common.enums.UserType;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
@ -60,9 +62,9 @@ public class AdController extends BaseController
{ {
startPage(); startPage();
startOrderBy(); startOrderBy();
query.setDeleted(false);
query.setUserId(getUserId());
query.setScope(true); query.setScope(true);
query.setUserId(getUserId());
query.setDeleted(false);
return getDataTable(adService.selectAdList(query)); return getDataTable(adService.selectAdList(query));
} }
@ -95,8 +97,9 @@ public class AdController extends BaseController
@PreAuthorize("@ss.hasPermi('bst:ad:add')") @PreAuthorize("@ss.hasPermi('bst:ad:add')")
@Log(title = "广告", businessType = BusinessType.INSERT) @Log(title = "广告", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody Ad ad) public AjaxResult add(@Validated(ValidGroup.Create.class) @RequestBody Ad ad)
{ {
ad = adConverter.toPoByCreate(ad);
return toAjax(adService.insertAd(ad)); return toAjax(adService.insertAd(ad));
} }
@ -106,7 +109,7 @@ public class AdController extends BaseController
@PreAuthorize("@ss.hasPermi('bst:ad:edit')") @PreAuthorize("@ss.hasPermi('bst:ad:edit')")
@Log(title = "广告", businessType = BusinessType.UPDATE) @Log(title = "广告", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody Ad ad) public AjaxResult edit(@Validated(ValidGroup.Update.class)@RequestBody Ad ad)
{ {
if (!adValidator.canEdit(ad.getAdId())){ if (!adValidator.canEdit(ad.getAdId())){
return AjaxResult.error("您没有权限修改id为" + ad.getAdId() + "的广告信息"); return AjaxResult.error("您没有权限修改id为" + ad.getAdId() + "的广告信息");