Browse Source

"党员认证通过后参数校验"

dev_shibei_match
jianjun 5 years ago
parent
commit
c089cb9379
  1. 56
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/ValidatorUtils.java
  2. 1
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CertificationAddFormDTO.java
  3. 1
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBadgeController.java
  4. 42
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java

56
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/ValidatorUtils.java

@ -8,9 +8,13 @@
package com.epmet.commons.tools.validator;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.tools.dto.form.DingTalkTextMsg;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.ResourceBundleMessageSource;
@ -50,8 +54,8 @@ public class ValidatorUtils {
List<Class<?>> customerShowGroups = new ArrayList<>();
List<Class<?>> internalGroups = new ArrayList<>();
if (groups == null || groups.length ==0){
validate(EpmetErrorCode.CUSTOMER_VALIDATE_ERROR ,object,groups);
if (groups == null || groups.length == 0) {
validate(EpmetErrorCode.CUSTOMER_VALIDATE_ERROR, object, groups);
return;
}
Arrays.asList(groups).forEach(g -> {
@ -65,7 +69,7 @@ public class ValidatorUtils {
// 1.校验客户端显示分组
if (!CollectionUtils.isEmpty(customerShowGroups)) {
validate(EpmetErrorCode.CUSTOMER_VALIDATE_ERROR ,object, customerShowGroups.toArray(new Class<?>[customerShowGroups.size()]));
validate(EpmetErrorCode.CUSTOMER_VALIDATE_ERROR, object, customerShowGroups.toArray(new Class<?>[customerShowGroups.size()]));
}
// 2.内部校验分组
@ -86,6 +90,7 @@ public class ValidatorUtils {
/**
* 真正的校验方法
*
* @param object
* @param errorCode
* @param groups
@ -103,7 +108,50 @@ public class ValidatorUtils {
int lastDouhaoIndex = sb.lastIndexOf(",");
sb.replace(lastDouhaoIndex, lastDouhaoIndex + 1, "");
throw new ValidateException(errorCode.getCode(),sb.toString());
throw new ValidateException(errorCode.getCode(), sb.toString());
}
}
/**
* desc: 校验对象json串必填字段是否有值
*
* @param jsonString
* @param requiredColumns
* @return java.lang.String 返回未必填的字段
* @author LiuJanJun
* @date 2020/11/19 9:47 上午
*/
public static List<String> hasAllRequired(final String jsonString, Set<String> requiredColumns) {
List<String> missColList = new ArrayList<>();
if (!CollectionUtils.isEmpty(requiredColumns)) {
//验证字段非空
requiredColumns.forEach(column -> {
//按照必填字段取前台传过来的参数
Object val = null;
if (StringUtils.isNotBlank(jsonString)) {
JSONObject jsonObject = JSONObject.parseObject(jsonString);
val = jsonObject.get(column.trim());
}
//如果没有查到那个值,就代表着传过来的字段少了
if (val == null || StringUtils.isBlank(val.toString())) {
missColList.add(column);
}
});
}
return missColList;
}
public static void main(String[] args) {
DingTalkTextMsg form = new DingTalkTextMsg();
form.setWebHook("1");
form.setContent("2");
//form.setAtMobiles();
//form.setAtAll();
//form.setSecret();
Set<String> requiredColumns = new HashSet<>();
requiredColumns.add("content");
requiredColumns.add("secret");
List<String> s = ValidatorUtils.hasAllRequired(JSON.toJSONString(form), requiredColumns);
System.out.println(s);
}
}

1
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/CertificationAddFormDTO.java

@ -27,6 +27,7 @@ public class CertificationAddFormDTO implements Serializable {
/**
* 徽章ID
*/
@NotBlank(message = "徽章ID不能为空", groups = {CertificationAdd.class})
private String badgeId;
/**

1
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/UserBadgeController.java

@ -56,6 +56,7 @@ public class UserBadgeController {
*/
@PostMapping("authbadgerecord")
public Result authBadgeRecord(@RequestBody CertificationAddFormDTO certificationAddFormDTO){
ValidatorUtils.validateEntity(certificationAddFormDTO, CertificationAddFormDTO.CertificationAdd.class);
return userBadgeService.authBadgeRecord(certificationAddFormDTO);
}

42
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java

@ -8,12 +8,10 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.PhoneValidatorUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.BadgeConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.dao.BadgeDao;
import com.epmet.dao.ResiUserBadgeDao;
import com.epmet.dao.UserBadgeDao;
import com.epmet.dao.UserRoleDao;
import com.epmet.dao.*;
import com.epmet.dto.ResiUserBadgeDTO;
import com.epmet.dto.UserBadgeCertificateRecordDTO;
import com.epmet.dto.form.*;
@ -29,10 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@ -60,6 +55,8 @@ public class UserBadgeServiceImpl implements UserBadgeService {
private ResiUserBadgeDao resiUserBadgeDao;
@Autowired
private BadgeDao badgeDao;
@Autowired
private BadgeCertificationConfigDao badgeCertificationConfigDao;
/**
* @Description 查询已经点亮的徽章
@ -124,7 +121,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
}
});
});
return userOperListResultDTOS;
return userOperListResultDTOS.stream().sorted(Comparator.comparing(UserOperListResultDTO::getBadgeName)).collect(Collectors.toList());
}
/**
@ -218,9 +215,14 @@ public class UserBadgeServiceImpl implements UserBadgeService {
@Transactional(rollbackFor = Exception.class)
public Result authBadgeRecord(CertificationAddFormDTO certificationAddFormDTO) {
log.info(JSON.toJSONString(certificationAddFormDTO));
if (StringUtils.isNotBlank(certificationAddFormDTO.getMobile())){
AuthFieldFormDTO authFieldFormDTO = new AuthFieldFormDTO();
authFieldFormDTO.setCustomerId(certificationAddFormDTO.getCustomerId());
authFieldFormDTO.setBadgeId(certificationAddFormDTO.getBadgeId());
validateParams(certificationAddFormDTO, authFieldFormDTO);
if (StringUtils.isNotBlank(certificationAddFormDTO.getMobile())) {
String smsCode = userBadgeRedis.getBadgeSmsCode(certificationAddFormDTO.getMobile());
if (!StringUtils.isNotBlank(smsCode)){
if (!StringUtils.isNotBlank(smsCode)) {
return new Result().error(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
}
}
@ -228,7 +230,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
List<String> userIds = new ArrayList<>();
userIds.add(certificationAddFormDTO.getUserId());
List<UserBaseInfoResultDTO> userBaseInfoResultDTOS = userBaseInfoService.queryUserBaseInfo(userIds);
if (CollectionUtils.isEmpty(userBaseInfoResultDTOS)){
if (CollectionUtils.isEmpty(userBaseInfoResultDTOS)) {
throw new RenException("查询用户基本信息集合为空......");
}
userBadgeDao.updateCertificateRecordIsLast(form.getBadgeId(),form.getUserId());
@ -245,13 +247,27 @@ public class UserBadgeServiceImpl implements UserBadgeService {
return new Result();
}
private void validateParams(CertificationAddFormDTO certificationAddFormDTO, AuthFieldFormDTO authFieldFormDTO) {
List<AuthFieldResultDTO> authFieldResultDTOS = this.authField(authFieldFormDTO);
if (CollectionUtils.isEmpty(authFieldResultDTOS)) {
throw new RenException("该徽章配置配置错误");
}
Set<String> requiredColumns = authFieldResultDTOS.stream()
.filter(o -> NumConstant.ONE_STR.equals(o.getIsRequired()))
.map(AuthFieldResultDTO::getEnName).collect(Collectors.toSet());
List<String> missColumns = ValidatorUtils.hasAllRequired(JSON.toJSONString(certificationAddFormDTO), requiredColumns);
if (!CollectionUtils.isEmpty(missColumns)) {
throw new RenException(JSON.toJSONString(missColumns).concat("不能为空"));
}
}
/**
* @Description 站内信发送提交徽章认证
* @Param form
* @author zxc
* @date 2020/11/10 9:04 上午
*/
public void sendMessageByUser(UserBadgeCertificateRecordDTO form){
public void sendMessageByUser(UserBadgeCertificateRecordDTO form) {
List<UserMessageFormDTO> msgList = new ArrayList<>();
UserMessageFormDTO formDTO = new UserMessageFormDTO();
formDTO.setApp(BadgeConstant.RESI);

Loading…
Cancel
Save