package com.fdkankan.manage.service.impl;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fdkankan.manage.common.PageInfo;
import com.fdkankan.manage.common.ResultCode;
import com.fdkankan.manage.entity.AuthorizeCamera;
import com.fdkankan.manage.entity.AuthorizeCameraDetail;
import com.fdkankan.manage.entity.AuthorizeCameraLog;
import com.fdkankan.manage.entity.AuthorizeInstall;
import com.fdkankan.manage.exception.BusinessException;
import com.fdkankan.manage.mapper.IAuthorizeCameraMapper;
import com.fdkankan.manage.service.IAuthorizeCameraDetailService;
import com.fdkankan.manage.service.IAuthorizeCameraLogService;
import com.fdkankan.manage.service.IAuthorizeCameraService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fdkankan.manage.vo.request.AuthorizeParam;
import com.fdkankan.reg.RegCodeUtil;
import com.fdkankan.reg.dto.CamRegDto;
import com.fdkankan.reg.dto.CamRegSDto;
import com.fdkankan.reg.dto.MachineRegDto;
import jdk.internal.dynalink.linker.LinkerServices;
import org.apache.commons.lang3.StringUtils;
import org.ini4j.Reg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author
* @since 2023-07-07
*/
@Service
public class AuthorizeCameraServiceImpl extends ServiceImpl implements IAuthorizeCameraService {
@Autowired
IAuthorizeCameraDetailService authorizeCameraDetailService;
@Autowired
IAuthorizeCameraLogService authorizeCameraLogService;
@Override
public Object pageList(AuthorizeParam param) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(param.getCustomerName())){
wrapper.like(AuthorizeCamera::getCustomerName,param.getCustomerName());
}
if(param.getCustomerType() != null){
wrapper.eq(AuthorizeCamera::getCustomerType,param.getCustomerType());
}
if(param.getUseType() != null){
wrapper.eq(AuthorizeCamera::getUseType,param.getUseType());
}
if(StringUtils.isNotBlank(param.getAuthorizeKey())){
wrapper.like(AuthorizeCamera::getAuthorizeKey,param.getAuthorizeKey());
}
if(StringUtils.isNotBlank(param.getMachineUuid())){
wrapper.like(AuthorizeCamera::getMachineUuid,param.getMachineUuid());
}
wrapper.orderByDesc(AuthorizeCamera::getCreateTime);
Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
return PageInfo.PageInfo(page);
}
@Override
public AuthorizeCamera addOrUpdate(AuthorizeCamera param) {
param.setSysUserId(Long.valueOf((String) StpUtil.getLoginId()));
if(param.getId() == null){
//获取机器UUID,机器名称
MachineRegDto machineRegDto = RegCodeUtil.ParseMachineCode(param.getMachineCode());
if(machineRegDto == null){
throw new BusinessException(ResultCode.READ_MACHINE_CODE_ERROR);
}
param.setMachineUuid( machineRegDto.getUuid());
param.setMachineName( machineRegDto.getComputerName());
try {
CamRegSDto dtos = new CamRegSDto();
dtos.setMachineCode(param.getMachineCode());
dtos.setTimestamp(new Date().getTime());
List camRegs = new ArrayList<>();
String[] split = param.getSnCodes().split(",");
for (String snCode : split) {
CamRegDto camRegDto = new CamRegDto();
camRegDto.setSn(snCode);
camRegs.add(camRegDto);
}
dtos.setCamRegs(camRegs);
String authorizeKey = RegCodeUtil.batchGenRegeditCamCode(dtos);
if(StringUtils.isBlank(authorizeKey)){
throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
}
param.setAuthorizeKey(authorizeKey);
}catch (Exception e){
throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
}
}
this.saveOrUpdate(param);
return param;
}
@Override
public Object detail(Integer id) {
AuthorizeCamera authorizeCamera = this.getById(id);
if(authorizeCamera == null){
throw new BusinessException(ResultCode.RECOED_NO_EXITS);
}
return authorizeCameraDetailService.getByCameraId(id);
}
@Override
public Object updateSnCode(Integer detailId, String snCode) {
AuthorizeCameraDetail cameraDetail = authorizeCameraDetailService.getById(detailId);
if(cameraDetail == null){
throw new BusinessException(ResultCode.RECOED_NO_EXITS);
}
AuthorizeCamera authorizeCamera = this.getById(cameraDetail.getAuthorizeCameraId());
if(authorizeCamera == null){
throw new BusinessException(ResultCode.RECOED_NO_EXITS);
}
try {
CamRegSDto dtos = new CamRegSDto();
dtos.setMachineCode(authorizeCamera.getMachineCode());
dtos.setTimestamp(new Date().getTime());
List camRegs = new ArrayList<>();
CamRegDto camRegDto = new CamRegDto();
camRegDto.setSn(cameraDetail.getSnCode());
camRegDto.setToSn(snCode);
camRegs.add(camRegDto);
dtos.setCamRegs(camRegs);
String authorizeKey = RegCodeUtil.batchGenRegeditCamCode(dtos);
if(StringUtils.isBlank(authorizeKey)){
throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
}
AuthorizeCameraLog authorizeCameraLog = authorizeCameraLogService.saveLog(cameraDetail, snCode, authorizeKey);
authorizeCameraDetailService.updateSnCode(cameraDetail.getId(),snCode);
return authorizeCameraLog;
}catch (Exception e){
throw new BusinessException(ResultCode.GET_MACHINE_CODE_ERROR);
}
}
}