package com.om.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.om.entity.dto.AppBaseDTO; import com.om.entity.dto.GuidDTO; import com.om.entity.dto.VciQueryPageDTO; import com.om.entity.po.*; import com.om.entity.vo.*; import com.om.exception.BadReqException; import com.om.mapper.UserMapper; import com.om.mapper.VciInfoMapper; import com.om.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.om.utils.*; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author bmmx * @since 2024-02-27 */ @Service public class VciInfoServiceImpl extends ServiceImpl implements IVciInfoService { @Resource private UserMapper userMapper; @Resource private IUserVciService userVciService; @Resource private JwtUtils jwtUtils; @Resource private ISdkClientsService sdkClientsService; @Resource private ISdkVersionInfoService sdkVersionInfoService; @Resource private ISdkVersionDescribeService sdkVersionDescribeService; @Resource private IPcbVersionInfoService pcbVersionInfoService; @Resource private IAppService appService; @Resource private IAppVersionDescribeService appVersionDescribeService; @Resource private IAppsClientsService appsClientsService; @Resource private HuaweiObsUtil obsUtil; @Override public Result addVci(VciInfo vciInfo) { if (BeanUtil.isEmpty(vciInfo)){ throw new BadReqException("参数为空"); } vciInfo.setCreateTime(LocalDateTime.now()); vciInfo.setUpdateTime(LocalDateTime.now()); this.save(vciInfo); return Result.ok(); } @Override public Result addList(List vciInfos) { if (BeanUtil.isEmpty(vciInfos)){ throw new BadReqException("参数为空"); } for (VciInfo vciInfo : vciInfos) { vciInfo.setCreateTime(LocalDateTime.now()); vciInfo.setUpdateTime(LocalDateTime.now()); } this.saveBatch(vciInfos); return Result.ok(); } @Override public Result deleteByNum(String vciNum) { //根据vciNum查询 VciInfo one = this.lambdaQuery() .eq(VciInfo::getVciNum, vciNum) .one(); if (BeanUtil.isEmpty(one)){ throw new BadReqException("vci设备不存在"); } //删除 this.removeById(one); return Result.ok(); } @Override public Result updateState(Integer id, Integer state) { //根据id查询 VciInfo vciInfo = this.getById(id); if (BeanUtil.isEmpty(vciInfo)){ throw new BadReqException("vci设备不存在"); } vciInfo.setState(state); this.updateById(vciInfo); return Result.ok(); } @Override public Result getList() { List list = this.list(); return Result.ok(list); } @Override public Result> getUserList(Integer vciId) { VciInfo vciInfo = this.getById(vciId); if (BeanUtil.isEmpty(vciInfo)){ throw new BadReqException("该vci不存在"); } List list = userVciService.lambdaQuery() .eq(UserVci::getVciInfoId, vciId) .list(); if (CollectionUtil.isEmpty(list)){ return Result.ok(Collections.emptyList()); } List vos= new ArrayList<>(); for (UserVci userVci : list) { Integer userId = userVci.getUserId(); User user = userMapper.selectById(userId); UserVciVO userVciVO = BeanUtil.copyProperties(userVci, UserVciVO.class); userVciVO.setUsername(user.getUsername()); vos.add(userVciVO); } return Result.ok(vos); } @Override public Result getPageList(VciQueryPageDTO dto) { Integer pageIndex = dto.getPageIndex(); Integer pageSize = dto.getPageSize(); String vciNum = dto.getVciNum(); Page page = this.lambdaQuery() .like(vciNum != null, VciInfo::getVciNum, vciNum) .orderByDesc(VciInfo::getCreateTime) .page(new Page<>(pageIndex, pageSize)); VciQueryPageVO vo = new VciQueryPageVO(); vo.setCurrent((int) page.getCurrent()); vo.setSize((int) page.getSize()); vo.setPages((int) page.getPages()); vo.setTotal((int) page.getTotal()); if (vciNum != null){ vo.setSearchCount(true); } List records = page.getRecords(); vo.setRecords(records); return Result.ok(vo); } @Override public Result VciUpdate(AppBaseDTO dto) { if (BeanUtil.isEmpty(dto)){ return Result.fail("未获取到数据").result(ResultCode.NO_DATA); } String guid = dto.getGuid(); GuidDTO guidDTO = AesUtil.getGuidDTOFromGuid(guid); String clientNum = guidDTO.getClientNum(); String language = dto.getLanguage(); Integer userId = guidDTO.getUserId(); AppSDKVO appSDKVO = new AppSDKVO(); List sdkData = new ArrayList<>(); List appData = new ArrayList<>(); //根据客户端clientNum查询sdk List sdkIds = sdkClientsService.lambdaQuery() .eq(SdkClients::getClientNum, clientNum) .list().stream().map(c -> c.getSdkId()).collect(Collectors.toList()); if (!sdkIds.isEmpty()){ List sdkVersionInfos = sdkVersionInfoService.listByIds(sdkIds); for (SdkVersionInfo sdkVersionInfo : sdkVersionInfos) { SDKData sdk = BeanUtil.copyProperties(sdkVersionInfo, SDKData.class); sdk.setVersion(sdkVersionInfo.getVersionNum()); String uploadUrl = obsUtil.getUploadUrl(sdkVersionInfo.getFileName(), "appv"); sdk.setUrl(uploadUrl); //根据pcbId查询pcb PcbVersionInfo pcbVersionInfo = pcbVersionInfoService.getById(sdkVersionInfo.getId()); if(BeanUtil.isEmpty(pcbVersionInfo)){ throw new BadReqException("该PCB版本不存在!!!"); } SdkVersionDescribe sdkVersionDescribe = sdkVersionDescribeService.lambdaQuery() .eq(SdkVersionDescribe::getSdkId, sdkVersionInfo.getId()) .eq(SdkVersionDescribe::getLanguage, language) .one(); if (BeanUtil.isEmpty(sdkVersionDescribe)){ throw new BadReqException("SDK版本描述不存在"); } sdk.setDescription(sdkVersionDescribe.getDescription()); sdk.setPcbVersion(pcbVersionInfo.getVersionNum()); sdkData.add(sdk); } } List appIds = appsClientsService.lambdaQuery() .eq(AppsClients::getClientNum, clientNum) .list().stream().map(c -> c.getAppId()).collect(Collectors.toList()); if (!appIds.isEmpty()){ List apps = appService.listByIds(appIds); if (apps.isEmpty()){ return Result.error().result(ResultCode.SERVICE_HANDLE_ERROR); } for (App app : apps) { appData appData1 = BeanUtil.copyProperties(app, appData.class); appData1.setVersion(app.getVersionNum()); appData1.setUrl(app.getSavePath()); AppVersionDescribe appVersionDescribe = appVersionDescribeService.lambdaQuery() .eq(AppVersionDescribe::getAppId, app.getId()) .eq(AppVersionDescribe::getLanguage, language) .one(); if (BeanUtil.isEmpty(appVersionDescribe)){ throw new BadReqException("app版本描述不存在"); } appData1.setDescription(appVersionDescribe.getDescription()); Integer sdkId = app.getSdkId(); //根据sdkid查询sdk版本 SdkVersionInfo sdkVersionInfo = sdkVersionInfoService.getById(sdkId); if (BeanUtil.isEmpty(sdkVersionInfo)){ throw new BadReqException("该sdk版本不存在"); } appData1.setMinSdkVersion(sdkVersionInfo.getVersionNum()); appData.add(appData1); } } appSDKVO.setAppData(appData); appSDKVO.setSdkData(sdkData); return Result.ok(appSDKVO); } }