package com.ruoyi.system.service.impl.config;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.system.api.constant.ConfigEnum;
|
import com.ruoyi.system.api.domain.poji.config.Activeness;
|
import com.ruoyi.system.domain.dto.*;
|
import com.ruoyi.system.domain.pojo.config.Advert;
|
import com.ruoyi.system.domain.pojo.config.CustomConfig;
|
import com.ruoyi.system.domain.vo.MgtActivenessVo;
|
import com.ruoyi.system.domain.vo.MgtCustomConfigVo;
|
import com.ruoyi.system.mapper.config.CustomConfigMapper;
|
import com.ruoyi.system.service.config.ActivenessService;
|
import com.ruoyi.system.service.config.AdvertService;
|
import com.ruoyi.system.service.config.CustomConfigService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 系统配置 服务实现类
|
* </p>
|
*
|
* @author jqs
|
* @since 2023-04-25
|
*/
|
@Service
|
public class CustomConfigServiceImpl extends ServiceImpl<CustomConfigMapper, CustomConfig> implements CustomConfigService {
|
|
@Resource
|
private CustomConfigMapper customConfigMapper;
|
|
@Resource
|
private AdvertService advertService;
|
|
@Resource
|
private ActivenessService activenessService;
|
|
|
/**
|
* @param key
|
* @return CustomConfig
|
* @description 通过key获取系统自定义配置
|
* @author jqs
|
* @date 2023/6/6 11:55
|
*/
|
@Override
|
public CustomConfig getByKey(String key) {
|
return customConfigMapper.getByKey(key);
|
}
|
|
/**
|
* @param mgtServiceMobileEditDto
|
* @return void
|
* @description 修改客服号码
|
* @author jqs
|
* @date 2023/6/6 11:53
|
*/
|
@Override
|
public void editServiceMobile(MgtServiceMobileEditDto mgtServiceMobileEditDto) {
|
// 获取平台服务电话的配置
|
CustomConfig customConfig = getByKey(ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
|
// 如果配置不存在,则创建一个新的配置
|
if (customConfig == null) {
|
customConfig = new CustomConfig();
|
customConfig.setCreateTime(new Date());
|
}
|
// 设置配置的类型、键、名称、值和更新时间
|
customConfig.setType(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyType());
|
customConfig.setKey(ConfigEnum.PLATFORM_SERVICE_PHONE.getKey());
|
customConfig.setName(ConfigEnum.PLATFORM_SERVICE_PHONE.getKeyName());
|
customConfig.setValue(mgtServiceMobileEditDto.getServiceMobile());
|
customConfig.setUpdateTime(new Date());
|
// 保存或更新配置
|
this.saveOrUpdate(customConfig);
|
}
|
|
/**
|
* @param
|
* @return MgtCustomConfigVo
|
* @description 平台获取自定义配置
|
* @author jqs
|
* @date 2023/6/7 15:02
|
*/
|
@Override
|
public MgtCustomConfigVo getCustomConfig() {
|
MgtCustomConfigVo mgtCustomConfigVo = new MgtCustomConfigVo();
|
//获取自定义配置
|
List<CustomConfig> customConfigList = customConfigMapper.selectList(new LambdaQueryWrapper<CustomConfig>().eq(CustomConfig::getDelFlag, 0));
|
Optional.ofNullable(customConfigList).ifPresent(list -> {
|
Map<String, CustomConfig> configMap = list.stream().collect(Collectors.toMap(CustomConfig::getKey, Function.identity()));
|
// 遍历配置映射,设置相应的属性值
|
configMap.forEach((key, value) -> {
|
switch (key) {
|
case "SHARE_INTEGRAL":
|
mgtCustomConfigVo.setShareIntegral(Integer.valueOf(value.getValue()));
|
break;
|
case "SUGGEST_PLATFORM_INTEGRAL":
|
mgtCustomConfigVo.setSuggestPlatformIntegral(Integer.valueOf(value.getValue()));
|
break;
|
case "SIGN_IN_INTEGRAL":
|
mgtCustomConfigVo.setSignInIntegral(Integer.valueOf(value.getValue()));
|
break;
|
case "SUGGEST_SHOP_INTEGRAL":
|
mgtCustomConfigVo.setSuggestShopIntegral(Integer.valueOf(value.getValue()));
|
break;
|
case "PAY_MONEY_INTEGRAL":
|
mgtCustomConfigVo.setPayMoneyIntegral(Integer.valueOf(value.getValue()));
|
break;
|
case "ORDER_AUTO_CANCEL_TIME":
|
mgtCustomConfigVo.setOrderAutoCancelTime(Integer.valueOf(value.getValue()));
|
break;
|
case "HOME_STYLE":
|
mgtCustomConfigVo.setHomeStyle(Integer.valueOf(value.getValue()));
|
break;
|
case "SHOP_EMERGENCY_DEGREE":
|
mgtCustomConfigVo.setShopEmergencyDegree(value.getValue());
|
break;
|
case "SHOP_FOLLOW_TYPE":
|
mgtCustomConfigVo.setShopFollowType(value.getValue());
|
break;
|
case "SHOP_CUSTOM_STATUS":
|
mgtCustomConfigVo.setShopCustomStatus(value.getValue());
|
break;
|
case "SHOP_SOURCE_CHANNEL":
|
mgtCustomConfigVo.setShopSourceChannel(value.getValue());
|
break;
|
case "MEMBER_SOURCE_CHANNEL":
|
mgtCustomConfigVo.setMemberSourceChannel(value.getValue());
|
break;
|
case "MEMBER_CHARACTER":
|
mgtCustomConfigVo.setMemberCharacter(value.getValue());
|
break;
|
case "MEMBER_LEVEL":
|
mgtCustomConfigVo.setMemberLevel(value.getValue());
|
break;
|
case "MEMBER_TYPE":
|
mgtCustomConfigVo.setMemberType(value.getValue());
|
break;
|
case "NURSE_PROBLEM":
|
mgtCustomConfigVo.setNurseProblem(value.getValue());
|
break;
|
default:
|
break;
|
}
|
});
|
});
|
//获取广告配置
|
Advert advert = advertService.getAdvert();
|
if (advert != null) {
|
mgtCustomConfigVo.setHomeSlogan(advert.getAdContent());
|
mgtCustomConfigVo.setHomeLogo(advert.getLogoUrl());
|
mgtCustomConfigVo.setAdUrl(advert.getAdUrl());
|
mgtCustomConfigVo.setTargetType(advert.getTargetType());
|
mgtCustomConfigVo.setLinkUrl(advert.getLinkUrl());
|
mgtCustomConfigVo.setJumpType(advert.getJumpType());
|
mgtCustomConfigVo.setJumpId(advert.getJumpId());
|
}
|
//获取活跃度配置
|
List<Activeness> activenessList = activenessService.listActiveness();
|
if (activenessList != null && !activenessList.isEmpty()) {
|
List<MgtActivenessVo> mgtActivenessVoList = activenessList.stream()
|
.map(activeness -> {
|
MgtActivenessVo mgtActivenessVo = new MgtActivenessVo();
|
mgtActivenessVo.setActivenessId(activeness.getActivenessId());
|
mgtActivenessVo.setActivenessName(activeness.getActivenessName());
|
mgtActivenessVo.setStartDay(activeness.getStartDay());
|
mgtActivenessVo.setEndDay(activeness.getEndDay());
|
return mgtActivenessVo;
|
})
|
.collect(Collectors.toList());
|
mgtCustomConfigVo.setMgtActivenessVoList(mgtActivenessVoList);
|
}
|
return mgtCustomConfigVo;
|
}
|
|
|
/**
|
* @param mgtOtherConfigEditDto
|
* @return void
|
* @description 修改其他设置
|
* @author jqs
|
* @date 2023/6/7 16:07
|
*/
|
@Override
|
public void editOtherConfig(MgtOtherConfigEditDto mgtOtherConfigEditDto) {
|
// 获取当前时间
|
Date updateTime = new Date();
|
// 删除历史配置
|
deletePastConfig(updateTime);
|
// 新建配置
|
createNewConfig(mgtOtherConfigEditDto, updateTime);
|
}
|
|
/**
|
* @param updateTime
|
* @return void
|
* @description 删除历史配置
|
* @author jqs
|
* @date 2023/6/7 16:37
|
*/
|
private void deletePastConfig(Date updateTime) {
|
List<CustomConfig> customConfigList = customConfigMapper.selectList(new LambdaQueryWrapper<CustomConfig>()
|
.eq(CustomConfig::getDelFlag, 0)
|
.eq(CustomConfig::getType, 2));
|
for (CustomConfig customConfig : customConfigList) {
|
customConfig.setDelFlag(1);
|
customConfig.setUpdateTime(updateTime);
|
}
|
this.saveOrUpdateBatch(customConfigList);
|
}
|
|
/**
|
* @param mgtOtherConfigEditDto
|
* @param updateTime
|
* @return void
|
* @description 新建配置
|
* @author jqs
|
* @date 2023/6/7 16:37
|
*/
|
private void createNewConfig(MgtOtherConfigEditDto mgtOtherConfigEditDto, Date updateTime) {
|
for (ConfigEnum configEnum : ConfigEnum.values()) {
|
CustomConfig customConfig = new CustomConfig();
|
customConfig.setDelFlag(0);
|
customConfig.setType(configEnum.getKeyType());
|
customConfig.setKey(configEnum.getKey());
|
customConfig.setName(configEnum.getKeyName());
|
customConfig.setValue(getConfigValue(configEnum, mgtOtherConfigEditDto));
|
customConfig.setCreateTime(updateTime);
|
customConfig.setUpdateTime(updateTime);
|
this.saveOrUpdate(customConfig);
|
}
|
}
|
|
/**
|
* @param configEnum
|
* @param mgtOtherConfigEditDto
|
* @return String
|
* @description 获取配置参数
|
* @author jqs
|
* @date 2023/6/7 16:37
|
*/
|
private String getConfigValue(ConfigEnum configEnum, MgtOtherConfigEditDto mgtOtherConfigEditDto) {
|
switch (configEnum) {
|
case SHARE_INTEGRAL:
|
return mgtOtherConfigEditDto.getShareIntegral().toString();
|
case SUGGEST_PLATFORM_INTEGRAL:
|
return mgtOtherConfigEditDto.getSuggestPlatformIntegral().toString();
|
case SIGN_IN_INTEGRAL:
|
return mgtOtherConfigEditDto.getSignInIntegral().toString();
|
case SUGGEST_SHOP_INTEGRAL:
|
return mgtOtherConfigEditDto.getSuggestShopIntegral().toString();
|
case ORDER_AUTO_CANCEL_TIME:
|
return mgtOtherConfigEditDto.getOrderAutoCancelTime().toString();
|
case PAY_MONEY_INTEGRAL:
|
return mgtOtherConfigEditDto.getPayMoneyIntegral().toString();
|
case HOME_STYLE:
|
return mgtOtherConfigEditDto.getHomeStyle().toString();
|
default:
|
throw new IllegalArgumentException("Invalid ConfigEnum");
|
}
|
}
|
|
/**
|
* @param mgtShopConfigEditDto
|
* @return void
|
* @description 修改合作商配置
|
* @author jqs
|
* @date 2023/6/7 16:41
|
*/
|
@Override
|
public void editShopConfig(MgtShopConfigEditDto mgtShopConfigEditDto) {
|
// 获取当前时间
|
Date updateTime = new Date();
|
// 查询所有未删除、类型为3的自定义配置
|
List<CustomConfig> customConfigList = customConfigMapper.selectList(
|
new LambdaQueryWrapper<CustomConfig>()
|
.eq(CustomConfig::getDelFlag, 0)
|
.eq(CustomConfig::getType, 3)
|
);
|
if (customConfigList != null && !customConfigList.isEmpty()) {
|
String key;
|
String oldValue;
|
String newValue = null;
|
List<CustomConfig> updatedCustomConfigs = new ArrayList<>();
|
// 遍历配置列表,根据 key 更新配置值
|
for (CustomConfig customConfig : customConfigList) {
|
key = customConfig.getKey();
|
oldValue = customConfig.getValue();
|
switch (key) {
|
case "SHOP_EMERGENCY_DEGREE":
|
newValue = mgtShopConfigEditDto.getShopEmergencyDegree();
|
break;
|
case "SHOP_FOLLOW_TYPE":
|
newValue = mgtShopConfigEditDto.getShopFollowType();
|
break;
|
case "SHOP_CUSTOM_STATUS":
|
newValue = mgtShopConfigEditDto.getShopCustomStatus();
|
break;
|
case "SHOP_SOURCE_CHANNEL":
|
newValue = mgtShopConfigEditDto.getShopSourceChannel();
|
break;
|
default:
|
break;
|
}
|
customConfig.setValue(newValue);
|
customConfig.setUpdateTime(updateTime);
|
handleChangeConfig(oldValue, newValue, key);
|
updatedCustomConfigs.add(customConfig);
|
}
|
this.saveOrUpdateBatch(updatedCustomConfigs);
|
} else {
|
// 如果没有配置,则创建新配置
|
createNewConfig(ConfigEnum.SHOP_EMERGENCY_DEGREE, mgtShopConfigEditDto.getShopEmergencyDegree(), updateTime);
|
createNewConfig(ConfigEnum.SHOP_FOLLOW_TYPE, mgtShopConfigEditDto.getShopFollowType(), updateTime);
|
createNewConfig(ConfigEnum.SHOP_CUSTOM_STATUS, mgtShopConfigEditDto.getShopCustomStatus(), updateTime);
|
createNewConfig(ConfigEnum.SHOP_SOURCE_CHANNEL, mgtShopConfigEditDto.getShopSourceChannel(), updateTime);
|
}
|
}
|
|
/**
|
* @description 修改会员配置
|
* @author jqs
|
* @date 2023/6/7 17:16
|
* @param mgtMemberConfigEditDto
|
* @return void
|
*/
|
@Override
|
public void editMemberConfig(MgtMemberConfigEditDto mgtMemberConfigEditDto){
|
// 获取当前时间
|
Date updateTime = new Date();
|
// 查询所有未删除、类型为3的自定义配置
|
List<CustomConfig> customConfigList = customConfigMapper.selectList(
|
new LambdaQueryWrapper<CustomConfig>()
|
.eq(CustomConfig::getDelFlag, 0)
|
.eq(CustomConfig::getType, 4)
|
);
|
if (customConfigList != null && !customConfigList.isEmpty()) {
|
String key;
|
String oldValue;
|
String newValue = null;
|
List<CustomConfig> updatedCustomConfigs = new ArrayList<>();
|
// 遍历配置列表,根据 key 更新配置值
|
for (CustomConfig customConfig : customConfigList) {
|
key = customConfig.getKey();
|
oldValue = customConfig.getValue();
|
switch (key) {
|
case "MEMBER_SOURCE_CHANNEL":
|
newValue = mgtMemberConfigEditDto.getMemberSourceChannel();
|
break;
|
case "MEMBER_CHARACTER":
|
newValue = mgtMemberConfigEditDto.getMemberCharacter();
|
break;
|
case "MEMBER_LEVEL":
|
newValue = mgtMemberConfigEditDto.getMemberLevel();
|
break;
|
case "MEMBER_TYPE":
|
newValue = mgtMemberConfigEditDto.getMemberType();
|
break;
|
case "NURSE_PROBLEM":
|
newValue = mgtMemberConfigEditDto.getNurseProblem();
|
break;
|
default:
|
break;
|
}
|
customConfig.setValue(newValue);
|
customConfig.setUpdateTime(updateTime);
|
handleChangeConfig(oldValue, newValue, key);
|
updatedCustomConfigs.add(customConfig);
|
}
|
this.saveOrUpdateBatch(updatedCustomConfigs);
|
} else {
|
// 如果没有配置,则创建新配置
|
createNewConfig(ConfigEnum.MEMBER_SOURCE_CHANNEL, mgtMemberConfigEditDto.getMemberSourceChannel(), updateTime);
|
createNewConfig(ConfigEnum.MEMBER_CHARACTER, mgtMemberConfigEditDto.getMemberCharacter(), updateTime);
|
createNewConfig(ConfigEnum.MEMBER_LEVEL, mgtMemberConfigEditDto.getMemberLevel(), updateTime);
|
createNewConfig(ConfigEnum.MEMBER_TYPE, mgtMemberConfigEditDto.getMemberType(), updateTime);
|
createNewConfig(ConfigEnum.NURSE_PROBLEM, mgtMemberConfigEditDto.getNurseProblem(), updateTime);
|
}
|
}
|
|
/**
|
* @description 新建配置
|
* @author jqs
|
* @date 2023/6/7 17:06
|
* @param configEnum
|
* @param value
|
* @param updateTime
|
* @return void
|
*/
|
private void createNewConfig(ConfigEnum configEnum, String value, Date updateTime) {
|
CustomConfig customConfig = new CustomConfig();
|
customConfig.setDelFlag(0);
|
customConfig.setType(configEnum.getKeyType());
|
customConfig.setKey(configEnum.getKey());
|
customConfig.setName(configEnum.getKeyName());
|
customConfig.setValue(value);
|
customConfig.setCreateTime(updateTime);
|
customConfig.setUpdateTime(updateTime);
|
this.saveOrUpdate(customConfig);
|
}
|
|
/**
|
* @description 处理变动
|
* @author jqs
|
* @date 2023/6/7 17:06
|
* @param oldValue
|
* @param newValue
|
* @param key
|
* @return void
|
*/
|
private void handleChangeConfig(String oldValue, String newValue, String key) {
|
Set<String> oldSet = new HashSet<>(Arrays.asList(oldValue.split(",")));
|
Set<String> newSet = new HashSet<>(Arrays.asList(newValue.split(",")));
|
List<String> changeList = new ArrayList<>(oldSet);
|
changeList.removeAll(newSet);
|
if(changeList!=null&&!changeList.isEmpty()){
|
switch(key){
|
case "SHOP_EMERGENCY_DEGREE":
|
break;
|
case "SHOP_FOLLOW_TYPE":
|
break;
|
case "SHOP_CUSTOM_STATUS":
|
break;
|
case "SHOP_SOURCE_CHANNEL":
|
break;
|
case "MEMBER_SOURCE_CHANNEL":
|
break;
|
case "MEMBER_CHARACTER":
|
break;
|
case "MEMBER_LEVEL":
|
break;
|
case "MEMBER_TYPE":
|
break;
|
case "NURSE_PROBLEM":
|
break;
|
default:
|
break;
|
}
|
}
|
}
|
|
|
|
}
|