zhitan-admin/src/main/java/com/zhitan/web/controller/knowledgeBase/KnowledgeBaseController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,86 @@ package com.zhitan.web.controller.knowledgeBase; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhitan.common.core.controller.BaseController; import com.zhitan.common.core.domain.AjaxResult; import com.zhitan.common.core.page.TableDataInfo; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseAddDTO; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseEditDTO; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBasePageDTO; import com.zhitan.knowledgeBase.domain.vo.KnowledgeBaseDetailVO; import com.zhitan.knowledgeBase.domain.vo.KnowledgeBasePageVO; import com.zhitan.knowledgeBase.service.IKnowledgeBaseService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** * ç¥è¯åº(KnowledgeBase)表æ§å¶å± * * @author makejava * @since 2025-01-10 15:05:26 */ @RestController @Api(tags = "ç¥è¯åºç®¡ç") @RequestMapping("/knowledgeBase") public class KnowledgeBaseController extends BaseController { /** * æå¡å¯¹è±¡ */ @Resource private IKnowledgeBaseService IKnowledgeBaseService; /** * ç¥è¯åº-å表æ¥è¯¢ */ @GetMapping("/page") @ApiOperation(value = "ç¥è¯åº-å表æ¥è¯¢") public TableDataInfo page(KnowledgeBasePageDTO pageDTO) { Page<KnowledgeBasePageVO> responsePage = IKnowledgeBaseService.getPageList(pageDTO); return getDataTable(responsePage); } /** * ç¥è¯åº-æ¥è¯¢è¯¦æ */ @GetMapping("/detail") @ApiOperation(value = "ç¥è¯åº-æ¥è¯¢è¯¦æ ") public AjaxResult page(@RequestParam("id") Long id) { KnowledgeBaseDetailVO responsePage = IKnowledgeBaseService.getDetail(id); return success(responsePage); } /** * ç¥è¯åº-æ°å¢ */ @PostMapping("/add") @ApiOperation(value = "ç¥è¯åº-æ°å¢") public AjaxResult add(@RequestBody @Validated KnowledgeBaseAddDTO addDTO) { IKnowledgeBaseService.add(addDTO); return success(); } /** * ç¥è¯åº-æ´æ° */ @PostMapping("/edit") @ApiOperation(value = "ç¥è¯åº-æ´æ°") public AjaxResult edit(@RequestBody @Validated KnowledgeBaseEditDTO editDTO) { IKnowledgeBaseService.edit(editDTO); return success(); } /** * ç¥è¯åº-å é¤ */ @DeleteMapping("/delete/{id}") @ApiOperation(value = "ç¥è¯åº-å é¤") public AjaxResult delete(@PathVariable("id") Long id) { IKnowledgeBaseService.delete(id); return success(); } } zhitan-common/src/main/java/com/zhitan/common/constant/MessageConstant.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,9 @@ package com.zhitan.common.constant; /** * @Author DYL **/ public class MessageConstant { public static final String KNOWLEDGE_BASE_NOT_EXIST = "ç¥è¯åºä¿¡æ¯ä¸åå¨"; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseAddDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,44 @@ package com.zhitan.knowledgeBase.domain.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.util.List; /** * @Author DYL **/ @Data @ApiModel(value = "ç¥è¯åºæ°å¢åæ°") public class KnowledgeBaseAddDTO { /** * æ é¢ */ @ApiModelProperty(value = "æ é¢", required = true) @NotBlank(message = "è¯·å¡«åæ é¢") private String title; /** * è½æºç±»å */ @ApiModelProperty(value = "è½æºç±»å", required = true) @NotNull(message = "è¯·éæ©è½æºç±»å") private Integer type; /** * å 容 */ @ApiModelProperty(value = "å 容", required = true) @NotBlank(message = "请填åå 容") private String content; /** * éä»¶ */ @ApiModelProperty(value = "éä»¶") private List<String> url; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBaseEditDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.zhitan.knowledgeBase.domain.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; /** * @Author DYL **/ @Data @ApiModel(value = "ç¥è¯åºç¼è¾åæ°") public class KnowledgeBaseEditDTO extends KnowledgeBaseAddDTO { /** * id */ @ApiModelProperty(value = "id", required = true) @NotNull(message = "idä¸è½ä¸ºç©º") private Long id; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/dto/KnowledgeBasePageDTO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package com.zhitan.knowledgeBase.domain.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @Author DYL **/ @Data @ApiModel(value = "ç¥è¯åºå页æ¥è¯¢åæ°") public class KnowledgeBasePageDTO { /** * 页ç */ @ApiModelProperty(value = "页ç ") private Integer pageNum; /** * æ¯é¡µæ¡æ° */ @ApiModelProperty(value = "æ¯é¡µæ¡æ°") private Integer pageSize; /** * æ é¢ */ @ApiModelProperty(value = "æ é¢") private String title; /** * è½æºç±»å */ @ApiModelProperty(value = "è½æºç±»å") private Integer type; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBase.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,38 @@ package com.zhitan.knowledgeBase.domain.entity; import com.zhitan.common.core.domain.BaseEntity; import lombok.Data; import java.io.Serializable; /** * ç¥è¯åº(KnowledgeBase)å®ä½ç±» * * @author makejava * @since 2025-01-10 14:57:10 */ @Data public class KnowledgeBase extends BaseEntity implements Serializable { private static final long serialVersionUID = -68391633692977272L; /** * id */ private Long id; /** * æ é¢ */ private String title; /** * è½æºç±»å(0:çµ;1:æ°´;2:å¤©ç¶æ°;3:è¸æ±½) */ private Integer type; /** * å 容 */ private String content; /** * å 餿 å¿ */ private Boolean delFlag; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/entity/KnowledgeBaseFile.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ package com.zhitan.knowledgeBase.domain.entity; import lombok.Data; import java.io.Serializable; /** * ç¥è¯åºé件表(KnowledgeBaseFile)å®ä½ç±» * * @author makejava * @since 2025-01-10 14:57:12 */ @Data public class KnowledgeBaseFile implements Serializable { private static final long serialVersionUID = 998732434860554353L; /** * id */ private Long id; /** * ç¥è¯åºid */ private Long knowledgeBaseId; /** * æä»¶å°å */ private String url; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/enums/EnergyTypeEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,48 @@ package com.zhitan.knowledgeBase.domain.enums; import lombok.AllArgsConstructor; import lombok.Getter; /** * @Author DYL **/ @Getter @AllArgsConstructor public enum EnergyTypeEnum { ELECTRICITY(0,"Electricity", "çµ"), WATER(1,"Water", "æ°´"), GAS(2,"Gas", "å¤©ç¶æ°"), STEAM(3,"Steam", "è¸æ±½"); private final Integer code; private final String name; private final String desc; public static EnergyTypeEnum getEnumByCode(Integer code) { for (EnergyTypeEnum e : EnergyTypeEnum.values()) { if (e.code.equals(code)) { return e; } } return null; } public static String getNameByCode(Integer code) { for (EnergyTypeEnum e : EnergyTypeEnum.values()) { if (e.code.equals(code)) { return e.name; } } return null; } public static String getDescByCode(Integer code) { for (EnergyTypeEnum e : EnergyTypeEnum.values()) { if (e.code.equals(code)) { return e.desc; } } return null; } } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBaseDetailVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ package com.zhitan.knowledgeBase.domain.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @Author DYL **/ @Data @ApiModel(value = "ç¥è¯åºè¯¦æ ") public class KnowledgeBaseDetailVO { /** * id */ @ApiModelProperty(value = "id") private Long id; /** * æ é¢ */ @ApiModelProperty(value = "æ é¢") private String title; /** * è½æºç±»å(0:çµ;1:æ°´;2:å¤©ç¶æ°;3:è¸æ±½) */ @ApiModelProperty(value = "è½æºç±»å(0:çµ;1:æ°´;2:å¤©ç¶æ°;3:è¸æ±½)") private Integer type; /** * è½æºç±»åæè¿° */ @ApiModelProperty(value = "è½æºç±»åæè¿°") private String typeDesc; /** * å 容 */ @ApiModelProperty(value = "å 容") private String content; /** * éä»¶ */ @ApiModelProperty(value = "éä»¶") private List<String> url; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/domain/vo/KnowledgeBasePageVO.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.zhitan.knowledgeBase.domain.vo; import lombok.Data; /** * @Author DYL **/ @Data public class KnowledgeBasePageVO { /** * id */ private Long id; /** * æ é¢ */ private String title; /** * è½æºç±»å(0:çµ;1:æ°´;2:å¤©ç¶æ°;3:è¸æ±½) */ private Integer type; /** * è½æºç±»åæè¿° */ private String typeDesc; /** * å 容 */ private String content; /** * å建æ¶é´ */ private String createTime; } zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseFileMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.zhitan.knowledgeBase.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhitan.knowledgeBase.domain.entity.KnowledgeBaseFile; import org.apache.ibatis.annotations.Mapper; /** * ç¥è¯åºé件表(KnowledgeBaseFile)è¡¨æ°æ®åºè®¿é®å± * * @author makejava * @since 2025-01-10 14:57:12 */ @Mapper public interface KnowledgeBaseFileMapper extends BaseMapper<KnowledgeBaseFile> { } zhitan-system/src/main/java/com/zhitan/knowledgeBase/mapper/KnowledgeBaseMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ package com.zhitan.knowledgeBase.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhitan.knowledgeBase.domain.entity.KnowledgeBase; import org.apache.ibatis.annotations.Mapper; /** * ç¥è¯åº(KnowledgeBase)è¡¨æ°æ®åºè®¿é®å± * * @author makejava * @since 2025-01-10 14:57:08 */ @Mapper public interface KnowledgeBaseMapper extends BaseMapper<KnowledgeBase> { } zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/IKnowledgeBaseService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,44 @@ package com.zhitan.knowledgeBase.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseAddDTO; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseEditDTO; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBasePageDTO; import com.zhitan.knowledgeBase.domain.entity.KnowledgeBase; import com.zhitan.knowledgeBase.domain.vo.KnowledgeBaseDetailVO; import com.zhitan.knowledgeBase.domain.vo.KnowledgeBasePageVO; /** * ç¥è¯åº(KnowledgeBase)表æå¡æ¥å£ * * @author makejava * @since 2025-01-10 15:05:27 */ public interface IKnowledgeBaseService extends IService<KnowledgeBase> { /** * ç¥è¯åº-å表æ¥è¯¢ */ Page<KnowledgeBasePageVO> getPageList(KnowledgeBasePageDTO pageDTO); /** * ç¥è¯åº-æ¥è¯¢è¯¦æ */ KnowledgeBaseDetailVO getDetail(Long id); /** * ç¥è¯åº-æ°å¢ */ void add(KnowledgeBaseAddDTO addDTO); /** * ç¥è¯åº-æ´æ° */ void edit(KnowledgeBaseEditDTO editDTO); /** * ç¥è¯åº-å é¤ */ void delete(Long id); } zhitan-system/src/main/java/com/zhitan/knowledgeBase/service/impl/KnowledgeBaseServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,157 @@ package com.zhitan.knowledgeBase.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zhitan.common.constant.MessageConstant; import com.zhitan.common.exception.ServiceException; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseAddDTO; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBaseEditDTO; import com.zhitan.knowledgeBase.domain.dto.KnowledgeBasePageDTO; import com.zhitan.knowledgeBase.domain.entity.KnowledgeBase; import com.zhitan.knowledgeBase.domain.entity.KnowledgeBaseFile; import com.zhitan.knowledgeBase.domain.enums.EnergyTypeEnum; import com.zhitan.knowledgeBase.domain.vo.KnowledgeBaseDetailVO; import com.zhitan.knowledgeBase.domain.vo.KnowledgeBasePageVO; import com.zhitan.knowledgeBase.mapper.KnowledgeBaseFileMapper; import com.zhitan.knowledgeBase.mapper.KnowledgeBaseMapper; import com.zhitan.knowledgeBase.service.IKnowledgeBaseService; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; /** * ç¥è¯åº(KnowledgeBase)表æå¡å®ç°ç±» * * @author makejava * @since 2025-01-10 15:05:28 */ @Service public class KnowledgeBaseServiceImpl extends ServiceImpl<KnowledgeBaseMapper, KnowledgeBase> implements IKnowledgeBaseService { @Resource private KnowledgeBaseFileMapper fileMapper; /** * ç¥è¯åº-å表æ¥è¯¢ */ public Page<KnowledgeBasePageVO> getPageList(KnowledgeBasePageDTO pageDTO) { Page<KnowledgeBasePageVO> voPage = new Page<>(pageDTO.getPageNum(), pageDTO.getPageSize()); // å页æ¥è¯¢ Page<KnowledgeBase> knowledgeBasePage = baseMapper.selectPage(new Page<>(pageDTO.getPageNum(), pageDTO.getPageSize()), Wrappers.<KnowledgeBase>lambdaQuery() .like(ObjectUtils.isNotEmpty(pageDTO.getTitle()), KnowledgeBase::getTitle, pageDTO.getTitle()) .eq(ObjectUtils.isNotEmpty(pageDTO.getType()), KnowledgeBase::getType, pageDTO.getType()) .eq(KnowledgeBase::getDelFlag, false).orderByDesc(KnowledgeBase::getCreateTime)); List<KnowledgeBase> records = knowledgeBasePage.getRecords(); if (records.isEmpty()){ return voPage; } // æ°æ®è½¬æ¢ voPage.setRecords(records.stream().map(item -> { KnowledgeBasePageVO pageVO = new KnowledgeBasePageVO(); BeanUtil.copyProperties(item, pageVO); pageVO.setTypeDesc(EnergyTypeEnum.getDescByCode(item.getType())); return pageVO; }).collect(Collectors.toList())); voPage.setTotal(knowledgeBasePage.getTotal()); return voPage; } /** * ç¥è¯åº-æ¥è¯¢è¯¦æ */ public KnowledgeBaseDetailVO getDetail(Long id) { KnowledgeBaseDetailVO vo = new KnowledgeBaseDetailVO(); // æ¥è¯¢æ°æ® KnowledgeBase knowledgeBase = baseMapper.selectById(id); if (knowledgeBase != null){ // æ°æ®è½¬æ¢ BeanUtil.copyProperties(knowledgeBase, vo); vo.setUrl(fileMapper.selectList(Wrappers.<KnowledgeBaseFile>lambdaQuery() .select(KnowledgeBaseFile::getUrl) .eq(KnowledgeBaseFile::getKnowledgeBaseId, id)) .stream().map(KnowledgeBaseFile::getUrl).collect(Collectors.toList())); } return vo; } /** * ç¥è¯åº-æ°å¢ */ @Transactional(rollbackFor = Exception.class) public void add(KnowledgeBaseAddDTO addDTO) { // æå ¥æ°æ® KnowledgeBase knowledgeBase = new KnowledgeBase(); BeanUtil.copyProperties(addDTO, knowledgeBase); baseMapper.insert(knowledgeBase); // æå ¥æä»¶ if (ObjectUtils.isNotEmpty(addDTO.getUrl())){ addDTO.getUrl().forEach(url->{ KnowledgeBaseFile file = new KnowledgeBaseFile(); file.setKnowledgeBaseId(knowledgeBase.getId()); file.setUrl(url); fileMapper.insert(file); }); } } /** * ç¥è¯åº-æ´æ° */ @Transactional(rollbackFor = Exception.class) public void edit(KnowledgeBaseEditDTO editDTO) { // æ¥è¯¢æ°æ® KnowledgeBase knowledgeBase = baseMapper.selectById(editDTO.getId()); if (ObjectUtils.isEmpty(knowledgeBase)){ throw new ServiceException(MessageConstant.KNOWLEDGE_BASE_NOT_EXIST); } // æ´æ°æ°æ® BeanUtils.copyProperties(editDTO, knowledgeBase); baseMapper.updateById(knowledgeBase); // å 餿件 fileMapper.delete(Wrappers.<KnowledgeBaseFile>lambdaQuery() .eq(KnowledgeBaseFile::getKnowledgeBaseId, knowledgeBase.getId())); // æå ¥æä»¶ if (ObjectUtils.isNotEmpty(editDTO.getUrl())){ editDTO.getUrl().forEach(url->{ KnowledgeBaseFile file = new KnowledgeBaseFile(); file.setKnowledgeBaseId(knowledgeBase.getId()); file.setUrl(url); fileMapper.insert(file); }); } } /** * ç¥è¯åº-å é¤ */ @Transactional(rollbackFor = Exception.class) public void delete(Long id) { // æ¥è¯¢æ°æ® KnowledgeBase knowledgeBase = baseMapper.selectById(id); if (ObjectUtils.isEmpty(knowledgeBase)){ throw new ServiceException(MessageConstant.KNOWLEDGE_BASE_NOT_EXIST); } // å 餿°æ® knowledgeBase.setDelFlag(true); baseMapper.updateById(knowledgeBase); // å 餿件 fileMapper.delete(Wrappers.<KnowledgeBaseFile>lambdaQuery() .eq(KnowledgeBaseFile::getKnowledgeBaseId, id)); } } zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseFileMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,6 @@ <?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.zhitan.knowledgeBase.mapper.KnowledgeBaseFileMapper"> </mapper> zhitan-system/src/main/resources/mapper/knowledgeBase/KnowledgeBaseMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ <?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.zhitan.knowledgeBase.mapper.KnowledgeBaseMapper"> <resultMap type="com.zhitan.knowledgeBase.domain.entity.KnowledgeBase" id="KnowledgeBaseMap"> <result property="id" column="id" jdbcType="INTEGER"/> <result property="title" column="title" jdbcType="VARCHAR"/> <result property="type" column="type" jdbcType="INTEGER"/> <result property="content" column="content" jdbcType="VARCHAR"/> <result property="delFlag" column="del_flag" jdbcType="BOOLEAN"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="createBy" column="create_by" jdbcType="VARCHAR"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="updateBy" column="update_by" jdbcType="VARCHAR"/> </resultMap> </mapper>