oss 单点

This commit is contained in:
Lishundong
2025-10-11 16:02:04 +08:00
parent 0076eeeb48
commit db413c57aa
34 changed files with 771 additions and 125 deletions

View File

@@ -3,10 +3,7 @@ package com.ruoyi.web.controller.system;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysMenu;
@@ -91,4 +88,15 @@ public class SysLoginController
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId); List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId);
return AjaxResult.success(menuService.buildMenus(menus)); return AjaxResult.success(menuService.buildMenus(menus));
} }
@GetMapping("/sso/callback")
public String ssoCallback(@RequestParam("ticket") String ticket) {
String frontendIndexUrl = "http://domain.com";
String ruoyiJwtToken = loginService.loginOss(ticket);
String redirectUrl = frontendIndexUrl + "/index?token=" + ruoyiJwtToken;
// 返回 "redirect:" 即可触发 302 重定向
return "redirect:" + redirectUrl;
}
} }

View File

@@ -1,6 +1,6 @@
package com.ruoyi.cms.controller.app; package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.cms.domain.Company; import com.ruoyi.cms.domain.Company;
import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobFair; import com.ruoyi.cms.domain.JobFair;
@@ -10,7 +10,7 @@ import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -50,7 +50,7 @@ public class AppUserController extends BaseController
@BussinessLog(title = "保存简历") @BussinessLog(title = "保存简历")
public AjaxResult saveResume(@RequestBody AppUser appUser) public AjaxResult saveResume(@RequestBody AppUser appUser)
{ {
appUser.setUserId(SecurityUtils.getUserId()); appUser.setUserId(SiteSecurityUtils.getUserId());
appUserService.updateAppUser(appUser); appUserService.updateAppUser(appUser);
return AjaxResult.success(); return AjaxResult.success();
} }
@@ -58,7 +58,7 @@ public class AppUserController extends BaseController
@GetMapping("/resume") @GetMapping("/resume")
public AjaxResult getResume() public AjaxResult getResume()
{ {
AppUser appUser = appUserService.selectAppUserByUserId(SecurityUtils.getUserId()); AppUser appUser = appUserService.selectAppUserByUserId(SiteSecurityUtils.getUserId());
return AjaxResult.success(appUser); return AjaxResult.success(appUser);
} }
@ApiOperation("我的浏览") @ApiOperation("我的浏览")

View File

@@ -18,7 +18,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.cms.service.IAppUserService; import com.ruoyi.cms.service.IAppUserService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;

View File

@@ -1,7 +1,7 @@
package com.ruoyi.cms.domain.vo; package com.ruoyi.cms.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;

View File

@@ -2,7 +2,7 @@ package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List; import java.util.List;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
/** /**
* APP用户Mapper接口 * APP用户Mapper接口

View File

@@ -1,7 +1,7 @@
package com.ruoyi.cms.service; package com.ruoyi.cms.service;
import java.util.List; import java.util.List;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
/** /**
* APP用户Service接口 * APP用户Service接口

View File

@@ -6,11 +6,11 @@ import com.ruoyi.cms.domain.*;
import com.ruoyi.cms.mapper.*; import com.ruoyi.cms.mapper.*;
import com.ruoyi.cms.service.IAppNoticeService; import com.ruoyi.cms.service.IAppNoticeService;
import com.ruoyi.cms.util.StringUtil; import com.ruoyi.cms.util.StringUtil;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -154,14 +154,14 @@ public class AppNoticeServiceImpl implements IAppNoticeService
@Override @Override
public List<Notice> listNotRead(Integer isRead) { public List<Notice> listNotRead(Integer isRead) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<Notice> sysNoticeList = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, userId).eq(Notice::getRemark,"notice_bar").orderByDesc(Notice::getCreateTime)); List<Notice> sysNoticeList = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, userId).eq(Notice::getRemark,"notice_bar").orderByDesc(Notice::getCreateTime));
return sysNoticeList; return sysNoticeList;
} }
@Override @Override
public List<Job> recommend(String jobTitle) { public List<Job> recommend(String jobTitle) {
return appNoticeMapper.recommend(jobTitle,SecurityUtils.getUserId()); return appNoticeMapper.recommend(jobTitle,SiteSecurityUtils.getUserId());
} }
@Override @Override
@@ -172,7 +172,7 @@ public class AppNoticeServiceImpl implements IAppNoticeService
notice.setIsRead(1); notice.setIsRead(1);
noticeInfoMapper.updateById(notice); noticeInfoMapper.updateById(notice);
}); });
List<Notice> notices1 = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, SecurityUtils.getUserId()).eq(Notice::getRemark, "notice_bar").eq(Notice::getTitle, "系统通知").orderByDesc(Notice::getCreateTime).last("limit 1")); List<Notice> notices1 = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, SiteSecurityUtils.getUserId()).eq(Notice::getRemark, "notice_bar").eq(Notice::getTitle, "系统通知").orderByDesc(Notice::getCreateTime).last("limit 1"));
Notice notice = notices1.get(0); Notice notice = notices1.get(0);
notice.setNotReadCount(notice.getNotReadCount() - longs.size()); notice.setNotReadCount(notice.getNotReadCount() - longs.size());
if(notice.getNotReadCount()==0){ if(notice.getNotReadCount()==0){
@@ -194,7 +194,7 @@ public class AppNoticeServiceImpl implements IAppNoticeService
@Override @Override
public List<Notice> sysNoticeList() { public List<Notice> sysNoticeList() {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<Notice> sysNoticeList = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, userId).isNotNull(Notice::getNoticeType).notIn(Notice::getNoticeType,"").orderByDesc(Notice::getCreateTime)); List<Notice> sysNoticeList = noticeInfoMapper.selectList(Wrappers.<Notice>lambdaQuery().eq(Notice::getUserId, userId).isNotNull(Notice::getNoticeType).notIn(Notice::getNoticeType,"").orderByDesc(Notice::getCreateTime));
return sysNoticeList; return sysNoticeList;
} }

View File

@@ -6,7 +6,7 @@ import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.query.MineJobQuery; import com.ruoyi.cms.domain.query.MineJobQuery;
import com.ruoyi.cms.mapper.AppReviewJobMapper; import com.ruoyi.cms.mapper.AppReviewJobMapper;
import com.ruoyi.cms.service.IAppReviewJobService; import com.ruoyi.cms.service.IAppReviewJobService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -91,13 +91,13 @@ public class AppReviewJobServiceImpl extends ServiceImpl<AppReviewJobMapper, App
@Override @Override
public List<Job> review(MineJobQuery jobQuery) { public List<Job> review(MineJobQuery jobQuery) {
List<Job> jobs = appReviewJobMapper.review(SecurityUtils.getUserId(),jobQuery); List<Job> jobs = appReviewJobMapper.review(SiteSecurityUtils.getUserId(),jobQuery);
return jobs; return jobs;
} }
@Override @Override
public List<String> reviewArray() { public List<String> reviewArray() {
List<AppReviewJob> appReviewJobs = appReviewJobMapper.reviewArray(SecurityUtils.getUserId()); List<AppReviewJob> appReviewJobs = appReviewJobMapper.reviewArray(SiteSecurityUtils.getUserId());
return appReviewJobs.stream().map(x -> formatter.format(x.getReviewDate())).collect(Collectors.toList()); return appReviewJobs.stream().map(x -> formatter.format(x.getReviewDate())).collect(Collectors.toList());
} }
} }

View File

@@ -12,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.cms.mapper.AppUserMapper; import com.ruoyi.cms.mapper.AppUserMapper;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.cms.service.IAppUserService; import com.ruoyi.cms.service.IAppUserService;
/** /**

View File

@@ -11,7 +11,7 @@ import com.ruoyi.cms.domain.CompanyCardCollection;
import com.ruoyi.cms.domain.vo.CompanyCardVO; import com.ruoyi.cms.domain.vo.CompanyCardVO;
import com.ruoyi.cms.mapper.CompanyCardCollectionMapper; import com.ruoyi.cms.mapper.CompanyCardCollectionMapper;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -100,9 +100,9 @@ public class CompanyCardServiceImpl extends ServiceImpl<CompanyCardMapper,Compan
CompanyCard companyCard = new CompanyCard(); CompanyCard companyCard = new CompanyCard();
companyCard.setStatus(1); companyCard.setStatus(1);
List<CompanyCardVO> companyCards = companyCardMapper.selectCompanyCardListVO(companyCard); List<CompanyCardVO> companyCards = companyCardMapper.selectCompanyCardListVO(companyCard);
if(SecurityUtils.isLogin()){ if(SiteSecurityUtils.isLogin()){
CompanyCardCollection companyCardCollection = new CompanyCardCollection(); CompanyCardCollection companyCardCollection = new CompanyCardCollection();
companyCardCollection.setUserId(SecurityUtils.getUserId()); companyCardCollection.setUserId(SiteSecurityUtils.getUserId());
List<CompanyCardCollection> companyCardCollections = companyCardCollectionMapper.selectCompanyCardCollectionList(companyCardCollection); List<CompanyCardCollection> companyCardCollections = companyCardCollectionMapper.selectCompanyCardCollectionList(companyCardCollection);
for (CompanyCardVO item:companyCards){ for (CompanyCardVO item:companyCards){
for(CompanyCardCollection collection:companyCardCollections){ for(CompanyCardCollection collection:companyCardCollections){
@@ -119,7 +119,7 @@ public class CompanyCardServiceImpl extends ServiceImpl<CompanyCardMapper,Compan
public void cardCollection(Long companyCardId) { public void cardCollection(Long companyCardId) {
CompanyCardCollection companyCardCollection = new CompanyCardCollection(); CompanyCardCollection companyCardCollection = new CompanyCardCollection();
companyCardCollection.setCompanyCardId(companyCardId); companyCardCollection.setCompanyCardId(companyCardId);
companyCardCollection.setUserId(SecurityUtils.getUserId()); companyCardCollection.setUserId(SiteSecurityUtils.getUserId());
companyCardCollectionService.save(companyCardCollection); companyCardCollectionService.save(companyCardCollection);
} }
@@ -127,8 +127,8 @@ public class CompanyCardServiceImpl extends ServiceImpl<CompanyCardMapper,Compan
public void cardCancel(Long companyCardId) { public void cardCancel(Long companyCardId) {
CompanyCardCollection companyCardCollection = new CompanyCardCollection(); CompanyCardCollection companyCardCollection = new CompanyCardCollection();
companyCardCollection.setCompanyCardId(companyCardId); companyCardCollection.setCompanyCardId(companyCardId);
companyCardCollection.setUserId(SecurityUtils.getUserId()); companyCardCollection.setUserId(SiteSecurityUtils.getUserId());
List<CompanyCardCollection> companyCardCollections = companyCardCollectionMapper.selectList(Wrappers.<CompanyCardCollection>lambdaQuery().eq(CompanyCardCollection::getCompanyCardId, companyCardId).eq(CompanyCardCollection::getUserId, SecurityUtils.getUserId())); List<CompanyCardCollection> companyCardCollections = companyCardCollectionMapper.selectList(Wrappers.<CompanyCardCollection>lambdaQuery().eq(CompanyCardCollection::getCompanyCardId, companyCardId).eq(CompanyCardCollection::getUserId, SiteSecurityUtils.getUserId()));
companyCardCollectionMapper.deleteBatchIds(companyCardCollections.stream().map(CompanyCardCollection::getCompanyCardCollectionId).collect(Collectors.toList())); companyCardCollectionMapper.deleteBatchIds(companyCardCollections.stream().map(CompanyCardCollection::getCompanyCardCollectionId).collect(Collectors.toList()));
} }
} }

View File

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cms.domain.Company; import com.ruoyi.cms.domain.Company;
import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.mapper.JobMapper; import com.ruoyi.cms.mapper.JobMapper;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -93,7 +93,7 @@ public class CompanyCollectionServiceImpl extends ServiceImpl<CompanyCollectionM
*/ */
@Override @Override
public int companyCancel(Long companyId) { public int companyCancel(Long companyId) {
List<CompanyCollection> companyCollections = companyCollectionMapper.selectList(Wrappers.<CompanyCollection>lambdaQuery().eq(CompanyCollection::getCompanyId, companyId).eq(CompanyCollection::getUserId, SecurityUtils.getUserId())); List<CompanyCollection> companyCollections = companyCollectionMapper.selectList(Wrappers.<CompanyCollection>lambdaQuery().eq(CompanyCollection::getCompanyId, companyId).eq(CompanyCollection::getUserId, SiteSecurityUtils.getUserId()));
if(companyCollections.size()>0){ if(companyCollections.size()>0){
companyCollectionMapper.deleteBatchIds(companyCollections.stream().map(CompanyCollection::getId).collect(Collectors.toList())); companyCollectionMapper.deleteBatchIds(companyCollections.stream().map(CompanyCollection::getId).collect(Collectors.toList()));
} }
@@ -104,7 +104,7 @@ public class CompanyCollectionServiceImpl extends ServiceImpl<CompanyCollectionM
*/ */
@Override @Override
public int companyCollection(Long companyId) { public int companyCollection(Long companyId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<CompanyCollection> companyCollections = companyCollectionMapper.selectList(Wrappers.<CompanyCollection>lambdaQuery().eq(CompanyCollection::getCompanyId, companyId).eq(CompanyCollection::getUserId, userId)); List<CompanyCollection> companyCollections = companyCollectionMapper.selectList(Wrappers.<CompanyCollection>lambdaQuery().eq(CompanyCollection::getCompanyId, companyId).eq(CompanyCollection::getUserId, userId));
if(companyCollections.size()>0){ if(companyCollections.size()>0){
companyCollectionMapper.deleteBatchIds(companyCollections.stream().map(CompanyCollection::getId).collect(Collectors.toList())); companyCollectionMapper.deleteBatchIds(companyCollections.stream().map(CompanyCollection::getId).collect(Collectors.toList()));
@@ -118,7 +118,7 @@ public class CompanyCollectionServiceImpl extends ServiceImpl<CompanyCollectionM
@Override @Override
public List<Company> collectionCompany() { public List<Company> collectionCompany() {
List<Company> companies = companyCollectionMapper.collectionJob(SecurityUtils.getUserId()); List<Company> companies = companyCollectionMapper.collectionJob(SiteSecurityUtils.getUserId());
return companies; return companies;
} }

View File

@@ -11,7 +11,7 @@ import com.ruoyi.cms.domain.query.LabelQuery;
import com.ruoyi.cms.mapper.*; import com.ruoyi.cms.mapper.*;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Sheet;
@@ -53,8 +53,8 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper,Company> imple
public Company selectCompanyByCompanyId(Long companyId) public Company selectCompanyByCompanyId(Long companyId)
{ {
Company company = companyMapper.selectById(companyId); Company company = companyMapper.selectById(companyId);
if(SecurityUtils.isLogin()){ if(SiteSecurityUtils.isLogin()){
Long l = companyCollectionMapper.selectCount(Wrappers.<CompanyCollection>lambdaQuery().eq(CompanyCollection::getCompanyId, companyId).eq(CompanyCollection::getUserId, SecurityUtils.getUserId())); Long l = companyCollectionMapper.selectCount(Wrappers.<CompanyCollection>lambdaQuery().eq(CompanyCollection::getCompanyId, companyId).eq(CompanyCollection::getUserId, SiteSecurityUtils.getUserId()));
company.setIsCollection(l>0?1:0); company.setIsCollection(l>0?1:0);
}else { }else {
company.setIsCollection(0); company.setIsCollection(0);
@@ -241,7 +241,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper,Company> imple
@Override @Override
public void register(Company company) { public void register(Company company) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
company.setUserId(userId); company.setUserId(userId);
if(companyMapper.selectCount(Wrappers.<Company>lambdaQuery().eq(Company::getName, company.getName()).in(Company::getStatus,Arrays.asList(0,1)))>0){ if(companyMapper.selectCount(Wrappers.<Company>lambdaQuery().eq(Company::getName, company.getName()).in(Company::getStatus,Arrays.asList(0,1)))>0){
throw new ServiceException(company.getName()+"已经存在"); throw new ServiceException(company.getName()+"已经存在");
@@ -251,7 +251,7 @@ public class CompanyServiceImpl extends ServiceImpl<CompanyMapper,Company> imple
@Override @Override
public Company registerStatus() { public Company registerStatus() {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
Company company = companyMapper.selectOne(Wrappers.<Company>lambdaQuery().eq(Company::getUserId, userId).orderByDesc(Company::getUpdateTime)); Company company = companyMapper.selectOne(Wrappers.<Company>lambdaQuery().eq(Company::getUserId, userId).orderByDesc(Company::getUpdateTime));
return company; return company;
} }

View File

@@ -1,18 +1,16 @@
package com.ruoyi.cms.service.impl; package com.ruoyi.cms.service.impl;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.cms.domain.ESJobDocument; import com.ruoyi.cms.domain.ESJobDocument;
import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.query.ESJobSearch; import com.ruoyi.cms.domain.query.ESJobSearch;
import com.ruoyi.cms.mapper.es.EsJobDocumentMapper; import com.ruoyi.cms.mapper.es.EsJobDocumentMapper;
import com.ruoyi.cms.mapper.JobMapper; import com.ruoyi.cms.mapper.JobMapper;
import com.ruoyi.cms.service.IESJobSearchService; import com.ruoyi.cms.service.IESJobSearchService;
import com.ruoyi.cms.util.Base64Util;
import com.ruoyi.cms.util.ListUtil; import com.ruoyi.cms.util.ListUtil;
import com.ruoyi.cms.util.StringUtil; import com.ruoyi.cms.util.StringUtil;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.bean.BeanUtils;
import org.dromara.easyes.core.biz.EsPageInfo; import org.dromara.easyes.core.biz.EsPageInfo;
import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper; import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
@@ -140,8 +138,8 @@ public class ESJobSearchImpl implements IESJobSearchService
ESJobSearch newSearch = new ESJobSearch(); ESJobSearch newSearch = new ESJobSearch();
BeanUtils.copyProperties(esJobSearch,newSearch); BeanUtils.copyProperties(esJobSearch,newSearch);
//查询 //查询
if(SecurityUtils.isLogin()){ if(SiteSecurityUtils.isLogin()){
AppUser appUser = appUserService.selectAppUserByUserId(SecurityUtils.getUserId()); AppUser appUser = appUserService.selectAppUserByUserId(SiteSecurityUtils.getUserId());
if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){ if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){
List<String> jobTitle = appUser.getJobTitle(); List<String> jobTitle = appUser.getJobTitle();
newSearch.setJobTitle(String.join(",", jobTitle)); newSearch.setJobTitle(String.join(",", jobTitle));
@@ -424,8 +422,8 @@ public class ESJobSearchImpl implements IESJobSearchService
Integer pageNum = jobQuery.getCurrent(); Integer pageNum = jobQuery.getCurrent();
Integer pageSize = jobQuery.getPageSize(); Integer pageSize = jobQuery.getPageSize();
LambdaEsQueryWrapper<ESJobDocument> wrapper = new LambdaEsQueryWrapper<>(); LambdaEsQueryWrapper<ESJobDocument> wrapper = new LambdaEsQueryWrapper<>();
// if(SecurityUtils.isLogin()){ // if(SiteSecurityUtils.isLogin()){
// AppUser appUser = appUserService.selectAppUserByUserId(SecurityUtils.getUserId()); // AppUser appUser = appUserService.selectAppUserByUserId(SiteSecurityUtils.getUserId());
// if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){ // if(!ListUtil.isEmptyOrNull(appUser.getJobTitle())){
// List<String> jobTitle = appUser.getJobTitle(); // List<String> jobTitle = appUser.getJobTitle();
// jobQuery.setJobTitle(String.join(",", jobTitle)); // jobQuery.setJobTitle(String.join(",", jobTitle));

View File

@@ -8,7 +8,7 @@ import com.ruoyi.cms.domain.JobFair;
import com.ruoyi.cms.mapper.FairCollectionMapper; import com.ruoyi.cms.mapper.FairCollectionMapper;
import com.ruoyi.cms.mapper.JobFairMapper; import com.ruoyi.cms.mapper.JobFairMapper;
import com.ruoyi.cms.service.IFairCollectionService; import com.ruoyi.cms.service.IFairCollectionService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -50,7 +50,7 @@ public class FairCollectionServiceImpl extends ServiceImpl<FairCollectionMapper,
@Override @Override
public List<FairCollection> selectFairCollectionList(FairCollection fairCollection) public List<FairCollection> selectFairCollectionList(FairCollection fairCollection)
{ {
List<FairCollection> fairCollections = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getUserId, SecurityUtils.getUserId())); List<FairCollection> fairCollections = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getUserId, SiteSecurityUtils.getUserId()));
return fairCollections; return fairCollections;
} }
@@ -95,7 +95,7 @@ public class FairCollectionServiceImpl extends ServiceImpl<FairCollectionMapper,
@Override @Override
@Transactional @Transactional
public int fairCollection(Long fairId) { public int fairCollection(Long fairId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<FairCollection> fairCollections = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getFairId, fairId).eq(FairCollection::getUserId, userId)); List<FairCollection> fairCollections = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getFairId, fairId).eq(FairCollection::getUserId, userId));
if(fairCollections.size()>0){ if(fairCollections.size()>0){
fairCollectionMapper.deleteBatchIds(fairCollections.stream().map(FairCollection::getId).collect(Collectors.toList())); fairCollectionMapper.deleteBatchIds(fairCollections.stream().map(FairCollection::getId).collect(Collectors.toList()));
@@ -111,7 +111,7 @@ public class FairCollectionServiceImpl extends ServiceImpl<FairCollectionMapper,
*/ */
@Override @Override
public int cancel(Long fairId) { public int cancel(Long fairId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<FairCollection> fairCollections = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getFairId, fairId).eq(FairCollection::getUserId, userId)); List<FairCollection> fairCollections = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getFairId, fairId).eq(FairCollection::getUserId, userId));
if(fairCollections.size()>0){ if(fairCollections.size()>0){
fairCollectionMapper.deleteBatchIds(fairCollections.stream().map(FairCollection::getId).collect(Collectors.toList())); fairCollectionMapper.deleteBatchIds(fairCollections.stream().map(FairCollection::getId).collect(Collectors.toList()));
@@ -123,6 +123,6 @@ public class FairCollectionServiceImpl extends ServiceImpl<FairCollectionMapper,
*/ */
@Override @Override
public List<JobFair> appCollectionFair(Integer type) { public List<JobFair> appCollectionFair(Integer type) {
return jobFairMapper.selectAppList(SecurityUtils.getUserId(),type); return jobFairMapper.selectAppList(SiteSecurityUtils.getUserId(),type);
} }
} }

View File

@@ -12,7 +12,7 @@ import com.ruoyi.cms.mapper.FileMapper;
import com.ruoyi.cms.service.IFileService; import com.ruoyi.cms.service.IFileService;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.common.utils.uuid.UUID;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -8,7 +8,7 @@ import com.ruoyi.cms.domain.JobApply;
import com.ruoyi.cms.domain.query.MineJobQuery; import com.ruoyi.cms.domain.query.MineJobQuery;
import com.ruoyi.cms.mapper.*; import com.ruoyi.cms.mapper.*;
import com.ruoyi.cms.service.IJobApplyService; import com.ruoyi.cms.service.IJobApplyService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -98,17 +98,17 @@ public class JobApplyServiceImpl extends ServiceImpl<JobApplyMapper,JobApply> im
@Override @Override
public List<Job> applyJob() { public List<Job> applyJob() {
List<Job> jobs = jobApplyMapper.applyJob(SecurityUtils.getUserId()); List<Job> jobs = jobApplyMapper.applyJob(SiteSecurityUtils.getUserId());
return jobs; return jobs;
} }
@Override @Override
public HashMap<String, Integer> statistics() { public HashMap<String, Integer> statistics() {
Integer applyCount = jobApplyMapper.applyJob(SecurityUtils.getUserId()).size(); Integer applyCount = jobApplyMapper.applyJob(SiteSecurityUtils.getUserId()).size();
Integer collectionJobCount = jobCollectionMapper.collectionJob(SecurityUtils.getUserId()).size(); Integer collectionJobCount = jobCollectionMapper.collectionJob(SiteSecurityUtils.getUserId()).size();
Integer collectionCompanyCount = companyCollectionMapper.collectionJob(SecurityUtils.getUserId()).size(); Integer collectionCompanyCount = companyCollectionMapper.collectionJob(SiteSecurityUtils.getUserId()).size();
Integer jobReviewCount = appReviewJobMapper.review(SecurityUtils.getUserId(),new MineJobQuery()).size(); Integer jobReviewCount = appReviewJobMapper.review(SiteSecurityUtils.getUserId(),new MineJobQuery()).size();
Integer fairCollecitonCount = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getUserId, SecurityUtils.getUserId())).size(); Integer fairCollecitonCount = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getUserId, SiteSecurityUtils.getUserId())).size();
HashMap<String, Integer> map = new HashMap<>(); HashMap<String, Integer> map = new HashMap<>();
map.put("applyCount", applyCount); map.put("applyCount", applyCount);
map.put("collectionCount", collectionJobCount+collectionCompanyCount); map.put("collectionCount", collectionJobCount+collectionCompanyCount);

View File

@@ -14,7 +14,8 @@ import com.ruoyi.cms.mapper.AppUserMapper;
import com.ruoyi.cms.mapper.JobApplyMapper; import com.ruoyi.cms.mapper.JobApplyMapper;
import com.ruoyi.cms.mapper.JobMapper; import com.ruoyi.cms.mapper.JobMapper;
import com.ruoyi.cms.service.IBussinessDictTypeService; import com.ruoyi.cms.service.IBussinessDictTypeService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -106,7 +107,7 @@ public class JobCollectionServiceImpl extends ServiceImpl<JobCollectionMapper,Jo
@Override @Override
@Transactional @Transactional
public int jobCollection(Long jobId) { public int jobCollection(Long jobId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId)); List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId));
if(jobCollections.size()>0){ if(jobCollections.size()>0){
jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList())); jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList()));
@@ -122,7 +123,7 @@ public class JobCollectionServiceImpl extends ServiceImpl<JobCollectionMapper,Jo
*/ */
@Override @Override
public int cancel(Long jobId) { public int cancel(Long jobId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId)); List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId));
if(jobCollections.size()>0){ if(jobCollections.size()>0){
jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList())); jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList()));
@@ -132,7 +133,7 @@ public class JobCollectionServiceImpl extends ServiceImpl<JobCollectionMapper,Jo
@Override @Override
public int apply(Long jobId) { public int apply(Long jobId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
JobApply jobApply = new JobApply(); JobApply jobApply = new JobApply();
jobApply.setJobId(jobId); jobApply.setJobId(jobId);
jobApply.setUserId(userId); jobApply.setUserId(userId);
@@ -149,7 +150,7 @@ public class JobCollectionServiceImpl extends ServiceImpl<JobCollectionMapper,Jo
@Override @Override
public List<Job> collectionJob() { public List<Job> collectionJob() {
List<Job> jobs = jobCollectionMapper.collectionJob(SecurityUtils.getUserId()); List<Job> jobs = jobCollectionMapper.collectionJob(SiteSecurityUtils.getUserId());
return jobs; return jobs;
} }

View File

@@ -10,7 +10,7 @@ import com.ruoyi.cms.mapper.FairCollectionMapper;
import com.ruoyi.cms.mapper.FairCompanyMapper; import com.ruoyi.cms.mapper.FairCompanyMapper;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -148,8 +148,8 @@ public class JobFairServiceImpl extends ServiceImpl<JobFairMapper,JobFair> imple
List<Company> companyList = companyMapper.selectBatchIds(companyIds); List<Company> companyList = companyMapper.selectBatchIds(companyIds);
jobFair.setCompanyList(companyList); jobFair.setCompanyList(companyList);
} }
if(SecurityUtils.isLogin()){ if(SiteSecurityUtils.isLogin()){
Long count = fairCollectionMapper.selectCount(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getFairId, fairId).eq(FairCollection::getUserId, SecurityUtils.getUserId())); Long count = fairCollectionMapper.selectCount(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getFairId, fairId).eq(FairCollection::getUserId, SiteSecurityUtils.getUserId()));
jobFair.setIsCollection(count>0?1:null); jobFair.setIsCollection(count>0?1:null);
} }
return jobFair; return jobFair;
@@ -159,10 +159,10 @@ public class JobFairServiceImpl extends ServiceImpl<JobFairMapper,JobFair> imple
public List<JobFair> appList(JobFair jobFair) { public List<JobFair> appList(JobFair jobFair) {
List<JobFair> fairCompanies = jobFairMapper.appList(jobFair); List<JobFair> fairCompanies = jobFairMapper.appList(jobFair);
if(fairCompanies.isEmpty()){return new ArrayList<>();} if(fairCompanies.isEmpty()){return new ArrayList<>();}
if(SecurityUtils.isLogin()){ if(SiteSecurityUtils.isLogin()){
//收藏 //收藏
Set<Long> collectionIds = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery() Set<Long> collectionIds = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery()
.eq(FairCollection::getUserId, SecurityUtils.getUserId()) .eq(FairCollection::getUserId, SiteSecurityUtils.getUserId())
.in(FairCollection::getFairId, fairCompanies.stream().map(JobFair::getJobFairId).collect(Collectors.toList()))) .in(FairCollection::getFairId, fairCompanies.stream().map(JobFair::getJobFairId).collect(Collectors.toList())))
.stream().map(FairCollection::getFairId).collect(Collectors.toSet()); .stream().map(FairCollection::getFairId).collect(Collectors.toSet());
for (JobFair j : fairCompanies) { for (JobFair j : fairCompanies) {

View File

@@ -2,16 +2,15 @@ package com.ruoyi.cms.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cms.domain.AppUser; import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.cms.domain.Job; import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobApply; import com.ruoyi.cms.domain.JobApply;
import com.ruoyi.cms.domain.JobCollection; import com.ruoyi.cms.domain.JobCollection;
import com.ruoyi.cms.mapper.AppUserMapper; import com.ruoyi.cms.mapper.AppUserMapper;
import com.ruoyi.cms.mapper.JobApplyMapper; import com.ruoyi.cms.mapper.JobApplyMapper;
import com.ruoyi.cms.mapper.JobCollectionMapper; import com.ruoyi.cms.mapper.JobCollectionMapper;
import com.ruoyi.cms.service.IJobCollectionService;
import com.ruoyi.cms.service.IJobRecommentService; import com.ruoyi.cms.service.IJobRecommentService;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -100,7 +99,7 @@ public class JobRecommentServiceImpl extends ServiceImpl<JobCollectionMapper,Job
@Override @Override
@Transactional @Transactional
public int jobCollection(Long jobId) { public int jobCollection(Long jobId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId)); List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId));
if(jobCollections.size()>0){ if(jobCollections.size()>0){
jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList())); jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList()));
@@ -116,7 +115,7 @@ public class JobRecommentServiceImpl extends ServiceImpl<JobCollectionMapper,Job
*/ */
@Override @Override
public int cancel(Long jobId) { public int cancel(Long jobId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId)); List<JobCollection> jobCollections = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, userId));
if(jobCollections.size()>0){ if(jobCollections.size()>0){
jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList())); jobCollectionMapper.deleteBatchIds(jobCollections.stream().map(JobCollection::getId).collect(Collectors.toList()));
@@ -126,7 +125,7 @@ public class JobRecommentServiceImpl extends ServiceImpl<JobCollectionMapper,Job
@Override @Override
public int apply(Long jobId) { public int apply(Long jobId) {
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
JobApply jobApply = new JobApply(); JobApply jobApply = new JobApply();
jobApply.setJobId(jobId); jobApply.setJobId(jobId);
jobApply.setUserId(userId); jobApply.setUserId(userId);
@@ -143,13 +142,13 @@ public class JobRecommentServiceImpl extends ServiceImpl<JobCollectionMapper,Job
@Override @Override
public List<Job> collectionJob() { public List<Job> collectionJob() {
List<Job> jobs = jobCollectionMapper.collectionJob(SecurityUtils.getUserId()); List<Job> jobs = jobCollectionMapper.collectionJob(SiteSecurityUtils.getUserId());
return jobs; return jobs;
} }
@Override @Override
public String competitiveness(Long jobId) { public String competitiveness(Long jobId) {
AppUser appUser = appUserMapper.selectById(SecurityUtils.getUserId()); AppUser appUser = appUserMapper.selectById(SiteSecurityUtils.getUserId());
String education = appUser.getEducation(); String education = appUser.getEducation();
return "90.5"; return "90.5";
} }

View File

@@ -19,7 +19,7 @@ import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.JobTitle; import com.ruoyi.common.core.domain.entity.JobTitle;
import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SiteSecurityUtils;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import org.dromara.easyes.core.biz.EsPageInfo; import org.dromara.easyes.core.biz.EsPageInfo;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -369,22 +369,22 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
Company company = companyMapper.selectById(job.getCompanyId()); Company company = companyMapper.selectById(job.getCompanyId());
job.setCompany(company); job.setCompany(company);
} }
if(SecurityUtils.isLogin()){ if(SiteSecurityUtils.isLogin()){
//查询申请信息 //查询申请信息
Long applyCount = jobApplyMapper.selectCount(Wrappers.<JobApply>lambdaQuery().eq(JobApply::getJobId, jobId).eq(JobApply::getUserId, SecurityUtils.getUserId())); Long applyCount = jobApplyMapper.selectCount(Wrappers.<JobApply>lambdaQuery().eq(JobApply::getJobId, jobId).eq(JobApply::getUserId, SiteSecurityUtils.getUserId()));
job.setIsApply(applyCount>0?1:0); job.setIsApply(applyCount>0?1:0);
//查询收藏信息 //查询收藏信息
Long collectionCount = jobCollectionMapper.selectCount(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, SecurityUtils.getUserId())); Long collectionCount = jobCollectionMapper.selectCount(Wrappers.<JobCollection>lambdaQuery().eq(JobCollection::getJobId, jobId).eq(JobCollection::getUserId, SiteSecurityUtils.getUserId()));
job.setIsCollection(collectionCount>0?1:0); job.setIsCollection(collectionCount>0?1:0);
//todo asyn //todo asyn
//保存浏览记录 //保存浏览记录
List<AppReviewJob> appReviewJobs = appReviewJobMapper.selectList(Wrappers.<AppReviewJob>lambdaQuery().eq(AppReviewJob::getUserId, SecurityUtils.getUserId()).eq(AppReviewJob::getJobId, jobId)); List<AppReviewJob> appReviewJobs = appReviewJobMapper.selectList(Wrappers.<AppReviewJob>lambdaQuery().eq(AppReviewJob::getUserId, SiteSecurityUtils.getUserId()).eq(AppReviewJob::getJobId, jobId));
//之前相同岗位的记录删除 保存最新的浏览记录 //之前相同岗位的记录删除 保存最新的浏览记录
if(!appReviewJobs.isEmpty()){ if(!appReviewJobs.isEmpty()){
appReviewJobMapper.deleteBatchIds(appReviewJobs.stream().map(AppReviewJob::getId).collect(Collectors.toList())); appReviewJobMapper.deleteBatchIds(appReviewJobs.stream().map(AppReviewJob::getId).collect(Collectors.toList()));
} }
AppReviewJob appReviewJob = new AppReviewJob(); AppReviewJob appReviewJob = new AppReviewJob();
appReviewJob.setUserId(SecurityUtils.getUserId()); appReviewJob.setUserId(SiteSecurityUtils.getUserId());
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
appReviewJob.setReviewDate(formattedDate); appReviewJob.setReviewDate(formattedDate);
@@ -749,10 +749,10 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
private List<ESJobDocument> userCollection(List<ESJobDocument> jobs){ private List<ESJobDocument> userCollection(List<ESJobDocument> jobs){
if(jobs.isEmpty()){return new ArrayList<>();} if(jobs.isEmpty()){return new ArrayList<>();}
if(SecurityUtils.isLogin()){ if(SiteSecurityUtils.isLogin()){
//收藏 //收藏
Set<Long> collectionIds = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery() Set<Long> collectionIds = jobCollectionMapper.selectList(Wrappers.<JobCollection>lambdaQuery()
.eq(JobCollection::getUserId, SecurityUtils.getUserId()) .eq(JobCollection::getUserId, SiteSecurityUtils.getUserId())
.in(JobCollection::getJobId, jobs.stream().map(ESJobDocument::getJobId).collect(Collectors.toList()))) .in(JobCollection::getJobId, jobs.stream().map(ESJobDocument::getJobId).collect(Collectors.toList())))
.stream().map(JobCollection::getJobId).collect(Collectors.toSet()); .stream().map(JobCollection::getJobId).collect(Collectors.toSet());
for (ESJobDocument j : jobs) { for (ESJobDocument j : jobs) {
@@ -767,7 +767,7 @@ public class JobServiceImpl extends ServiceImpl<JobMapper,Job> implements IJobSe
@Override @Override
public void publishJob(Job job) { public void publishJob(Job job) {
job.setIsPublish(0); job.setIsPublish(0);
Long userId = SecurityUtils.getUserId(); Long userId = SiteSecurityUtils.getUserId();
Company company = companyMapper.selectOne(Wrappers.<Company>lambdaQuery().eq(Company::getUserId, userId).eq(Company::getStatus, 1)); Company company = companyMapper.selectOne(Wrappers.<Company>lambdaQuery().eq(Company::getUserId, userId).eq(Company::getStatus, 1));
if(Objects.isNull(company)){ if(Objects.isNull(company)){
throw new ServiceException("请先完成招聘企业登记"); throw new ServiceException("请先完成招聘企业登记");

View File

@@ -57,7 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="idCard != null and idCard != ''"> and id_card like concat('%', CAST(#{idCard} AS VARCHAR), '%')</if> <if test="idCard != null and idCard != ''"> and id_card like concat('%', CAST(#{idCard} AS VARCHAR), '%')</if>
</where> </where>
</select> </select>
<select id="selectByJobId" resultType="com.ruoyi.cms.domain.AppUser" parameterType="java.lang.Long"> <select id="selectByJobId" resultType="com.ruoyi.common.core.domain.entity.AppUser" parameterType="java.lang.Long">
SELECT * FROM app_user WHERE user_id IN ( SELECT * FROM app_user WHERE user_id IN (
select DISTINCT au.USER_ID from APP_USER au select DISTINCT au.USER_ID from APP_USER au
INNER JOIN JOB_APPLY ja ON ja.USER_ID = au.USER_ID INNER JOIN JOB_APPLY ja ON ja.USER_ID = au.USER_ID

View File

@@ -2,7 +2,7 @@ package com.ruoyi.common.constant;
/** /**
* 缓存的key 常量 * 缓存的key 常量
* *
* @author ruoyi * @author ruoyi
*/ */
public class CacheConstants public class CacheConstants
@@ -11,11 +11,12 @@ public class CacheConstants
* 登录用户 redis key * 登录用户 redis key
*/ */
public static final String LOGIN_TOKEN_KEY = "login_tokens:"; public static final String LOGIN_TOKEN_KEY = "login_tokens:";
public static final String SITE_LOGIN_TOKEN_KEY = "site_login_tokens:";
/** /**
* 验证码 redis key * 验证码 redis key
*/ */
public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; public static final String CAPTCHA_CODE_KEY = "captcha_codes:";
public static final String SMG_CODE_KEY = "smg_codes:";
/** /**
* 参数管理 cache key * 参数管理 cache key
@@ -42,4 +43,5 @@ public class CacheConstants
* 登录账户密码错误次数 redis key * 登录账户密码错误次数 redis key
*/ */
public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
public static final String PWD_ERR_CNT_KEY_SITE = "site:pwd_err_cnt:";
} }

View File

@@ -5,7 +5,7 @@ import io.jsonwebtoken.Claims;
/** /**
* 通用常量信息 * 通用常量信息
* *
* @author ruoyi * @author ruoyi
*/ */
public class Constants public class Constants
@@ -109,6 +109,10 @@ public class Constants
* 令牌前缀 * 令牌前缀
*/ */
public static final String LOGIN_USER_KEY = "login_user_key"; public static final String LOGIN_USER_KEY = "login_user_key";
public static final String APP_LOGIN_USER_KEY = "app_login_user_key";
public static final String LOGIN_USER_ID = "login_user_id";
public static final String APP_LOGIN_USER_ID = "login_user_id";
public static final String EXP = "exp";
/** /**
* 用户ID * 用户ID

View File

@@ -1,4 +1,4 @@
package com.ruoyi.cms.domain; package com.ruoyi.common.core.domain.entity;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@@ -109,4 +109,8 @@ public class AppUser extends BaseEntity
@ApiModelProperty("是否企业用户 0是1否") @ApiModelProperty("是否企业用户 0是1否")
private String isCompanyUser; private String isCompanyUser;
@TableField(exist = false)
@ApiModelProperty("密码")
private String password;
} }

View File

@@ -0,0 +1,226 @@
package com.ruoyi.common.core.domain.model;
import com.alibaba.fastjson2.annotation.JSONField;
import com.ruoyi.common.core.domain.entity.AppUser;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
/**
* 登录用户身份权限
*
* @author ruoyi
*/
public class LoginSiteUser implements UserDetails
{
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
private Long userId;
/**
* 用户唯一标识
*/
private String token;
/**
* 登录时间
*/
private Long loginTime;
/**
* 过期时间
*/
private Long expireTime;
/**
* 登录IP地址
*/
private String ipaddr;
/**
* 登录地点
*/
private String loginLocation;
/**
* 浏览器类型
*/
private String browser;
/**
* 操作系统
*/
private String os;
/**
* 用户信息
*/
private AppUser user;
public LoginSiteUser(){
}
public LoginSiteUser(Long userId, AppUser user){
this.userId = userId;
this.user = user;
}
public Long getUserId()
{
return userId;
}
public void setUserId(Long userId)
{
this.userId = userId;
}
public String getToken()
{
return token;
}
public void setToken(String token)
{
this.token = token;
}
@JSONField(serialize = false)
@Override
public String getPassword()
{
return user.getPassword();
}
@Override
public String getUsername()
{
return user.getName();
}
/**
* 账户是否未过期,过期无法验证
*/
@JSONField(serialize = false)
@Override
public boolean isAccountNonExpired()
{
return true;
}
/**
* 指定用户是否解锁,锁定的用户无法进行身份验证
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isAccountNonLocked()
{
return true;
}
/**
* 指示是否已过期的用户的凭据(密码),过期的凭据防止认证
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isCredentialsNonExpired()
{
return true;
}
/**
* 是否可用 ,禁用的用户不能身份验证
*
* @return
*/
@JSONField(serialize = false)
@Override
public boolean isEnabled()
{
return true;
}
public Long getLoginTime()
{
return loginTime;
}
public void setLoginTime(Long loginTime)
{
this.loginTime = loginTime;
}
public String getIpaddr()
{
return ipaddr;
}
public void setIpaddr(String ipaddr)
{
this.ipaddr = ipaddr;
}
public String getLoginLocation()
{
return loginLocation;
}
public void setLoginLocation(String loginLocation)
{
this.loginLocation = loginLocation;
}
public String getBrowser()
{
return browser;
}
public void setBrowser(String browser)
{
this.browser = browser;
}
public String getOs()
{
return os;
}
public void setOs(String os)
{
this.os = os;
}
public Long getExpireTime()
{
return expireTime;
}
public void setExpireTime(Long expireTime)
{
this.expireTime = expireTime;
}
public AppUser getUser()
{
return user;
}
public void setUser(AppUser user)
{
this.user = user;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities()
{
return null;
}
}

View File

@@ -0,0 +1,122 @@
package com.ruoyi.common.utils;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.exception.ServiceException;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
/**
* 安全服务工具类
*
* @author ruoyi
*/
public class SiteSecurityUtils
{
/**
* 用户ID
**/
public static Long getUserId()
{
try
{
return getLoginSiteUser().getUserId();
}
catch (Exception e)
{
throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED);
}
}
/**
* 获取用户账户
**/
public static String getUsername()
{
try
{
return getLoginSiteUser().getUsername();
}
catch (Exception e)
{
throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED);
}
}
/**
* 获取用户
**/
public static LoginSiteUser getLoginSiteUser()
{
try
{
return (LoginSiteUser) getAuthentication().getPrincipal();
}
catch (Exception e)
{
throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
}
}
/**
* 获取Authentication
*/
public static Authentication getAuthentication()
{
return SecurityContextHolder.getContext().getAuthentication();
}
/**
* 生成BCryptPasswordEncoder密码
*
* @param password 密码
* @return 加密字符串
*/
public static String encryptPassword(String password)
{
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
return passwordEncoder.encode(password);
}
/**
* 判断密码是否相同
*
* @param rawPassword 真实密码
* @param encodedPassword 加密后字符
* @return 结果
*/
public static boolean matchesPassword(String rawPassword, String encodedPassword)
{
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
return passwordEncoder.matches(rawPassword, encodedPassword);
}
public static Boolean isLogin(){
try
{
Object principal = getAuthentication().getPrincipal();
if(principal.toString().equals("anonymousUser")){
return false;
}else {
return true;
}
} catch (Exception e)
{
return false;
}
}
public static LoginSiteUser getLoginUser() {
try
{
return (LoginSiteUser) getAuthentication().getPrincipal();
}
catch (Exception e)
{
throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
}
}
}

View File

@@ -5,6 +5,10 @@ import javax.servlet.FilterChain;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.utils.SiteSecurityUtils;
import com.ruoyi.framework.web.service.TokenSiteService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
@@ -27,11 +31,14 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
@Autowired @Autowired
private TokenService tokenService; private TokenService tokenService;
@Autowired
private TokenSiteService tokenSiteService;
@Override @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException throws ServletException, IOException
{ {
LoginUser loginUser = tokenService.getLoginUser(request); LoginUser loginUser = tokenService.getLoginUser(request);
LoginSiteUser loginSiteUser = tokenSiteService.getLoginSiteUser(request);
if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())) if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication()))
{ {
tokenService.verifyToken(loginUser); tokenService.verifyToken(loginUser);
@@ -39,6 +46,13 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authenticationToken);
} }
if (StringUtils.isNotNull(loginSiteUser) && StringUtils.isNull(SiteSecurityUtils.getAuthentication()))
{
tokenSiteService.verifyToken(loginSiteUser);
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginSiteUser, null,loginSiteUser.getAuthorities());
authenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authenticationToken);
}
chain.doFilter(request, response); chain.doFilter(request, response);
} }
} }

View File

@@ -4,6 +4,9 @@ import java.io.IOException;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.framework.web.service.TokenSiteService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
@@ -29,7 +32,8 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler
{ {
@Autowired @Autowired
private TokenService tokenService; private TokenService tokenService;
@Autowired
private TokenSiteService tokenSiteService;
/** /**
* 退出处理 * 退出处理
* *
@@ -48,6 +52,15 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler
// 记录用户退出日志 // 记录用户退出日志
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, MessageUtils.message("user.logout.success"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, MessageUtils.message("user.logout.success")));
} }
LoginSiteUser loginSiteUser = tokenSiteService.getLoginSiteUser(request);
if (StringUtils.isNotNull(loginSiteUser))
{
String userName = loginSiteUser.getUsername();
// 删除用户缓存记录
tokenSiteService.delLoginSiteUser(loginSiteUser.getToken());
// 记录用户退出日志
AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGOUT, MessageUtils.message("user.logout.success")));
}
ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.success(MessageUtils.message("user.logout.success")))); ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.success(MessageUtils.message("user.logout.success"))));
} }
} }

View File

@@ -1,6 +1,9 @@
package com.ruoyi.framework.web.service; package com.ruoyi.framework.web.service;
import javax.annotation.Resource; import javax.annotation.Resource;
import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.BadCredentialsException;
@@ -52,6 +55,8 @@ public class SysLoginService
@Autowired @Autowired
private ISysConfigService configService; private ISysConfigService configService;
@Autowired
private TokenSiteService tokenSiteService;
/** /**
* 登录验证 * 登录验证
* *
@@ -99,41 +104,24 @@ public class SysLoginService
// 生成token // 生成token
return tokenService.createToken(loginUser); return tokenService.createToken(loginUser);
} }
//模拟登录
public String loginApp(String username, String password) public String loginApp(String username, String password)
{ {
// 登录前置校验
loginPreCheck(username, password); AppUser appUser = userService.selectAppUserById(1L);
// 用户验证 LoginSiteUser loginSiteUser = new LoginSiteUser();
Authentication authentication = null; loginSiteUser.setUserId(appUser.getUserId());
try loginSiteUser.setUser(appUser);
{ recordLoginInfo(appUser);
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken);
}
catch (Exception e)
{
if (e instanceof BadCredentialsException)
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
throw new UserPasswordNotMatchException();
}
else
{
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
throw new ServiceException(e.getMessage());
}
}
finally
{
AuthenticationContextHolder.clearContext();
}
AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(appUser);
recordLoginInfo(loginUser.getUserId());
// 生成token // 生成token
return tokenService.createToken(loginUser); return tokenSiteService.createToken(loginSiteUser);
}
//单点登录
public String loginOss(String ticket)
{
return "tokenService.createToken(loginUser)";
} }
/** /**
* 校验验证码 * 校验验证码
@@ -163,7 +151,15 @@ public class SysLoginService
} }
} }
} }
public void recordLoginInfo(AppUser user)
{
AppUser sysUser = new AppUser();
sysUser.setUserId(user.getUserId());
sysUser.setLoginIp(IpUtils.getIpAddr());
sysUser.setLoginDate(DateUtils.getNowDate());
sysUser.setUpdateBy(user.getName());
// userService.updateSiteUser(sysUser);
}
/** /**
* 登录前置校验 * 登录前置校验
* @param username 用户名 * @param username 用户名

View File

@@ -0,0 +1,242 @@
package com.ruoyi.framework.web.service;
import com.ruoyi.common.constant.CacheConstants;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.model.LoginSiteUser;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.ip.AddressUtils;
import com.ruoyi.common.utils.ip.IpUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import eu.bitwalker.useragentutils.UserAgent;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* token验证处理
*
* @author ruoyi
*/
@Component
public class TokenSiteService
{
private static final Logger log = LoggerFactory.getLogger(TokenSiteService.class);
// 令牌自定义标识
@Value("${token.header}")
private String header;
// 令牌秘钥
@Value("${token.secret}")
private String secret;
@Value("${token.expireTime}")
private int expireTime;
protected static final long MILLIS_SECOND = 1000;
protected static final long MILLIS_MINUTE = 60 * MILLIS_SECOND;
private static final Long MILLIS_MINUTE_TEN = 20 * 60 * 1000L;
@Autowired
private RedisCache redisCache;
/**
* 获取用户身份信息
*
* @return 用户信息
*/
public LoginSiteUser getLoginSiteUser(HttpServletRequest request)
{
// 获取请求携带的令牌
String token = getToken(request);
if (StringUtils.isNotEmpty(token))
{
try
{
Claims claims = parseToken(token);
// 解析对应的权限以及用户信息
String uuid = (String) claims.get(Constants.APP_LOGIN_USER_KEY);
Integer userID = (Integer) claims.get(Constants.APP_LOGIN_USER_ID);
String userKey = getTokenKey(uuid, String.valueOf(userID));
LoginSiteUser user = redisCache.getCacheObject(userKey);
return user;
}
catch (Exception e)
{
log.error("获取用户信息异常'{}'", e.getMessage());
}
}
return null;
}
/**
* 设置用户身份信息
*/
public void setLoginSiteUser(LoginSiteUser LoginSiteUser)
{
if (StringUtils.isNotNull(LoginSiteUser) && StringUtils.isNotEmpty(LoginSiteUser.getToken()))
{
refreshToken(LoginSiteUser);
}
}
/**
* 删除用户身份信息
*/
public void delLoginSiteUser(String token)
{
if (StringUtils.isNotEmpty(token))
{
String userKey = getTokenKey(token);
redisCache.deleteObject(userKey);
}
}
/**
* 创建令牌
*
* @param LoginSiteUser 用户信息
* @return 令牌
*/
public String createToken(LoginSiteUser LoginSiteUser)
{
String token = IdUtils.fastUUID();
LoginSiteUser.setToken(token);
setUserAgent(LoginSiteUser);
refreshToken(LoginSiteUser);
Map<String, Object> claims = new HashMap<>();
claims.put(Constants.APP_LOGIN_USER_KEY, token);
claims.put(Constants.APP_LOGIN_USER_ID, LoginSiteUser.getUserId());
// 当前时间 + 30 分钟
long currentTimeMillis = System.currentTimeMillis();
long expireTimeMillis = currentTimeMillis + ((long) expireTime * 60 * 1000); // 30分钟 = 1800000 毫秒
long expireTimeSeconds = expireTimeMillis / 1000; // 转换为秒(时间戳)
claims.put(Constants.EXP, expireTimeSeconds);
return createToken(claims);
}
/**
* 验证令牌有效期相差不足20分钟自动刷新缓存
*
* @param LoginSiteUser
* @return 令牌
*/
public void verifyToken(LoginSiteUser LoginSiteUser)
{
long expireTime = LoginSiteUser.getExpireTime();
long currentTime = System.currentTimeMillis();
if (expireTime - currentTime <= MILLIS_MINUTE_TEN)
{
refreshToken(LoginSiteUser);
}
}
/**
* 刷新令牌有效期
*
* @param LoginSiteUser 登录信息
*/
public void refreshToken(LoginSiteUser LoginSiteUser)
{
LoginSiteUser.setLoginTime(System.currentTimeMillis());
LoginSiteUser.setExpireTime(LoginSiteUser.getLoginTime() + expireTime * MILLIS_MINUTE);
// 根据uuid将LoginSiteUser缓存
String userKey = getTokenKey(LoginSiteUser.getToken(), String.valueOf(LoginSiteUser.getUserId()));
redisCache.setCacheObject(userKey, LoginSiteUser, expireTime, TimeUnit.MINUTES);
}
/**
* 设置用户代理信息
*
* @param LoginSiteUser 登录信息
*/
public void setUserAgent(LoginSiteUser LoginSiteUser)
{
UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent"));
String ip = IpUtils.getIpAddr();
LoginSiteUser.setIpaddr(ip);
LoginSiteUser.setLoginLocation(AddressUtils.getRealAddressByIP(ip));
LoginSiteUser.setBrowser(userAgent.getBrowser().getName());
LoginSiteUser.setOs(userAgent.getOperatingSystem().getName());
}
/**
* 从数据声明生成令牌
*
* @param claims 数据声明
* @return 令牌
*/
private String createToken(Map<String, Object> claims)
{
String token = Jwts.builder()
.setClaims(claims)
.signWith(SignatureAlgorithm.HS512, secret).compact();
return token;
}
/**
* 从令牌中获取数据声明
*
* @param token 令牌
* @return 数据声明
*/
private Claims parseToken(String token)
{
return Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
}
/**
* 从令牌中获取用户名
*
* @param token 令牌
* @return 用户名
*/
public String getUsernameFromToken(String token)
{
Claims claims = parseToken(token);
return claims.getSubject();
}
/**
* 获取请求token
*
* @param request
* @return token
*/
private String getToken(HttpServletRequest request)
{
String token = request.getHeader(header);
if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX))
{
token = token.replace(Constants.TOKEN_PREFIX, "");
}
return token;
}
private String getTokenKey(String uuid,String userId)
{
return CacheConstants.SITE_LOGIN_TOKEN_KEY +userId+":" +uuid;
}
private String getTokenKey(String uuid)
{
return CacheConstants.SITE_LOGIN_TOKEN_KEY + uuid;
}
}

View File

@@ -3,6 +3,7 @@ package com.ruoyi.system.mapper;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.core.domain.entity.AppUser;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
@@ -126,4 +127,6 @@ public interface SysUserMapper
* @return 结果 * @return 结果
*/ */
public SysUser checkEmailUnique(String email); public SysUser checkEmailUnique(String email);
AppUser selectAppUserById(long id);
} }

View File

@@ -1,6 +1,8 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import java.util.List; import java.util.List;
import com.ruoyi.common.core.domain.entity.AppUser;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
/** /**
@@ -203,4 +205,6 @@ public interface ISysUserService
* @return 结果 * @return 结果
*/ */
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName); public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
AppUser selectAppUserById(long id);
} }

View File

@@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.validation.Validator; import javax.validation.Validator;
import com.ruoyi.common.core.domain.entity.AppUser;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -547,4 +549,9 @@ public class SysUserServiceImpl implements ISysUserService
} }
return successMsg.toString(); return successMsg.toString();
} }
@Override
public AppUser selectAppUserById(long id) {
return userMapper.selectAppUserById(id);
}
} }

View File

@@ -141,8 +141,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult"> <select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1 select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1
</select> </select>
<select id="selectAppUserById" resultType="com.ruoyi.common.core.domain.entity.AppUser">
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId"> select * from app_user where user_id = #{id}
</select>
<insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId">
insert into sys_user( insert into sys_user(
<if test="userId != null and userId != 0">user_id,</if> <if test="userId != null and userId != 0">user_id,</if>
<if test="deptId != null and deptId != 0">dept_id,</if> <if test="deptId != null and deptId != 0">dept_id,</if>