src/main/java/cc/mrbird/febs/ai/entity/AiProductPoint.java
@@ -1,6 +1,7 @@ package cc.mrbird.febs.ai.entity; import cc.mrbird.febs.common.entity.AiBaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -17,6 +18,11 @@ * 公司ID (UUID) */ private String companyId; /** * 类型 */ private String productCategoryId; /** * 类型1:普通内容 2:视频号内容 @@ -47,4 +53,7 @@ * 描述 */ private String description; @TableField(exist = false) private String productCategoryName; } src/main/java/cc/mrbird/febs/ai/service/impl/AiProductPointServiceImpl.java
@@ -1,13 +1,16 @@ package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiProduct; import cc.mrbird.febs.ai.entity.AiProductCategory; import cc.mrbird.febs.ai.entity.AiProductPoint; import cc.mrbird.febs.ai.mapper.AiProductPointMapper; import cc.mrbird.febs.ai.service.AiProductCategoryService; import cc.mrbird.febs.ai.service.AiProductPointLinkService; import cc.mrbird.febs.ai.service.AiProductPointService; import cc.mrbird.febs.ai.util.UUID; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -21,6 +24,9 @@ import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; /** * AI产品知识点 Service实现类 @@ -35,6 +41,7 @@ private final AiProductPointMapper aiProductPointMapper; private final AiProductPointLinkService aiProductPointLinkService; private final AiProductCategoryService aiProductCategoryService; @Override public AiProductPoint getById(String id) { @@ -49,6 +56,20 @@ query.eq(AiProductPoint::getCompanyId, dto.getCompanyId()); } Page<AiProductPoint> pages = aiProductPointMapper.selectPage(page, query); List<AiProductPoint> records = pages.getRecords(); if (CollUtil.isNotEmpty( records)){ Set<String> collect = records.stream().map(AiProductPoint::getProductCategoryId).collect(Collectors.toSet()); if(CollUtil.isNotEmpty( collect)){ Map<String, AiProductCategory> map = aiProductCategoryService.selectMapByIds(collect); for (AiProductPoint record : records){ AiProductCategory orDefault = map.getOrDefault(record.getProductCategoryId(), null); if(ObjectUtil.isNotNull(orDefault)){ record.setProductCategoryName(orDefault.getName()); } } } } return pages; } @@ -56,6 +77,7 @@ public FebsResponse add(AiProductPoint dto) { AiProductPoint entity = new AiProductPoint(); entity.setId(UUID.getSimpleUUIDString()); entity.setProductCategoryId(dto.getProductCategoryId()); entity.setCompanyId(dto.getCompanyId()); entity.setIsNormal(dto.getIsNormal() ); entity.setFinderUserName(dto.getFinderUserName()); @@ -76,6 +98,7 @@ this.update(null, Wrappers.lambdaUpdate(AiProductPoint.class) .set(AiProductPoint::getIsNormal, dto.getIsNormal()) .set(AiProductPoint::getProductCategoryId, dto.getProductCategoryId()) .set(AiProductPoint::getFinderUserName, dto.getFinderUserName()) .set(AiProductPoint::getFeedId, dto.getFeedId()) .set(AiProductPoint::getTitle, dto.getTitle()) src/main/resources/templates/febs/views/modules/ai/productPoint/add.html
@@ -9,6 +9,15 @@ </ul> <div class="layui-tab-content"> <div class="layui-tab-item layui-show"> <div class="layui-form-item"> <label class="layui-form-label febs-form-item-require">分类:</label> <div class="layui-input-block"> <select name="productCategoryId" class="news-category" id="news-category" > <option value="">请选择</option> </select> </div> </div> <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">类型:</label> @@ -117,6 +126,18 @@ form.render(); //(下拉框) $.get(ctx + 'admin/productCategory/categoryTree/parent', function (data) { for (var k in data) { $(".news-category").append("<option value='" + data[k].id + "'>" + data[k].name + "</option>"); } layui.use('form', function () { var form = layui.form; form.render(); }); }); const E = window.wangEditor; const editor = new E('#product-point-toolbar-container', '#product-point-text-container'); // 传入两个元素 editor.config.showLinkImg = false; src/main/resources/templates/febs/views/modules/ai/productPoint/info.html
@@ -11,7 +11,14 @@ <input type="text" name="id" placeholder="" autoComplete="off" class="layui-input febs-hide"> <div class="layui-tab-item layui-show"> <div class="layui-form-item"> <label class="layui-form-label febs-form-item-require">分类:</label> <div class="layui-input-block"> <select name="productCategoryId" class="news-category" id="news-category" > <option value="">请选择</option> </select> </div> </div> <div class="layui-row layui-col-space10 layui-form-item"> <div class="layui-col-lg6"> <label class="layui-form-label febs-form-item-require">类型:</label> @@ -126,6 +133,19 @@ form.render(); //(下拉框) $.get(ctx + 'admin/productCategory/categoryTree/parent', function (data) { for (var k in data) { $(".news-category").append("<option value='" + data[k].id + "'>" + data[k].name + "</option>"); } layui.use('form', function () { var form = layui.form; $("#news-category").val(aiProductPoint.productCategoryId) form.render(); }); }); const E = window.wangEditor; const editor = new E('#product-point-toolbar-container', '#product-point-text-container'); // 传入两个元素 editor.config.showLinkImg = false; @@ -189,10 +209,9 @@ "title": aiProductPoint.title, "isNormal": aiProductPoint.isNormal, "finderUserName": aiProductPoint.finderUserName, "productCategoryId": aiProductPoint.productCategoryId, "feedId": aiProductPoint.feedId, }); $('#productPointImageUpload').append('<img src="' + aiProductPoint.feedImg + '" alt="" class="layui-upload-img single-image" style="width: 130px">'); $("#feedImg").val(aiProductPoint.feedImg); src/main/resources/templates/febs/views/modules/ai/productPoint/list.html
@@ -159,6 +159,7 @@ {type: 'checkbox'}, {type: 'numbers', title: '', width: 80}, {title: '操作', toolbar: '#productPointOption', minWidth: 200, align: 'center'}, {field: 'productCategoryName', title: '分类', minWidth: 100,align:'center'}, {field: 'title', title: '标题', minWidth: 100,align:'center'}, {templet:"#pointTypeFormat", title: '类型', minWidth: 140,align:'center'}, {field: 'companyId', title: '公司编码', minWidth: 150,align:'center'},