package com.izouma.nineth.service; import com.izouma.nineth.domain.SysConfig; import com.izouma.nineth.dto.PageQuery; import com.izouma.nineth.enums.SearchMode; import com.izouma.nineth.exception.BusinessException; import com.izouma.nineth.repo.SysConfigRepo; import com.izouma.nineth.utils.JpaUtils; import lombok.AllArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; import java.math.BigDecimal; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.List; @Service @AllArgsConstructor public class SysConfigService { private SysConfigRepo sysConfigRepo; public Page all(PageQuery pageQuery) { return sysConfigRepo.findAll(JpaUtils.toSpecification(pageQuery, SysConfig.class), JpaUtils.toPageRequest(pageQuery)); } public BigDecimal getBigDecimal(String name) { return sysConfigRepo.findByName(name).map(sysConfig -> new BigDecimal(sysConfig.getValue())) .orElse(BigDecimal.ZERO); } 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)); } public boolean getBoolean(String name) { String str = sysConfigRepo.findByName(name).map(SysConfig::getValue) .orElseThrow(new BusinessException("配置不存在")); return str.equals("1"); } public int getInt(String name) { String str = sysConfigRepo.findByName(name).map(SysConfig::getValue) .orElseThrow(new BusinessException("配置不存在")); return Integer.parseInt(str); } public String getString(String name) { return sysConfigRepo.findByName(name).map(SysConfig::getValue).orElse(null); } @PostConstruct public void init() { List list = sysConfigRepo.findAll(); if (list.stream().noneMatch(i -> i.getName().equals("search_mode"))) { sysConfigRepo.save(SysConfig.builder() .name("gift_gas_fee") .desc("转赠gas费") .type(SysConfig.ValueType.NUMBER) .value("1") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_wx_pub"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_wx_pub") .desc("使用公众号支付") .type(SysConfig.ValueType.BOOLEAN) .value("FALSE") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_wx_lite"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_wx_lite") .desc("使用小程序支付") .type(SysConfig.ValueType.BOOLEAN) .value("FALSE") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("hold_days"))) { sysConfigRepo.save(SysConfig.builder() .name("hold_days") .desc("持有满几天可销售") .type(SysConfig.ValueType.NUMBER) .value("1") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("default_search_mode"))) { sysConfigRepo.save(SysConfig.builder() .name("default_search_mode") .desc("默认搜索方式") .type(SysConfig.ValueType.STRING) .value("FULL") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_sand_quick"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_sand_quick") .desc("使用衫德h5快捷支付") .type(SysConfig.ValueType.BOOLEAN) .value("FALSE") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("order_cancel_time"))) { sysConfigRepo.save(SysConfig.builder() .name("order_cancel_time") .desc("订单自动取消间隔(S)") .type(SysConfig.ValueType.NUMBER) .value("210") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("pay_channel"))) { sysConfigRepo.save(SysConfig.builder() .name("pay_channel") .desc("支付通道") .type(SysConfig.ValueType.SELECT) .value("sandPay") .options("hmPay,sandPay") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("gift_days"))) { sysConfigRepo.save(SysConfig.builder() .name("gift_days") .desc("转赠满多少天可销售") .type(SysConfig.ValueType.NUMBER) .value("20") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("min_recharge_amount"))) { sysConfigRepo.save(SysConfig.builder() .name("min_recharge_amount") .desc("最小充值金额") .type(SysConfig.ValueType.NUMBER) .value("100") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("max_recharge_amount"))) { sysConfigRepo.save(SysConfig.builder() .name("max_recharge_amount") .desc("最大充值金额") .type(SysConfig.ValueType.NUMBER) .value("5000") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_balance_pay"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_balance_pay") .desc("使用余额支付") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("min_withdraw_amount"))) { sysConfigRepo.save(SysConfig.builder() .name("min_withdraw_amount") .desc("最小提现金额") .type(SysConfig.ValueType.NUMBER) .value("100") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("withdraw_charge"))) { sysConfigRepo.save(SysConfig.builder() .name("withdraw_charge") .desc("提现手续费(%,最低)") .type(SysConfig.ValueType.STRING) .value("8,2") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_withdraw"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_withdraw") .desc("允许提现") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_recharge"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_recharge") .desc("允许充值") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("daily_withdraw_limit"))) { sysConfigRepo.save(SysConfig.builder() .name("daily_withdraw_limit") .desc("每日提现次数限制") .type(SysConfig.ValueType.NUMBER) .value("1") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_wallet"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_wallet") .desc("开启钱包功能") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("realtime_settle_order"))) { sysConfigRepo.save(SysConfig.builder() .name("realtime_settle_order") .desc("开启订单实时结算") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("wallet_enable_amount"))) { sysConfigRepo.save(SysConfig.builder() .name("wallet_enable_amount") .desc("开启钱包所需最小消费金额") .type(SysConfig.ValueType.NUMBER) .value("1") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_auto_withdraw"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_auto_withdraw") .desc("开启自动提现") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_force_withdraw"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_force_withdraw") .desc("开启强制提现") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("enable_face_auth"))) { sysConfigRepo.save(SysConfig.builder() .name("enable_face_auth") .desc("使用支付宝人脸实名认证") .type(SysConfig.ValueType.BOOLEAN) .value("0") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("withdraw_channel"))) { sysConfigRepo.save(SysConfig.builder() .name("withdraw_channel") .desc("提现通道") .type(SysConfig.ValueType.SELECT) .value("sandPay") .options("payEase,sandPay") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("parallel_airdrop"))) { sysConfigRepo.save(SysConfig.builder() .name("parallel_airdrop") .desc("并发空投") .type(SysConfig.ValueType.BOOLEAN) .value("1") .build()); } if (list.stream().noneMatch(i -> i.getName().equals("company_collection_price"))) { sysConfigRepo.save(SysConfig.builder() .name("company_collection_price") .desc("企业上传藏品价格") .type(SysConfig.ValueType.NUMBER) .value("5") .build()); } SearchMode searchMode = SearchMode.valueOf(sysConfigRepo.findByName("default_search_mode").get().getValue()); JpaUtils.setDefaultSearchMode(searchMode); OrderPayService.setPayChannel(sysConfigRepo.findByName("pay_channel").get().getValue()); } }