Procházet zdrojové kódy

添加admin给授权服务准备的权限查询接口

添加admin给授权服务准备的权限查询接口
zhiqiang.yu před 1 týdnem
rodič
revize
7e214d15fd
24 změnil soubory, kde provedl 1221 přidání a 1 odebrání
  1. 19 0
      py-goods/src/main/java/com/poyee/controller/ApiVersion.java
  2. 74 0
      py-goods/src/main/java/com/poyee/controller/BaseController.java
  3. 51 0
      py-goods/src/main/java/com/poyee/controller/LocalUserController.java
  4. 230 0
      py-goods/src/main/java/com/poyee/domain/BaseEntity.java
  5. 62 0
      py-goods/src/main/java/com/poyee/domain/SysMenu.java
  6. 210 0
      py-goods/src/main/java/com/poyee/domain/SysRole.java
  7. 49 0
      py-goods/src/main/java/com/poyee/domain/SysUserRole.java
  8. 89 0
      py-goods/src/main/java/com/poyee/dto/ResultDTO.java
  9. 12 0
      py-goods/src/main/java/com/poyee/dto/UserExtraInfoDTO.java
  10. 24 0
      py-goods/src/main/java/com/poyee/mapper/SysMenuMapper.java
  11. 17 0
      py-goods/src/main/java/com/poyee/mapper/SysRoleMapper.java
  12. 24 0
      py-goods/src/main/java/com/poyee/service/ISysMenuService.java
  13. 22 0
      py-goods/src/main/java/com/poyee/service/ISysRoleService.java
  14. 55 0
      py-goods/src/main/java/com/poyee/service/impl/SysMenuServiceImpl.java
  15. 42 0
      py-goods/src/main/java/com/poyee/service/impl/SysRoleServiceImpl.java
  16. 18 0
      py-goods/src/main/resources/mapper/SysMenuMapper.xml
  17. 37 0
      py-goods/src/main/resources/mapper/SysRoleMapper.xml
  18. 46 0
      py-goods/target/classes/mapper/SpuCategoryMapper.xml
  19. 57 0
      py-goods/target/classes/mapper/SpuMapper.xml
  20. 18 0
      py-goods/target/classes/mapper/SysMenuMapper.xml
  21. 37 0
      py-goods/target/classes/mapper/SysRoleMapper.xml
  22. 0 0
      py-goods/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  23. 27 0
      py-goods/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  24. 1 1
      py-starter/src/main/resources/application-dev.yml

+ 19 - 0
py-goods/src/main/java/com/poyee/controller/ApiVersion.java

@@ -0,0 +1,19 @@
+package com.poyee.controller;
+
+import org.springframework.web.bind.annotation.Mapping;
+
+import java.lang.annotation.*;
+
+
+import org.springframework.web.bind.annotation.Mapping;
+
+import java.lang.annotation.*;
+
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Mapping
+public @interface ApiVersion {
+    double value();
+
+}

+ 74 - 0
py-goods/src/main/java/com/poyee/controller/BaseController.java

@@ -0,0 +1,74 @@
+package com.poyee.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.poyee.dto.ResultDTO;
+import org.apache.commons.collections4.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.stereotype.Component;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.beans.PropertyEditorSupport;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+
+
+
+/**
+ * web层通用数据处理
+ *
+ * @author zheng
+ */
+@Component
+public class BaseController {
+    private Object param;
+    private Object service;
+    private String methodName;
+
+    protected ResultDTO successResult(String msg, Object data) {
+        return new ResultDTO(ResultDTO.RESPCODE_SUCCESS, msg, data);
+    }
+
+    protected ResultDTO successResult(Object data) {
+        return new ResultDTO(ResultDTO.RESPCODE_SUCCESS, ResultDTO.MSG_SUCCESS, data);
+    }
+
+    protected ResultDTO successResult() {
+        return new ResultDTO(ResultDTO.RESPCODE_SUCCESS, ResultDTO.MSG_SUCCESS, null);
+    }
+
+    protected ResultDTO failureResult(int code, String msg) {
+        return new ResultDTO(code, msg, null);
+    }
+
+    protected ResultDTO failureResult(String msg, Object data) {
+        return new ResultDTO(ResultDTO.RESPCODE_FAILURE, msg, data);
+    }
+
+    protected ResultDTO failureResult(String msg) {
+        return new ResultDTO(ResultDTO.RESPCODE_FAILURE, msg, null);
+    }
+
+    protected ResultDTO failureResult(int code, String msg, Object data) {
+        return new ResultDTO(code, msg, data);
+    }
+
+}

+ 51 - 0
py-goods/src/main/java/com/poyee/controller/LocalUserController.java

@@ -0,0 +1,51 @@
+package com.poyee.controller;
+
+import com.poyee.dto.ResultDTO;
+import com.poyee.dto.UserExtraInfoDTO;
+import com.poyee.service.ISysMenuService;
+import com.poyee.service.ISysRoleService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.stream.Collectors;
+/**
+ * 数据字典信息
+ *
+ * @author zheng
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/local/v1/user")
+public class LocalUserController extends BaseController
+{
+    private static final String USER_INIT_KEY = "user_init_key:";
+    private String prefix = "system/role";
+    @Autowired
+    private ISysRoleService roleService;
+    @GetMapping()
+    public String dictType()
+    {
+        return prefix + "/list";
+    }
+    @Autowired
+    private ISysMenuService menuService;
+    @GetMapping("/extra/{id}")
+    @ApiVersion(1.0)
+    public ResultDTO getUserExtraInfo(@PathVariable("id") Integer userId) {
+        UserExtraInfoDTO user = new UserExtraInfoDTO();
+        user.setRoleCodeList(roleService.selectRoleKeys(userId.longValue()).stream().collect(Collectors.toList()));
+        user.setPermissionList(menuService.selectPermsByUserId(userId.longValue()).stream().collect(Collectors.toList()));
+        return successResult(user);
+    }
+
+    @GetMapping("/init/{id}")
+    @ApiVersion(1.0)
+    public ResultDTO initUserRoleAndDetail(@PathVariable("id") Integer userId) {
+        return successResult();
+    }
+}

+ 230 - 0
py-goods/src/main/java/com/poyee/domain/BaseEntity.java

@@ -0,0 +1,230 @@
+package com.poyee.domain;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Entity基类
+ *
+ * @author zheng
+ */
+public class BaseEntity implements Serializable
+{
+
+    /** 搜索值 */
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private String searchValue;
+
+    /** 创建者 */
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private String createBy;
+
+    /** 创建时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private Date createTime;
+
+    /** 更新者 */
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private String updateBy;
+
+    /** 更新时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private Date updateTime;
+
+    /** 备注 */
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private String remark;
+
+    /** 请求参数 */
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private Map<String, Object> params;
+
+    @ApiModelProperty(hidden = true)
+    @ExcelIgnore
+    private String FileType;
+
+    //分页
+    @ExcelIgnore
+    private Integer page;
+
+    @ExcelIgnore
+    private Integer rows;
+    //排序
+    @ExcelIgnore
+    private String sidx;
+
+    @ExcelIgnore
+    private String sord;
+
+    @ExcelIgnore
+    private Integer start;
+
+    @ExcelIgnore
+    private Integer end;
+    @ExcelIgnore
+    private Integer offset;
+
+    public Integer getPage() {
+        return page;
+    }
+
+    public void setPage(Integer page) {
+        this.page = page;
+    }
+
+    public Integer getRows() {
+        return rows;
+    }
+
+    public void setRows(Integer rows) {
+        this.rows = rows;
+    }
+
+    public String getSidx() {
+        return sidx;
+    }
+
+    public void setSidx(String sidx) {
+        this.sidx = sidx;
+    }
+
+    public String getSord() {
+        return sord;
+    }
+
+    public void setSord(String sord) {
+        this.sord = sord;
+    }
+
+    public String getSearchValue()
+    {
+        return searchValue;
+    }
+
+    public void setSearchValue(String searchValue)
+    {
+        this.searchValue = searchValue;
+    }
+
+    public String getCreateBy()
+    {
+        return createBy;
+    }
+
+    public void setCreateBy(String createBy)
+    {
+        this.createBy = createBy;
+    }
+
+    public Date getCreateTime()
+    {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime)
+    {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateBy()
+    {
+        return updateBy;
+    }
+
+    public void setUpdateBy(String updateBy)
+    {
+        this.updateBy = updateBy;
+    }
+
+    public Date getUpdateTime()
+    {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime)
+    {
+        this.updateTime = updateTime;
+    }
+
+    public String getRemark()
+    {
+        return remark;
+    }
+
+    public void setRemark(String remark)
+    {
+        this.remark = remark;
+    }
+
+    public Map<String, Object> getParams()
+    {
+        if (params == null)
+        {
+            params = new HashMap<>();
+        }
+        return params;
+    }
+
+    public void setParams(Map<String, Object> params)
+    {
+        this.params = params;
+    }
+
+    public Integer getStart() {
+        return start;
+    }
+
+    public void setStart(Integer start) {
+        this.start = start;
+    }
+
+    public Integer getEnd() {
+        return end;
+    }
+
+    public void setEnd(Integer end) {
+        this.end = end;
+    }
+
+    public String getFileType() {
+        return FileType;
+    }
+
+    public void setFileType(String fileType) {
+        FileType = fileType;
+    }
+
+    public Integer getOffset() {
+        return offset;
+    }
+
+    public void setOffset(Integer offset) {
+        this.offset = offset;
+    }
+}

+ 62 - 0
py-goods/src/main/java/com/poyee/domain/SysMenu.java

@@ -0,0 +1,62 @@
+package com.poyee.domain;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 菜单权限表 sys_menu
+ *
+ * @author zheng
+ */
+@Data
+public class SysMenu extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 菜单ID */
+    private Long menuId;
+
+    /** 菜单名称 */
+    private String menuName;
+
+    /** 父菜单名称 */
+    private String parentName;
+
+    /** 父菜单ID */
+    private Long parentId;
+
+    /** 显示顺序 */
+    private String sortCode;
+
+    /** 菜单URL */
+    private String url;
+
+    /** 打开方式:menuItem页签 menuBlank新窗口 */
+    // partner 为页面路由
+    private String target;
+
+    /** 类型:0目录,1菜单,2按钮 */
+    private String menuType;
+
+    /** 菜单状态:0显示,1隐藏 */
+    private String visible;
+
+    /** 权限字符串 */
+    private String perms;
+
+    /** 菜单图标 */
+    private String icon;
+    private String custNo;
+    //默认:admin, partner
+    private String category;
+
+    private String mate;
+
+
+    /** 子菜单 */
+    private List<SysMenu> children = new ArrayList<SysMenu>();
+
+}

+ 210 - 0
py-goods/src/main/java/com/poyee/domain/SysRole.java

@@ -0,0 +1,210 @@
+package com.poyee.domain;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 角色表 sys_role
+ *
+ * @author zheng
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SysRole extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    private String custNo;
+    /** 角色ID */
+    private Long roleId;
+
+    /** 角色名称 */
+    private String roleName;
+
+    /** 角色权限 */
+    private String roleKey;
+
+    /** 角色排序 */
+    private String roleSort;
+
+    /** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限) */
+    private String dataScope;
+
+    /** 角色状态(0正常 1停用) */
+    private String status;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private String delFlag;
+
+    /** 用户是否存在此角色标识 默认不存在 */
+    private boolean flag = false;
+
+    /** 菜单组 */
+    private Long[] menuIds;
+
+    /** 部门组(数据权限) */
+    private Long[] deptIds;
+
+    public SysRole()
+    {
+
+    }
+
+    public static SysRole init(String roleKey , String roleName)
+    {
+        SysRole role = new SysRole();
+        role.roleKey = roleKey;
+        role.roleName = roleName;
+        role.status = "0";
+        return role;
+    }
+
+    public SysRole(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public String getCustNo() {
+        return custNo;
+    }
+
+    public void setCustNo(String custNo) {
+        this.custNo = custNo;
+    }
+    public Long getRoleId()
+    {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    public boolean isAdmin()
+    {
+        return isAdmin(this.roleId);
+    }
+
+    public static boolean isAdmin(Long roleId)
+    {
+        return roleId != null && 1L == roleId;
+    }
+
+    public String getDataScope()
+    {
+        return dataScope;
+    }
+
+    public void setDataScope(String dataScope)
+    {
+        this.dataScope = dataScope;
+    }
+
+    public String getRoleName()
+    {
+        return roleName;
+    }
+
+    public void setRoleName(String roleName)
+    {
+        this.roleName = roleName;
+    }
+
+    public String getRoleKey()
+    {
+        return roleKey;
+    }
+
+    public void setRoleKey(String roleKey)
+    {
+        this.roleKey = roleKey;
+    }
+
+    public String getRoleSort()
+    {
+        return roleSort;
+    }
+
+    public void setRoleSort(String roleSort)
+    {
+        this.roleSort = roleSort;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public String getDelFlag()
+    {
+        return delFlag;
+    }
+
+    public void setDelFlag(String delFlag)
+    {
+        this.delFlag = delFlag;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    public boolean isFlag()
+    {
+        return flag;
+    }
+
+    public void setFlag(boolean flag)
+    {
+        this.flag = flag;
+    }
+
+    public Long[] getMenuIds()
+    {
+        return menuIds;
+    }
+
+    public void setMenuIds(Long[] menuIds)
+    {
+        this.menuIds = menuIds;
+    }
+
+    public Long[] getDeptIds()
+    {
+        return deptIds;
+    }
+
+    public void setDeptIds(Long[] deptIds)
+    {
+        this.deptIds = deptIds;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("roleId", getRoleId())
+                .append("roleName", getRoleName())
+                .append("roleKey", getRoleKey())
+                .append("roleSort", getRoleSort())
+                .append("dataScope", getDataScope())
+                .append("status", getStatus())
+                .append("delFlag", getDelFlag())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("remark", getRemark())
+                .toString();
+    }
+}

+ 49 - 0
py-goods/src/main/java/com/poyee/domain/SysUserRole.java

@@ -0,0 +1,49 @@
+package com.poyee.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 用户和角色关联 sys_user_role
+ *
+ * @author zheng
+ */
+public class SysUserRole
+{
+    /** 用户ID */
+    private Long userId;
+
+    /** 角色ID */
+    private Long roleId;
+
+    public Long getUserId()
+    {
+        return userId;
+    }
+
+    public void setUserId(Long userId)
+    {
+        this.userId = userId;
+    }
+
+    public Long getRoleId()
+    {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId)
+    {
+        this.roleId = roleId;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("userId", getUserId())
+                .append("roleId", getRoleId())
+                .toString();
+    }
+}

+ 89 - 0
py-goods/src/main/java/com/poyee/dto/ResultDTO.java

@@ -0,0 +1,89 @@
+package com.poyee.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResultDTO<T> implements Serializable {
+    /**
+     * 状态码 成功: 200
+     */
+    public static final int RESPCODE_SUCCESS = 200;
+    /**
+     * 状态码 失败: 405
+     */
+    public static final int RESPCODE_FAILURE = 405;
+    /**
+     * 权限不足
+     */
+    public static final int RESPCODE_NO_AUTH = 401;
+    /**
+     * 返回成功信息
+     */
+    public static final String MSG_SUCCESS = "success";
+    /**
+     * 失败信息FAIL
+     */
+    public static final String MSG_FAIL = "request error";
+    /**
+     * 权限不足返回信息
+     */
+    public static final String MSG_NO_AUTH = "no_auth";
+
+    private int code;
+    private String msg;
+    private T data;
+
+    /**
+     * 构造错误result
+     *
+     * @return
+     */
+    public static ResultDTO buildErrorResult() {
+        return new ResultDTO(RESPCODE_FAILURE, MSG_FAIL, null);
+    }
+
+    /**
+     * 构造空result
+     *
+     * @return 200 ok
+     */
+    public static ResultDTO buildEmptySuccess() {
+        return new ResultDTO(RESPCODE_SUCCESS, MSG_SUCCESS, null);
+    }
+
+    /**
+     * 构造错误result
+     *
+     * @return
+     */
+    public static ResultDTO buildErrorResult(String msg) {
+        return new ResultDTO(RESPCODE_FAILURE, msg, null);
+    }
+
+
+    public static ResultDTO buildErrorResult(int code, String msg) {
+        return new ResultDTO(code, msg, null);
+    }
+
+    public static ResultDTO buildSuccessResult(Object o) {
+        return new ResultDTO(RESPCODE_SUCCESS, MSG_SUCCESS, o);
+    }
+
+    public static ResultDTO buildNeedPermissionResult() {
+        return new ResultDTO(RESPCODE_NO_AUTH, MSG_NO_AUTH, null);
+    }
+
+}

+ 12 - 0
py-goods/src/main/java/com/poyee/dto/UserExtraInfoDTO.java

@@ -0,0 +1,12 @@
+package com.poyee.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class UserExtraInfoDTO {
+    private List<String> roleCodeList;
+    private List<String> permissionList;
+}

+ 24 - 0
py-goods/src/main/java/com/poyee/mapper/SysMenuMapper.java

@@ -0,0 +1,24 @@
+package com.poyee.mapper;
+
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 菜单表 数据层
+ *
+ * @author zheng
+ */
+public interface SysMenuMapper
+{
+
+    /**
+     * 根据用户ID查询权限
+     *
+     * @param userId 用户ID
+     * @return 权限列表
+     */
+    public List<String> selectPermsByUserId(Long userId);
+
+
+}

+ 17 - 0
py-goods/src/main/java/com/poyee/mapper/SysRoleMapper.java

@@ -0,0 +1,17 @@
+package com.poyee.mapper;
+
+import com.poyee.domain.SysRole;
+import java.util.List;
+
+/**
+ * 角色表 数据层
+ *
+ * @author zheng
+ */
+public interface SysRoleMapper
+{
+
+    public List<SysRole> selectRolesByUserId(Long userId);
+
+
+}

+ 24 - 0
py-goods/src/main/java/com/poyee/service/ISysMenuService.java

@@ -0,0 +1,24 @@
+package com.poyee.service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+
+/**
+ * 菜单 业务层
+ *
+ * @author zheng
+ */
+public interface ISysMenuService
+{
+    /**
+     * 根据用户ID查询权限
+     *
+     * @param userId 用户ID
+     * @return 权限列表
+     */
+    public Set<String> selectPermsByUserId(Long userId);
+
+
+}

+ 22 - 0
py-goods/src/main/java/com/poyee/service/ISysRoleService.java

@@ -0,0 +1,22 @@
+package com.poyee.service;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 角色业务层
+ *
+ * @author zheng
+ */
+public interface ISysRoleService
+{
+
+    /**
+     * 根据用户ID查询角色
+     *
+     * @param userId 用户ID
+     * @return 权限列表
+     */
+    public Set<String> selectRoleKeys(Long userId);
+
+}

+ 55 - 0
py-goods/src/main/java/com/poyee/service/impl/SysMenuServiceImpl.java

@@ -0,0 +1,55 @@
+package com.poyee.service.impl;
+
+import com.poyee.domain.SysMenu;
+import com.poyee.mapper.SysMenuMapper;
+import com.poyee.service.ISysMenuService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.MessageFormat;
+import java.util.stream.Collectors;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 菜单 业务层处理
+ *
+ * @author zheng
+ */
+@Service
+public class SysMenuServiceImpl implements ISysMenuService
+{
+    public static final String PREMISSION_STRING = "perms[\"{0}\"]";
+
+    @Autowired
+    private SysMenuMapper menuMapper;
+
+    /**
+     * 根据用户ID查询权限
+     *
+     * @param userId 用户ID
+     * @return 权限列表
+     */
+    @Override
+    public Set<String> selectPermsByUserId(Long userId)
+    {
+        List<String> perms = menuMapper.selectPermsByUserId(userId);
+        Set<String> permsSet = new HashSet<>();
+        for (String perm : perms)
+        {
+            if (perm != null && !"".equals(perm.trim()))
+            {
+                permsSet.addAll(Arrays.asList(perm.trim().split(",")));
+            }
+        }
+        return permsSet;
+    }
+
+}

+ 42 - 0
py-goods/src/main/java/com/poyee/service/impl/SysRoleServiceImpl.java

@@ -0,0 +1,42 @@
+package com.poyee.service.impl;
+
+import com.poyee.domain.SysRole;
+import com.poyee.mapper.SysRoleMapper;
+import com.poyee.service.ISysRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.*;
+
+/**
+ * 角色 业务层处理
+ *
+ * @author zheng
+ */
+@Service
+public class SysRoleServiceImpl implements ISysRoleService
+{
+    @Autowired
+    private SysRoleMapper roleMapper;
+
+    /**
+     * 根据用户ID查询权限
+     *
+     * @param userId 用户ID
+     * @return 权限列表
+     */
+    @Override
+    public Set<String> selectRoleKeys(Long userId)
+    {
+        List<SysRole> perms = roleMapper.selectRolesByUserId(userId);
+        Set<String> permsSet = new HashSet<>();
+        for (SysRole perm : perms)
+        {
+            if (perm != null && perm.getRoleKey() != null && !"".equals(perm.getRoleKey().trim()))
+            {
+                permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
+            }
+        }
+        return permsSet;
+    }
+
+}

+ 18 - 0
py-goods/src/main/resources/mapper/SysMenuMapper.xml

@@ -0,0 +1,18 @@
+<?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.poyee.mapper.SysMenuMapper">
+
+	<select id="selectPermsByUserId" parameterType="Long" resultType="String">
+		select distinct m.perms
+		from sys_menu m
+			 left join sys_role_menu rm on m.menu_id = rm.menu_id
+			 left join sys_user_role ur on rm.role_id = ur.role_id
+			 left join sys_role r on r.role_id = ur.role_id
+		where m.visible = '0'
+		  and r.status = '0'
+		  and ur.user_id = #{userId}::integer
+	</select>
+
+</mapper> 

+ 37 - 0
py-goods/src/main/resources/mapper/SysRoleMapper.xml

@@ -0,0 +1,37 @@
+<?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.poyee.mapper.SysRoleMapper">
+
+	<resultMap type="com.poyee.domain.SysRole" id="SysRoleResult">
+		<id     property="roleId"       column="role_id"        />
+		<result property="roleName"     column="role_name"      />
+		<result property="roleKey"      column="role_key"       />
+		<result property="roleSort"     column="role_sort"      />
+		<result property="dataScope"    column="data_scope"     />
+		<result property="status"       column="status"         />
+		<result property="delFlag"      column="del_flag"       />
+		<result property="createBy"     column="create_by"      />
+		<result property="createTime"   column="create_time"    />
+		<result property="updateBy"     column="update_by"      />
+		<result property="updateTime"   column="update_time"    />
+		<result property="remark"       column="remark"         />
+		<result property="custNo"       column="cust_no"       />
+	</resultMap>
+
+	<sql id="selectRoleContactVo">
+        select distinct r.cust_no,r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope,
+            r.status, r.del_flag, r.create_time, r.remark
+        from sys_role r
+	        left join sys_user_role ur on ur.role_id = r.role_id
+	        left join sys_user u on u.user_id = ur.user_id
+	        left join sys_dept d on u.dept_id = d.dept_id
+    </sql>
+
+	<select id="selectRolesByUserId" parameterType="Long" resultMap="SysRoleResult">
+		<include refid="selectRoleContactVo"/>
+		WHERE r.del_flag = '0' and ur.user_id = #{userId}
+	</select>
+
+</mapper> 

+ 46 - 0
py-goods/target/classes/mapper/SpuCategoryMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.poyee.mapper.SpuCategoryMapper">
+
+    <sql id="spuCategoryQuery">
+        select id,category_name categoryName,is_cascade isCascade, sub_label subLabel,sort,parent_id parentId from spu_category
+    </sql>
+    <select id="querySpuCategory" resultType="spuCategoryDto">
+        <include refid="spuCategoryQuery"></include>
+    </select>
+    <select id="getSpuSubCategory" resultType="spuCategoryDto">
+        <include refid="spuCategoryQuery"></include>
+        <where>
+            parent_id=#{id}
+        </where>
+    </select>
+    <insert id="createCategory" parameterType="com.poyee.domain.SpuCategory">
+        insert into spu_category (category_name,is_cascade,sub_label,sort,parent_id)
+        values (#{categoryName},#{isCascade},#{subLabel},#{sort},#{parentId})
+    </insert>
+
+    <update id="updateCategory">
+        update spu_category
+        <trim prefix="set" suffixOverrides=",">
+            <if test="categoryName!=null and categoryName!=''">
+                category_name=#{categoryName},
+            </if>
+            <if test="isCascade!=null">
+                is_cascade=#{isCascade},
+            </if>
+            <if test="subLabel!=null and subLabel!=''">
+                sub_label=#{subLabel},
+            </if>
+            <if test="sort!=null">
+                sort=#{sort},
+            </if>
+            <if test="parentId!=null">
+                parent_id=#{parentId},
+            </if>
+
+        </trim>
+        where id=#{id}
+    </update>
+</mapper>

+ 57 - 0
py-goods/target/classes/mapper/SpuMapper.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.poyee.mapper.SpuMapper">
+
+    <resultMap id="spuMap" type="com.poyee.dto.SpuDTO">
+        <id column="id" property="id"/>
+        <result column="category" property="category"/>
+        <result column="sub_category" property="subCategory"/>
+        <result column="spu_name" property="spuName"/>
+        <result column="num" property="num"/>
+        <result column="main_image" property="mainImage" />
+        <result column="carousel_image" property="carouselImage"/>
+        <result column="status" property="status" />
+        <result column="create_time" property="createTime"/>
+        <result column="create_by" property="createBy"/>
+        <result column="properties" property="properties" jdbcType="OTHER" typeHandler="com.poyee.mapper.handler.JsonNodeTypeHandler"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="update_by" property="updateBy"/>
+    </resultMap>
+    <select id="selectList" parameterType="com.poyee.domain.Spu" resultMap="spuMap">
+        select id,category,sub_category,spu_name,num,main_image,carousel_image,status,create_time,create_by,properties from spu
+        <where>
+            <if test="spu.spuName!=null and spu.spuName!=''">
+                and spu_name like concat('%',#{spu.spuName},'%')
+            </if>
+            <if test="spu.status!=null">
+                and status=#{spu.status}
+            </if>
+        </where>
+        order by id desc
+    </select>
+    <insert id="insertSpu" parameterType="com.poyee.dto.SpuDTO">
+        insert into spu (category,sub_category,spu_name,num,main_image,carousel_image,status,create_time,create_by,properties)
+        values (#{category},#{subCategory},#{spuName},#{num},#{mainImage},#{carouselImage},#{status},#{createTime},#{createBy},
+        #{properties,jdbcType=OTHER,typeHandler=com.poyee.mapper.handler.JsonNodeTypeHandler}::json)
+    </insert>
+
+    <update id="editSpu" parameterType="com.poyee.dto.SpuDTO">
+        update spu
+        <trim prefix="set" suffixOverrides=",">
+            <if test="category!=null and category!=''">category=#{category},</if>
+            <if test="subCategory!=null and subCategory!=''">sub_category=#{subCategory},</if>
+            <if test="spuName!=null and spuName!=''">spu_name=#{spuName},</if>
+            <if test="num!=null">num=#{num},</if>
+            <if test="mainImage!=null and mainImage!=''">main_image=#{mainImage},</if>
+            <if test="carouselImage!=null and carouselImage!=''">carousel_image=#{carouselImage},</if>
+            <if test="createTime!=null">create_time=#{createTime},</if>
+            <if test="updateBy!=null and updateBy!=''">update_by=#{updateBy},</if>
+            <if test="createBy!=null and createBy!=''">create_by=#{createBy},</if>
+            <if test="updateTime!=null">update_time=#{updateTime},</if>
+            <if test="properties!=null">properties=#{properties,jdbcType=OTHER,typeHandler=com.poyee.mapper.handler.JsonNodeTypeHandler}::json</if>
+        </trim>
+        where id =#{id}
+    </update>
+</mapper>

+ 18 - 0
py-goods/target/classes/mapper/SysMenuMapper.xml

@@ -0,0 +1,18 @@
+<?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.poyee.mapper.SysMenuMapper">
+
+	<select id="selectPermsByUserId" parameterType="Long" resultType="String">
+		select distinct m.perms
+		from sys_menu m
+			 left join sys_role_menu rm on m.menu_id = rm.menu_id
+			 left join sys_user_role ur on rm.role_id = ur.role_id
+			 left join sys_role r on r.role_id = ur.role_id
+		where m.visible = '0'
+		  and r.status = '0'
+		  and ur.user_id = #{userId}::integer
+	</select>
+
+</mapper> 

+ 37 - 0
py-goods/target/classes/mapper/SysRoleMapper.xml

@@ -0,0 +1,37 @@
+<?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.poyee.mapper.SysRoleMapper">
+
+	<resultMap type="com.poyee.domain.SysRole" id="SysRoleResult">
+		<id     property="roleId"       column="role_id"        />
+		<result property="roleName"     column="role_name"      />
+		<result property="roleKey"      column="role_key"       />
+		<result property="roleSort"     column="role_sort"      />
+		<result property="dataScope"    column="data_scope"     />
+		<result property="status"       column="status"         />
+		<result property="delFlag"      column="del_flag"       />
+		<result property="createBy"     column="create_by"      />
+		<result property="createTime"   column="create_time"    />
+		<result property="updateBy"     column="update_by"      />
+		<result property="updateTime"   column="update_time"    />
+		<result property="remark"       column="remark"         />
+		<result property="custNo"       column="cust_no"       />
+	</resultMap>
+
+	<sql id="selectRoleContactVo">
+        select distinct r.cust_no,r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope,
+            r.status, r.del_flag, r.create_time, r.remark
+        from sys_role r
+	        left join sys_user_role ur on ur.role_id = r.role_id
+	        left join sys_user u on u.user_id = ur.user_id
+	        left join sys_dept d on u.dept_id = d.dept_id
+    </sql>
+
+	<select id="selectRolesByUserId" parameterType="Long" resultMap="SysRoleResult">
+		<include refid="selectRoleContactVo"/>
+		WHERE r.del_flag = '0' and ur.user_id = #{userId}
+	</select>
+
+</mapper> 

+ 0 - 0
py-goods/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst


+ 27 - 0
py-goods/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -0,0 +1,27 @@
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\mapper\SpuCategoryMapper.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\mapper\SysRoleMapper.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\impl\SpuCategoryServiceImpl.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\dto\SpuDTO.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\controller\BaseController.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\mapper\SysMenuMapper.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\impl\SysRoleServiceImpl.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\controller\LocalUserController.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\domain\BaseEntity.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\dto\UserExtraInfoDTO.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\dto\ResultDTO.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\dto\SpuCategoryDTO.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\domain\SysUserRole.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\ISysMenuService.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\domain\SysMenu.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\mapper\handler\JsonNodeTypeHandler.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\domain\Spu.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\SpuService.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\controller\SpuCategoryController.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\impl\SpuServiceImpl.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\domain\SpuCategory.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\mapper\SpuMapper.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\ISysRoleService.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\impl\SysMenuServiceImpl.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\service\SpuCategoryService.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\domain\SysRole.java
+C:\Git\AHX\tzy-admin\py-goods\src\main\java\com\poyee\controller\SpuController.java

+ 1 - 1
py-starter/src/main/resources/application-dev.yml

@@ -12,7 +12,7 @@ spring:
         master:
           type: com.alibaba.druid.pool.DruidDataSource
           driver-class-name: org.postgresql.Driver
-          url: ${SLAVE_DATASOURCE_URL:jdbc:postgresql://192.168.50.8:5432/ahx_app}
+          url: ${SLAVE_DATASOURCE_URL:jdbc:postgresql://192.168.50.8:5432/ahx_auction}
           username: ${SLAVE_DATASOURCE_USERNAME:postgres}
           password: ${MASTER_DATASOURCE_PASSWORD:123456}
 #          url: ${MASTER_DATASOURCE_URL:jdbc:postgresql://192.168.50.10:25432/hs_sync_data}