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