岗位业务逻辑完善

This commit is contained in:
2025-12-14 09:20:06 +08:00
parent 3361633dba
commit 4ef73a8ee8
39 changed files with 1720 additions and 188 deletions

View File

@@ -1,139 +0,0 @@
package com.vetti.filter;
import com.vetti.common.constant.CacheConstants;
import com.vetti.common.constant.SecurityConstants;
import com.vetti.common.constant.TokenConstants;
import com.vetti.common.core.redis.RedisService;
import com.vetti.common.utils.JwtUtils;
import com.vetti.common.utils.MessageUtils;
import com.vetti.common.utils.StringUtils;
import com.vetti.config.IgnoreWhiteProperties;
import io.jsonwebtoken.Claims;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* APP登录鉴权
*
* @author wangxiangshun
*/
@Component
@WebFilter
public class AuthFilter implements Filter
{
private static final Logger log = LoggerFactory.getLogger(AuthFilter.class);
// 排除过滤的 uri 地址
@Autowired
private IgnoreWhiteProperties ignoreWhite;
@Autowired
private RedisService redisService;
/**
* 获取缓存key
*/
private String getTokenKey(String token)
{
return CacheConstants.LOGIN_TOKEN_KEY + token;
}
/**
* 获取请求token
*/
private String getToken(HttpServletRequest request)
{
String token = request.getHeader(SecurityConstants.AUTHORIZATION_HEADER);
// 如果前端设置了令牌前缀,则裁剪掉前缀
if (StringUtils.isNotEmpty(token) && token.startsWith(TokenConstants.PREFIX))
{
token = token.replaceFirst(TokenConstants.PREFIX, StringUtils.EMPTY);
}
return token;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
// 执行拦截逻辑
String url = httpRequest.getRequestURI();
// 跳过不需要验证的路径
if ((url != null && url.contains("/v1/app"))
&& !StringUtils.matches(url, ignoreWhite.getWhites()))
{
String token = getToken(httpRequest);
if (StringUtils.isEmpty(token))
{
// 认证失败:返回 401
sendResponse(httpResponse,HttpServletResponse.SC_UNAUTHORIZED, MessageUtils.messageCustomize("systemExceptionAuthFilter10001"));
// 中断请求
return;
}
Claims claims = JwtUtils.parseToken(token);
if (claims == null)
{
// 认证失败:返回 401
sendResponse(httpResponse,HttpServletResponse.SC_UNAUTHORIZED,MessageUtils.messageCustomize("systemExceptionAuthFilter10002"));
// 中断请求
return;
}
String userkey = JwtUtils.getUserKey(claims);
boolean islogin = redisService.hasKey(getTokenKey(userkey));
if (!islogin)
{
// 认证失败:返回 401
sendResponse(httpResponse,HttpServletResponse.SC_UNAUTHORIZED,MessageUtils.messageCustomize("systemExceptionAuthFilter10003"));
// 中断请求
return;
}
String userid = JwtUtils.getUserId(claims);
String username = JwtUtils.getUserName(claims);
if (StringUtils.isEmpty(userid) || StringUtils.isEmpty(username))
{
// 认证失败:返回 401
sendResponse(httpResponse,HttpServletResponse.SC_UNAUTHORIZED,MessageUtils.messageCustomize("systemExceptionAuthFilter10004"));
// 中断请求
return;
}
}
// 拦截通过,继续执行后续过滤器或控制器
chain.doFilter(request, response);
}
/**
* 返回响应结构体
* @param response
* @param code HTTP状态码
* @param message 提示信息
* @throws IOException
*/
private void sendResponse(HttpServletResponse response,int code, String message) throws IOException {
// 设置HTTP状态码
response.setStatus(code);
// 设置响应内容类型JSON格式便于前端解析
response.setContentType("application/json;charset=UTF-8");
// 构建响应体(包含错误信息)
String jsonResponse = String.format(
"{\"code\": "+code+", \"msg\": \"%s\"}",
message
);
// 写入响应并关闭流
PrintWriter writer = response.getWriter();
writer.write(jsonResponse);
writer.flush();
writer.close();
}
}

View File

@@ -0,0 +1,98 @@
package com.vetti.web.controller.hotake;
import com.vetti.common.annotation.Log;
import com.vetti.common.core.controller.BaseController;
import com.vetti.common.core.domain.R;
import com.vetti.common.core.page.TableDataInfo;
import com.vetti.common.enums.BusinessType;
import com.vetti.hotake.domain.HotakeInitScreQuestionsReplyRecordInfo;
import com.vetti.hotake.service.IHotakeInitScreQuestionsReplyRecordInfoService;
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;
/**
* 初步筛选问题回答记录信息Controller
*
* @author wangxiangshun
* @date 2025-12-14
*/
@Api(tags ="初步筛选问题回答记录信息")
@RestController
@RequestMapping("/hotake/initScreQuestionsReplyRecordInfo")
public class HotakeInitScreQuestionsReplyRecordInfoController extends BaseController
{
@Autowired
private IHotakeInitScreQuestionsReplyRecordInfoService hotakeInitScreQuestionsReplyRecordInfoService;
/**
* 查询初步筛选问题回答记录信息列表
*/
@ApiOperation("查询初步筛选问题回答记录信息列表")
@GetMapping("/getPageList")
public TableDataInfo pageList(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
startPage();
List<HotakeInitScreQuestionsReplyRecordInfo> list = hotakeInitScreQuestionsReplyRecordInfoService.selectHotakeInitScreQuestionsReplyRecordInfoList(hotakeInitScreQuestionsReplyRecordInfo);
return getDataTable(list);
}
/**
* 查询初步筛选问题回答记录信息列表(无分页)
*/
@ApiOperation("查询初步筛选问题回答记录信息列表(无分页)")
@GetMapping("/getList")
public R<List<HotakeInitScreQuestionsReplyRecordInfo>> list(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
List<HotakeInitScreQuestionsReplyRecordInfo> list = hotakeInitScreQuestionsReplyRecordInfoService.selectHotakeInitScreQuestionsReplyRecordInfoList(hotakeInitScreQuestionsReplyRecordInfo);
return R.ok(list);
}
/**
* 获取初步筛选问题回答记录信息详细信息
*/
@ApiOperation("获取初步筛选问题回答记录信息详细信息")
@GetMapping(value = "/{id}")
public R<HotakeInitScreQuestionsReplyRecordInfo> getInfo(@PathVariable("id") Long id)
{
return R.ok(hotakeInitScreQuestionsReplyRecordInfoService.selectHotakeInitScreQuestionsReplyRecordInfoById(id));
}
/**
* 新增初步筛选问题回答记录信息
*/
@ApiOperation("新增初步筛选问题回答记录信息")
@Log(title = "初步筛选问题回答记录信息", businessType = BusinessType.INSERT)
@PostMapping
public R<?> add(@RequestBody HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
return R.ok(hotakeInitScreQuestionsReplyRecordInfoService.insertHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfo));
}
/**
* 修改初步筛选问题回答记录信息
*/
@ApiOperation("修改初步筛选问题回答记录信息")
@Log(title = "初步筛选问题回答记录信息", businessType = BusinessType.UPDATE)
@PutMapping
public R<?> edit(@RequestBody HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
return R.ok(hotakeInitScreQuestionsReplyRecordInfoService.updateHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfo));
}
/**
* 删除初步筛选问题回答记录信息
*/
@ApiOperation("删除初步筛选问题回答记录信息")
@Log(title = "初步筛选问题回答记录信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<?> remove(@PathVariable Long[] ids)
{
return R.ok(hotakeInitScreQuestionsReplyRecordInfoService.deleteHotakeInitScreQuestionsReplyRecordInfoByIds(ids));
}
}

View File

@@ -0,0 +1,96 @@
package com.vetti.web.controller.hotake;
import com.vetti.common.annotation.Log;
import com.vetti.common.core.controller.BaseController;
import com.vetti.common.core.domain.R;
import com.vetti.common.core.page.TableDataInfo;
import com.vetti.common.enums.BusinessType;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.service.IHotakeInitialScreeningQuestionsInfoService;
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;
/**
* 初步筛选问题信息Controller
*
* @author wangxiangshun
* @date 2025-12-14
*/
@Api(tags ="初步筛选问题信息")
@RestController
@RequestMapping("/hotake/initialScreeningQuestionsInfo")
public class HotakeInitialScreeningQuestionsInfoController extends BaseController
{
@Autowired
private IHotakeInitialScreeningQuestionsInfoService hotakeInitialScreeningQuestionsInfoService;
/**
* 查询初步筛选问题信息列表
*/
@ApiOperation("查询初步筛选问题信息列表")
@GetMapping("/getPageList")
public TableDataInfo pageList(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
startPage();
List<HotakeInitialScreeningQuestionsInfo> list = hotakeInitialScreeningQuestionsInfoService.selectHotakeInitialScreeningQuestionsInfoList(hotakeInitialScreeningQuestionsInfo);
return getDataTable(list);
}
/**
* 查询初步筛选问题信息列表(无分页)
*/
@ApiOperation("查询初步筛选问题信息列表(无分页)")
@GetMapping("/getList")
public R<List<HotakeInitialScreeningQuestionsInfo>> list(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
List<HotakeInitialScreeningQuestionsInfo> list = hotakeInitialScreeningQuestionsInfoService.selectHotakeInitialScreeningQuestionsInfoList(hotakeInitialScreeningQuestionsInfo);
return R.ok(list);
}
/**
* 获取初步筛选问题信息详细信息
*/
@ApiOperation("获取初步筛选问题信息详细信息")
@GetMapping(value = "/{id}")
public R<HotakeInitialScreeningQuestionsInfo> getInfo(@PathVariable("id") Long id)
{
return R.ok(hotakeInitialScreeningQuestionsInfoService.selectHotakeInitialScreeningQuestionsInfoById(id));
}
/**
* 新增初步筛选问题信息
*/
@ApiOperation("新增初步筛选问题信息")
@Log(title = "初步筛选问题信息", businessType = BusinessType.INSERT)
@PostMapping
public R<?> add(@RequestBody HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
return R.ok(hotakeInitialScreeningQuestionsInfoService.insertHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfo));
}
/**
* 修改初步筛选问题信息
*/
@ApiOperation("修改初步筛选问题信息")
@Log(title = "初步筛选问题信息", businessType = BusinessType.UPDATE)
@PutMapping
public R<?> edit(@RequestBody HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
return R.ok(hotakeInitialScreeningQuestionsInfoService.updateHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfo));
}
/**
* 删除初步筛选问题信息
*/
@ApiOperation("删除初步筛选问题信息")
@Log(title = "初步筛选问题信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<?> remove(@PathVariable Long[] ids)
{
return R.ok(hotakeInitialScreeningQuestionsInfoService.deleteHotakeInitialScreeningQuestionsInfoByIds(ids));
}
}

View File

@@ -3,15 +3,15 @@ package com.vetti.web.controller.hotake;
import com.vetti.common.annotation.Log; import com.vetti.common.annotation.Log;
import com.vetti.common.core.controller.BaseController; import com.vetti.common.core.controller.BaseController;
import com.vetti.common.core.domain.AjaxResult; import com.vetti.common.core.domain.AjaxResult;
import com.vetti.common.core.domain.R;
import com.vetti.common.core.page.TableDataInfo; import com.vetti.common.core.page.TableDataInfo;
import com.vetti.common.enums.BusinessType; import com.vetti.common.enums.BusinessType;
import com.vetti.common.utils.poi.ExcelUtil;
import com.vetti.hotake.domain.HotakeRolesInfo; import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.HotakeRolesInfoDto;
import com.vetti.hotake.service.IHotakeRolesInfoService; import com.vetti.hotake.service.IHotakeRolesInfoService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
@@ -34,9 +34,8 @@ public class HotakeRolesInfoController extends BaseController
* 查询岗位信息列表 * 查询岗位信息列表
*/ */
@ApiOperation("查询岗位信息列表") @ApiOperation("查询岗位信息列表")
@PreAuthorize("@ss.hasPermi('hotake:rolesInfo:list')") @GetMapping("/getPageList")
@GetMapping("/list") public TableDataInfo listPage(HotakeRolesInfo hotakeRolesInfo)
public TableDataInfo list(HotakeRolesInfo hotakeRolesInfo)
{ {
startPage(); startPage();
List<HotakeRolesInfo> list = hotakeRolesInfoService.selectHotakeRolesInfoList(hotakeRolesInfo); List<HotakeRolesInfo> list = hotakeRolesInfoService.selectHotakeRolesInfoList(hotakeRolesInfo);
@@ -44,35 +43,30 @@ public class HotakeRolesInfoController extends BaseController
} }
/** /**
* 导出岗位信息列表 * 查询岗位信息列表(无分页)
*/ */
@ApiOperation("导出岗位信息列表") @ApiOperation("查询岗位信息列表(无分页)")
@PreAuthorize("@ss.hasPermi('hotake:rolesInfo:export')") @GetMapping("/getList")
@Log(title = "岗位信息", businessType = BusinessType.EXPORT) public R<List<HotakeRolesInfo>> list(HotakeRolesInfo hotakeRolesInfo)
@GetMapping("/export")
public AjaxResult export(HotakeRolesInfo hotakeRolesInfo)
{ {
List<HotakeRolesInfo> list = hotakeRolesInfoService.selectHotakeRolesInfoList(hotakeRolesInfo); List<HotakeRolesInfo> list = hotakeRolesInfoService.selectHotakeRolesInfoList(hotakeRolesInfo);
ExcelUtil<HotakeRolesInfo> util = new ExcelUtil<HotakeRolesInfo>(HotakeRolesInfo.class); return R.ok(list);
return util.exportExcel(list, "岗位信息数据");
} }
/** /**
* 获取岗位信息详细信息 * 获取岗位信息详细信息
*/ */
@ApiOperation("获取岗位信息详细信息") @ApiOperation("获取岗位信息详细信息")
@PreAuthorize("@ss.hasPermi('hotake:rolesInfo:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) public R<HotakeRolesInfoDto> getInfo(@PathVariable("id") Long id)
{ {
return AjaxResult.success(hotakeRolesInfoService.selectHotakeRolesInfoById(id)); return R.ok(hotakeRolesInfoService.selectHotakeRolesInfoDtoById(id));
} }
/** /**
* 新增岗位信息 * 新增岗位信息
*/ */
@ApiOperation("新增岗位信息") @ApiOperation("新增岗位信息")
@PreAuthorize("@ss.hasPermi('hotake:rolesInfo:add')")
@Log(title = "岗位信息", businessType = BusinessType.INSERT) @Log(title = "岗位信息", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody HotakeRolesInfo hotakeRolesInfo) public AjaxResult add(@RequestBody HotakeRolesInfo hotakeRolesInfo)
@@ -84,7 +78,6 @@ public class HotakeRolesInfoController extends BaseController
* 修改岗位信息 * 修改岗位信息
*/ */
@ApiOperation("修改岗位信息") @ApiOperation("修改岗位信息")
@PreAuthorize("@ss.hasPermi('hotake:rolesInfo:edit')")
@Log(title = "岗位信息", businessType = BusinessType.UPDATE) @Log(title = "岗位信息", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody HotakeRolesInfo hotakeRolesInfo) public AjaxResult edit(@RequestBody HotakeRolesInfo hotakeRolesInfo)
@@ -96,11 +89,23 @@ public class HotakeRolesInfoController extends BaseController
* 删除岗位信息 * 删除岗位信息
*/ */
@ApiOperation("删除岗位信息") @ApiOperation("删除岗位信息")
@PreAuthorize("@ss.hasPermi('hotake:rolesInfo:remove')")
@Log(title = "岗位信息", businessType = BusinessType.DELETE) @Log(title = "岗位信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) public R<?> remove(@PathVariable Long[] ids)
{ {
return toAjax(hotakeRolesInfoService.deleteHotakeRolesInfoByIds(ids)); return R.ok(hotakeRolesInfoService.deleteHotakeRolesInfoByIds(ids));
} }
/**
* 保存岗位信息
*/
@ApiOperation("保存岗位信息")
@Log(title = "保存岗位信息", businessType = BusinessType.INSERT)
@PostMapping("/save")
public R<HotakeRolesInfoDto> save(@RequestBody HotakeRolesInfoDto hotakeRolesInfo)
{
return R.ok(hotakeRolesInfoService.saveHotakeRolesInfo(hotakeRolesInfo));
}
} }

View File

@@ -79,7 +79,7 @@ public class SysDictDataController extends BaseController
*/ */
@ApiOperation("根据字典类型查询字典数据信息(hotake_languages_type:语言类型,hotake_skills_tool_type:技能工具类型," + @ApiOperation("根据字典类型查询字典数据信息(hotake_languages_type:语言类型,hotake_skills_tool_type:技能工具类型," +
"role_level:岗位级别,role_location_type:岗位地点类型,role_select_job_type:岗位选择工作类型,role_type:岗位类型," + "role_level:岗位级别,role_location_type:岗位地点类型,role_select_job_type:岗位选择工作类型,role_type:岗位类型," +
"role_required_skills:所需技能,role_nice_to_have_skills:拥有的好技能,role_education_requirements_type:教育要求类型," + "role_required_skills:所需技能,role_nice_to_have_skills:加分技能,role_education_requirements_type:教育要求类型," +
"role_certification_licenses:岗位所需证书,role_benefits:岗位福利,role_publishing_channels:发布渠道)") "role_certification_licenses:岗位所需证书,role_benefits:岗位福利,role_publishing_channels:发布渠道)")
@GetMapping(value = "/type/{dictType}") @GetMapping(value = "/type/{dictType}")
public R<List<SysDictData>> dictType(@PathVariable String dictType) public R<List<SysDictData>> dictType(@PathVariable String dictType)

View File

@@ -177,4 +177,4 @@ chatGpt:
http: http:
client: client:
connect-timeout-seconds: 10 connect-timeout-seconds: 600

View File

@@ -36,6 +36,9 @@ spring:
restart: restart:
# 热部署开关 # 热部署开关
enabled: true enabled: true
mvc:
async:
request-timeout: 120000
# token配置 # token配置
token: token:

View File

@@ -55,6 +55,10 @@ systemSysRegisterService10007 = Registration failed, please contact the system a
systemEmailUtil10001 = Sending Email Failed systemEmailUtil10001 = Sending Email Failed
systemR10001 = Operation Successful systemR10001 = Operation Successful
systemR10002 = Operation Failed systemR10002 = Operation Failed
HotakeRolesInfoServiceImpl10001 = The job information is abnormal. Please try again later
#管理端 #管理端
# manager.页面,字段 = User Manager # manager.页面,字段 = User Manager
VerificationEmailTiTle = Your verification code VerificationEmailTiTle = Your verification code

View File

@@ -54,6 +54,9 @@ systemEmailUtil10001 = 发送邮件失败
systemR10001 = 操作成功 systemR10001 = 操作成功
systemR10002 = 操作失败 systemR10002 = 操作失败
HotakeRolesInfoServiceImpl10001 = 岗位信息异常,请稍后再试
#管理端 #管理端
# manager.页面,字段 = 用户管理 # manager.页面,字段 = 用户管理
VerificationEmailTiTle = 你的验证码 VerificationEmailTiTle = 你的验证码

View File

@@ -177,4 +177,4 @@ chatGpt:
http: http:
client: client:
connect-timeout-seconds: 10 connect-timeout-seconds: 600

View File

@@ -36,6 +36,9 @@ spring:
restart: restart:
# 热部署开关 # 热部署开关
enabled: true enabled: true
mvc:
async:
request-timeout: 120000
# token配置 # token配置
token: token:

View File

@@ -55,6 +55,10 @@ systemSysRegisterService10007 = Registration failed, please contact the system a
systemEmailUtil10001 = Sending Email Failed systemEmailUtil10001 = Sending Email Failed
systemR10001 = Operation Successful systemR10001 = Operation Successful
systemR10002 = Operation Failed systemR10002 = Operation Failed
HotakeRolesInfoServiceImpl10001 = The job information is abnormal. Please try again later
#管理端 #管理端
# manager.页面,字段 = User Manager # manager.页面,字段 = User Manager
VerificationEmailTiTle = Your verification code VerificationEmailTiTle = Your verification code

View File

@@ -54,6 +54,9 @@ systemEmailUtil10001 = 发送邮件失败
systemR10001 = 操作成功 systemR10001 = 操作成功
systemR10002 = 操作失败 systemR10002 = 操作失败
HotakeRolesInfoServiceImpl10001 = 岗位信息异常,请稍后再试
#管理端 #管理端
# manager.页面,字段 = 用户管理 # manager.页面,字段 = 用户管理
VerificationEmailTiTle = 你的验证码 VerificationEmailTiTle = 你的验证码

View File

@@ -0,0 +1,35 @@
package com.vetti.common.enums;
/**
* 岗位操作步骤
*/
public enum RoleOperStepsEnum {
STEPS_1("1", "第一步"),
STEPS_2("2", "第二步"),
STEPS_3("3", "第三步"),
STEPS_4("4", "第四步"),
STEPS_5("5", "第五步"),
STEPS_6("6", "第六步"),
;
private final String code;
private final String info;
RoleOperStepsEnum(String code, String info)
{
this.code = code;
this.info = info;
}
public String getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}

View File

@@ -0,0 +1,33 @@
package com.vetti.common.enums;
/**
* 岗位状态
*/
public enum RoleStatusEnum {
PAUSE("pause", "暂停"),
OPEN("open", "发布"),
EDITING("editing", "编辑中"),
ARCHIVED("archived", "已归档"),
;
private final String code;
private final String info;
RoleStatusEnum(String code, String info)
{
this.code = code;
this.info = info;
}
public String getCode()
{
return code;
}
public String getInfo()
{
return info;
}
}

View File

@@ -3,11 +3,7 @@ package com.vetti.common.utils;
import java.lang.management.ManagementFactory; import java.lang.management.ManagementFactory;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.*;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date; import java.util.Date;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
@@ -217,4 +213,52 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
return calculateDifference(startDate, endDate, unit); return calculateDifference(startDate, endDate, unit);
} }
/**
* 计算指定时间距离当前时间的相对描述(小时前/天前/周前)
* @param createTime 创建时间Date类型
* @return 相对时间描述2小时前、3天前、1周前
*/
public static String getTimeAgo(Date createTime) {
// 空值校验
if (createTime == null) {
return "Unknown time";
}
// 将Date转换为LocalDateTime默认使用系统时区
LocalDateTime createLocalTime = createTime.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
LocalDateTime now = LocalDateTime.now();
// 计算时间差(秒)
Duration duration = Duration.between(createLocalTime, now);
long seconds = duration.getSeconds();
// 处理未来时间的情况
if (seconds < 0) {
return "Future time";
}
// 定义时间单位换算
long secondsPerHour = 3600;
long secondsPerDay = secondsPerHour * 24;
long secondsPerWeek = secondsPerDay * 7;
// 计算不同维度的时间差
long hours = seconds / secondsPerHour;
long days = seconds / secondsPerDay;
long weeks = seconds / secondsPerWeek;
// 按优先级返回(周 > 天 > 小时)
if (weeks >= 1) {
return weeks + "weeks ago";
} else if (days >= 1) {
return days + "days ago";
} else if (hours >= 1) {
return hours + "hours ago";
} else {
return "Just now"; // 1小时内
}
}
} }

View File

@@ -0,0 +1,46 @@
package com.vetti.hotake.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModelProperty;
import com.vetti.common.annotation.Excel;
import com.vetti.common.core.domain.BaseEntity;
/**
* 初步筛选问题回答记录信息对象 hotake_init_scre_questions_reply_record_info
*
* @author wangxiangshun
* @date 2025-12-14
*/
@Data
@Accessors(chain = true)
public class HotakeInitScreQuestionsReplyRecordInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
@ApiModelProperty("主键ID")
private Long id;
/** 岗位ID */
@ApiModelProperty("岗位ID")
@Excel(name = "岗位ID")
private Long roleId;
/** 候选人ID */
@ApiModelProperty("候选人ID")
@Excel(name = "候选人ID")
private Long candidateId;
/** 问题ID */
@ApiModelProperty("问题ID")
@Excel(name = "问题ID")
private Long questionId;
/** 答案 */
@ApiModelProperty("答案")
@Excel(name = "答案")
private String answerConnect;
}

View File

@@ -0,0 +1,61 @@
package com.vetti.hotake.domain;
import com.vetti.hotake.domain.dto.AnswerOptionsDto;
import lombok.Data;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModelProperty;
import com.vetti.common.annotation.Excel;
import com.vetti.common.core.domain.BaseEntity;
import java.util.List;
/**
* 初步筛选问题信息对象 hotake_initial_screening_questions_info
*
* @author wangxiangshun
* @date 2025-12-14
*/
@Data
@Accessors(chain = true)
public class HotakeInitialScreeningQuestionsInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
@ApiModelProperty("主键ID")
private Long id;
/** 岗位ID */
@ApiModelProperty("岗位ID")
@Excel(name = "岗位ID")
private Long roleId;
/** 招聘人ID */
@ApiModelProperty("招聘人ID")
@Excel(name = "招聘人ID")
private Long recruiterId;
/** 问题 */
@ApiModelProperty("问题")
@Excel(name = "问题")
private String questionTitle;
/** 问题类型 */
@ApiModelProperty("问题类型")
@Excel(name = "问题类型")
private String questionType;
/** 问题答案json */
@ApiModelProperty("问题答案json")
@Excel(name = "问题答案json")
private String answerOptions;
/** 是否是必填项 */
@ApiModelProperty("是否是必填项")
@Excel(name = "是否是必填项")
private String requiredField;
@ApiModelProperty("问题答案选项数据集合")
private List<AnswerOptionsDto> answerOptionsList;
}

View File

@@ -23,6 +23,9 @@ public class HotakeRolesInfo extends BaseEntity
@ApiModelProperty("主键ID") @ApiModelProperty("主键ID")
private Long id; private Long id;
@ApiModelProperty("UUID主键")
private String uuid;
/** 招聘人ID */ /** 招聘人ID */
@ApiModelProperty("招聘人ID") @ApiModelProperty("招聘人ID")
@Excel(name = "招聘人ID") @Excel(name = "招聘人ID")
@@ -33,6 +36,12 @@ public class HotakeRolesInfo extends BaseEntity
@Excel(name = "岗位名称") @Excel(name = "岗位名称")
private String roleName; private String roleName;
@ApiModelProperty("招聘公司名称")
private String companyName;
@ApiModelProperty("岗位类型")
private String roleType;
/** 工作地点类型 */ /** 工作地点类型 */
@ApiModelProperty("工作地点类型") @ApiModelProperty("工作地点类型")
@Excel(name = "工作地点类型") @Excel(name = "工作地点类型")
@@ -116,7 +125,7 @@ public class HotakeRolesInfo extends BaseEntity
/** 角色福利 */ /** 角色福利 */
@ApiModelProperty("角色福利") @ApiModelProperty("角色福利")
@Excel(name = "角色福利") @Excel(name = "角色福利")
private String roleBenefits; private String roleBenefitsJson;
/** 发布渠道 */ /** 发布渠道 */
@ApiModelProperty("发布渠道") @ApiModelProperty("发布渠道")
@@ -143,16 +152,19 @@ public class HotakeRolesInfo extends BaseEntity
@Excel(name = "发布日期") @Excel(name = "发布日期")
private String posted; private String posted;
/** 数据类型normal:正常draft:草稿) */ @ApiModelProperty("语言")
@ApiModelProperty("数据类型normal:正常draft:草稿)") private String languages;
@Excel(name = "数据类型", readConverterExp = "n=ormal:正常draft:草稿")
@ApiModelProperty("数据类型release:发布Jobdraft:草稿,template:模版)")
private String dataType; private String dataType;
/** 当前操作步骤 */ /** 当前操作步骤 */
@ApiModelProperty("当前操作步骤") @ApiModelProperty("当前操作步骤()")
@Excel(name = "当前操作步骤") @Excel(name = "当前操作步骤")
private String operStep; private String operStep;
@ApiModelProperty("当前岗位状态(pause:暂停,archived:关闭/归档,open:发布,editing:编辑中)")
private String status;
} }

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 问题答案
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class AnswerOptionsDto {
@ApiModelProperty("答案选项")
private String answers;
}

View File

@@ -0,0 +1,43 @@
package com.vetti.hotake.domain.dto;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.roleDto.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 岗位信息 hotake_cv_info
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class HotakeRolesInfoDto extends HotakeRolesInfo {
@ApiModelProperty("所需技能数据集合")
private List<RequiredSkillsDto> requiredSkillsList;
@ApiModelProperty("加分技能数据集合")
private List<NiceToHaveSkillsDto> niceToHaveSkillsList;
@ApiModelProperty("教育要求")
private EducationRequirementsDto educationRequirements;
@ApiModelProperty("证书数据集合")
private List<CertificationsLicensesDto> certificationsLicensesList;
@ApiModelProperty("角色福利数据集合")
private List<RoleBenefitsDto> roleBenefitsList;
@ApiModelProperty("发布渠道数据集合")
private List<PublishingChannelsDto> publishingChannelsList;
@ApiModelProperty("初步筛选问题数据集合")
private List<HotakeInitialScreeningQuestionsInfo> initialScreeningQuestionsInfoList;
}

View File

@@ -0,0 +1,22 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 证书信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class CertificationsLicensesDto {
@ApiModelProperty("证书Key/自定义证书名")
private String val;
@ApiModelProperty("standard:标准证书,customize:自定义")
private String type;
}

View File

@@ -0,0 +1,22 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 教育要求信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class EducationRequirementsDto {
@ApiModelProperty("学历专业名称")
private String academicMajor;
@ApiModelProperty("学位")
private String degree;
}

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位加分技能信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class NiceToHaveSkillsDto {
@ApiModelProperty("加分技能Key")
private String keyValue;
}

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位发布渠道信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class PublishingChannelsDto {
@ApiModelProperty("发布渠道Key")
private String keyValue;
}

View File

@@ -0,0 +1,20 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位所需技能信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class RequiredSkillsDto {
@ApiModelProperty("所需技能Key")
private String keyValue;
}

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位福利信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class RoleBenefitsDto {
@ApiModelProperty("福利Key")
private String keyValue;
}

View File

@@ -0,0 +1,69 @@
package com.vetti.hotake.mapper;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitScreQuestionsReplyRecordInfo;
/**
* 初步筛选问题回答记录信息Mapper接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface HotakeInitScreQuestionsReplyRecordInfoMapper
{
/**
* 查询初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 初步筛选问题回答记录信息
*/
public HotakeInitScreQuestionsReplyRecordInfo selectHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 查询初步筛选问题回答记录信息列表
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 初步筛选问题回答记录信息集合
*/
public List<HotakeInitScreQuestionsReplyRecordInfo> selectHotakeInitScreQuestionsReplyRecordInfoList(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int insertHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 修改初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int updateHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 删除初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 批量删除初步筛选问题回答记录信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoByIds(Long[] ids);
/**
* 批量新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfoList 初步筛选问题回答记录信息列表
* @return 结果
*/
public int batchInsertHotakeInitScreQuestionsReplyRecordInfo(List<HotakeInitScreQuestionsReplyRecordInfo> hotakeInitScreQuestionsReplyRecordInfoList);
}

View File

@@ -0,0 +1,69 @@
package com.vetti.hotake.mapper;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
/**
* 初步筛选问题信息Mapper接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface HotakeInitialScreeningQuestionsInfoMapper
{
/**
* 查询初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 初步筛选问题信息
*/
public HotakeInitialScreeningQuestionsInfo selectHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 查询初步筛选问题信息列表
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 初步筛选问题信息集合
*/
public List<HotakeInitialScreeningQuestionsInfo> selectHotakeInitialScreeningQuestionsInfoList(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int insertHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 修改初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int updateHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 删除初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 批量删除初步筛选问题信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoByIds(Long[] ids);
/**
* 批量新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfoList 初步筛选问题信息列表
* @return 结果
*/
public int batchInsertHotakeInitialScreeningQuestionsInfo(List<HotakeInitialScreeningQuestionsInfo> hotakeInitialScreeningQuestionsInfoList);
}

View File

@@ -66,4 +66,14 @@ public interface HotakeRolesInfoMapper
*/ */
public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList); public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList);
/**
* 修改岗位信息
*
* @param hotakeRolesInfo 岗位信息
* @return 结果
*/
public int updateAllHotakeRolesInfo(HotakeRolesInfo hotakeRolesInfo);
} }

View File

@@ -0,0 +1,70 @@
package com.vetti.hotake.service;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitScreQuestionsReplyRecordInfo;
/**
* 初步筛选问题回答记录信息Service接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface IHotakeInitScreQuestionsReplyRecordInfoService
{
/**
* 查询初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 初步筛选问题回答记录信息
*/
public HotakeInitScreQuestionsReplyRecordInfo selectHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 查询初步筛选问题回答记录信息列表
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 初步筛选问题回答记录信息集合
*/
public List<HotakeInitScreQuestionsReplyRecordInfo> selectHotakeInitScreQuestionsReplyRecordInfoList(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int insertHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 修改初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int updateHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 批量删除初步筛选问题回答记录信息
*
* @param ids 需要删除的初步筛选问题回答记录信息主键集合
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoByIds(Long[] ids);
/**
* 删除初步筛选问题回答记录信息信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 批量新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfoList 初步筛选问题回答记录信息列表
* @return 结果
*/
public int batchInsertHotakeInitScreQuestionsReplyRecordInfo(List<HotakeInitScreQuestionsReplyRecordInfo> hotakeInitScreQuestionsReplyRecordInfoList);
}

View File

@@ -0,0 +1,70 @@
package com.vetti.hotake.service;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
/**
* 初步筛选问题信息Service接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface IHotakeInitialScreeningQuestionsInfoService
{
/**
* 查询初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 初步筛选问题信息
*/
public HotakeInitialScreeningQuestionsInfo selectHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 查询初步筛选问题信息列表
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 初步筛选问题信息集合
*/
public List<HotakeInitialScreeningQuestionsInfo> selectHotakeInitialScreeningQuestionsInfoList(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int insertHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 修改初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int updateHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 批量删除初步筛选问题信息
*
* @param ids 需要删除的初步筛选问题信息主键集合
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoByIds(Long[] ids);
/**
* 删除初步筛选问题信息信息
*
* @param id 初步筛选问题信息主键
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 批量新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfoList 初步筛选问题信息列表
* @return 结果
*/
public int batchInsertHotakeInitialScreeningQuestionsInfo(List<HotakeInitialScreeningQuestionsInfo> hotakeInitialScreeningQuestionsInfoList);
}

View File

@@ -2,6 +2,7 @@ package com.vetti.hotake.service;
import java.util.List; import java.util.List;
import com.vetti.hotake.domain.HotakeRolesInfo; import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.HotakeRolesInfoDto;
/** /**
* 岗位信息Service接口 * 岗位信息Service接口
@@ -19,6 +20,15 @@ public interface IHotakeRolesInfoService
*/ */
public HotakeRolesInfo selectHotakeRolesInfoById(Long id); public HotakeRolesInfo selectHotakeRolesInfoById(Long id);
/**
* 查询岗位信息
*
* @param id 岗位信息主键
* @return 岗位信息
*/
public HotakeRolesInfoDto selectHotakeRolesInfoDtoById(Long id);
/** /**
* 查询岗位信息列表 * 查询岗位信息列表
* *
@@ -67,4 +77,13 @@ public interface IHotakeRolesInfoService
*/ */
public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList); public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList);
/**
* 保存岗位信息
*
* @param hotakeRolesInfo 岗位信息
* @return 结果
*/
public HotakeRolesInfoDto saveHotakeRolesInfo(HotakeRolesInfoDto hotakeRolesInfo);
} }

View File

@@ -0,0 +1,118 @@
package com.vetti.hotake.service.impl;
import java.util.List;
import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.vetti.hotake.mapper.HotakeInitScreQuestionsReplyRecordInfoMapper;
import com.vetti.hotake.domain.HotakeInitScreQuestionsReplyRecordInfo;
import com.vetti.hotake.service.IHotakeInitScreQuestionsReplyRecordInfoService;
/**
* 初步筛选问题回答记录信息Service业务层处理
*
* @author wangxiangshun
* @date 2025-12-14
*/
@SuppressWarnings("all")
@Service
public class HotakeInitScreQuestionsReplyRecordInfoServiceImpl extends BaseServiceImpl implements IHotakeInitScreQuestionsReplyRecordInfoService
{
@Autowired
private HotakeInitScreQuestionsReplyRecordInfoMapper hotakeInitScreQuestionsReplyRecordInfoMapper;
/**
* 查询初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 初步筛选问题回答记录信息
*/
@Transactional(readOnly = true)
@Override
public HotakeInitScreQuestionsReplyRecordInfo selectHotakeInitScreQuestionsReplyRecordInfoById(Long id)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.selectHotakeInitScreQuestionsReplyRecordInfoById(id);
}
/**
* 查询初步筛选问题回答记录信息列表
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 初步筛选问题回答记录信息
*/
@Transactional(readOnly = true)
@Override
public List<HotakeInitScreQuestionsReplyRecordInfo> selectHotakeInitScreQuestionsReplyRecordInfoList(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.selectHotakeInitScreQuestionsReplyRecordInfoList(hotakeInitScreQuestionsReplyRecordInfo);
}
/**
* 新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int insertHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
hotakeInitScreQuestionsReplyRecordInfo.setCreateTime(DateUtils.getNowDate());
return hotakeInitScreQuestionsReplyRecordInfoMapper.insertHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfo);
}
/**
* 修改初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int updateHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
hotakeInitScreQuestionsReplyRecordInfo.setUpdateTime(DateUtils.getNowDate());
return hotakeInitScreQuestionsReplyRecordInfoMapper.updateHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfo);
}
/**
* 批量删除初步筛选问题回答记录信息
*
* @param ids 需要删除的初步筛选问题回答记录信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitScreQuestionsReplyRecordInfoByIds(Long[] ids)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.deleteHotakeInitScreQuestionsReplyRecordInfoByIds(ids);
}
/**
* 删除初步筛选问题回答记录信息信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitScreQuestionsReplyRecordInfoById(Long id)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.deleteHotakeInitScreQuestionsReplyRecordInfoById(id);
}
/**
* 批量新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfoList 初步筛选问题回答记录信息列表
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int batchInsertHotakeInitScreQuestionsReplyRecordInfo(List<HotakeInitScreQuestionsReplyRecordInfo> hotakeInitScreQuestionsReplyRecordInfoList){
return hotakeInitScreQuestionsReplyRecordInfoMapper.batchInsertHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfoList);
}
}

View File

@@ -0,0 +1,137 @@
package com.vetti.hotake.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.enums.FillTypeEnum;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.domain.dto.AnswerOptionsDto;
import com.vetti.hotake.mapper.HotakeInitialScreeningQuestionsInfoMapper;
import com.vetti.hotake.service.IHotakeInitialScreeningQuestionsInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 初步筛选问题信息Service业务层处理
*
* @author wangxiangshun
* @date 2025-12-14
*/
@SuppressWarnings("all")
@Service
public class HotakeInitialScreeningQuestionsInfoServiceImpl extends BaseServiceImpl implements IHotakeInitialScreeningQuestionsInfoService
{
@Autowired
private HotakeInitialScreeningQuestionsInfoMapper hotakeInitialScreeningQuestionsInfoMapper;
/**
* 查询初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 初步筛选问题信息
*/
@Transactional(readOnly = true)
@Override
public HotakeInitialScreeningQuestionsInfo selectHotakeInitialScreeningQuestionsInfoById(Long id)
{
HotakeInitialScreeningQuestionsInfo questionsInfo = hotakeInitialScreeningQuestionsInfoMapper.selectHotakeInitialScreeningQuestionsInfoById(id);
if(questionsInfo != null && StrUtil.isNotEmpty(questionsInfo.getAnswerOptions())){
List<AnswerOptionsDto> answerOptionsDtos = JSONUtil.toList(questionsInfo.getAnswerOptions(), AnswerOptionsDto.class);
questionsInfo.setAnswerOptionsList(answerOptionsDtos);
}
return questionsInfo;
}
/**
* 查询初步筛选问题信息列表
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 初步筛选问题信息
*/
@Transactional(readOnly = true)
@Override
public List<HotakeInitialScreeningQuestionsInfo> selectHotakeInitialScreeningQuestionsInfoList(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
return hotakeInitialScreeningQuestionsInfoMapper.selectHotakeInitialScreeningQuestionsInfoList(hotakeInitialScreeningQuestionsInfo);
}
/**
* 新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int insertHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
fill(FillTypeEnum.INSERT.getCode(), hotakeInitialScreeningQuestionsInfo);
if(CollectionUtil.isNotEmpty(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList())){
hotakeInitialScreeningQuestionsInfo.setAnswerOptions(JSONUtil.toJsonStr(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList()));
}else {
hotakeInitialScreeningQuestionsInfo.setAnswerOptions("");
}
return hotakeInitialScreeningQuestionsInfoMapper.insertHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfo);
}
/**
* 修改初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int updateHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
fill(FillTypeEnum.UPDATE.getCode(), hotakeInitialScreeningQuestionsInfo);
if(CollectionUtil.isNotEmpty(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList())){
hotakeInitialScreeningQuestionsInfo.setAnswerOptions(JSONUtil.toJsonStr(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList()));
}else {
hotakeInitialScreeningQuestionsInfo.setAnswerOptions("");
}
return hotakeInitialScreeningQuestionsInfoMapper.updateHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfo);
}
/**
* 批量删除初步筛选问题信息
*
* @param ids 需要删除的初步筛选问题信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitialScreeningQuestionsInfoByIds(Long[] ids)
{
return hotakeInitialScreeningQuestionsInfoMapper.deleteHotakeInitialScreeningQuestionsInfoByIds(ids);
}
/**
* 删除初步筛选问题信息信息
*
* @param id 初步筛选问题信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitialScreeningQuestionsInfoById(Long id)
{
return hotakeInitialScreeningQuestionsInfoMapper.deleteHotakeInitialScreeningQuestionsInfoById(id);
}
/**
* 批量新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfoList 初步筛选问题信息列表
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int batchInsertHotakeInitialScreeningQuestionsInfo(List<HotakeInitialScreeningQuestionsInfo> hotakeInitialScreeningQuestionsInfoList){
return hotakeInitialScreeningQuestionsInfoMapper.batchInsertHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfoList);
}
}

View File

@@ -1,16 +1,30 @@
package com.vetti.hotake.service.impl; package com.vetti.hotake.service.impl;
import java.util.List; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.vetti.common.core.service.BaseServiceImpl; import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.enums.FillTypeEnum;
import com.vetti.common.enums.RoleOperStepsEnum;
import com.vetti.common.enums.RoleStatusEnum;
import com.vetti.common.exception.ServiceException;
import com.vetti.common.utils.DateUtils; import com.vetti.common.utils.DateUtils;
import com.vetti.common.utils.MessageUtils;
import com.vetti.common.utils.SecurityUtils;
import com.vetti.common.utils.uuid.IdUtils;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.HotakeRolesInfoDto;
import com.vetti.hotake.domain.dto.roleDto.*;
import com.vetti.hotake.mapper.HotakeRolesInfoMapper;
import com.vetti.hotake.service.IHotakeInitialScreeningQuestionsInfoService;
import com.vetti.hotake.service.IHotakeRolesInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.vetti.hotake.mapper.HotakeRolesInfoMapper; import java.util.List;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.service.IHotakeRolesInfoService;
/** /**
* 岗位信息Service业务层处理 * 岗位信息Service业务层处理
@@ -25,6 +39,9 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
@Autowired @Autowired
private HotakeRolesInfoMapper hotakeRolesInfoMapper; private HotakeRolesInfoMapper hotakeRolesInfoMapper;
@Autowired
private IHotakeInitialScreeningQuestionsInfoService hotakeInitialScreeningQuestionsInfoService;
/** /**
* 查询岗位信息 * 查询岗位信息
* *
@@ -38,6 +55,62 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
return hotakeRolesInfoMapper.selectHotakeRolesInfoById(id); return hotakeRolesInfoMapper.selectHotakeRolesInfoById(id);
} }
/**
* 查询岗位详细信息
* @param id 岗位信息主键
* @return
*/
@Override
public HotakeRolesInfoDto selectHotakeRolesInfoDtoById(Long id) {
HotakeRolesInfoDto dto = new HotakeRolesInfoDto();
HotakeRolesInfo hotakeRolesInfo = hotakeRolesInfoMapper.selectHotakeRolesInfoById(id);
BeanUtil.copyProperties(hotakeRolesInfo, dto);
if(hotakeRolesInfo != null) {
String requiredSkillsJson = hotakeRolesInfo.getRequiredSkillsJson();
if(StrUtil.isNotEmpty(requiredSkillsJson)){
List<RequiredSkillsDto> requiredSkillsList = JSONUtil.toList(requiredSkillsJson, RequiredSkillsDto.class);
dto.setRequiredSkillsList(requiredSkillsList);
}
String niceToHaveSkillsJson = hotakeRolesInfo.getNiceToHaveSkillsJson();
if(StrUtil.isNotEmpty(niceToHaveSkillsJson)){
List<NiceToHaveSkillsDto> niceToHaveSkillsList = JSONUtil.toList(niceToHaveSkillsJson, NiceToHaveSkillsDto.class);
dto.setNiceToHaveSkillsList(niceToHaveSkillsList);
}
String educationRequirementsJson = hotakeRolesInfo.getEducationRequirementsJson();
if(StrUtil.isNotEmpty(educationRequirementsJson)){
EducationRequirementsDto educationRequirements = JSONUtil.toBean(educationRequirementsJson, EducationRequirementsDto.class);
dto.setEducationRequirements(educationRequirements);
}
String certificationsLicensesJson = hotakeRolesInfo.getCertificationsLicensesJson();
if(StrUtil.isNotEmpty(certificationsLicensesJson)){
List<CertificationsLicensesDto> certificationsLicensesList = JSONUtil.toList(certificationsLicensesJson, CertificationsLicensesDto.class);
dto.setCertificationsLicensesList(certificationsLicensesList);
}
String roleBenefitsJson = hotakeRolesInfo.getRoleBenefitsJson();
if(StrUtil.isNotEmpty(roleBenefitsJson)){
List<RoleBenefitsDto> roleBenefitsList = JSONUtil.toList(roleBenefitsJson, RoleBenefitsDto.class);
dto.setRoleBenefitsList(roleBenefitsList);
}
String publishingChannelsJson = hotakeRolesInfo.getPublishingChannelsJson();
if(StrUtil.isNotEmpty(publishingChannelsJson)){
List<PublishingChannelsDto> publishingChannelsList = JSONUtil.toList(publishingChannelsJson, PublishingChannelsDto.class);
dto.setPublishingChannelsList(publishingChannelsList);
}
HotakeInitialScreeningQuestionsInfo queryQuestion = new HotakeInitialScreeningQuestionsInfo();
queryQuestion.setRoleId(id);
List<HotakeInitialScreeningQuestionsInfo> questionsInfoList = hotakeInitialScreeningQuestionsInfoService.selectHotakeInitialScreeningQuestionsInfoList(queryQuestion);
dto.setInitialScreeningQuestionsInfoList(questionsInfoList);
}
return dto;
}
/** /**
* 查询岗位信息列表 * 查询岗位信息列表
* *
@@ -48,7 +121,16 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
@Override @Override
public List<HotakeRolesInfo> selectHotakeRolesInfoList(HotakeRolesInfo hotakeRolesInfo) public List<HotakeRolesInfo> selectHotakeRolesInfoList(HotakeRolesInfo hotakeRolesInfo)
{ {
return hotakeRolesInfoMapper.selectHotakeRolesInfoList(hotakeRolesInfo); hotakeRolesInfo.setRecruiterId(SecurityUtils.getUserId());
List<HotakeRolesInfo> rolesInfoList = hotakeRolesInfoMapper.selectHotakeRolesInfoList(hotakeRolesInfo);
//计算一个发布日期
if(CollectionUtil.isNotEmpty(rolesInfoList)){
for (HotakeRolesInfo rolesInfo : rolesInfoList) {
String posted = DateUtils.getTimeAgo(rolesInfo.getCreateTime());
rolesInfo.setPosted(posted);
}
}
return rolesInfoList;
} }
/** /**
@@ -115,4 +197,113 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList){ public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList){
return hotakeRolesInfoMapper.batchInsertHotakeRolesInfo(hotakeRolesInfoList); return hotakeRolesInfoMapper.batchInsertHotakeRolesInfo(hotakeRolesInfoList);
} }
/**
* 保存岗位信息
* @param hotakeRolesInfo 岗位信息
* @return
*/
@Override
public HotakeRolesInfoDto saveHotakeRolesInfo(HotakeRolesInfoDto hotakeRolesInfo) {
//先看岗位信息ID是否存在
HotakeRolesInfo rolesInfo = null;
Long rolesInfoId = 0L;
if(hotakeRolesInfo.getId() == null){
//先保存一个空数据
HotakeRolesInfo info = new HotakeRolesInfo();
fill(FillTypeEnum.INSERT.getCode(), info);
info.setUuid(IdUtils.simpleUUID());
insertHotakeRolesInfo(info);
rolesInfoId = info.getId();
}else{
rolesInfoId = hotakeRolesInfo.getId();
}
rolesInfo = selectHotakeRolesInfoById(rolesInfoId);
if(rolesInfo == null){
throw new ServiceException(MessageUtils.messageCustomize("HotakeRolesInfoServiceImpl10001"));
}
//按照步骤来进行保存对应的数据
if(RoleOperStepsEnum.STEPS_1.getCode().equals(hotakeRolesInfo.getOperStep())){
rolesInfo.setRoleName(hotakeRolesInfo.getRoleName());
rolesInfo.setCompanyName(hotakeRolesInfo.getCompanyName());
rolesInfo.setRoleType(hotakeRolesInfo.getRoleType());
rolesInfo.setJobLevel(hotakeRolesInfo.getJobLevel());
rolesInfo.setJobExperience(hotakeRolesInfo.getJobExperience());
rolesInfo.setLocationType(hotakeRolesInfo.getLocationType());
rolesInfo.setJobType(hotakeRolesInfo.getJobType());
rolesInfo.setSalaryStart(hotakeRolesInfo.getSalaryStart());
rolesInfo.setSalaryEnd(hotakeRolesInfo.getSalaryEnd());
}
if(RoleOperStepsEnum.STEPS_2.getCode().equals(hotakeRolesInfo.getOperStep())){
if(CollectionUtil.isNotEmpty(hotakeRolesInfo.getRequiredSkillsList())){
String requiredSkillsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getRequiredSkillsList());
rolesInfo.setRequiredSkillsJson(requiredSkillsJson);
}else{
rolesInfo.setRequiredSkillsJson("");
}
if(CollectionUtil.isNotEmpty(hotakeRolesInfo.getNiceToHaveSkillsList())){
String niceToHaveSkillsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getNiceToHaveSkillsList());
rolesInfo.setNiceToHaveSkillsJson(niceToHaveSkillsJson);
}else{
rolesInfo.setNiceToHaveSkillsJson("");
}
if(hotakeRolesInfo.getEducationRequirements() != null){
rolesInfo.setEducationRequirementsJson(JSONUtil.toJsonStr(hotakeRolesInfo.getEducationRequirements()));
}else {
rolesInfo.setEducationRequirementsJson("");
}
if (CollectionUtil.isNotEmpty(hotakeRolesInfo.getCertificationsLicensesList())){
String certificationsLicensesJson = JSONUtil.toJsonStr(hotakeRolesInfo.getCertificationsLicensesList());
rolesInfo.setCertificationsLicensesJson(certificationsLicensesJson);
}else{
rolesInfo.setCertificationsLicensesJson("");
}
}
if(RoleOperStepsEnum.STEPS_3.getCode().equals(hotakeRolesInfo.getOperStep())){
rolesInfo.setDescriptionTone(hotakeRolesInfo.getDescriptionTone());
rolesInfo.setAboutRole(hotakeRolesInfo.getAboutRole());
rolesInfo.setResponsibilities(hotakeRolesInfo.getResponsibilities());
if (CollectionUtil.isNotEmpty(hotakeRolesInfo.getRoleBenefitsList())){
String roleBenefitsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getRoleBenefitsList());
rolesInfo.setRoleBenefitsJson(roleBenefitsJson);
}else{
rolesInfo.setRoleBenefitsJson("");
}
}
if(RoleOperStepsEnum.STEPS_4.getCode().equals(hotakeRolesInfo.getOperStep())){
}
if(RoleOperStepsEnum.STEPS_5.getCode().equals(hotakeRolesInfo.getOperStep())){
}
if(RoleOperStepsEnum.STEPS_6.getCode().equals(hotakeRolesInfo.getOperStep())){
if (CollectionUtil.isNotEmpty(hotakeRolesInfo.getPublishingChannelsList())){
String publishingChannelsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getPublishingChannelsList());
rolesInfo.setPublishingChannelsJson(publishingChannelsJson);
}else{
rolesInfo.setPublishingChannelsJson("");
}
rolesInfo.setPublishingScheduleDate(hotakeRolesInfo.getPublishingScheduleDate());
rolesInfo.setPublishingScheduleTime(hotakeRolesInfo.getPublishingScheduleTime());
rolesInfo.setApplicationDeadline(hotakeRolesInfo.getApplicationDeadline());
}
//默认是编辑中状态
if(StrUtil.isEmpty(hotakeRolesInfo.getStatus())){
rolesInfo.setStatus(RoleStatusEnum.EDITING.getCode());
}
rolesInfo.setDataType(hotakeRolesInfo.getDataType());
rolesInfo.setLanguages(hotakeRolesInfo.getLanguages());
rolesInfo.setOperStep(hotakeRolesInfo.getOperStep());
rolesInfo.setRecruiterId(SecurityUtils.getUserId());
fill(FillTypeEnum.UPDATE.getCode(), rolesInfo);
hotakeRolesInfoMapper.updateAllHotakeRolesInfo(rolesInfo);
//查询返回所有的结果数据
HotakeRolesInfoDto rolesInfoDto = selectHotakeRolesInfoDtoById(rolesInfo.getId());
return rolesInfoDto;
}
} }

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vetti.hotake.mapper.HotakeInitScreQuestionsReplyRecordInfoMapper">
<resultMap type="HotakeInitScreQuestionsReplyRecordInfo" id="HotakeInitScreQuestionsReplyRecordInfoResult">
<result property="id" column="id" />
<result property="roleId" column="role_id" />
<result property="candidateId" column="candidate_id" />
<result property="questionId" column="question_id" />
<result property="answerConnect" column="answer_connect" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectHotakeInitScreQuestionsReplyRecordInfoVo">
select id, role_id, candidate_id, question_id, answer_connect, del_flag, create_by, create_time, update_by, update_time, remark from hotake_init_scre_questions_reply_record_info
</sql>
<select id="selectHotakeInitScreQuestionsReplyRecordInfoList" parameterType="HotakeInitScreQuestionsReplyRecordInfo" resultMap="HotakeInitScreQuestionsReplyRecordInfoResult">
<include refid="selectHotakeInitScreQuestionsReplyRecordInfoVo"/>
<where>
<if test="roleId != null "> and role_id = #{roleId}</if>
<if test="candidateId != null "> and candidate_id = #{candidateId}</if>
<if test="questionId != null "> and question_id = #{questionId}</if>
<if test="answerConnect != null and answerConnect != ''"> and answer_connect = #{answerConnect}</if>
</where>
</select>
<select id="selectHotakeInitScreQuestionsReplyRecordInfoById" parameterType="Long" resultMap="HotakeInitScreQuestionsReplyRecordInfoResult">
<include refid="selectHotakeInitScreQuestionsReplyRecordInfoVo"/>
where id = #{id}
</select>
<insert id="insertHotakeInitScreQuestionsReplyRecordInfo" parameterType="HotakeInitScreQuestionsReplyRecordInfo" useGeneratedKeys="true" keyProperty="id">
insert into hotake_init_scre_questions_reply_record_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="roleId != null">role_id,</if>
<if test="candidateId != null">candidate_id,</if>
<if test="questionId != null">question_id,</if>
<if test="answerConnect != null">answer_connect,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="roleId != null">#{roleId},</if>
<if test="candidateId != null">#{candidateId},</if>
<if test="questionId != null">#{questionId},</if>
<if test="answerConnect != null">#{answerConnect},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateHotakeInitScreQuestionsReplyRecordInfo" parameterType="HotakeInitScreQuestionsReplyRecordInfo">
update hotake_init_scre_questions_reply_record_info
<trim prefix="SET" suffixOverrides=",">
<if test="roleId != null">role_id = #{roleId},</if>
<if test="candidateId != null">candidate_id = #{candidateId},</if>
<if test="questionId != null">question_id = #{questionId},</if>
<if test="answerConnect != null">answer_connect = #{answerConnect},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteHotakeInitScreQuestionsReplyRecordInfoById" parameterType="Long">
delete from hotake_init_scre_questions_reply_record_info where id = #{id}
</delete>
<delete id="deleteHotakeInitScreQuestionsReplyRecordInfoByIds" parameterType="String">
delete from hotake_init_scre_questions_reply_record_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="batchInsertHotakeInitScreQuestionsReplyRecordInfo">
insert into hotake_init_scre_questions_reply_record_info( id, role_id, candidate_id, question_id, answer_connect, del_flag, create_by, create_time, update_by, update_time, remark) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.roleId}, #{item.candidateId}, #{item.questionId}, #{item.answerConnect}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
</foreach>
</insert>
</mapper>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vetti.hotake.mapper.HotakeInitialScreeningQuestionsInfoMapper">
<resultMap type="HotakeInitialScreeningQuestionsInfo" id="HotakeInitialScreeningQuestionsInfoResult">
<result property="id" column="id" />
<result property="roleId" column="role_id" />
<result property="recruiterId" column="recruiter_id" />
<result property="questionTitle" column="question_title" />
<result property="questionType" column="question_type" />
<result property="answerOptions" column="answer_options" />
<result property="requiredField" column="required_field" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectHotakeInitialScreeningQuestionsInfoVo">
select id, role_id, recruiter_id, question_title, question_type, answer_options, required_field, del_flag, create_by, create_time, update_by, update_time, remark from hotake_initial_screening_questions_info
</sql>
<select id="selectHotakeInitialScreeningQuestionsInfoList" parameterType="HotakeInitialScreeningQuestionsInfo" resultMap="HotakeInitialScreeningQuestionsInfoResult">
<include refid="selectHotakeInitialScreeningQuestionsInfoVo"/>
<where>
<if test="roleId != null "> and role_id = #{roleId}</if>
<if test="recruiterId != null "> and recruiter_id = #{recruiterId}</if>
<if test="questionTitle != null and questionTitle != ''"> and question_title = #{questionTitle}</if>
<if test="questionType != null and questionType != ''"> and question_type = #{questionType}</if>
<if test="answerOptions != null and answerOptions != ''"> and answer_options = #{answerOptions}</if>
<if test="requiredField != null and requiredField != ''"> and required_field = #{requiredField}</if>
</where>
</select>
<select id="selectHotakeInitialScreeningQuestionsInfoById" parameterType="Long" resultMap="HotakeInitialScreeningQuestionsInfoResult">
<include refid="selectHotakeInitialScreeningQuestionsInfoVo"/>
where id = #{id}
</select>
<insert id="insertHotakeInitialScreeningQuestionsInfo" parameterType="HotakeInitialScreeningQuestionsInfo" useGeneratedKeys="true" keyProperty="id">
insert into hotake_initial_screening_questions_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="roleId != null">role_id,</if>
<if test="recruiterId != null">recruiter_id,</if>
<if test="questionTitle != null">question_title,</if>
<if test="questionType != null">question_type,</if>
<if test="answerOptions != null">answer_options,</if>
<if test="requiredField != null">required_field,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="roleId != null">#{roleId},</if>
<if test="recruiterId != null">#{recruiterId},</if>
<if test="questionTitle != null">#{questionTitle},</if>
<if test="questionType != null">#{questionType},</if>
<if test="answerOptions != null">#{answerOptions},</if>
<if test="requiredField != null">#{requiredField},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateHotakeInitialScreeningQuestionsInfo" parameterType="HotakeInitialScreeningQuestionsInfo">
update hotake_initial_screening_questions_info
<trim prefix="SET" suffixOverrides=",">
<if test="roleId != null">role_id = #{roleId},</if>
<if test="recruiterId != null">recruiter_id = #{recruiterId},</if>
<if test="questionTitle != null">question_title = #{questionTitle},</if>
<if test="questionType != null">question_type = #{questionType},</if>
<if test="answerOptions != null">answer_options = #{answerOptions},</if>
<if test="requiredField != null">required_field = #{requiredField},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteHotakeInitialScreeningQuestionsInfoById" parameterType="Long">
delete from hotake_initial_screening_questions_info where id = #{id}
</delete>
<delete id="deleteHotakeInitialScreeningQuestionsInfoByIds" parameterType="String">
delete from hotake_initial_screening_questions_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="batchInsertHotakeInitialScreeningQuestionsInfo">
insert into hotake_initial_screening_questions_info( id, role_id, recruiter_id, question_title, question_type, answer_options, required_field, del_flag, create_by, create_time, update_by, update_time, remark) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.roleId}, #{item.recruiterId}, #{item.questionTitle}, #{item.questionType}, #{item.answerOptions}, #{item.requiredField}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
</foreach>
</insert>
</mapper>

View File

@@ -6,8 +6,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="HotakeRolesInfo" id="HotakeRolesInfoResult"> <resultMap type="HotakeRolesInfo" id="HotakeRolesInfoResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="uuid" column="uuid" />
<result property="recruiterId" column="recruiter_id" /> <result property="recruiterId" column="recruiter_id" />
<result property="roleName" column="role_name" /> <result property="roleName" column="role_name" />
<result property="companyName" column="company_name" />
<result property="roleType" column="role_type" />
<result property="locationType" column="location_type" /> <result property="locationType" column="location_type" />
<result property="locations" column="locations" /> <result property="locations" column="locations" />
<result property="applied" column="applied" /> <result property="applied" column="applied" />
@@ -24,14 +27,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="descriptionTone" column="description_tone" /> <result property="descriptionTone" column="description_tone" />
<result property="aboutRole" column="about_role" /> <result property="aboutRole" column="about_role" />
<result property="responsibilities" column="responsibilities" /> <result property="responsibilities" column="responsibilities" />
<result property="roleBenefits" column="role_benefits" /> <result property="roleBenefitsJson" column="role_benefits_json" />
<result property="publishingChannelsJson" column="publishing_channels_json" /> <result property="publishingChannelsJson" column="publishing_channels_json" />
<result property="publishingScheduleDate" column="publishing_schedule_date" /> <result property="publishingScheduleDate" column="publishing_schedule_date" />
<result property="publishingScheduleTime" column="publishing_schedule_time" /> <result property="publishingScheduleTime" column="publishing_schedule_time" />
<result property="applicationDeadline" column="application_deadline" /> <result property="applicationDeadline" column="application_deadline" />
<result property="posted" column="posted" /> <result property="posted" column="posted" />
<result property="languages" column="languages" />
<result property="dataType" column="data_type" /> <result property="dataType" column="data_type" />
<result property="operStep" column="oper_step" /> <result property="operStep" column="oper_step" />
<result property="status" column="status" />
<result property="delFlag" column="del_flag" /> <result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
@@ -41,12 +46,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectHotakeRolesInfoVo"> <sql id="selectHotakeRolesInfoVo">
select id, recruiter_id, role_name, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json, nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag, certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits, publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, data_type, oper_step, del_flag, create_by, create_time, update_by, update_time, remark from hotake_roles_info select id, uuid,recruiter_id, role_name,company_name,role_type, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json,
nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag,
certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits_json,
publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, languages,data_type,
oper_step, status,del_flag, create_by, create_time, update_by, update_time, remark from hotake_roles_info
</sql> </sql>
<select id="selectHotakeRolesInfoList" parameterType="HotakeRolesInfo" resultMap="HotakeRolesInfoResult"> <select id="selectHotakeRolesInfoList" parameterType="HotakeRolesInfo" resultMap="HotakeRolesInfoResult">
<include refid="selectHotakeRolesInfoVo"/> <include refid="selectHotakeRolesInfoVo"/>
<where> <where>
<if test="uuid != null "> and uuid = #{uuid}</if>
<if test="recruiterId != null "> and recruiter_id = #{recruiterId}</if> <if test="recruiterId != null "> and recruiter_id = #{recruiterId}</if>
<if test="roleName != null and roleName != ''"> and role_name like concat('%', #{roleName}, '%')</if> <if test="roleName != null and roleName != ''"> and role_name like concat('%', #{roleName}, '%')</if>
<if test="locationType != null and locationType != ''"> and location_type = #{locationType}</if> <if test="locationType != null and locationType != ''"> and location_type = #{locationType}</if>
@@ -65,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null and descriptionTone != ''"> and description_tone = #{descriptionTone}</if> <if test="descriptionTone != null and descriptionTone != ''"> and description_tone = #{descriptionTone}</if>
<if test="aboutRole != null and aboutRole != ''"> and about_role = #{aboutRole}</if> <if test="aboutRole != null and aboutRole != ''"> and about_role = #{aboutRole}</if>
<if test="responsibilities != null and responsibilities != ''"> and responsibilities = #{responsibilities}</if> <if test="responsibilities != null and responsibilities != ''"> and responsibilities = #{responsibilities}</if>
<if test="roleBenefits != null and roleBenefits != ''"> and role_benefits = #{roleBenefits}</if> <if test="roleBenefitsJson != null and roleBenefitsJson != ''"> and role_benefits_json = #{roleBenefitsJson}</if>
<if test="publishingChannelsJson != null and publishingChannelsJson != ''"> and publishing_channels_json = #{publishingChannelsJson}</if> <if test="publishingChannelsJson != null and publishingChannelsJson != ''"> and publishing_channels_json = #{publishingChannelsJson}</if>
<if test="publishingScheduleDate != null and publishingScheduleDate != ''"> and publishing_schedule_date = #{publishingScheduleDate}</if> <if test="publishingScheduleDate != null and publishingScheduleDate != ''"> and publishing_schedule_date = #{publishingScheduleDate}</if>
<if test="publishingScheduleTime != null and publishingScheduleTime != ''"> and publishing_schedule_time = #{publishingScheduleTime}</if> <if test="publishingScheduleTime != null and publishingScheduleTime != ''"> and publishing_schedule_time = #{publishingScheduleTime}</if>
@@ -73,7 +83,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="posted != null and posted != ''"> and posted = #{posted}</if> <if test="posted != null and posted != ''"> and posted = #{posted}</if>
<if test="dataType != null and dataType != ''"> and data_type = #{dataType}</if> <if test="dataType != null and dataType != ''"> and data_type = #{dataType}</if>
<if test="operStep != null and operStep != ''"> and oper_step = #{operStep}</if> <if test="operStep != null and operStep != ''"> and oper_step = #{operStep}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
</where> </where>
order by create_time desc
</select> </select>
<select id="selectHotakeRolesInfoById" parameterType="Long" resultMap="HotakeRolesInfoResult"> <select id="selectHotakeRolesInfoById" parameterType="Long" resultMap="HotakeRolesInfoResult">
@@ -81,11 +93,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</select> </select>
<select id="selectHotakeRolesInfoByUuid" parameterType="String" resultMap="HotakeRolesInfoResult">
<include refid="selectHotakeRolesInfoVo"/>
where uuid = #{uuid}
</select>
<insert id="insertHotakeRolesInfo" parameterType="HotakeRolesInfo" useGeneratedKeys="true" keyProperty="id"> <insert id="insertHotakeRolesInfo" parameterType="HotakeRolesInfo" useGeneratedKeys="true" keyProperty="id">
insert into hotake_roles_info insert into hotake_roles_info
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<if test="uuid != null">uuid,</if>
<if test="recruiterId != null">recruiter_id,</if> <if test="recruiterId != null">recruiter_id,</if>
<if test="roleName != null">role_name,</if> <if test="roleName != null">role_name,</if>
<if test="companyName != null">company_name,</if>
<if test="roleType != null">role_type,</if>
<if test="locationType != null">location_type,</if> <if test="locationType != null">location_type,</if>
<if test="locations != null">locations,</if> <if test="locations != null">locations,</if>
<if test="applied != null">applied,</if> <if test="applied != null">applied,</if>
@@ -102,14 +122,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null">description_tone,</if> <if test="descriptionTone != null">description_tone,</if>
<if test="aboutRole != null">about_role,</if> <if test="aboutRole != null">about_role,</if>
<if test="responsibilities != null">responsibilities,</if> <if test="responsibilities != null">responsibilities,</if>
<if test="roleBenefits != null">role_benefits,</if> <if test="roleBenefitsJson != null">role_benefits_json,</if>
<if test="publishingChannelsJson != null">publishing_channels_json,</if> <if test="publishingChannelsJson != null">publishing_channels_json,</if>
<if test="publishingScheduleDate != null">publishing_schedule_date,</if> <if test="publishingScheduleDate != null">publishing_schedule_date,</if>
<if test="publishingScheduleTime != null">publishing_schedule_time,</if> <if test="publishingScheduleTime != null">publishing_schedule_time,</if>
<if test="applicationDeadline != null">application_deadline,</if> <if test="applicationDeadline != null">application_deadline,</if>
<if test="posted != null">posted,</if> <if test="posted != null">posted,</if>
<if test="languages != null">languages,</if>
<if test="dataType != null">data_type,</if> <if test="dataType != null">data_type,</if>
<if test="operStep != null">oper_step,</if> <if test="operStep != null">oper_step,</if>
<if test="status != null">status,</if>
<if test="delFlag != null">del_flag,</if> <if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
@@ -118,8 +140,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="remark != null">remark,</if> <if test="remark != null">remark,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="uuid != null">#{uuid},</if>
<if test="recruiterId != null">#{recruiterId},</if> <if test="recruiterId != null">#{recruiterId},</if>
<if test="roleName != null">#{roleName},</if> <if test="roleName != null">#{roleName},</if>
<if test="companyName != null">#{companyName},</if>
<if test="roleType != null">#{roleType},</if>
<if test="locationType != null">#{locationType},</if> <if test="locationType != null">#{locationType},</if>
<if test="locations != null">#{locations},</if> <if test="locations != null">#{locations},</if>
<if test="applied != null">#{applied},</if> <if test="applied != null">#{applied},</if>
@@ -136,14 +161,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null">#{descriptionTone},</if> <if test="descriptionTone != null">#{descriptionTone},</if>
<if test="aboutRole != null">#{aboutRole},</if> <if test="aboutRole != null">#{aboutRole},</if>
<if test="responsibilities != null">#{responsibilities},</if> <if test="responsibilities != null">#{responsibilities},</if>
<if test="roleBenefits != null">#{roleBenefits},</if> <if test="roleBenefitsJson != null">#{roleBenefitsJson},</if>
<if test="publishingChannelsJson != null">#{publishingChannelsJson},</if> <if test="publishingChannelsJson != null">#{publishingChannelsJson},</if>
<if test="publishingScheduleDate != null">#{publishingScheduleDate},</if> <if test="publishingScheduleDate != null">#{publishingScheduleDate},</if>
<if test="publishingScheduleTime != null">#{publishingScheduleTime},</if> <if test="publishingScheduleTime != null">#{publishingScheduleTime},</if>
<if test="applicationDeadline != null">#{applicationDeadline},</if> <if test="applicationDeadline != null">#{applicationDeadline},</if>
<if test="posted != null">#{posted},</if> <if test="posted != null">#{posted},</if>
<if test="languages != null">#{languages},</if>
<if test="dataType != null">#{dataType},</if> <if test="dataType != null">#{dataType},</if>
<if test="operStep != null">#{operStep},</if> <if test="operStep != null">#{operStep},</if>
<if test="status != null">#{status},</if>
<if test="delFlag != null">#{delFlag},</if> <if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
@@ -158,6 +185,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="recruiterId != null">recruiter_id = #{recruiterId},</if> <if test="recruiterId != null">recruiter_id = #{recruiterId},</if>
<if test="roleName != null">role_name = #{roleName},</if> <if test="roleName != null">role_name = #{roleName},</if>
<if test="companyName != null">company_name = #{companyName},</if>
<if test="roleType != null">role_type = #{roleType},</if>
<if test="locationType != null">location_type = #{locationType},</if> <if test="locationType != null">location_type = #{locationType},</if>
<if test="locations != null">locations = #{locations},</if> <if test="locations != null">locations = #{locations},</if>
<if test="applied != null">applied = #{applied},</if> <if test="applied != null">applied = #{applied},</if>
@@ -174,14 +203,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null">description_tone = #{descriptionTone},</if> <if test="descriptionTone != null">description_tone = #{descriptionTone},</if>
<if test="aboutRole != null">about_role = #{aboutRole},</if> <if test="aboutRole != null">about_role = #{aboutRole},</if>
<if test="responsibilities != null">responsibilities = #{responsibilities},</if> <if test="responsibilities != null">responsibilities = #{responsibilities},</if>
<if test="roleBenefits != null">role_benefits = #{roleBenefits},</if> <if test="roleBenefitsJson != null">role_benefits_json = #{roleBenefitsJson},</if>
<if test="publishingChannelsJson != null">publishing_channels_json = #{publishingChannelsJson},</if> <if test="publishingChannelsJson != null">publishing_channels_json = #{publishingChannelsJson},</if>
<if test="publishingScheduleDate != null">publishing_schedule_date = #{publishingScheduleDate},</if> <if test="publishingScheduleDate != null">publishing_schedule_date = #{publishingScheduleDate},</if>
<if test="publishingScheduleTime != null">publishing_schedule_time = #{publishingScheduleTime},</if> <if test="publishingScheduleTime != null">publishing_schedule_time = #{publishingScheduleTime},</if>
<if test="applicationDeadline != null">application_deadline = #{applicationDeadline},</if> <if test="applicationDeadline != null">application_deadline = #{applicationDeadline},</if>
<if test="posted != null">posted = #{posted},</if> <if test="posted != null">posted = #{posted},</if>
<if test="languages != null">languages = #{languages},</if>
<if test="dataType != null">data_type = #{dataType},</if> <if test="dataType != null">data_type = #{dataType},</if>
<if test="operStep != null">oper_step = #{operStep},</if> <if test="operStep != null">oper_step = #{operStep},</if>
<if test="status != null">status = #{status},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if> <if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
@@ -192,6 +223,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id} where id = #{id}
</update> </update>
<update id="updateAllHotakeRolesInfo" parameterType="HotakeRolesInfo">
update hotake_roles_info
<trim prefix="SET" suffixOverrides=",">
recruiter_id = #{recruiterId},
role_name = #{roleName},
company_name = #{companyName},
role_type = #{roleType},
location_type = #{locationType},
locations = #{locations},
applied = #{applied},
job_Level = #{jobLevel},
job_type = #{jobType},
job_experience = #{jobExperience},
salary_start = #{salaryStart},
salary_end = #{salaryEnd},
required_skills_json = #{requiredSkillsJson},
nice_to_have_skills_json = #{niceToHaveSkillsJson},
education_requirements_json = #{educationRequirementsJson},
accept_equivalent_work_flag = #{acceptEquivalentWorkFlag},
certifications_licenses_json = #{certificationsLicensesJson},
description_tone = #{descriptionTone},
about_role = #{aboutRole},
responsibilities = #{responsibilities},
role_benefits_json = #{roleBenefitsJson},
publishing_channels_json = #{publishingChannelsJson},
publishing_schedule_date = #{publishingScheduleDate},
publishing_schedule_time = #{publishingScheduleTime},
application_deadline = #{applicationDeadline},
posted = #{posted},
languages = #{languages},
data_type = #{dataType},
oper_step = #{operStep},
status = #{status},
update_by = #{updateBy},
update_time = #{updateTime},
remark = #{remark},
</trim>
where id = #{id}
</update>
<delete id="deleteHotakeRolesInfoById" parameterType="Long"> <delete id="deleteHotakeRolesInfoById" parameterType="Long">
delete from hotake_roles_info where id = #{id} delete from hotake_roles_info where id = #{id}
</delete> </delete>
@@ -204,9 +275,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete> </delete>
<insert id="batchInsertHotakeRolesInfo"> <insert id="batchInsertHotakeRolesInfo">
insert into hotake_roles_info( id, recruiter_id, role_name, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json, nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag, certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits, publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, data_type, oper_step, del_flag, create_by, create_time, update_by, update_time, remark,) values insert into hotake_roles_info( id, recruiter_id, role_name, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json, nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag, certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits_json, publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, data_type, oper_step, del_flag, create_by, create_time, update_by, update_time, remark) values
<foreach item="item" index="index" collection="list" separator=","> <foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.recruiterId}, #{item.roleName}, #{item.locationType}, #{item.locations}, #{item.applied}, #{item.jobLevel}, #{item.jobType}, #{item.jobExperience}, #{item.salaryStart}, #{item.salaryEnd}, #{item.requiredSkillsJson}, #{item.niceToHaveSkillsJson}, #{item.educationRequirementsJson}, #{item.acceptEquivalentWorkFlag}, #{item.certificationsLicensesJson}, #{item.descriptionTone}, #{item.aboutRole}, #{item.responsibilities}, #{item.roleBenefits}, #{item.publishingChannelsJson}, #{item.publishingScheduleDate}, #{item.publishingScheduleTime}, #{item.applicationDeadline}, #{item.posted}, #{item.dataType}, #{item.operStep}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark},) ( #{item.id}, #{item.recruiterId}, #{item.roleName}, #{item.locationType}, #{item.locations}, #{item.applied}, #{item.jobLevel}, #{item.jobType}, #{item.jobExperience}, #{item.salaryStart}, #{item.salaryEnd}, #{item.requiredSkillsJson}, #{item.niceToHaveSkillsJson}, #{item.educationRequirementsJson}, #{item.acceptEquivalentWorkFlag}, #{item.certificationsLicensesJson}, #{item.descriptionTone}, #{item.aboutRole}, #{item.responsibilities}, #{item.roleBenefitsJson}, #{item.publishingChannelsJson}, #{item.publishingScheduleDate}, #{item.publishingScheduleTime}, #{item.applicationDeadline}, #{item.posted}, #{item.dataType}, #{item.operStep}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
</foreach> </foreach>
</insert> </insert>
</mapper> </mapper>