diff --git a/crmeb-common/src/main/java/com/zbkj/common/model/page/PageDiyTitle.java b/crmeb-common/src/main/java/com/zbkj/common/model/page/PageDiyTitle.java
new file mode 100644
index 0000000..fd45fdd
--- /dev/null
+++ b/crmeb-common/src/main/java/com/zbkj/common/model/page/PageDiyTitle.java
@@ -0,0 +1,42 @@
+package com.zbkj.common.model.page;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ *
+ * DIY数据标题表
+ *
+ *
+ * @author dazongzi
+ * @since 2023-05-16
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("eb_page_diy_title")
+@ApiModel(value="PageDiyTitle对象", description="DIY数据标题表")
+public class PageDiyTitle implements Serializable {
+
+ private static final long serialVersionUID=1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ @ApiModelProperty(value = "标题")
+ private String title;
+
+ @ApiModelProperty(value = "页面id")
+ private Integer pageId;
+
+ @ApiModelProperty(value = "标题内容")
+ private String value;
+}
diff --git a/crmeb-common/src/main/java/com/zbkj/common/response/page/PageDiyResponse.java b/crmeb-common/src/main/java/com/zbkj/common/response/page/PageDiyResponse.java
index a28f639..ba1408a 100644
--- a/crmeb-common/src/main/java/com/zbkj/common/response/page/PageDiyResponse.java
+++ b/crmeb-common/src/main/java/com/zbkj/common/response/page/PageDiyResponse.java
@@ -9,6 +9,7 @@ import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
/**
*
@@ -47,6 +48,9 @@ public class PageDiyResponse implements Serializable {
@ApiModelProperty(value = "页面数据")
private JSONObject value;
+ @ApiModelProperty(value = "页面数据字符串")
+ private String valueString;
+
@ApiModelProperty(value = "默认数据")
private String defaultValue;
@@ -103,6 +107,8 @@ public class PageDiyResponse implements Serializable {
@ApiModelProperty(value = "默认模板(1.平台默认 2.商户默认)")
private Integer isDefault;
+ @ApiModelProperty(value = "页面模块内容")
+ private List titleIds;
}
diff --git a/crmeb-front/src/main/java/com/zbkj/front/controller/PageDiyController.java b/crmeb-front/src/main/java/com/zbkj/front/controller/PageDiyController.java
index 3b97882..6c816b9 100644
--- a/crmeb-front/src/main/java/com/zbkj/front/controller/PageDiyController.java
+++ b/crmeb-front/src/main/java/com/zbkj/front/controller/PageDiyController.java
@@ -41,6 +41,14 @@ public class PageDiyController {
if(ObjectUtil.isNull(response)) throw new CrmebException("未找到对应模版信息");
return CommonResult.success(response);
}
+
+ @ApiOperation(value = "页面模块")
+ @RequestMapping(value = "/title/{titleId}", method = RequestMethod.GET)
+ public CommonResult titleInfo(@PathVariable(value = "titleId") Integer titleId){
+ PageDiyResponse response = pageDiyService.titleInfo(titleId);
+ if(ObjectUtil.isNull(response)) throw new CrmebException("未找到对应模块信息");
+ return CommonResult.success(response);
+ }
}
diff --git a/crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyDao.java b/crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyDao.java
index 77d70a1..2763af4 100644
--- a/crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyDao.java
+++ b/crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyDao.java
@@ -2,6 +2,9 @@ package com.zbkj.service.dao.page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.page.PageDiy;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -12,5 +15,9 @@ import com.zbkj.common.model.page.PageDiy;
* @since 2023-05-16
*/
public interface PageDiyDao extends BaseMapper {
+ List queryPageTitle(@Param("pageId") Integer pageId);
+
+ PageDiy selectNoValueDefault();
+ PageDiy selectNoValueById(Integer id);
}
diff --git a/crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyTitleDao.java b/crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyTitleDao.java
new file mode 100644
index 0000000..caf702c
--- /dev/null
+++ b/crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyTitleDao.java
@@ -0,0 +1,16 @@
+package com.zbkj.service.dao.page;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zbkj.common.model.page.PageDiyTitle;
+
+/**
+ *
+ * DIY数据表 Mapper 接口
+ *
+ *
+ * @author dazongzi
+ * @since 2023-05-16
+ */
+public interface PageDiyTitleDao extends BaseMapper {
+
+}
diff --git a/crmeb-service/src/main/java/com/zbkj/service/service/PageDiyService.java b/crmeb-service/src/main/java/com/zbkj/service/service/PageDiyService.java
index 1b1cded..b08f35e 100644
--- a/crmeb-service/src/main/java/com/zbkj/service/service/PageDiyService.java
+++ b/crmeb-service/src/main/java/com/zbkj/service/service/PageDiyService.java
@@ -73,4 +73,6 @@ public interface PageDiyService extends IService {
* id>1时加载对应的模版即可
*/
PageDiy getDiyPageByPageIdForAdmin(Integer id);
+
+ PageDiyResponse titleInfo(Integer titleId);
}
diff --git a/crmeb-service/src/main/java/com/zbkj/service/service/impl/PageDiyServiceImpl.java b/crmeb-service/src/main/java/com/zbkj/service/service/impl/PageDiyServiceImpl.java
index 0608592..b27165a 100644
--- a/crmeb-service/src/main/java/com/zbkj/service/service/impl/PageDiyServiceImpl.java
+++ b/crmeb-service/src/main/java/com/zbkj/service/service/impl/PageDiyServiceImpl.java
@@ -4,7 +4,9 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
@@ -18,14 +20,18 @@ import com.zbkj.common.constants.SysConfigConstants;
import com.zbkj.common.constants.UploadConstants;
import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.model.page.PageDiy;
+import com.zbkj.common.model.page.PageDiyTitle;
import com.zbkj.common.request.PageParamRequest;
import com.zbkj.common.request.page.PageDiyEditNameRequest;
import com.zbkj.common.response.page.PageDiyResponse;
import com.zbkj.common.result.CommonResultCode;
import com.zbkj.common.result.SystemConfigResultCode;
+import com.zbkj.common.utils.RedisUtil;
import com.zbkj.service.dao.page.PageDiyDao;
+import com.zbkj.service.dao.page.PageDiyTitleDao;
import com.zbkj.service.service.PageDiyService;
import com.zbkj.service.service.SystemConfigService;
+import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@@ -37,11 +43,12 @@ import java.util.List;
import java.util.stream.Collectors;
/**
-* @author dazongzi
-* @description PageDiyServiceImpl 接口实现
-* @date 2023-05-16
-*/
+ * @author dazongzi
+ * @description PageDiyServiceImpl 接口实现
+ * @date 2023-05-16
+ */
@Service
+@Slf4j
public class PageDiyServiceImpl extends ServiceImpl implements PageDiyService {
private static final Logger logger = LoggerFactory.getLogger(PageDiyServiceImpl.class);
@@ -49,9 +56,14 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
@Resource
private PageDiyDao dao;
+ @Resource
+ private PageDiyTitleDao pageDiyTitleDao;
+
+
@Autowired
private SystemConfigService systemConfigService;
-
+ @Resource
+ private RedisUtil redisUtil;
/**
* 列表
@@ -91,9 +103,21 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
checkPageDiyNameUnique(pageDiy.getName(), null);
DocumentContext jsonContext = JsonPath.parse(pageDiy.getValue());
// 通配符去掉关键子 再存储
- jsonContext.delete("$..*[?(@ == '"+ adminApiPath +"')]");
+ jsonContext.delete("$..*[?(@ == '" + adminApiPath + "')]");
pageDiy.setValue(jsonContext.jsonString());
save(pageDiy);
+ JSONObject pageValue = JSON.parseObject(pageDiy.getValue());
+ QueryWrapper pageDiyTitleWrapper = new QueryWrapper<>();
+ pageDiyTitleWrapper.eq("page_id", pageDiy.getId());
+ pageDiyTitleDao.delete(pageDiyTitleWrapper);
+ for (String key : pageValue.keySet()) {
+ JSONObject titleJson = (JSONObject) pageValue.get(key);
+ PageDiyTitle pageDiyTitle = new PageDiyTitle();
+ pageDiyTitle.setTitle(key);
+ pageDiyTitle.setPageId(pageDiy.getId());
+ pageDiyTitle.setValue(titleJson.toJSONString());
+ pageDiyTitleDao.insert(pageDiyTitle);
+ }
return pageDiy;
}
@@ -114,12 +138,26 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
// // 通配符去掉关键子 再存储
// jsonContext.delete("$..*[?(@ == '"+ adminApiPath +"')]");
// pageDiy.setValue(jsonContext.jsonString());
- return dao.updateById(pageDiy)>0;
+
+ JSONObject pageValue = JSON.parseObject(pageDiy.getValue());
+ QueryWrapper pageDiyTitleWrapper = new QueryWrapper<>();
+ pageDiyTitleWrapper.eq("page_id", pageDiy.getId());
+ pageDiyTitleDao.delete(pageDiyTitleWrapper);
+ for (String key : pageValue.keySet()) {
+ JSONObject titleJson = (JSONObject) pageValue.get(key);
+ PageDiyTitle pageDiyTitle = new PageDiyTitle();
+ pageDiyTitle.setTitle(key);
+ pageDiyTitle.setPageId(pageDiy.getId());
+ pageDiyTitle.setValue(titleJson.toJSONString());
+ pageDiyTitleDao.insert(pageDiyTitle);
+ }
+ return dao.updateById(pageDiy) > 0;
}
/**
* 编辑diy名称
- *@param pageDiyEditNameRequest 待编辑名称对象
+ *
+ * @param pageDiyEditNameRequest 待编辑名称对象
*/
@Override
public Boolean editPageDiyName(PageDiyEditNameRequest pageDiyEditNameRequest) {
@@ -142,7 +180,7 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
@Override
public Boolean setDiyPageHome(Integer diyId) {
PageDiy pageDiy = dao.selectById(diyId);
- if(ObjectUtil.isNull(pageDiy)) throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "当前DIY模版不存在");
+ if (ObjectUtil.isNull(pageDiy)) throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "当前DIY模版不存在");
// 取消现有的首页设置,如果存在的话
LambdaQueryWrapper queryWaiteResetDefaultTemp = Wrappers.lambdaQuery();
@@ -153,28 +191,30 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
// 设置当前diy数据为商城首页
pageDiy.setIsDefault(1);
+ redisUtil.set("PAGEDIY_DEFAULT", pageDiy);
return dao.updateById(pageDiy) > 0;
}
/**
* 获取DIY首页模版Id
- *@param isLoadValue 是否加载value详情数据
+ *
+ * @param isLoadValue 是否加载value详情数据
* @return 首页模版ID
*/
@Override
public PageDiy getDiyPageHome(Boolean isLoadValue) {
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(PageDiy::getIsDefault, 1);
- if(Boolean.FALSE == isLoadValue){
+ if (Boolean.FALSE == isLoadValue) {
queryWrapper.select(PageDiy.class, i -> !i.getColumn().equals("value"));
}
List currentWaitResetPageHome = dao.selectList(queryWrapper);
- if(ObjectUtil.isNull(currentWaitResetPageHome) || currentWaitResetPageHome.size() != 1){
+ if (ObjectUtil.isNull(currentWaitResetPageHome) || currentWaitResetPageHome.size() != 1) {
throw new CrmebException("首页模版设置不正确!");
}
PageDiy pageDiy = currentWaitResetPageHome.get(0);
- if(Boolean.TRUE == isLoadValue){
+ if (Boolean.TRUE == isLoadValue) {
// String modifiedJsonString = getModifiedJsonString(pageDiy.getValue());
// pageDiy.setValue(modifiedJsonString);
pageDiy.setValue(pageDiy.getValue());
@@ -195,15 +235,15 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
@Override
public PageDiy getDiyPageByPageIdForAdmin(Integer id) {
PageDiy pageDiy = null;
- if(0 == id){
+ if (0 == id) {
LambdaQueryWrapper getHomeDefault = Wrappers.lambdaQuery();
getHomeDefault.eq(PageDiy::getIsDefault, 1);
pageDiy = getOne(getHomeDefault);
- }else{
+ } else {
pageDiy = getById(id);
}
- if(ObjectUtil.isNull(pageDiy)) throw new CrmebException(SystemConfigResultCode.PAGE_DIY_NOT_EXIST);
+ if (ObjectUtil.isNull(pageDiy)) throw new CrmebException(SystemConfigResultCode.PAGE_DIY_NOT_EXIST);
// String modifiedJsonString = getModifiedJsonString(pageDiy.getValue());
// pageDiy.setValue(modifiedJsonString);
@@ -211,6 +251,15 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
return pageDiy;
}
+ @Override
+ public PageDiyResponse titleInfo(Integer titleId) {
+ PageDiyTitle titleDto = pageDiyTitleDao.selectById(titleId);
+ PageDiyResponse response = new PageDiyResponse();
+ String valueString=titleDto.getValue().replaceAll("https://xsbuy-mall.oss-cn-shanghai.aliyuncs.com/","");
+ response.setValueString(valueString);
+ return response;
+ }
+
/**
* 根据id加载diy模版配置
*
@@ -222,16 +271,25 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
@Override
public PageDiyResponse getDiyPageByPageIdForFront(Integer id) {
PageDiy pageDiy;
- if(0 == id){
- LambdaQueryWrapper getHomeDefault = Wrappers.lambdaQuery();
- getHomeDefault.eq(PageDiy::getIsDefault, 1);
- pageDiy = getOne(getHomeDefault);
- }else{
+ if (0 == id) {
+ pageDiy = dao.selectNoValueDefault();
+ } else {
pageDiy = getById(id);
}
- if(ObjectUtil.isNull(pageDiy)) throw new CrmebException(SystemConfigResultCode.PAGE_DIY_NOT_EXIST);
+ if (ObjectUtil.isNull(pageDiy)) throw new CrmebException(SystemConfigResultCode.PAGE_DIY_NOT_EXIST);
+ if (0 == id) {
+ PageDiyResponse response = new PageDiyResponse();
+ BeanUtils.copyProperties(pageDiy, response);
+ response.setTitleIds(baseMapper.queryPageTitle(pageDiy.getId()));
+ return response;
+ } else {
+ PageDiyResponse response = new PageDiyResponse();
+ BeanUtils.copyProperties(pageDiy, response);
+ response.setValueString(pageDiy.getValue());
+ return response;
+ }
// 优化front比必要的字段 提高diy组件渲染效率
// DocumentContext jsonContext = JsonPath.parse(pageDiy.getValue());
@@ -246,27 +304,24 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
// jsonContext.delete("$..*[?(@.name == 'homeTab')].selectConfig");
// jsonContext.delete("$..*[?(@.name == 'homeTab')].productList..*.goods[*].attrValue");
- PageDiyResponse response = new PageDiyResponse();
- BeanUtils.copyProperties(pageDiy, response);
-// String modifiedJsonString = getModifiedJsonString(jsonContext.jsonString());
-// response.setValue(JSON.parseObject(modifiedJsonString));
- response.setValue(JSON.parseObject(pageDiy.getValue()));
- return response;
+
}
+
/**
* 检查diy模版名称唯一
+ *
* @param pageDiyName 当前要检查的模版名称
- * @param id 更新时的 diy id
+ * @param id 更新时的 diy id
*/
private void checkPageDiyNameUnique(String pageDiyName, Integer id) {
LambdaQueryWrapper pageDiyLambdaQueryWrapper = Wrappers.lambdaQuery();
pageDiyLambdaQueryWrapper.eq(PageDiy::getName, pageDiyName);
- if(ObjectUtil.isNotNull(id)){
+ if (ObjectUtil.isNotNull(id)) {
pageDiyLambdaQueryWrapper.ne(PageDiy::getId, id);
}
List pageDiyNameExist = dao.selectList(pageDiyLambdaQueryWrapper);
- if(ObjectUtil.isNotNull(pageDiyNameExist) && !pageDiyNameExist.isEmpty()){
+ if (ObjectUtil.isNotNull(pageDiyNameExist) && !pageDiyNameExist.isEmpty()) {
throw new CrmebException(CommonResultCode.VALIDATE_FAILED, "当前模版名称已经存在,请修改后再保存!");
}
}
@@ -275,6 +330,7 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
/**
* 调用diy配置数据后结合本地配置,传递给递归方法替换
+ *
* @param diyValue 当前待操作的diy对象,其实仅仅用到了value
* @return 替换后的json对象
*/
@@ -289,14 +345,15 @@ public class PageDiyServiceImpl extends ServiceImpl impleme
JsonElement modifiedJsonElement = replaceJsonValue(jsonElement, adminApiPath, newPrefix);
// 将修改后的 JSON 数据转换回字符串
- return gson.toJson(modifiedJsonElement);
+ return gson.toJson(modifiedJsonElement);
}
/**
* 根据系统关键字匹配素材前缀,匹配后追加系统中对应的素材前缀
+ *
* @param jsonElement 当前操作的json对象
- * @param keyword 匹配的关键字
- * @param newValue 需要追加的前缀
+ * @param keyword 匹配的关键字
+ * @param newValue 需要追加的前缀
* @return 操作后的正确json数据
*/
private JsonElement replaceJsonValue(JsonElement jsonElement, String keyword, String newValue) {
diff --git a/crmeb-service/src/main/resources/mapper/page/PageDiyMapper.xml b/crmeb-service/src/main/resources/mapper/page/PageDiyMapper.xml
new file mode 100644
index 0000000..a0def52
--- /dev/null
+++ b/crmeb-service/src/main/resources/mapper/page/PageDiyMapper.xml
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+