Browse Source

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

dev_shibei_match
jianjun 5 years ago
parent
commit
c089cb9379
  1. 48
      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. 34
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java

48
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; 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.EpmetErrorCode;
import com.epmet.commons.tools.exception.ValidateException; import com.epmet.commons.tools.exception.ValidateException;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator; import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.context.support.ResourceBundleMessageSource;
@ -86,6 +90,7 @@ public class ValidatorUtils {
/** /**
* 真正的校验方法 * 真正的校验方法
*
* @param object * @param object
* @param errorCode * @param errorCode
* @param groups * @param groups
@ -106,4 +111,47 @@ public class ValidatorUtils {
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 * 徽章ID
*/ */
@NotBlank(message = "徽章ID不能为空", groups = {CertificationAdd.class})
private String badgeId; 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") @PostMapping("authbadgerecord")
public Result authBadgeRecord(@RequestBody CertificationAddFormDTO certificationAddFormDTO){ public Result authBadgeRecord(@RequestBody CertificationAddFormDTO certificationAddFormDTO){
ValidatorUtils.validateEntity(certificationAddFormDTO, CertificationAddFormDTO.CertificationAdd.class);
return userBadgeService.authBadgeRecord(certificationAddFormDTO); return userBadgeService.authBadgeRecord(certificationAddFormDTO);
} }

34
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.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.PhoneValidatorUtils; import com.epmet.commons.tools.validator.PhoneValidatorUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.BadgeConstant; import com.epmet.constant.BadgeConstant;
import com.epmet.constant.SmsTemplateConstant; import com.epmet.constant.SmsTemplateConstant;
import com.epmet.dao.BadgeDao; import com.epmet.dao.*;
import com.epmet.dao.ResiUserBadgeDao;
import com.epmet.dao.UserBadgeDao;
import com.epmet.dao.UserRoleDao;
import com.epmet.dto.ResiUserBadgeDTO; import com.epmet.dto.ResiUserBadgeDTO;
import com.epmet.dto.UserBadgeCertificateRecordDTO; import com.epmet.dto.UserBadgeCertificateRecordDTO;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
@ -29,10 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -60,6 +55,8 @@ public class UserBadgeServiceImpl implements UserBadgeService {
private ResiUserBadgeDao resiUserBadgeDao; private ResiUserBadgeDao resiUserBadgeDao;
@Autowired @Autowired
private BadgeDao badgeDao; private BadgeDao badgeDao;
@Autowired
private BadgeCertificationConfigDao badgeCertificationConfigDao;
/** /**
* @Description 查询已经点亮的徽章 * @Description 查询已经点亮的徽章
@ -124,7 +121,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
} }
}); });
}); });
return userOperListResultDTOS; return userOperListResultDTOS.stream().sorted(Comparator.comparing(UserOperListResultDTO::getBadgeName)).collect(Collectors.toList());
} }
/** /**
@ -218,6 +215,11 @@ public class UserBadgeServiceImpl implements UserBadgeService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Result authBadgeRecord(CertificationAddFormDTO certificationAddFormDTO) { public Result authBadgeRecord(CertificationAddFormDTO certificationAddFormDTO) {
log.info(JSON.toJSONString(certificationAddFormDTO)); log.info(JSON.toJSONString(certificationAddFormDTO));
AuthFieldFormDTO authFieldFormDTO = new AuthFieldFormDTO();
authFieldFormDTO.setCustomerId(certificationAddFormDTO.getCustomerId());
authFieldFormDTO.setBadgeId(certificationAddFormDTO.getBadgeId());
validateParams(certificationAddFormDTO, authFieldFormDTO);
if (StringUtils.isNotBlank(certificationAddFormDTO.getMobile())) { if (StringUtils.isNotBlank(certificationAddFormDTO.getMobile())) {
String smsCode = userBadgeRedis.getBadgeSmsCode(certificationAddFormDTO.getMobile()); String smsCode = userBadgeRedis.getBadgeSmsCode(certificationAddFormDTO.getMobile());
if (!StringUtils.isNotBlank(smsCode)) { if (!StringUtils.isNotBlank(smsCode)) {
@ -245,6 +247,20 @@ public class UserBadgeServiceImpl implements UserBadgeService {
return new Result(); 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 站内信发送提交徽章认证 * @Description 站内信发送提交徽章认证
* @Param form * @Param form

Loading…
Cancel
Save