package com.qianwen.smartman.modules.sync.service.impl;
|
|
import java.time.Duration;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.base.BaseServiceImpl;
|
import com.qianwen.core.mp.support.Condition;
|
import com.qianwen.core.redis.cache.BladeRedis;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.common.constant.CommonConstant;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.modules.notify.service.INotifyConfigService;
|
import com.qianwen.smartman.modules.sync.constant.DingConstant;
|
import com.qianwen.smartman.modules.sync.constant.OuterAppConfigConstant;
|
import com.qianwen.smartman.modules.sync.constant.QyWechatConstant;
|
import com.qianwen.smartman.modules.sync.convert.OuterAppConfigConvert;
|
import com.qianwen.smartman.modules.sync.entity.OuterAppConfig;
|
import com.qianwen.smartman.modules.sync.mapper.OuterAppConfigMapper;
|
import com.qianwen.smartman.modules.sync.service.IOuterAppConfigService;
|
import com.qianwen.smartman.modules.sync.vo.OuterAppConfigVO;
|
import com.qianwen.smartman.modules.system.entity.UserOauth;
|
import com.qianwen.smartman.modules.system.service.IUserOauthService;
|
|
@Service
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/sync/service/impl/OuterAppConfigServiceImpl.class */
|
public class OuterAppConfigServiceImpl extends BaseServiceImpl<OuterAppConfigMapper, OuterAppConfig> implements IOuterAppConfigService {
|
private final BladeRedis bladeRedis;
|
private final IUserOauthService userOauthService;
|
private final INotifyConfigService notifyConfigService;
|
|
|
public OuterAppConfigServiceImpl(BladeRedis bladeRedis, IUserOauthService userOauthService, @Lazy INotifyConfigService notifyConfigService) {
|
this.bladeRedis = bladeRedis;
|
this.userOauthService = userOauthService;
|
this.notifyConfigService = notifyConfigService;
|
}
|
|
@Override // org.springblade.modules.sync.service.IOuterAppConfigService
|
public OuterAppConfig getAppConfig(Integer appType) {
|
Object configObj = this.bladeRedis.get(OuterAppConfigConstant.OUTER_APP_CONFIG + appType);
|
if (Func.isNotEmpty(configObj)) {
|
return (OuterAppConfig) Func.convert(configObj, OuterAppConfig.class);
|
}
|
|
OuterAppConfig dingAppConfig = getOne(Wrappers.<OuterAppConfig>lambdaQuery().eq(OuterAppConfig::getAppType, appType));
|
/*
|
OuterAppConfig dingAppConfig = (OuterAppConfig) getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getAppType();
|
}, appType));*/
|
this.bladeRedis.setEx(OuterAppConfigConstant.OUTER_APP_CONFIG + appType, dingAppConfig, Duration.ofDays(7L));
|
return dingAppConfig;
|
}
|
|
@Override // org.springblade.modules.sync.service.IOuterAppConfigService
|
@Transactional
|
public Boolean unbind(Integer type) {
|
this.bladeRedis.del(OuterAppConfigConstant.OUTER_APP_CONFIG + type);
|
this.userOauthService.update(Wrappers.<UserOauth>lambdaUpdate()
|
.eq(UserOauth::getSource, type.equals(OuterAppConfigConstant.QY_WECHAT) ? "WECHAT_ENTERPRISE_WEB" : "DINGTALK_WEB").set(UserOauth::getUserId, null));
|
/*
|
this.userOauthService.update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().eq((v0) -> {
|
return v0.getSource();
|
}, type.equals(OuterAppConfigConstant.QY_WECHAT) ? QyWechatConstant.QY_SOURCE : DingConstant.DING_AUTH_KEY)).set((v0) -> {
|
return v0.getUserId();
|
}, (Object) null));*/
|
return Boolean.valueOf(update(Wrappers.<OuterAppConfig>lambdaUpdate().eq(OuterAppConfig::getAppType, type).set(OuterAppConfig::getStatus, CommonConstant.DEACTIVATE)));
|
/*
|
return Boolean.valueOf(update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().eq((v0) -> {
|
return v0.getAppType();
|
}, type)).set((v0) -> {
|
return v0.getStatus();
|
}, CommonConstant.DEACTIVATE)));*/
|
}
|
|
@Override // org.springblade.modules.sync.service.IOuterAppConfigService
|
public OuterAppConfigVO submit(OuterAppConfigVO outerAppConfigVO) {
|
OuterAppConfig dingAppConfig = getOne(Wrappers.<OuterAppConfig>lambdaQuery().eq(OuterAppConfig::getAppType, outerAppConfigVO.getAppType().equals(OuterAppConfigConstant.QY_WECHAT) ? OuterAppConfigConstant.DING : OuterAppConfigConstant.QY_WECHAT));
|
/*
|
OuterAppConfig dingAppConfig = (OuterAppConfig) getOne((Wrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getAppType();
|
}, outerAppConfigVO.getAppType().equals(OuterAppConfigConstant.QY_WECHAT) ? OuterAppConfigConstant.DING : OuterAppConfigConstant.QY_WECHAT));*/
|
if (Func.isNotEmpty(dingAppConfig) && dingAppConfig.getStatus().equals(CommonConstant.ENABLE)) {
|
throw new ServiceException(MessageUtils.message("sys.outer.config.is.bind", new Object[0]));
|
}
|
OuterAppConfig outerAppConfig = OuterAppConfigConvert.INSTANCE.convert(outerAppConfigVO);
|
outerAppConfig.setStatus(CommonConstant.ENABLE);
|
saveOrUpdate(outerAppConfig);
|
this.bladeRedis.del(OuterAppConfigConstant.OUTER_APP_CONFIG + outerAppConfigVO.getAppType());
|
this.bladeRedis.del(new String[]{QyWechatConstant.TOKEN_KEY + QyWechatConstant.QY_APP_TYPE, QyWechatConstant.TOKEN_KEY + QyWechatConstant.BOOK_TYPE, DingConstant.DING_ACCESSTOKEN_REDIS_CACHE});
|
this.notifyConfigService.updateServerConfig(outerAppConfig);
|
return OuterAppConfigConvert.INSTANCE.convert(outerAppConfig);
|
}
|
|
@Override // org.springblade.modules.sync.service.IOuterAppConfigService
|
public List<OuterAppConfigVO> getConfigs(Map<String, Object> params) {
|
List<OuterAppConfig> list = list(Condition.getQueryWrapper(params, OuterAppConfig.class));
|
Map<Long, OuterAppConfig> configMap = list.parallelStream().collect(Collectors.toMap((v0) -> {
|
return v0.getId();
|
}, config -> {
|
return config;
|
}));
|
List<OuterAppConfigVO> configVOS = OuterAppConfigConvert.INSTANCE.convert(list);
|
configVOS.forEach(config2 -> {
|
OuterAppConfig appConfig = (OuterAppConfig) configMap.get(config2.getId());
|
if (!Objects.isNull(appConfig) && appConfig.getAppType().equals(OuterAppConfigConstant.QY_WECHAT)) {
|
config2.setWxDomain(appConfig.getDomainUrl());
|
} else if (!Objects.isNull(appConfig) && appConfig.getAppType().equals(OuterAppConfigConstant.DING)) {
|
config2.setDingDomain(appConfig.getDomainUrl());
|
}
|
});
|
return configVOS;
|
}
|
}
|