diff --git a/src/main/java/com/bellmann/common/result/ResultCode.java b/src/main/java/com/bellmann/common/result/ResultCode.java index 962dbd8..7633983 100644 --- a/src/main/java/com/bellmann/common/result/ResultCode.java +++ b/src/main/java/com/bellmann/common/result/ResultCode.java @@ -111,7 +111,9 @@ public enum ResultCode implements IResultCode, Serializable { DEVICE_ALREADY_BINDING_OTHER_LOGIC("F0020", "该设备已经绑定了其他逻辑ID,请解绑此设备后再操作!"), LOGICID_ALREADY_DEVICE("F0021","逻辑ID已有绑定设备,如需绑定其他设备,请解绑后操作!"), LOGICID_ALREADY_UNBINDING_ORDER_ALREADY_EXIST("F0022","逻辑ID已解绑,工单已存在!" ), - UPDATE_DEVICE_FAILED("F0023", "更新设备信息失败"); + UPDATE_DEVICE_FAILED("F0023", "更新设备信息失败"), + + DEVICE_BINDING_FAILED("F0024","设备更换失败"); @Override public String getCode() { return code; diff --git a/src/main/java/com/bellmann/common/util/CommonUtils.java b/src/main/java/com/bellmann/common/util/CommonUtils.java new file mode 100644 index 0000000..bb0f050 --- /dev/null +++ b/src/main/java/com/bellmann/common/util/CommonUtils.java @@ -0,0 +1,17 @@ +package com.bellmann.common.util; + +import java.util.Random; + +public class CommonUtils { + + public static String getRandomString(int length) { //length表示生成字符串的长度 + String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; + Random random = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + return "12$"+sb.toString(); + } +} diff --git a/src/main/java/com/bellmann/controller/OrderInfoController.java b/src/main/java/com/bellmann/controller/OrderInfoController.java index 68d7c82..6e4ac4d 100644 --- a/src/main/java/com/bellmann/controller/OrderInfoController.java +++ b/src/main/java/com/bellmann/controller/OrderInfoController.java @@ -68,7 +68,7 @@ public class OrderInfoController { @PutMapping("binding-dev-oui-sno/{orderId}/{devOuiSno}") - @Operation(summary = "绑定设备") + @Operation(summary = "绑定前检查设备校验") public Result bindingOuiSno(@PathVariable String devOuiSno, @PathVariable Long orderId){ return orderInfoService.bindingOuiSno(devOuiSno,orderId); } diff --git a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java index 73affd1..40614e1 100644 --- a/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java +++ b/src/main/java/com/bellmann/mapper/DeviceTypeVerMapper.java @@ -28,4 +28,6 @@ public interface DeviceTypeVerMapper extends BaseMapper { Long countDevTypeStatic(Long typeAndVerId); DeviceTypeVerForm findDevTypeVerEditForm(@Param("typeAndVerId") Long typeAndVerId); + + Long getTypeAndVerId(); } diff --git a/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java index 8f48f13..14bfe3f 100644 --- a/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java +++ b/src/main/java/com/bellmann/service/impl/OrderInfoServiceImpl.java @@ -10,11 +10,9 @@ import com.bellmann.common.enums.*; import com.bellmann.common.exception.BusinessException; import com.bellmann.common.result.Result; import com.bellmann.common.result.ResultCode; +import com.bellmann.common.util.CommonUtils; import com.bellmann.converter.OrderInfoConverter; -import com.bellmann.mapper.DeviceStaticMapper; -import com.bellmann.mapper.DeviceTypeVerDetailMapper; -import com.bellmann.mapper.OrderInfoMapper; -import com.bellmann.mapper.OrderServiceMapper; +import com.bellmann.mapper.*; import com.bellmann.model.bo.DeviceDetailBO; import com.bellmann.model.entity.DeviceStatic; import com.bellmann.model.entity.OrderInfo; @@ -25,12 +23,15 @@ import com.bellmann.model.vo.OrderInfoTableVO; import com.bellmann.model.vo.OrderInfoVO; import com.bellmann.security.util.SecurityUtils; import com.bellmann.service.OrderInfoService; +import com.zznode.itms.api.InventoryManager; import com.zznode.itms.api.NBIManager; +import com.zznode.itms.api.Utils; import com.zznode.itms.idl.resourcedefinition.*; import lombok.RequiredArgsConstructor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; /** @@ -56,6 +57,8 @@ public class OrderInfoServiceImpl implements OrderInfoService { private final DeviceStaticMapper deviceStaticMapper; private final OrderInfoConverter orderInfoConverter; + + private final DeviceTypeVerMapper deviceTypeVerMapper; @Override public Page tablePage(SelectQuery query) { int pageNum = query.getPageNum(); @@ -320,6 +323,46 @@ public class OrderInfoServiceImpl implements OrderInfoService { @Override public Result bindingOuiSno(String devOuiSno, Long orderId) { + checkDevice(devOuiSno,orderId); + OrderInfo orderInfo = orderInfoMapper.selectOne(new QueryWrapper() + .eq("order_id", orderId) + .select("order_id","order_status","unique_user_id","pppoe_account","ad_no") + ); + if (OrderStatusEnum.PROCESSING.getValue().equals(orderInfo.getOrderStatus())){ + devOuiSno = CommonUtils.getRandomString(14); + createDevice(devOuiSno,orderInfo); + } + int result = NBIManager.bindDevice(orderId, devOuiSno); + if (result!=0){ + throw new BusinessException(ResultCode.DEVICE_BINDING_FAILED); + } + return Result.success(); + } + + private void createDevice(String ouiSno,OrderInfo order){ + RDeviceStaticStruct deviceStaticStruct=new RDeviceStaticStruct(); + deviceStaticStruct.typeAndVerId = deviceTypeVerMapper.getTypeAndVerId(); + deviceStaticStruct.custId= Utils.LONG_NULL; + deviceStaticStruct.regionAreaId=order.getSystemDomain(); + deviceStaticStruct.corpAreaId = Utils.LONG_NULL; + deviceStaticStruct.devSNo=ouiSno; + deviceStaticStruct.devMac=""; + deviceStaticStruct.devPPPoE=order.getPppoeAccount(); + deviceStaticStruct.devADNo=order.getAdNo(); + deviceStaticStruct.devCreateTime=new Date().getTime(); + deviceStaticStruct.devModifyTime=Utils.LONG_NULL; + deviceStaticStruct.devSoapFlag=true; + deviceStaticStruct.devInformFlag=true; + deviceStaticStruct.devStatus = RDevStatus.DEV_NORMAL; + deviceStaticStruct.devRemark1=""; + deviceStaticStruct.devRemark2=""; + deviceStaticStruct.devRemark3=""; + deviceStaticStruct.devRemark4=""; + deviceStaticStruct.devRemark5="1"; + RDeviceStaticStructHolder holder=new RDeviceStaticStructHolder(deviceStaticStruct); + int result= InventoryManager.addDevice(holder); + } + private void checkDevice(String devOuiSno,Long orderId){ String[] split = devOuiSno.split("-"); if (split.length!=2){ throw new BusinessException(ResultCode.DEV_OUI_SNO_FORMAT_ERROR); @@ -350,10 +393,5 @@ public class OrderInfoServiceImpl implements OrderInfoService { if (!"0".equals(devSnoOui)){ throw new BusinessException(ResultCode.LOGICID_ALREADY_DEVICE); } - orderInfoMapper.update(null,new LambdaUpdateWrapper() - .eq(OrderInfo::getOrderId,orderId) - .set(OrderInfo::getDevSnoOui,devOuiSno) - ); - return Result.success(); } } diff --git a/src/main/resources/mapper/DeviceTypeVerMapper.xml b/src/main/resources/mapper/DeviceTypeVerMapper.xml index fadc00a..de7c48b 100644 --- a/src/main/resources/mapper/DeviceTypeVerMapper.xml +++ b/src/main/resources/mapper/DeviceTypeVerMapper.xml @@ -108,4 +108,19 @@ WHERE idtv.type_and_ver_id = #{typeAndVerId} + +