package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.system.api.constants.ConfigEnum;
import com.ruoyi.system.api.domain.CustomConfig;
import com.ruoyi.system.domain.dto.PointsConfigDTO;
import com.ruoyi.system.domain.vo.CustomConfigVO;
import com.ruoyi.system.mapper.CustomConfigMapper;
import com.ruoyi.system.service.ICustomConfigService;
import java.util.List;
import java.util.Optional;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
*
* 系统配置 服务实现类
*
*
* @author mitao
* @since 2024-05-21
*/
@Service
public class CustomConfigServiceImpl extends ServiceImpl implements ICustomConfigService {
/**
* 保存积分设置
*
* @param dto 积分配置数据传输对象
*/
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void savePointsSettings(PointsConfigDTO dto) {
Optional customConfigOptional = getCustomConfigByKey(
ConfigEnum.MEMBER_POINTS_MONEY.getKey());
CustomConfig moneyConfig = customConfigOptional.orElseGet(() -> {
CustomConfig config = new CustomConfig();
config.setConfigKey(ConfigEnum.MEMBER_POINTS_MONEY.getKey());
config.setConfigType(ConfigEnum.MEMBER_POINTS_MONEY.getKeyType());
config.setConfigName(ConfigEnum.MEMBER_POINTS_MONEY.getKeyName());
return config;
});
moneyConfig.setConfigValue(dto.getConsumeAmount().toString());
Optional customConfigByKey = getCustomConfigByKey(
ConfigEnum.MEMBER_POINTS_POINTS.getKey());
CustomConfig pointsConfig = customConfigByKey.orElseGet(() -> {
CustomConfig config = new CustomConfig();
config.setConfigKey(ConfigEnum.MEMBER_POINTS_POINTS.getKey());
config.setConfigType(ConfigEnum.MEMBER_POINTS_POINTS.getKeyType());
config.setConfigName(ConfigEnum.MEMBER_POINTS_POINTS.getKeyName());
return config;
});
pointsConfig.setConfigValue(dto.getPoints().toString());
this.saveOrUpdateBatch(Lists.newArrayList(moneyConfig, pointsConfig));
}
private Optional getCustomConfigByKey(String key) {
return this.lambdaQuery()
.eq(CustomConfig::getConfigType, key)
.eq(CustomConfig::getDelFlag, 0).oneOpt();
}
/**
* 获取积分设置
*
* @return List
*/
@Override
public List getPointsConfig() {
List list = this.lambdaQuery()
.in(CustomConfig::getConfigType, ConfigEnum.MEMBER_POINTS_MONEY.getKey(),
ConfigEnum.MEMBER_POINTS_POINTS.getKey())
.eq(CustomConfig::getDelFlag, 0).list();
return BeanUtils.copyList(list, CustomConfigVO.class);
}
/**
* 获取订单说明设置
*
* @return CustomConfigVO
*/
@Override
public CustomConfigVO getOrderDesc() {
CustomConfigVO vo;
CustomConfig customConfig = getCustomConfigByKey(
ConfigEnum.MALL_ORDER_DESCRIPTION.getKey()).orElse(new CustomConfig());
vo = BeanUtils.copyBean(customConfig, CustomConfigVO.class);
return vo;
}
/**
* 订单说明设置
*
* @param description 订单说明
*/
@Override
public void saveOrderDescription(String description) {
CustomConfig orderDescription = getCustomConfigByKey(
ConfigEnum.MALL_ORDER_DESCRIPTION.getKey()).orElseGet(() -> {
CustomConfig customConfig = new CustomConfig();
customConfig.setConfigKey(ConfigEnum.MALL_ORDER_DESCRIPTION.getKey());
customConfig.setConfigName(ConfigEnum.MALL_ORDER_DESCRIPTION.getKeyName());
customConfig.setConfigType(ConfigEnum.MALL_ORDER_DESCRIPTION.getKeyType());
return customConfig;
});
orderDescription.setConfigValue(description);
this.saveOrUpdate(orderDescription);
}
}