招聘子模块-代码编写
1 业务分析
招聘微服务主要有两块:企业信息和招聘信息
需要些的功能对应API:
- 热门企业列表
/enterprise/search/hotlist 热门企业列表
- 推荐职位列表
/recruit/search/recommend 推荐职位
- 最新职位列表
/recruit/search/newlist 最新职位
2 数据库表结构
2.1 建表sql语句
CREATE DATABASE /*!32312 IF NOT EXISTS*/`tensquare_recruit` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `tensquare_recruit`;
/*Table structure for table `tb_enterprise` */
DROP TABLE IF EXISTS `tb_enterprise`;
CREATE TABLE `tb_enterprise` (
`id` varchar(20) NOT NULL COMMENT 'ID',
`name` varchar(100) DEFAULT NULL COMMENT '企业名称',
`summary` varchar(1000) DEFAULT NULL COMMENT '企业简介',
`address` varchar(100) DEFAULT NULL COMMENT '企业地址',
`labels` varchar(100) DEFAULT NULL COMMENT '标签列表',
`coordinate` varchar(100) DEFAULT NULL COMMENT '坐标',
`ishot` varchar(1) DEFAULT NULL COMMENT '是否热门',
`logo` varchar(100) DEFAULT NULL COMMENT 'LOGO',
`jobcount` int DEFAULT NULL COMMENT '职位数',
`url` varchar(100) DEFAULT NULL COMMENT 'URL',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='企业';
/*Data for the table `tb_enterprise` */
insert into `tb_enterprise`(`id`,`name`,`summary`,`address`,`labels`,`coordinate`,`ishot`) values ('','传智播客','国内著名IT教育机构','金燕龙办公楼','IT 培训','1019,2223','1');
insert into `tb_enterprise`(`id`,`name`,`summary`,`address`,`labels`,`coordinate`,`ishot`) values ('2','小米','手机厂商','中关村软件园','手机','0211,3333','0');
/*Table structure for table `tb_recruit` */
DROP TABLE IF EXISTS `tb_recruit`;
CREATE TABLE `tb_recruit` (
`id` varchar(20) NOT NULL COMMENT 'ID',
`jobname` varchar(100) DEFAULT NULL COMMENT '职位名称',
`salary` varchar(100) DEFAULT NULL COMMENT '薪资范围',
`condition` varchar(100) DEFAULT NULL COMMENT '经验要求',
`education` varchar(100) DEFAULT NULL COMMENT '学历要求',
`type` varchar(1) DEFAULT NULL COMMENT '任职方式',
`address` varchar(100) DEFAULT NULL COMMENT '办公地址',
`eid` varchar(20) DEFAULT NULL COMMENT '企业ID',
`createtime` datetime DEFAULT NULL COMMENT '创建日期',
`state` varchar(1) DEFAULT NULL COMMENT '状态',
`url` varchar(100) DEFAULT NULL COMMENT '网址',
`label` varchar(100) DEFAULT NULL COMMENT '标签',
`content1` varchar(100) DEFAULT NULL COMMENT '职位描述',
`content2` varchar(100) DEFAULT NULL COMMENT '职位要求',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='职位';
/*Data for the table `tb_recruit` */
insert into `tb_recruit`(`id`,`jobname`,`salary`,`condition`,`education`,`type`,`address`,`eid`,`createtime`,`state`,`url`) values ('','大数据工程师','20000-30000','八年以上开发经验','本科','1','国贸','1','2018-01-06 16:21:12','1',NULL);
insert into `tb_recruit`(`id`,`jobname`,`salary`,`condition`,`education`,`type`,`address`,`eid`,`createtime`,`state`,`url`) values ('1','java开发工程师','15000-20000','五年以上开发经验','本科','1','中关村软件园','1','2018-01-05 15:38:05','1','http://www.baidu.com');
insert into `tb_recruit`(`id`,`jobname`,`salary`,`condition`,`education`,`type`,`address`,`eid`,`createtime`,`state`,`url`) values ('2','php开发工程师','4000-6000','一年以上开发经验','专科','1','王府街宏福创业园','1','2018-01-07 16:10:20','1','http://www.baidu.com');
insert into `tb_recruit`(`id`,`jobname`,`salary`,`condition`,`education`,`type`,`address`,`eid`,`createtime`,`state`,`url`) values ('3','.net开发工程师','2000-3000','一年以上开发经验','专科','1','大望路','1','2018-01-06 16:20:27','2',NULL);
insert into `tb_recruit`(`id`,`jobname`,`salary`,`condition`,`education`,`type`,`address`,`eid`,`createtime`,`state`,`url`) values ('5','前端开发工程师','8000-12000','三年以上开发经验','本科','1','上地','1','2018-01-18 16:22:11','2',NULL);
2.2 表结构分析
- 企业表
企业表 tb_enterprise 字段名称 字段含义 字段类型 备注 id ID 文本 name 企业名称 文本 summary 企业简介 文本 address 企业地址 文本 labels 标签列表 文本 用逗号分隔 coordinate 企业位置坐标 文本 经度,纬度 ishot 是否热门 文本 0:非热门 1:热门 logo LOGO 文本 jobcount 职位数 数字 url URL 文本 - 职位表
招聘信息表 tb_recruit 字段名称 字段含义 字段类型 备注 id ID 文本 jobname 招聘职位 文本 salary 薪资范围 文本 condition 经验要求 文本 education 学历要求 文本 type 任职方式 文本 address 办公地址 文本 eid 企业ID 文本 createtime 发布日期 日期 state 状态 文本 0:关闭 1:开启 2:推荐 url 原网址 文本 label 标签 文本 content1 职位描述 文本 content2 职位要求 文本
3 需要写的业务模块
3.1 热门企业列表
需求:查询企业表ishot字段为1的记录
- EnterpriseDao新增方法定义
- 添加findByIshot()方法,参数是ishot(0:非热门 1:热门)
public interface EnterpriseDao extends JpaRepository<Enterprise, String>, JpaSpecificationExecutor<Enterprise> { /** * 热门企业 * @param ishot * @return */ public List<Enterprise> findByIshot(String ishot);//where ishot=? } - EnterpriseService新增方法
...... /** * 热门企业列表 * @param ishot * @return */ public List<Enterprise> hotList(String ishot){ return enterpriseDao.findByIshot(ishot); } ...... - EnterpriseController新增方法
...... /** * 查询热门企业 /enterprise/search/hotlist 热门企业列表 * @return */ @GetMapping("/search/hotlist") public Result hotList(){ List<Enterprise> list = enterpriseService.hotList("1"); return new Result(true,StatusCode.OK,"查询成功",list); } ...... - 测试 http://localhost:9002/enterprise/search/hotlist
3.2 推荐职位列表
需求分析:查询状态为2并以创建日期降序排序,查询前6条记录
- 在RecruitDao新增方法定义
/** * 查询最新职位列表(按创建日期降序排序) * @param state * @return */ public List<Recruit> findTop6ByStateOrderByCreatetimeDesc(String state);//where state=? order by recruit - RecruitService新增方法
...... /** * 根据状态查询职位,时间排序 * @return */ public List<Recruit> recommend() { return recruitDao.findTop6ByStateOrderByCreatetimeDesc("2"); } ...... - RecruitController新增方法
...... /** * 推荐职位 * @return */ @GetMapping("/search/recommend") public Result recommend() { return new Result(true, StatusCode.OK, "查询成功", recruitService.recommend()); } ...... - 测试: http://localhost:9002/recruit/search/recommend
3.3 最新职位列表
需求分析:查询状态不为0并以创建日期降序排序,查询前6条记录
- 在RecruitDao新增方法定义
...... /** * 查询最新职位 * @param state * @return */ public List<Recruit> findTop6ByStateNotOrderByCreatetimeDesc(String state);//where state !=? order by recruit ...... - RecruitService新增方法
...... /** * 查询最新职位 * @return */ public List<Recruit> newList() { return recruitDao.findTop6ByStateNotOrderByCreatetimeDesc("0"); } ...... - RecruitController新增方法
...... /** * 最新职位 * @return */ @GetMapping("/search/newlist") public Result newList() { return new Result(true, StatusCode.OK, "查询成功", recruitService.newList()); } ...... - 测试:http://localhost:9002/recruit/search/newlist
十次方00、目录
https://blog.youkuaiyun.com/amingccc/article/details/84260613
本文详细介绍了一个招聘微服务的搭建过程,包括业务分析、数据库表结构设计及代码实现。重点介绍了企业信息和招聘信息的处理,以及如何通过API提供热门企业、推荐职位和最新职位的查询服务。
171万+

被折叠的 条评论
为什么被折叠?



