diff --git a/src/com/engine/salary/cache/SalaryCacheKey.java b/src/com/engine/salary/cache/SalaryCacheKey.java
index 76d19ea7d..27017f24b 100644
--- a/src/com/engine/salary/cache/SalaryCacheKey.java
+++ b/src/com/engine/salary/cache/SalaryCacheKey.java
@@ -35,6 +35,11 @@ public class SalaryCacheKey {
*/
public final static String SALARY_WITHDRAW_PROGRESS = "SALARY_WITHDRAW_PROGRESS";
+ /**
+ * 短信验证码缓存
+ */
+ public final static String SALARY_CACHE_SMS_CODE = "SALARY_CACHE_SMS_CODE";
+
/**
* ecology系统的token
*/
diff --git a/src/com/engine/salary/entity/salaryBill/param/SMSCodeCheckParam.java b/src/com/engine/salary/entity/salaryBill/param/SMSCodeCheckParam.java
new file mode 100644
index 000000000..322db1253
--- /dev/null
+++ b/src/com/engine/salary/entity/salaryBill/param/SMSCodeCheckParam.java
@@ -0,0 +1,32 @@
+package com.engine.salary.entity.salaryBill.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 短信验证码发送参数
+ *
Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SMSCodeCheckParam {
+
+ /**
+ * 工资单id
+ */
+ private Long id;
+
+ /**
+ * 验证码
+ */
+ private String mobileCode;
+
+}
diff --git a/src/com/engine/salary/entity/salaryBill/param/SMSCodeSendParam.java b/src/com/engine/salary/entity/salaryBill/param/SMSCodeSendParam.java
new file mode 100644
index 000000000..9d25ea87a
--- /dev/null
+++ b/src/com/engine/salary/entity/salaryBill/param/SMSCodeSendParam.java
@@ -0,0 +1,28 @@
+package com.engine.salary.entity.salaryBill.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 短信验证码发送参数
+ * Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SMSCodeSendParam {
+
+ /**
+ * 工资单id
+ */
+ private Long id;
+
+
+}
diff --git a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml
index d609b4e03..95a44fd54 100644
--- a/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml
+++ b/src/com/engine/salary/mapper/salarybill/SalarySendInfoMapper.xml
@@ -50,7 +50,7 @@
diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java
index d85b9cd5d..36864da21 100644
--- a/src/com/engine/salary/service/SalarySendService.java
+++ b/src/com/engine/salary/service/SalarySendService.java
@@ -175,4 +175,16 @@ public interface SalarySendService {
* @param ids
*/
void deleteBySalaryAcctRecordIds(Collection ids);
+
+ /**
+ * 发送短信验证码
+ * @param param
+ */
+ void sendMobileCode(SMSCodeSendParam param);
+
+ /**
+ * 校验验证码
+ * @param param
+ */
+ Boolean checkMobileCode(SMSCodeCheckParam param);
}
diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java
index 46c7cdd0b..581d9adce 100644
--- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java
+++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java
@@ -1,5 +1,6 @@
package com.engine.salary.service.impl;
+import cn.hutool.core.lang.Validator;
import com.alibaba.fastjson.JSONArray;
import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.cloudstore.dev.api.bean.MessageBean;
@@ -65,6 +66,7 @@ import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import weaver.common.MessageUtil;
import weaver.hrm.User;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.resource.ResourceComInfo;
@@ -74,9 +76,13 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
import java.util.*;
import java.util.stream.Collectors;
+import static com.engine.salary.cache.SalaryCacheKey.SALARY_CACHE_SMS_CODE;
+
/**
* @Description: 工资单发放
* @Author: wangxiangzhong
@@ -167,6 +173,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
return ServiceUtil.getService(SalaryBillServiceImpl.class, user);
}
+ private SalaryCacheService getSalaryCacheService(User user) {
+ return ServiceUtil.getService(SalaryCacheServiceImpl.class, user);
+ }
@Override
public SalarySendPO getById(Long salarySendId) {
@@ -1436,4 +1445,66 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
getSalarySendInfoMapper().deleteBySalaryAcctRecordIds(ids);
}
}
+
+ @Override
+ public void sendMobileCode(SMSCodeSendParam param) {
+ Long id = param.getId();
+ SalarySendInfoPO po = getSalarySendInfoMapper().getById(id);
+ if (po == null) {
+ throw new SalaryRunTimeException("未获取工资单发放信息");
+ }
+
+ Long employeeId = po.getEmployeeId();
+ DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(employeeId);
+ if (employee == null) {
+ throw new SalaryRunTimeException("未获取人员信息");
+ }
+
+ String mobile = employee.getMobile();
+ if (Validator.isMobile(mobile)) {
+ throw new SalaryRunTimeException("手机号信息有误");
+ }
+
+ boolean checkSendSMS = MessageUtil.checkSendSMS();
+ if (!checkSendSMS) {
+ throw new SalaryRunTimeException("短信服务异常");
+ }
+
+ //1、生成6位验证码
+ String mobileCode = (int) ((Math.random() * 9 + 1) * 100000) + "";
+ //失效时间
+ long expirationTime = LocalDateTime.now().plusMinutes(10L).toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
+ String cacheValue = mobileCode + "_" + expirationTime;
+
+ //2、验证码缓存,10分钟失效
+ getSalaryCacheService(user).set(SALARY_CACHE_SMS_CODE + "_" + id, cacheValue);
+
+ //3、发送短信
+ MessageUtil.sendSMS(mobile, "验证码:" + mobileCode + "有效时间10分钟,用于查看工资单,请不要告诉他人。");
+ }
+
+ @Override
+ public Boolean checkMobileCode(SMSCodeCheckParam param) {
+ Long id = param.getId();
+
+ String mobileCode = param.getMobileCode();
+
+ //取出验证码
+ String cacheValue = getSalaryCacheService(user).get(SALARY_CACHE_SMS_CODE + "_" + id);
+ String[] cache = cacheValue.split("_");
+ String code = cache[0];
+ //失效时间
+ long expirationTime = Long.parseLong(cache[1]);
+
+ long nowTime = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
+ if (nowTime > expirationTime) {
+ throw new SalaryRunTimeException("验证码已失效,请重新发送");
+ }
+
+ if (!StringUtils.equals(code, mobileCode)) {
+ throw new SalaryRunTimeException("验证码错误");
+ }
+
+ return true;
+ }
}
diff --git a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java
index 680eb9337..44fcad1c8 100644
--- a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java
+++ b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java
@@ -4,7 +4,6 @@ import com.api.formmode.mybatis.util.SqlProxyHandle;
import com.cloudstore.dev.api.util.Util_DataCache;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
-import com.engine.salary.biz.EmployBiz;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.hrm.DeptInfo;
import com.engine.salary.entity.hrm.HrmStatus;
@@ -462,8 +461,8 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM
List allSalaryEmployees = this.getManageRangeSalaryEmployees(taxAgentId, allRanges, salaryEmployees);
taxAgentEmpSaveParamList.add(getTaxAgentEmpSyncParam(taxAgentId, allSalaryEmployees));
- List allSubAdminRanges = Optional.ofNullable(allRangeMap.get(taxAgentId + "-" + TaxAgentRangeTypeEnum.SUBADMIN.getValue())).orElse(Collections.emptyList());
- subAdminEmpSaveParamList.addAll(getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges, salaryEmployees));
+// List allSubAdminRanges = Optional.ofNullable(allRangeMap.get(taxAgentId + "-" + TaxAgentRangeTypeEnum.SUBADMIN.getValue())).orElse(Collections.emptyList());
+// subAdminEmpSaveParamList.addAll(getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges, salaryEmployees));
});
Long employeeId = 0L;
// 同步管理员的人员
diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java
index 477a173c7..46b1ad642 100644
--- a/src/com/engine/salary/web/SalaryBillController.java
+++ b/src/com/engine/salary/web/SalaryBillController.java
@@ -512,10 +512,6 @@ public class SalaryBillController {
@Produces(MediaType.APPLICATION_JSON)
public String mySalaryBillList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryBillQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
-// if (StringUtils.isEmpty(queryParam.getToken())) {
-// throw new SalaryRunTimeException(SalrayCheckSecondAuthConstant.CHECK_SECOND_FAIL_NO_TOKEN);
-// }
-// queryParam.setEmployeeId((long) user.getUID());
return new ResponseResult>(user).run(getSalarySendWrapper(user)::mySalaryBillList, queryParam);
}
@@ -544,18 +540,35 @@ public class SalaryBillController {
}
/******** 工资单发放 end ***********************************************************************************************/
-// /**
-// *
-// *
-// * @param
-// * @return
-// */
-// @GET
-// @Path("/mySalaryBillItemDetail")
-// @Produces(MediaType.APPLICATION_JSON)
-// public String mySalaryBillItemDetail(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody) {
-//
-// }
+
+ /**
+ * 短信验证码
+ *
+ * @param param
+ * @return
+ */
+ @POST
+ @Path("/sendMobileCode")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String sendSMSCode(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SMSCodeSendParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult>(user).run(getSalarySendWrapper(user)::sendMobileCode, param);
+ }
+
+ /**
+ * 校验验证码
+ * @param request
+ * @param response
+ * @param param
+ * @return
+ */
+ @POST
+ @Path("/checkMobileCode")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String checkMobileCode(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SMSCodeCheckParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getSalarySendWrapper(user)::checkMobileCode, param);
+ }
}
diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java
index 19dc48f78..914ca60d5 100644
--- a/src/com/engine/salary/wrapper/SalarySendWrapper.java
+++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java
@@ -646,4 +646,26 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy
return datas;
}
+
+ /**
+ * 发送短信验证码
+ * @param param 短信验证码发送参数
+ */
+ public void sendMobileCode(SMSCodeSendParam param) {
+ getSalarySendService(user).sendMobileCode(param);
+ }
+
+ /**
+ * 校验短信验证码
+ * @param param
+ * @return
+ */
+ public Boolean checkMobileCode(SMSCodeCheckParam param) {
+ return getSalarySendService(user).checkMobileCode(param);
+ }
}
+
+
+
+
+