package org.ruoyi.pageDesigner.service.impl; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.amazonaws.util.json.Jackson; import com.baomidou.mybatisplus.core.conditions.Wrapper; 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.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import org.ruoyi.common.core.constant.UserConstants; import org.ruoyi.common.core.utils.StreamUtils; import org.ruoyi.common.core.utils.StringUtils; import org.ruoyi.core.page.PageQuery; import org.ruoyi.core.page.TableDataInfo; import org.ruoyi.helper.DataBaseHelper; import org.ruoyi.pageDesigner.domain.PageDesigner; import org.ruoyi.pageDesigner.domain.PageDesignerDTO; import org.ruoyi.pageDesigner.domain.PageDesignerVo; import org.ruoyi.pageDesigner.mapper.PageDesignerMapper; import org.ruoyi.pageDesigner.service.PageDesignerService; import org.ruoyi.system.domain.SysMenu; import org.ruoyi.system.mapper.SysMenuMapper; import org.ruoyi.system.mapper.SysUserMapper; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * @author kanglujie * @date 2025-06-23 17:36:29 */ @Service @RequiredArgsConstructor public class PageDesignerServiceImpl extends ServiceImpl implements PageDesignerService { private final SysMenuMapper menuMapper; @Override public void add(PageDesignerDTO dto) { SysMenu menu = new SysMenu(); menu.setMenuName(dto.getName()); menu.setParentId(Long.valueOf(dto.getMenuParentId())); menu.setOrderNum(999); menu.setComponent("tool/template/index"); menu.setIsFrame("1"); menu.setIsCache("0"); menu.setMenuType("C"); // C:目录, M:菜单, F:按钮 menu.setVisible("0"); menu.setStatus(dto.getStatus()); menuMapper.insert(menu); PageDesigner entity = convertToEntity(dto); entity.setMenuId(menu.getMenuId().toString()); this.save(entity); menu.setPath(String.valueOf(entity.getId())); menuMapper.updateById(menu); } @Override public void updatePage(PageDesignerDTO dto) { PageDesigner entity = convertToEntity(dto); this.updateById(entity); PageDesigner byId = this.getById(entity.getId()); SysMenu menu = new SysMenu(); menu.setMenuId(Long.valueOf(byId.getMenuId())); menu.setStatus(entity.getStatus()); menu.setParentId(Long.valueOf(entity.getMenuParentId())); menuMapper.updateById(menu); } @Override public TableDataInfo selectPagelistAll(PageDesignerDTO pageDesignerDTO, PageQuery pageQuery) { Page page = baseMapper.selectPagelistAll(pageQuery.build(), this.buildQueryWrapper(pageDesignerDTO)); return TableDataInfo.build(page); } private Wrapper buildQueryWrapper(PageDesignerDTO pageDesignerDTO) { Map params = pageDesignerDTO.getParams(); QueryWrapper wrapper = Wrappers.query(); wrapper.eq("del_flag", UserConstants.USER_NORMAL) .eq(ObjectUtil.isNotNull(pageDesignerDTO.getId()), "id", pageDesignerDTO.getId()) .like(StringUtils.isNotBlank(pageDesignerDTO.getName()), "name", pageDesignerDTO.getName()) .eq(StringUtils.isNotBlank(pageDesignerDTO.getStatus()), "status", pageDesignerDTO.getStatus()) .between(params.get("beginTime") != null && params.get("endTime") != null, "create_time", params.get("beginTime"), params.get("endTime")) ; return wrapper; } @Override public List listAll(String keyword) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.like(keyword != null, PageDesigner::getName, keyword); return this.list(wrapper); } @Override public PageDesigner getDetail(Long id) { return this.getById(id); } @Override public void deleteByIds(List ids) { List designers = this.listByIds(ids); for (PageDesigner designer : designers) { Long id = designer.getId(); this.removeById(id); Long menuId = Long.valueOf(designer.getMenuId()); if (menuId != null) { menuMapper.deleteById(menuId); } } } private PageDesigner convertToEntity(PageDesignerDTO dto) { PageDesigner entity = new PageDesigner(); entity.setId(dto.getId()); entity.setName(dto.getName()); entity.setMenuId(dto.getMenuId()); entity.setStatus(dto.getStatus()); entity.setRemark(dto.getRemark()); entity.setFormJson(dto.getFormJson()); entity.setShowColumn(dto.getShowColumn()); entity.setActionsFunc(dto.getActionsFunc()); entity.setMenuParentId(dto.getMenuParentId()); return entity; } }