短信验证码功能
This commit is contained in:
parent
8bde871286
commit
57798a8e3e
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
package com.engine.salary.entity.salaryBill.param;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 短信验证码发送参数
|
||||
* <p>Copyright: Copyright (c) 2022</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SMSCodeCheckParam {
|
||||
|
||||
/**
|
||||
* 工资单id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 验证码
|
||||
*/
|
||||
private String mobileCode;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.engine.salary.entity.salaryBill.param;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 短信验证码发送参数
|
||||
* <p>Copyright: Copyright (c) 2022</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SMSCodeSendParam {
|
||||
|
||||
/**
|
||||
* 工资单id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
<select id="getById" resultType="com.engine.salary.entity.salaryBill.po.SalarySendInfoPO">
|
||||
SELECT
|
||||
<include refid="baseColumns"/>
|
||||
FROM hrsa_salary_send_info
|
||||
FROM hrsa_salary_send_info t
|
||||
WHERE delete_type = 0
|
||||
AND id = #{id}
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -175,4 +175,16 @@ public interface SalarySendService {
|
|||
* @param ids
|
||||
*/
|
||||
void deleteBySalaryAcctRecordIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 发送短信验证码
|
||||
* @param param
|
||||
*/
|
||||
void sendMobileCode(SMSCodeSendParam param);
|
||||
|
||||
/**
|
||||
* 校验验证码
|
||||
* @param param
|
||||
*/
|
||||
Boolean checkMobileCode(SMSCodeCheckParam param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<DataCollectionEmployee> allSalaryEmployees = this.getManageRangeSalaryEmployees(taxAgentId, allRanges, salaryEmployees);
|
||||
taxAgentEmpSaveParamList.add(getTaxAgentEmpSyncParam(taxAgentId, allSalaryEmployees));
|
||||
|
||||
List<TaxAgentManageRangePO> allSubAdminRanges = Optional.ofNullable(allRangeMap.get(taxAgentId + "-" + TaxAgentRangeTypeEnum.SUBADMIN.getValue())).orElse(Collections.emptyList());
|
||||
subAdminEmpSaveParamList.addAll(getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges, salaryEmployees));
|
||||
// List<TaxAgentManageRangePO> allSubAdminRanges = Optional.ofNullable(allRangeMap.get(taxAgentId + "-" + TaxAgentRangeTypeEnum.SUBADMIN.getValue())).orElse(Collections.emptyList());
|
||||
// subAdminEmpSaveParamList.addAll(getTaxAgentSubAdminEmpSyncParam(taxAgentId, allSubAdminRanges, salaryEmployees));
|
||||
});
|
||||
Long employeeId = 0L;
|
||||
// 同步管理员的人员
|
||||
|
|
|
|||
|
|
@ -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<SalaryBillQueryParam, Map<String, Object>>(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<SMSCodeSendParam, Map<String, Object>>(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<SMSCodeCheckParam, Boolean>(user).run(getSalarySendWrapper(user)::checkMobileCode, param);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue