WechatGroup

This commit is contained in:
Lishundong
2025-09-22 17:06:47 +08:00
commit 410182ec79
542 changed files with 155561 additions and 0 deletions

116
ruoyi-bussiness/pom.xml Normal file
View File

@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.8.8</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-bussiness</artifactId>
<description>
bussiness系统模块
</description>
<dependencies>
<dependency>
<groupId>com.alibaba.nls</groupId>
<artifactId>nls-sdk-tts</artifactId>
<version>2.2.14</version>
</dependency>
<dependency>
<groupId>com.alibaba.nls</groupId>
<artifactId>nls-sdk-common</artifactId>
<version>2.2.14</version>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.nls</groupId>
<artifactId>nls-sdk-recognizer</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.6.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-spring-web</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.6.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.ruoyi</groupId>-->
<!-- <artifactId>ruoyi-framework</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.14.0</version>
</dependency>
<dependency>
<groupId>org.dromara.easy-es</groupId>
<artifactId>easy-es-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,17 @@
package com.ruoyi.cms.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
/**
* 注册 WebSocket 端点
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}

View File

@@ -0,0 +1,10 @@
package com.ruoyi.cms.constant;
public class CommonConstant {
/**
* 地铁线路缓存
*/
public static final String SUBWAY_LINE_CACHE = "common_cache:subway";
public static final String COMMERICIAL_AREA = "common_cache:comericial_area";
public static final String JOB_TITLE = "common_cache:job_titile";
}

View File

@@ -0,0 +1,82 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.AppUser;
import com.ruoyi.cms.domain.BussinessDictData;
import com.ruoyi.cms.domain.CommercialArea;
import com.ruoyi.cms.domain.SubwayLine;
import com.ruoyi.cms.service.*;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.TreeSelect;
import com.ruoyi.common.core.domain.entity.JobTitle;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.StringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.ruoyi.common.utils.PageUtils.startPage;
@RestController
@RequestMapping("/app/common")
@Api(tags = "移动端:常用参数查询")
public class AppCommonController extends BaseController {
@Autowired
private ISubwayLineService iSubwayLineService;
@Autowired
private ICommercialAreaService iCommercialAreaService;
@Autowired
private IJobTitleService iJobTitleService;
@Autowired
private IIndustryService industryService;
@Autowired
private IBussinessDictTypeService iBussinessDictTypeService;
@ApiOperation("查询地铁")
@GetMapping("/subway")
public AjaxResult subway()
{
List<SubwayLine> list = iSubwayLineService.appSubway();
return success(list);
}
@ApiOperation("查询商圈")
@GetMapping("/commercialArea")
public AjaxResult commercialArea()
{
List<CommercialArea> list = iCommercialAreaService.appCommercialArea();
return success(list);
}
@ApiOperation("查询职业 树结构")
@GetMapping("/jobTitle/treeselect")
public AjaxResult jobTitle()
{
List<TreeSelect> jobTitleList = iJobTitleService.appJobTitle();
return success(jobTitleList);
}
@ApiOperation("查询行业 树结构")
@GetMapping("/industry/treeselect")
public AjaxResult industry()
{
List<TreeSelect> industryList = industryService.appIndustry();
return success(industryList);
}
@ApiOperation("查询字典")
@GetMapping("/dict/{dictType}")
public AjaxResult listDict(@PathVariable String dictType)
{
List<BussinessDictData> dictData = iBussinessDictTypeService.selectDictDataByType(dictType);
return success(dictData);
}
@GetMapping("/standar/filed")
public AjaxResult standarFiled()
{
Map<String,Object> filed = iBussinessDictTypeService.standarFiled();
return success(filed);
}
}

View File

@@ -0,0 +1,139 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.BussinessDictData;
import com.ruoyi.cms.domain.Company;
import com.ruoyi.cms.domain.CompanyCard;
import com.ruoyi.cms.domain.query.LabelQuery;
import com.ruoyi.cms.mapper.CompanyCardMapper;
import com.ruoyi.cms.service.ICompanyCardService;
import com.ruoyi.cms.service.ICompanyCollectionService;
import com.ruoyi.cms.service.ICompanyService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.TableSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公司Controller
*
* @author lishundong
* @date 2024-09-04
*/
@RestController
@RequestMapping("/app/company")
@Api(tags = "移动端:公司")
public class AppCompanyController extends BaseController
{
@Autowired
private ICompanyService companyService;
@Autowired
private ICompanyCollectionService companyCollectionService;
@Autowired
private ICompanyCardService companyCardService;
@Autowired
private CompanyCardMapper companyCardMapper;
/**
* 获取公司详细信息
*/
@ApiOperation("获取公司详细信息")
@PreAuthorize("@ss.hasPermi('bussiness:company:query')")
@GetMapping(value = "/{companyId}")
public AjaxResult getInfo(@PathVariable("companyId") Long companyId)
{
return success(companyService.selectCompanyByCompanyId(companyId));
}
/**
* 用户收藏公司
*/
@Log(title = "用户收藏公司")
@PostMapping("/collection/{companyId}")
@ApiOperation("用户收藏公司")
public AjaxResult companyCollection(@PathVariable("companyId") Long companyId)
{
return toAjax(companyCollectionService.companyCollection(companyId));
}
/**
* 用户取消收藏公司
*/
@Log(title = "用户取消收藏公司")
@DeleteMapping("/collection/{companyId}")
@ApiOperation("用户取消收藏公司")
public AjaxResult companyCancel(@PathVariable("companyId") Long companyId)
{
return toAjax(companyCollectionService.companyCancel(companyId));
}
/**
* 公司下的岗位
*/
@Log(title = "公司下的岗位")
@GetMapping("/job/{companyId}")
@ApiOperation("公司下的岗位")
public TableDataInfo jobCompany(@ApiParam("公司id") @PathVariable Long companyId)
{
startPage();
return getDataTable(companyCollectionService.jobCompany(companyId));
}
@Log(title = "查看企业卡片")
@GetMapping("/card")
@ApiOperation("查看企业卡片")
public TableDataInfo card()
{
startPage();
return getDataTable(companyCardService.cardApp());
}
@Log(title = "收藏企业卡片")
@PutMapping("/card/collection/{companyCardId}")
@ApiOperation("收藏企业卡片")
public AjaxResult cardCollection(@PathVariable Long companyCardId)
{
companyCardService.cardCollection(companyCardId);
return success();
}
@Log(title = "取消收藏企业卡片")
@DeleteMapping("/card/collection/{companyCardId}")
@ApiOperation("取消收藏公司卡片")
public AjaxResult cardCancel(@PathVariable Long companyCardId)
{
companyCardService.cardCancel(companyCardId);
return success();
}
@Log(title = "公司招聘的岗位数量")
@GetMapping("/count/{companyId}")
@ApiOperation("公司招聘的岗位数量")
public AjaxResult count(@PathVariable Long companyId)
{
Integer count = companyService.count(companyId);
return success(count);
}
@Log(title = "公司标签下的公司")
@GetMapping("/label")
@ApiOperation("公司标签下的公司")
public TableDataInfo label(LabelQuery labelQuery)
{
CompanyCard companyCard = companyCardMapper.selectById(labelQuery.getCardId());
startPage();
List<Company> companyList = companyService.label(companyCard,labelQuery);
return getDataTable(companyList);
}
@GetMapping("/importLabel500")
public void importLabel()
{
companyService.importLabel();
}
@GetMapping("/importLabelBank")
public void importLabelBank()
{
companyService.importLabelBank();
}
}

View File

@@ -0,0 +1,74 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.JobFair;
import com.ruoyi.cms.service.IFairCollectionService;
import com.ruoyi.cms.service.IJobFairService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 招聘会Controller
*
* @author lishundong
* @date 2024-09-04
*/
@RestController
@RequestMapping("/app/fair")
@Api(tags = "移动端:招聘会")
public class AppFairController extends BaseController
{
@Autowired
private IJobFairService jobFairService;
@Autowired
private IFairCollectionService fairCollectionService;
/**
* 招聘会列表
*/
@Log(title = "招聘会列表")
@GetMapping
public TableDataInfo list(JobFair jobFair)
{
startPage();
List<JobFair> results = jobFairService.appList(jobFair);
return getDataTable(results);
}
/**
* 招聘会详情
*/
@Log(title = "招聘会详情")
@GetMapping("/{fairId}")
public AjaxResult appDetail(@ApiParam("招聘会id") @PathVariable Long fairId)
{
return success(jobFairService.appDetail(fairId));
}
/**
* 用户收藏招聘会
*/
@Log(title = "用户收藏招聘会")
@PostMapping("/collection/{fairId}")
public AjaxResult companyCollection(@ApiParam("招聘会id") @PathVariable Long fairId)
{
return toAjax(fairCollectionService.fairCollection(fairId));
}
/**
* 用户取消收藏招聘会
*/
@Log(title = "用户取消收藏招聘会")
@DeleteMapping("/collection/{fairId}")
public AjaxResult companyCancel(@ApiParam("招聘会id") @PathVariable Long fairId)
{
return toAjax(fairCollectionService.cancel(fairId));
}
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.service.IFileService;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/app/file")
public class AppFileController {
@Autowired
private IFileService fileService;
@PostMapping("/upload")
public AjaxResult uploadFile(@RequestParam("file") MultipartFile file, @RequestParam(value = "bussinessId",required = false) Long bussinessId) {
return fileService.uploadFile(file,bussinessId);
}
}

View File

@@ -0,0 +1,294 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.ESJobDocument;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.query.ESJobSearch;
import com.ruoyi.cms.domain.vo.CompetitivenessResponse;
import com.ruoyi.cms.domain.vo.RadarChart;
import com.ruoyi.cms.service.IESJobSearchService;
import com.ruoyi.cms.service.IJobCollectionService;
import com.ruoyi.cms.service.IJobService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.dromara.easyes.core.biz.EsPageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* 岗位Controller
*
* @author lishundong
* @date 2024-09-03
*/
@RestController
@RequestMapping("/app/job")
@Api(tags = "移动端:岗位相关接口")
public class AppJobController extends BaseController
{
@Autowired
private IJobService jobService;
@Autowired
private IJobCollectionService jobCollectionService;
@Autowired
private IESJobSearchService esJobSearchService;
private Calendar calendar = Calendar.getInstance();
private Date date = new Date();
{
calendar.set(Calendar.YEAR, 2025); // 设置年份
calendar.set(Calendar.MONTH, Calendar.JULY); // 设置月份7月
calendar.set(Calendar.DAY_OF_MONTH, 12); // 设置日期
date = calendar.getTime(); // 转换为Date对象
}
/**
* 查询岗位列表
*/
@ApiOperation("查询岗位列表")
@GetMapping("/list")
public TableDataInfo list(ESJobSearch job, HttpServletRequest request)
{
// 打印请求参数
System.out.println("Request Parameters:");
request.getParameterMap().forEach((key, value) -> {
System.out.println(key + " = " + String.join(", ", value));
});
// 打印请求头
System.out.println("Request Headers:");
Enumeration<String> headerNames = request.getHeaderNames();
Iterator<String> iterator = Collections.list(headerNames).iterator();
iterator.forEachRemaining(headerName -> {
System.out.println(headerName + " = " + request.getHeader(headerName));
});
EsPageInfo<ESJobDocument> list = jobService.appList(job);
return getTableDataInfo(list);
}
/**
* 获取5条推荐岗位
*/
@ApiOperation("获取推荐岗位")
@GetMapping("/recommend")
public AjaxResult recommend(ESJobSearch esJobSearch)
{
List<ESJobDocument> jobList = jobService.recommend(esJobSearch);
for (ESJobDocument esJobDocument:jobList){
esJobDocument.setPostingDate(date);
}
return success(jobList);
}
@ApiOperation("获取littleVideo")
@GetMapping("/littleVideo")
public AjaxResult littleVideo(ESJobSearch esJobSearch)
{
List<ESJobDocument> jobList = jobService.littleVideo(esJobSearch);
for (ESJobDocument esJobDocument:jobList){
esJobDocument.setPostingDate(date);
}
return success(jobList);
}
@ApiOperation("获取littleVideo")
@GetMapping("/littleVideo/random")
public AjaxResult littleVideo(@RequestParam(required = true) String uuid,@RequestParam(required = false) Integer count,@RequestParam(required = false) String jobTitle)
{
List<ESJobDocument> jobList = jobService.littleVideoRandom(uuid,count,jobTitle);
for (ESJobDocument esJobDocument:jobList){
esJobDocument.setPostingDate(date);
}
return success(jobList);
}
/**
* 获取5条推荐岗位
*/
@GetMapping("/updateLon")
public void updateLon()
{
jobService.updateLon();
}
/**
* 附件工作
*/
@ApiOperation("附近工作")
@PostMapping(value = "/nearJob")
public TableDataInfo nearJob(@RequestBody ESJobSearch jobQuery)
{
EsPageInfo<ESJobDocument> list = esJobSearchService.nearJob(jobQuery);
List<ESJobDocument> jobList = list.getList();
for (ESJobDocument esJobDocument:jobList){
esJobDocument.setPostingDate(date);
}
list.setList(jobList);
return getTableDataInfo(list);
}
/**
* 附件工作
*/
@ApiOperation("区县工作")
@PostMapping(value = "/countyJob")
public TableDataInfo countyJob(@RequestBody ESJobSearch job)
{
EsPageInfo<ESJobDocument> list = jobService.countyJobList(job);
List<ESJobDocument> jobList = list.getList();
for (ESJobDocument esJobDocument:jobList){
esJobDocument.setPostingDate(date);
}
list.setList(jobList);
return getTableDataInfo(list);
}
/**
* 地铁周边
*/
@ApiOperation("地铁周边")
@PostMapping(value = "/subway")
public TableDataInfo subway(@RequestBody ESJobSearch jobQuery)
{
EsPageInfo<ESJobDocument> list = jobService.subway(jobQuery);
List<ESJobDocument> jobList = list.getList();
for (ESJobDocument esJobDocument:jobList){
esJobDocument.setPostingDate(date);
}
list.setList(jobList);
return getTableDataInfo(list);
}
/**
* 商圈周边
*/
@ApiOperation("商圈周边")
@PostMapping(value = "/commercialArea")
public TableDataInfo commercialArea(@RequestBody ESJobSearch jobQuery)
{
EsPageInfo<ESJobDocument> list = jobService.commercialArea(jobQuery);
List<ESJobDocument> jobList = list.getList();
for (ESJobDocument esJobDocument:jobList){
esJobDocument.setPostingDate(date);
}
list.setList(jobList);
return getTableDataInfo(list);
}
/**
* 获取岗位详细信息
*/
@ApiOperation("获取岗位详细信息")
@GetMapping(value = "/{jobId}")
public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
{
Job job = jobService.selectJobByJobIdApp(jobId);
job.setPostingDate(date);
return success(job);
}
/**
* 用户收藏岗位
*/
@Log(title = "用户收藏岗位")
@PostMapping("/collection/{jobId}")
@ApiOperation("用户收藏")
public AjaxResult jobCollection(@ApiParam("岗位id") @PathVariable Long jobId)
{
return toAjax(jobCollectionService.jobCollection(jobId));
}
/**
* 用户取消收藏岗位
*/
@Log(title = "用户取消收藏岗位")
@DeleteMapping("/collection/{jobId}")
@ApiOperation("用户取消收藏岗位")
public AjaxResult cancel(@ApiParam("岗位id") @PathVariable Long jobId)
{
return toAjax(jobCollectionService.cancel(jobId));
}
/**
* 用户申请岗位
*/
@Log(title = "用户申请岗位")
@GetMapping("/apply/{jobId}")
@ApiOperation("用户申请岗位")
public AjaxResult apply(@ApiParam("岗位id") @PathVariable Long jobId)
{
return toAjax(jobCollectionService.apply(jobId));
}
@Log(title = "竞争力分析")
@GetMapping("/competitiveness/{jobId}")
@ApiOperation("竞争力分析")
public AjaxResult competitiveness(@ApiParam("岗位id") @PathVariable Long jobId) {
// Generate random values for the response
Random random = new Random();
// Build radar chart with random values between 60-95
RadarChart radarChart = new RadarChart();
radarChart.setAge(60 + random.nextInt(36)); // 60-95
radarChart.setExperience(60 + random.nextInt(36));
radarChart.setEducation(60 + random.nextInt(36));
radarChart.setSkill(60 + random.nextInt(36));
radarChart.setSalary(60 + random.nextInt(36));
radarChart.setLocation(60 + random.nextInt(36));
// Build response with random values
CompetitivenessResponse response = new CompetitivenessResponse();
response.setTotalApplicants(0); // Always 0 as requested
response.setMatchScore(60 + random.nextInt(41)); // 60-100
response.setRank(1 + random.nextInt(10)); // 1-10
response.setPercentile(random.nextInt(101)); // 0-100
response.setRadarChart(radarChart);
return success(response);
}
private TableDataInfo getTableDataInfo(EsPageInfo<ESJobDocument> result){
long total = result.getTotal();
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(200);
rspData.setRows(result.getList());
rspData.setTotal(total > 200 ? 200 : total);
return rspData;
}
@GetMapping("/import")
public AjaxResult importData()
{
jobService.importData();
return success();
}
@GetMapping("/importRow")
public AjaxResult importRow()
{
jobService.importRow();
return success();
}
@GetMapping("/update")
public AjaxResult update()
{
jobService.updateEs();
return success();
}
@PostMapping("/getWechatUrl")
public AjaxResult getWechatUrl(@RequestBody HashMap<String,String> url)
{
String s = url.get("imgUrl");
return AjaxResult.success(jobService.getWechatUrl(s));
}
@PostMapping("/insert")
public AjaxResult insertTemp(@RequestBody Job job)
{
return AjaxResult.success(jobService.insertTemp(job));
}
@ApiOperation("生成分享的html")
@GetMapping("/htmlGen/{id}")
public AjaxResult htmlGen(@PathVariable(required = true) Long id)
{
String result = jobService.htmlGen(id);
return AjaxResult.success(result);
}
@GetMapping("/fix")
public void fix()
{
jobService.fix();
}
}

View File

@@ -0,0 +1,66 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.AppUser;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.Notice;
import com.ruoyi.cms.domain.vo.AppNoticeVO;
import com.ruoyi.cms.service.IAppNoticeService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import static com.ruoyi.common.utils.PageUtils.startPage;
@RestController
@RequestMapping("/app/notice")
@Api(tags = "移动端:消息")
public class AppNoticeInfoController extends BaseController {
@Autowired
private IAppNoticeService appNoticeService;
@ApiOperation("消息列表")
@GetMapping("/info")
public AjaxResult listNotRead(@RequestParam(required = false) Integer isRead)
{
List<Notice> appNoticeVO = appNoticeService.listNotRead(isRead);
return AjaxResult.success(appNoticeVO);
}
@ApiOperation("推荐岗位列表")
@GetMapping("/recommend")
public TableDataInfo recommend(@RequestParam(required = false)String jobTitle)
{
startPage();
List<Job> list = appNoticeService.recommend(jobTitle);
return getDataTable(list);
}
@ApiOperation("系统通知已读")
@PostMapping("/read/sysNotice")
public AjaxResult sysNotice(@RequestParam String id)
{
appNoticeService.sysNotice(id);
return AjaxResult.success();
}
@ApiOperation("岗位推荐、招聘会已读")
@PostMapping("/read")
public AjaxResult read(@RequestParam String id)
{
appNoticeService.read(id);
return AjaxResult.success();
}
@ApiOperation("系统通知列表")
@GetMapping("/sysNotice")
public TableDataInfo sysNoticeList()
{
startPage();
List<Notice> list = appNoticeService.sysNoticeList();
return getDataTable(list);
}
}

View File

@@ -0,0 +1,117 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.AppUser;
import com.ruoyi.cms.domain.Company;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobFair;
import com.ruoyi.cms.domain.query.MineJobQuery;
import com.ruoyi.cms.service.*;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
/**
* app用户Controller
*
* @author lishundong
* @date 2024-09-03
*/
@RestController
@RequestMapping("/app/user")
@Api(tags = "移动端:用户相关")
public class AppUserController extends BaseController
{
@Autowired
private IAppUserService appUserService;
@Autowired
private IAppReviewJobService appReviewJobService;
@Autowired
private IJobCollectionService jobCollectionService;
@Autowired
private ICompanyCollectionService companyCollectionService;
@Autowired
private IJobApplyService jobApplyService;
@Autowired
private IFairCollectionService fairCollectionService;
/**
* 查询岗位列表
*/
@ApiOperation("保存简历")
@PostMapping("/resume")
public AjaxResult saveResume(@RequestBody AppUser appUser)
{
appUser.setUserId(SecurityUtils.getUserId());
appUserService.updateAppUser(appUser);
return AjaxResult.success();
}
@ApiOperation("查看简历")
@GetMapping("/resume")
public AjaxResult getResume()
{
AppUser appUser = appUserService.selectAppUserByUserId(SecurityUtils.getUserId());
return AjaxResult.success(appUser);
}
@ApiOperation("我的浏览")
@GetMapping("/review")
public TableDataInfo review(MineJobQuery jobQuery)
{
startPage();
List<Job> jobs = appReviewJobService.review(jobQuery);
return getDataTable(jobs);
}
@ApiOperation("我的浏览-日期数组")
@GetMapping("/review/array")
public AjaxResult reviewArray(MineJobQuery jobQuery)
{
List<String> dateList = appReviewJobService.reviewArray();
return AjaxResult.success(dateList);
}
@ApiOperation("我的岗位收藏")
@GetMapping("/collection/job")
public TableDataInfo collectionJob()
{
startPage();
List<Job> jobs = jobCollectionService.collectionJob();
return getDataTable(jobs);
}
@ApiOperation("我的公司收藏")
@GetMapping("/collection/company")
public TableDataInfo collectionCompany()
{
startPage();
List<Company> jobs = companyCollectionService.collectionCompany();
return getDataTable(jobs);
}
@ApiOperation("我的招聘会收藏")
@GetMapping("/collection/fair")
public TableDataInfo collectionFair(@RequestParam(name = "type") Integer type)
{
startPage();
List<JobFair> jobs = fairCollectionService.appCollectionFair(type);
return getDataTable(jobs);
}
@ApiOperation("我申请的岗位")
@GetMapping("/apply/job")
public TableDataInfo applyJob()
{
startPage();
List<Job> jobs = jobApplyService.applyJob();
return getDataTable(jobs);
}
@ApiOperation("统计")
@GetMapping("/statistics")
public AjaxResult statistics()
{
HashMap<String,Integer> result = jobApplyService.statistics();
return AjaxResult.success(result);
}
}

View File

@@ -0,0 +1,118 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.BussinessDictData;
import com.ruoyi.cms.service.IBussinessDictDataService;
import com.ruoyi.cms.service.IBussinessDictTypeService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
* 数据字典信息
*
* @author ruoyi
*/
@RestController
@RequestMapping("/cms/dict/data")
public class BussinessDictDataController extends BaseController
{
@Autowired
private IBussinessDictDataService dictDataService;
@Autowired
private IBussinessDictTypeService dictTypeService;
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(BussinessDictData dictData)
{
startPage();
List<BussinessDictData> list = dictDataService.selectDictDataList(dictData);
return getDataTable(list);
}
@Log(title = "字典数据", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:dict:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, BussinessDictData dictData)
{
List<BussinessDictData> list = dictDataService.selectDictDataList(dictData);
ExcelUtil<BussinessDictData> util = new ExcelUtil<BussinessDictData>(BussinessDictData.class);
util.exportExcel(response, list, "字典数据");
}
/**
* 查询字典数据详细
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
@GetMapping(value = "/{dictCode}")
public AjaxResult getInfo(@PathVariable Long dictCode)
{
return success(dictDataService.selectDictDataById(dictCode));
}
/**
* 根据字典类型查询字典数据信息
*/
@GetMapping(value = "/type/{dictType}")
public AjaxResult dictType(@PathVariable String dictType)
{
List<BussinessDictData> data = dictTypeService.selectDictDataByType(dictType);
if (StringUtils.isNull(data))
{
data = new ArrayList<BussinessDictData>();
}
return success(data);
}
/**
* 新增字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:add')")
@Log(title = "字典数据", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody BussinessDictData dict)
{
dict.setCreateBy(getUsername());
return toAjax(dictDataService.insertDictData(dict));
}
/**
* 修改保存字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:edit')")
@Log(title = "字典数据", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody BussinessDictData dict)
{
dict.setUpdateBy(getUsername());
return toAjax(dictDataService.updateDictData(dict));
}
/**
* 删除字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictCodes}")
public AjaxResult remove(@PathVariable Long[] dictCodes)
{
dictDataService.deleteDictDataByIds(dictCodes);
return success();
}
}

View File

@@ -0,0 +1,127 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.BussinessDictType;
import com.ruoyi.cms.service.IBussinessDictTypeService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 数据字典信息
*
* @author ruoyi
*/
@RestController
@RequestMapping("/cms/dict/type")
public class BussinessDictTypeController extends BaseController
{
@Autowired
private IBussinessDictTypeService dictTypeService;
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(BussinessDictType dictType)
{
startPage();
List<BussinessDictType> list = dictTypeService.selectDictTypeList(dictType);
return getDataTable(list);
}
@Log(title = "字典类型", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:dict:export')")
@PostMapping("/export")
public void export(HttpServletResponse response, BussinessDictType dictType)
{
List<BussinessDictType> list = dictTypeService.selectDictTypeList(dictType);
ExcelUtil<BussinessDictType> util = new ExcelUtil<BussinessDictType>(BussinessDictType.class);
util.exportExcel(response, list, "字典类型");
}
/**
* 查询字典类型详细
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
@GetMapping(value = "/{dictId}")
public AjaxResult getInfo(@PathVariable Long dictId)
{
return success(dictTypeService.selectDictTypeById(dictId));
}
/**
* 新增字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:add')")
@Log(title = "字典类型", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody BussinessDictType dict)
{
if (!dictTypeService.checkDictTypeUnique(dict))
{
return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setCreateBy(getUsername());
return toAjax(dictTypeService.insertDictType(dict));
}
/**
* 修改字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:edit')")
@Log(title = "字典类型", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody BussinessDictType dict)
{
if (!dictTypeService.checkDictTypeUnique(dict))
{
return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setUpdateBy(getUsername());
return toAjax(dictTypeService.updateDictType(dict));
}
/**
* 删除字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictIds}")
public AjaxResult remove(@PathVariable Long[] dictIds)
{
dictTypeService.deleteDictTypeByIds(dictIds);
return success();
}
/**
* 刷新字典缓存
*/
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.CLEAN)
@DeleteMapping("/refreshCache")
public AjaxResult refreshCache()
{
dictTypeService.resetDictCache();
return success();
}
/**
* 获取字典选择框列表
*/
@GetMapping("/optionselect")
public AjaxResult optionselect()
{
List<BussinessDictType> dictTypes = dictTypeService.selectDictTypeAll();
return success(dictTypes);
}
}

View File

@@ -0,0 +1,72 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.BussinessOperLog;
import com.ruoyi.cms.service.IBussinessOperLogService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 操作日志记录
*
* @author ruoyi
*/
@RestController
@RequestMapping("/cms/operlog")
@Api(tags = "后台App用户日志")
public class BussinessOperlogController extends BaseController
{
@Autowired
private IBussinessOperLogService operLogService;
@PreAuthorize("@ss.hasPermi('monitor:operlog:list')")
@GetMapping("/list")
@ApiOperation("日志列表")
public TableDataInfo list(BussinessOperLog operLog)
{
startPage();
List<BussinessOperLog> list = operLogService.selectOperLogList(operLog);
return getDataTable(list);
}
@Log(title = "操作日志", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('monitor:operlog:export')")
@PostMapping("/export")
@ApiOperation("日志导出excel")
public void export(HttpServletResponse response, BussinessOperLog operLog)
{
List<BussinessOperLog> list = operLogService.selectOperLogList(operLog);
ExcelUtil<BussinessOperLog> util = new ExcelUtil<BussinessOperLog>(BussinessOperLog.class);
util.exportExcel(response, list, "操作日志");
}
@Log(title = "操作日志", businessType = BusinessType.DELETE)
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/{operIds}")
@ApiOperation("删除操作日志")
public AjaxResult remove(@PathVariable Long[] operIds)
{
return toAjax(operLogService.deleteOperLogByIds(operIds));
}
@Log(title = "操作日志", businessType = BusinessType.CLEAN)
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/clean")
@ApiOperation("清空操作日志")
public AjaxResult clean()
{
operLogService.cleanOperLog();
return success();
}
}

View File

@@ -0,0 +1,114 @@
package com.ruoyi.cms.controller.cms;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.domain.AppUser;
import com.ruoyi.cms.service.IAppUserService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* APP用户Controller
*
* @author lishundong
* @date 2024-09-03
*/
@RestController
@RequestMapping("/cms/appUser")
@Api(tags = "后台APP用户管理")
public class CmsAppUserController extends BaseController
{
@Autowired
private IAppUserService appUserService;
/**
* 查询APP用户列表
*/
@ApiOperation("查询APP用户列表")
@PreAuthorize("@ss.hasPermi('bussiness:user:list')")
@GetMapping("/list")
public TableDataInfo list(AppUser appUser)
{
startPage();
List<AppUser> list = appUserService.selectAppUserList(appUser);
return getDataTable(list);
}
/**
* 导出APP用户列表
*/
@ApiOperation("导出APP用户列表")
@PreAuthorize("@ss.hasPermi('bussiness:user:export')")
@Log(title = "APP用户", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, AppUser appUser)
{
List<AppUser> list = appUserService.selectAppUserList(appUser);
ExcelUtil<AppUser> util = new ExcelUtil<AppUser>(AppUser.class);
util.exportExcel(response, list, "APP用户数据");
}
/**
* 获取APP用户详细信息
*/
@ApiOperation("获取APP用户详细信息")
@PreAuthorize("@ss.hasPermi('bussiness:user:query')")
@GetMapping(value = "/{userId}")
public AjaxResult getInfo(@PathVariable("userId") Long userId)
{
return success(appUserService.selectAppUserByUserId(userId));
}
/**
* 新增APP用户
*/
@ApiOperation("新增APP用户")
@PreAuthorize("@ss.hasPermi('bussiness:user:add')")
@Log(title = "APP用户", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody AppUser appUser)
{
return toAjax(appUserService.insertAppUser(appUser));
}
/**
* 修改APP用户
*/
@ApiOperation("修改APP用户")
@PreAuthorize("@ss.hasPermi('bussiness:user:edit')")
@Log(title = "APP用户", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody AppUser appUser)
{
return toAjax(appUserService.updateAppUser(appUser));
}
/**
* 删除APP用户
*/
@ApiOperation("删除APP用户")
@PreAuthorize("@ss.hasPermi('bussiness:user:remove')")
@Log(title = "APP用户", businessType = BusinessType.DELETE)
@DeleteMapping("/{userIds}")
public AjaxResult remove(@PathVariable Long[] userIds)
{
return toAjax(appUserService.deleteAppUserByUserIds(userIds));
}
}

View File

@@ -0,0 +1,129 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.vo.CandidateVO;
import com.ruoyi.cms.service.IJobService;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 岗位Controller
*
* @author lishundong
* @date 2024-09-03
*/
@RestController
@RequestMapping("/cms/job")
@Api(tags = "后台:岗位管理")
@Anonymous
public class CmsJobController extends BaseController
{
@Autowired
private IJobService jobService;
/**
* 查询岗位列表
*/
@ApiOperation("查询岗位列表")
@PreAuthorize("@ss.hasPermi('bussiness:job:list')")
@GetMapping("/list")
public TableDataInfo list(Job job)
{
startPage();
List<Job> list = jobService.selectJobList(job);
return getDataTable(list);
}
/**
* 获取岗位详细信息
*/
@ApiOperation("获取岗位详细信息")
@PreAuthorize("@ss.hasPermi('bussiness:job:query')")
@GetMapping(value = "/{jobId}")
public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
{
return success(jobService.selectJobByJobId(jobId));
}
/**
* 导出岗位列表
*/
@ApiOperation("导出岗位列表")
@PreAuthorize("@ss.hasPermi('app:job:export')")
@Log(title = "岗位", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, Job job)
{
List<Job> list = jobService.selectJobList(job);
ExcelUtil<Job> util = new ExcelUtil<Job>(Job.class);
util.exportExcel(response, list, "岗位数据");
}
/**
* 新增岗位
*/
@ApiOperation("新增岗位")
@PreAuthorize("@ss.hasPermi('app:job:add')")
@Log(title = "岗位", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Job job)
{
return toAjax(jobService.insertJob(job));
}
/**
* 修改岗位
*/
@ApiOperation("修改岗位")
@PreAuthorize("@ss.hasPermi('app:job:edit')")
@Log(title = "岗位", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Job job)
{
return toAjax(jobService.updateJob(job));
}
/**
* 删除岗位
*/
@ApiOperation("删除岗位")
@PreAuthorize("@ss.hasPermi('app:job:remove')")
@Log(title = "岗位", businessType = BusinessType.DELETE)
@DeleteMapping("/{jobIds}")
public AjaxResult remove(@PathVariable Long[] jobIds)
{
return toAjax(jobService.deleteJobByJobIds(jobIds));
}
@ApiOperation("候选人查询")
@Log(title = "岗位", businessType = BusinessType.DELETE)
@GetMapping("/candidates")
public TableDataInfo candidates(Long jobId)
{
startPage();
List<CandidateVO> list = jobService.candidates(jobId);
return getDataTable(list);
}
@GetMapping("/import")
public AjaxResult importData()
{
jobService.importData();
return success();
}
@GetMapping("/importRow")
public AjaxResult importRow()
{
jobService.importRow();
return success();
}
}

View File

@@ -0,0 +1,85 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.AppNotice;
import com.ruoyi.cms.service.IAppNoticeService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公告 信息操作处理
*
* @author ruoyi
*/
@RestController
@RequestMapping("/cms/notice")
public class CmsNoticeController extends BaseController
{
@Autowired
private IAppNoticeService noticeService;
/**
* 获取通知公告列表
*/
@PreAuthorize("@ss.hasPermi('system:notice:list')")
@GetMapping("/list")
public TableDataInfo list(AppNotice notice)
{
startPage();
List<AppNotice> list = noticeService.selectNoticeList(notice);
return getDataTable(list);
}
/**
* 根据通知公告编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:notice:query')")
@GetMapping(value = "/{noticeId}")
public AjaxResult getInfo(@PathVariable Long noticeId)
{
return success(noticeService.selectNoticeById(noticeId));
}
/**
* 新增通知公告
*/
@PreAuthorize("@ss.hasPermi('system:notice:add')")
@Log(title = "通知公告", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody AppNotice notice)
{
notice.setCreateBy(getUsername());
return toAjax(noticeService.insertNotice(notice));
}
/**
* 修改通知公告
*/
@PreAuthorize("@ss.hasPermi('system:notice:edit')")
@Log(title = "通知公告", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody AppNotice notice)
{
notice.setUpdateBy(getUsername());
return toAjax(noticeService.updateNotice(notice));
}
/**
* 删除通知公告
*/
@PreAuthorize("@ss.hasPermi('system:notice:remove')")
@Log(title = "通知公告", businessType = BusinessType.DELETE)
@DeleteMapping("/{noticeIds}")
public AjaxResult remove(@PathVariable Long[] noticeIds)
{
return toAjax(noticeService.deleteNoticeByIds(noticeIds));
}
}

View File

@@ -0,0 +1,113 @@
package com.ruoyi.cms.controller.cms;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.domain.CommercialArea;
import com.ruoyi.cms.service.ICommercialAreaService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 商圈Controller
*
* @author Lishundong
* @date 2024-11-12
*/
@RestController
@RequestMapping("/cms/area")
@Api(tags = "后台:商圈")
public class CommercialAreaController extends BaseController
{
@Autowired
private ICommercialAreaService commercialAreaService;
/**
* 查询商圈列表
*/
@ApiOperation("查询商圈列表")
@PreAuthorize("@ss.hasPermi('cms:area:list')")
@GetMapping("/list")
public TableDataInfo list(CommercialArea commercialArea)
{
startPage();
List<CommercialArea> list = commercialAreaService.selectCommercialAreaList(commercialArea);
return getDataTable(list);
}
/**
* 导出商圈列表
*/
@ApiOperation("导出商圈列表")
@PreAuthorize("@ss.hasPermi('cms:area:export')")
@Log(title = "商圈", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, CommercialArea commercialArea)
{
List<CommercialArea> list = commercialAreaService.selectCommercialAreaList(commercialArea);
ExcelUtil<CommercialArea> util = new ExcelUtil<CommercialArea>(CommercialArea.class);
util.exportExcel(response, list, "商圈数据");
}
/**
* 获取商圈详细信息
*/
@ApiOperation("获取商圈详细信息")
@PreAuthorize("@ss.hasPermi('cms:area:query')")
@GetMapping(value = "/{commercialAreaId}")
public AjaxResult getInfo(@PathVariable("commercialAreaId") Long commercialAreaId)
{
return success(commercialAreaService.selectCommercialAreaByCommercialAreaId(commercialAreaId));
}
/**
* 新增商圈
*/
@ApiOperation("新增商圈")
@PreAuthorize("@ss.hasPermi('cms:area:add')")
@Log(title = "商圈", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody CommercialArea commercialArea)
{
return toAjax(commercialAreaService.insertCommercialArea(commercialArea));
}
/**
* 修改商圈
*/
@ApiOperation("修改商圈")
@PreAuthorize("@ss.hasPermi('cms:area:edit')")
@Log(title = "商圈", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody CommercialArea commercialArea)
{
return toAjax(commercialAreaService.updateCommercialArea(commercialArea));
}
/**
* 删除商圈
*/
@ApiOperation("删除商圈")
@PreAuthorize("@ss.hasPermi('cms:area:remove')")
@Log(title = "商圈", businessType = BusinessType.DELETE)
@DeleteMapping("/{commercialAreaIds}")
public AjaxResult remove(@PathVariable Long[] commercialAreaIds)
{
return toAjax(commercialAreaService.deleteCommercialAreaByCommercialAreaIds(commercialAreaIds));
}
}

View File

@@ -0,0 +1,116 @@
package com.ruoyi.cms.controller.cms;
import java.sql.Array;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.domain.CompanyCard;
import com.ruoyi.cms.service.ICompanyCardService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 公司卡片Controller
*
* @author ${author}
* @date 2025-02-18
*/
@RestController
@RequestMapping("/cms/card")
@Api(tags = "公司卡片")
public class CompanyCardController extends BaseController
{
@Autowired
private ICompanyCardService companyCardService;
/**
* 查询公司卡片列表
*/
@ApiOperation("查询公司卡片列表")
@PreAuthorize("@ss.hasPermi('system:card:list')")
@GetMapping("/list")
public TableDataInfo list(CompanyCard companyCard)
{
startPage();
List<CompanyCard> list = companyCardService.selectCompanyCardList(companyCard);
return getDataTable(list);
}
/**
* 导出公司卡片列表
*/
@ApiOperation("导出公司卡片列表")
@PreAuthorize("@ss.hasPermi('system:card:export')")
@Log(title = "公司卡片", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, CompanyCard companyCard)
{
List<CompanyCard> list = companyCardService.selectCompanyCardList(companyCard);
ExcelUtil<CompanyCard> util = new ExcelUtil<CompanyCard>(CompanyCard.class);
util.exportExcel(response, list, "公司卡片数据");
}
/**
* 获取公司卡片详细信息
*/
@ApiOperation("获取公司卡片详细信息")
@PreAuthorize("@ss.hasPermi('system:card:query')")
@GetMapping(value = "/{companyCardId}")
public AjaxResult getInfo(@PathVariable("companyCardId") Long companyCardId)
{
return success(companyCardService.selectCompanyCardByCompanyCardId(companyCardId));
}
/**
* 新增公司卡片
*/
@ApiOperation("新增公司卡片")
@PreAuthorize("@ss.hasPermi('system:card:add')")
@Log(title = "公司卡片", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody CompanyCard companyCard)
{
return toAjax(companyCardService.insertCompanyCard(companyCard));
}
/**
* 修改公司卡片
*/
@ApiOperation("修改公司卡片")
@PreAuthorize("@ss.hasPermi('system:card:edit')")
@Log(title = "公司卡片", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody CompanyCard companyCard)
{
return toAjax(companyCardService.updateCompanyCard(companyCard));
}
/**
* 删除公司卡片
*/
@ApiOperation("删除公司卡片")
@PreAuthorize("@ss.hasPermi('system:card:remove')")
@Log(title = "公司卡片", businessType = BusinessType.DELETE)
@DeleteMapping("/{companyCardIds}")
public AjaxResult remove(@PathVariable Long[] companyCardIds)
{
return toAjax(companyCardService.deleteCompanyCardByCompanyCardIds(companyCardIds));
}
}

View File

@@ -0,0 +1,110 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.Company;
import com.ruoyi.cms.service.ICompanyCollectionService;
import com.ruoyi.cms.service.ICompanyService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 公司Controller
*
* @author lishundong
* @date 2024-09-04
*/
@RestController
@RequestMapping("/cms/company")
@Api(tags = "后台:公司管理")
public class CompanyController extends BaseController
{
@Autowired
private ICompanyService companyService;
/**
* 查询公司列表
*/
@ApiOperation("查询公司列表")
@PreAuthorize("@ss.hasPermi('app:company:list')")
@GetMapping("/list")
public TableDataInfo list(Company company)
{
startPage();
List<Company> list = companyService.selectCompanyList(company);
return getDataTable(list);
}
/**
* 导出公司列表
*/
@ApiOperation("导出公司列表")
@PreAuthorize("@ss.hasPermi('app:company:export')")
@Log(title = "公司", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, Company company)
{
List<Company> list = companyService.selectCompanyList(company);
ExcelUtil<Company> util = new ExcelUtil<Company>(Company.class);
util.exportExcel(response, list, "公司数据");
}
/**
* 获取公司详细信息
*/
@ApiOperation("获取公司详细信息")
@PreAuthorize("@ss.hasPermi('app:company:query')")
@GetMapping(value = "/{companyId}")
public AjaxResult getInfo(@PathVariable("companyId") Long companyId)
{
return success(companyService.selectCompanyByCompanyId(companyId));
}
/**
* 新增公司
*/
@ApiOperation("新增公司")
@PreAuthorize("@ss.hasPermi('app:company:add')")
@Log(title = "公司", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Company company)
{
return toAjax(companyService.insertCompany(company));
}
/**
* 修改公司
*/
@ApiOperation("修改公司")
@PreAuthorize("@ss.hasPermi('app:company:edit')")
@Log(title = "公司", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Company company)
{
return toAjax(companyService.updateCompany(company));
}
/**
* 删除公司
*/
@ApiOperation("删除公司")
@PreAuthorize("@ss.hasPermi('app:company:remove')")
@Log(title = "公司", businessType = BusinessType.DELETE)
@DeleteMapping("/{companyIds}")
public AjaxResult remove(@PathVariable Long[] companyIds)
{
return toAjax(companyService.deleteCompanyByCompanyIds(companyIds));
}
}

View File

@@ -0,0 +1,134 @@
package com.ruoyi.cms.controller.cms;
import java.util.List;
import com.ruoyi.common.core.domain.entity.Industry;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.service.IIndustryService;
import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletResponse;
/**
* 行业Controller
*
* @author LishunDong
* @date 2024-11-12
*/
@RestController
@RequestMapping("/cms/industry")
@Api(tags = "后台:行业管理")
public class IndustryController extends BaseController
{
@Autowired
private IIndustryService industryService;
/**
* 查询行业列表
*/
@ApiOperation("查询行业列表")
@PreAuthorize("@ss.hasPermi('cms:industry:list')")
@GetMapping("/list")
public TableDataInfo list(Industry industry)
{
startPage();
List<Industry> list = industryService.selectIndustryList(industry);
return getDataTable(list);
}
@ApiOperation("行业树结构")
@PreAuthorize("@ss.hasPermi('cms:industry:list')")
@GetMapping("/treeselect")
public AjaxResult treeselect(Industry industry)
{
List<Industry> industryList = industryService.selectIndustryList(industry);
return success(industryService.buildIndustryTreeSelect(industryList));
}
/**
* 导出行业列表
*/
@ApiOperation("导出行业列表")
@PreAuthorize("@ss.hasPermi('cms:industry:export')")
@Log(title = "行业", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, Industry industry)
{
List<Industry> list = industryService.selectIndustryList(industry);
ExcelUtil<Industry> util = new ExcelUtil<Industry>(Industry.class);
util.exportExcel(response, list, "行业数据");
}
/**
* 获取行业详细信息
*/
@ApiOperation("获取行业详细信息")
@PreAuthorize("@ss.hasPermi('cms:industry:query')")
@GetMapping(value = "/{industryId}")
public AjaxResult getInfo(@PathVariable("industryId") Long industryId)
{
return success(industryService.selectIndustryByIndustryId(industryId));
}
/**
* 新增行业
*/
@ApiOperation("新增行业")
@PreAuthorize("@ss.hasPermi('cms:industry:add')")
@Log(title = "行业", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody Industry industry)
{
return toAjax(industryService.insertIndustry(industry));
}
/**
* 修改行业
*/
@ApiOperation("修改行业")
@PreAuthorize("@ss.hasPermi('cms:industry:edit')")
@Log(title = "行业", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody Industry industry)
{
return toAjax(industryService.updateIndustry(industry));
}
/**
* 删除行业
*/
@ApiOperation("删除行业")
@PreAuthorize("@ss.hasPermi('cms:industry:remove')")
@Log(title = "行业", businessType = BusinessType.DELETE)
@DeleteMapping("/{industryId}")
public AjaxResult remove(@PathVariable Long industryId)
{
if (industryService.hasChildByIndustryId(industryId))
{
return warn("存在子行业,不允许删除");
}
Long[] industryIds = {industryId};
return toAjax(industryService.deleteIndustryByIndustryIds(industryIds));
}
@GetMapping("/import")
public AjaxResult importData()
{
industryService.importData();
return success();
}
}

View File

@@ -0,0 +1,110 @@
package com.ruoyi.cms.controller.cms;
import java.util.List;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.domain.JobFair;
import com.ruoyi.cms.service.IJobFairService;
import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletResponse;
/**
* 招聘会信息Controller
*
* @author lishundong
* @date 2024-09-04
*/
@RestController
@RequestMapping("/cms/fair")
@Api(tags = "后台:招聘会信息")
public class JobFairController extends BaseController
{
@Autowired
private IJobFairService jobFairService;
/**
* 查询招聘会信息列表
*/
@ApiOperation("查询招聘会信息列表")
@PreAuthorize("@ss.hasPermi('app:fair:list')")
@GetMapping("/list")
public TableDataInfo list(JobFair jobFair)
{
startPage();
List<JobFair> list = jobFairService.selectJobFairList(jobFair);
return getDataTable(list);
}
/**
* 导出招聘会信息列表
*/
@ApiOperation("导出招聘会信息列表")
@PreAuthorize("@ss.hasPermi('app:fair:export')")
@Log(title = "招聘会信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, JobFair jobFair)
{
List<JobFair> list = jobFairService.selectJobFairList(jobFair);
ExcelUtil<JobFair> util = new ExcelUtil<JobFair>(JobFair.class);
util.exportExcel(response, list, "招聘会信息数据");
}
/**
* 获取招聘会信息详细信息
*/
@ApiOperation("获取招聘会信息详细信息")
@PreAuthorize("@ss.hasPermi('app:fair:query')")
@GetMapping(value = "/{jobFairId}")
public AjaxResult getInfo(@PathVariable("jobFairId") Long jobFairId)
{
return success(jobFairService.selectJobFairByJobFairId(jobFairId));
}
/**
* 新增招聘会信息
*/
@ApiOperation("新增招聘会信息")
@PreAuthorize("@ss.hasPermi('app:fair:add')")
@Log(title = "招聘会信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody JobFair jobFair)
{
return toAjax(jobFairService.insertJobFair(jobFair));
}
/**
* 修改招聘会信息
*/
@ApiOperation("修改招聘会信息")
@PreAuthorize("@ss.hasPermi('app:fair:edit')")
@Log(title = "招聘会信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody JobFair jobFair)
{
return toAjax(jobFairService.updateJobFair(jobFair));
}
/**
* 删除招聘会信息
*/
@ApiOperation("删除招聘会信息")
@PreAuthorize("@ss.hasPermi('app:fair:remove')")
@Log(title = "招聘会信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{jobFairIds}")
public AjaxResult remove(@PathVariable Long[] jobFairIds)
{
return toAjax(jobFairService.deleteJobFairByJobFairIds(jobFairIds));
}
}

View File

@@ -0,0 +1,142 @@
package com.ruoyi.cms.controller.cms;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.cms.domain.BussinessDictData;
import com.ruoyi.common.core.domain.entity.Industry;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.common.core.domain.entity.JobTitle;
import com.ruoyi.cms.service.IJobTitleService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 岗位Controller
*
* @author Lishundong
* @date 2024-11-12
*/
@RestController
@RequestMapping("/cms/job/titile")
@Api(tags = "后台:职位接口")
public class JobTitleController extends BaseController
{
@Autowired
private IJobTitleService jobTitleService;
/**
* 查询岗位列表
*/
@ApiOperation("查询岗位列表")
@PreAuthorize("@ss.hasPermi('cms:title:list')")
@GetMapping("/list")
public TableDataInfo list(JobTitle jobTitle)
{
startPage();
List<JobTitle> list = jobTitleService.selectJobTitleList(jobTitle);
return getDataTable(list);
}
/**
* 导出岗位列表
*/
@ApiOperation("导出岗位列表")
@PreAuthorize("@ss.hasPermi('cms:title:export')")
@Log(title = "岗位", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, JobTitle jobTitle)
{
List<JobTitle> list = jobTitleService.selectJobTitleList(jobTitle);
ExcelUtil<JobTitle> util = new ExcelUtil<JobTitle>(JobTitle.class);
util.exportExcel(response, list, "岗位数据");
}
/**
* 获取岗位详细信息
*/
@ApiOperation("获取岗位详细信息")
@PreAuthorize("@ss.hasPermi('cms:title:query')")
@GetMapping(value = "/{jobId}")
public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
{
return success(jobTitleService.selectJobTitleByJobId(jobId));
}
/**
* 新增岗位
*/
@ApiOperation("新增岗位")
@PreAuthorize("@ss.hasPermi('cms:title:add')")
@Log(title = "岗位", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody JobTitle jobTitle)
{
return toAjax(jobTitleService.insertJobTitle(jobTitle));
}
/**
* 修改岗位
*/
@ApiOperation("修改岗位")
@PreAuthorize("@ss.hasPermi('cms:title:edit')")
@Log(title = "岗位", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody JobTitle jobTitle)
{
return toAjax(jobTitleService.updateJobTitle(jobTitle));
}
/**
* 删除岗位
*/
@ApiOperation("删除岗位")
@PreAuthorize("@ss.hasPermi('cms:title:remove')")
@Log(title = "岗位", businessType = BusinessType.DELETE)
@DeleteMapping("/{jobId}")
public AjaxResult remove(@PathVariable Long jobId)
{
if (jobTitleService.hasChildByJobId(jobId))
{
return warn("存在子岗位,不允许删除");
}
Long[] jobIds = {jobId};
return toAjax(jobTitleService.deleteJobTitleByJobIds(jobIds));
}
@ApiOperation("行业树结构")
@GetMapping("/treeselect")
public AjaxResult treeselect(JobTitle jobTitle)
{
List<JobTitle> jobTitleList = jobTitleService.selectJobTitleList(jobTitle);
return success(jobTitleService.buildJobTitleTreeSelect(jobTitleList));
}
@GetMapping("/import")
public AjaxResult importJobTitle()
{
jobTitleService.importJobTitle();
return success();
}
@GetMapping("/levelOne")
public AjaxResult levelOne()
{
List<JobTitle> result = jobTitleService.levelOne();
return success(result);
}
}

View File

@@ -0,0 +1,88 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.BussinessDictType;
import com.ruoyi.cms.domain.query.Staticsquery;
import com.ruoyi.cms.service.StaticsqueryService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/cms/statics")
public class StaticsController extends BaseController {
@Autowired
private StaticsqueryService service;
//分行业趋势分析
@GetMapping("/industry")
public AjaxResult industry(Staticsquery staticsquery)
{
Map<String,Object> result = service.industry(staticsquery);
return success(result);
}
//分行业趋势分析
@GetMapping("/industryGen")
public AjaxResult industryGen()
{
service.industryGen();
return success();
}
//分行业趋势分析
@GetMapping("/industryAreaGen")
public AjaxResult industryAreaGen()
{
service.areaGen();
return success();
}
//分行业趋势分析
@GetMapping("/salaryGen")
public AjaxResult salarysalaryGen()
{
service.salarysalaryGen();
return success();
}
@GetMapping("/salary")
public AjaxResult salary(Staticsquery staticsquery)
{
Map<String,Object> result = service.salary(staticsquery);
return success(result);
}
@GetMapping("/industryArea")
public AjaxResult industryArea(Staticsquery staticsquery)
{
Map<String,Object> result = service.industryArea(staticsquery);
return success(result);
}
//分行业趋势分析
@GetMapping("/workYearGen")
public AjaxResult workYearGen()
{
service.workYearGen();
return success();
}
@GetMapping("/workYear")
public AjaxResult workYear(Staticsquery staticsquery)
{
Map<String,Object> result = service.workYear(staticsquery);
return success(result);
}
//分行业趋势分析
@GetMapping("/educationGen")
public AjaxResult educationGen()
{
service.educationGen();
return success();
}
@GetMapping("/education")
public AjaxResult education(Staticsquery staticsquery)
{
Map<String,Object> result = service.education(staticsquery);
return success(result);
}
}

View File

@@ -0,0 +1,100 @@
package com.ruoyi.cms.controller.cms;
import java.util.List;
import com.ruoyi.common.annotation.BussinessLog;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.domain.SubwayLine;
import com.ruoyi.cms.service.ISubwayLineService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 地铁线路Controller
*
* @author Lishundong
* @date 2024-11-12
*/
@RestController
@RequestMapping("/cms/line")
@Api(tags = "后台:地铁线路")
public class SubwayLineController extends BaseController
{
@Autowired
private ISubwayLineService subwayLineService;
/**
* 查询地铁线路列表
*/
@ApiOperation("查询地铁线路列表")
@GetMapping("/list")
@BussinessLog(title = "查询地铁线路列表", businessType = BusinessType.CLEAN)
public TableDataInfo list(SubwayLine subwayLine)
{
startPage();
List<SubwayLine> list = subwayLineService.selectSubwayLineList(subwayLine);
return getDataTable(list);
}
/**
* 获取地铁线路详细信息
*/
@ApiOperation("获取地铁线路详细信息")
@PreAuthorize("@ss.hasPermi('system:line:query')")
@GetMapping(value = "/{lineId}")
public AjaxResult getInfo(@PathVariable("lineId") Long lineId)
{
return success(subwayLineService.selectSubwayLineByLineId(lineId));
}
/**
* 新增地铁线路
*/
@ApiOperation("新增地铁线路")
@PreAuthorize("@ss.hasPermi('system:line:add')")
@Log(title = "地铁线路", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SubwayLine subwayLine)
{
return toAjax(subwayLineService.insertSubwayLine(subwayLine));
}
/**
* 修改地铁线路
*/
@ApiOperation("修改地铁线路")
@PreAuthorize("@ss.hasPermi('system:line:edit')")
@Log(title = "地铁线路", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SubwayLine subwayLine)
{
return toAjax(subwayLineService.updateSubwayLine(subwayLine));
}
/**
* 删除地铁线路
*/
@ApiOperation("删除地铁线路")
@PreAuthorize("@ss.hasPermi('system:line:remove')")
@Log(title = "地铁线路", businessType = BusinessType.DELETE)
@DeleteMapping("/{lineId}")
public AjaxResult remove(@PathVariable Long lineId)
{
return toAjax(subwayLineService.deleteSubwayLineByLineIds(lineId));
}
}

View File

@@ -0,0 +1,103 @@
package com.ruoyi.cms.controller.cms;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.cms.domain.SubwayStation;
import com.ruoyi.cms.service.ISubwayStationService;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 地铁站点Controller
*
* @author Lishundong
* @date 2024-11-12
*/
@RestController
@RequestMapping("/cms/station")
@Api(tags = "后台:地铁站点")
public class SubwayStationController extends BaseController
{
@Autowired
private ISubwayStationService subwayStationService;
/**
* 查询地铁站点列表
*/
@ApiOperation("查询地铁站点列表")
@GetMapping("/list")
public TableDataInfo list(SubwayStation subwayStation)
{
startPage();
List<SubwayStation> list = subwayStationService.selectSubwayStationList(subwayStation);
return getDataTable(list);
}
/**
* 获取地铁站点详细信息
*/
@ApiOperation("获取地铁站点详细信息")
@PreAuthorize("@ss.hasPermi('system:station:query')")
@GetMapping(value = "/{stationId}")
public AjaxResult getInfo(@PathVariable("stationId") Long stationId)
{
return success(subwayStationService.selectSubwayStationByStationId(stationId));
}
/**
* 新增地铁站点
*/
@ApiOperation("新增地铁站点")
@PreAuthorize("@ss.hasPermi('system:station:add')")
@Log(title = "地铁站点", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SubwayStation subwayStation)
{
return toAjax(subwayStationService.insertSubwayStation(subwayStation));
}
/**
* 修改地铁站点
*/
@ApiOperation("修改地铁站点")
@PreAuthorize("@ss.hasPermi('system:station:edit')")
@Log(title = "地铁站点", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SubwayStation subwayStation)
{
return toAjax(subwayStationService.updateSubwayStation(subwayStation));
}
/**
* 删除地铁站点
*/
@ApiOperation("删除地铁站点")
@PreAuthorize("@ss.hasPermi('system:station:remove')")
@Log(title = "地铁站点", businessType = BusinessType.DELETE)
@DeleteMapping("/{stationIds}")
public AjaxResult remove(@PathVariable Long[] stationIds)
{
return toAjax(subwayStationService.deleteSubwayStationByStationIds(stationIds));
}
@GetMapping("/import")
public AjaxResult importStation(){
subwayStationService.importStation();
return success();
}
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.cms.cron;
import com.ruoyi.cms.mapper.JobMapper;
import com.ruoyi.cms.service.IBussinessOperLogService;
import com.ruoyi.cms.service.ICompanyService;
import com.ruoyi.cms.service.IESJobSearchService;
import com.ruoyi.cms.service.IJobService;
import com.ruoyi.common.utils.spring.SpringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
public class JobCron {
public void isHot(){
SpringUtils.getBean(JobMapper.class).isHot();
}
public void resetEs(){
SpringUtils.getBean(IESJobSearchService.class).resetTextCache();
}
//查看索引是否存在,如果不存在,就更新
public void checkEsAndFix(){
SpringUtils.getBean(IESJobSearchService.class).checkEsAndFix();
}
//更新公司的招聘数量
public void updateJobCountOfCompany(){
SpringUtils.getBean(ICompanyService.class).updateJobCountOfCompany();
}
}

View File

@@ -0,0 +1,103 @@
package com.ruoyi.cms.domain;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.xss.Xss;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 通知公告表 sys_notice
*
* @author ruoyi
*/
public class AppNotice extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 公告ID */
private Long noticeId;
/** 公告标题 */
private String noticeTitle;
/** 公告类型1通知 2公告 */
private String noticeType;
/** 公告内容 */
private String noticeContent;
/** 公告状态0正常 1关闭 */
private String status;
public Long getNoticeId()
{
return noticeId;
}
public void setNoticeId(Long noticeId)
{
this.noticeId = noticeId;
}
public void setNoticeTitle(String noticeTitle)
{
this.noticeTitle = noticeTitle;
}
@Xss(message = "公告标题不能包含脚本字符")
@NotBlank(message = "公告标题不能为空")
@Size(min = 0, max = 50, message = "公告标题不能超过50个字符")
public String getNoticeTitle()
{
return noticeTitle;
}
public void setNoticeType(String noticeType)
{
this.noticeType = noticeType;
}
public String getNoticeType()
{
return noticeType;
}
public void setNoticeContent(String noticeContent)
{
this.noticeContent = noticeContent;
}
public String getNoticeContent()
{
return noticeContent;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("noticeId", getNoticeId())
.append("noticeTitle", getNoticeTitle())
.append("noticeType", getNoticeType())
.append("noticeContent", getNoticeContent())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@@ -0,0 +1,39 @@
package com.ruoyi.cms.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 用户岗位浏览记录对象 app_review_job
* @author ${author}
* @date 2025-02-14
*/
@Data
@ApiModel("用户岗位浏览记录")
@TableName(value = "app_review_job")
public class AppReviewJob extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
@TableId(value = "id",type = IdType.AUTO)
private Long id;
private Long userId;
private Long jobId;
/** 浏览日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "浏览日期", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty("浏览日期")
private Date reviewDate;
}

View File

@@ -0,0 +1,114 @@
package com.ruoyi.cms.domain;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* APP用户对象 app_user
* @author lishundong
* @date 2024-09-03
*/
@Data
@ApiModel("APP用户")
@TableName(value = "app_user")
public class AppUser extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** 用户ID */
@TableId(value = "user_id",type = IdType.AUTO)
@ApiModelProperty("用户ID")
private Long userId;
/** 用户名称 */
@Excel(name = "用户名称")
@ApiModelProperty("用户名称")
private String name;
/** 年龄段 对应字典age */
@Excel(name = "年龄段 对应字典age")
@ApiModelProperty("年龄段 对应字典age")
private String age;
/** 用户性别0男 1女对应字典sex */
@Excel(name = "用户性别", readConverterExp = "0=男,1=女")
@ApiModelProperty("用户性别0男 1女对应字典sex")
private String sex;
/** 生日 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty("生日")
private Date birthDate;
/** 学历 对应字典education */
@Excel(name = "学历 对应字典education")
@ApiModelProperty("学历 对应字典education")
private String education;
/** 政治面貌 */
@Excel(name = "政治面貌")
@ApiModelProperty("政治面貌")
private String politicalAffiliation;
/** 手机号码 */
@Excel(name = "手机号码")
@ApiModelProperty("手机号码")
private String phone;
/** 头像地址 */
@Excel(name = "头像地址")
@ApiModelProperty("头像地址")
private String avatar;
/** 最低工资 */
@Excel(name = "最低工资")
@ApiModelProperty("最低工资")
private String salaryMin;
/** 最高工资 */
@Excel(name = "最高工资")
@ApiModelProperty("最高工资")
private String salaryMax;
/** 期望工作地 对应字典area */
@Excel(name = "期望工作地 对应字典area")
@ApiModelProperty("期望工作地 对应字典area")
private String area;
/** 帐号状态0正常 1停用 */
@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
@ApiModelProperty("帐号状态0正常 1停用")
private String status;
/** 最后登录IP */
@Excel(name = "最后登录IP")
@ApiModelProperty("最后登录IP")
private String loginIp;
/** 最后登录时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty("最后登录时间")
private Date loginDate;
@ApiModelProperty("期望岗位,逗号分隔")
private String jobTitleId;
@ApiModelProperty("期望薪资")
private String experience;
@ApiModelProperty("是否开启推荐0不推荐 1推荐")
private Integer isRecommend;
@TableField(exist = false)
private List<String> jobTitle;
}

View File

@@ -0,0 +1,177 @@
package com.ruoyi.cms.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* 字典数据表 sys_dict_data
*
* @author ruoyi
*/
public class BussinessDictData extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 字典编码 */
@Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
private Long dictCode;
/** 字典排序 */
@Excel(name = "字典排序", cellType = ColumnType.NUMERIC)
private Long dictSort;
/** 字典标签 */
@Excel(name = "字典标签")
private String dictLabel;
/** 字典键值 */
@Excel(name = "字典键值")
private String dictValue;
/** 字典类型 */
@Excel(name = "字典类型")
private String dictType;
/** 样式属性(其他样式扩展) */
private String cssClass;
/** 表格字典样式 */
private String listClass;
/** 是否默认Y是 N否 */
@Excel(name = "是否默认", readConverterExp = "Y=是,N=否")
private String isDefault;
/** 状态0正常 1停用 */
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
public Long getDictCode()
{
return dictCode;
}
public void setDictCode(Long dictCode)
{
this.dictCode = dictCode;
}
public Long getDictSort()
{
return dictSort;
}
public void setDictSort(Long dictSort)
{
this.dictSort = dictSort;
}
@NotBlank(message = "字典标签不能为空")
@Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
public String getDictLabel()
{
return dictLabel;
}
public void setDictLabel(String dictLabel)
{
this.dictLabel = dictLabel;
}
@NotBlank(message = "字典键值不能为空")
@Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
public String getDictValue()
{
return dictValue;
}
public void setDictValue(String dictValue)
{
this.dictValue = dictValue;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
public String getDictType()
{
return dictType;
}
public void setDictType(String dictType)
{
this.dictType = dictType;
}
@Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
public String getCssClass()
{
return cssClass;
}
public void setCssClass(String cssClass)
{
this.cssClass = cssClass;
}
public String getListClass()
{
return listClass;
}
public void setListClass(String listClass)
{
this.listClass = listClass;
}
public boolean getDefault()
{
return UserConstants.YES.equals(this.isDefault);
}
public String getIsDefault()
{
return isDefault;
}
public void setIsDefault(String isDefault)
{
this.isDefault = isDefault;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("dictCode", getDictCode())
.append("dictSort", getDictSort())
.append("dictLabel", getDictLabel())
.append("dictValue", getDictValue())
.append("dictType", getDictType())
.append("cssClass", getCssClass())
.append("listClass", getListClass())
.append("isDefault", getIsDefault())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@@ -0,0 +1,97 @@
package com.ruoyi.cms.domain;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* 字典类型表 sys_dict_type
*
* @author ruoyi
*/
public class BussinessDictType extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 字典主键 */
@Excel(name = "字典主键", cellType = ColumnType.NUMERIC)
private Long dictId;
/** 字典名称 */
@Excel(name = "字典名称")
private String dictName;
/** 字典类型 */
@Excel(name = "字典类型")
private String dictType;
/** 状态0正常 1停用 */
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
public Long getDictId()
{
return dictId;
}
public void setDictId(Long dictId)
{
this.dictId = dictId;
}
@NotBlank(message = "字典名称不能为空")
@Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
public String getDictName()
{
return dictName;
}
public void setDictName(String dictName)
{
this.dictName = dictName;
}
@NotBlank(message = "字典类型不能为空")
@Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
@Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
public String getDictType()
{
return dictType;
}
public void setDictType(String dictType)
{
this.dictType = dictType;
}
public String getStatus()
{
return status;
}
public void setStatus(String status)
{
this.status = status;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("dictId", getDictId())
.append("dictName", getDictName())
.append("dictType", getDictType())
.append("status", getStatus())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@@ -0,0 +1,115 @@
package com.ruoyi.cms.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* app操作日志记录对象 bussiness_oper_log
* @author ${author}
* @date 2024-11-13
*/
@Data
@ApiModel("app操作日志记录")
@TableName(value = "bussiness_oper_log")
public class BussinessOperLog extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** 日志主键 */
@TableId(value = "oper_id",type = IdType.AUTO)
@ApiModelProperty("日志主键")
private Long operId;
/** 模块标题 */
@Excel(name = "模块标题")
@ApiModelProperty("模块标题")
private String title;
/** 业务类型0其它 1新增 2修改 3删除 */
@Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除")
@ApiModelProperty("业务类型0其它 1新增 2修改 3删除")
private Integer businessType;
/** 方法名称 */
@Excel(name = "方法名称")
@ApiModelProperty("方法名称")
private String method;
/** 请求方式 */
@Excel(name = "请求方式")
@ApiModelProperty("请求方式")
private String requestMethod;
/** 操作类别0其它 1后台用户 2手机端用户 */
@Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
@ApiModelProperty("操作类别0其它 1后台用户 2手机端用户")
private Integer operatorType;
/** 操作人员 */
@Excel(name = "操作人员")
@ApiModelProperty("操作人员")
private String operName;
/** 部门名称 */
@Excel(name = "部门名称")
@ApiModelProperty("部门名称")
private String deptName;
/** 请求URL */
@Excel(name = "请求URL")
@ApiModelProperty("请求URL")
private String operUrl;
/** 主机地址 */
@Excel(name = "主机地址")
@ApiModelProperty("主机地址")
private String operIp;
/** 操作地点 */
@Excel(name = "操作地点")
@ApiModelProperty("操作地点")
private String operLocation;
/** 请求参数 */
@Excel(name = "请求参数")
@ApiModelProperty("请求参数")
private String operParam;
/** 返回参数 */
@Excel(name = "返回参数")
@ApiModelProperty("返回参数")
private String jsonResult;
/** 操作状态0正常 1异常 */
@Excel(name = "操作状态", readConverterExp = "0=正常,1=异常")
@ApiModelProperty("操作状态0正常 1异常")
private Integer status;
/** 错误消息 */
@Excel(name = "错误消息")
@ApiModelProperty("错误消息")
private String errorMsg;
/** 操作时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty("操作时间")
private Date operTime;
/** 消耗时间 */
@Excel(name = "消耗时间")
@ApiModelProperty("消耗时间")
private Long costTime;
/** 业务类型数组 */
private Integer[] businessTypes;
}

View File

@@ -0,0 +1,48 @@
package com.ruoyi.cms.domain;
import java.math.BigDecimal;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 商圈对象 commercial_area
* @author Lishundong
* @date 2024-11-12
*/
@Data
@ApiModel("商圈")
@TableName(value = "commercial_area")
public class CommercialArea extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "commercial_area_id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long commercialAreaId;
/** 商圈名称 */
@Excel(name = "商圈名称")
@ApiModelProperty("商圈名称")
private String commercialAreaName;
/** 纬度 */
@Excel(name = "纬度")
@ApiModelProperty("纬度")
private BigDecimal latitude;
/** 经度 */
@Excel(name = "经度")
@ApiModelProperty("经度")
private BigDecimal longitude;
private String address;
}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 公司对象 company
* @author lishundong
* @date 2024-09-04
*/
@Data
@ApiModel("公司")
@TableName(value = "company")
public class Company extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** 公司id */
@TableId(value = "company_id",type = IdType.AUTO)
@ApiModelProperty("公司id")
private Long companyId;
/** 单位名称 */
@Excel(name = "单位名称")
@ApiModelProperty("单位名称")
private String name;
/** 单位地点 */
@Excel(name = "单位地点")
@ApiModelProperty("单位地点")
private String location;
/** 主要行业 */
@Excel(name = "主要行业")
@ApiModelProperty("主要行业")
private String industry;
/** 单位规模 对应字典scale */
@Excel(name = "单位规模 对应字典scale")
@ApiModelProperty("单位规模 对应字典scale")
private String scale;
@Excel(name = "信用代码")
@ApiModelProperty("信用代码")
private String code;
@Excel(name = "单位介绍")
@ApiModelProperty("单位介绍")
private String description;
@Excel(name = "性质")
@ApiModelProperty("性质")
private String nature;
@ApiModelProperty("招聘数量")
private Integer totalRecruitment;
@TableField(exist = false)
@ApiModelProperty("是否收藏")
private Integer isCollection;
}

View File

@@ -0,0 +1,50 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 公司卡片对象 company_card
* @author ${author}
* @date 2025-02-18
*/
@Data
@ApiModel("公司卡片")
@TableName(value = "company_card")
public class CompanyCard extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** 公司id */
@TableId(value = "company_card_id",type = IdType.AUTO)
@ApiModelProperty("公司id")
private Long companyCardId;
/** 卡片名称 */
@Excel(name = "卡片名称")
@ApiModelProperty("卡片名称")
private String name;
/** 标签,逗号分开 */
@Excel(name = "标签,逗号分开")
@ApiModelProperty("标签,逗号分开")
private String targ;
@Excel(name = "企业性质")
@ApiModelProperty("企业性质,逗号分开")
private String companyNature;
/** 背景色 */
@Excel(name = "背景色")
@ApiModelProperty("背景色")
private String backgroudColor;
private Integer status;
private Integer cardOrder;
private String description;
private String icon;
}

View File

@@ -0,0 +1,37 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 公司卡片收藏对象 company_card_collection
* @author ${author}
* @date 2025-02-18
*/
@Data
@ApiModel("公司卡片收藏")
@TableName(value = "company_card_collection")
public class CompanyCardCollection extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** 公司id */
@TableId(value = "company_card_collection_id",type = IdType.AUTO)
@ApiModelProperty("公司id")
private Long companyCardCollectionId;
/** 用户id */
@Excel(name = "用户id")
@ApiModelProperty("用户id")
private Long userId;
@Excel(name = "用户id")
@ApiModelProperty("用户id")
private Long companyCardId;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 用户公司收藏对象 company_collection
* @author lishundong
* @date 2024-09-04
*/
@Data
@ApiModel("用户公司收藏")
@TableName(value = "company_collection")
public class CompanyCollection extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
/** 公司id */
@Excel(name = "公司id")
@ApiModelProperty("公司id")
private Long companyId;
/** App用户id */
@Excel(name = "App用户id")
@ApiModelProperty("App用户id")
private Long userId;
}

View File

@@ -0,0 +1,33 @@
package com.ruoyi.cms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 公司标签对象 company_label
* @author ${author}
* @date 2025-02-18
*/
@Data
@ApiModel("公司标签")
@TableName(value = "company_label")
public class CompanyLabel extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
@TableId(value = "id",type = IdType.AUTO)
private Long id;
private String dictValue;
private Long companyId;
}

View File

@@ -0,0 +1,119 @@
package com.ruoyi.cms.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.dromara.easyes.annotation.IndexField;
import org.dromara.easyes.annotation.IndexId;
import org.dromara.easyes.annotation.IndexName;
import org.dromara.easyes.annotation.rely.Analyzer;
import org.dromara.easyes.annotation.rely.FieldType;
import org.dromara.easyes.annotation.rely.IdType;
import java.math.BigDecimal;
import java.util.Date;
/**
* 全文索引 ES数据模型
**/
@IndexName("job_document_gt")
@Data
public class ESJobDocument
{
/**
* es中的唯一id
*/
@IndexId(type = IdType.NONE)
@JsonIgnore
private String id;
/** 公告ID */
private Long jobId;
/** 公告标题 */
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
private String jobTitle;
/** 内容 */
@IndexField(fieldType = FieldType.TEXT, analyzer = Analyzer.IK_SMART, searchAnalyzer = Analyzer.IK_MAX_WORD)
private String description;
/** 公告状态 */
@JsonIgnore
private String status;
private Long minSalary;
/** 最大薪资(元) */
private Long maxSalary;
/** 学历要求 对应字典education */
private String education;
/** 工作经验要求 对应字典experience */
private String experience;
/** 用人单位名称 */
private String companyName;
/** 工作地点 */
private String jobLocation;
private Integer jobLocationAreaCode;
/** 发布时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
private Date postingDate;
/** 招聘人数 */
private Long vacancies;
/** 纬度 */
private BigDecimal latitude;
/** 经度 */
private BigDecimal longitude;
/** 浏览量 */
private Long view;
/** 公司id */
private Long companyId;
private Integer isHot;
private Integer applyNum;
@JsonIgnore
private Company company;
private Integer isApply;
private Integer isCollection;
private String dataSource;
private String jobUrl;
@JsonIgnore
@IndexField(fieldType = FieldType.GEO_POINT)
private String latAndLon;
@JsonIgnore
private String scaleDictCode;
private String industry;
private String jobCategory;
@JsonIgnore
private Integer education_int;
@JsonIgnore
private Integer experience_int;
// @JsonIgnore
private Integer scale;
private String appJobUrl;
private String companyNature;
private Integer isExplain;
private String explainUrl;
private String cover;
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.cms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户岗位收藏对象 job_collection
* @author lishundong
* @date 2024-09-03
*/
@Data
@ApiModel("用户和招聘会收藏")
@TableName(value = "fair_collection")
public class FairCollection extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
/** 岗位id */
@Excel(name = "招聘会id")
@ApiModelProperty("招聘会id")
private Long fairId;
/** App用户id */
@Excel(name = "App用户id")
@ApiModelProperty("App用户id")
private Long userId;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 公司招聘会关联对象 fair_company
* @author lishundong
* @date 2024-09-04
*/
@Data
@ApiModel("公司招聘会关联")
@TableName(value = "fair_company")
public class FairCompany extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
/** 公司id */
@Excel(name = "公司id")
@ApiModelProperty("公司id")
private Long companyId;
/** 招聘会id */
@Excel(name = "招聘会id")
@ApiModelProperty("招聘会id")
private Long jobFairId;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 文件对象 file
* @author ${author}
* @date 2025-03-18
*/
@Data
@ApiModel("文件")
@TableName(value = "file")
public class File extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
/** url */
@Excel(name = "url")
@ApiModelProperty("url")
private String fileUrl;
/** 业务id */
@Excel(name = "业务id")
@ApiModelProperty("业务id")
private Long bussinessId;
}

View File

@@ -0,0 +1,148 @@
package com.ruoyi.cms.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 岗位对象 job
* @author lishundong
* @date 2024-09-04
*/
@Data
@ApiModel("岗位")
@TableName(value = "job")
public class Job extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** 工作id */
@TableId(value = "job_id",type = IdType.AUTO)
@ApiModelProperty("工作id")
private Long jobId;
/** 职位名称 */
@Excel(name = "职位名称")
@ApiModelProperty("职位名称")
private String jobTitle;
/** 最小薪资(元) */
@Excel(name = "最小薪资", readConverterExp = "元=")
@ApiModelProperty("最小薪资(元)")
private Long minSalary;
/** 最大薪资(元) */
@Excel(name = "最大薪资", readConverterExp = "元=")
@ApiModelProperty("最大薪资(元)")
private Long maxSalary;
/** 学历要求 对应字典education */
@Excel(name = "学历要求 对应字典education")
@ApiModelProperty("学历要求 对应字典education")
private String education;
/** 工作经验要求 对应字典experience */
@Excel(name = "工作经验要求 对应字典experience")
@ApiModelProperty("工作经验要求 对应字典experience")
private String experience;
/** 用人单位名称 */
@Excel(name = "用人单位名称")
@ApiModelProperty("用人单位名称")
private String companyName;
/** 工作地点 */
@Excel(name = "工作地点")
@ApiModelProperty("工作地点")
private String jobLocation;
@ApiModelProperty("工作地点区县字典代码")
private Integer jobLocationAreaCode;
/** 发布时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd")
@ApiModelProperty("发布时间")
private Date postingDate;
/** 招聘人数 */
@Excel(name = "招聘人数")
@ApiModelProperty("招聘人数")
private Long vacancies;
/** 纬度 */
@Excel(name = "纬度")
@ApiModelProperty("纬度")
private BigDecimal latitude;
/** 经度 */
@Excel(name = "经度")
@ApiModelProperty("经度")
private BigDecimal longitude;
/** 浏览量 */
@Excel(name = "浏览量")
@ApiModelProperty("浏览量")
@TableField("\"VIEW\"")
private Long view;
/** 公司id */
@Excel(name = "公司id")
@ApiModelProperty("公司id")
private Long companyId;
@ApiModelProperty("是否火")
private Integer isHot;
@ApiModelProperty("申请次数")
@JsonIgnore
private Integer applyNum;
@TableField(exist = false)
@ApiModelProperty("公司信息")
private Company company;
@TableField(exist = false)
@ApiModelProperty("是否申请 0为否 1为是")
private Integer isApply;
@TableField(exist = false)
@ApiModelProperty("是否收藏 0为否 1为是")
private Integer isCollection;
@ApiModelProperty("工作地点")
private String description;
@ApiModelProperty("是否发布 0未发布 1发布")
private Integer isPublish;
@ApiModelProperty("数据来源")
private String dataSource;
@ApiModelProperty("数据来源")
private String jobUrl;
private Long rowId;
@TableField(exist = false)
private String scale;
@TableField(exist = false)
private String industry;
@ApiModelProperty("岗位分类")
private String jobCategory;
@TableField(exist = false)
private String companyNature;
@TableField(exist = false)
private String applyTime;
private Integer isExplain;
private String explainUrl;
private String cover;
}

View File

@@ -0,0 +1,45 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 岗位申请对象 job_apply
* @author lishundong
* @date 2024-09-04
*/
@Data
@ApiModel("岗位申请")
@TableName(value = "job_apply")
public class JobApply extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
/** 岗位id */
@Excel(name = "岗位id")
@ApiModelProperty("岗位id")
private Long jobId;
/** App用户id */
@Excel(name = "App用户id")
@ApiModelProperty("App用户id")
private Long userId;
/** 匹配度 */
@Excel(name = "匹配度")
@ApiModelProperty("匹配度")
private Long matchingDegree;
}

View File

@@ -0,0 +1,42 @@
package com.ruoyi.cms.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
/**
* 用户岗位收藏对象 job_collection
* @author lishundong
* @date 2024-09-03
*/
@Data
@ApiModel("用户岗位收藏")
@TableName(value = "job_collection")
public class JobCollection extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
/** 岗位id */
@Excel(name = "岗位id")
@ApiModelProperty("岗位id")
private Long jobId;
/** App用户id */
@Excel(name = "App用户id")
@ApiModelProperty("App用户id")
private Long userId;
}

View File

@@ -0,0 +1,82 @@
package com.ruoyi.cms.domain;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 招聘会信息对象 job_fair
* @author lishundong
* @date 2024-09-04
*/
@Data
@ApiModel("招聘会信息")
@TableName(value = "job_fair")
public class JobFair extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** 招聘会id */
@TableId(value = "job_fair_id",type = IdType.AUTO)
@ApiModelProperty("招聘会id")
private Long jobFairId;
/** 招聘会名称 */
@Excel(name = "招聘会名称")
@ApiModelProperty("招聘会名称")
private String name;
/** 招聘会类型 对应字典 job_fair_type */
@Excel(name = "招聘会类型 对应字典 job_fair_type")
@ApiModelProperty("招聘会类型 对应字典 job_fair_type")
private String jobFairType;
/** 地点 */
@Excel(name = "地点")
@ApiModelProperty("地点")
private String location;
/** 纬度 */
@Excel(name = "纬度")
@ApiModelProperty("纬度")
private BigDecimal latitude;
/** 经度 */
@Excel(name = "经度")
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("描述")
private String description;
@ApiModelProperty("地点")
private String address;
/** 招聘会开始时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "招聘会开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会开始时间")
private Date startTime;
/** 招聘会结束时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "招聘会结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会结束时间")
private Date endTime;
@TableField(exist = false)
private List<Company> companyList;
@TableField(exist = false)
@JsonFormat(pattern = "yyyy-MM-dd")
private Date queryDate;
@TableField(exist = false)
public Integer isCollection;
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.cms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户岗位收藏对象 job_collection
* @author lishundong
* @date 2024-09-03
*/
@Data
@ApiModel("用户岗位收藏")
@TableName(value = "job_recommend")
public class JobRecomment extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long id;
/** 岗位id */
@Excel(name = "岗位id")
@ApiModelProperty("岗位id")
private Long jobId;
/** App用户id */
@Excel(name = "App用户id")
@ApiModelProperty("App用户id")
private Long userId;
}

View File

@@ -0,0 +1,35 @@
package com.ruoyi.cms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.Date;
@Data
@TableName(value = "notice")
public class Notice extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** ID */
@TableId(value = "notice_id",type = IdType.AUTO)
private Long noticeId;
/** 公告标题 */
private String title;
private String subTitle;
private Integer notReadCount;
private Integer isRead;
@JsonFormat(pattern = "MM-dd")
private Date date;
private String noticeType;
/** 公告内容 */
private String noticeContent;
private Long userId;
private Long bussinessId;
}

View File

@@ -0,0 +1,60 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import java.util.Date;
@Data
public class RowWork {
private String Id;
private String TaskId;
private String TaskName;
private String Std_class;
private String JobCategory;
private String SF;
private String ZCMC;
private String Aca112;
private String Acb22a;
private String Aac011;
private String Acb240;
private String Recruit_Num;
private String Acb202;
private String Aab302;
private String Acb241;
private String Salary;
private String SalaryLow;
private String SalaryHight;
private Date Aae397;
private String AAB004;
private String AAB022;
private String AAB019;
private String AAE006;
private String AAB092;
private String ORG;
private String ACE760;
private String AAE004;
private String AAE005;
private String Num_employers;
private String Experience;
private String Highlight;
private String Minimum_age;
private String Maximum_age;
private String Sex;
private String IndustryType;
private String IndustrySub;
private String AAB019_OK;
private String Aac011_OK;
private String Experience_OK;
private String Num_OK;
private Date Collect_time;
private String ClearFlag;
private String Province;
private String City;
private String County;
private String importdate;
private String YearMonth;
private String IsRepeat;
private String latitude;
private String longitude;
}

View File

@@ -0,0 +1,31 @@
package com.ruoyi.cms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 文件对象 file
* @author ${author}
* @date 2025-03-18
*/
@Data
@TableName(value = "statics")
public class Statics extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id",type = IdType.AUTO)
private Long id;
private String time;
private String type;
private String name;
private String data;
}

View File

@@ -0,0 +1,41 @@
package com.ruoyi.cms.domain;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 地铁线路对象 subway_line
* @author Lishundong
* @date 2024-11-12
*/
@Data
@ApiModel("地铁线路")
@TableName(value = "subway_line")
public class SubwayLine extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "line_id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long lineId;
/** 线路名称 */
@Excel(name = "线路名称")
@ApiModelProperty("线路名称")
private String lineName;
@TableField(exist = false)
@ApiModelProperty("站点列表")
private List<SubwayStation> subwayStationList;
}

View File

@@ -0,0 +1,59 @@
package com.ruoyi.cms.domain;
import java.math.BigDecimal;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 地铁站点对象 subway_station
* @author Lishundong
* @date 2024-11-12
*/
@Data
@ApiModel("地铁站点")
@TableName(value = "subway_station")
public class SubwayStation extends BaseEntity
{
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "station_id",type = IdType.AUTO)
@ApiModelProperty("id")
private Long stationId;
/** 地铁名称 */
@Excel(name = "地铁名称")
@ApiModelProperty("地铁名称")
private String stationName;
/** 所属线路名称 */
@Excel(name = "所属线路名称")
@ApiModelProperty("所属线路名称")
private String lineName;
/** 线路id */
@Excel(name = "线路id")
@ApiModelProperty("线路id")
private Long lineId;
/** 纬度 */
@Excel(name = "纬度")
@ApiModelProperty("纬度")
private BigDecimal latitude;
/** 经度 */
@Excel(name = "经度")
@ApiModelProperty("经度")
private BigDecimal longitude;
private Integer stationOrder;
private String address;
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.domain;
import lombok.Data;
@Data
public class VectorJob {
private String jobTitle; // Aca112
private String jobId; // id
private String scale; // Num_employers
private String education; // Aac011_OK
private String nature; // AAB019_OK
private String experience; // Experience_OK
private String salary; // Acb241
private String companyName; // aab004
private String area; // Aab302
private String jobLocation; // acb202
private String description; // Acb22a
private String jobUrl; // ACE760
private String minSalary;
private String maxSalary;
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.cms.domain.query;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 前端搜索对象
*
* @author ruoyi
*/
@Data
public class ESJobSearch extends Job
{
/** 搜索值 */
private String searchValue;
/** 当前记录起始索引 */
private Integer current;
/** 每页显示记录数 */
private Integer pageSize;
private String sessionId;
private String radius;
@ApiModelProperty("排序方式 0推荐 1最热 2最新发布")
private Integer order;
//商圈id
private List<Long> commercialAreaIds;
//区县id
private List<String> countyIds;
//地铁id
private List<Integer> subwayIds;
/** 纬度 */
private BigDecimal latitude;
/** 经度 */
private BigDecimal longitude;
//是否发布 0未发布 1发布
private Integer isPublish;
private String salaryDictCode;
private String scaleDictCode;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.cms.domain.query;
import lombok.Data;
@Data
public class LabelQuery {
private Long cardId;
private String companyName;
}

View File

@@ -0,0 +1,19 @@
package com.ruoyi.cms.domain.query;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class MineJobQuery extends Job {
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("发布时间")
private String startDate;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("发布时间")
private String endDate;
}

View File

@@ -0,0 +1,222 @@
package com.ruoyi.cms.domain.query;
import lombok.Data;
import java.time.Year;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Data
public class Staticsquery {
//月/季度/年
private String timeDimension;
//岗位发布数量 招聘增长率
private String type;
private String startTime;
private String endTime;
public List<String> generateTimeRange() {
switch (timeDimension) {
case "":
return generateMonthRange();
case "季度":
return generateQuarterRange();
case "":
return generateYearRange();
default:
throw new IllegalArgumentException("Invalid time dimension: " + timeDimension);
}
}
private List<String> generateMonthRange() {
List<String> months = new ArrayList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
try {
YearMonth start = YearMonth.parse(startTime, formatter);
YearMonth end = YearMonth.parse(endTime, formatter);
if (start.isAfter(end)) {
YearMonth temp = start;
start = end;
end = temp;
}
YearMonth current = end;
while (!current.isBefore(start)) {
months.add(current.format(formatter));
current = current.minusMonths(1);
}
if (!start.isAfter(end)) {
Collections.reverse(months);
}
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("Invalid month format. Please use yyyy-MM format.");
}
return months;
}
private List<String> generateQuarterRange() {
List<String> quarters = new ArrayList<>();
try {
Quarter start = Quarter.parse(startTime);
Quarter end = Quarter.parse(endTime);
if (start.isAfter(end)) {
Quarter temp = start;
start = end;
end = temp;
}
Quarter current = end;
while (!current.isBefore(start)) {
quarters.add(current.toString());
current = current.previous();
}
if (!start.isAfter(end)) {
Collections.reverse(quarters);
}
} catch (IllegalArgumentException e) {
throw new IllegalArgumentException("Invalid quarter format. Please use yyyy-第x季度 format (e.g. 2024-第一季度).");
}
return quarters;
}
private List<String> generateYearRange() {
List<String> years = new ArrayList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy");
try {
Year start = Year.parse(startTime, formatter);
Year end = Year.parse(endTime, formatter);
if (start.isAfter(end)) {
Year temp = start;
start = end;
end = temp;
}
Year current = end;
while (!current.isBefore(start)) {
years.add(current.format(formatter));
current = current.minusYears(1);
}
if (!start.isAfter(end)) {
Collections.reverse(years);
}
} catch (DateTimeParseException e) {
throw new IllegalArgumentException("Invalid year format. Please use yyyy format.");
}
return years;
}
// Helper class for quarter handling with Chinese characters
private static class Quarter implements Comparable<Quarter> {
private final int year;
private final int quarter;
private static final String[] CHINESE_QUARTERS = {"第一季度", "第二季度", "第三季度", "第四季度"};
private Quarter(int year, int quarter) {
if (quarter < 1 || quarter > 4) {
throw new IllegalArgumentException("Quarter must be between 1 and 4");
}
this.year = year;
this.quarter = quarter;
}
public static Quarter parse(String quarterStr) {
String[] parts = quarterStr.split("-");
if (parts.length != 2 || !parts[1].startsWith("") || !parts[1].endsWith("季度")) {
throw new IllegalArgumentException("Invalid quarter format");
}
int year = Integer.parseInt(parts[0]);
String quarterStrPart = parts[1];
// Find which quarter this matches
int quarter = -1;
for (int i = 0; i < CHINESE_QUARTERS.length; i++) {
if (CHINESE_QUARTERS[i].equals(quarterStrPart)) {
quarter = i + 1;
break;
}
}
if (quarter == -1) {
throw new IllegalArgumentException("Invalid quarter name: " + quarterStrPart);
}
return new Quarter(year, quarter);
}
public Quarter previous() {
if (quarter == 1) {
return new Quarter(year - 1, 4);
} else {
return new Quarter(year, quarter - 1);
}
}
public boolean isBefore(Quarter other) {
if (this.year < other.year) return true;
if (this.year > other.year) return false;
return this.quarter < other.quarter;
}
public boolean isAfter(Quarter other) {
return other.isBefore(this);
}
@Override
public String toString() {
return year + "-" + CHINESE_QUARTERS[quarter - 1];
}
@Override
public int compareTo(Quarter other) {
if (this.year != other.year) {
return Integer.compare(this.year, other.year);
}
return Integer.compare(this.quarter, other.quarter);
}
}
// public static void main(String[] args) {
// // Month example
// Staticsquery monthQuery = new Staticsquery();
// monthQuery.setTimeDimension("月");
// monthQuery.setStartTime("2024-01");
// monthQuery.setEndTime("2024-04");
// System.out.println(monthQuery.generateTimeRange());
// // Output: [2024-01, 2024-02, 2024-03, 2024-04]
//
// // Quarter example
// Staticsquery quarterQuery = new Staticsquery();
// quarterQuery.setTimeDimension("季度");
// quarterQuery.setStartTime("2023-第四季度");
// quarterQuery.setEndTime("2024-第二季度");
// System.out.println(quarterQuery.generateTimeRange());
// // Output: [2023-第4季度, 2024-第1季度, 2024-第2季度]
//
// // Year example
// Staticsquery yearQuery = new Staticsquery();
// yearQuery.setTimeDimension("年");
// yearQuery.setStartTime("2020");
// yearQuery.setEndTime("2024");
// System.out.println(yearQuery.generateTimeRange());
// // Output: [2020, 2021, 2022, 2023, 2024]
// }
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.cms.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class AppNoticeVO {
private Long id;
private String title;
private String subTitle;
private Integer notReadCount;
private Integer isRead;
@JsonFormat(pattern = "MM-dd")
private Date date;
}

View File

@@ -0,0 +1,14 @@
package com.ruoyi.cms.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.cms.domain.AppUser;
import lombok.Data;
import java.util.Date;
@Data
public class CandidateVO extends AppUser {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date applyDate;
private Integer matchingDegree;
}

View File

@@ -0,0 +1,9 @@
package com.ruoyi.cms.domain.vo;
import com.ruoyi.cms.domain.CompanyCard;
import lombok.Data;
@Data
public class CompanyCardVO extends CompanyCard {
private Integer isCollection = 0;
}

View File

@@ -0,0 +1,12 @@
package com.ruoyi.cms.domain.vo;
import lombok.Data;
@Data
public class CompetitivenessResponse {
private Integer totalApplicants; // 总申请人数
private Integer matchScore; // 匹配分数(0-100)
private Integer rank; // 排名
private Integer percentile; // 超过百分比(0-100)
private RadarChart radarChart; // 雷达图6维度数据
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cms.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.cms.domain.Job;
import java.util.Date;
public class JobApplyVO extends Job {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date applyDate;
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cms.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.cms.domain.Job;
import java.util.Date;
public class JobCollectionVO extends Job {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date collectionDate;
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cms.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.cms.domain.Job;
import java.util.Date;
public class JobReviewVO extends Job {
@JsonFormat(pattern = "yyyy-MM-dd")
private Date reviewDate;
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.cms.domain.vo;
import lombok.Data;
@Data
public class RadarChart {
private Integer skill; // 技能(0-100)
private Integer experience; // 工作经验(0-100)
private Integer education; // 学历(0-100)
private Integer salary; // 薪资(0-100)
private Integer age; // 年龄(0-100)
private Integer location; // 工作地(0-100)
}

View File

@@ -0,0 +1,143 @@
//package com.ruoyi.cms.handler;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.nio.ByteBuffer;
//
//import com.alibaba.nls.client.AccessToken;
//import com.alibaba.nls.client.protocol.NlsClient;
//import com.alibaba.nls.client.protocol.OutputFormatEnum;
//import com.alibaba.nls.client.protocol.SampleRateEnum;
//import com.alibaba.nls.client.protocol.tts.SpeechSynthesizer;
//import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerListener;
//import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerResponse;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
///**
// * 此示例演示了:
// * 长文本语音合成API调用setLongText
// * 流式合成TTS。
// * 首包延迟计算。
// *
// * 说明该示例和nls-example-tts下的SpeechSynthesizerLongTextDemo不完全相同长文本语音合成是单独的产品功能是将一长串文本直接发送给服务端去合成
// * 而SpeechSynthesizerLongTextDemo演示的是将一长串文本在调用方处切割然后分段调用语音合成接口。
// */
//public class SpeechLongSynthesizerDemo {
// private static final Logger logger = LoggerFactory.getLogger(SpeechLongSynthesizerDemo.class);
// private static long startTime;
// private String appKey;
// NlsClient client;
// public SpeechLongSynthesizerDemo(String appKey, String token, String url) {
// this.appKey = appKey;
// //创建NlsClient实例应用全局创建一个即可。生命周期可和整个应用保持一致默认服务地址为阿里云线上服务地址。
// if(url.isEmpty()) {
// client = new NlsClient(token);
// } else {
// client = new NlsClient(url, token);
// }
// }
// private static SpeechSynthesizerListener getSynthesizerListener() {
// SpeechSynthesizerListener listener = null;
// try {
// listener = new SpeechSynthesizerListener() {
// File f=new File("ttsForLongText.wav");
// FileOutputStream fout = new FileOutputStream(f);
// private boolean firstRecvBinary = true;
// //语音合成结束
// @Override
// public void onComplete(SpeechSynthesizerResponse response) {
// // 调用onComplete时表示所有TTS数据已经接收完成因此为整个合成数据的延迟。该延迟可能较大不一定满足实时场景。
// System.out.println("name: " + response.getName() + ", status: " + response.getStatus()+", output file :"+f.getAbsolutePath());
// }
// //语音合成的语音二进制数据
// @Override
// public void onMessage(ByteBuffer message) {
// try {
// if(firstRecvBinary) {
// // 此处计算首包语音流的延迟,收到第一包语音流时,即可以进行语音播放,以提升响应速度(特别是实时交互场景下)。
// firstRecvBinary = false;
// long now = System.currentTimeMillis();
// logger.info("tts first latency : " + (now - SpeechLongSynthesizerDemo.startTime) + " ms");
// }
// byte[] bytesArray = new byte[message.remaining()];
// message.get(bytesArray, 0, bytesArray.length);
// //System.out.println("write array:" + bytesArray.length);
// fout.write(bytesArray);
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// @Override
// public void onFail(SpeechSynthesizerResponse response){
// // task_id是调用方和服务端通信的唯一标识当遇到问题时需要提供此task_id以便排查。
// System.out.println(
// "task_id: " + response.getTaskId() +
// //状态码
// ", status: " + response.getStatus() +
// //错误信息
// ", status_text: " + response.getStatusText());
// }
// };
// } catch (Exception e) {
// e.printStackTrace();
// }
// return listener;
// }
// public void process(String text) {
// SpeechSynthesizer synthesizer = null;
// try {
// //创建实例,建立连接。
// synthesizer = new SpeechSynthesizer(client, getSynthesizerListener());
// synthesizer.setAppKey(appKey);
// //设置返回音频的编码格式。
// synthesizer.setFormat(OutputFormatEnum.WAV);
// //设置返回音频的采样率。
// synthesizer.setSampleRate(SampleRateEnum.SAMPLE_RATE_16K);
// //发音人。注意Java SDK不支持调用超高清场景对应的发音人例如"zhiqi"如需调用请使用restfulAPI方式。
// synthesizer.setVoice("siyue");
// //语调,范围是-500~500可选默认是0。
// synthesizer.setPitchRate(0);
// //语速,范围是-500~500默认是0。
// synthesizer.setSpeechRate(0);
// //设置用于语音合成的文本
// // 此处调用的是setLongText接口原语音合成接口是setText
// synthesizer.setLongText(text);
// //此方法将以上参数设置序列化为JSON发送给服务端并等待服务端确认。
// long start = System.currentTimeMillis();
// synthesizer.start();
// logger.info("tts start latency " + (System.currentTimeMillis() - start) + " ms");
// SpeechLongSynthesizerDemo.startTime = System.currentTimeMillis();
// //等待语音合成结束
// synthesizer.waitForComplete();
// logger.info("tts stop latency " + (System.currentTimeMillis() - start) + " ms");
// } catch (Exception e) {
// e.printStackTrace();
// } finally {
// //关闭连接
// if (null != synthesizer) {
// synthesizer.close();
// }
// }
// }
// public void shutdown() {
// client.shutdown();
// }
// public static void main(String[] args) throws Exception {
// AccessToken accessToken = new AccessToken("LTAI5tRBahK93vPNF1JDVEPA", "x95OWb4cV6ccQVtbEJ2Gxm2Uwl2thJ");
// accessToken.apply();
// String token = accessToken.getToken();
// String appKey = "mtA2pwmvCeefHT3Y";
// // url取默认值
// String url = "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1";
//
// String ttsTextLong = "百草堂与三味书屋 鲁迅 \n" +
// "我家的后面有一个很大的园,相传叫作百草园。现在是早已并屋子一起卖给朱文公的子孙了,连那最末次的相见也已经隔了七八年,其中似乎确凿只有一些野草;但那时却是我的乐园。\n" +
// "不必说碧绿的菜畦,光滑的石井栏,高大的皂荚树,紫红的桑葚;也不必说鸣蝉在树叶里长吟,肥胖的黄蜂伏在菜花上,轻捷的叫天子(云雀)忽然从草间直窜向云霄里去了。\n" +
// "单是周围的短短的泥墙根一带,就有无限趣味。油蛉在这里低唱,蟋蟀们在这里弹琴。翻开断砖来,有时会遇见蜈蚣;还有斑蝥,倘若用手指按住它的脊梁,便会啪的一声,\n" +
// "从后窍喷出一阵烟雾。何首乌藤和木莲藤缠络着,木莲有莲房一般的果实,何首乌有臃肿的根。有人说,何首乌根是有像人形的,吃了便可以成仙,我于是常常拔它起来,牵连不断地拔起来,\n" +
// "也曾因此弄坏了泥墙,却从来没有见过有一块根像人样! 如果不怕刺,还可以摘到覆盆子,像小珊瑚珠攒成的小球,又酸又甜,色味都比桑葚要好得远......";
// SpeechLongSynthesizerDemo demo = new SpeechLongSynthesizerDemo(appKey, token, url);
// demo.process(ttsTextLong);
// demo.shutdown();
// }
//}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.cms.handler;
import com.alibaba.nls.client.protocol.asr.SpeechRecognizer;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
@Component
@ServerEndpoint("/speech-recognition")
public class SpeechRecognitionWebSocketHandler {
private SpeechRecognizerAI recognizerDemo;
public SpeechRecognitionWebSocketHandler() {
// 初始化语音识别器
String appKey = "LuvNcrddU3PH8Tau";
String id = "LTAI5tRBahK93vPNF1JDVEPA";
String secret = "x95OWb4cV6ccQVtbEJ2Gxm2Uwl2thJ";
String url = System.getenv().getOrDefault("NLS_GATEWAY_URL", "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1");
recognizerDemo = new SpeechRecognizerAI(appKey, id, secret, url);
}
/**
* 连接建立成功调用的方法
*/
@OnOpen
public void onOpen(Session session) {
System.out.println("WebSocket 连接建立成功sessionId = " + session.getId());
}
/**
* 收到客户端消息后调用的方法
*/
@OnMessage(maxMessageSize=5242880)
public void onMessage(ByteBuffer message, Session session) throws IOException {
byte[] audioData = new byte[message.remaining()];
message.get(audioData);
// 处理音频数据
recognizerDemo.processStream(session, new ByteArrayInputStream(audioData), 16000);
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose(Session session) {
System.out.println("WebSocket 连接关闭sessionId = " + session.getId());
}
/**
* 发生错误时调用的方法
*/
@OnError
public void onError(Session session, Throwable error) {
System.err.println("WebSocket 发生错误:" + error.getMessage());
error.printStackTrace();
}
}

View File

@@ -0,0 +1,117 @@
package com.ruoyi.cms.handler;
import com.alibaba.nls.client.AccessToken;
import com.alibaba.nls.client.protocol.InputFormatEnum;
import com.alibaba.nls.client.protocol.NlsClient;
import com.alibaba.nls.client.protocol.SampleRateEnum;
import com.alibaba.nls.client.protocol.asr.SpeechRecognizer;
import com.alibaba.nls.client.protocol.asr.SpeechRecognizerListener;
import com.alibaba.nls.client.protocol.asr.SpeechRecognizerResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.websocket.Session;
import java.io.IOException;
import java.io.InputStream;
public class SpeechRecognizerAI {
private static final Logger logger = LoggerFactory.getLogger(SpeechRecognizerAI.class);
private String appKey;
private NlsClient client;
public SpeechRecognizerAI(String appKey, String id, String secret, String url) {
this.appKey = appKey;
// 获取 AccessToken
AccessToken accessToken = new AccessToken(id, secret);
try {
accessToken.apply(); // 申请 Token
logger.info("Token: {}, Expire Time: {}", accessToken.getToken(), accessToken.getExpireTime());
// 初始化 NlsClient
if (url.isEmpty()) {
this.client = new NlsClient(accessToken.getToken()); // 使用默认服务地址
} else {
this.client = new NlsClient(url, accessToken.getToken()); // 使用自定义服务地址
}
} catch (IOException e) {
logger.error("Failed to initialize NlsClient: {}", e.getMessage());
}
}
public void processStream(Session session, InputStream inputStream, int sampleRate) {
SpeechRecognizer recognizer = null;
try {
// 创建 SpeechRecognizer 实例
recognizer = new SpeechRecognizer(client, new SpeechRecognizerListener() {
@Override
public void onRecognitionResultChanged(SpeechRecognizerResponse response) {
// 打印中间识别结果
String text = response.getRecognizedText();
logger.info("中间识别结果: {}", text);
sendResult(session, text,false);
}
@Override
public void onRecognitionCompleted(SpeechRecognizerResponse response) {
// 打印最终识别结果
String text = response.getRecognizedText();
logger.info("最终识别结果: {}", text);
sendResult(session, text,true);
}
@Override
public void onStarted(SpeechRecognizerResponse response) {
logger.info("识别开始, TaskId: {}", response.getTaskId());
}
@Override
public void onFail(SpeechRecognizerResponse response) {
logger.error("识别失败: {}", response.getStatusText());
}
});
// 设置语音识别参数
recognizer.setAppKey(appKey);
recognizer.setFormat(InputFormatEnum.PCM);
recognizer.setSampleRate(sampleRate == 16000 ?
SampleRateEnum.SAMPLE_RATE_16K : SampleRateEnum.SAMPLE_RATE_8K);
recognizer.setEnableIntermediateResult(true);
recognizer.addCustomedParam("enable_voice_detection", true);
// 启动识别
recognizer.start();
// 读取音频流并发送
byte[] buffer = new byte[3200];
int len;
while ((len = inputStream.read(buffer)) > 0) {
recognizer.send(buffer, len);
}
// 停止识别
recognizer.stop();
} catch (Exception e) {
logger.error("处理音频流时出错: {}", e.getMessage());
} finally {
if (recognizer != null) {
recognizer.close();
}
}
}
private void sendResult(Session session, String text,Boolean asrEnd) {
try {
session.getBasicRemote().sendText("{\"text\": \"" + text + "\",\"asrEnd\":\"" + asrEnd + "\"}");
} catch (IOException e) {
logger.error("发送识别结果失败: {}", e.getMessage());
}
}
public void shutdown() {
if (client != null) {
client.shutdown();
}
}
}

View File

@@ -0,0 +1,145 @@
package com.ruoyi.cms.handler;
import com.alibaba.nls.client.AccessToken;
import com.alibaba.nls.client.protocol.NlsClient;
import com.alibaba.nls.client.protocol.OutputFormatEnum;
import com.alibaba.nls.client.protocol.SampleRateEnum;
import com.alibaba.nls.client.protocol.tts.SpeechSynthesizer;
import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerListener;
import com.alibaba.nls.client.protocol.tts.SpeechSynthesizerResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.nio.ByteBuffer;
@Component
@ServerEndpoint("/speech-synthesis")
public class SpeechSynthesisWebSocketHandler {
private static final Logger logger = LoggerFactory.getLogger(SpeechSynthesisWebSocketHandler.class);
private NlsClient client;
private String appKey = "mtA2pwmvCeefHT3Y";
private String accessKeyId = "LTAI5tRBahK93vPNF1JDVEPA";
private String accessKeySecret = "x95OWb4cV6ccQVtbEJ2Gxm2Uwl2thJ";
private String url = "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1";
public SpeechSynthesisWebSocketHandler() {
// Initialize NLS client with token
AccessToken accessToken = new AccessToken(accessKeyId, accessKeySecret);
try {
accessToken.apply();
String token = accessToken.getToken();
if(url.isEmpty()) {
this.client = new NlsClient(token);
} else {
this.client = new NlsClient(url, token);
}
} catch (Exception e) {
logger.error("Failed to initialize NLS client", e);
}
}
@OnOpen
public void onOpen(Session session) {
logger.info("WebSocket connected for speech synthesis, sessionId: {}", session.getId());
}
@OnMessage(maxMessageSize=5242880)
public void onMessage(String text, Session session) {
logger.info("Received text for synthesis: {}", text);
SpeechSynthesizer synthesizer = null;
try {
// Create synthesizer with a session-specific listener
synthesizer = new SpeechSynthesizer(client, createSynthesizerListener(session));
// Configure synthesizer
synthesizer.setAppKey(appKey);
synthesizer.setFormat(OutputFormatEnum.WAV);
synthesizer.setSampleRate(SampleRateEnum.SAMPLE_RATE_16K);
synthesizer.setVoice("aiqi");
synthesizer.setPitchRate(0);
synthesizer.setSpeechRate(0);
// Use long text synthesis
synthesizer.setLongText(text);
// Start synthesis
synthesizer.start();
} catch (Exception e) {
logger.error("Error during speech synthesis", e);
try {
session.close(new CloseReason(CloseReason.CloseCodes.UNEXPECTED_CONDITION, "Synthesis error"));
} catch (IOException ioException) {
logger.error("Error closing session", ioException);
}
} finally {
// Note: We can't close the synthesizer here because synthesis is async
// It should be closed in the listener's onComplete/onFail methods
}
}
@OnClose
public void onClose(Session session) {
logger.info("WebSocket closed for speech synthesis, sessionId: {}", session.getId());
}
@OnError
public void onError(Session session, Throwable error) {
logger.error("WebSocket error for session {}: {}", session.getId(), error.getMessage(), error);
}
private SpeechSynthesizerListener createSynthesizerListener(Session session) {
return new SpeechSynthesizerListener() {
private boolean firstRecvBinary = true;
private long startTime;
@Override
public void onComplete(SpeechSynthesizerResponse response) {
logger.info("Synthesis completed for session {}, status: {}", session.getId(), response.getStatus());
try {
// Send a close message or marker to indicate completion
session.getBasicRemote().sendText("{\"status\":\"complete\"}");
} catch (IOException e) {
logger.error("Error sending completion message", e);
}
}
@Override
public void onMessage(ByteBuffer message) {
try {
if (firstRecvBinary) {
firstRecvBinary = false;
startTime = System.currentTimeMillis();
logger.info("First audio packet received for session {}", session.getId());
}
// Send audio data to client
byte[] bytesArray = new byte[message.remaining()];
message.get(bytesArray, 0, bytesArray.length);
session.getBasicRemote().sendBinary(ByteBuffer.wrap(bytesArray));
} catch (IOException e) {
logger.error("Error sending audio data to client", e);
}
}
@Override
public void onFail(SpeechSynthesizerResponse response) {
logger.error("Synthesis failed for session {}: task_id: {}, status: {}, status_text: {}",
session.getId(), response.getTaskId(), response.getStatus(), response.getStatusText());
try {
session.close(new CloseReason(CloseReason.CloseCodes.UNEXPECTED_CONDITION,
"Synthesis failed: " + response.getStatusText()));
} catch (IOException e) {
logger.error("Error closing failed session", e);
}
}
};
}
}

View File

@@ -0,0 +1,83 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Real-time Speech Recognition</title>
</head>
<body>
<button id="start">Start Recording</button>
<button id="stop" disabled>Stop Recording</button>
<div id="output"></div>
<script>
const startButton = document.getElementById('start');
const stopButton = document.getElementById('stop');
const outputDiv = document.getElementById('output');
let mediaRecorder;
let socket;
// 初始化 WebSocket
function initWebSocket() {
socket = new WebSocket('ws://127.0.0.1:8080/speech-recognition'); // 确保端口正确
socket.onopen = () => {
console.log('WebSocket connection established');
startButton.disabled = false;
};
socket.onmessage = (event) => {
const result = JSON.parse(event.data);
outputDiv.innerHTML += `<p>${result.text}</p>`;
};
socket.onclose = () => {
console.log('WebSocket connection closed');
// 尝试重连
setTimeout(() => {
console.log('Reconnecting WebSocket...');
initWebSocket();
}, 3000); // 3 秒后重连
};
socket.onerror = (error) => {
console.error('WebSocket error:', error);
};
}
// 开始录音
startButton.addEventListener('click', async () => {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/webm; codecs=opus' }); // 使用 Opus 编码
mediaRecorder.ondataavailable = (event) => {
if (event.data.size > 0) {
const reader = new FileReader();
reader.onload = () => {
if (socket.readyState === WebSocket.OPEN) { // 检查 WebSocket 状态
const audioData = reader.result;
socket.send(audioData); // 发送音频数据
} else {
console.error('WebSocket is not open. Current state:', socket.readyState);
}
};
reader.readAsArrayBuffer(event.data);
}
};
mediaRecorder.start(1000); // 每 1 秒发送一次数据
startButton.disabled = true;
stopButton.disabled = false;
});
// 停止录音
stopButton.addEventListener('click', () => {
mediaRecorder.stop();
startButton.disabled = false;
stopButton.disabled = true;
});
// 初始化 WebSocket
initWebSocket();
</script>
</body>
</html>

View File

@@ -0,0 +1,69 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.AppNotice;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobFair;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 通知公告表 数据层
*
* @author ruoyi
*/
public interface AppNoticeMapper extends BaseMapper<AppNotice>
{
/**
* 查询公告信息
*
* @param noticeId 公告ID
* @return 公告信息
*/
public AppNotice selectNoticeById(Long noticeId);
/**
* 查询公告列表
*
* @param notice 公告信息
* @return 公告集合
*/
public List<AppNotice> selectNoticeList(AppNotice notice);
/**
* 新增公告
*
* @param notice 公告信息
* @return 结果
*/
public int insertNotice(AppNotice notice);
/**
* 修改公告
*
* @param notice 公告信息
* @return 结果
*/
public int updateNotice(AppNotice notice);
/**
* 批量删除公告
*
* @param noticeId 公告ID
* @return 结果
*/
public int deleteNoticeById(Long noticeId);
/**
* 批量删除公告信息
*
* @param noticeIds 需要删除的公告ID
* @return 结果
*/
public int deleteNoticeByIds(Long[] noticeIds);
List<Job> recommend(@Param("jobTitle")String jobTitle,@Param("userId") Long userId);
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.AppReviewJob;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.query.MineJobQuery;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户岗位浏览记录Mapper接口
* @author ${author}
* @date 2025-02-14
*/
public interface AppReviewJobMapper extends BaseMapper<AppReviewJob>
{
/**
* 查询用户岗位浏览记录列表
*
* @param appReviewJob 用户岗位浏览记录
* @return 用户岗位浏览记录集合
*/
public List<AppReviewJob> selectAppReviewJobList(AppReviewJob appReviewJob);
List<Job> review(@Param("userId")Long userId, @Param("jobQuery") MineJobQuery jobQuery);
List<AppReviewJob> reviewArray(Long userId);
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.AppUser;
/**
* APP用户Mapper接口
* @author lishundong
* @date 2024-09-03
*/
public interface AppUserMapper extends BaseMapper<AppUser>
{
/**
* 查询APP用户列表
*
* @param appUser APP用户
* @return APP用户集合
*/
public List<AppUser> selectAppUserList(AppUser appUser);
}

View File

@@ -0,0 +1,97 @@
package com.ruoyi.cms.mapper;
import com.ruoyi.cms.domain.BussinessDictData;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 字典表 数据层
*
* @author ruoyi
*/
public interface BussinessDictDataMapper
{
/**
* 根据条件分页查询字典数据
*
* @param dictData 字典数据信息
* @return 字典数据集合信息
*/
public List<BussinessDictData> selectDictDataList(BussinessDictData dictData);
/**
* 根据字典类型查询字典数据
*
* @param dictType 字典类型
* @return 字典数据集合信息
*/
public List<BussinessDictData> selectDictDataByType(String dictType);
/**
* 根据字典类型和字典键值查询字典数据信息
*
* @param dictType 字典类型
* @param dictValue 字典键值
* @return 字典标签
*/
public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
/**
* 根据字典数据ID查询信息
*
* @param dictCode 字典数据ID
* @return 字典数据
*/
public BussinessDictData selectDictDataById(Long dictCode);
/**
* 查询字典数据
*
* @param dictType 字典类型
* @return 字典数据
*/
public int countDictDataByType(String dictType);
/**
* 通过字典ID删除字典数据信息
*
* @param dictCode 字典数据ID
* @return 结果
*/
public int deleteDictDataById(Long dictCode);
/**
* 批量删除字典数据信息
*
* @param dictCodes 需要删除的字典数据ID
* @return 结果
*/
public int deleteDictDataByIds(Long[] dictCodes);
/**
* 新增字典数据信息
*
* @param dictData 字典数据信息
* @return 结果
*/
public int insertDictData(BussinessDictData dictData);
/**
* 修改字典数据信息
*
* @param dictData 字典数据信息
* @return 结果
*/
public int updateDictData(BussinessDictData dictData);
/**
* 同步修改字典类型
*
* @param oldDictType 旧字典类型
* @param newDictType 新旧字典类型
* @return 结果
*/
public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
}

View File

@@ -0,0 +1,86 @@
package com.ruoyi.cms.mapper;
import com.ruoyi.cms.domain.BussinessDictType;
import java.util.List;
/**
* 字典表 数据层
*
* @author ruoyi
*/
public interface BussinessDictTypeMapper
{
/**
* 根据条件分页查询字典类型
*
* @param dictType 字典类型信息
* @return 字典类型集合信息
*/
public List<BussinessDictType> selectDictTypeList(BussinessDictType dictType);
/**
* 根据所有字典类型
*
* @return 字典类型集合信息
*/
public List<BussinessDictType> selectDictTypeAll();
/**
* 根据字典类型ID查询信息
*
* @param dictId 字典类型ID
* @return 字典类型
*/
public BussinessDictType selectDictTypeById(Long dictId);
/**
* 根据字典类型查询信息
*
* @param dictType 字典类型
* @return 字典类型
*/
public BussinessDictType selectDictTypeByType(String dictType);
/**
* 通过字典ID删除字典信息
*
* @param dictId 字典ID
* @return 结果
*/
public int deleteDictTypeById(Long dictId);
/**
* 批量删除字典类型信息
*
* @param dictIds 需要删除的字典ID
* @return 结果
*/
public int deleteDictTypeByIds(Long[] dictIds);
/**
* 新增字典类型信息
*
* @param dictType 字典类型信息
* @return 结果
*/
public int insertDictType(BussinessDictType dictType);
/**
* 修改字典类型信息
*
* @param dictType 字典类型信息
* @return 结果
*/
public int updateDictType(BussinessDictType dictType);
/**
* 校验字典类型称是否唯一
*
* @param dictType 字典类型
* @return 结果
*/
public BussinessDictType checkDictTypeUnique(String dictType);
}

View File

@@ -0,0 +1,49 @@
package com.ruoyi.cms.mapper;
import com.ruoyi.cms.domain.BussinessOperLog;
import java.util.List;
/**
* 操作日志 数据层
*
* @author ruoyi
*/
public interface BussinessOperLogMapper
{
/**
* 新增操作日志
*
* @param operLog 操作日志对象
*/
public void insertOperlog(BussinessOperLog operLog);
/**
* 查询系统操作日志集合
*
* @param operLog 操作日志对象
* @return 操作日志集合
*/
public List<BussinessOperLog> selectOperLogList(BussinessOperLog operLog);
/**
* 批量删除系统操作日志
*
* @param operIds 需要删除的操作日志ID
* @return 结果
*/
public int deleteOperLogByIds(Long[] operIds);
/**
* 查询操作日志详细
*
* @param operId 操作ID
* @return 操作日志对象
*/
public BussinessOperLog selectOperLogById(Long operId);
/**
* 清空操作日志
*/
public void cleanOperLog();
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.CommercialArea;
/**
* 商圈Mapper接口
* @author Lishundong
* @date 2024-11-12
*/
public interface CommercialAreaMapper extends BaseMapper<CommercialArea>
{
/**
* 查询商圈列表
*
* @param commercialArea 商圈
* @return 商圈集合
*/
public List<CommercialArea> selectCommercialAreaList(CommercialArea commercialArea);
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.CompanyCardCollection;
/**
* 公司卡片收藏Mapper接口
* @author ${author}
* @date 2025-02-18
*/
public interface CompanyCardCollectionMapper extends BaseMapper<CompanyCardCollection>
{
/**
* 查询公司卡片收藏列表
*
* @param companyCardCollection 公司卡片收藏
* @return 公司卡片收藏集合
*/
public List<CompanyCardCollection> selectCompanyCardCollectionList(CompanyCardCollection companyCardCollection);
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.CompanyCard;
import com.ruoyi.cms.domain.vo.CompanyCardVO;
import java.util.List;
/**
* 公司卡片Mapper接口
* @author ${author}
* @date 2025-02-18
*/
public interface CompanyCardMapper extends BaseMapper<CompanyCard>
{
/**
* 查询公司卡片列表
*
* @param companyCard 公司卡片
* @return 公司卡片集合
*/
public List<CompanyCard> selectCompanyCardList(CompanyCard companyCard);
List<CompanyCardVO> selectCompanyCardListVO(CompanyCard companyCard);
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.Company;
import com.ruoyi.cms.domain.CompanyCollection;
/**
* 用户公司收藏Mapper接口
* @author lishundong
* @date 2024-09-04
*/
public interface CompanyCollectionMapper extends BaseMapper<CompanyCollection>
{
/**
* 查询用户公司收藏列表
*
* @param companyCollection 用户公司收藏
* @return 用户公司收藏集合
*/
public List<CompanyCollection> selectCompanyCollectionList(CompanyCollection companyCollection);
List<Company> collectionJob(Long userId);
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.CompanyLabel;
public interface CompanyLabelMapper extends BaseMapper<CompanyLabel>
{
}

View File

@@ -0,0 +1,28 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.Company;
import org.apache.ibatis.annotations.Param;
/**
* 公司Mapper接口
* @author lishundong
* @date 2024-09-04
*/
public interface CompanyMapper extends BaseMapper<Company>
{
/**
* 查询公司列表
*
* @param company 公司
* @return 公司集合
*/
public List<Company> selectCompanyList(Company company);
void batchInsert(List<Company> companyBatch);
void updateJobCountOfCompany();
List<Company> label(@Param("companyNature") String companyNature, @Param("targ")String targ,@Param("companyName")String companyName);
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.FairCollection;
import com.ruoyi.cms.domain.JobCollection;
import com.ruoyi.cms.domain.JobFair;
import java.util.List;
/**
* 用户招聘会收藏Mapper接口
* @author lishundong
* @date 2024-09-03
*/
public interface FairCollectionMapper extends BaseMapper<FairCollection>
{
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.FairCompany;
/**
* 公司招聘会关联Mapper接口
* @author lishundong
* @date 2024-09-04
*/
public interface FairCompanyMapper extends BaseMapper<FairCompany>
{
/**
* 查询公司招聘会关联列表
*
* @param fairCompany 公司招聘会关联
* @return 公司招聘会关联集合
*/
public List<FairCompany> selectFairCompanyList(FairCompany fairCompany);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.File;
import java.util.List;
/**
* 文件Mapper接口
* @author ${author}
* @date 2025-03-18
*/
public interface FileMapper extends BaseMapper<File>
{
/**
* 查询文件列表
*
* @param file 文件
* @return 文件集合
*/
public List<File> selectFileList(File file);
}

View File

@@ -0,0 +1,22 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.core.domain.entity.Industry;
import java.util.List;
/**
* 行业Mapper接口
* @author LishunDong
* @date 2024-11-12
*/
public interface IndustryMapper extends BaseMapper<Industry>
{
/**
* 查询行业列表
*
* @param industry 行业
* @return 行业集合
*/
public List<Industry> selectIndustryList(Industry industry);
}

View File

@@ -0,0 +1,29 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobApply;
import com.ruoyi.cms.domain.vo.CandidateVO;
/**
* 岗位申请Mapper接口
* @author lishundong
* @date 2024-09-04
*/
public interface JobApplyMapper extends BaseMapper<JobApply>
{
/**
* 查询岗位申请列表
*
* @param jobApply 岗位申请
* @return 岗位申请集合
*/
public List<JobApply> selectJobApplyList(JobApply jobApply);
//todo
List<Job> applyJob(Long userId);
List<CandidateVO> candidates(Long jobId);
}

View File

@@ -0,0 +1,25 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobCollection;
/**
* 用户岗位收藏Mapper接口
* @author lishundong
* @date 2024-09-03
*/
public interface JobCollectionMapper extends BaseMapper<JobCollection>
{
/**
* 查询用户岗位收藏列表
*
* @param jobCollection 用户岗位收藏
* @return 用户岗位收藏集合
*/
public List<JobCollection> selectJobCollectionList(JobCollection jobCollection);
List<Job> collectionJob(Long userId);
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.JobFair;
import org.apache.ibatis.annotations.Param;
/**
* 招聘会信息Mapper接口
* @author lishundong
* @date 2024-09-04
*/
public interface JobFairMapper extends BaseMapper<JobFair>
{
/**
* 查询招聘会信息列表
*
* @param jobFair 招聘会信息
* @return 招聘会信息集合
*/
public List<JobFair> selectJobFairList(JobFair jobFair);
List<JobFair> appList(JobFair jobFair);
List<JobFair> selectAppList(@Param("userId")Long userId, @Param("type")Integer type);
}

View File

@@ -0,0 +1,53 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.ruoyi.cms.domain.Company;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.RowWork;
import com.ruoyi.cms.domain.VectorJob;
import com.ruoyi.cms.domain.query.ESJobSearch;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.repository.query.Param;
/**
* 岗位Mapper接口
* @author lishundong
* @date 2024-09-03
*/
public interface JobMapper extends BaseMapper<Job>
{
/**
* 查询岗位列表
*
* @param job 岗位
* @return 岗位集合
*/
public List<Job> selectJobList(Job job);
void isHot();
List<Job> selectAppJobList(ESJobSearch jobQuery);
void insertBatchRowWork(RowWork rowWorks);
List<RowWork> selectAllRowWork();
List<Company> selectRowCompany();
void batchInsert(List<Job> jobBatch);
List<Job> selectAllJob(Map<String, Object> params);
void insertBatchRowWork(List<RowWork> batchList);
List<RowWork> selectAllInsertRowWork();
void insertBatchRowWorkTmp(List<RowWork> batchList);
VectorJob selectVectorJob(Long jobId);
}

View File

@@ -0,0 +1,20 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobCollection;
import com.ruoyi.cms.domain.JobRecomment;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户岗位收藏Mapper接口
* @author lishundong
* @date 2024-09-03
*/
public interface JobRecommentMapper extends BaseMapper<JobRecomment>
{
void recommendJobForUser(@Param("userId") Long userId);
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.common.core.domain.entity.JobTitle;
/**
* 岗位Mapper接口
* @author Lishundong
* @date 2024-11-12
*/
public interface JobTitleMapper extends BaseMapper<JobTitle>
{
/**
* 查询岗位列表
*
* @param jobTitle 岗位
* @return 岗位集合
*/
public List<JobTitle> selectJobTitleList(JobTitle jobTitle);
}

View File

@@ -0,0 +1,10 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.Notice;
public interface NoticeMapper extends BaseMapper<Notice>
{
}

View File

@@ -0,0 +1,10 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.Statics;
public interface StaticsMapper extends BaseMapper<Statics>
{
}

View File

@@ -0,0 +1,23 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.SubwayLine;
/**
* 地铁线路Mapper接口
* @author Lishundong
* @date 2024-11-12
*/
public interface SubwayLineMapper extends BaseMapper<SubwayLine>
{
/**
* 查询地铁线路列表
*
* @param subwayLine 地铁线路
* @return 地铁线路集合
*/
public List<SubwayLine> selectSubwayLineList(SubwayLine subwayLine);
List<SubwayLine> appSubway();
}

View File

@@ -0,0 +1,21 @@
package com.ruoyi.cms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import com.ruoyi.cms.domain.SubwayStation;
/**
* 地铁站点Mapper接口
* @author Lishundong
* @date 2024-11-12
*/
public interface SubwayStationMapper extends BaseMapper<SubwayStation>
{
/**
* 查询地铁站点列表
*
* @param subwayStation 地铁站点
* @return 地铁站点集合
*/
public List<SubwayStation> selectSubwayStationList(SubwayStation subwayStation);
}

View File

@@ -0,0 +1,13 @@
package com.ruoyi.cms.mapper.es;
import com.ruoyi.cms.domain.ESJobDocument;
import org.dromara.easyes.core.kernel.BaseEsMapper;
/**
* 全文索引检索实体
*
* @author ruoyi
*/
public interface EsJobDocumentMapper extends BaseEsMapper<ESJobDocument>
{
}

View File

@@ -0,0 +1,79 @@
package com.ruoyi.cms.service;
import com.ruoyi.cms.domain.AppNotice;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.Notice;
import com.ruoyi.cms.domain.vo.AppNoticeVO;
import java.util.List;
/**
* 公告 服务层
*
* @author ruoyi
*/
public interface IAppNoticeService
{
/**
* 查询公告信息
*
* @param noticeId 公告ID
* @return 公告信息
*/
public AppNotice selectNoticeById(Long noticeId);
/**
* 查询公告列表
*
* @param notice 公告信息
* @return 公告集合
*/
public List<AppNotice> selectNoticeList(AppNotice notice);
/**
* 新增公告
*
* @param notice 公告信息
* @return 结果
*/
public int insertNotice(AppNotice notice);
/**
* 修改公告
*
* @param notice 公告信息
* @return 结果
*/
public int updateNotice(AppNotice notice);
/**
* 删除公告信息
*
* @param noticeId 公告ID
* @return 结果
*/
public int deleteNoticeById(Long noticeId);
/**
* 批量删除公告信息
*
* @param noticeIds 需要删除的公告ID
* @return 结果
*/
public int deleteNoticeByIds(Long[] noticeIds);
List<Notice> listNotRead(Integer isRead);
List<Job> recommend(String jobTitle);
void sysNotice(String ids);
void read(String ids);
List<Notice> sysNoticeList();
void recommendJobCron();
void fairCompanyCron();
}

View File

@@ -0,0 +1,62 @@
package com.ruoyi.cms.service;
import com.ruoyi.cms.domain.AppReviewJob;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.query.MineJobQuery;
import java.util.List;
/**
* 用户岗位浏览记录Service接口
*
* @author ${author}
* @date 2025-02-14
*/
public interface IAppReviewJobService
{
/**
* 查询用户岗位浏览记录
*
* @param id 用户岗位浏览记录主键
* @return 用户岗位浏览记录
*/
public AppReviewJob selectAppReviewJobById(Long id);
/**
* 查询用户岗位浏览记录列表
*
* @param appReviewJob 用户岗位浏览记录
* @return 用户岗位浏览记录集合
*/
public List<AppReviewJob> selectAppReviewJobList(AppReviewJob appReviewJob);
/**
* 新增用户岗位浏览记录
*
* @param appReviewJob 用户岗位浏览记录
* @return 结果
*/
public int insertAppReviewJob(AppReviewJob appReviewJob);
/**
* 修改用户岗位浏览记录
*
* @param appReviewJob 用户岗位浏览记录
* @return 结果
*/
public int updateAppReviewJob(AppReviewJob appReviewJob);
/**
* 批量删除用户岗位浏览记录
*
* @param ids 需要删除的用户岗位浏览记录主键集合
* @return 结果
*/
public int deleteAppReviewJobByIds(Long[] ids);
List<Job> review(MineJobQuery jobQuery);
List<String> reviewArray();
}

View File

@@ -0,0 +1,54 @@
package com.ruoyi.cms.service;
import java.util.List;
import com.ruoyi.cms.domain.AppUser;
/**
* APP用户Service接口
*
* @author lishundong
* @date 2024-09-03
*/
public interface IAppUserService
{
/**
* 查询APP用户
*
* @param userId APP用户主键
* @return APP用户
*/
public AppUser selectAppUserByUserId(Long userId);
/**
* 查询APP用户列表
*
* @param appUser APP用户
* @return APP用户集合
*/
public List<AppUser> selectAppUserList(AppUser appUser);
/**
* 新增APP用户
*
* @param appUser APP用户
* @return 结果
*/
public int insertAppUser(AppUser appUser);
/**
* 修改APP用户
*
* @param appUser APP用户
* @return 结果
*/
public int updateAppUser(AppUser appUser);
/**
* 批量删除APP用户
*
* @param userIds 需要删除的APP用户主键集合
* @return 结果
*/
public int deleteAppUserByUserIds(Long[] userIds);
}

Some files were not shown because too many files have changed in this diff Show More