Commit f0a96d7d authored by shangtx's avatar shangtx

feat: web端登录

parent b6f136eb
......@@ -2,6 +2,7 @@ package com.onsiteservice.admin.controller.sys;
import com.onsiteservice.admin.controller.sys.vo.LoginInitVO;
import com.onsiteservice.admin.security.pojo.AccountCredentials;
import com.onsiteservice.admin.service.sys.SysBusinessService;
import com.onsiteservice.common.annotation.user.CurrentUserId;
import com.onsiteservice.core.result.Result;
import io.swagger.annotations.Api;
......@@ -25,8 +26,8 @@ import static com.onsiteservice.core.result.ResultGenerator.success;
@Validated
public class LoginController {
// @Resource
// private BaseBusinessService baseBusinessService;
@Resource
private SysBusinessService sysBusinessService;
@ApiOperation(value = "登录", notes = "作者: 潘维吉。 Spring Security处理, 不配置浏览器会出现CORS跨域问题")
@PostMapping("login")
......@@ -35,9 +36,9 @@ public class LoginController {
}
@ApiOperation(value = "获取菜单、权限、用户", notes = "作者: 潘维吉")
@ApiOperation(value = "获取菜单、权限、用户")
@GetMapping("login/init")
public Result<LoginInitVO> init(@CurrentUserId Long userId) {
return success(/*baseBusinessService.init(userId)*/);
return success(sysBusinessService.init(userId));
}
}
package com.onsiteservice.admin.controller.sys.vo;
import com.onsiteservice.entity.sys.SysBusiness;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.List;
/**
* @author 商天翔
* @date 2020/5/25 14:41
* @email shangtX@126.com
* @description 业务管理列表VO
*/
@Getter
@Setter
@ToString
public class BizListTreeVO extends SysBusiness {
private Long key;
private List<BizListTreeVO> children;
private Boolean hasOperation;
}
package com.onsiteservice.admin.controller.sys.vo;
import lombok.*;
import java.util.List;
/**
* 业务树-业务VO
*/
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
public class BizTreeVO {
private Long key;
private String title;
private String code;
private String parentCode;
private List<BizTreeVO> children;
private List<OperationVO> operations; // 业务操作
}
package com.onsiteservice.admin.controller.sys.vo;
import com.onsiteservice.entity.sys.SysBusinessOperate;
import com.onsiteservice.entity.sys.SysUser;
import com.onsiteservice.entity.sys.vo.MenuTreeVO;
import lombok.Getter;
import lombok.Setter;
......@@ -15,11 +17,11 @@ import java.util.List;
@Getter
@Setter
@ToString
public class LoginInitVO<T, E> {
public class LoginInitVO {
/**
* 当前登录用户
*/
private T userInfo;
private SysUser userInfo;
/**
* 菜单树
......@@ -29,5 +31,5 @@ public class LoginInitVO<T, E> {
/**
* 业务操作集合
*/
private List<E> operateList;
private List<String> operateList;
}
package com.onsiteservice.admin.controller.sys.vo;
import com.alibaba.fastjson.annotation.JSONField;
import lombok.*;
import java.util.List;
/**
* @author 潘维吉
* @date 2020/3/7 14:42
* @email 406798106@qq.com
* @description 菜单树结构
*/
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
public class MenuTreeVO {
@JSONField(serialize = false)
private Long id;
private String code;
@JSONField(serialize = false)
private String parentCode;
private String icon;
private String name;
private String path;
private String treePath;
// private Boolean hideInMenu = false;
private List<MenuTreeVO> children;
}
package com.onsiteservice.admin.controller.sys.vo;
import lombok.*;
/**
* 业务树叶子节点的操作VO
*/
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
public class OperationVO {
private Long id;
private String name;
private Long businessId;
}
package com.onsiteservice.admin.service.sys;
import com.onsiteservice.admin.controller.sys.vo.LoginInitVO;
import com.onsiteservice.dao.mapper.sys.SysBusinessMapper;
import com.onsiteservice.dao.mapper.sys.SysBusinessOperateMapper;
import com.onsiteservice.dao.mapper.sys.SysUserMapper;
import com.onsiteservice.entity.sys.SysBusinessOperate;
import com.onsiteservice.entity.sys.SysUser;
import com.onsiteservice.entity.sys.vo.MenuTreeVO;
import com.onsiteservice.util.tree.TreePathUtils;
import com.onsiteservice.util.tree.TreeUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
@Transactional(rollbackFor = Exception.class)
public class SysBusinessService {
@Resource
private SysUserMapper sysUserMapper;
@Resource
private SysBusinessMapper sysBusinessMapper;
@Resource
private SysBusinessOperateMapper sysBusinessOperateMapper;
/**
* 登录后初始化
* 菜单、权限、用户信息等
*/
public LoginInitVO init(Long userId) {
LoginInitVO loginInitVO = new LoginInitVO();
List<MenuTreeVO> businessList;
SysUser user = sysUserMapper.selectByPrimaryKey(userId);
loginInitVO.setUserInfo(user);
if (Objects.nonNull(user)) {
if (user.getIsGod()) {
businessList = getAllBusiness();
loginInitVO.setOperateList(getAllOperations().stream().map(SysBusinessOperate::getOperateKey).collect(Collectors.toList()));
} else {
businessList = getUserBusiness(userId);
loginInitVO.setOperateList(getUserOperations(userId).stream().map(SysBusinessOperate::getOperateKey).collect(Collectors.toList()));
}
} else {
businessList = List.of();
}
// 动态生成TreePath 这是是最复杂的场景 其他场景可以根据规范简化参数
TreePathUtils.genPath(businessList, "code", "parentCode", "treePath", "/", "name");
loginInitVO.setMenuList(TreeUtils.getTree(businessList, MenuTreeVO::getCode, MenuTreeVO::getParentCode, MenuTreeVO::setChildren));
return loginInitVO;
}
public List<MenuTreeVO> getAllBusiness() {
return sysBusinessMapper.getAllBusiness();
}
public List<MenuTreeVO> getUserBusiness(Long userId) {
return sysBusinessMapper.getUserBusiness(userId);
}
public List<SysBusinessOperate> getUserOperations(Long userId) {
return sysBusinessOperateMapper.getOperateByUserId(userId);
}
public List<SysBusinessOperate> getAllOperations() {
return sysBusinessOperateMapper.selectAll();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment