wyq 6 months ago
parent 63cbd27784
commit 0352e3d528
  1. 42
      crmeb-common/src/main/java/com/zbkj/common/model/page/PageDiyTitle.java
  2. 6
      crmeb-common/src/main/java/com/zbkj/common/response/page/PageDiyResponse.java
  3. 8
      crmeb-front/src/main/java/com/zbkj/front/controller/PageDiyController.java
  4. 7
      crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyDao.java
  5. 16
      crmeb-service/src/main/java/com/zbkj/service/dao/page/PageDiyTitleDao.java
  6. 2
      crmeb-service/src/main/java/com/zbkj/service/service/PageDiyService.java
  7. 77
      crmeb-service/src/main/java/com/zbkj/service/service/impl/PageDiyServiceImpl.java
  8. 65
      crmeb-service/src/main/resources/mapper/page/PageDiyMapper.xml

@ -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;
/**
* <p>
* DIY数据标题表
* </p>
*
* @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;
}

@ -9,6 +9,7 @@ import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* <p> * <p>
@ -47,6 +48,9 @@ public class PageDiyResponse implements Serializable {
@ApiModelProperty(value = "页面数据") @ApiModelProperty(value = "页面数据")
private JSONObject value; private JSONObject value;
@ApiModelProperty(value = "页面数据字符串")
private String valueString;
@ApiModelProperty(value = "默认数据") @ApiModelProperty(value = "默认数据")
private String defaultValue; private String defaultValue;
@ -103,6 +107,8 @@ public class PageDiyResponse implements Serializable {
@ApiModelProperty(value = "默认模板(1.平台默认 2.商户默认)") @ApiModelProperty(value = "默认模板(1.平台默认 2.商户默认)")
private Integer isDefault; private Integer isDefault;
@ApiModelProperty(value = "页面模块内容")
private List<Integer> titleIds;
} }

@ -41,6 +41,14 @@ public class PageDiyController {
if(ObjectUtil.isNull(response)) throw new CrmebException("未找到对应模版信息"); if(ObjectUtil.isNull(response)) throw new CrmebException("未找到对应模版信息");
return CommonResult.success(response); return CommonResult.success(response);
} }
@ApiOperation(value = "页面模块")
@RequestMapping(value = "/title/{titleId}", method = RequestMethod.GET)
public CommonResult<PageDiyResponse> titleInfo(@PathVariable(value = "titleId") Integer titleId){
PageDiyResponse response = pageDiyService.titleInfo(titleId);
if(ObjectUtil.isNull(response)) throw new CrmebException("未找到对应模块信息");
return CommonResult.success(response);
}
} }

@ -2,6 +2,9 @@ package com.zbkj.service.dao.page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.page.PageDiy; import com.zbkj.common.model.page.PageDiy;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* <p> * <p>
@ -12,5 +15,9 @@ import com.zbkj.common.model.page.PageDiy;
* @since 2023-05-16 * @since 2023-05-16
*/ */
public interface PageDiyDao extends BaseMapper<PageDiy> { public interface PageDiyDao extends BaseMapper<PageDiy> {
List<Integer> queryPageTitle(@Param("pageId") Integer pageId);
PageDiy selectNoValueDefault();
PageDiy selectNoValueById(Integer id);
} }

@ -0,0 +1,16 @@
package com.zbkj.service.dao.page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zbkj.common.model.page.PageDiyTitle;
/**
* <p>
* DIY数据表 Mapper 接口
* </p>
*
* @author dazongzi
* @since 2023-05-16
*/
public interface PageDiyTitleDao extends BaseMapper<PageDiyTitle> {
}

@ -73,4 +73,6 @@ public interface PageDiyService extends IService<PageDiy> {
* id>1时加载对应的模版即可 * id>1时加载对应的模版即可
*/ */
PageDiy getDiyPageByPageIdForAdmin(Integer id); PageDiy getDiyPageByPageIdForAdmin(Integer id);
PageDiyResponse titleInfo(Integer titleId);
} }

@ -4,7 +4,9 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil; import cn.hutool.core.util.URLUtil;
import com.alibaba.fastjson.JSON; 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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper; 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.constants.UploadConstants;
import com.zbkj.common.exception.CrmebException; import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.model.page.PageDiy; 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.PageParamRequest;
import com.zbkj.common.request.page.PageDiyEditNameRequest; import com.zbkj.common.request.page.PageDiyEditNameRequest;
import com.zbkj.common.response.page.PageDiyResponse; import com.zbkj.common.response.page.PageDiyResponse;
import com.zbkj.common.result.CommonResultCode; import com.zbkj.common.result.CommonResultCode;
import com.zbkj.common.result.SystemConfigResultCode; 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.PageDiyDao;
import com.zbkj.service.dao.page.PageDiyTitleDao;
import com.zbkj.service.service.PageDiyService; import com.zbkj.service.service.PageDiyService;
import com.zbkj.service.service.SystemConfigService; import com.zbkj.service.service.SystemConfigService;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -42,6 +48,7 @@ import java.util.stream.Collectors;
* @date 2023-05-16 * @date 2023-05-16
*/ */
@Service @Service
@Slf4j
public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> implements PageDiyService { public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> implements PageDiyService {
private static final Logger logger = LoggerFactory.getLogger(PageDiyServiceImpl.class); private static final Logger logger = LoggerFactory.getLogger(PageDiyServiceImpl.class);
@ -49,9 +56,14 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
@Resource @Resource
private PageDiyDao dao; private PageDiyDao dao;
@Resource
private PageDiyTitleDao pageDiyTitleDao;
@Autowired @Autowired
private SystemConfigService systemConfigService; private SystemConfigService systemConfigService;
@Resource
private RedisUtil redisUtil;
/** /**
* 列表 * 列表
@ -94,6 +106,18 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
jsonContext.delete("$..*[?(@ == '" + adminApiPath + "')]"); jsonContext.delete("$..*[?(@ == '" + adminApiPath + "')]");
pageDiy.setValue(jsonContext.jsonString()); pageDiy.setValue(jsonContext.jsonString());
save(pageDiy); save(pageDiy);
JSONObject pageValue = JSON.parseObject(pageDiy.getValue());
QueryWrapper<PageDiyTitle> 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; return pageDiy;
} }
@ -114,11 +138,25 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
// // 通配符去掉关键子 再存储 // // 通配符去掉关键子 再存储
// jsonContext.delete("$..*[?(@ == '"+ adminApiPath +"')]"); // jsonContext.delete("$..*[?(@ == '"+ adminApiPath +"')]");
// pageDiy.setValue(jsonContext.jsonString()); // pageDiy.setValue(jsonContext.jsonString());
JSONObject pageValue = JSON.parseObject(pageDiy.getValue());
QueryWrapper<PageDiyTitle> 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; return dao.updateById(pageDiy) > 0;
} }
/** /**
* 编辑diy名称 * 编辑diy名称
*
* @param pageDiyEditNameRequest 待编辑名称对象 * @param pageDiyEditNameRequest 待编辑名称对象
*/ */
@Override @Override
@ -153,11 +191,13 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
// 设置当前diy数据为商城首页 // 设置当前diy数据为商城首页
pageDiy.setIsDefault(1); pageDiy.setIsDefault(1);
redisUtil.set("PAGEDIY_DEFAULT", pageDiy);
return dao.updateById(pageDiy) > 0; return dao.updateById(pageDiy) > 0;
} }
/** /**
* 获取DIY首页模版Id * 获取DIY首页模版Id
*
* @param isLoadValue 是否加载value详情数据 * @param isLoadValue 是否加载value详情数据
* @return 首页模版ID * @return 首页模版ID
*/ */
@ -211,6 +251,15 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
return pageDiy; 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模版配置 * 根据id加载diy模版配置
* *
@ -223,15 +272,24 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
public PageDiyResponse getDiyPageByPageIdForFront(Integer id) { public PageDiyResponse getDiyPageByPageIdForFront(Integer id) {
PageDiy pageDiy; PageDiy pageDiy;
if (0 == id) { if (0 == id) {
LambdaQueryWrapper<PageDiy> getHomeDefault = Wrappers.lambdaQuery(); pageDiy = dao.selectNoValueDefault();
getHomeDefault.eq(PageDiy::getIsDefault, 1);
pageDiy = getOne(getHomeDefault);
} else { } else {
pageDiy = getById(id); 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组件渲染效率 // 优化front比必要的字段 提高diy组件渲染效率
// DocumentContext jsonContext = JsonPath.parse(pageDiy.getValue()); // DocumentContext jsonContext = JsonPath.parse(pageDiy.getValue());
@ -246,16 +304,13 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
// jsonContext.delete("$..*[?(@.name == 'homeTab')].selectConfig"); // jsonContext.delete("$..*[?(@.name == 'homeTab')].selectConfig");
// jsonContext.delete("$..*[?(@.name == 'homeTab')].productList..*.goods[*].attrValue"); // 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模版名称唯一 * 检查diy模版名称唯一
*
* @param pageDiyName 当前要检查的模版名称 * @param pageDiyName 当前要检查的模版名称
* @param id 更新时的 diy id * @param id 更新时的 diy id
*/ */
@ -275,6 +330,7 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
/** /**
* 调用diy配置数据后结合本地配置传递给递归方法替换 * 调用diy配置数据后结合本地配置传递给递归方法替换
*
* @param diyValue 当前待操作的diy对象其实仅仅用到了value * @param diyValue 当前待操作的diy对象其实仅仅用到了value
* @return 替换后的json对象 * @return 替换后的json对象
*/ */
@ -294,6 +350,7 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
/** /**
* 根据系统关键字匹配素材前缀匹配后追加系统中对应的素材前缀 * 根据系统关键字匹配素材前缀匹配后追加系统中对应的素材前缀
*
* @param jsonElement 当前操作的json对象 * @param jsonElement 当前操作的json对象
* @param keyword 匹配的关键字 * @param keyword 匹配的关键字
* @param newValue 需要追加的前缀 * @param newValue 需要追加的前缀

@ -0,0 +1,65 @@
<?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.zbkj.service.dao.page.PageDiyDao">
<select id="selectNoValueById" resultType="com.zbkj.common.model.page.PageDiy"
parameterType="java.lang.Integer">
select id,
version,
name,
title,
cover_image,
template_name,
add_time,
update_time,
status,
type,
is_show,
is_bg_color,
is_bg_pic,
is_diy,
color_picker,
bg_pic,
bg_tab_val,
is_del,
return_address,
title_bg_color,
title_color,
service_status,
mer_id,
is_default,
text_position from eb_page_diy where id=#{value}
</select>
<select id="selectNoValueDefault" resultType="com.zbkj.common.model.page.PageDiy">
select id,
version,
name,
title,
cover_image,
template_name,
add_time,
update_time,
status,
type,
is_show,
is_bg_color,
is_bg_pic,
is_diy,
color_picker,
bg_pic,
bg_tab_val,
is_del,
return_address,
title_bg_color,
title_color,
service_status,
mer_id,
is_default,
text_position from eb_page_diy where is_default=1
</select>
<select id="queryPageTitle" resultType="java.lang.Integer" parameterType="java.lang.Integer">
select id from eb_page_diy_title where
page_id =#{pageId} order by title
</select>
</mapper>
Loading…
Cancel
Save