新增 后管生成个人桩时,生成密钥逻辑,并且绑定个人桩时增加密钥校验

This commit is contained in:
DESKTOP-D9QDT1P\JS-ZZA
2023-03-13 17:01:07 +08:00
parent 14c95a68c5
commit db31e0679b
7 changed files with 61 additions and 6 deletions

View File

@@ -30,6 +30,7 @@ import com.jsowell.pile.vo.base.PileInfoVO;
import com.jsowell.pile.vo.uniapp.*;
import com.jsowell.pile.vo.web.PileStationVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -113,7 +114,12 @@ public class PileService {
// 组装pile_basic_info表数据
basicInfo = new PileBasicInfo();
basicInfo.setSn(sn); // sn号
basicInfo.setBusinessType(BusinessTypeEnum.OPERATING_PILE.getValue()); // 经营类型 默认运营
basicInfo.setBusinessType(dto.getChargerPileType()); // 经营类型 1-运营桩2-个人
if (StringUtils.equals(BusinessTypeEnum.INDIVIDUAL_PILE.getValue(), dto.getChargerPileType())) {
// 个人桩生成一个八位的密钥(字母加数字)
String secretKey = RandomStringUtils.randomAlphanumeric(8).toUpperCase(Locale.ROOT);
basicInfo.setSecretKey(secretKey);
}
basicInfo.setSoftwareProtocol(dto.getSoftwareProtocol()); // 软件协议
basicInfo.setMerchantId(Long.valueOf(dto.getMerchantId())); // 运营商id
basicInfo.setStationId(Long.valueOf(dto.getStationId())); // 站点id
@@ -245,7 +251,17 @@ public class PileService {
// 说明已经被绑定过,抛出异常
throw new BusinessException(ReturnCodeEnum.CODE_PILE_HAS_BEEN_BINDING_ERROR);
}
// 如果没被绑定,则此用户为管理员
// 如果没被绑定,先校验桩密钥是否一致
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(dto.getPileSn());
if (pileBasicInfo == null) {
// 未查到则说明没有此桩
throw new BusinessException(ReturnCodeEnum.CODE_PILE_NOT_INFO);
}
if (!StringUtils.equals(pileBasicInfo.getSecretKey(), dto.getSecretKey())) {
// 错误的密钥信息
throw new BusinessException(ReturnCodeEnum.CODE_SECRET_KEY_ERROR);
}
// 密钥正确,且桩未被绑定,则此用户为管理员
pileMemberRelation.setMemberId(dto.getMemberId());
pileMemberRelation.setType("1"); // 1-管理员
return pileMemberRelationService.insertPileMemberRelation(pileMemberRelation);
@@ -346,7 +362,7 @@ public class PileService {
public PersonPileConnectorSumInfoVO getAccumulativeInfo(QueryPersonPileDTO dto) {
List<PersonPileConnectorSumInfoVO> accumulativeInfo = orderBasicInfoService.getAccumulativeInfo(dto);
if (CollectionUtils.isEmpty(accumulativeInfo)) {
throw new BusinessException("00400011", "未查到相关订单信息!");
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
}
// BigDecimal sumChargingTime = BigDecimal.ZERO;
// BigDecimal sumUsedElectricity = BigDecimal.ZERO;
@@ -391,7 +407,7 @@ public class PileService {
PageHelper.startPage(pageNum, pageSize);
List<PersonPileConnectorSumInfoVO> accumulativeInfo = orderBasicInfoService.getAccumulativeInfo(dto);
if (CollectionUtils.isEmpty(accumulativeInfo)) {
throw new BusinessException("00400011", "未查到相关订单信息!");
throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL);
}
PageInfo<PersonPileConnectorSumInfoVO> pageInfo = new PageInfo<>(accumulativeInfo);
for (PersonPileConnectorSumInfoVO personPileConnectorSumInfoVO : pageInfo.getList()) {

View File

@@ -115,6 +115,12 @@ public enum ReturnCodeEnum {
CODE_USER_BINDING_CARNO_ERROR("00500002", "用户绑定车牌号异常"),
CODE_USER_UNBIND_CARNO_ERROR("00500003", "用户解绑车牌号异常"),
CODE_QUERY_ORDER_INFO_IS_NULL("00400011", "未查到相关订单信息!"),
CODE_PILE_NOT_INFO("00400012", "未查到该该桩的信息,请检查!"),
CODE_SECRET_KEY_ERROR("00400013", "填写的桩密钥有误,请检查!"),
;
private String value;

View File

@@ -40,6 +40,12 @@ public class PileBasicInfo extends BaseEntity {
@Excel(name = "经营类型", readConverterExp = "1=-运营桩2-个人桩")
private String businessType;
/**
* 个人桩密钥(八位,字母数字组合)
*/
@Excel(name = "个人桩密钥")
private String secretKey;
/**
* 软件协议1-云快充2-永联)
*/
@@ -190,12 +196,21 @@ public class PileBasicInfo extends BaseEntity {
return delFlag;
}
public String getSecretKey() {
return secretKey;
}
public void setSecretKey(String secretKey) {
this.secretKey = secretKey;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.JSON_STYLE)
.append("id", getId())
.append("sn", getSn())
.append("businessType", getBusinessType())
.append("secretKey", getSecretKey())
.append("softwareProtocol", getSoftwareProtocol())
.append("productionDate", getProductionDate())
.append("licenceId", getLicenceId())

View File

@@ -51,4 +51,10 @@ public class BatchCreatePileDTO {
* 备注
*/
private String remark;
/**
* 经营类型
* 1-运营桩2-个人桩
*/
private String chargerPileType;
}

View File

@@ -15,6 +15,11 @@ public class PileMemberBindingDTO {
*/
private String pileSn;
/**
* 个人桩密钥
*/
private String secretKey;
/**
* 手机号
*/

View File

@@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="id" column="id" />
<result property="sn" column="sn" />
<result property="businessType" column="business_type" />
<result property="secretKey" column="secret_key" />
<result property="softwareProtocol" column="software_protocol" />
<result property="productionDate" column="production_date" />
<result property="licenceId" column="licence_id" />
@@ -26,7 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, sn, business_type, software_protocol, production_date, licence_id, model_id, sim_id,
id, sn, business_type, secret_key, software_protocol, production_date, licence_id, model_id, sim_id,
merchant_id, station_id, fault_reason, create_by, create_time, update_by, update_time, del_flag, remark
</sql>
@@ -40,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<where>
<if test="sn != null and sn != ''"> and sn = #{sn}</if>
<if test="businessType != null and businessType != ''"> and business_type = #{businessType}</if>
<if test="secretKey != null and secretKey != ''"> and secret_key = #{secretKey}</if>
<if test="softwareProtocol != null and softwareProtocol != ''"> and software_protocol = #{softwareProtocol}</if>
<!--<if test="params.beginProductionDate != null and params.beginProductionDate != '' and params.endProductionDate != null and params.endProductionDate != ''"> and production_date between #{params.beginProductionDate} and #{params.endProductionDate}</if>
--> <if test="licenceId != null "> and licence_id = #{licenceId}</if>
@@ -67,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="sn != null">sn,</if>
<if test="businessType != null">business_type,</if>
<if test="secretKey != null">secret_key,</if>
<if test="softwareProtocol != null">software_protocol,</if>
<if test="productionDate != null">production_date,</if>
<if test="licenceId != null">licence_id,</if>
@@ -85,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="sn != null">#{sn},</if>
<if test="businessType != null">#{businessType},</if>
<if test="secretKey != null">#{secretKey},</if>
<if test="softwareProtocol != null">#{softwareProtocol},</if>
<if test="productionDate != null">#{productionDate},</if>
<if test="licenceId != null">#{licenceId},</if>
@@ -107,6 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="sn != null">sn = #{sn},</if>
<if test="businessType != null">business_type = #{businessType},</if>
<if test="secretKey != null">secret_key = #{secretKey},</if>
<if test="softwareProtocol != null">software_protocol = #{softwareProtocol},</if>
<if test="productionDate != null">production_date = #{productionDate},</if>
<if test="licenceId != null">licence_id = #{licenceId},</if>
@@ -189,13 +194,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="batchInsertPileBasicInfo">
insert into pile_basic_info
(sn, business_type, software_protocol, production_date, licence_id, model_id, sim_id,
(sn, business_type, secret_key, software_protocol, production_date, licence_id, model_id, sim_id,
merchant_id, station_id, fault_reason, create_by, update_by, del_flag, remark)
values
<foreach collection="infoList" item="item" separator=",">
(
#{item.sn,jdbcType=VARCHAR},
#{item.businessType,jdbcType=VARCHAR},
#{item.secretKey,jdbcType=VARCHAR},
#{item.softwareProtocol,jdbcType=VARCHAR},
#{item.productionDate,jdbcType=TIMESTAMP},
#{item.licenceId,jdbcType=BIGINT},

View File

@@ -259,6 +259,7 @@
placeholder="请选择桩类型"
>
<el-option label="运营桩" value="1" />
<el-option label="个人桩" value="2" />
</el-select>
</el-form-item>
<!--<el-form-item label="充电桩型号" prop="modelId">