houzhongyi
2024-07-11 e7c1260db32209a078a962aaa0ad5492c35774fb
提交 | 用户 | 时间
e7c126 1 package com.iailab.module.infra.service.config;
H 2
3 import com.iailab.framework.common.pojo.PageResult;
4 import com.iailab.module.infra.controller.admin.config.vo.ConfigPageReqVO;
5 import com.iailab.module.infra.controller.admin.config.vo.ConfigSaveReqVO;
6 import com.iailab.module.infra.convert.config.ConfigConvert;
7 import com.iailab.module.infra.dal.dataobject.config.ConfigDO;
8 import com.iailab.module.infra.dal.mysql.config.ConfigMapper;
9 import com.iailab.module.infra.enums.config.ConfigTypeEnum;
10 import com.google.common.annotations.VisibleForTesting;
11 import lombok.extern.slf4j.Slf4j;
12 import org.springframework.stereotype.Service;
13 import org.springframework.validation.annotation.Validated;
14
15 import javax.annotation.Resource;
16
17 import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception;
18 import static com.iailab.module.infra.enums.ErrorCodeConstants.*;
19
20 /**
21  * 参数配置 Service 实现类
22  */
23 @Service
24 @Slf4j
25 @Validated
26 public class ConfigServiceImpl implements ConfigService {
27
28     @Resource
29     private ConfigMapper configMapper;
30
31     @Override
32     public Long createConfig(ConfigSaveReqVO createReqVO) {
33         // 校验参数配置 key 的唯一性
34         validateConfigKeyUnique(null, createReqVO.getKey());
35
36         // 插入参数配置
37         ConfigDO config = ConfigConvert.INSTANCE.convert(createReqVO);
38         config.setType(ConfigTypeEnum.CUSTOM.getType());
39         configMapper.insert(config);
40         return config.getId();
41     }
42
43     @Override
44     public void updateConfig(ConfigSaveReqVO updateReqVO) {
45         // 校验自己存在
46         validateConfigExists(updateReqVO.getId());
47         // 校验参数配置 key 的唯一性
48         validateConfigKeyUnique(updateReqVO.getId(), updateReqVO.getKey());
49
50         // 更新参数配置
51         ConfigDO updateObj = ConfigConvert.INSTANCE.convert(updateReqVO);
52         configMapper.updateById(updateObj);
53     }
54
55     @Override
56     public void deleteConfig(Long id) {
57         // 校验配置存在
58         ConfigDO config = validateConfigExists(id);
59         // 内置配置,不允许删除
60         if (ConfigTypeEnum.SYSTEM.getType().equals(config.getType())) {
61             throw exception(CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE);
62         }
63         // 删除
64         configMapper.deleteById(id);
65     }
66
67     @Override
68     public ConfigDO getConfig(Long id) {
69         return configMapper.selectById(id);
70     }
71
72     @Override
73     public ConfigDO getConfigByKey(String key) {
74         return configMapper.selectByKey(key);
75     }
76
77     @Override
78     public PageResult<ConfigDO> getConfigPage(ConfigPageReqVO pageReqVO) {
79         return configMapper.selectPage(pageReqVO);
80     }
81
82     @VisibleForTesting
83     public ConfigDO validateConfigExists(Long id) {
84         if (id == null) {
85             return null;
86         }
87         ConfigDO config = configMapper.selectById(id);
88         if (config == null) {
89             throw exception(CONFIG_NOT_EXISTS);
90         }
91         return config;
92     }
93
94     @VisibleForTesting
95     public void validateConfigKeyUnique(Long id, String key) {
96         ConfigDO config = configMapper.selectByKey(key);
97         if (config == null) {
98             return;
99         }
100         // 如果 id 为空,说明不用比较是否为相同 id 的参数配置
101         if (id == null) {
102             throw exception(CONFIG_KEY_DUPLICATE);
103         }
104         if (!config.getId().equals(id)) {
105             throw exception(CONFIG_KEY_DUPLICATE);
106         }
107     }
108
109 }