|
|
@@ -21,11 +21,15 @@ import com.citu.module.menduner.system.controller.base.job.JobAdvertisedSaveReqV
|
|
|
import com.citu.module.menduner.system.convert.JobAdvertisedConvert;
|
|
|
import com.citu.module.menduner.system.dal.dataobject.job.JobAdvertisedDO;
|
|
|
import com.citu.module.menduner.system.dal.mysql.job.JobAdvertisedMapper;
|
|
|
+import com.citu.module.menduner.system.enums.MathOperationEnum;
|
|
|
import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
|
+import com.citu.module.menduner.system.enums.account.BalanceBizTypeEnum;
|
|
|
+import com.citu.module.menduner.system.enums.account.PointBizTypeEnum;
|
|
|
import com.citu.module.menduner.system.mq.producer.ESProducer;
|
|
|
import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
|
|
|
import com.citu.module.menduner.system.service.enterprise.account.EnterpriseAccountService;
|
|
|
import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
|
|
|
+import com.citu.module.menduner.system.service.record.EnterpriseAccountRecordService;
|
|
|
import com.citu.module.menduner.system.util.ESOperateEnum;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -41,8 +45,7 @@ import java.util.Objects;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_ENTERPRISE_ACCOUNT_BALANCE_NOT_ENOUGH;
|
|
|
-import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_JOB_ADVERTISED_NOT_EXISTS;
|
|
|
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.*;
|
|
|
|
|
|
/**
|
|
|
* 招聘职位 Service 实现类
|
|
|
@@ -67,6 +70,9 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
@Resource
|
|
|
private EnterpriseAccountService enterpriseAccountService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private EnterpriseAccountRecordService accountRecordService;
|
|
|
+
|
|
|
@Resource
|
|
|
private ESProducer esProducer;
|
|
|
|
|
|
@@ -238,43 +244,60 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
|
|
|
job.setTop(false);
|
|
|
if (!job.getHire()) {
|
|
|
- job.setHirePoint(BigDecimal.ZERO);
|
|
|
+ job.setHirePoint(0);
|
|
|
job.setHirePrice(BigDecimal.ZERO);
|
|
|
}
|
|
|
- jobAdvertisedMapper.insert(job);
|
|
|
- esProducer.send(ESOperateEnum.ADD, job.getId());
|
|
|
+ // 后置处理
|
|
|
+ jobOperateAfter(enterpriseId, loginUser.getId(), job, ESOperateEnum.ADD);
|
|
|
|
|
|
} else {
|
|
|
// 修改
|
|
|
JobAdvertisedDO entity = get(reqVO.getId());
|
|
|
+ // 效验
|
|
|
+ validUpdate(enterpriseId, loginUser.getId(), entity, reqVO);
|
|
|
|
|
|
job.setId(entity.getId());
|
|
|
- jobOperate(job);
|
|
|
+ // 后置处理
|
|
|
+ jobOperateAfter(enterpriseId, loginUser.getId(), job, ESOperateEnum.UPDATE);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 效验职位发布的编辑
|
|
|
+ *
|
|
|
+ * @param enterpriseId 当前操作账户所在的企业
|
|
|
+ * @param userId 操作的用户
|
|
|
+ * @param reqVO 发布的职位信息
|
|
|
+ **/
|
|
|
public void validAdd(Long enterpriseId,
|
|
|
Long userId,
|
|
|
AppAdminJobSaveReqVO reqVO) {
|
|
|
if (reqVO.getHire()) {
|
|
|
if (null != reqVO.getHirePrice()) {
|
|
|
- // 计算需要支付的额外费用(如果是新职位,就是全额;如果是修改,就是差额)
|
|
|
- boolean result = enterpriseAccountService
|
|
|
- .checkBalance(enterpriseId, userId, reqVO.getHirePrice());
|
|
|
- if (!result) {
|
|
|
- // 余额不足
|
|
|
- throw exception(MDE_ENTERPRISE_ACCOUNT_BALANCE_NOT_ENOUGH);
|
|
|
- }
|
|
|
+ // // 计算需要支付的额外费用(如果是新职位,就是全额;如果是修改,就是差额)
|
|
|
+ // boolean result = enterpriseAccountService
|
|
|
+ // .checkBalance(enterpriseId, userId, reqVO.getHirePrice());
|
|
|
+ // if (!result) {
|
|
|
+ // // 余额不足
|
|
|
+ // throw exception(MDE_ENTERPRISE_ACCOUNT_BALANCE_NOT_ENOUGH);
|
|
|
+ // }
|
|
|
}
|
|
|
if (null != reqVO.getHirePoint()) {
|
|
|
// 积分
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 效验职位发布的编辑
|
|
|
+ *
|
|
|
+ * @param enterpriseId 当前操作账户所在的企业
|
|
|
+ * @param userId 操作的用户
|
|
|
+ * @param entity 职位
|
|
|
+ * @param reqVO 编辑的职位信息
|
|
|
+ **/
|
|
|
public void validUpdate(Long enterpriseId,
|
|
|
Long userId,
|
|
|
JobAdvertisedDO entity,
|
|
|
@@ -287,22 +310,31 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
}
|
|
|
|
|
|
if (reqVO.getHire()) {
|
|
|
+// if (null != reqVO.getHirePrice()) {
|
|
|
+// // 计算需要支付的额外费用(如果是新职位,就是全额;如果是修改,就是差额)
|
|
|
+// BigDecimal extraCost = reqVO.getId() == null ? reqVO.getHirePrice()
|
|
|
+// : reqVO.getHirePrice().subtract(entity.getHirePrice());
|
|
|
+//
|
|
|
+// boolean result = enterpriseAccountService
|
|
|
+// .checkBalance(enterpriseId, userId, extraCost);
|
|
|
+// if (!result) {
|
|
|
+// // 余额不足
|
|
|
+// throw exception(MDE_ENTERPRISE_ACCOUNT_BALANCE_NOT_ENOUGH);
|
|
|
+// }
|
|
|
+// }
|
|
|
+ // TODO 暂时不给改,不清楚逻辑
|
|
|
if (null != reqVO.getHirePrice()) {
|
|
|
- // 计算需要支付的额外费用(如果是新职位,就是全额;如果是修改,就是差额)
|
|
|
- BigDecimal extraCost = reqVO.getId() == null ? reqVO.getHirePrice()
|
|
|
- : reqVO.getHirePrice().subtract(entity.getHirePrice());
|
|
|
-
|
|
|
- boolean result = enterpriseAccountService
|
|
|
- .checkBalance(enterpriseId, userId, extraCost);
|
|
|
- if (!result) {
|
|
|
- // 余额不足
|
|
|
- throw exception(MDE_ENTERPRISE_ACCOUNT_BALANCE_NOT_ENOUGH);
|
|
|
+ if (!entity.getHirePrice().equals(reqVO.getHirePrice())) {
|
|
|
+ throw exception(MDE_JOB_ADVERTISED_BALANCE_UPDATE);
|
|
|
}
|
|
|
}
|
|
|
if (null != reqVO.getHirePoint()) {
|
|
|
// 积分
|
|
|
-
|
|
|
+ if (!entity.getHirePoint().equals(reqVO.getHirePoint())) {
|
|
|
+ throw exception(MDE_JOB_ADVERTISED_POINT_UPDATE);
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -325,7 +357,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
return true;
|
|
|
}
|
|
|
job.setStatus(MendunerStatusEnum.ENABLE.getStatus());
|
|
|
- jobOperate(job);
|
|
|
+ jobAdvertisedMapper.updateById(job);
|
|
|
+ jobDataSync(job, ESOperateEnum.UPDATE);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
@@ -340,7 +373,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
return true;
|
|
|
}
|
|
|
job.setStatus(MendunerStatusEnum.DISABLE.getStatus());
|
|
|
- jobOperate(job);
|
|
|
+ jobAdvertisedMapper.updateById(job);
|
|
|
+ jobDataSync(job, ESOperateEnum.UPDATE);
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
@@ -351,7 +385,8 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
for (Long id : ids) {
|
|
|
JobAdvertisedDO job = get(id);
|
|
|
job.setUpdateTime(LocalDateTime.now());
|
|
|
- jobOperate(job);
|
|
|
+ jobAdvertisedMapper.updateById(job);
|
|
|
+ jobDataSync(job, ESOperateEnum.UPDATE);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -371,13 +406,77 @@ public class JobAdvertisedServiceImpl implements JobAdvertisedService {
|
|
|
}
|
|
|
job.setUpdateTime(LocalDateTime.now());
|
|
|
job.setTop(true);
|
|
|
- jobOperate(job);
|
|
|
+ jobAdvertisedMapper.updateById(job);
|
|
|
+ jobDataSync(job, ESOperateEnum.UPDATE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 职位操作最后的操作
|
|
|
+ *
|
|
|
+ * @param enterpriseId 当前操作账户所在的企业
|
|
|
+ * @param userId 操作的用户
|
|
|
+ * @param job 职位对象
|
|
|
+ * @param operate 操作类型
|
|
|
+ **/
|
|
|
+ public void jobOperateAfter(Long enterpriseId,
|
|
|
+ Long userId,
|
|
|
+ JobAdvertisedDO job,
|
|
|
+ ESOperateEnum operate) {
|
|
|
+
|
|
|
+
|
|
|
+ if (ESOperateEnum.ADD.getType().equals(operate.getType())) {
|
|
|
+ jobAdvertisedMapper.insert(job);
|
|
|
+ } else {
|
|
|
+ jobAdvertisedMapper.updateById(job);
|
|
|
+ }
|
|
|
+
|
|
|
+ // ========== 众聘处理 ==========
|
|
|
+ if (job.getHire()) {
|
|
|
+ if (null != job.getHirePrice()) {
|
|
|
+ // 创建记录 并扣除余额
|
|
|
+ accountRecordService.createBalanceRecord(
|
|
|
+ enterpriseId,
|
|
|
+ userId,
|
|
|
+ BalanceBizTypeEnum.PUBLISH.getName(),
|
|
|
+ MathOperationEnum.SUBTRACT,
|
|
|
+ job.getHirePrice(),
|
|
|
+ BalanceBizTypeEnum.PUBLISH,
|
|
|
+ String.valueOf(job.getId()));
|
|
|
+ }
|
|
|
+ if (null != job.getHirePoint()) {
|
|
|
+ // 创建记录 并扣除积分
|
|
|
+ accountRecordService.createPointRecord(
|
|
|
+ enterpriseId,
|
|
|
+ userId,
|
|
|
+ PointBizTypeEnum.PUBLISH.getName(),
|
|
|
+ MathOperationEnum.SUBTRACT,
|
|
|
+ job.getHirePoint(),
|
|
|
+ PointBizTypeEnum.PUBLISH,
|
|
|
+ String.valueOf(job.getId()));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ // ========== ES数据同步处理 ==========
|
|
|
+ jobDataSync(job, operate);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- public void jobOperate(JobAdvertisedDO job) {
|
|
|
- jobAdvertisedMapper.updateById(job);
|
|
|
- esProducer.send(ESOperateEnum.UPDATE, job.getId());
|
|
|
+ /**
|
|
|
+ * 职位数据同步
|
|
|
+ *
|
|
|
+ * @param job 职位对象
|
|
|
+ * @param operate 操作类型
|
|
|
+ **/
|
|
|
+ public void jobDataSync(JobAdvertisedDO job, ESOperateEnum operate) {
|
|
|
+ if (ESOperateEnum.ADD.getType().equals(operate.getType())) {
|
|
|
+ esProducer.send(ESOperateEnum.ADD, job.getId());
|
|
|
+ } else {
|
|
|
+ esProducer.send(ESOperateEnum.UPDATE, job.getId());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|