From 3af6d8c377aa4d6b0f81da95d4c848ac47dea8a7 Mon Sep 17 00:00:00 2001 From: Menethil Date: Mon, 23 Jul 2018 03:36:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE=E7=A7=BB?= =?UTF-8?q?=E8=87=B3Core=E6=A8=A1=E5=9D=97=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE=E5=9F=BA=E7=B1=BB=E4=BB=A5?= =?UTF-8?q?=E8=A7=84=E8=8C=83=E9=85=8D=E7=BD=AE=E7=B1=BB=E7=9A=84=E8=A1=8C?= =?UTF-8?q?=E4=B8=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- litemall-core/pom.xml | 4 + .../linlinjava/litemall/core/Application.java | 4 +- .../litemall/core/system/BaseConfig.java | 75 ++++++++++++++++++ .../litemall/core/system/ConfigService.java | 54 +++++++++++++ .../litemall/core/system/SystemConfig.java | 64 +++++++++++++++ .../litemall/wx/service/ConfigService.java | 79 ------------------- .../litemall/wx/service/SystemConfig.java | 57 ------------- .../litemall/wx/web/WxCartController.java | 2 +- .../litemall/wx/web/WxGoodsController.java | 2 +- .../litemall/wx/web/WxHomeController.java | 2 +- .../litemall/wx/web/WxOrderController.java | 2 +- 11 files changed, 204 insertions(+), 141 deletions(-) create mode 100644 litemall-core/src/main/java/org/linlinjava/litemall/core/system/BaseConfig.java create mode 100644 litemall-core/src/main/java/org/linlinjava/litemall/core/system/ConfigService.java create mode 100644 litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java delete mode 100644 litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/ConfigService.java delete mode 100644 litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/SystemConfig.java diff --git a/litemall-core/pom.xml b/litemall-core/pom.xml index bf3b8e4d..7d9c29e2 100644 --- a/litemall-core/pom.xml +++ b/litemall-core/pom.xml @@ -66,6 +66,10 @@ spring-boot-configuration-processor true + + org.linlinjava + litemall-db + diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/Application.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/Application.java index 3da96531..a24db652 100644 --- a/litemall-core/src/main/java/org/linlinjava/litemall/core/Application.java +++ b/litemall-core/src/main/java/org/linlinjava/litemall/core/Application.java @@ -1,9 +1,11 @@ package org.linlinjava.litemall.core; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = {"org.linlinjava.litemall.core", "org.linlinjava.litemall.db"}) +@MapperScan("org.linlinjava.litemall.db.dao") public class Application { public static void main(String[] args) { diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/system/BaseConfig.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/system/BaseConfig.java new file mode 100644 index 00000000..29b48509 --- /dev/null +++ b/litemall-core/src/main/java/org/linlinjava/litemall/core/system/BaseConfig.java @@ -0,0 +1,75 @@ +package org.linlinjava.litemall.core.system; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * 配置基类,该类实际持有所有的配置,子类只是提供代理访问方法 + */ +abstract class BaseConfig { + //所有的配置均保存在该 HashMap 中 + protected static Map configs = new HashMap<>(); + + /** + * 子类实现该方法,并告知父类配置前缀,该前缀用来索引配置组用于简化访问和按组重读配置 + * + * @return + */ + abstract String getPrefix(); + + /** + * 添加配置到公共Map中 + * + * @param key + * @param value + */ + public static void addConfig(String key, String value) { + configs.put(key, value); + } + + /** + * 重载配置,传入子类的prefix + */ + public static void reloadConfig(String prefix) { + //先遍历删除该 prefix 所有配置 + for (Iterator> it = configs.entrySet().iterator(); it.hasNext(); ) { + Map.Entry item = it.next(); + if (item.getKey().startsWith(prefix)) + it.remove(); + } + + ConfigService.getSystemConfigService().reloadConfig(prefix); + } + + /** + * 按String类型获取配置值 + * + * @param keyName + * @return + */ + protected static String getConfig(String keyName) { + return configs.get(keyName); + } + + /** + * 以Integer类型获取配置值 + * + * @param keyName + * @return + */ + protected static Integer getConfigInt(String keyName) { + return Integer.parseInt(configs.get(keyName)); + } + + /** + * 以BigDecimal类型获取配置值 + * + * @param keyName + * @return + */ + protected static BigDecimal getConfigBigDec(String keyName) { + return new BigDecimal(configs.get(keyName)); + } +} diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/system/ConfigService.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/system/ConfigService.java new file mode 100644 index 00000000..5fab0f99 --- /dev/null +++ b/litemall-core/src/main/java/org/linlinjava/litemall/core/system/ConfigService.java @@ -0,0 +1,54 @@ +package org.linlinjava.litemall.core.system; + +import org.linlinjava.litemall.db.domain.LitemallSystem; +import org.linlinjava.litemall.db.service.LitemallSystemConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.List; + +/** + * 该类用于自动初始化数据库配置到BaseConfig中,以便BaseConfig的子类调用 + */ +@Component +class ConfigService { + private static ConfigService systemConfigService; + + static ConfigService getSystemConfigService() { + return systemConfigService; + } + + @Autowired + private LitemallSystemConfigService litemallSystemConfigService; + + //不允许实例化 + private ConfigService() { + + } + + @PostConstruct + public void inist() { + systemConfigService = this; + systemConfigService.inistConfigs(); + } + + public void reloadConfig(String prefix) { + List list = litemallSystemConfigService.queryAll(); + for (LitemallSystem item : list) { + //符合条件,添加 + if (item.getKeyName().startsWith(prefix)) + BaseConfig.addConfig(item.getKeyName(), item.getKeyValue()); + } + } + + /** + * 读取全部配置 + */ + private void inistConfigs() { + List list = litemallSystemConfigService.queryAll(); + for (LitemallSystem item : list) { + BaseConfig.addConfig(item.getKeyName(), item.getKeyValue()); + } + } +} \ No newline at end of file diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java new file mode 100644 index 00000000..42592372 --- /dev/null +++ b/litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java @@ -0,0 +1,64 @@ +package org.linlinjava.litemall.core.system; + +import java.math.BigDecimal; + +/** + * 系统设置 + */ + +public class SystemConfig extends BaseConfig { + public static final String PRE_FIX = "litemall.system."; + + public static Integer getNewLimit() { + return getConfigInt(PRE_FIX + "indexlimit.new"); + } + + public static Integer getHotLimit() { + return getConfigInt(PRE_FIX + "indexlimit.hot"); + } + + public static Integer getBrandLimit() { + return getConfigInt(PRE_FIX + "indexlimit.brand"); + } + + public static Integer getTopicLimit() { + return getConfigInt(PRE_FIX + "indexlimit.topic"); + } + + public static Integer getCatlogListLimit() { + return getConfigInt(PRE_FIX + "indexlimit.catloglist"); + } + + public static Integer getCatlogMoreLimit() { + return getConfigInt(PRE_FIX + "indexlimit.catloggood"); + } + + public static String getHotBannerTitle() { + return getConfig(PRE_FIX + "banner.hot.title"); + } + + public static String getNewBannerTitle() { + return getConfig(PRE_FIX + "banner.new.title"); + } + + public static String getHotImageUrl() { + return getConfig(PRE_FIX + "banner.hot.imageurl"); + } + + public static String getNewImageUrl() { + return getConfig(PRE_FIX + "banner.new.imageurl"); + } + + public static BigDecimal getFreight() { + return getConfigBigDec(PRE_FIX + "freight.value"); + } + + public static BigDecimal getFreightLimit() { + return getConfigBigDec(PRE_FIX + "freight.limit"); + } + + @Override + public String getPrefix() { + return PRE_FIX; + } +} \ No newline at end of file diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/ConfigService.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/ConfigService.java deleted file mode 100644 index e0294d42..00000000 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/ConfigService.java +++ /dev/null @@ -1,79 +0,0 @@ -package org.linlinjava.litemall.wx.service; - -import org.linlinjava.litemall.db.domain.LitemallSystem; -import org.linlinjava.litemall.db.service.LitemallSystemConfigService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Component -public class ConfigService { - private static ConfigService systemConfigService; - - //系统配置组 - private Map systemConfig; - - @Autowired - private LitemallSystemConfigService litemallSystemConfigService; - - //不允许实例化 - private ConfigService() { - - } - - /** - * 获取系统配置 - * - * @param keyName 例如 : litemall.system.freight.value - * @return 返回该值的字符串 - */ - public String getSysValue(String keyName) { - keyName = "litemall.system." + keyName; - return systemConfig.get(keyName); - } - - /** - * 获取系统配置数值型 - * - * @param keyName 例如 : litemall.system.freight.value - * @return 返回该值的字符串 - */ - public Integer getSysValueInt(String keyName) { - keyName = "litemall.system." + keyName; - return Integer.parseInt(systemConfig.get(keyName)); - } - - - /** - * 获取系统设置实例 - * - * @return - */ - public static ConfigService getCfg() { - return systemConfigService; - } - - - @PostConstruct - public void inist() { - systemConfigService = this; - systemConfigService.systemConfig = new HashMap<>(); - systemConfigService.inistConfigs(); - } - - /** - * 读取全部配置 - */ - private void inistConfigs() { - List list = litemallSystemConfigService.queryAll(); - for (LitemallSystem item : list) { - //属于系统配置,放置到系统配置组 - if (item.getKeyName().startsWith("litemall.system")) - systemConfig.put(item.getKeyName(), item.getKeyValue()); - } - } -} diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/SystemConfig.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/SystemConfig.java deleted file mode 100644 index 102e9468..00000000 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/SystemConfig.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.linlinjava.litemall.wx.service; - -import java.math.BigDecimal; - -/** - * 系统设置 - */ - -public class SystemConfig { - public static Integer getNewLimit() { - return ConfigService.getCfg().getSysValueInt("indexlimit.new"); - } - - public static Integer getHotLimit() { - return ConfigService.getCfg().getSysValueInt("indexlimit.hot"); - } - - public static Integer getBrandLimit() { - return ConfigService.getCfg().getSysValueInt("indexlimit.brand"); - } - - public static Integer getTopicLimit() { - return ConfigService.getCfg().getSysValueInt("indexlimit.topic"); - } - - public static Integer getCatlogListLimit() { - return ConfigService.getCfg().getSysValueInt("indexlimit.catloglist"); - } - - public static Integer getCatlogMoreLimit() { - return ConfigService.getCfg().getSysValueInt("indexlimit.catloggood"); - } - - public static String getHotBannerTitle() { - return ConfigService.getCfg().getSysValue("banner.hot.title"); - } - - public static String getNewBannerTitle() { - return ConfigService.getCfg().getSysValue("banner.new.title"); - } - - public static String getHotImageUrl() { - return ConfigService.getCfg().getSysValue("banner.hot.imageurl"); - } - - public static String getNewImageUrl() { - return ConfigService.getCfg().getSysValue("banner.new.imageurl"); - } - - public static BigDecimal getFreight() { - return new BigDecimal(ConfigService.getCfg().getSysValue("freight.value")); - } - - public static BigDecimal getFreightLimit() { - return new BigDecimal(ConfigService.getCfg().getSysValue("freight.limit")); - } -} diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCartController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCartController.java index a393ebf7..990a4db2 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCartController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCartController.java @@ -8,7 +8,7 @@ import org.linlinjava.litemall.db.service.*; import org.linlinjava.litemall.core.util.JacksonUtil; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.wx.annotation.LoginUser; -import org.linlinjava.litemall.wx.service.SystemConfig; +import org.linlinjava.litemall.core.system.SystemConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java index 59b441c4..19940bf4 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java @@ -7,7 +7,7 @@ import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.db.domain.*; import org.linlinjava.litemall.db.service.*; import org.linlinjava.litemall.wx.annotation.LoginUser; -import org.linlinjava.litemall.wx.service.SystemConfig; +import org.linlinjava.litemall.core.system.SystemConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxHomeController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxHomeController.java index dcc1298b..ef905a71 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxHomeController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxHomeController.java @@ -5,7 +5,7 @@ import org.apache.commons.logging.LogFactory; import org.linlinjava.litemall.core.util.ResponseUtil; import org.linlinjava.litemall.db.domain.*; import org.linlinjava.litemall.db.service.*; -import org.linlinjava.litemall.wx.service.SystemConfig; +import org.linlinjava.litemall.core.system.SystemConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java index e93c6696..8062f832 100644 --- a/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java +++ b/litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java @@ -18,7 +18,7 @@ import org.linlinjava.litemall.db.service.*; import org.linlinjava.litemall.db.util.OrderHandleOption; import org.linlinjava.litemall.db.util.OrderUtil; import org.linlinjava.litemall.wx.annotation.LoginUser; -import org.linlinjava.litemall.wx.service.SystemConfig; +import org.linlinjava.litemall.core.system.SystemConfig; import org.linlinjava.litemall.wx.util.IpUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.PlatformTransactionManager;