sys模块定义生成者接口

  1. package com.np.pm.sys.controller;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.np.pm.common.core.annotation.CurrentUser;
  6. import com.np.pm.common.core.constants.FieldConstant;
  7. import com.np.pm.common.core.constants.NumberConstant;
  8. import com.np.pm.common.core.enums.ResultCode;
  9. import com.np.pm.common.core.model.BaseExcel;
  10. import com.np.pm.common.core.model.QueryRequest;
  11. import com.np.pm.common.core.model.Result;
  12. import com.np.pm.common.core.utils.BuildTreeUtil;
  13. import com.np.pm.common.core.utils.ListUtil;
  14. import com.np.pm.common.core.utils.PmPoiUtil;
  15. import com.np.pm.common.log.annotation.PmLog;
  16. import com.np.pm.common.log.enums.LogTypeEnum;
  17. import com.np.pm.common.repository.model.system.SysMenu;
  18. import com.np.pm.common.repository.model.system.SysRole;
  19. import com.np.pm.common.repository.model.system.UserInfoCache;
  20. import com.np.pm.common.springboot.starter.controller.PMBaseController;
  21. import com.np.pm.sys.constants.SysMenuConstant;
  22. import com.np.pm.sys.service.ISysMenuService;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import lombok.extern.slf4j.Slf4j;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.cache.annotation.Cacheable;
  28. import org.springframework.web.bind.annotation.*;
  29. import java.io.Serializable;
  30. import java.util.Collections;
  31. import java.util.List;
  32. import java.util.Map;
  33. /**
  34. * @author tangxingpeng
  35. * @date 2021/2/23 14:18
  36. */
  37. @RestController
  38. @Api(tags = "菜单模块api")
  39. @Slf4j
  40. @RequestMapping("/sys/menu")
  41. public class SysMenuController extends PMBaseController<SysMenu> {
  42. @Autowired
  43. private ISysMenuService menuService;
  44. @ApiOperation(value = "根据ID查询详情")
  45. //@PreAuthorize("hasAuthority('demoMainData:select')")
  46. @GetMapping("{id}")
  47. @PmLog(title = "根据ID查询详情", opType = LogTypeEnum.QUERY)
  48. public Result<?> findById(@PathVariable Serializable id) {
  49. return Result.success(menuService.findById(id));
  50. }
  51. }

test模块定义实体类对象、feign和fallback

package com.np.pm.test.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.np.pm.common.repository.model.system.SysMenu;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * @author tangxingpeng
 * @date 2021/9/18 15:05
 */
@Data
public class SysMenusVo {

    /**
     * 菜单/按钮ID
     */
    private Long id;

    /**
     * 上级菜单ID
     */
    private Long parentId;

    /**
     * 菜单/按钮名称
     */
    @ApiModelProperty(value = "菜单名称")
    private String menuName;

    /**
     * 请求的路径
     */
    private String path;

    /**
     * 请求的类型
     */
    private String pathMethod;

    /**
     * 路由组件
     */
    @ApiModelProperty(value = "路由组件")
    private String component;

    /**
     * 权限点前缀
     */
    @ApiModelProperty(value = "权限点前缀")
    private String permPrefix;

    /**
     * 图标
     */
    @ApiModelProperty(value = "图标")
    private String icon;

    /**
     * 类型(字典 0目录 1菜单 2按钮)
     */
    @ApiModelProperty(value = "类型(0菜单 1按钮)")
    private Integer menuType;

    /**
     * 排序字段
     */
    @ApiModelProperty(value = "排序字段")
    private Integer sortId;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 是否绑定权限
     */
    @ApiModelProperty(value = "是否绑定权限")
    private Boolean bindPerms;

    /**
     * 是否启用
     */
    @ApiModelProperty(value = "是否启用")
    private Boolean useOrNot;

    /**
     * 是否绑定流程
     */
    @ApiModelProperty(value = "是否绑定流程")
    private Boolean bindFlow;

    /**
     * 关联的表名
     */
    @ApiModelProperty(value = "关联的表名")
    private String relatedTableName;

    /**
     * keyword
     */
    @ApiModelProperty(value = "keyword")
    private String keyword;

    /**
     * ORG_ID
     */
    @ApiModelProperty(value = "ORG_ID")
    private Long orgId;

    /**
     * 创建人ID
     */
    @ApiModelProperty(value = "创建人ID")
    //@ExcelProperty(value = "创建人ID", index = 3)
    private Long createHumId;

    /**
     * 创建人姓名
     */
    @ApiModelProperty(value = "创建人姓名")
    //@ExcelProperty(value = "创建人姓名", index = 5)
    private String createHumCode;

    /**
     * 创建人员姓名
     */
    @ApiModelProperty(value = "创建人员姓名")
    //@ExcelProperty(value = "创建人员姓名", index = 6)
    private String createHumName;

    /**
     * 部门ID
     */
    @ApiModelProperty(value = "部门ID")
    private Long deptId;

    /**
     * 打开方式(0组件 1NAV 2内链 3外链)
     */
    @ApiModelProperty(value = "打开方式(0组件 1NAV 2内链 3外链)")
    private Integer openType;

    @TableField(exist = false)
    private List<SysMenu> children;

    @TableField(exist = false)
    private Long roleId;

    @TableField(exist = false)
    private Set<Long> menuIds;
}
@FeignClient(value = ServiceNameConstant.SYSTEM_SERVICE, fallbackFactory = SystemServiceFallbackFactory.class)
public interface SystemService {

    /**
     * 查询菜单详情
     */
    @GetMapping("/sys/menu/{id}")
    Result<?> findById(@PathVariable(value = "id") Serializable id);

}
@Component
public class SystemServiceFallbackFactory implements FallbackFactory<SystemService> {


    @Override
    public SystemService create(Throwable cause) {
        return new SystemService() {
            @Override
            public Result<?> findById(Serializable id) {
                throw new ServiceException("查询失败");
            }
        };
    }

}

test-service使用

@Service
public class PmTestFormServiceImpl extends PMBaseTreeServiceImpl<PmTestFormMapper, PmTestForm> implements PmTestFormService {

    @Autowired
    private SystemService systemService;

    @Override
    public Result getMenuInfo(Long id) {
        Result<?> menuInfo = systemService.findById(id);
        if (!menuInfo.getFailed()) {
            SysMenusVo sysMenusVo = FastJsonUtil.copyProperty(menuInfo.getData(), SysMenusVo.class);
            return Result.success(sysMenusVo);
        } else {
            return Result.failure("查询失败");
        }
    }

}

结果

image.png