diff --git a/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java b/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java index b49f680..d1a4d56 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/constant/ConstantStatus.java @@ -155,4 +155,7 @@ public class ConstantStatus { public static final int CERT_PRODUCT = 3; //产品品种 + + + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthAdminController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthAdminController.java index b032ff1..9443a5f 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthAdminController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthAdminController.java @@ -3,10 +3,7 @@ package com.glxp.sale.admin.controller.auth; import com.github.pagehelper.PageInfo; import com.glxp.sale.admin.annotation.AuthRuleAnnotation; import com.glxp.sale.admin.dao.inout.WarehouseUserDao; -import com.glxp.sale.admin.entity.auth.AuthAdmin; -import com.glxp.sale.admin.entity.auth.AuthRole; -import com.glxp.sale.admin.entity.auth.AuthRoleAdmin; -import com.glxp.sale.admin.entity.auth.CustomerInfoEntity; +import com.glxp.sale.admin.entity.auth.*; import com.glxp.sale.admin.entity.inout.WarehouseUserEntity; import com.glxp.sale.admin.entity.inventory.InvBusUserEntity; import com.glxp.sale.admin.entity.inventory.InvSubWarehouseEntity; @@ -19,10 +16,7 @@ import com.glxp.sale.admin.res.PageSimpleResponse; import com.glxp.sale.admin.res.auth.AuthAdminResponse; import com.glxp.sale.admin.res.auth.AuthAdminRoleResponse; import com.glxp.sale.admin.res.inventory.InvWarehouseResponse; -import com.glxp.sale.admin.service.auth.AuthAdminService; -import com.glxp.sale.admin.service.auth.AuthRoleAdminService; -import com.glxp.sale.admin.service.auth.AuthRoleService; -import com.glxp.sale.admin.service.auth.CustomerInfoService; +import com.glxp.sale.admin.service.auth.*; import com.glxp.sale.admin.service.basic.BussinessTypeService; import com.glxp.sale.admin.service.inout.WarehouseUserService; import com.glxp.sale.admin.service.inventory.InvBusUserService; @@ -70,6 +64,12 @@ public class AuthAdminController { @Resource private InvSubWarehouseService invSubWarehouseService; + + @Resource + private AuthPermissionRuleService authPermissionRuleService; + @Resource + private AuthPermissionService authPermissionService; + /** * 获取管理员列表 */ @@ -308,8 +308,8 @@ public class AuthAdminController { if (authAdminSaveRequest.getId() == null) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数错误!"); } - InvSubWarehouseEntity invSubWarehouseEntity=invSubWarehouseService.filterGroupInvSubAndcode(authAdminSaveRequest.getLocSubInvCode()); - if(invSubWarehouseEntity!=null){ + InvSubWarehouseEntity invSubWarehouseEntity = invSubWarehouseService.filterGroupInvSubAndcode(authAdminSaveRequest.getLocSubInvCode()); + if (invSubWarehouseEntity != null) { authAdminSaveRequest.setLocInvCode(invSubWarehouseEntity.getParentId()); } AuthAdmin authAdmin = new AuthAdmin(); @@ -332,20 +332,18 @@ public class AuthAdminController { public BaseResponse delete(@RequestBody AuthAdminSaveRequest authAdminSaveRequest) { - - - FilterInvUserRequest warehouseUser=new FilterInvUserRequest(); + FilterInvUserRequest warehouseUser = new FilterInvUserRequest(); warehouseUser.setUserid(authAdminSaveRequest.getId()); - List warehouseUserEntityList=warehouseUserService.filterWarehouseUsers(warehouseUser); - if(warehouseUserEntityList.size()==0){ - FilterInvBusUserRequest invBusUserEntity=new FilterInvBusUserRequest(); - invBusUserEntity.setUserId(authAdminSaveRequest.getId()+""); - List invBusUserList=invBusUserService.filterInvBusUser(invBusUserEntity); - if(invBusUserList.size()>0){ - return ResultVOUtils.error(999,"该用户存在关联单据信息,请先解除再删除"); + List warehouseUserEntityList = warehouseUserService.filterWarehouseUsers(warehouseUser); + if (warehouseUserEntityList.size() == 0) { + FilterInvBusUserRequest invBusUserEntity = new FilterInvBusUserRequest(); + invBusUserEntity.setUserId(authAdminSaveRequest.getId() + ""); + List invBusUserList = invBusUserService.filterInvBusUser(invBusUserEntity); + if (invBusUserList.size() > 0) { + return ResultVOUtils.error(999, "该用户存在关联单据信息,请先解除再删除"); } - }else{ - return ResultVOUtils.error(999,"该用户存在关联仓库信息,请先解除再删除"); + } else { + return ResultVOUtils.error(999, "该用户存在关联仓库信息,请先解除再删除"); } @@ -364,6 +362,43 @@ public class AuthAdminController { } + @GetMapping("/spms/getRouters") + public BaseResponse getRouters() { + + List roleIds; + AuthAdmin authAdmin = getCustomerId(); + if (!authAdmin.getCustomerId().equals("110")) { + CustomerInfoEntity customerInfoEntity = customerInfoService.selectById(authAdmin.getCustomerId()); + roleIds = new ArrayList<>(); + roleIds.add(Long.parseLong(customerInfoEntity.getRoleId())); + } else { + List authRoleAdmins = authRoleAdminService.listByAdminId(authAdmin.getId()); + roleIds = authRoleAdmins.stream().map(AuthRoleAdmin::getRole_id).collect(Collectors.toList()); + } + + + // 角色授权列表 + List authPermissions = authPermissionService.listByRoleIdIn(roleIds); + List permissionRuleIds = authPermissions.stream().map(AuthPermission::getPermissionRuleId).collect(Collectors.toList()); + + // 获取授权的规则 + List authPermissionRules = authPermissionRuleService.listByIdIn(permissionRuleIds); + + + if (authAdmin.getId() == 1) {//admin 用户获取所有菜单项 + authPermissionRules = authPermissionRuleService.listAll(); + } else { + + } + + + List menus = authPermissionRuleService.selectMenuTreeByUserId(authPermissionRules); + List routerEntities = authPermissionRuleService.buildMenus(menus); + + return ResultVOUtils.success(routerEntities); + } + + public AuthAdmin getCustomerId() { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthPermissionRuleController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthPermissionRuleController.java index 195931d..730c817 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthPermissionRuleController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/auth/AuthPermissionRuleController.java @@ -1,7 +1,8 @@ package com.glxp.sale.admin.controller.auth; import com.glxp.sale.admin.annotation.AuthRuleAnnotation; -import com.glxp.sale.admin.entity.auth.AuthPermissionRule; +import com.glxp.sale.admin.entity.auth.*; +import com.glxp.sale.admin.exception.JsonException; import com.glxp.sale.admin.req.auth.AuthPermissionRuleSaveRequest; import com.glxp.sale.admin.res.auth.AuthPermissionRuleMergeResponse; import com.glxp.sale.admin.service.auth.AuthPermissionRuleService; @@ -15,12 +16,17 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 权限规则相关 @@ -33,6 +39,7 @@ public class AuthPermissionRuleController { /** * 列表 + * * @return */ @AuthRuleAnnotation("admin/auth/permission_rule/index") @@ -40,15 +47,16 @@ public class AuthPermissionRuleController { public BaseResponse index() { List authPermissionRuleList = authPermissionRuleService.listAll(); - List merge = PermissionRuleTreeUtils.merge(authPermissionRuleList,0L); + List merge = PermissionRuleTreeUtils.merge(authPermissionRuleList, 0L); - Map restMap = new HashMap<>(); + Map restMap = new HashMap<>(); restMap.put("list", merge); return ResultVOUtils.success(restMap); } /** * 新增 + * * @param authPermissionRuleSaveRequest * @param bindingResult * @return @@ -80,6 +88,7 @@ public class AuthPermissionRuleController { /** * 编辑 + * * @param authPermissionRuleSaveRequest * @param bindingResult * @return @@ -112,6 +121,7 @@ public class AuthPermissionRuleController { /** * 删除 + * * @param authPermissionRuleSaveRequest * @return */ @@ -132,4 +142,5 @@ public class AuthPermissionRuleController { } + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java index df4b6b9..ff56ae4 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/StockQRCodeTextController.java @@ -461,6 +461,7 @@ public class StockQRCodeTextController { StockOrderDetailEntity stockOrderDetailEntity = getDetailByRelBatch(stockOrderDetailEntities, stockOrderPrintEntity.getProductId(), stockOrderPrintEntity.getBatchNo()); if (stockOrderDetailEntity != null) { stockOrderPrintEntity.setPrice(stockOrderDetailEntity.getPrice()); + stockOrderPrintEntity.setZczbhhzbapzbh(stockOrderDetailEntity.getZczbhhzbapzbh()); } index++; diff --git a/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/AuthPermissionRule.java b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/AuthPermissionRule.java index 058ebfe..32f9b71 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/AuthPermissionRule.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/AuthPermissionRule.java @@ -8,15 +8,25 @@ import java.util.Date; * 规则表 */ @Data -public class AuthPermissionRule { +public class AuthPermissionRule extends TreeEntity { - private Long id; - private Long pid; - private String name; - private String title; - private Integer status; - private String condition; - private Integer listorder; - private Date createTime; - private Date updateTime; + private Long id; + private Long pid; + private String name; + private String title; + private Integer status; + private String condition; + private Integer listorder; + private Date createTime; + private Date updateTime; + + private Integer isFrame; + private Integer isCache; + private String menuType; //菜单类型 + private Boolean visible; //是否显示 + private String perms; + private String icon; //图标 + private String remark; + private String path; + private String queryParam; } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/MetaEntity.java b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/MetaEntity.java new file mode 100644 index 0000000..cbf6807 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/MetaEntity.java @@ -0,0 +1,62 @@ +package com.glxp.sale.admin.entity.auth; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import lombok.Data; + +/** + * 路由显示信息 + * + * @author ruoyi + */ + +@Data +public class MetaEntity { + + /** + * 设置该路由在侧边栏和面包屑中展示的名字 + */ + private String title; + + /** + * 设置该路由的图标,对应路径src/assets/icons/svg + */ + private String icon; + + /** + * 设置为true,则不会被 缓存 + */ + private boolean noCache; + + /** + * 内链地址(http(s)://开头) + */ + private String link; + + public MetaEntity(String title, String icon) { + this.title = title; + this.icon = icon; + } + + public MetaEntity(String title, String icon, boolean noCache) { + this.title = title; + this.icon = icon; + this.noCache = noCache; + } + + public MetaEntity(String title, String icon, String link) { + this.title = title; + this.icon = icon; + this.link = link; + } + + public MetaEntity(String title, String icon, boolean noCache, String link) { + this.title = title; + this.icon = icon; + this.noCache = noCache; + if (StrUtil.isNotEmpty(link) && HttpUtil.isHttp(link)) { + this.link = link; + } + } + +} diff --git a/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/RouterEntity.java b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/RouterEntity.java new file mode 100644 index 0000000..eb7b2a3 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/RouterEntity.java @@ -0,0 +1,58 @@ +package com.glxp.sale.admin.entity.auth; + +import lombok.Data; + +import java.util.List; + +/** + * 路由配置信息 + */ +@Data +public class RouterEntity { + + /** + * 路由名字 + */ + private String name; + + /** + * 路由地址 + */ + private String path; + + /** + * 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现 + */ + private boolean hidden; + + /** + * 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 + */ + private String redirect; + + /** + * 组件地址 + */ + private String component; + + /** + * 路由参数:如 {"id": 1, "name": "ry"} + */ + private String query; + + /** + * 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 + */ + private Boolean alwaysShow; + + /** + * 其他元素 + */ + private MetaEntity meta; + + /** + * 子路由 + */ + private List children; + +} diff --git a/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/TreeEntity.java b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/TreeEntity.java new file mode 100644 index 0000000..ebf5b92 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/sale/admin/entity/auth/TreeEntity.java @@ -0,0 +1,34 @@ +package com.glxp.sale.admin.entity.auth; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.ArrayList; +import java.util.List; + +/** + * Tree基类 + * + * @author Lion Li + */ + +@Data +public class TreeEntity { + + + /** + * 父菜单名称 + */ + private String parentName; + + /** + * 父菜单ID + */ + private Long parentId; + + /** + * 子部门 + */ + private List children = new ArrayList<>(); + +} diff --git a/api-admin/src/main/java/com/glxp/sale/admin/entity/basic/UdiInfoEntity.java b/api-admin/src/main/java/com/glxp/sale/admin/entity/basic/UdiInfoEntity.java index 8a36b7f..bbcb138 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/entity/basic/UdiInfoEntity.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/entity/basic/UdiInfoEntity.java @@ -308,11 +308,11 @@ public class UdiInfoEntity { this.versionNumber = versionNumber; } - public int getDiType() { + public Integer getDiType() { return diType; } - public void setDiType(int diType) { + public void setDiType(Integer diType) { this.diType = diType; } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/res/auth/AuthPermissionRuleMergeResponse.java b/api-admin/src/main/java/com/glxp/sale/admin/res/auth/AuthPermissionRuleMergeResponse.java index 73025b7..c44193d 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/res/auth/AuthPermissionRuleMergeResponse.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/res/auth/AuthPermissionRuleMergeResponse.java @@ -2,6 +2,7 @@ package com.glxp.sale.admin.res.auth; import lombok.Data; +import java.util.Date; import java.util.List; /** @@ -17,6 +18,13 @@ public class AuthPermissionRuleMergeResponse { private Long status; private String condition; private Long listorder; + private Integer isFrame; + private Integer isCache; + private Boolean menuType; //菜单类型 + private Boolean visible; //是否显示 + private String perms; + private String icon; //图标 + private String remark; // 一次性加载所有权限规则生成 tree 树形节点时需要 private List children; diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/auth/AuthPermissionRuleService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/auth/AuthPermissionRuleService.java index 0eb22f3..6d11bca 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/auth/AuthPermissionRuleService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/auth/AuthPermissionRuleService.java @@ -2,6 +2,7 @@ package com.glxp.sale.admin.service.auth; import com.glxp.sale.admin.entity.auth.AuthPermissionRule; +import com.glxp.sale.admin.entity.auth.RouterEntity; import java.util.List; @@ -10,7 +11,6 @@ public interface AuthPermissionRuleService { List listByIdIn(List ids); - List listByPid(Long pid); List listAll(); @@ -21,5 +21,9 @@ public interface AuthPermissionRuleService { boolean deleteById(Long id); + List selectMenuTreeByUserId(List menus); //根据用户获取 + + List buildMenus(List menus); //构建菜单路由 + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthLoginServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthLoginServiceImpl.java index 6b02edd..595a806 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthLoginServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthLoginServiceImpl.java @@ -67,6 +67,7 @@ public class AuthLoginServiceImpl implements AuthLoginService { // 获取角色ids + // 角色授权列表 List authPermissions = authPermissionService.listByRoleIdIn(roleIds); List permissionRuleIds = authPermissions.stream().map(AuthPermission::getPermissionRuleId).collect(Collectors.toList()); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthPermissionRuleServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthPermissionRuleServiceImpl.java index 9953e49..81208fa 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthPermissionRuleServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/auth/impl/AuthPermissionRuleServiceImpl.java @@ -1,16 +1,21 @@ package com.glxp.sale.admin.service.auth.impl; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.glxp.sale.admin.constant.ConstantStatus; import com.glxp.sale.admin.dao.auth.AuthPermissionRuleDao; import com.glxp.sale.admin.entity.auth.AuthPermissionRule; +import com.glxp.sale.admin.entity.auth.MetaEntity; +import com.glxp.sale.admin.entity.auth.RouterEntity; import com.glxp.sale.admin.exception.JsonException; import com.glxp.sale.admin.service.auth.AuthPermissionRuleService; +import com.glxp.sale.admin.util.Constant; import com.glxp.sale.common.enums.ResultEnum; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.Collections; -import java.util.Date; -import java.util.List; +import java.util.*; /** * @@ -48,6 +53,7 @@ public class AuthPermissionRuleServiceImpl implements AuthPermissionRuleService /** * 查询所有 + * * @return */ @Override @@ -57,6 +63,7 @@ public class AuthPermissionRuleServiceImpl implements AuthPermissionRuleService /** * 插入 + * * @param authPermissionRule * @return */ @@ -79,6 +86,7 @@ public class AuthPermissionRuleServiceImpl implements AuthPermissionRuleService /** * 更新 + * * @param authPermissionRule * @return */ @@ -107,4 +115,214 @@ public class AuthPermissionRuleServiceImpl implements AuthPermissionRuleService public boolean deleteById(Long id) { return authPermissionRuleDao.deleteById(id); } + + @Override + public List selectMenuTreeByUserId(List menus) { + + return getChildPerms(menus, 0); + + } + + @Override + public List buildMenus(List menus) { + + List routers = new LinkedList(); + for (AuthPermissionRule menu : menus) { + RouterEntity router = new RouterEntity(); + router.setHidden("0".equals(menu.getVisible())); + router.setName(getRouteName(menu)); + router.setPath(getRouterPath(menu)); + router.setComponent(getComponent(menu)); + router.setQuery(menu.getQueryParam()); + router.setMeta(new MetaEntity(menu.getTitle(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache() + ""), menu.getPath())); + List cMenus = menu.getChildren(); + if (!cMenus.isEmpty() && Constant.TYPE_DIR.equals(menu.getMenuType())) { + router.setAlwaysShow(true); + router.setRedirect("noRedirect"); + router.setChildren(buildMenus(cMenus)); + } else if (isMenuFrame(menu)) { + router.setMeta(null); + List childrenList = new ArrayList(); + RouterEntity children = new RouterEntity(); + children.setPath(menu.getPath()); + children.setComponent(menu.getName()); + children.setName(StringUtils.capitalize(menu.getPath())); + children.setMeta(new MetaEntity(menu.getTitle(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache() + ""), menu.getPath())); + children.setQuery(menu.getQueryParam()); + childrenList.add(children); + router.setChildren(childrenList); + } else if (menu.getPid().intValue() == 0 && isInnerLink(menu)) { + router.setMeta(new MetaEntity(menu.getTitle(), menu.getIcon())); + router.setPath("/"); + List childrenList = new ArrayList(); + RouterEntity children = new RouterEntity(); + String routerPath = innerLinkReplaceEach(menu.getPath()); + children.setPath(routerPath); + children.setComponent(Constant.INNER_LINK); + children.setName(StringUtils.capitalize(routerPath)); + children.setMeta(new MetaEntity(menu.getTitle(), menu.getIcon(), menu.getPath())); + childrenList.add(children); + router.setChildren(childrenList); + } + routers.add(router); + } + return routers; + } + + + /** + * 获取路由名称 + * + * @param menu 菜单信息 + * @return 路由名称 + */ + public String getRouteName(AuthPermissionRule menu) { + String routerName = StringUtils.capitalize(menu.getPath()); + // 非外链并且是一级目录(类型为目录) + if (isMenuFrame(menu)) { + routerName = StringUtils.EMPTY; + } + return routerName; + } + + /** + * 获取路由地址 + * + * @param menu 菜单信息 + * @return 路由地址 + */ + public String getRouterPath(AuthPermissionRule menu) { + String routerPath = menu.getPath(); + // 内链打开外网方式 + if (menu.getPid().intValue() != 0 && isInnerLink(menu)) { + routerPath = innerLinkReplaceEach(routerPath); + } + // 非外链并且是一级目录(类型为目录) + if (0 == menu.getPid().intValue() && Constant.TYPE_DIR.equals(menu.getMenuType()) + && Constant.NO_FRAME.equals(menu.getIsFrame())) { + routerPath = "/" + menu.getPath(); + } + // 非外链并且是一级目录(类型为菜单) + else if (isMenuFrame(menu)) { + routerPath = "/"; + } + return routerPath; + } + + + /** + * 获取组件信息 + * + * @param menu 菜单信息 + * @return 组件信息 + */ + public String getComponent(AuthPermissionRule menu) { + String component = Constant.LAYOUT; + if (StringUtils.isNotEmpty(menu.getName()) && !isMenuFrame(menu)) { + component = menu.getName(); + } else if (StringUtils.isEmpty(menu.getName()) && menu.getPid().intValue() != 0 && isInnerLink(menu)) { + component = Constant.INNER_LINK; + } else if (StringUtils.isEmpty(menu.getName()) && isParentView(menu)) { + component = Constant.PARENT_VIEW; + } + return component; + } + + /** + * 是否为菜单内部跳转 + * + * @param menu 菜单信息 + * @return 结果 + */ + public boolean isMenuFrame(AuthPermissionRule menu) { + return menu.getPid().intValue() == 0 && Constant.TYPE_MENU.equals(menu.getMenuType()) + && menu.getIsFrame().equals(Constant.NO_FRAME); + } + + /** + * 是否为内链组件 + * + * @param menu 菜单信息 + * @return 结果 + */ + public boolean isInnerLink(AuthPermissionRule menu) { + return menu.getIsFrame() != null && (menu.getIsFrame() + "").equals(Constant.NO_FRAME) && menu.getPath() != null && HttpUtil.isHttp(menu.getPath()); + } + + /** + * 是否为parent_view组件 + * + * @param menu 菜单信息 + * @return 结果 + */ + public boolean isParentView(AuthPermissionRule menu) { + return menu.getPid().intValue() != 0 && Constant.TYPE_DIR.equals(menu.getMenuType()); + } + + /** + * 根据父节点的ID获取所有子节点 + * + * @param list 分类表 + * @param parentId 传入的父节点ID + * @return String + */ + public List getChildPerms(List list, int parentId) { + List returnList = new ArrayList(); + for (AuthPermissionRule t : list) { + // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 + if (t.getPid() == parentId) { + recursionFn(list, t); + returnList.add(t); + } + } + return returnList; + } + + /** + * 递归列表 + * + * @param list + * @param t + */ + private void recursionFn(List list, AuthPermissionRule t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (AuthPermissionRule tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, AuthPermissionRule t) { + List tlist = new ArrayList(); + for (AuthPermissionRule n : list) { + if (n.getPid().longValue() == t.getId().longValue()) { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, AuthPermissionRule t) { + return getChildList(list, t).size() > 0; + } + + /** + * 内链域名特殊字符替换 + * + * @return + */ + public String innerLinkReplaceEach(String path) { + return StringUtils.replaceEach(path, new String[]{Constant.HTTP, Constant.HTTPS, Constant.WWW, "."}, + new String[]{"", ""}); + } + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/thread/CompanyProductsRelService.java b/api-admin/src/main/java/com/glxp/sale/admin/thread/CompanyProductsRelService.java index 3b2f2a7..9a12fe5 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/thread/CompanyProductsRelService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/thread/CompanyProductsRelService.java @@ -40,7 +40,8 @@ public class CompanyProductsRelService { if (udiRelevanceEntity != null && StrUtil.isNotBlank(udiRelevanceEntity.getPrice())) { companyProductRelevanceEntity.setPrice(new BigDecimal(udiRelevanceEntity.getPrice())); } - UdiInfoEntity udiInfoEntity = udiInfoService.findByUuid(udiRelevanceEntity.getUuid()); + UdiInfoEntity udiInfoEntity = new UdiInfoEntity(); + udiInfoEntity.setUuid(udiRelevanceEntity.getUuid()); SupplementRequest supplementRequest = udiInfoExportRequest.getSupplementRequest(); BeanUtils.copyProperties(udiInfoExportRequest.getSupplementRequest(), udiInfoEntity); BeanUtils.copyProperties(supplementRequest, udiRelevanceEntity); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/thread/InvProductsTrService.java b/api-admin/src/main/java/com/glxp/sale/admin/thread/InvProductsTrService.java index 31d1909..e81cb4b 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/thread/InvProductsTrService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/thread/InvProductsTrService.java @@ -208,7 +208,7 @@ public class InvProductsTrService { //单据流转 BussinessChangeTypeEntity bussinessChangeTypeEntity = bussinessChangeTypeService.findOriginAction(bussinessLocalTypeEntity.getLocalAction()); - if (bussinessChangeTypeEntity != null && bussinessLocalTypeEntity.isChangeEnable()) { + if (bussinessChangeTypeEntity != null) { addUseOutOrder(orderEntity, mInvProductDetailEntities, bussinessChangeTypeEntity); @@ -318,7 +318,7 @@ public class InvProductsTrService { preiInList.add(warehouseEntity); } else if (warehouseEntity.getSerialNo() == null) { //无序列号(多级包装无序列号的已在上一步被排除),补齐数量 int lea = count - invCount; - warehouseEntity.setCount(lea / (warehouseEntity.getCount())); // + warehouseEntity.setCount(lea / (actCount)); // preiInList.add(warehouseEntity); } } @@ -364,7 +364,7 @@ public class InvProductsTrService { inList.add(warehouseEntity); } else if (warehouseEntity.getSerialNo() == null) { //无序列号(多级包装无序列号的已在上一步被排除),补齐数量 int lea = count - invCount; - warehouseEntity.setCount(lea / (warehouseEntity.getCount())); // + warehouseEntity.setCount(lea / (actCount)); // inList.add(warehouseEntity); } } @@ -434,7 +434,7 @@ public class InvProductsTrService { prePutList.add(warehouseEntity); } else if (warehouseEntity.getSerialNo() == null) { //无序列号(多级包装无序列号的已在上一步被排除),补齐数量 int lea = count - invCount; - warehouseEntity.setCount(lea / (warehouseEntity.getCount())); // + warehouseEntity.setCount(lea / (actCount)); // prePutList.add(warehouseEntity); } } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/util/Constant.java b/api-admin/src/main/java/com/glxp/sale/admin/util/Constant.java index 3775272..730e02f 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/util/Constant.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/util/Constant.java @@ -39,5 +39,62 @@ public class Constant { public static final int CHECK_REPEAT = 2; //重複校驗 public static final int CHECK_NULL = 3; //校驗失敗,不存在 + /** + * www主域 + */ + public static String WWW = "www."; + + /** + * http请求 + */ + public static String HTTP = "http://"; + + /** + * https请求 + */ + public static String HTTPS = "https://"; + + + /** + * 菜单类型(目录) + */ + public static String TYPE_DIR = "M"; + + /** + * 菜单类型(菜单) + */ + public static String TYPE_MENU = "C"; + + /** + * 菜单类型(按钮) + */ + public static String TYPE_BUTTON = "F"; + + /** + * Layout组件标识 + */ + public static String LAYOUT = "Layout"; + + /** + * 是否菜单外链(是) + */ + public static String YES_FRAME = "0"; + + /** + * 是否菜单外链(否) + */ + public static String NO_FRAME = "1"; + + + /** + * ParentView组件标识 + */ + public static String PARENT_VIEW = "ParentView"; + + /** + * InnerLink组件标识 + */ + public static String INNER_LINK = "InnerLink"; + } diff --git a/api-admin/src/main/resources/application.properties b/api-admin/src/main/resources/application.properties index 0f5d7b4..e487e91 100644 --- a/api-admin/src/main/resources/application.properties +++ b/api-admin/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.profiles.active=pro +spring.profiles.active=dev spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver diff --git a/api-admin/src/main/resources/mybatis/mapper/auth/AuthPermissionRuleDao.xml b/api-admin/src/main/resources/mybatis/mapper/auth/AuthPermissionRuleDao.xml index 0868080..336a254 100644 --- a/api-admin/src/main/resources/mybatis/mapper/auth/AuthPermissionRuleDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/auth/AuthPermissionRuleDao.xml @@ -1,10 +1,10 @@ - + - - INSERT INTO auth_permission_rule(pid,`name`,`title`,`status`,`condition`,`listorder`,create_time,update_time) + + INSERT INTO auth_permission_rule + (pid,`name`,`title`,`status`,`condition`,`listorder`,create_time + ,update_time,isFrame,isCache,menuType,visible,perms,icon,remark,`path`,queryParam) values (#{pid}, #{name}, @@ -47,7 +49,14 @@ #{listorder}, #{createTime}, - #{updateTime}) + #{updateTime}, + #{isFrame}, + #{isCache}, + #{menuType}, + #{visible}, + #{perms}, + #{icon}, + #{remark},#{path},#{queryParam}) @@ -60,12 +69,23 @@ `condition`=#{condition}, `listorder`=#{listorder}, update_time=#{updateTime}, + isFrame=#{isFrame}, + isCache=#{isCache}, + menuType=#{menuType}, + visible=#{visible}, + perms=#{perms}, + icon=#{icon}, + remark=#{remark}, + `path`=#{path}, + queryParam=#{queryParam}, WHERE id=#{id} - delete from auth_permission_rule where id = #{id} + delete + from auth_permission_rule + where id = #{id} \ No newline at end of file diff --git a/api-admin/src/test/java/com/glxp/sale/admin/TestUtils.java b/api-admin/src/test/java/com/glxp/sale/admin/TestUtils.java index d6c44cc..f01c890 100644 --- a/api-admin/src/test/java/com/glxp/sale/admin/TestUtils.java +++ b/api-admin/src/test/java/com/glxp/sale/admin/TestUtils.java @@ -185,8 +185,40 @@ public class TestUtils extends BaseApiAdminApplicationTest { @Test - public void testTime(){ - System.out.println(getStartTime("17:30:01")+""); + public void testTime() { + System.out.println(getStartTime("17:30:01") + ""); + } + + @Test + public void testRsa() { + String privateKey = + "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMFSa0RhFlV2LhKt\n" + + "20Pq4OBsdVaLF9SBIJ0XAO20Epkaku1gMADCMDsVjfyhQTikEQuZ/ri7n9Pm4NpW\n" + + "8PsdYQ7RoS2IK8MrWJm3QFNVkR/aAS0HDc/wkUHLLFiVqHsyKeNF3d1zXF8pc1G2\n" + + "EQDx6OvDiqnORVpBd68SdwGqMtzLAgMBAAECgYBDsf236xtr/78wcUrXpJbsX25T\n" + + "SM+mbTUjbRu5IRZmIIUUtFr62QUUm36l2T3CfMkvO9STkbfs9usD6e/mryn97koC\n" + + "jitVMEiSuS6AaYm5f9D7RlOn+88jOn0dCxJ+jlxlvyh0snKYmz0eLlwE4RgfDWN0\n" + + "17n8f83YjLCBRe8rmQJBAP2zc45cWJ2393gk0nn9eM0zJx9zLPtw1kIKkYbXpjWK\n" + + "5YxUwKi1lgoRPe90FzlvRnt1BuMXQ7drYswgS7UbP8UCQQDDEuWw4QPc7qcoU3ku\n" + + "udM6x/FGfZ5Vhzyh4abW9LBX+3/uz3hBASzlcjyFNTvxsKZvn7lCrAQoagUN3uHh\n" + + "rWNPAkBWBB3NyqmQ7+rLpVBnY/UtPYaqNxatOZirU4H7wenshWdGqQWZLdftGeNx\n" + + "6F5nbr7q5MatABpJefNJWjnQ8agxAkAB5upEaj0+ZzlMBFxXH0q29QIePNVRYisu\n" + + "LOQSjno1sWcS7gTvJVLJve5nIhi+h4ln5zfINaMovbfk5bpwF9+zAkEAp04O1t3Q\n" + + "FHdVreidnnp2X4C2hV9YiPo0YFC12Ei4BFREBNgut9xEQeNB117gyKybNpUbyYZZ\n" + + "OgeIvG7WQTJgLA=="; + String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBUmtEYRZVdi4SrdtD6uDgbHVW" + + "ixfUgSCdFwDttBKZGpLtYDAAwjA7FY38oUE4pBELmf64u5/T5uDaVvD7HWEO0aEt" + + "iCvDK1iZt0BTVZEf2gEtBw3P8JFByyxYlah7MinjRd3dc1xfKXNRthEA8ejrw4qp" + + "zkVaQXevEncBqjLcywIDAQAB"; + + + try { + String data = privateKeyEncrypt("BFEBFBFF000806D1PF36V95Y-8680482714630793A1238", privateKey); + publicKeyDecrypt(data, publicKey); + } catch (Exception e) { + e.printStackTrace(); + } + } diff --git a/scripts/新分支数据库更新语句.sql b/scripts/新分支数据库更新语句.sql new file mode 100644 index 0000000..46dbac4 --- /dev/null +++ b/scripts/新分支数据库更新语句.sql @@ -0,0 +1,17 @@ +alter table auth_permission_rule Add column isFrame TINYINT(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column isCache TINYINT(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column menuType TINYINT(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column visible TINYINT(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column perms varchar(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column icon varchar(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column remark varchar(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column path varchar(0) DEFAULT NULL COMMENT ''; +alter table auth_permission_rule Add column queryParam varchar(0) DEFAULT NULL COMMENT ''; + + + +update set auth_permission_rule set isFrame = 1; +update set auth_permission_rule set visible = 1; +update set auth_permission_rule set menuType = 'C' WHERE pid<>'0'; +update set auth_permission_rule set menuType = 'M' WHERE pid='0'; +update set auth_permission_rule set path = name;