package com.nq.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nq.common.ServerResponse; import com.nq.dao.StockConfigMapper; import com.nq.enums.EConfigKey; import com.nq.pojo.StockConfig; import com.nq.service.IStockConfigServices; import org.apache.http.util.TextUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @Service public class StockConfigServicesImpl implements IStockConfigServices { @Resource StockConfigMapper stockConfigMapper; @Override public ServerResponse updateStockConfig(StockConfig stockConfig) { if(EConfigKey.LIMIT_UP_INTERVAL.getCode().equals(stockConfig.getCKey())){ if(!validateRanges(stockConfig.getCValue())){ return ServerResponse.createByErrorMsg("格式错误"); } } int ref = stockConfigMapper.updateById(stockConfig); if(ref>0){ return ServerResponse.createBySuccessMsg("设置成功"); } return ServerResponse.createByErrorMsg("设置失败"); } @Override public ServerResponse queryAll(String desc) { if(TextUtils.isEmpty(desc)){ return ServerResponse.createBySuccess(stockConfigMapper.selectList(new QueryWrapper<>())); } QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.like("c_desc",desc); return ServerResponse.createBySuccess(stockConfigMapper.selectList(queryWrapper)); } @Override public StockConfig queryByKey(String key) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("c_key",key); return stockConfigMapper.selectOne(queryWrapper); } @Override public Map queryByKeys(List keys) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("c_key", keys); List stockConfigs = stockConfigMapper.selectList(queryWrapper); // 构建结果的 Map Map resultMap = new HashMap<>(); for (StockConfig config : stockConfigs) { resultMap.put(config.getCKey(), config); } return resultMap; } public boolean validateRanges(String ranges) { // 分割逗号分隔的多个范围 String[] rangeArray = ranges.split(","); // 遍历每个范围进行验证 for (String range : rangeArray) { // 定义匹配数字-数字格式的正则表达式 String regex = "^\\d+\\.\\d+-\\d+\\.\\d+$"; // 检查输入的字符串是否符合格式 if (range.matches(regex)) { // 进一步检查数字范围的有效性 String[] parts = range.split("-"); if (parts.length == 2) { try { double start = Double.parseDouble(parts[0]); double end = Double.parseDouble(parts[1]); // 确保start < end if (!(start < end)) { return false; } } catch (NumberFormatException e) { // 如果解析失败,说明不是有效的数字格式 return false; } } else { // 如果不是两部分,说明格式不正确 return false; } } else { // 如果不匹配正则表达式,说明格式不正确 return false; } } // 所有范围验证通过 return true; } }