1.添加岗位取消接口

2.添加岗位取消列表
3.修改对应的统计
4.app_user添加orgType机构类型字段
This commit is contained in:
sh
2026-01-26 17:38:07 +08:00
parent db11d5cb2a
commit 6f08d63278
10 changed files with 122 additions and 33 deletions

View File

@@ -2,17 +2,16 @@ package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.ESJobDocument;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobApply;
import com.ruoyi.cms.domain.query.ESJobSearch;
import com.ruoyi.cms.service.ICompanyService;
import com.ruoyi.cms.service.IESJobSearchService;
import com.ruoyi.cms.service.IJobCollectionService;
import com.ruoyi.cms.service.IJobService;
import com.ruoyi.cms.service.*;
import com.ruoyi.cms.util.RoleUtils;
import com.ruoyi.cms.util.sensitiveWord.SensitiveWordChecker;
import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.SiteSecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@@ -43,6 +42,8 @@ public class AppJobController extends BaseController
private IESJobSearchService esJobSearchService;
@Autowired
private SensitiveWordChecker sensitiveWordChecker;
@Autowired
private IJobApplyService jobApplyService;
/**
* 查询岗位列表
@@ -253,4 +254,33 @@ public class AppJobController extends BaseController
}
return success(jobService.selectApplyJobUserList(jobId));
}
@ApiOperation("删除岗位申请")
@DeleteMapping("/applyJobCencal")
public AjaxResult applyJobCencal(@RequestBody JobApply apply){
if(apply==null){
return AjaxResult.error("参数为空!");
}
if (apply.getJobId() == null) {
return AjaxResult.error("岗位id为空!");
}
if(!SiteSecurityUtils.isLogin()){
return AjaxResult.error("用户未登录!");
}
if (apply.getUserId() == null) {
apply.setUserId(SiteSecurityUtils.getUserId());
}
return toAjax(jobApplyService.applyJobCencal(apply));
}
@ApiOperation("获取取消岗位岗位详情")
@GetMapping("/selectCencalList")
public TableDataInfo selectCencalList(){
JobApply queryApply = new JobApply();
if (queryApply.getUserId() == null) {
queryApply.setUserId(SiteSecurityUtils.getUserId());
}
List<Job> list=jobApplyService.selectCencalList(queryApply);
return getDataTable(list);
}
}

View File

@@ -9,6 +9,7 @@ import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.JobApply;
import com.ruoyi.cms.domain.vo.CandidateVO;
import com.ruoyi.common.core.domain.entity.AppUser;
import org.apache.ibatis.annotations.Param;
/**
* 岗位申请Mapper接口
@@ -39,4 +40,10 @@ public interface JobApplyMapper extends BaseMapper<JobApply>
List<Job> selectJobApplyListJob(JobApply jobApply);
public int updateJobZphApply(JobApply jobApply);
public List<Job> selectCencalList(JobApply jobApply);
public int applyJobCencal(JobApply jobApply);
int applyCencalCount(@Param("userId") Long userId);
}

View File

@@ -72,4 +72,8 @@ public interface IJobApplyService
public List<Job> selectJobApplyListJob(JobApply jobApply);
public int updateJobZphApply(JobApply jobApply);
public int applyJobCencal(JobApply jobApply);
public List<Job> selectCencalList(JobApply jobApply);
}

View File

@@ -15,7 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -109,12 +108,14 @@ public class JobApplyServiceImpl extends ServiceImpl<JobApplyMapper,JobApply> im
@Override
public HashMap<String, Integer> statistics() {
Integer applyCount = jobApplyMapper.applyJob(SiteSecurityUtils.getUserId()).size();
Integer applyCencalCount=jobApplyMapper.applyCencalCount(SiteSecurityUtils.getUserId());
Integer collectionJobCount = jobCollectionMapper.collectionJob(SiteSecurityUtils.getUserId()).size();
Integer collectionCompanyCount = companyCollectionMapper.collectionJob(SiteSecurityUtils.getUserId()).size();
Integer jobReviewCount = appReviewJobMapper.review(SiteSecurityUtils.getUserId(),new MineJobQuery()).size();
Integer fairCollecitonCount = fairCollectionMapper.selectList(Wrappers.<FairCollection>lambdaQuery().eq(FairCollection::getUserId, SiteSecurityUtils.getUserId())).size();
HashMap<String, Integer> map = new HashMap<>();
map.put("applyCount", applyCount);
map.put("applyCencalCount", applyCencalCount);
map.put("collectionCount", collectionJobCount+collectionCompanyCount);
map.put("jobReviewCount", jobReviewCount);
map.put("fairCollecitonCount", fairCollecitonCount);
@@ -160,4 +161,14 @@ public class JobApplyServiceImpl extends ServiceImpl<JobApplyMapper,JobApply> im
public int updateJobZphApply(JobApply jobApply) {
return jobApplyMapper.updateJobZphApply(jobApply);
}
@Override
public List<Job> selectCencalList(JobApply jobApply) {
return jobApplyMapper.selectCencalList(jobApply);
}
@Override
public int applyJobCencal(JobApply jobApply) {
return jobApplyMapper.applyJobCencal(jobApply);
}
}

View File

@@ -110,10 +110,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</insert>
<select id="getMyTj" resultType="com.ruoyi.common.core.domain.entity.MyChart">
SELECT t1.yzj,t2.ysc,t3.ytd,0 AS yyy FROM
SELECT t1.yzj,t2.ysc,t3.ytd,0 AS yyy,t4.yqx FROM
(SELECT COUNT(user_id) AS yzj FROM app_review_job WHERE user_id = #{userId} AND del_flag = '0') t1
CROSS JOIN (SELECT COUNT(user_id) AS ysc FROM job_collection WHERE user_id = #{userId} AND del_flag = '0') t2
CROSS JOIN (SELECT COUNT(user_id) AS ytd FROM job_apply WHERE user_id = #{userId} AND del_flag = '0') t3
CROSS JOIN (SELECT COUNT(user_id) AS yqx FROM job_apply WHERE user_id = #{userId} AND del_flag = '2') t4
</select>
<select id="selectSysUserIdcard" resultType="com.ruoyi.common.core.domain.entity.SysUser">

View File

@@ -130,4 +130,20 @@
update job_apply set update_time=sysdate(),update_by=#{updateBy},hire=#{hire},hire_source=#{hireSource} where user_id=#{userId} AND job_id=#{jobId}
</update>
<update id="applyJobCencal" parameterType="JobApply">
update job_apply set del_flag='2',update_time=sysdate(),update_by=#{updateBy} where user_id=#{userId} and job_id=#{jobId}
</update>
<select id="selectCencalList" parameterType="JobApply" resultType="com.ruoyi.cms.domain.Job">
select b.*,a.create_time as shareTime from job_apply a inner join job b on a.job_id=b.job_id and b.del_flag='0'
<where> a.del_flag = '2'
<if test="jobId != null "> and a.job_id = #{jobId}</if>
<if test="userId != null "> and a.user_id = #{userId}</if>
</where>
</select>
<select id="applyCencalCount" resultType="java.lang.Integer">
select count(user_id) from job_apply where del_flag = '2' and user_id=#{userId}
</select>
</mapper>

View File

@@ -1,6 +1,5 @@
package com.ruoyi.common.core.domain.entity;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
@@ -135,6 +134,9 @@ public class AppUser extends BaseEntity
@ApiModelProperty("工作经验")
private String workExperience;
@ApiModelProperty("机构类型 0用人单位 1培训机构 2评价机构 3人力资源机构")
private String orgType;
@TableField(exist = false)
@ApiModelProperty("公司信息")
private Company company;

View File

@@ -4,8 +4,9 @@ import lombok.Data;
@Data
public class MyChart {
private String ytd;
private String ysc;
private String yzj;
private String yyy;
private String ytd;//投递
private String ysc;//收藏
private String yzj;//足迹
private String yyy;//已预约
private String yqx;//已取消
}

View File

@@ -44,6 +44,11 @@ public class LoginBody
*/
private String idCard;
/**
* 企业类型
*/
public String orgType;
public String getUsername()
{
return username;
@@ -115,4 +120,12 @@ public class LoginBody
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getOrgType() {
return orgType;
}
public void setOrgType(String orgType) {
this.orgType = orgType;
}
}

View File

@@ -269,7 +269,7 @@ public class SysLoginService
AppUser existingUser=appUserService.selectByOpenid(openid,dto.getUserType());
if(existingUser!=null){
if(StringUtils.isEmpty(existingUser.getIsCompanyUser())){
updateAppUserCommon(existingUser,openid,unionid,dto.getUserType());
updateAppUserCommon(existingUser,openid,unionid,dto.getUserType(),dto.getOrgType());
}
String token = loginUserIdApp(existingUser);
ajax.put(Constants.TOKEN, token);
@@ -290,7 +290,7 @@ public class SysLoginService
String token="";
boolean isNewUser=false;
if (existUser != null) {
updateAppUserCommon(existUser,openid,unionid,dto.getUserType());
updateAppUserCommon(existUser,openid,unionid,dto.getUserType(),dto.getOrgType());
// 5. 生成系统令牌
token = loginUserIdApp(existUser);
ajax.put("idCard",existUser.getIdCard());
@@ -374,12 +374,12 @@ public class SysLoginService
// 6.1 优先匹配「OpenID+前端传入角色」的老用户
AppUser existingUser = appUserService.selectByOpenid(openid, userType);
if (existingUser != null) {
System.out.printf("小程序登录-匹配到普通老用户openid=%s, userType=%s%n", openid, userType);
return handleExistingUser(existingUser, userType);
System.out.printf("小程序登录-匹配到普通老用户openid=%s, userType=%s%n", openid, userType, dto.getOrgType());
return handleExistingUser(existingUser, userType,dto.getOrgType());
}
// 6.2 处理普通用户的匹配与注册(手机号绑定、新用户创建等)
return handleUserMatchAndRegister(openid, unionid, phone, userType);
return handleUserMatchAndRegister(openid, unionid, phone, userType,dto.getOrgType());
} catch (Exception e) {
System.err.println("小程序登录异常:" + e.getMessage());
@@ -470,21 +470,21 @@ public class SysLoginService
* @param userType
* @return
*/
private AjaxResult handleUserMatchAndRegister(String openid, String unionid, String phone, String userType) {
private AjaxResult handleUserMatchAndRegister(String openid, String unionid, String phone, String userType,String orgType) {
// 匹配「手机号+角色」的用户
AppUser phoneRoleUser = appUserService.getPhoneAndUserType(phone, userType);
if (phoneRoleUser != null) {
return handlePhoneBoundUser(phoneRoleUser, openid, unionid, userType);
return handlePhoneBoundUser(phoneRoleUser, openid, unionid, userType,orgType);
}
// 匹配无角色历史数据
AppUser noRoleUser = appUserService.getPhoneAndNoRole(phone);
if (noRoleUser != null) {
return handleNoRoleUserBinding(openid, unionid, phone, userType, noRoleUser);
return handleNoRoleUserBinding(openid, unionid, phone, userType, noRoleUser,orgType);
}
// 全新用户注册
return handleNewUserRegistration(openid, unionid, phone, userType);
return handleNewUserRegistration(openid, unionid, phone, userType,orgType);
}
/**
@@ -496,7 +496,7 @@ public class SysLoginService
* @param noRoleUser
* @return
*/
private AjaxResult handleNoRoleUserBinding(String openid, String unionid, String phone, String userType, AppUser noRoleUser) {
private AjaxResult handleNoRoleUserBinding(String openid, String unionid, String phone, String userType, AppUser noRoleUser,String orgType) {
String lockKey = "login_no_role_bind_" + phone + "_" + userType;
try (DistributedLockUtil.AutoReleaseLock lock = distributedLockUtil.tryLock(lockKey, 3, TimeUnit.SECONDS)) {
if (!lock.isLocked()) {
@@ -505,9 +505,9 @@ public class SysLoginService
// 双重检查
AppUser doubleCheck = appUserService.getPhoneAndUserType(phone, userType);
if (doubleCheck != null) {
return handlePhoneBoundUser(doubleCheck, openid, unionid, userType);
return handlePhoneBoundUser(doubleCheck, openid, unionid, userType,orgType);
}
return handlePhoneBoundUser(noRoleUser, openid, unionid, userType);
return handlePhoneBoundUser(noRoleUser, openid, unionid, userType,orgType);
}
}
@@ -519,7 +519,7 @@ public class SysLoginService
* @param userType
* @return
*/
private AjaxResult handleNewUserRegistration(String openid, String unionid, String phone, String userType) {
private AjaxResult handleNewUserRegistration(String openid, String unionid, String phone, String userType,String orgType) {
String createLockKey = "login_create_" + phone + "_" + userType;
try (DistributedLockUtil.AutoReleaseLock lock = distributedLockUtil.tryLock(createLockKey, 3, TimeUnit.SECONDS)) {
if (!lock.isLocked()) {
@@ -528,9 +528,9 @@ public class SysLoginService
// 双重检查
AppUser checkNew = appUserService.getPhoneAndUserType(phone, userType);
if (checkNew != null) {
return handlePhoneBoundUser(checkNew, openid, unionid, userType);
return handlePhoneBoundUser(checkNew, openid, unionid, userType,orgType);
}
return handleNewUser(openid, unionid, phone, userType);
return handleNewUser(openid, unionid, phone, userType,orgType);
}
}
@@ -548,7 +548,7 @@ public class SysLoginService
}
// 原有逻辑更新登录时间、生成token
AjaxResult ajax = AjaxResult.success();
updateAppUserCommon(specialUser, null, null, null);
updateAppUserCommon(specialUser, null, null, null,specialUser.getOrgType());
String token = loginUserIdApp(specialUser);
ajax.put(Constants.TOKEN, token);
ajax.put("isNewUser", false);
@@ -565,9 +565,9 @@ public class SysLoginService
* 处理老用户登录日志用println
*/
@Transactional(rollbackFor = Exception.class)
public AjaxResult handleExistingUser(AppUser existingUser, String userType) {
public AjaxResult handleExistingUser(AppUser existingUser, String userType,String orgType) {
AjaxResult ajax = AjaxResult.success();
updateAppUserCommon(existingUser, null, null, userType);
updateAppUserCommon(existingUser, null, null, userType,orgType);
String token = loginUserIdApp(existingUser);
ajax.put(Constants.TOKEN, token);
ajax.put("isNewUser", false);
@@ -583,7 +583,7 @@ public class SysLoginService
* 处理手机号已绑定的用户
*/
@Transactional(rollbackFor = Exception.class)
public AjaxResult handlePhoneBoundUser(AppUser phoneUser, String openid, String unionid, String userType) {
public AjaxResult handlePhoneBoundUser(AppUser phoneUser, String openid, String unionid, String userType,String orgType) {
AjaxResult ajax = AjaxResult.success();
if (StringUtils.hasText(phoneUser.getOpenid()) && !openid.equals(phoneUser.getOpenid())) {
System.out.printf("手机号绑定冲突phone:%s, oldOpenid:%s, newOpenid:%s%n",
@@ -591,7 +591,7 @@ public class SysLoginService
return AjaxResult.error("该手机号已绑定其他微信账号");
}
//修改用户信息
updateAppUserCommon(phoneUser, openid, unionid, userType);
updateAppUserCommon(phoneUser, openid, unionid, userType,orgType);
phoneUser.setOpenid(openid);
phoneUser.setUnionid(unionid);
phoneUser.setIsCompanyUser(userType);
@@ -609,7 +609,7 @@ public class SysLoginService
* 处理新用户注册
*/
@Transactional(rollbackFor = Exception.class)
public AjaxResult handleNewUser(String openid, String unionid, String phone, String userType) {
public AjaxResult handleNewUser(String openid, String unionid, String phone, String userType,String orgType) {
AjaxResult ajax = AjaxResult.success();
AppUser newUser = new AppUser();
newUser.setOpenid(openid);
@@ -617,6 +617,7 @@ public class SysLoginService
newUser.setPhone(phone);
newUser.setIsCompanyUser(userType);
newUser.setLoginDate(new Date());
newUser.setOrgType(orgType);
appUserService.insertAppUser(newUser);
String token = loginUserIdApp(newUser);
ajax.put(Constants.TOKEN, token);
@@ -631,7 +632,7 @@ public class SysLoginService
/**
* 抽取用户更新公共方法
*/
private void updateAppUserCommon(AppUser targetUser, String openid, String unionid, String userType) {
private void updateAppUserCommon(AppUser targetUser, String openid, String unionid, String userType,String orgType) {
AppUser updateParm = new AppUser();
updateParm.setUserId(targetUser.getUserId());
@@ -651,6 +652,9 @@ public class SysLoginService
updateParm.setUnionid(unionid);
targetUser.setUnionid(unionid);
}
if(StringUtils.isNotBlank(orgType)){
updateParm.setOrgType(orgType);
}
//最后登录时间
updateParm.setLoginDate(new Date());
appUserService.updateAppUser(updateParm);