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.util.Date;
import java.util.List;
/**
* <p>
@ -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<Integer> titleIds;
}

@ -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<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.zbkj.common.model.page.PageDiy;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
@ -12,5 +15,9 @@ import com.zbkj.common.model.page.PageDiy;
* @since 2023-05-16
*/
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时加载对应的模版即可
*/
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.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;
@ -42,6 +48,7 @@ import java.util.stream.Collectors;
* @date 2023-05-16
*/
@Service
@Slf4j
public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> implements PageDiyService {
private static final Logger logger = LoggerFactory.getLogger(PageDiyServiceImpl.class);
@ -49,9 +56,14 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
@Resource
private PageDiyDao dao;
@Resource
private PageDiyTitleDao pageDiyTitleDao;
@Autowired
private SystemConfigService systemConfigService;
@Resource
private RedisUtil redisUtil;
/**
* 列表
@ -94,6 +106,18 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
jsonContext.delete("$..*[?(@ == '" + adminApiPath + "')]");
pageDiy.setValue(jsonContext.jsonString());
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;
}
@ -114,11 +138,25 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
// // 通配符去掉关键子 再存储
// jsonContext.delete("$..*[?(@ == '"+ adminApiPath +"')]");
// 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;
}
/**
* 编辑diy名称
*
* @param pageDiyEditNameRequest 待编辑名称对象
*/
@Override
@ -153,11 +191,13 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
// 设置当前diy数据为商城首页
pageDiy.setIsDefault(1);
redisUtil.set("PAGEDIY_DEFAULT", pageDiy);
return dao.updateById(pageDiy) > 0;
}
/**
* 获取DIY首页模版Id
*
* @param isLoadValue 是否加载value详情数据
* @return 首页模版ID
*/
@ -211,6 +251,15 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> 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模版配置
*
@ -223,15 +272,24 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
public PageDiyResponse getDiyPageByPageIdForFront(Integer id) {
PageDiy pageDiy;
if (0 == id) {
LambdaQueryWrapper<PageDiy> getHomeDefault = Wrappers.lambdaQuery();
getHomeDefault.eq(PageDiy::getIsDefault, 1);
pageDiy = getOne(getHomeDefault);
pageDiy = dao.selectNoValueDefault();
} else {
pageDiy = getById(id);
}
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,16 +304,13 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> 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
*/
@ -275,6 +330,7 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
/**
* 调用diy配置数据后结合本地配置传递给递归方法替换
*
* @param diyValue 当前待操作的diy对象其实仅仅用到了value
* @return 替换后的json对象
*/
@ -294,6 +350,7 @@ public class PageDiyServiceImpl extends ServiceImpl<PageDiyDao, PageDiy> impleme
/**
* 根据系统关键字匹配素材前缀匹配后追加系统中对应的素材前缀
*
* @param jsonElement 当前操作的json对象
* @param keyword 匹配的关键字
* @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