From ab23223e3db8f7e32dbe90a3a1dd03983e54b8a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 26 Feb 2025 16:36:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=97=E9=93=BA=E5=B9=BF=E5=91=8A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/ShopAdController.java | 91 +++++++++++++++++++ .../com/czg/account/dto/ad/ShopAdDTO.java | 74 +++++++++++++++ .../java/com/czg/account/entity/ShopAd.java | 91 +++++++++++++++++++ .../czg/account/service/ShopAdService.java | 14 +++ .../service/account/mapper/ShopAdMapper.java | 14 +++ .../service/impl/ShopAdServiceImpl.java | 18 ++++ .../main/resources/mapper/ShopAdMapper.xml | 7 ++ 7 files changed, 309 insertions(+) create mode 100644 cash-api/account-server/src/main/java/com/czg/controller/admin/ShopAdController.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/dto/ad/ShopAdDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopAd.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopAdService.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopAdMapper.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopAdServiceImpl.java create mode 100644 cash-service/account-service/src/main/resources/mapper/ShopAdMapper.xml diff --git a/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopAdController.java b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopAdController.java new file mode 100644 index 00000000..766662cd --- /dev/null +++ b/cash-api/account-server/src/main/java/com/czg/controller/admin/ShopAdController.java @@ -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(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 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 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 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)); + } +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ad/ShopAdDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ad/ShopAdDTO.java new file mode 100644 index 00000000..1f8d5855 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/dto/ad/ShopAdDTO.java @@ -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; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopAd.java b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopAd.java new file mode 100644 index 00000000..db61e743 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/entity/ShopAd.java @@ -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; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopAdService.java b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopAdService.java new file mode 100644 index 00000000..ab5d385f --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/account/service/ShopAdService.java @@ -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 { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopAdMapper.java b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopAdMapper.java new file mode 100644 index 00000000..2d49ff35 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/mapper/ShopAdMapper.java @@ -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 { + +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopAdServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopAdServiceImpl.java new file mode 100644 index 00000000..b609f5a0 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/account/service/impl/ShopAdServiceImpl.java @@ -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 implements ShopAdService{ + +} diff --git a/cash-service/account-service/src/main/resources/mapper/ShopAdMapper.xml b/cash-service/account-service/src/main/resources/mapper/ShopAdMapper.xml new file mode 100644 index 00000000..a7fb7340 --- /dev/null +++ b/cash-service/account-service/src/main/resources/mapper/ShopAdMapper.xml @@ -0,0 +1,7 @@ + + + + +