sys模块定义生成者接口
package com.np.pm.sys.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.np.pm.common.core.annotation.CurrentUser;
import com.np.pm.common.core.constants.FieldConstant;
import com.np.pm.common.core.constants.NumberConstant;
import com.np.pm.common.core.enums.ResultCode;
import com.np.pm.common.core.model.BaseExcel;
import com.np.pm.common.core.model.QueryRequest;
import com.np.pm.common.core.model.Result;
import com.np.pm.common.core.utils.BuildTreeUtil;
import com.np.pm.common.core.utils.ListUtil;
import com.np.pm.common.core.utils.PmPoiUtil;
import com.np.pm.common.log.annotation.PmLog;
import com.np.pm.common.log.enums.LogTypeEnum;
import com.np.pm.common.repository.model.system.SysMenu;
import com.np.pm.common.repository.model.system.SysRole;
import com.np.pm.common.repository.model.system.UserInfoCache;
import com.np.pm.common.springboot.starter.controller.PMBaseController;
import com.np.pm.sys.constants.SysMenuConstant;
import com.np.pm.sys.service.ISysMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.*;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* @author tangxingpeng
* @date 2021/2/23 14:18
*/
@RestController
@Api(tags = "菜单模块api")
@Slf4j
@RequestMapping("/sys/menu")
public class SysMenuController extends PMBaseController<SysMenu> {
@Autowired
private ISysMenuService menuService;
@ApiOperation(value = "根据ID查询详情")
//@PreAuthorize("hasAuthority('demoMainData:select')")
@GetMapping("{id}")
@PmLog(title = "根据ID查询详情", opType = LogTypeEnum.QUERY)
public Result<?> findById(@PathVariable Serializable id) {
return Result.success(menuService.findById(id));
}
}
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("查询失败");
}
}
}
结果