package com.lyms.talkonlineweb.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lyms.talkonlineweb.domain.LymsPermission;
import com.lyms.talkonlineweb.domain.LymsRole;
import com.lyms.talkonlineweb.domain.LymsUser;
import com.lyms.talkonlineweb.mapper.LymsPermissionMapper;
import com.lyms.talkonlineweb.mapper.LymsRoleMapper;
import com.lyms.talkonlineweb.service.LymsUserService;
import com.lyms.talkonlineweb.mapper.LymsUserMapper;
import com.lyms.talkonlineweb.util.Constant;
import com.lyms.talkonlineweb.util.JwtUtils;
import io.jsonwebtoken.Claims;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
*/
@Service
@Log4j2
public class LymsUserServiceImpl extends ServiceImpl<LymsUserMapper, LymsUser>
implements LymsUserService{
@Autowired
private LymsUserMapper lymsUserMapper;
@Autowired
private LymsRoleMapper lymsRoleMapper;
@Autowired
private LymsPermissionMapper lymsPermissionMapper;
/**
* 根据登录用户获取权限
* @param username
* @return
*/
@Override
public List<LymsPermission> getPermissionByUsername(String username) throws Exception {
List<LymsPermission> rs=new ArrayList<>();
Map<String,Object> param=new HashMap<>();
param.put("login",username);
List<LymsUser> uLst= lymsUserMapper.selectByMap(param);
if(uLst.size()<1){
throw new Exception("系统错误");
}
List<LymsRole> rLst=lymsRoleMapper.sltRoleByUser(uLst.get(0).getUid());
int rid=rLst.get(0).getRid();
// 首次取一次菜单
List<LymsPermission> pLst=lymsPermissionMapper.sltPermissByRole(rid, Constant.ROOT_MENU);
rs.addAll(pLst);
for (LymsPermission p:pLst) {
//获取二级菜单
List<LymsPermission> sLst=lymsPermissionMapper.sltPermissByRole(rid, p.getId());
// Map<String, Object> oneMap=new HashMap<>();
// oneMap.put("menu",p);
// oneMap.put("children",sLst);
// rs.add(oneMap);
rs.addAll(sLst);
}
return rs;
}
/**
* 根据token获取用户
* @param token
* @return
*/
@Override
public LymsUser getUserByToken(String token) {
Claims claims = null;
try {
claims = JwtUtils.parseJWT(token);
} catch (Exception e) {
e.printStackTrace();
}
String username=claims.getSubject();
Map<String,Object> param=new HashMap<>();
param.put("login",username);
List<LymsUser> uLst= lymsUserMapper.selectByMap(param);
return uLst.size()>0?uLst.get(0):null;
}
@Override
public int delUserByRole(int uid) {
return lymsUserMapper.delUserByRole(uid);
}
@Override
public int addUserAndRole(int uid, int rid) {
return lymsUserMapper.addUserAndRole(uid,rid);
}
}