发表于: 2018-10-18 23:30:11
1 448
3.具体方案
3.1 前台方案
3.2 后台方案
3.2.1 登录、登出模块
需求1:登录:用户可以输入在后台管理系统创建好的账户密码来登录后台管理系统。
方案:后台是提供给管理人员管理用户、管理业务的地方,我们在设计用户登录时,需要对登录的账户和密码进行验证:
(1)账号密码验证不正确的情况下,重新跳转至登录界面,重新输入账号和密码进行登录。
(2)账号密码验证正确的情况下,返回对应的个人信息(包括用户名、用户头像、用户角色名),然后根据角色查出对应的权限、可以访问的模块、开放的界面,再将可访问的模块信息返回到前端。
备注:在用户登录权限验证之后,会先将用户的所有权限信息经过加密之后,生成一个JWT信息,然后在后续访问后台系统的是时候,都需要在请求中携带 JWT 这个信息。于此,后端会根据 JWT 涵盖的信息,首先先判断是否超过有效时间,然后在获取包含的所有权限信息,来对用户的操作进行一个授权判断,对符合权限的操作才允许放行,不符合则不可调用接口,并返回“无权限操作” 的message 给前端。若超过有效时间,则需要重新登录,重新获取JWT。
<sql id="Base_Column_List" > id, name, password, salt, phone_num, head_image, gmt_create, gmt_update, create_by,update_by </sql>
sql语句:
查询用户:
select<include refid="Base_Column_List"/>from userwhere id = #{id}
所调用的接口:
接口名称:后台登录
请求地址: POST /login
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
name | 登录名 | String | 是 | |
password | 登录密码 | String | 是 |
返回参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
code | 状态码 | int | 是 | 代码运行状态码 |
msg | 信息 | String | 是 | |
data | 数据 | object | 是 | |
JWT | 验证权限信息 | Object | 否 |
data:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
id | 用户id | long | 是 | |
userName | 用户名 | String | 是 | |
roleId | 角色id | int | 是 | |
roleName | 角色名 | String | 是 | |
head_image | 头像url | String | 是 |
permission.class
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
permission_name | 权限名 | long | |
in_new | 新增 | int | |
in_edit | 编辑 | int | |
in_delete | 删除 | int |
code 码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
20001 | 用户未登录 | USER_NOT_LOGGED_IN | ||
20002 | 账号不存在或密码错误 | USER_LOGIN_ERROR | ||
20003 | 账号已被禁用 | USER_ACCOUNT_FORBIDDEN | ||
20004 | 用户不存在 | USER_NOT_EXIST |
需求2:登出:用户登录后可以从后台管理系统中注销登出返回登录页
方案:
调用 /a/signout 用户登出的接口,删除对应的cookie,在服务中刷新获取新的 JWT,获取新的 Token 此时新的 JWT 将返回给前端,从而保证之前存在请求头文件的 JWT 失效。
所调用的接口:
接口名称: 后台登出
请求地址: POST /a/signout
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
id | 用户id | Long | 是 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | 代码运行状态码 |
msg | 信息 | String |
code 码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
20101 | 登出失败,请稍后再试 | USER_LOGIN_OUT_ERROR |
3.2.2 信息管理
3.2.2.1 公司列表
需求1:
(1)用户可以在公司列表中看到所有公司的基本信息展示在列表中。
(2)用户可以通过填写查询条件搜索出相关公司在列表中展示。
- 方案:
(1) 调用 “公司列表页” 接口,若获取所有公司列表信息时,请求参数为空。若为根据条件搜索公司信息时,根据前端返回的数据,使用动态SQL语句 + 多表联查,动态查询相关的信息, 其中查询结果包括:公司的ID、公司的名称、所在行业、城市、县区、产品名称、融资规模、认证状态、冻结状态等;
(2)其中 “公司的ID” 用于后面获取单条公司数据的具体参数,以及对其参数的修改;
所调用的接口:
接口名称: 公司列表页
请求地址: POST /a/company
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyName | 公司名称 | String | 非必填 | 默认为:Null |
companyIndustry | 公司行业 | int | 非必填 | 默认为:Null |
city | 城市 | String | 非必填 | 默认为:Null |
area | 区县 | String | 非必填 | 默认为:Null |
produceName | 产品名称 | String | 非必填 | 默认为:Null |
financingScale | 融资规模 | int | 非必填 | 默认为:Null |
isApprove | 是否认证 | int | 非必填 | 默认为:Null |
isFrozen | 是否冻结 | int | 非必填 | 默认为:Null |
page | 页码 | int | 非必填 | 默认值:1 |
size | 页长 | int | 非必填 | 默认值:10 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String | |
data | 数据 | list |
data:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
companyId | 公司ID | long | |
companyName | 公司名称 | String | |
companyIndustry | 公司行业 | int | |
city | 城市 | String | |
area | 区县 | String | |
financingScale | 融资规模 | int | |
isApprove | 是否认证 | int | |
isFrozen | 是否冻结 | int | |
page | 页码 | int | |
size | 页长 | int | |
total | 总数 | int |
code 码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
10001 | 参数无效 | PARAM_IS_INVALID | ||
10002 | 参数为空 | PARAM_IS_BLANK | ||
10003 | 参数类型错误 | PARAM_TYPE_BIND_ERROR | ||
10004 | 参数缺失 | PARAM_NOT_COMPLETE |
sql 语句:
SELECTc.company_id,c.company_name,c.company_industry,c.city,c.area,c.financing_scale,c.is_approve,c.is_frozen,p.produce_nameFROMcompany_info AS cINNER JOIN company_produce AS p ON c.company_id = p.company_idWHEREc.company_name LIKE "%卓%"OR p.produce_name LIKE "?"OR company_industry = "?"OR city = "?"OR area = "?"OR financing_scale = "?"OR Is_approve = "?"OR Is_frozen = "?"ORDER BYc.gmt_updateDESC
需求2:
(3)用户可以通过列表对公司进行新增、编辑、查看、状态改变(冻结/解冻)以及查看本公司下的职位列表操作。
- 方案一:
(1)用户新增公司时,先跳转至 公司编辑页面,前端返回用户输入的信息,后端调用 “新增公司信息” POST /a/company 的接口,其中,编辑页面会有 "存为草稿" 和 “立即上架”,两种提交方式分别对应是否认证 “Is_frozen” 的 0 和 1;
所调用的接口:
请求地址: POST /a/company
注意事项:
1.此处存在立即上线,保存至草稿这两个选项。
请求参数:
companyInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyName | 公司名称 | String | 必填 | |
companySlogan | 公司SLogan | String | 必填 | |
numberOfCompanies | 公司人数 | int | 必填 | |
financingScale | 融资规模 | int | 必填 | |
area | 区县 | String | 必填 | |
companyIndustry | 公司行业 | int | 必填 | |
city | 城市 | String | 必填 | |
companyLogo | 公司logo | String | 非必填 | 通过上传后返回的URL |
companyProfile | 公司简介 | String | 必填 | |
companyTag | 公司标签 | String | 必填 | 备注:前端将数据合并成一个字符串 |
CompanyProduce | 公司产品(对象) | Object | 必填 | |
RecruitingCompanyInfo | 招聘公司相关信息 | Object | 必填 | |
isApprove | 是否认证 | int | 必填 | |
isFrozen | 是否冻结 | int | 必填 | 此处有约定, 0:保存至草稿 1:立即上线 |
CompanyProduce.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
produceName | 产品名称 | String | 必填 | |
produceSlogan | 产品slogan | String | 必填 | |
produceLogo | 产品logo | String | 必填 | |
produceProduce | 产品介绍 | String | 必填 |
RecruitingCompanyInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
phone | 招聘电话 | String | 必填 | |
招聘邮件 | String | 必填 | ||
adress | 公司详细地址 | String | 必填 | |
map | 公司地图 | String | 必填 | URL地址 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code 码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
10001 | 参数无效 | PARAM_IS_INVALID | ||
10002 | 参数为空 | PARAM_IS_BLANK | ||
10003 | 参数类型错误 | PARAM_TYPE_BIND_ERROR | ||
10004 | 参数缺失 | PARAM_NOT_COMPLETE | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句方案一:
-- 插入公司信息INSERT INTO company_info (company_name,company_slogan,number_of_companies,financing_scale,city,area,company_industry,company_logo,company_profile,company_tag,Is_approve,Is_frozen,gmt_create,gmt_update,create_by,update_by)VALUES ( 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 )-- 插入公司产品INSERT INTO company_produce ( company_id, produce_name, produce_slogan, produce_logo, product_introduction, gmt_create, gmt_update, create_by, update_by )VALUES( (SELECT company_info.company_id FROM company_info WHERE company_info.company_name = "11"), 11, 11, 11, 11, 11, 11, 11, 11 )-- 插入招聘公司相关信息INSERT INTO Recruiting_company_information ( company_id, phone, email, adress, map, gmt_create, gmt_update, create_by, update_by )VALUES( (SELECT company_info.company_id FROM company_info WHERE company_info.company_name = "11"), 11, 11, 11, 11, 11, 11, 11, 11 )
(2)涉及到图片上传的功能,则需要调用另外一个接口:“图片上传”。接口将前端上传的图片保存至第三方OSS中,上传完毕之后,返回上传源文件的名字,大小以及是否成功这几个参数。同时还会返回一个可以访问图片的URL地址,这个参数需在后面提交公司信息时一起提交至后端,文件上传的限制为500k,这点可以在 mutipartfile 中设定参数,图片类型做判断,属于动态类型,禁止上传。
所调用的接口:
接口名称:图片上传
请求地址: POST /a/picture
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
file | 图片文件 | mutipartfile | 必填 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String | |
fileName | 文件访问路径 | String |
code 码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
10001 | 参数无效 | PARAM_IS_INVALID | ||
10002 | 参数为空 | PARAM_IS_BLANK | ||
10003 | 参数类型错误 | PARAM_TYPE_BIND_ERROR | ||
10004 | 参数缺失 | PARAM_NOT_COMPLETE | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
(3)查看公司信息,则是调用 “获取单个公司信息” 这个接口。若是要对公司修改,编辑公司,则先调用 “获取单个公司信息” 接口,在参数修改后,再调用 "编辑公司信息" 接口,对更改过信息的数据表,更新其更新人和更新时间的属性,凡是对标做过需改的,都更新这两个属性,“公司人数 只能使用数字”、“公司标签限定10字,不可重复”、“手机号码”、"邮箱" 这几个点在前端页面做输入参数校验。
所调用的接口:
接口名称: 获取单个公司信息
请求地址: GET /a/company/{companyId}
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyId | 公司ID | long | 必填 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String | |
data | 数据 | list |
data:
companyInfo.class
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
companyId | 公司ID | long | |
companyName | 公司名称 | String | |
companySlogan | 公司SLogan | String | |
numberOfCompanies | 公司人数 | int | |
financingScale | 融资规模 | int | |
city | 城市 | String | |
area | 区县 | String | |
companyIndustry | 公司行业 | int | |
companyLogo | 公司logo | String | 通过上传后返回的URL |
companyProfile | 公司简介 | String | |
companyTag | 公司标签 | String | 备注:前端将数据合并成一个字符串 |
CompanyProduce | 公司产品(对象) | Object | |
RecruitingCompanyInfo | 招聘公司相关信息 | Object | |
isApprove | 是否认证 | int | 此处有约定, 0:未认证 1:已认证 |
isFrozen | 是否冻结 | int | 此处有约定, 0:保存至草稿 1:立即上线 |
CompanyProduce.class
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
produceName | 产品名称 | String | |
produceSlogan | 产品slogan | String | |
produceLogo | 产品logo | String | |
produceIntroduction | 产品介绍 | String |
RecruitingCompanyInfo.class
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
phone | 招聘电话 | String | |
招聘邮件 | String | ||
adress | 公司详细地址 | String | |
map | 公司地图 | String | URL地址 |
code 码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句方案一
SELECTc.company_id,c.company_name,c.company_slogan,c.number_of_companies,c.financing_scale,c.city,c.area,c.company_industry,c.company_logo,c.company_profile,c.company_tag,c.Is_approve,c.Is_frozen,p.produce_name,p.produce_slogan,p.produce_logo,p.product_introduction,r.phone,r.email,r.adress,r.mapFROM( company_info AS c LEFT JOIN company_produce AS p ON c.company_id = p.company_id )LEFT JOIN recruiting_company_information AS r ON c.company_id = r.company_idWHERE c.company_id = 11
所调用的接口
接口名称: 编辑公司信息
请求地址: PUT /a/company/{companyId}
请求参数:
companyInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
company_id | 公司id | long | 必填 | |
companyName | 公司名称 | String | 非必填 | |
companySlogan | 公司SLogan | String | 非必填 | |
numberOfCompanies | 公司人数 | int | 非必填 | |
financingScale | 融资规模 | int | 非必填 | |
area | 地区 | String | 非必填 | |
city | 城市 | String | 非必填 | |
companyIndustry | 公司行业 | int | 非必填 | |
companyLogo | 公司logo | String | 非必填 | 通过上传后返回的URL |
companyProfile | 公司简介 | String | 非必填 | |
companyTag | 公司标签 | String | 非必填 | 备注:前端将数据合并成一个字符串 |
CompanyProduce | 公司产品(对象) | Object | 非必填 | |
RecruitingCompanyInfo | 招聘公司相关信息 | Object | 非必填 | |
isApprove | 是否认证 | int | 非必填 | 此处有约定, 0:未认证 1:已认证 |
isFrozen | 是否冻结 | int | 非必填 | 此处有约定, 0:保存至草稿 1:立即上线 |
CompanyProduce.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
produceName | 产品名称 | String | 非必填 | |
produceSlogan | 产品slogan | String | 非必填 | |
produceLogo | 产品logo | String | 非必填 | |
produceProduce | 产品介绍 | String | 非必填 |
RecruitingCompanyInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
phone | 招聘电话 | String | 非必填 | |
招聘邮件 | String | 非必填 | ||
adress | 公司详细地址 | String | 非必填 | |
map | 公司地图 | String | 非必填 | 文件上传后返回的URL |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句
-- 修改公司信息表UPDATE company_infoSET company_name = 'QQ',company_slogan = '?',number_of_companies = 22,financing_scale = 22,city = '?',area = '?',company_industry = 22,company_logo = 22,company_profile = 22,company_tag = '?',Is_approve = 22,Is_frozen = 22WHEREcompany_id = 11-- 修改公司产品UPDATE company_produceSET produce_name = 22,produce_slogan = "?",produce_logo = 22,product_introduction = 22WHEREcompany_id = 11-- 修改联系表UPDATE recruiting_company_informationSET phone = 22,email = 22,adress =22,map = "?"WHEREcompany_id = 11<p data-line="785" class="sync-line" style="margin:0;"></p>
(4)修改公司状态(冻结/解冻),在这里则是调用 “修改公司冻结状态” 接口,前端返回它现有的冻结状态参数,后端对状态进行修改,最后再返回结果信息到前端。
所调用的接口
接口名称: 修改公司认证状态
请求地址: PUT /a/company/approve/{companyId}
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyId | 公司ID | long | 必填 | |
isApprove | 认证 | int | 必填 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句
UPDATE company_infoSET Is_approve = 100WHERE company_id = 11<p data-line="823" class="sync-line" style="margin:0;"></p>
所调用的接口:
接口名称: 修改公司冻结状态
请求地址: PUT /a/company/frozen/{companyId}
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyId | 公司ID | long | 必填 | |
isFrozen | 冻结状态 | int | 必填 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句
UPDATE company_infoSET Is_frozen = 100WHEREcompany_id = 11<p data-line="857" class="sync-line" style="margin:0;"></p>
(5)删除公司信息,在该公司下的所有再找职位都已经下线的情况下,才可以调用 “删除公司信息” 这个接口来删除该公司的相应信息。若该公司还有在招职位的公司,不能直接删除,这个时候返回相应的Code码提示用户。。删除时,将会查出关联的表,然后一同删除。
所调用的接口:
接口名称: 删除公司信息
请求地址: DELETE /a/company/{companyId}
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyId | 公司ID | long | 必填 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句
DELETEFROMcompany_infoWHEREcompany_id = 2<p data-line="894" class="sync-line" style="margin:0;"></p>
3.2.2.2 职位列表
需求1:
(1)用户可以在职位列表中看到所有职位的基本信息展示在列表中。
(2)用户可以通过填写查询条件搜索出相关职位在列表中展示。
- 方案:
(1)调用 “职位列表” 接口,请求地址: GET /a/position ,若获取所有职位信息时,请求参数为空。若为根据条件搜索职位信息时,根据前端返回的数据,使用动态SQL语句 + 多表联查,动态查询相关的信息,以最近更新时间来顺序排序数据,返回的数据包括 公司ID、公司名称、职位id、职位名称、公司行业、职业类别、薪资、学历、工作经验、更新时间、页码、页长、总行数等;
(2)其中 “职位id” 用于后面获取单条职位数据的具体参数,以及对其参数的修改;
所调用的接口:
接口名称: 职位列表
请求地址: POST /a/position/list
请求参数:
companyInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyId | 公司id | long | 非必填 | |
companyName | 公司名称 | String | 非必填 |
positionInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
positionName | 职位名称 | String | 非必填 | |
positionType | 职业类别 | int | 非必填 | |
education | 学历 | int | 非必填 | 见约定 |
workExperience | 工作经验 | int | 非必填 | 见约定 |
startTime | 开始时间 | long | 非必填 | |
endTime | 结束时间 | long | 非必填 | |
salary | 薪资 | int | 非必填 | |
isOnline | 上线状态 | int | 非必填 | 非必填 见约定 0:未上线 1:已上线 |
page | 页码 | int | 非必填 | 默认值:1 |
size | 页长 | int | 非必填 | 默认值:10 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String | |
data | 数据 | list |
data:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
companyId | 公司ID | long | |
companyName | 公司名称 | String | |
position_id | 职位id | long | |
positionName | 职位名称 | String | |
positionType | 职业类别 | int | |
salary | 薪资 | int | |
education | 学历 | int | |
workExperience | 工作经验 | int | |
gmt_update | 更新时间 | long | |
isOnline | 上线状态 | int | 见约定 0:未上线 1:已上线 |
isRecommend | 是否推荐 | int | 见约定 0:普通 1:推荐 |
page | 页码 | int | |
size | 页长 | int | |
total | 总数 | int |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql 语句
SELECTc.company_Id,c.company_Name,p.position_Id,p.position_Name,c.company_Industry,p.position_Type,p.salary,p.education,p.work_Experience,p.gmt_Update,p.is_Online,p.is_RecommendFROMposition_info AS p,company_info AS cWHEREp.company_Id = c.company_IdAND p.company_Name LIKE "%?%"AND p.position_Name LIKE "%?%"AND p.position_Type = '?'AND p.education = '?'AND p.work_Experience = '?'AND p.salary = '?'AND p.is_Online = '?'AND online_time BETWEEN '?' AND '?'ORDER BYp.gmt_update DESC;<p data-line="1005" class="sync-line" style="margin:0;"></p>
##动态SQL
select c.companyId,c.companyName,p.positionId,p.positionName,c.companyIndustry,p.positionType,p.salary,p.education,p.workExperience,p.gmtUpdate,p.isOnline,p.isRecommend from position_info p,company_info c<where> p.company_Id=c.company_Id<if test="companyName != null and companyName != ''"> AND p.companyName like CONCAT('%',#{companyName},'%') </if> <if test="positioName != null and positioName != ''"> AND p.positioName = like CONCAT('%',#{positioName},'%') </if> <if test="positionType != null and positionType != ''">\ AND p.positionType = #{positionType} </if> <if test="education != null and education != ''"> AND p.education = #{education} </if> <if test="workExperience != null and workExperience != ''"> AND p.workExperience = #{workExperience} </if> <if test="salary != null and salary != ''"> AND p.salary = #{salary} </if> <if test="isOnline != null and isOnline != ''"> AND p.isOnline = #{isOnline} </if> <if test="startTime != null and startTime != ''"> AND p.isOnline between #{startTime} and #{endTime} </if> </where> order by p.gmtUpdate desc;<p data-line="1038" class="sync-line" style="margin:0;"></p>
需求2:
用户可以通过列表对职位进行删除、编辑、查看、状态改变(上架/下架)操作。
(4)用户可以进入具体某公司的职位列表后进行新增操作。
- 方案
1)用户新增职位时,只能在某一个公司的在招职位页面里新增职位信息,后端调用 “新增公司信息” 的接口,编辑页面会有 "存为草稿" 和 “立即上线”,两种提交方式分别对应是否认证 “is_online” 的 0 和 1。
(2)若是要对职位修改,编辑职位,则先调用 “获取单个职位信息” 接口来查看单个职位信息,在参数修改后,再调用 "编辑职位信息" 接口,对更改过信息的数据表,更新其更新人和更新时间的属性,这里也会用到动态SQL语句来动态修改相应的信息。
(3)修改职位状态(上架/下架),在这里则是调用 “更改职位状态” 接口,前端返回它现有的冻结状态参数,后端对状态进行修改,最后再返回结果信息到前端。
(4)删除职位信息,调用 “删除职位信息” 这个接口,在删除职位之前,需对其上线状态进行一个判断,当处于上线状态,不可删除,并作出提示。删除时,将会查出关联的表,然后一同删除。
备注:
(1) 按发布时间查询时,开始时间不能大于结束时间,开始时间00:00:00,结束时间23:59:59,当日之后的日期不可选。这点的检验可在前端页面实现。
所调用的接口:
接口名称: 新增职位
请求地址: POST /a/position
请求参数:
companyInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyId | 公司id | long | 必填 | |
companyName | 公司名称 | String | 必填 |
positionInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
positionName | 职位名称 | String | 必填 | |
workExperience | 工作经验 | int | 必填 | 见约定 |
salary | 薪资 | int | 必填 | 见约定 |
education | 学历 | int | 必填 | 见约定 |
positionType | 职业类别 | int | 必填 | 见约定 |
welfare | 公司福利 | String | 必填 | |
postDuties | 岗位职责 | String | 必填 | |
skills | 必备技能 | String | 必填 | |
positionTag | 职位标签 | String | 必填 | |
isOnline | 上线状态 | int | 必填 | 见约定 0:未上线 1:已上线 |
isRecommend | 是否推荐 | int | 必填 | 见约定 0:普通 1:推荐 |
sql语句
insert into position_info(company_Id,position_Name,is_recommend,company_Name,positionlevel,work_Experience,education,salary,position_Type,position_Tag,post_Duties,skills,welfare,gmt_create,gmt_update,create_by,update_by)values(88,"?",0,"?","?",0,0,1,1,"?","?","?","?",14,14,"?","?");<p data-line="1092" class="sync-line" style="margin:0;"></p>
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
10001 | 参数无效 | PARAM_IS_INVALID | ||
10002 | 参数为空 | PARAM_IS_BLANK | ||
10003 | 参数类型错误 | PARAM_TYPE_BIND_ERROR | ||
10004 | 参数缺失 | PARAM_NOT_COMPLETE | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
所调用的接口:
接口名称: 获取单个职位信息
请求地址: GET /a/position/{position_id}
请求参数:
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
positionId | 职位id | long | 必填 | |
companyId | 公司id | String | 必填 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String | |
data | 数据 | object |
data:
companyInfo.class
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
companyId | 公司id | long | |
companyName | 公司名称 | String |
positionInfo.class
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
position_id | 职位id | long | |
positionName | 职位名称 | String | |
workExperience | 工作经验 | int | 见约定 |
salary | 薪资 | int | 见约定 |
education | 学历 | int | 见约定 |
positionType | 职业类别 | int | 见约定 |
welfare | 公司福利 | String | |
postDuties | 岗位职责 | String | |
skills | 必备技能 | String | |
positionTag | 职位标签 | String | |
isOnline | 上线状态 | int | 见约定 0:未上线 1:已上线 |
isRecommend | 是否推荐 | int | 见约定 0:普通 1:推荐 |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句
select position_Id,position_Name,work_Experience,salary,education,position_Type,welfare,post_Duties,skills,position_Tag,is_Online,is_Recommendfrom position_info where position_Id="?" and company_Id="?"<p data-line="1171" class="sync-line" style="margin:0;"></p>
所调用的接口:
接口名称: 编辑职位
请求地址: PUT /a/position/{position_id}
请求参数:
companyInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
companyId | 公司id | long | 必填 | |
companyName | 公司名称 | String | 必填 |
positionInfo.class
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
positionName | 职位名称 | String | 非必填 | |
workExperience | 工作经验 | int | 非必填 | 见约定 |
salary | 薪资 | int | 非必填 | 见约定 |
education | 学历 | int | 非必填 | 见约定 |
positionType | 职业类别 | int | 非必填 | 见约定 |
welfare | 公司福利 | String | 非必填 | |
postDuties | 岗位职责 | String | 非必填 | |
skills | 必备技能 | String | 非必填 | |
positionTag | 职位标签 | String | 非必填 | |
isOnline | 上线状态 | int | 非必填 | 见约定 0:未上线 1:已上线 |
isRecommend | 是否推荐 | int | 非必填 | 见约定 0:普通 1:推荐 |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code 码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
10001 | 参数无效 | PARAM_IS_INVALID | ||
10002 | 参数为空 | PARAM_IS_BLANK | ||
10003 | 参数类型错误 | PARAM_TYPE_BIND_ERROR | ||
10004 | 参数缺失 | PARAM_NOT_COMPLETE | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql语句
update position_info u setu.company_Name = "?",u.work_Experience = 1,u.education ="?",u.salary =1,u.position_Type = "?",u.position_Tag = "?",u.post_Duties = "?",u.skills = "?"where u.company_Id=1and u.company_Name="?"<p data-line="1234" class="sync-line" style="margin:0;"></p>
所调用的接口:
接口名称: 删除职位
请求地址: DELETE /a/position/{position_id}
请求参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
position_id | 职位id | long |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql 语句:
delete from position_info where positionId=1;<p data-line="1264" class="sync-line" style="margin:0;"></p>
所调用的接口:
接口名称: 更改职位状态
请求地址: PUT /a/position/{position_id}/online
请求参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
position_id | 职位id | long | |
is_online | 上架状态 | int |
返回参数:
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
code | 状态码 | int | |
message | 信息 | String |
code码:
code | msg | 字段 | 描述 | 备注 |
---|---|---|---|---|
1 | 成功 | SUCCESS | ||
40001 | 系统繁忙,请稍后重试 | SYSTEM_INNER_ERROR |
sql 语句
update position_info set isOnline=1 where positionId=1;<p data-line="1296" class="sync-line" style="margin:0;"></p>
总结:
1.学到的东西:
1.1.重新修改方案设计附上 sql语句。
2.明天计划的事情:
2.1.编写完成方案设计的sql语句。
3.遇到的问题:
4.收获:
收获了上述知识点,坚持!
评论