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; 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;
@ -50,8 +54,8 @@ public class ValidatorUtils {
List<Class<?>> customerShowGroups = new ArrayList<>(); List<Class<?>> customerShowGroups = new ArrayList<>();
List<Class<?>> internalGroups = new ArrayList<>(); List<Class<?>> internalGroups = new ArrayList<>();
if (groups == null || groups.length ==0){ if (groups == null || groups.length == 0) {
validate(EpmetErrorCode.CUSTOMER_VALIDATE_ERROR ,object,groups); validate(EpmetErrorCode.CUSTOMER_VALIDATE_ERROR, object, groups);
return; return;
} }
Arrays.asList(groups).forEach(g -> { Arrays.asList(groups).forEach(g -> {
@ -65,7 +69,7 @@ public class ValidatorUtils {
// 1.校验客户端显示分组 // 1.校验客户端显示分组
if (!CollectionUtils.isEmpty(customerShowGroups)) { 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.内部校验分组 // 2.内部校验分组
@ -86,6 +90,7 @@ public class ValidatorUtils {
/** /**
* 真正的校验方法 * 真正的校验方法
*
* @param object * @param object
* @param errorCode * @param errorCode
* @param groups * @param groups
@ -103,7 +108,50 @@ public class ValidatorUtils {
int lastDouhaoIndex = sb.lastIndexOf(","); int lastDouhaoIndex = sb.lastIndexOf(",");
sb.replace(lastDouhaoIndex, lastDouhaoIndex + 1, ""); 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 * 徽章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);
} }

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.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,9 +215,14 @@ 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));
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()); String smsCode = userBadgeRedis.getBadgeSmsCode(certificationAddFormDTO.getMobile());
if (!StringUtils.isNotBlank(smsCode)){ if (!StringUtils.isNotBlank(smsCode)) {
return new Result().error(EpmetErrorCode.MOBILE_CODE_ERROR.getCode()); return new Result().error(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
} }
} }
@ -228,7 +230,7 @@ public class UserBadgeServiceImpl implements UserBadgeService {
List<String> userIds = new ArrayList<>(); List<String> userIds = new ArrayList<>();
userIds.add(certificationAddFormDTO.getUserId()); userIds.add(certificationAddFormDTO.getUserId());
List<UserBaseInfoResultDTO> userBaseInfoResultDTOS = userBaseInfoService.queryUserBaseInfo(userIds); List<UserBaseInfoResultDTO> userBaseInfoResultDTOS = userBaseInfoService.queryUserBaseInfo(userIds);
if (CollectionUtils.isEmpty(userBaseInfoResultDTOS)){ if (CollectionUtils.isEmpty(userBaseInfoResultDTOS)) {
throw new RenException("查询用户基本信息集合为空......"); throw new RenException("查询用户基本信息集合为空......");
} }
userBadgeDao.updateCertificateRecordIsLast(form.getBadgeId(),form.getUserId()); userBadgeDao.updateCertificateRecordIsLast(form.getBadgeId(),form.getUserId());
@ -245,13 +247,27 @@ 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
* @author zxc * @author zxc
* @date 2020/11/10 9:04 上午 * @date 2020/11/10 9:04 上午
*/ */
public void sendMessageByUser(UserBadgeCertificateRecordDTO form){ public void sendMessageByUser(UserBadgeCertificateRecordDTO form) {
List<UserMessageFormDTO> msgList = new ArrayList<>(); List<UserMessageFormDTO> msgList = new ArrayList<>();
UserMessageFormDTO formDTO = new UserMessageFormDTO(); UserMessageFormDTO formDTO = new UserMessageFormDTO();
formDTO.setApp(BadgeConstant.RESI); formDTO.setApp(BadgeConstant.RESI);

Loading…
Cancel
Save