diff --git a/chenhai-admin/src/main/java/com/chenhai/ChenHaiApplication.java b/chenhai-admin/src/main/java/com/chenhai/ChenHaiApplication.java index 4205265..ad8ac6d 100644 --- a/chenhai-admin/src/main/java/com/chenhai/ChenHaiApplication.java +++ b/chenhai-admin/src/main/java/com/chenhai/ChenHaiApplication.java @@ -16,15 +16,13 @@ public class ChenHaiApplication { // System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(ChenHaiApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); + System.out.println("(◕‿◕)ノ゙ 与牧同行启动成功 (◠‿◠✿)\n" + + " ╭━━━╮╭━━━━╮╭━━━━╮╭━━━╮\n" + + " ┃╭━╮┃┃╭╮╭╮┃┃╭╮╭╮┃┃╭━╮┃\n" + + " ┃┃ ╰╯┃┃┃┃┃┃┃┃┃┃┃┃┃┃ ┃┃\n" + + " ┃┃╭━╮┃┃┃┃┃┃┃┃┃┃┃┃┃┃ ┃┃\n" + + " ┃╰┻━┃┃┃┃┃┃┃┃┃┃┃┃┃┃╰━╯┃\n" + + " ╰━━━╯╰╯╰╯╰╯╰╯╰╯╰╯╰━━━╯\n" + + " 与牧相伴,一路同行"); } } diff --git a/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/CarouselAdsController.java b/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/CarouselAdsController.java new file mode 100644 index 0000000..8c35878 --- /dev/null +++ b/chenhai-admin/src/main/java/com/chenhai/web/controller/muhu/CarouselAdsController.java @@ -0,0 +1,98 @@ +package com.chenhai.web.controller.muhu; + +import com.chenhai.common.annotation.Log; +import com.chenhai.common.core.controller.BaseController; +import com.chenhai.common.core.domain.AjaxResult; +import com.chenhai.common.core.page.TableDataInfo; +import com.chenhai.common.enums.BusinessType; +import com.chenhai.common.utils.poi.ExcelUtil; +import com.chenhai.muhu.domain.CarouselAds; +import com.chenhai.muhu.service.ICarouselAdsService; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 轮播广告Controller + * + * @author ruoyi + * @date 2025-12-26 + */ +@RestController +@RequestMapping("/system/ads") +public class CarouselAdsController extends BaseController +{ + @Autowired + private ICarouselAdsService carouselAdsService; + + /** + * 查询轮播广告列表 + */ + @PreAuthorize("@ss.hasPermi('system:ads:list')") + @GetMapping("/list") + public TableDataInfo list(CarouselAds carouselAds) + { + startPage(); + List list = carouselAdsService.selectCarouselAdsList(carouselAds); + return getDataTable(list); + } + + /** + * 导出轮播广告列表 + */ + @PreAuthorize("@ss.hasPermi('system:ads:export')") + @Log(title = "轮播广告", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CarouselAds carouselAds) + { + List list = carouselAdsService.selectCarouselAdsList(carouselAds); + ExcelUtil util = new ExcelUtil(CarouselAds.class); + util.exportExcel(response, list, "轮播广告数据"); + } + + /** + * 获取轮播广告详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:ads:query')") + @GetMapping(value = "/{carouselId}") + public AjaxResult getInfo(@PathVariable("carouselId") Long carouselId) + { + return success(carouselAdsService.selectCarouselAdsByCarouselId(carouselId)); + } + + /** + * 新增轮播广告 + */ + @PreAuthorize("@ss.hasPermi('system:ads:add')") + @Log(title = "轮播广告", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CarouselAds carouselAds) + { + return toAjax(carouselAdsService.insertCarouselAds(carouselAds)); + } + + /** + * 修改轮播广告 + */ + @PreAuthorize("@ss.hasPermi('system:ads:edit')") + @Log(title = "轮播广告", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CarouselAds carouselAds) + { + return toAjax(carouselAdsService.updateCarouselAds(carouselAds)); + } + + /** + * 删除轮播广告 + */ + @PreAuthorize("@ss.hasPermi('system:ads:remove')") + @Log(title = "轮播广告", businessType = BusinessType.DELETE) + @DeleteMapping("/{carouselIds}") + public AjaxResult remove(@PathVariable Long[] carouselIds) + { + return toAjax(carouselAdsService.deleteCarouselAdsByCarouselIds(carouselIds)); + } +} diff --git a/chenhai-system/src/main/java/com/chenhai/muhu/domain/CarouselAds.java b/chenhai-system/src/main/java/com/chenhai/muhu/domain/CarouselAds.java new file mode 100644 index 0000000..c435ef6 --- /dev/null +++ b/chenhai-system/src/main/java/com/chenhai/muhu/domain/CarouselAds.java @@ -0,0 +1,494 @@ +package com.chenhai.muhu.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.chenhai.common.annotation.Excel; +import com.chenhai.common.core.domain.BaseEntity; + +/** + * 轮播广告对象 carousel_ads + * + * @author ruoyi + * @date 2025-12-26 + */ +public class CarouselAds extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 轮播ID */ + private Long carouselId; + + /** 广告标题 */ + @Excel(name = "广告标题") + private String title; + + /** 广告副标题 */ + @Excel(name = "广告副标题") + private String subtitle; + + /** 图片URL */ + @Excel(name = "图片URL") + private String imageUrl; + + /** 图片替代文本 */ + @Excel(name = "图片替代文本") + private String altText; + + /** 图片尺寸 */ + @Excel(name = "图片尺寸") + private String imageSize; + + /** 背景色 */ + @Excel(name = "背景色") + private String bgColor; + + /** 文字颜色 */ + @Excel(name = "文字颜色") + private String textColor; + + /** 按钮文字 */ + @Excel(name = "按钮文字") + private String buttonText; + + /** 按钮CSS类 */ + @Excel(name = "按钮CSS类") + private String buttonClass; + + /** 链接类型 */ + @Excel(name = "链接类型") + private String linkType; + + /** 跳转链接 */ + @Excel(name = "跳转链接") + private String linkUrl; + + /** 链接参数 */ + @Excel(name = "链接参数") + private String linkParams; + + /** 排序权重(越大越靠前) */ + @Excel(name = "排序权重", readConverterExp = "越=大越靠前") + private Long sortOrder; + + /** 展示位置 */ + @Excel(name = "展示位置") + private String displayType; + + /** 是否启用 */ + @Excel(name = "是否启用") + private Integer isActive; + + /** 开始时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date startTime; + + /** 结束时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date endTime; + + /** 是否永久有效 */ + @Excel(name = "是否永久有效") + private Integer isAlwaysValid; + + /** 文字位置 */ + @Excel(name = "文字位置") + private String captionPosition; + + /** 标题样式配置 */ + @Excel(name = "标题样式配置") + private String captionStyle; + + /** 按钮样式配置 */ + @Excel(name = "按钮样式配置") + private String buttonStyle; + + /** 展示次数 */ + @Excel(name = "展示次数") + private Long displayCount; + + /** 点击次数 */ + @Excel(name = "点击次数") + private Long clickCount; + + /** 状态 */ + @Excel(name = "状态") + private String status; + + /** 审核备注 */ + @Excel(name = "审核备注") + private String reviewNotes; + + /** 审核人 */ + @Excel(name = "审核人") + private Long reviewedBy; + + /** 审核时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date reviewedAt; + + /** 创建人 */ + @Excel(name = "创建人") + private Long createdBy; + + /** 创建时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date createdAt; + + /** 更新时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date updatedAt; + + public void setCarouselId(Long carouselId) + { + this.carouselId = carouselId; + } + + public Long getCarouselId() + { + return carouselId; + } + + public void setTitle(String title) + { + this.title = title; + } + + public String getTitle() + { + return title; + } + + public void setSubtitle(String subtitle) + { + this.subtitle = subtitle; + } + + public String getSubtitle() + { + return subtitle; + } + + public void setImageUrl(String imageUrl) + { + this.imageUrl = imageUrl; + } + + public String getImageUrl() + { + return imageUrl; + } + + public void setAltText(String altText) + { + this.altText = altText; + } + + public String getAltText() + { + return altText; + } + + public void setImageSize(String imageSize) + { + this.imageSize = imageSize; + } + + public String getImageSize() + { + return imageSize; + } + + public void setBgColor(String bgColor) + { + this.bgColor = bgColor; + } + + public String getBgColor() + { + return bgColor; + } + + public void setTextColor(String textColor) + { + this.textColor = textColor; + } + + public String getTextColor() + { + return textColor; + } + + public void setButtonText(String buttonText) + { + this.buttonText = buttonText; + } + + public String getButtonText() + { + return buttonText; + } + + public void setButtonClass(String buttonClass) + { + this.buttonClass = buttonClass; + } + + public String getButtonClass() + { + return buttonClass; + } + + public void setLinkType(String linkType) + { + this.linkType = linkType; + } + + public String getLinkType() + { + return linkType; + } + + public void setLinkUrl(String linkUrl) + { + this.linkUrl = linkUrl; + } + + public String getLinkUrl() + { + return linkUrl; + } + + public void setLinkParams(String linkParams) + { + this.linkParams = linkParams; + } + + public String getLinkParams() + { + return linkParams; + } + + public void setSortOrder(Long sortOrder) + { + this.sortOrder = sortOrder; + } + + public Long getSortOrder() + { + return sortOrder; + } + + public void setDisplayType(String displayType) + { + this.displayType = displayType; + } + + public String getDisplayType() + { + return displayType; + } + + public void setIsActive(Integer isActive) + { + this.isActive = isActive; + } + + public Integer getIsActive() + { + return isActive; + } + + public void setStartTime(Date startTime) + { + this.startTime = startTime; + } + + public Date getStartTime() + { + return startTime; + } + + public void setEndTime(Date endTime) + { + this.endTime = endTime; + } + + public Date getEndTime() + { + return endTime; + } + + public void setIsAlwaysValid(Integer isAlwaysValid) + { + this.isAlwaysValid = isAlwaysValid; + } + + public Integer getIsAlwaysValid() + { + return isAlwaysValid; + } + + public void setCaptionPosition(String captionPosition) + { + this.captionPosition = captionPosition; + } + + public String getCaptionPosition() + { + return captionPosition; + } + + public void setCaptionStyle(String captionStyle) + { + this.captionStyle = captionStyle; + } + + public String getCaptionStyle() + { + return captionStyle; + } + + public void setButtonStyle(String buttonStyle) + { + this.buttonStyle = buttonStyle; + } + + public String getButtonStyle() + { + return buttonStyle; + } + + public void setDisplayCount(Long displayCount) + { + this.displayCount = displayCount; + } + + public Long getDisplayCount() + { + return displayCount; + } + + public void setClickCount(Long clickCount) + { + this.clickCount = clickCount; + } + + public Long getClickCount() + { + return clickCount; + } + + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + + public void setReviewNotes(String reviewNotes) + { + this.reviewNotes = reviewNotes; + } + + public String getReviewNotes() + { + return reviewNotes; + } + + public void setReviewedBy(Long reviewedBy) + { + this.reviewedBy = reviewedBy; + } + + public Long getReviewedBy() + { + return reviewedBy; + } + + public void setReviewedAt(Date reviewedAt) + { + this.reviewedAt = reviewedAt; + } + + public Date getReviewedAt() + { + return reviewedAt; + } + + public void setCreatedBy(Long createdBy) + { + this.createdBy = createdBy; + } + + public Long getCreatedBy() + { + return createdBy; + } + + public void setCreatedAt(Date createdAt) + { + this.createdAt = createdAt; + } + + public Date getCreatedAt() + { + return createdAt; + } + + public void setUpdatedAt(Date updatedAt) + { + this.updatedAt = updatedAt; + } + + public Date getUpdatedAt() + { + return updatedAt; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("carouselId", getCarouselId()) + .append("title", getTitle()) + .append("subtitle", getSubtitle()) + .append("imageUrl", getImageUrl()) + .append("altText", getAltText()) + .append("imageSize", getImageSize()) + .append("bgColor", getBgColor()) + .append("textColor", getTextColor()) + .append("buttonText", getButtonText()) + .append("buttonClass", getButtonClass()) + .append("linkType", getLinkType()) + .append("linkUrl", getLinkUrl()) + .append("linkParams", getLinkParams()) + .append("sortOrder", getSortOrder()) + .append("displayType", getDisplayType()) + .append("isActive", getIsActive()) + .append("startTime", getStartTime()) + .append("endTime", getEndTime()) + .append("isAlwaysValid", getIsAlwaysValid()) + .append("captionPosition", getCaptionPosition()) + .append("captionStyle", getCaptionStyle()) + .append("buttonStyle", getButtonStyle()) + .append("displayCount", getDisplayCount()) + .append("clickCount", getClickCount()) + .append("status", getStatus()) + .append("reviewNotes", getReviewNotes()) + .append("reviewedBy", getReviewedBy()) + .append("reviewedAt", getReviewedAt()) + .append("createdBy", getCreatedBy()) + .append("createdAt", getCreatedAt()) + .append("updatedAt", getUpdatedAt()) + .toString(); + } +} diff --git a/chenhai-system/src/main/java/com/chenhai/muhu/mapper/CarouselAdsMapper.java b/chenhai-system/src/main/java/com/chenhai/muhu/mapper/CarouselAdsMapper.java new file mode 100644 index 0000000..66102b3 --- /dev/null +++ b/chenhai-system/src/main/java/com/chenhai/muhu/mapper/CarouselAdsMapper.java @@ -0,0 +1,62 @@ +package com.chenhai.muhu.mapper; + +import com.chenhai.muhu.domain.CarouselAds; + +import java.util.List; + +/** + * 轮播广告Mapper接口 + * + * @author ruoyi + * @date 2025-12-26 + */ +public interface CarouselAdsMapper +{ + /** + * 查询轮播广告 + * + * @param carouselId 轮播广告主键 + * @return 轮播广告 + */ + public CarouselAds selectCarouselAdsByCarouselId(Long carouselId); + + /** + * 查询轮播广告列表 + * + * @param carouselAds 轮播广告 + * @return 轮播广告集合 + */ + public List selectCarouselAdsList(CarouselAds carouselAds); + + /** + * 新增轮播广告 + * + * @param carouselAds 轮播广告 + * @return 结果 + */ + public int insertCarouselAds(CarouselAds carouselAds); + + /** + * 修改轮播广告 + * + * @param carouselAds 轮播广告 + * @return 结果 + */ + public int updateCarouselAds(CarouselAds carouselAds); + + /** + * 删除轮播广告 + * + * @param carouselId 轮播广告主键 + * @return 结果 + */ + public int deleteCarouselAdsByCarouselId(Long carouselId); + + /** + * 批量删除轮播广告 + * + * @param carouselIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCarouselAdsByCarouselIds(Long[] carouselIds); +} diff --git a/chenhai-system/src/main/java/com/chenhai/muhu/service/ICarouselAdsService.java b/chenhai-system/src/main/java/com/chenhai/muhu/service/ICarouselAdsService.java new file mode 100644 index 0000000..c558b79 --- /dev/null +++ b/chenhai-system/src/main/java/com/chenhai/muhu/service/ICarouselAdsService.java @@ -0,0 +1,62 @@ +package com.chenhai.muhu.service; + +import com.chenhai.muhu.domain.CarouselAds; + +import java.util.List; + +/** + * 轮播广告Service接口 + * + * @author ruoyi + * @date 2025-12-26 + */ +public interface ICarouselAdsService +{ + /** + * 查询轮播广告 + * + * @param carouselId 轮播广告主键 + * @return 轮播广告 + */ + public CarouselAds selectCarouselAdsByCarouselId(Long carouselId); + + /** + * 查询轮播广告列表 + * + * @param carouselAds 轮播广告 + * @return 轮播广告集合 + */ + public List selectCarouselAdsList(CarouselAds carouselAds); + + /** + * 新增轮播广告 + * + * @param carouselAds 轮播广告 + * @return 结果 + */ + public int insertCarouselAds(CarouselAds carouselAds); + + /** + * 修改轮播广告 + * + * @param carouselAds 轮播广告 + * @return 结果 + */ + public int updateCarouselAds(CarouselAds carouselAds); + + /** + * 批量删除轮播广告 + * + * @param carouselIds 需要删除的轮播广告主键集合 + * @return 结果 + */ + public int deleteCarouselAdsByCarouselIds(Long[] carouselIds); + + /** + * 删除轮播广告信息 + * + * @param carouselId 轮播广告主键 + * @return 结果 + */ + public int deleteCarouselAdsByCarouselId(Long carouselId); +} diff --git a/chenhai-system/src/main/java/com/chenhai/muhu/service/impl/CarouselAdsServiceImpl.java b/chenhai-system/src/main/java/com/chenhai/muhu/service/impl/CarouselAdsServiceImpl.java new file mode 100644 index 0000000..1d4ca98 --- /dev/null +++ b/chenhai-system/src/main/java/com/chenhai/muhu/service/impl/CarouselAdsServiceImpl.java @@ -0,0 +1,95 @@ +package com.chenhai.muhu.service.impl; + + +import com.chenhai.muhu.domain.CarouselAds; +import com.chenhai.muhu.mapper.CarouselAdsMapper; +import com.chenhai.muhu.service.ICarouselAdsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 轮播广告Service业务层处理 + * + * @author ruoyi + * @date 2025-12-26 + */ +@Service +public class CarouselAdsServiceImpl implements ICarouselAdsService +{ + @Autowired + private CarouselAdsMapper carouselAdsMapper; + + /** + * 查询轮播广告 + * + * @param carouselId 轮播广告主键 + * @return 轮播广告 + */ + @Override + public CarouselAds selectCarouselAdsByCarouselId(Long carouselId) + { + return carouselAdsMapper.selectCarouselAdsByCarouselId(carouselId); + } + + /** + * 查询轮播广告列表 + * + * @param carouselAds 轮播广告 + * @return 轮播广告 + */ + @Override + public List selectCarouselAdsList(CarouselAds carouselAds) + { + return carouselAdsMapper.selectCarouselAdsList(carouselAds); + } + + /** + * 新增轮播广告 + * + * @param carouselAds 轮播广告 + * @return 结果 + */ + @Override + public int insertCarouselAds(CarouselAds carouselAds) + { + return carouselAdsMapper.insertCarouselAds(carouselAds); + } + + /** + * 修改轮播广告 + * + * @param carouselAds 轮播广告 + * @return 结果 + */ + @Override + public int updateCarouselAds(CarouselAds carouselAds) + { + return carouselAdsMapper.updateCarouselAds(carouselAds); + } + + /** + * 批量删除轮播广告 + * + * @param carouselIds 需要删除的轮播广告主键 + * @return 结果 + */ + @Override + public int deleteCarouselAdsByCarouselIds(Long[] carouselIds) + { + return carouselAdsMapper.deleteCarouselAdsByCarouselIds(carouselIds); + } + + /** + * 删除轮播广告信息 + * + * @param carouselId 轮播广告主键 + * @return 结果 + */ + @Override + public int deleteCarouselAdsByCarouselId(Long carouselId) + { + return carouselAdsMapper.deleteCarouselAdsByCarouselId(carouselId); + } +} diff --git a/chenhai-system/src/main/resources/mapper/muhu/CarouselAdsMapper.xml b/chenhai-system/src/main/resources/mapper/muhu/CarouselAdsMapper.xml new file mode 100644 index 0000000..e4070fc --- /dev/null +++ b/chenhai-system/src/main/resources/mapper/muhu/CarouselAdsMapper.xml @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select carousel_id, title, subtitle, image_url, alt_text, image_size, bg_color, text_color, button_text, button_class, link_type, link_url, link_params, sort_order, display_type, is_active, start_time, end_time, is_always_valid, caption_position, caption_style, button_style, display_count, click_count, status, review_notes, reviewed_by, reviewed_at, created_by, created_at, updated_at from carousel_ads + + + + + + + + insert into carousel_ads + + title, + subtitle, + image_url, + alt_text, + image_size, + bg_color, + text_color, + button_text, + button_class, + link_type, + link_url, + link_params, + sort_order, + display_type, + is_active, + start_time, + end_time, + is_always_valid, + caption_position, + caption_style, + button_style, + display_count, + click_count, + status, + review_notes, + reviewed_by, + reviewed_at, + created_by, + created_at, + updated_at, + + + #{title}, + #{subtitle}, + #{imageUrl}, + #{altText}, + #{imageSize}, + #{bgColor}, + #{textColor}, + #{buttonText}, + #{buttonClass}, + #{linkType}, + #{linkUrl}, + #{linkParams}, + #{sortOrder}, + #{displayType}, + #{isActive}, + #{startTime}, + #{endTime}, + #{isAlwaysValid}, + #{captionPosition}, + #{captionStyle}, + #{buttonStyle}, + #{displayCount}, + #{clickCount}, + #{status}, + #{reviewNotes}, + #{reviewedBy}, + #{reviewedAt}, + #{createdBy}, + #{createdAt}, + #{updatedAt}, + + + + + update carousel_ads + + title = #{title}, + subtitle = #{subtitle}, + image_url = #{imageUrl}, + alt_text = #{altText}, + image_size = #{imageSize}, + bg_color = #{bgColor}, + text_color = #{textColor}, + button_text = #{buttonText}, + button_class = #{buttonClass}, + link_type = #{linkType}, + link_url = #{linkUrl}, + link_params = #{linkParams}, + sort_order = #{sortOrder}, + display_type = #{displayType}, + is_active = #{isActive}, + start_time = #{startTime}, + end_time = #{endTime}, + is_always_valid = #{isAlwaysValid}, + caption_position = #{captionPosition}, + caption_style = #{captionStyle}, + button_style = #{buttonStyle}, + display_count = #{displayCount}, + click_count = #{clickCount}, + status = #{status}, + review_notes = #{reviewNotes}, + reviewed_by = #{reviewedBy}, + reviewed_at = #{reviewedAt}, + created_by = #{createdBy}, + created_at = #{createdAt}, + updated_at = #{updatedAt}, + + where carousel_id = #{carouselId} + + + + delete from carousel_ads where carousel_id = #{carouselId} + + + + delete from carousel_ads where carousel_id in + + #{carouselId} + + + \ No newline at end of file