From b0fee54f8475336b05c50ef3154c51f60ebd63aa Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期日, 22 六月 2025 17:55:12 +0800
Subject: [PATCH] add:首页配置
---
src/main/java/com/mzl/flower/service/film/HomeConfigService.java | 26 +++
src/main/resources/mapper/film/HomeConfigMapper.xml | 17 ++
src/main/java/com/mzl/flower/web/film/HomeConfigController.java | 76 ++++++++++
src/main/java/com/mzl/flower/dto/request/film/HomeConfigDTO.java | 47 ++++++
src/main/java/com/mzl/flower/dto/request/film/HomeConfigQueryDTO.java | 13 +
src/main/java/com/mzl/flower/dto/response/film/HomeConfigVO.java | 53 +++++++
src/main/java/com/mzl/flower/mapper/film/HomeConfigMapper.java | 32 ++++
src/main/java/com/mzl/flower/service/film/impl/HomeConfigServiceImpl.java | 114 ++++++++++++++++
src/main/java/com/mzl/flower/entity/film/HomeConfig.java | 34 ++++
9 files changed, 412 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/request/film/HomeConfigDTO.java b/src/main/java/com/mzl/flower/dto/request/film/HomeConfigDTO.java
new file mode 100644
index 0000000..d774094
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/film/HomeConfigDTO.java
@@ -0,0 +1,47 @@
+package com.mzl.flower.dto.request.film;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class HomeConfigDTO {
+
+ private Long id;
+
+ @ApiModelProperty("主标题")
+ private String mainTitle;
+
+ @ApiModelProperty("副标题")
+ private String subTitle;
+
+ @ApiModelProperty("按钮1文本")
+ private String btnText1;
+
+ @ApiModelProperty("按钮2文本")
+ private String btnText2;
+
+ @ApiModelProperty("按钮1图标")
+ private String btnIcon1;
+
+ @ApiModelProperty("按钮2图标")
+ private String btnIcon2;
+
+ @ApiModelProperty("图标1颜色")
+ private String iconColor1;
+
+ @ApiModelProperty("图标2颜色")
+ private String iconColor2;
+
+ @ApiModelProperty("动作类型")
+ private String actionType;
+
+ @ApiModelProperty("动作目标")
+ private String actionTarget;
+
+ @ApiModelProperty("状态")
+ private Boolean status;
+
+ @ApiModelProperty("版本号")
+ private String version;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/film/HomeConfigQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/film/HomeConfigQueryDTO.java
new file mode 100644
index 0000000..e33499d
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/film/HomeConfigQueryDTO.java
@@ -0,0 +1,13 @@
+package com.mzl.flower.dto.request.film;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class HomeConfigQueryDTO {
+ @ApiModelProperty("版本")
+ private String version;
+
+ @ApiModelProperty("状态")
+ private String mainTitle;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/film/HomeConfigVO.java b/src/main/java/com/mzl/flower/dto/response/film/HomeConfigVO.java
new file mode 100644
index 0000000..2077ea8
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/film/HomeConfigVO.java
@@ -0,0 +1,53 @@
+package com.mzl.flower.dto.response.film;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import com.mzl.flower.base.annotation.DictTrans;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class HomeConfigVO extends AbstractTransDTO {
+ private Long id;
+
+ @ApiModelProperty("主标题")
+ private String mainTitle;
+
+ @ApiModelProperty("副标题")
+ private String subTitle;
+
+ @ApiModelProperty("按钮1文本")
+ private String btnText1;
+
+ @ApiModelProperty("按钮2文本")
+ private String btnText2;
+
+ @ApiModelProperty("按钮1图标")
+ private String btnIcon1;
+
+ @ApiModelProperty("按钮2图标")
+ private String btnIcon2;
+
+ @ApiModelProperty("图标1颜色")
+ private String iconColor1;
+
+ @ApiModelProperty("图标2颜色")
+ private String iconColor2;
+
+ @ApiModelProperty("动作类型")
+ private String actionType;
+
+ @ApiModelProperty("动作目标")
+ private String actionTarget;
+
+ @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)")
+ @DictTrans(target = "statusStr", codeType = "COMMON_PUBLISH_STATUS")
+ private String status;
+
+ @ApiModelProperty("发布状态(COMMON_PUBLISH_STATUS)")
+ private String statusStr;
+
+ @ApiModelProperty("版本号")
+ private String version;
+}
diff --git a/src/main/java/com/mzl/flower/entity/film/HomeConfig.java b/src/main/java/com/mzl/flower/entity/film/HomeConfig.java
new file mode 100644
index 0000000..25218f2
--- /dev/null
+++ b/src/main/java/com/mzl/flower/entity/film/HomeConfig.java
@@ -0,0 +1,34 @@
+package com.mzl.flower.entity.film;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mzl.flower.base.BaseAutoEntity;
+import lombok.Data;
+
+
+@Data
+@TableName("home_config")
+public class HomeConfig extends BaseAutoEntity {
+/**
+ * packageName com.mzl.flower.entity.film
+ * @author fanghaowei
+ * @version version2.0
+ * @className HomeConfig
+ * @date 2025/6/19
+ * @description TODO
+ */
+
+ private String mainTitle;
+ private String subTitle; // 副标题
+ private String btnText1; // 按钮1文本
+ private String btnText2; // 按钮2文本
+ private String btnIcon1; // 按钮1图标
+ private String btnIcon2; // 按钮2图标
+ private String iconColor1; // 图标1颜色
+ private String iconColor2; // 图标2颜色
+ private String actionType; // 动作类型
+ private String actionTarget; // 动作目标
+ private String status; // 状态
+ private String version; // 版本号
+
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/film/HomeConfigMapper.java b/src/main/java/com/mzl/flower/mapper/film/HomeConfigMapper.java
new file mode 100644
index 0000000..b493dce
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/film/HomeConfigMapper.java
@@ -0,0 +1,32 @@
+package com.mzl.flower.mapper.film;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.film.HomeConfigQueryDTO;
+import com.mzl.flower.dto.response.film.HomeConfigVO;
+import com.mzl.flower.entity.film.HomeConfig;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+
+/**
+ *
+ * @author generator@Fang
+ * @since 2025-05-29
+ */
+@Repository
+public interface HomeConfigMapper extends BaseMapper<HomeConfig> {
+
+ List<HomeConfigVO> queryPage(@Param("dto")HomeConfigQueryDTO homeConfigQueryDTO, Page page);
+
+ @Select("select * from home_config where status = #{name} and deleted = '0'")
+ List<HomeConfig> queryList(String name);
+
+
+ @Select("select * from home_config where status = 'published' and deleted = '0' limit 1")
+ HomeConfigVO getHomeConfigInfo();
+}
+
diff --git a/src/main/java/com/mzl/flower/service/film/HomeConfigService.java b/src/main/java/com/mzl/flower/service/film/HomeConfigService.java
new file mode 100644
index 0000000..8b1a4e3
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/film/HomeConfigService.java
@@ -0,0 +1,26 @@
+package com.mzl.flower.service.film;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mzl.flower.dto.request.film.HomeConfigDTO;
+import com.mzl.flower.dto.request.film.HomeConfigQueryDTO;
+import com.mzl.flower.dto.response.film.HomeConfigVO;
+import com.mzl.flower.entity.film.HomeConfig;
+
+public interface HomeConfigService extends IService<HomeConfig> {
+
+
+ void saveHomeConfig(HomeConfigDTO homeConfigDTO);
+
+ void updateHomeConfig(HomeConfigDTO homeConfigDTO);
+
+ void deleteHomeConfig(String id);
+
+ Page<HomeConfigVO> queryPage(HomeConfigQueryDTO homeConfigQueryDTO, Page page);
+
+ void changeStatus(Long id);
+
+ HomeConfigVO detail(Long id);
+
+ HomeConfigVO getHomeConfigInfo();
+}
diff --git a/src/main/java/com/mzl/flower/service/film/impl/HomeConfigServiceImpl.java b/src/main/java/com/mzl/flower/service/film/impl/HomeConfigServiceImpl.java
new file mode 100644
index 0000000..ad90f3c
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/film/impl/HomeConfigServiceImpl.java
@@ -0,0 +1,114 @@
+package com.mzl.flower.service.film.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.constant.Constants;
+import com.mzl.flower.dto.request.film.HomeConfigDTO;
+import com.mzl.flower.dto.request.film.HomeConfigQueryDTO;
+import com.mzl.flower.dto.response.content.AnnouncementDTO;
+import com.mzl.flower.dto.response.film.HomeConfigVO;
+import com.mzl.flower.entity.content.Announcement;
+import com.mzl.flower.entity.film.HomeConfig;
+import com.mzl.flower.mapper.film.HomeConfigMapper;
+import com.mzl.flower.service.film.HomeConfigService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class HomeConfigServiceImpl extends ServiceImpl<HomeConfigMapper, HomeConfig> implements HomeConfigService {
+
+ @Resource
+ private HomeConfigMapper homeConfigMapper;
+
+ @Override
+ public void saveHomeConfig(HomeConfigDTO homeConfigDTO) {
+ HomeConfig homeConfig = new HomeConfig();
+ BeanUtils.copyProperties(homeConfigDTO, homeConfig);
+ homeConfig.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
+ homeConfig.create(SecurityUtils.getUserId());
+ homeConfigMapper.insert(homeConfig);
+ }
+
+ @Override
+ public void updateHomeConfig(HomeConfigDTO homeConfigDTO) {
+ if(homeConfigDTO.getId()==null || homeConfigDTO.getId()==0){
+ throw new ValidationException("id不能为空");
+ }
+ HomeConfig homeConfig = homeConfigMapper.selectById(homeConfigDTO.getId());
+ if(homeConfig==null){
+ throw new ValidationException("找不到id为"+homeConfigDTO.getId()+"的配置");
+ }
+ BeanUtils.copyProperties(homeConfigDTO, homeConfig);
+ homeConfig.update(SecurityUtils.getUserId());
+ homeConfigMapper.updateById(homeConfig);
+ }
+
+ @Override
+ public void deleteHomeConfig(String id) {
+ HomeConfig homeConfig = homeConfigMapper.selectById(id);
+ if (homeConfig == null) {
+ throw new ValidationException("主页配置不存在");
+ }
+ //已发布的不能删除
+ if(Constants.COMMON_PUBLISH_STATUS.published.name().equals(homeConfig.getStatus())){
+ throw new ValidationException("已发布的不能删除");
+ }
+ homeConfigMapper.deleteById(id);
+ }
+
+ @Override
+ public Page<HomeConfigVO> queryPage(HomeConfigQueryDTO homeConfigQueryDTO, Page page) {
+ List<HomeConfigVO> list = homeConfigMapper.queryPage(homeConfigQueryDTO, page);
+ return page.setRecords(list);
+ }
+
+ @Override
+ public void changeStatus(Long id) {
+ HomeConfig homeConfig = homeConfigMapper.selectById(id);
+ if(homeConfig==null){
+ throw new ValidationException("找不到id为"+id+"的公告");
+ }
+ //判断所有列表中是否已经存在已发布
+ List<HomeConfig> list = homeConfigMapper.queryList(Constants.COMMON_PUBLISH_STATUS.published.name());
+ if(list.size()==1 && Constants.COMMON_PUBLISH_STATUS.published.name().equals(homeConfig.getStatus())){
+ homeConfig.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
+ homeConfigMapper.updateById(homeConfig);
+ }else {
+ if (list.size() > 0) {
+ throw new ValidationException("已存在已发布");
+ }
+ if (Constants.COMMON_PUBLISH_STATUS.published.name().equals(homeConfig.getStatus())) {
+ homeConfig.setStatus(Constants.COMMON_PUBLISH_STATUS.unpublished.name());
+ } else {
+ homeConfig.setStatus(Constants.COMMON_PUBLISH_STATUS.published.name());
+ }
+ homeConfigMapper.updateById(homeConfig);
+ }
+ }
+
+ @Override
+ public HomeConfigVO detail(Long id) {
+ HomeConfig homeConfig = homeConfigMapper.selectById(id);
+ if(homeConfig==null){
+ return null;
+ }
+ HomeConfigVO vo = new HomeConfigVO();
+ BeanUtils.copyProperties(homeConfig,vo);
+ return vo;
+ }
+
+ @Override
+ public HomeConfigVO getHomeConfigInfo() {
+ return homeConfigMapper.getHomeConfigInfo();
+ }
+}
diff --git a/src/main/java/com/mzl/flower/web/film/HomeConfigController.java b/src/main/java/com/mzl/flower/web/film/HomeConfigController.java
new file mode 100644
index 0000000..0ef2d52
--- /dev/null
+++ b/src/main/java/com/mzl/flower/web/film/HomeConfigController.java
@@ -0,0 +1,76 @@
+package com.mzl.flower.web.film;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.base.BaseController;
+import com.mzl.flower.base.R;
+import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.dto.request.film.HomeConfigDTO;
+import com.mzl.flower.dto.request.film.HomeConfigQueryDTO;
+import com.mzl.flower.dto.response.content.AnnouncementDTO;
+import com.mzl.flower.dto.response.film.HomeConfigVO;
+import com.mzl.flower.service.film.HomeConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+
+@Api(value = "主页配置", tags = "主页配置")
+@RestController
+@RequestMapping("/api/home")
+@RequiredArgsConstructor
+public class HomeConfigController extends BaseController {
+
+ private final HomeConfigService homeConfigService;
+
+ @GetMapping("/homeConfig/info")
+ @ApiOperation(value = "主页配置信息", httpMethod = "GET")
+ public ResponseEntity<ReturnDataDTO<HomeConfigVO>> getHomeConfigInfo() {
+ return returnData(R.SUCCESS.getCode(), homeConfigService.getHomeConfigInfo());
+ }
+
+
+ @GetMapping("/homeConfig/list")
+ @ApiOperation(value = "主页配置列表", httpMethod = "GET")
+ public ResponseEntity<ReturnDataDTO<Page<HomeConfigVO>>> getHomeConfigList(Page page, HomeConfigQueryDTO dto) {
+ return returnData(R.SUCCESS.getCode(), homeConfigService.queryPage(dto, page));
+ }
+
+ @GetMapping(value = "/homeConfig/delete")
+ @ApiOperation(value = "删除主页配置 ", httpMethod = "GET", notes = "ID")
+ public ResponseEntity delete(@NotNull(message = "id不能为空") Long id) {
+ homeConfigService.deleteHomeConfig(String.valueOf(id));
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
+ @PostMapping(value = "/homeConfig/new")
+ @ApiOperation(value = "保存主页配置", httpMethod = "POST")
+ public ResponseEntity insert(@RequestBody HomeConfigDTO homeConfigDTO) {
+ homeConfigService.saveHomeConfig(homeConfigDTO);
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
+ @PostMapping(value = "/homeConfig/edit")
+ @ApiOperation(value = "更新主页配置", httpMethod = "POST")
+ public ResponseEntity update(@RequestBody HomeConfigDTO homeConfigDTO) {
+ homeConfigService.updateHomeConfig(homeConfigDTO);
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
+ @GetMapping("/homeConfig/changeStatus")
+ @ApiOperation(value = "修改状态", notes = "修改状态")
+ public ResponseEntity<ReturnDataDTO> changeStatus(@NotNull(message = "id不能为空") Long id) {
+ homeConfigService.changeStatus(id);
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
+ @GetMapping("/homeConfig/list/view")
+ @ApiOperation(value = "详情", notes = "详情")
+ public ResponseEntity<ReturnDataDTO<HomeConfigVO>> detail(@NotNull(message = "id不能为空") Long id) {
+ return returnData(R.SUCCESS.getCode(),homeConfigService.detail(id));
+ }
+
+}
diff --git a/src/main/resources/mapper/film/HomeConfigMapper.xml b/src/main/resources/mapper/film/HomeConfigMapper.xml
new file mode 100644
index 0000000..a9e2e2a
--- /dev/null
+++ b/src/main/resources/mapper/film/HomeConfigMapper.xml
@@ -0,0 +1,17 @@
+<?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.mzl.flower.mapper.film.HomeConfigMapper">
+
+ <select id="queryPage" resultType="com.mzl.flower.dto.response.film.HomeConfigVO">
+ select t.* from home_config t
+ where t.deleted= 0
+ <if test="dto.version != null and dto.version != ''">
+ and t.version like concat('%', #{dto.version}, '%')
+ </if>
+ <if test="dto.mainTitle != null and dto.mainTitle != ''">
+ and t.main_title = #{dto.mainTitle}
+ </if>
+ order by t.version
+ </select>
+
+</mapper>
--
Gitblit v1.9.3