cloudroam
8 小时以前 b0fee54f8475336b05c50ef3154c51f60ebd63aa
add:首页配置
已添加9个文件
412 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/request/film/HomeConfigDTO.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/film/HomeConfigQueryDTO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/film/HomeConfigVO.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/entity/film/HomeConfig.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/mapper/film/HomeConfigMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/film/HomeConfigService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/film/impl/HomeConfigServiceImpl.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/film/HomeConfigController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/film/HomeConfigMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
}
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;
}
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;
}
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;        // 版本号
}
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();
}
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();
}
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();
    }
}
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));
    }
}
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>