package com.dragoninfo.dcuc.app.strategy; import cn.hutool.core.bean.BeanUtil; import com.dragoninfo.dcuc.app.dto.AppResourceDTO; import com.dragoninfo.dcuc.app.dto.ResourceDTO; import com.dragoninfo.dcuc.app.entity.ApplyInfo; import com.dragoninfo.dcuc.app.enumresources.ResourceTypeEnum; import com.dragoninfo.dcuc.app.service.IApplyInfoService; import com.dragoninfo.dcuc.app.service.IApplyOauthService; import com.dragonsoft.duceap.base.enums.BooleanEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * @author mazq * @Description * @create 2020-11-25 14:21 */ @Component public class AppResourceStrategy implements ResourceOperateStrategy { @Autowired private IApplyInfoService applyInfoService; @Autowired private IApplyOauthService applyOauthService; @Override public ApplyInfo insertRemoteSource(AppResourceDTO appResourceDTO) { ApplyInfo applyInfo; ApplyInfo exist = applyInfoService.getAppByCode(appResourceDTO.getAppCode()); if (null == exist) { applyInfo = inserApplyInfo(appResourceDTO); } else { applyInfo = updateApplyInfo(exist, appResourceDTO); } return applyInfo; } @Override public boolean canHandle(String resourceType) { return ResourceTypeEnum.TJ_APP.getResourceId().equals(resourceType); } private ApplyInfo inserApplyInfo(AppResourceDTO dto) { ApplyInfo applyInfo = convertToApplyInfo(dto); //删除的应用,不插入数据库 if(BooleanEnum.TRUE.getValue().equals(dto.getDeleted())){ return applyInfo; } String secretKey = getApiKeys(applyInfo.getApplyCode()); String apiKey = getApiKeys(applyInfo.getApplyCode()); applyInfo.setSecretKey(secretKey); applyInfo.setApiKey(apiKey); applyInfoService.save(applyInfo); applyOauthService.saveOauth(applyInfo); return applyInfo; } private ApplyInfo updateApplyInfo(ApplyInfo applyInfo, AppResourceDTO dto) { ApplyInfo infoNew = convertToApplyInfo(dto); BeanUtil.copyProperties(infoNew, applyInfo, "id", "apiKey", "secretKey"); applyInfoService.update(applyInfo); //删除的应用 if(BooleanEnum.TRUE.getValue().equals(dto.getDeleted())){ applyInfoService.deleteById(applyInfo.getId()); } return applyInfo; } private ApplyInfo convertToApplyInfo(AppResourceDTO dto) { String appCode = dto.getAppCode(); ApplyInfo applyInfo = new ApplyInfo(); applyInfo.setApplyCode(appCode); applyInfo.setApplyName(dto.getAppName()); applyInfo.setOrgId(dto.getBuildUnitId()); applyInfo.setOrgName(dto.getBuildUnit()); applyInfo.setManagerOrgId(dto.getManagerUnitId()); applyInfo.setManagerOrgName(dto.getManagerUnit()); applyInfo.setJgFzr(dto.getBuildPrincipal()); applyInfo.setJgFzrPhone(dto.getBuildPrincipalPhone()); applyInfo.setFzr(dto.getContractPrincipal()); applyInfo.setFzrPhone(dto.getContractPrincipalPhone()); applyInfo.setManufacturerName(dto.getContractUnit()); applyInfo.setDeleted(dto.getDeleted()); applyInfo.setApplyUrl(dto.getAppUrl()); applyInfo.setApplyCategory(dto.getApplyCategory()); applyInfo.setPoliceSpecies(dto.getPoliceSpecies()); applyInfo.setManufacturerId(dto.getContractUnitId()); applyInfo.setRegistrationTime(dto.getRegistrationTime()); applyInfo.setApplyStatus(dto.getAppStatus()); return applyInfo; } private String getApiKeys(String value) { StringBuilder num = new StringBuilder(); for (int i = 0; i < 8; i++) { int random = (int) (Math.random() * 10); num.append(random); } return value + num; } }