drew 5 лет назад
Родитель
Сommit
f88b5ddd3f

+ 40 - 0
src/main/java/com/izouma/awesomeAdmin/domain/SysConfig.java

@@ -0,0 +1,40 @@
+package com.izouma.awesomeAdmin.domain;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+
+@Data
+@Entity
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class SysConfig extends AuditedEntity {
+    @Id
+    @Column(length = 25, unique = true)
+    @ApiModelProperty(value = "名称", name = "name")
+    private String name;
+
+    @Column(name = "description")
+    @ApiModelProperty(value = "描述", name = "desc")
+    private String desc;
+
+    @ApiModelProperty(value = "值", name = "value")
+    private String value;
+
+    @Enumerated(EnumType.STRING)
+    private ValueType type;
+
+    public enum ValueType {
+        STRING,
+        TIME,
+        DATE,
+        DATETIME,
+        BOOLEAN,
+        NUMBER
+    }
+}

+ 11 - 0
src/main/java/com/izouma/awesomeAdmin/repo/SysConfigRepo.java

@@ -0,0 +1,11 @@
+package com.izouma.awesomeAdmin.repo;
+
+import com.izouma.awesomeAdmin.domain.SysConfig;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import java.util.Optional;
+
+public interface SysConfigRepo extends JpaRepository<SysConfig, String>, JpaSpecificationExecutor<SysConfig> {
+    Optional<SysConfig> findByName(String name);
+}

+ 39 - 0
src/main/java/com/izouma/awesomeAdmin/service/SysConfigService.java

@@ -0,0 +1,39 @@
+package com.izouma.awesomeAdmin.service;
+
+import com.izouma.awesomeAdmin.domain.SysConfig;
+import com.izouma.awesomeAdmin.exception.BusinessException;
+import com.izouma.awesomeAdmin.repo.SysConfigRepo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import springfox.documentation.annotations.Cacheable;
+
+import java.math.BigDecimal;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+@Service
+@AllArgsConstructor
+public class SysConfigService {
+    private SysConfigRepo sysConfigRepo;
+
+    @Cacheable("SysConfigServiceGetBigDecimal")
+    public BigDecimal getBigDecimal(String name) {
+        return sysConfigRepo.findByName(name).map(sysConfig -> new BigDecimal(sysConfig.getValue()))
+                .orElse(BigDecimal.ZERO);
+    }
+
+    @Cacheable("SysConfigServiceGetTime")
+    public LocalTime getTime(String name) {
+        String str = sysConfigRepo.findByName(name).map(SysConfig::getValue)
+                .orElseThrow(new BusinessException("配置不存在"));
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm");
+        return LocalTime.from(dateTimeFormatter.parse(str));
+    }
+
+    @Cacheable("SysConfigServiceGetBoolean")
+    public boolean getBoolean(String name) {
+        String str = sysConfigRepo.findByName(name).map(SysConfig::getValue)
+                .orElseThrow(new BusinessException("配置不存在"));
+        return str.equals("1");
+    }
+}

+ 56 - 0
src/main/java/com/izouma/awesomeAdmin/web/SysConfigController.java

@@ -0,0 +1,56 @@
+package com.izouma.awesomeAdmin.web;
+
+import com.izouma.awesomeAdmin.domain.SysConfig;
+import com.izouma.awesomeAdmin.dto.PageQuery;
+import com.izouma.awesomeAdmin.exception.BusinessException;
+import com.izouma.awesomeAdmin.repo.SysConfigRepo;
+import com.izouma.awesomeAdmin.service.SysConfigService;
+import com.izouma.awesomeAdmin.utils.excel.ExcelUtils;
+import lombok.AllArgsConstructor;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+@RestController
+@RequestMapping("/sysConfig")
+@AllArgsConstructor
+public class SysConfigController extends BaseController {
+    private SysConfigService sysConfigService;
+    private SysConfigRepo    sysConfigRepo;
+
+    @PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/save")
+    @CacheEvict(value = {"SysConfigServiceGetBigDecimal", "SysConfigServiceGetTime"}, allEntries = true)
+    public SysConfig save(@RequestBody SysConfig record) {
+        return sysConfigRepo.save(record);
+    }
+
+
+    @GetMapping("/all")
+    public Page<SysConfig> all(PageQuery pageQuery) {
+        return sysConfigRepo.findAll(toSpecification(pageQuery, SysConfig.class), toPageRequest(pageQuery));
+    }
+
+    @GetMapping("/get/{id}")
+    public SysConfig get(@PathVariable String id) {
+        return sysConfigRepo.findByName(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    @PostMapping("/del/{id}")
+    public void del(@PathVariable String id) {
+        sysConfigRepo.deleteById(id);
+    }
+
+    @GetMapping("/excel")
+    @ResponseBody
+    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
+        List<SysConfig> data = all(pageQuery).getContent();
+        ExcelUtils.export(response, data);
+    }
+}
+