|
@@ -16,8 +16,11 @@ import com.fs.store.service.IFsStorePaymentService;
|
|
|
import com.fs.store.service.IFsStoreProductService;
|
|
|
import com.fs.store.service.IFsUserService;
|
|
|
import com.fs.store.service.cache.IFsUserCourseCacheService;
|
|
|
+import com.fs.system.domain.SysConfig;
|
|
|
+import com.fs.system.service.ISysConfigService;
|
|
|
import com.hc.openapi.tool.util.ObjectUtils;
|
|
|
import com.hc.openapi.tool.util.StringUtils;
|
|
|
+import org.apache.http.util.Asserts;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -62,6 +65,9 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
@Autowired
|
|
|
private IFsStoreProductService productService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ISysConfigService configService;
|
|
|
+
|
|
|
@Override
|
|
|
public void dataOverviewTask() {
|
|
|
DealerAggregatedDTO dealerAggregatedDTO = this.dealerAggregated();
|
|
@@ -601,9 +607,50 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
|
|
|
@Override
|
|
|
public ConsumptionBalanceDataDTO rechargeConsumption() {
|
|
|
- return consumptionBalanceMapper.rechargeConsumption();
|
|
|
+ // 获取流量统计数据
|
|
|
+ TrafficLogDTO trafficLog = this.getTrafficLog();
|
|
|
+
|
|
|
+ // 获取流量价格配置
|
|
|
+ SysConfig config = configService.selectConfigByConfigKey("statis.config");
|
|
|
+ Asserts.notNull(config, "流量价格配置不能为空!");
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(config.getConfigValue());
|
|
|
+ float trafficPrice = jsonObject.getFloatValue("trafficPrice");
|
|
|
+
|
|
|
+ // 创建消费余额数据对象
|
|
|
+ ConsumptionBalanceDataDTO consumptionBalanceData = new ConsumptionBalanceDataDTO();
|
|
|
+
|
|
|
+ // 计算消费金额(将流量从字节转换为GB,然后乘以每GB价格)
|
|
|
+ BigDecimal todayConsumption = calculateTrafficCost(trafficLog.getToday(), trafficPrice);
|
|
|
+ BigDecimal yesterdayConsumption = calculateTrafficCost(trafficLog.getYesterday(), trafficPrice);
|
|
|
+
|
|
|
+ // 设置消费数据
|
|
|
+ consumptionBalanceData.setTodayComsumption(todayConsumption);
|
|
|
+ consumptionBalanceData.setYesterdayComsumption(yesterdayConsumption);
|
|
|
+
|
|
|
+ // 从数据库获取当前余额
|
|
|
+ BigDecimal currentBalance = consumptionBalanceMapper.getCurrentBalance();
|
|
|
+ consumptionBalanceData.setBalance(currentBalance);
|
|
|
+
|
|
|
+ return consumptionBalanceData;
|
|
|
}
|
|
|
+ /**
|
|
|
+ * 计算流量消费金额
|
|
|
+ * @param trafficBytes 流量字节数
|
|
|
+ * @param pricePerGB 每GB价格
|
|
|
+ * @return 消费金额
|
|
|
+ */
|
|
|
+ private BigDecimal calculateTrafficCost(Long trafficBytes, float pricePerGB) {
|
|
|
+ if (trafficBytes == null || trafficBytes <= 0) {
|
|
|
+ return BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将字节转换为GB (1GB = 1024^3 bytes)
|
|
|
+ BigDecimal trafficGB = new BigDecimal(trafficBytes)
|
|
|
+ .divide(new BigDecimal(1024 * 1024 * 1024), 6, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ // 计算消费金额
|
|
|
+ return trafficGB.multiply(new BigDecimal(pricePerGB)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
@Override
|
|
|
public AnalysisPreviewDTO analysisPreview(AnalysisPreviewQueryDTO param) {
|
|
|
AnalysisPreviewDTO dto = new AnalysisPreviewDTO();
|
|
@@ -788,9 +835,11 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
|
|
public TrafficLogDTO getTrafficLog() {
|
|
|
TrafficLogDTO trafficLogDTO = new TrafficLogDTO();
|
|
|
Long todayTrafficLog = fsCourseTrafficLogMapper.getTodayTrafficLog();
|
|
|
+ Long yesterdayTrafficLog = fsCourseTrafficLogMapper.getYesterdayTrafficLog();
|
|
|
Long monthTrafficLog = fsCourseTrafficLogMapper.getMonthTrafficLog();
|
|
|
trafficLogDTO.setToday(todayTrafficLog);
|
|
|
trafficLogDTO.setThisMonth(monthTrafficLog);
|
|
|
+ trafficLogDTO.setYesterday(yesterdayTrafficLog);
|
|
|
return trafficLogDTO;
|
|
|
}
|
|
|
|