This commit is contained in:
张良(004796)
2024-01-22 14:53:05 +08:00
parent 90d961d11d
commit 73a8977676
18 changed files with 197 additions and 8 deletions

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.controller.admin.incomeStatis;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AccountCashCountDTO {
private BigDecimal cashMoney;
private Integer cashCount;
}

View File

@@ -0,0 +1,16 @@
package com.ruoyi.cai.controller.admin.incomeStatis;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class RechargeOrderCountDTO {
private Long modifyCoinAdd;
private Long modifyCoinSub;
private Long modifyIncomeAdd;
private Long modifyIncomeSub;
private BigDecimal expInMoney;
private Integer orderCount;
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.controller.admin.incomeStatis;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class VipOrderCountDTO {
private Integer vipCount;
private BigDecimal vipMoney;
}

View File

@@ -6,11 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.constant.DateConstant;
import lombok.Data;
import org.joda.time.LocalDate;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**

View File

@@ -0,0 +1,25 @@
package com.ruoyi.cai.job;
import com.ruoyi.cai.service.DayIncomeStatisticsService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
@Component
@Slf4j
public class IncomeStatisticsJob {
@Autowired
private DayIncomeStatisticsService dayIncomeStatisticsService;
@Scheduled(cron = "0 0/6 * * * ? *")
public void persistentDb() {
try {
dayIncomeStatisticsService.refreshByDate(LocalDate.now());
}catch (Exception e){
log.error("保存昨日收益统计失败!",e);
}
}
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.job;
import com.ruoyi.cai.service.DayIncomeStatisticsService;
import com.ruoyi.cai.service.RankService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +17,8 @@ public class RankJob {
@Autowired
private RankService rankService;
@Autowired
private DayIncomeStatisticsService dayIncomeStatisticsService;
@Scheduled(cron = "0 1 0 * * ? ")
public void persistentDb() {
@@ -57,6 +60,11 @@ public class RankJob {
log.error("保存邀请 月榜失败", e);
}
}
try {
dayIncomeStatisticsService.refreshByDate(date);
}catch (Exception e){
log.error("保存昨日收益统计失败!",e);
}
}

View File

@@ -2,10 +2,13 @@ package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.controller.admin.incomeStatis.AccountCashCountDTO;
import com.ruoyi.cai.domain.AccountCash;
import com.ruoyi.cai.dto.admin.vo.AccountCashAdminVo;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
/**
* 用户提现记录Mapper接口
*
@@ -15,4 +18,6 @@ import org.apache.ibatis.annotations.Param;
public interface AccountCashMapper extends BaseMapper<AccountCash> {
Page<AccountCashAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AccountCashAdminVo bo);
AccountCashCountDTO incomeStatistics(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
}

View File

@@ -1,8 +1,7 @@
package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cai.domain.DayIncomeStatistics;
import com.ruoyi.cai.domain.vo.DayIncomeStatisticsVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
/**
* 每日账单统计Mapper接口
@@ -10,6 +9,6 @@ import com.ruoyi.common.core.mapper.BaseMapperPlus;
* @author 77
* @date 2024-01-22
*/
public interface DayIncomeStatisticsMapper extends BaseMapperPlus<DayIncomeStatisticsMapper, DayIncomeStatistics, DayIncomeStatisticsVo> {
public interface DayIncomeStatisticsMapper extends BaseMapper<DayIncomeStatistics> {
}

View File

@@ -2,10 +2,13 @@ package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.controller.admin.incomeStatis.RechargeOrderCountDTO;
import com.ruoyi.cai.domain.RechargeOrder;
import com.ruoyi.cai.dto.admin.vo.RechargeOrderAdminVo;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
/**
* 充值订单Mapper接口
*
@@ -15,4 +18,6 @@ import org.apache.ibatis.annotations.Param;
public interface RechargeOrderMapper extends BaseMapper<RechargeOrder> {
Page<RechargeOrderAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") RechargeOrderAdminVo bo);
RechargeOrderCountDTO incomeStatistics(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
}

View File

@@ -2,10 +2,13 @@ package com.ruoyi.cai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.controller.admin.incomeStatis.VipOrderCountDTO;
import com.ruoyi.cai.domain.VipOrder;
import com.ruoyi.cai.dto.admin.vo.VipOrderAdminVo;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
/**
* VIP订单Mapper接口
*
@@ -15,4 +18,6 @@ import org.apache.ibatis.annotations.Param;
public interface VipOrderMapper extends BaseMapper<VipOrder> {
Page<VipOrderAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") VipOrderAdminVo bo);
VipOrderCountDTO incomeStatistics(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
}

View File

@@ -1,5 +1,17 @@
package com.ruoyi.cai.pay;
import lombok.Getter;
@Getter
public enum PlatformTypeEnum {
ALI,WX,ADMIN
ALI("1"),
WX("2"),
ADMIN("ADMIN"),
;
private final String code;
PlatformTypeEnum(String code) {
this.code = code;
}
}

View File

@@ -3,6 +3,8 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.DayIncomeStatistics;
import java.time.LocalDate;
/**
* 每日账单统计Service接口
*
@@ -11,4 +13,5 @@ import com.ruoyi.cai.domain.DayIncomeStatistics;
*/
public interface DayIncomeStatisticsService extends IService<DayIncomeStatistics> {
void refreshByDate(LocalDate date);
}

View File

@@ -1,11 +1,25 @@
package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.controller.admin.incomeStatis.AccountCashCountDTO;
import com.ruoyi.cai.controller.admin.incomeStatis.RechargeOrderCountDTO;
import com.ruoyi.cai.controller.admin.incomeStatis.VipOrderCountDTO;
import com.ruoyi.cai.domain.DayIncomeStatistics;
import com.ruoyi.cai.mapper.AccountCashMapper;
import com.ruoyi.cai.mapper.DayIncomeStatisticsMapper;
import com.ruoyi.cai.mapper.RechargeOrderMapper;
import com.ruoyi.cai.mapper.VipOrderMapper;
import com.ruoyi.cai.service.DayIncomeStatisticsService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.concurrent.locks.ReentrantLock;
/**
* 每日账单统计Service业务层处理
*
@@ -15,4 +29,47 @@ import org.springframework.stereotype.Service;
@Service
public class DayIncomeStatisticsServiceImpl extends ServiceImpl<DayIncomeStatisticsMapper,DayIncomeStatistics> implements DayIncomeStatisticsService {
@Resource
private RechargeOrderMapper rechargeOrderMapper;
@Resource
private VipOrderMapper vipOrderMapper;
@Resource
private AccountCashMapper accountCashMapper;
@Override
public void refreshByDate(LocalDate date){
LocalDateTime startTime = date.atTime(LocalTime.MIN);
LocalDateTime endTime = date.atTime(LocalTime.MAX);
DayIncomeStatistics one = this.getOne(Wrappers.lambdaQuery(DayIncomeStatistics.class).eq(DayIncomeStatistics::getDate, date));
if(one == null){
ReentrantLock lock = new ReentrantLock();
try {
one = this.getOne(Wrappers.lambdaQuery(DayIncomeStatistics.class).eq(DayIncomeStatistics::getDate, date));
if(one == null){
one = new DayIncomeStatistics();
one.setDate(date);
this.save(one);
lock.lock();
}
}finally {
lock.unlock();
}
}
RechargeOrderCountDTO recharge = rechargeOrderMapper.incomeStatistics(startTime,endTime);
VipOrderCountDTO vip = vipOrderMapper.incomeStatistics(startTime,endTime);
AccountCashCountDTO cash = accountCashMapper.incomeStatistics(startTime,endTime);
one = new DayIncomeStatistics();
one.setExpInMoney(recharge.getExpInMoney()==null? BigDecimal.ZERO:recharge.getExpInMoney());
one.setOrderCount(recharge.getOrderCount()==null?0:recharge.getOrderCount());
one.setOutMoney(cash.getCashMoney()==null?BigDecimal.ZERO:cash.getCashMoney());
one.setCashCount(cash.getCashCount()==null?0:cash.getCashCount());
one.setVipInMoney(vip.getVipMoney()==null?BigDecimal.ZERO:vip.getVipMoney());
one.setVipCount(vip.getVipCount()==null?0:vip.getVipCount());
one.setModifyCoinAdd(recharge.getModifyCoinAdd()==null?0:recharge.getModifyCoinAdd());
one.setModifyCoinSub(recharge.getModifyCoinSub()==null?0:recharge.getModifyCoinSub());
one.setModifyIncomeAdd(recharge.getModifyIncomeAdd()==null?0:recharge.getModifyIncomeAdd());
one.setModifyIncomeSub(recharge.getModifyIncomeSub()==null?0:recharge.getModifyIncomeSub());
this.updateById(one);
}
}

View File

@@ -44,8 +44,8 @@ public class LowHeightRiskServiceImpl extends ServiceImpl<LowHeightRiskMapper, L
if(one == null){
one = new LowHeightRisk();
one.setUserId(log.getUserId());
this.save(one);
}
this.save(one);
}finally {
lock.unlock();
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.service.impl;
import cn.hutool.core.util.NumberUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -149,11 +150,13 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
order.setUserId(userId);
order.setRechargeName(accountTypeEnum == AccountTypeEnum.COIN ? "余额调整" : "收益调整");
order.setRechargeCoin(dto.getRechargeCoin());
order.setPrice(BigDecimal.ZERO);
BigDecimal price = NumberUtil.div(dto.getRechargeCoin(), Long.valueOf(100L), 2);
order.setPrice(price);
order.setRechargeType(dto.getRechargeType());
order.setOrderNo(OrderNoUtil.createOrderNo(OrderTypeEnum.RECHARGE_ORDER_SUB));
order.setPlatformType(PlatformTypeEnum.ADMIN.name());
order.setPlatformType(PlatformTypeEnum.ADMIN.getCode());
order.setPayStatus(PayStatusEnum.NO_PAY.getCode());
order.setPayTime(LocalDateTime.now());
order.setOperateIp(ServletUtils.getClientIP());
order.setAdmin(true);
order.setAdminId(LoginHelper.getUserId());