店铺广告接口
This commit is contained in:
parent
75168d7a82
commit
ab23223e3d
|
|
@ -0,0 +1,91 @@
|
|||
package com.czg.controller.admin;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.czg.account.dto.ad.ShopAdDTO;
|
||||
import com.czg.account.entity.ShopAd;
|
||||
import com.czg.account.service.ShopAdService;
|
||||
import com.czg.annotation.SaAdminCheckPermission;
|
||||
import com.czg.exception.ApiNotPrintException;
|
||||
import com.czg.resp.CzgResult;
|
||||
import com.czg.sa.StpKit;
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 小程序广告管理
|
||||
* @author Administrator
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/admin/shopAd")
|
||||
public class ShopAdController {
|
||||
@Resource
|
||||
private ShopAdService shopAdService;
|
||||
|
||||
/**
|
||||
* 小程序广告列表
|
||||
* @param showPosition 展示位置 home首页,make_order点餐页
|
||||
* @param status 状态 0未启用,1已启用
|
||||
* @return 列表
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "shopAd:list", name = "小程序广告列表")
|
||||
@GetMapping
|
||||
public CzgResult<List<ShopAd>> list(String showPosition, Integer status) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper().eq(ShopAd::getShopId, StpKit.USER.getShopId());
|
||||
if (StrUtil.isNotBlank(showPosition)) {
|
||||
queryWrapper.eq(ShopAd::getShowPosition, showPosition);
|
||||
}
|
||||
|
||||
queryWrapper.eq(ShopAd::getStatus, status);
|
||||
return CzgResult.success(shopAdService.list(queryWrapper));
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序广告详情
|
||||
* @param id adId
|
||||
* @return 详情
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "shopAd:detail", name = "小程序广告详情")
|
||||
@GetMapping("/detail")
|
||||
public CzgResult<ShopAd> detail(@RequestParam Integer id) {
|
||||
return CzgResult.success(shopAdService.getOne(new QueryWrapper().eq(ShopAd::getId, id).eq(ShopAd::getShopId, StpKit.USER.getShopId())));
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序广告编辑
|
||||
* @return 是否成功
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "shopAd:list", name = "小程序广告编辑")
|
||||
@PutMapping
|
||||
public CzgResult<Boolean> edit(@RequestBody @Validated(UpdateGroup.class) ShopAdDTO shopAdEditDTO) {
|
||||
ShopAd shopAd = BeanUtil.copyProperties(shopAdEditDTO, ShopAd.class);
|
||||
long count = shopAdService.count(new QueryWrapper().eq(ShopAd::getShopId, StpKit.USER.getShopId()).like(ShopAd::getShowPosition, shopAdEditDTO.getShowPosition()).ne(ShopAd::getId, shopAdEditDTO.getId()));
|
||||
if (count > 0) {
|
||||
return CzgResult.failure("小程序此位置已存在广告");
|
||||
}
|
||||
return CzgResult.success(shopAdService.update(shopAd, new QueryWrapper().eq(ShopAd::getId, shopAdEditDTO.getId()).eq(ShopAd::getShopId, StpKit.USER.getShopId())));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 小程序广告添加
|
||||
* @return 是否成功
|
||||
*/
|
||||
@SaAdminCheckPermission(value = "shopAd:add", name = "小程序广告添加")
|
||||
@PostMapping
|
||||
public CzgResult<Boolean> add(@RequestBody @Validated(InsertGroup.class) ShopAdDTO shopAdEditDTO) {
|
||||
long count = shopAdService.count(new QueryWrapper().eq(ShopAd::getShopId, StpKit.USER.getShopId()).like(ShopAd::getShowPosition, shopAdEditDTO.getShowPosition()));
|
||||
if (count > 0) {
|
||||
return CzgResult.failure("小程序此位置已存在广告");
|
||||
}
|
||||
ShopAd shopAd = BeanUtil.copyProperties(shopAdEditDTO, ShopAd.class);
|
||||
shopAd.setShopId(StpKit.USER.getShopId());
|
||||
return CzgResult.success(shopAdService.save(shopAd));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
|
||||
package com.czg.account.dto.ad;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.fastjson2.annotation.JSONField;
|
||||
import java.io.Serial;
|
||||
|
||||
import com.czg.validator.group.InsertGroup;
|
||||
import com.czg.validator.group.UpdateGroup;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 店铺广告 实体类。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-02-26
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ShopAdDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 自增id
|
||||
*/
|
||||
@NotNull(message = "id不为空", groups = {UpdateGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 广告图片地址
|
||||
*/
|
||||
private String imgUrl;
|
||||
|
||||
/**
|
||||
* 跳转页面路径
|
||||
*/
|
||||
private String linkPath;
|
||||
|
||||
/**
|
||||
* 广告展示圆角
|
||||
*/
|
||||
private Integer borderRadius;
|
||||
|
||||
/**
|
||||
* 弹窗展示位置:home首页,make_order点餐页
|
||||
*/
|
||||
@NotBlank(message = "展示位置不为空", groups = InsertGroup.class)
|
||||
private String showPosition;
|
||||
|
||||
/**
|
||||
* 显示频率:only_one 仅首次展示, every_show 每次打开都展示,every_day 每天展示一次,three_day 每三天展示一次, seven_day 每七天展示一次, thirty_day 没30天展示一次
|
||||
*/
|
||||
@NotBlank(message = "显示频率不为空", groups = InsertGroup.class)
|
||||
private String frequency;
|
||||
|
||||
/**
|
||||
* 广告状态:0未启用,1已启用
|
||||
*/
|
||||
@NotNull(message = "广告状态不为空", groups = InsertGroup.class)
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
package com.czg.account.entity;
|
||||
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 店铺广告 实体类。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-02-26
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("tb_shop_ad")
|
||||
public class ShopAd implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 自增id
|
||||
*/
|
||||
@Id(keyType = KeyType.Auto)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 店铺id,如果是通用广告则为0
|
||||
*/
|
||||
private Long shopId;
|
||||
|
||||
/**
|
||||
* 广告图片地址
|
||||
*/
|
||||
private String imgUrl;
|
||||
|
||||
/**
|
||||
* 跳转页面路径
|
||||
*/
|
||||
private String linkPath;
|
||||
|
||||
/**
|
||||
* 广告展示圆角
|
||||
*/
|
||||
private Integer borderRadius;
|
||||
|
||||
/**
|
||||
* 弹窗展示位置:home首页,make_order点餐页
|
||||
*/
|
||||
private String showPosition;
|
||||
|
||||
/**
|
||||
* 显示频率:only_one 仅首次展示, every_show 每次打开都展示,every_day 每天展示一次,three_day 每三天展示一次, seven_day 每七天展示一次, thirty_day 没30天展示一次
|
||||
*/
|
||||
private String frequency;
|
||||
|
||||
/**
|
||||
* 广告状态:0未启用,1已启用
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@Column(onInsertValue = "now()", onUpdateValue = "now()")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.account.service;
|
||||
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.czg.account.entity.ShopAd;
|
||||
|
||||
/**
|
||||
* 店铺广告 服务层。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-02-26
|
||||
*/
|
||||
public interface ShopAdService extends IService<ShopAd> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.czg.service.account.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.account.entity.ShopAd;
|
||||
|
||||
/**
|
||||
* 店铺广告 映射层。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-02-26
|
||||
*/
|
||||
public interface ShopAdMapper extends BaseMapper<ShopAd> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package com.czg.service.account.service.impl;
|
||||
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.account.entity.ShopAd;
|
||||
import com.czg.account.service.ShopAdService;
|
||||
import com.czg.service.account.mapper.ShopAdMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 店铺广告 服务层实现。
|
||||
*
|
||||
* @author zs
|
||||
* @since 2025-02-26
|
||||
*/
|
||||
@Service
|
||||
public class ShopAdServiceImpl extends ServiceImpl<ShopAdMapper, ShopAd> implements ShopAdService{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.czg.service.account.mapper.ShopAdMapper">
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue