十次方05、招聘子模块-业务代码编写

本文详细介绍了一个招聘微服务的搭建过程,包括业务分析、数据库表结构设计及代码实现。重点介绍了企业信息和招聘信息的处理,以及如何通过API提供热门企业、推荐职位和最新职位的查询服务。

招聘子模块-代码编写

1 业务分析

招聘微服务主要有两块:企业信息和招聘信息
需要些的功能对应API:

  1. 热门企业列表

    /enterprise/search/hotlist 热门企业列表

  2. 推荐职位列表

    /recruit/search/recommend 推荐职位

  3. 最新职位列表

    /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 表结构分析

  1. 企业表
    企业表tb_enterprise
    字段名称字段含义字段类型备注
    idID文本
    name企业名称文本
    summary企业简介文本
    address企业地址文本
    labels标签列表文本用逗号分隔
    coordinate企业位置坐标文本经度,纬度
    ishot是否热门文本0:非热门 1:热门
    logoLOGO文本
    jobcount职位数数字
    urlURL文本
  2. 职位表
    招聘信息表tb_recruit
    字段名称字段含义字段类型备注
    idID文本
    jobname招聘职位文本
    salary薪资范围文本
    condition经验要求文本
    education学历要求文本
    type任职方式文本
    address办公地址文本
    eid企业ID文本
    createtime发布日期日期
    state状态文本0:关闭 1:开启 2:推荐
    url原网址文本
    label标签文本
    content1职位描述文本
    content2职位要求文本

3 需要写的业务模块

3.1 热门企业列表

需求:查询企业表ishot字段为1的记录

  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=?
    }
    
  2. EnterpriseService新增方法
    ......
    	/**
    	 * 热门企业列表
    	 * @param ishot
    	 * @return
    	 */
    	public List<Enterprise> hotList(String ishot){
    		return enterpriseDao.findByIshot(ishot);
    	}
    ......
    
  3. EnterpriseController新增方法
    ......
    	/**
    	 * 查询热门企业  /enterprise/search/hotlist 	热门企业列表	
    	 * @return
    	 */
    	@GetMapping("/search/hotlist")
    	public Result hotList(){
    		List<Enterprise> list = enterpriseService.hotList("1");
    		return new Result(true,StatusCode.OK,"查询成功",list);
    	}
    ......
    
  4. 测试 http://localhost:9002/enterprise/search/hotlist

3.2 推荐职位列表

需求分析:查询状态为2并以创建日期降序排序,查询前6条记录

  1. 在RecruitDao新增方法定义
     /**
     * 查询最新职位列表(按创建日期降序排序)
     * @param state
     * @return
     */
    public List<Recruit> findTop6ByStateOrderByCreatetimeDesc(String state);//where state=? order by recruit
    
  2. RecruitService新增方法
    ......
    	/**
         * 根据状态查询职位,时间排序
         * @return
         */
        public List<Recruit> recommend() {
            return recruitDao.findTop6ByStateOrderByCreatetimeDesc("2");
        }
    ......
    
  3. RecruitController新增方法
    ......
    	 /**
         * 推荐职位
         * @return
         */
        @GetMapping("/search/recommend")
        public Result recommend() {
            return new Result(true, StatusCode.OK, "查询成功", recruitService.recommend());
        }
    ......
    
  4. 测试: http://localhost:9002/recruit/search/recommend

3.3 最新职位列表

需求分析:查询状态不为0并以创建日期降序排序,查询前6条记录

  1. 在RecruitDao新增方法定义
    ......
        /**
         * 查询最新职位
         * @param state
         * @return
         */
        public List<Recruit> findTop6ByStateNotOrderByCreatetimeDesc(String state);//where state !=? order by recruit
    ......
    
  2. RecruitService新增方法
    ......
    	/**
         * 查询最新职位
         * @return
         */
        public List<Recruit> newList() {
            return recruitDao.findTop6ByStateNotOrderByCreatetimeDesc("0");
        }
    ......
    
  3. RecruitController新增方法
    ......
    	/**
         * 最新职位
         * @return
         */
        @GetMapping("/search/newlist")
        public Result newList() {
            return new Result(true, StatusCode.OK, "查询成功", recruitService.newList());
        }
    ......
    
  4. 测试:http://localhost:9002/recruit/search/newlist

十次方00、目录
https://blog.youkuaiyun.com/amingccc/article/details/84260613

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值