| | |
| | | package com.whyc.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | |
| | | import com.whyc.dto.Page; |
| | | import com.whyc.dto.Response; |
| | | import com.whyc.mapper.DocUserMapper; |
| | | import com.whyc.pojo.DocDepart; |
| | | import com.whyc.pojo.DocRole; |
| | | import com.whyc.pojo.DocUser; |
| | | import com.whyc.pojo.Permit; |
| | | import com.whyc.util.ActionUtil; |
| | | import com.whyc.util.RSAUtil; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.apache.shiro.authc.UnknownAccountException; |
| | | import org.apache.shiro.authc.UsernamePasswordToken; |
| | | import org.apache.shiro.subject.Subject; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.system.ApplicationHome; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import static com.whyc.util.ActionUtil.createFilefolderIFNotExist; |
| | | |
| | |
| | | @Autowired |
| | | private DocFaceService faceService; |
| | | |
| | | @Autowired |
| | | private DocRoleService roleService; |
| | | |
| | | @Autowired |
| | | private DocDepartService departService; |
| | | |
| | | @Autowired |
| | | private PermitService permitService; |
| | | |
| | | //查询所有用户信息 |
| | | public Response getAllUser(int pageCurr,int pageSize) { |
| | | public Response getAllUser(DocUser docUser, int pageCurr, int pageSize) { |
| | | PageHelper.startPage(pageCurr,pageSize); |
| | | List<DocUser> list=mapper.getAllUser(); |
| | | List<DocUser> list=mapper.getAllUser(docUser); |
| | | PageInfo pageInfo=new PageInfo(list); |
| | | return new Response().setII(1,list!=null?true:false,pageInfo,"数据返回"); |
| | | return new Response().setII(1,list!=null,pageInfo,"数据返回"); |
| | | } |
| | | //编辑所有用户信息 |
| | | public Response updateAllUser(MultipartFile file,DocUser docUser) { |
| | | public Response updateUser(MultipartFile file,DocUser docUser) { |
| | | int faceId=(docUser.getFaceId()==null||docUser.getFaceId().isEmpty())?0:Integer.valueOf(docUser.getFaceId()); |
| | | //检测是否存在重新上传的人脸 |
| | | faceId=checkFaceData(file,faceId); |
| | |
| | | wrapper.set("role_id",docUser.getRoleId()); |
| | | wrapper.eq("id",docUser.getId()); |
| | | int bl=mapper.update(null,wrapper); |
| | | return new Response().set(1,bl>0?true:false); |
| | | return new Response().set(1,bl>0); |
| | | } |
| | | //新添加用户信息 |
| | | public Response addUser(MultipartFile file,DocUser docUser) { |
| | | QueryWrapper wrapper=new QueryWrapper(); |
| | | String pwd= RSAUtil.encrypt("123456", RSAUtil.getPublicKey()); |
| | | docUser.setSnId(pwd); |
| | | wrapper.eq("name",docUser.getName()); |
| | | List list=mapper.selectList(wrapper); |
| | | if(list!=null&&list.size()>0){ |
| | | return new Response().setII(1,false,list,"用户名已存在"); |
| | | } |
| | | int faceId=(docUser.getFaceId()==null||docUser.getFaceId().isEmpty())?0:Integer.valueOf(docUser.getFaceId()); |
| | | //检测是否存在重新上传的人脸 |
| | | faceId=checkFaceData(file,faceId); |
| | | docUser.setFaceId(String.valueOf(faceId)); |
| | | docUser.setCreTime(new Date()); |
| | | int bl=mapper.insert(docUser); |
| | | return new Response().set(1,bl>0?true:false); |
| | | return new Response().set(1,bl>0); |
| | | } |
| | | |
| | | //检测是否存在重新上传的人脸 |
| | | public int checkFaceData(MultipartFile file,int faceId){ |
| | | String fileDirName = FileDirPath.getFileDirName(); |
| | | String root=fileDirName+File.separator+"face"+File.separator; |
| | | if(file.isEmpty()){ |
| | | if(file==null){ |
| | | return faceId; |
| | | }else{ |
| | | String fileFileName = file.getOriginalFilename(); |
| | |
| | | } |
| | | return faceId; |
| | | } |
| | | //删除用户信息 |
| | | public Response delUser(int id) { |
| | | UpdateWrapper wrapper=new UpdateWrapper(); |
| | | wrapper.eq("id",id); |
| | | int bl=mapper.delete(wrapper); |
| | | return new Response().setII(1,bl>0,bl,"删除返回"); |
| | | } |
| | | |
| | | public Response login(String name, String snId, HttpServletRequest request) { |
| | | Response response = new Response(); |
| | | String[] dataArr = RSAUtil.decryptFrontP(snId, RSAUtil.fontSeparator); |
| | | //验签md5 |
| | | if (!dataArr[1].equals(ActionUtil.EncryptionMD5(org.apache.commons.lang3.StringUtils.trim(dataArr[0])).toString())) { |
| | | return response.set(1, false, "密码验签失败"); |
| | | } |
| | | UsernamePasswordToken userToken = new UsernamePasswordToken(name, dataArr[0]); |
| | | Subject subject = SecurityUtils.getSubject(); |
| | | try { |
| | | subject.login(userToken); |
| | | } catch (Exception e) { |
| | | if(e instanceof UnknownAccountException){ |
| | | return response.set(1,false,"账号不存在"); |
| | | } |
| | | return response.set(1,false,"密码错误"); |
| | | } |
| | | //登录成功 |
| | | //Session存储当前用户及权限组列表 |
| | | DocUser userDB = (DocUser) subject.getPrincipal(); |
| | | userDB.setSnId(null); |
| | | request.getSession().setAttribute("user", userDB); |
| | | //查询角色和部门列表信息 |
| | | Map<String,Object> map = new HashMap<>(); |
| | | List<DocDepart> departList = (List<DocDepart>) ((PageInfo)departService.getAllDepart().getData2()).getList(); |
| | | List<DocRole> roleList = (List<DocRole>) ((PageInfo)roleService.getAllRole().getData2()).getList(); |
| | | List<Permit> permitList = permitService.getPermitsByUname(); |
| | | map.put("departs",departList); |
| | | map.put("roles",roleList); |
| | | map.put("permits",permitList); |
| | | return response.setIII(1,true, userDB,map,"登录成功"); |
| | | } |
| | | //修改密码 |
| | | public Response changeSnId(String name,String oldSnId, String newSnId) { |
| | | if(name==null||name.equals("")){ |
| | | return new Response().set(1,false,"找不到用户"); |
| | | } |
| | | //验证老密码是否正确 |
| | | String snIdRsa=mapper.selectSnId(name); |
| | | //解密 |
| | | String snId=RSAUtil.decrypt(snIdRsa,RSAUtil.getPrivateKey()); |
| | | String[] decOld=RSAUtil.decryptFrontP(oldSnId,RSAUtil.fontSeparator); |
| | | String oldId=decOld[0]; |
| | | String[] newOld=RSAUtil.decryptFrontP(newSnId,RSAUtil.fontSeparator); |
| | | String newId=newOld[0]; |
| | | if(oldId.equals(snId)){ |
| | | UpdateWrapper wrapper=new UpdateWrapper(); |
| | | wrapper.set("sn_id",RSAUtil.encrypt(newId,RSAUtil.getPublicKey())); |
| | | wrapper.eq("name",name); |
| | | int bl=mapper.update(null,wrapper); |
| | | return new Response().set(1,bl>0,"修改成功"); |
| | | }else { |
| | | return new Response().set(1,false,"修改失败"); |
| | | } |
| | | } |
| | | //根据角色id查询对应的用户 |
| | | public Response getUserByRoleId(int roleId) { |
| | | QueryWrapper wrapper=new QueryWrapper(); |
| | | wrapper.eq("role_id",roleId); |
| | | wrapper.select("id","name"); |
| | | List<DocUser> list=mapper.selectList(wrapper); |
| | | return new Response().setII(1,list.size()>0,list,"返回数据"); |
| | | } |
| | | //查询所有用户(权限管理用) |
| | | public Response getAllDocUser() { |
| | | List<DocUser> list=mapper.getAllDocUser(); |
| | | return new Response().setII(1,list!=null,list,"数据返回"); |
| | | } |
| | | } |