update 车牌号 Vin 唯一校验

This commit is contained in:
2023-10-10 10:32:19 +08:00
parent 250af6aad3
commit c7e01848e4
6 changed files with 87 additions and 23 deletions

View File

@@ -267,6 +267,10 @@ public class MemberController extends BaseController {
logger.info("用户绑定车牌号 param:{}", JSONObject.toJSONString(dto)); logger.info("用户绑定车牌号 param:{}", JSONObject.toJSONString(dto));
RestApiResponse<?> response = null; RestApiResponse<?> response = null;
try { try {
// 参数校验
if (StringUtils.isBlank(dto.getCarNo())) {
throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR);
}
String memberId = getMemberIdByAuthorization(request); String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId); dto.setMemberId(memberId);
memberService.memberBindingCarNo(dto); memberService.memberBindingCarNo(dto);

View File

@@ -15,6 +15,7 @@ import com.jsowell.adapay.config.AbstractAdapayConfig;
import com.jsowell.adapay.factory.AdapayConfigFactory; import com.jsowell.adapay.factory.AdapayConfigFactory;
import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.constant.Constants; import com.jsowell.common.constant.Constants;
import com.jsowell.common.constant.UserConstants;
import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.TitleTypeEnum; import com.jsowell.common.enums.TitleTypeEnum;
@@ -439,23 +440,19 @@ public class MemberService {
// 判断当前车牌号是否已经绑定 (2023.8.24 不做校验) // 判断当前车牌号是否已经绑定 (2023.8.24 不做校验)
MemberPlateNumberRelation relation = new MemberPlateNumberRelation(); MemberPlateNumberRelation relation = new MemberPlateNumberRelation();
relation.setMemberId(dto.getMemberId()); relation.setMemberId(dto.getMemberId());
if (StringUtils.isBlank(dto.getCarNo())) {
throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR);
}
relation.setLicensePlateNumber(dto.getCarNo()); relation.setLicensePlateNumber(dto.getCarNo());
// List<MemberPlateNumberRelation> list = memberPlateNumberRelationService.selectMemberPlateNumberRelationList(relation); // 判断当前车牌号是否被绑定
// if (CollectionUtils.isNotEmpty(list)) { if (UserConstants.NOT_UNIQUE.equals(memberPlateNumberRelationService.checkPlateNumberUnique(dto.getCarNo()))) {
// // 不为空说明该用户绑定过此车牌号 // 不为空说明该用户绑定过此车牌号
// throw new BusinessException(ReturnCodeEnum.CODE_THIS_CARNO_HAS_BEEN_BINDING); throw new BusinessException(ReturnCodeEnum.CODE_THIS_CARNO_HAS_BEEN_BINDING);
// } }
// 校验该车牌号是否为新能源车牌 // 校验该车牌号是否为新能源车牌
// relation.setPhoneNumber(dto.getPhoneNumber()); relation.setPhoneNumber(dto.getPhoneNumber());
if (StringUtils.isNotBlank(dto.getVinCode())) { if (StringUtils.isNotBlank(dto.getVinCode())) {
// 判断当前vin是否被绑定 // 判断当前vin是否被绑定
MemberPlateNumberRelation memberPlateInfoByVinCode = memberPlateNumberRelationService.getMemberPlateInfoByVinCode(dto.getVinCode()); if (UserConstants.NOT_UNIQUE.equals(memberPlateNumberRelationService.checkVinCodeUnique(dto.getVinCode()))) {
if (memberPlateInfoByVinCode != null) {
throw new BusinessException(ReturnCodeEnum.CODE_THIS_VIN_HAS_BEEN_BINDING); throw new BusinessException(ReturnCodeEnum.CODE_THIS_VIN_HAS_BEEN_BINDING);
} }
relation.setVinCode(dto.getVinCode().toUpperCase(Locale.ROOT)); relation.setVinCode(dto.getVinCode().toUpperCase(Locale.ROOT));
@@ -468,7 +465,7 @@ public class MemberService {
* 用户绑定鉴权卡 * 用户绑定鉴权卡
* @param dto * @param dto
*/ */
public int memberBindCard(BindingCardDTO dto){ public int memberBindCard(BindingCardDTO dto) {
// 校验短信验证码 // 校验短信验证码
MemberRegisterAndLoginDTO registerAndLoginDTO = MemberRegisterAndLoginDTO.builder() MemberRegisterAndLoginDTO registerAndLoginDTO = MemberRegisterAndLoginDTO.builder()
.mobileNumber(dto.getPhoneNumber()) .mobileNumber(dto.getPhoneNumber())

View File

@@ -1,11 +1,11 @@
package com.jsowell.pile.mapper; package com.jsowell.pile.mapper;
import java.util.List;
import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.domain.MemberPlateNumberRelation;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* 用户车牌对应关系Mapper接口 * 用户车牌对应关系Mapper接口
* *
@@ -86,5 +86,12 @@ public interface MemberPlateNumberRelationMapper {
* @param vinCode * @param vinCode
* @return * @return
*/ */
MemberPlateNumberRelation getMemberPlateInfoByVinCode(@Param("vinCode") String vinCode); MemberPlateNumberRelation queryByVinCode(@Param("vinCode") String vinCode);
/**
* 通过vin码查询信息
* @param vinCode
* @return
*/
MemberPlateNumberRelation queryByPlateNumber(@Param("plateNumber") String plateNumber);
} }

View File

@@ -1,8 +1,9 @@
package com.jsowell.pile.service; package com.jsowell.pile.service;
import java.util.List;
import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.domain.MemberPlateNumberRelation;
import java.util.List;
/** /**
* 用户车牌对应关系Service接口 * 用户车牌对应关系Service接口
* *
@@ -83,4 +84,8 @@ public interface IMemberPlateNumberRelationService
* @return * @return
*/ */
MemberPlateNumberRelation getMemberPlateInfoByVinCode(String vinCode); MemberPlateNumberRelation getMemberPlateInfoByVinCode(String vinCode);
String checkVinCodeUnique(String vinCode);
String checkPlateNumberUnique(String plateNumber);
} }

View File

@@ -1,6 +1,9 @@
package com.jsowell.pile.service.impl; package com.jsowell.pile.service.impl;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.jsowell.common.constant.UserConstants;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.StringUtils;
import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.domain.MemberPlateNumberRelation;
import com.jsowell.pile.mapper.MemberPlateNumberRelationMapper; import com.jsowell.pile.mapper.MemberPlateNumberRelationMapper;
@@ -70,10 +73,25 @@ public class MemberPlateNumberRelationServiceImpl implements IMemberPlateNumberR
@Override @Override
public int updatePlateNumber(MemberPlateNumberRelation memberPlateNumberRelation) { public int updatePlateNumber(MemberPlateNumberRelation memberPlateNumberRelation) {
if (StringUtils.isNotBlank(memberPlateNumberRelation.getLicensePlateNumber())) { String licensePlateNumber = memberPlateNumberRelation.getLicensePlateNumber();
String plateNumber = memberPlateNumberRelation.getLicensePlateNumber().toUpperCase(Locale.ROOT); if (StringUtils.isNotBlank(licensePlateNumber)) {
// 判断当前车牌号是否被绑定
if (UserConstants.NOT_UNIQUE.equals(checkPlateNumberUnique(licensePlateNumber))) {
// 不为空说明该用户绑定过此车牌号
throw new BusinessException(ReturnCodeEnum.CODE_THIS_CARNO_HAS_BEEN_BINDING);
}
String plateNumber = licensePlateNumber.toUpperCase(Locale.ROOT);
memberPlateNumberRelation.setLicensePlateNumber(plateNumber); memberPlateNumberRelation.setLicensePlateNumber(plateNumber);
} }
// 校验vin
String vinCode = memberPlateNumberRelation.getVinCode();
if (StringUtils.isNotBlank(vinCode)) {
// 判断当前vin是否被绑定
if (UserConstants.NOT_UNIQUE.equals(checkVinCodeUnique(vinCode))) {
throw new BusinessException(ReturnCodeEnum.CODE_THIS_VIN_HAS_BEEN_BINDING);
}
}
return memberPlateNumberRelationMapper.updateMemberPlateNumberRelation(memberPlateNumberRelation); return memberPlateNumberRelationMapper.updateMemberPlateNumberRelation(memberPlateNumberRelation);
} }
@@ -126,8 +144,34 @@ public class MemberPlateNumberRelationServiceImpl implements IMemberPlateNumberR
return null; return null;
} }
vinCode = vinCode.trim(); vinCode = vinCode.trim();
MemberPlateNumberRelation plateInfo = memberPlateNumberRelationMapper.getMemberPlateInfoByVinCode(vinCode); MemberPlateNumberRelation plateInfo = memberPlateNumberRelationMapper.queryByVinCode(vinCode);
log.info("通过vin码查询数据库绑定用户信息 vinCode:{}, result:{}", vinCode, JSON.toJSONString(plateInfo)); log.info("通过vin码查询数据库绑定用户信息 vinCode:{}, result:{}", vinCode, JSON.toJSONString(plateInfo));
return plateInfo; return plateInfo;
} }
/**
* 校验vin唯一
* @param vinCode
* @return
*/
@Override
public String checkVinCodeUnique(String vinCode) {
MemberPlateNumberRelation info = memberPlateNumberRelationMapper.queryByVinCode(vinCode);
if (info == null) {
return UserConstants.UNIQUE;
}
return UserConstants.NOT_UNIQUE;
}
/**
* 校验车牌号唯一
*/
@Override
public String checkPlateNumberUnique(String plateNumber) {
MemberPlateNumberRelation info = memberPlateNumberRelationMapper.queryByPlateNumber(plateNumber);
if (info == null) {
return UserConstants.UNIQUE;
}
return UserConstants.NOT_UNIQUE;
}
} }

View File

@@ -102,12 +102,19 @@
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</update> </update>
<select id="getMemberPlateInfoByVinCode" resultMap="MemberLicensePlateNumberRelationResult"> <select id="queryByVinCode" resultMap="MemberLicensePlateNumberRelationResult">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from member_plate_number_relation from member_plate_number_relation
where where del_flag = '0'
vin_code = #{vinCode,jdbcType=VARCHAR} and vin_code = #{vinCode,jdbcType=VARCHAR}
and del_flag = '0' </select>
<select id="queryByPlateNumber" resultMap="MemberLicensePlateNumberRelationResult">
select
<include refid="Base_Column_List"/>
from member_plate_number_relation
where del_flag = '0'
and license_plate_number = #{plateNumber,jdbcType=VARCHAR}
</select> </select>
</mapper> </mapper>