123
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -44,8 +44,8 @@ public class LowHeightRiskServiceImpl extends ServiceImpl<LowHeightRiskMapper, L
|
||||
if(one == null){
|
||||
one = new LowHeightRisk();
|
||||
one.setUserId(log.getUserId());
|
||||
}
|
||||
this.save(one);
|
||||
}
|
||||
}finally {
|
||||
lock.unlock();
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -46,6 +46,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</where>
|
||||
order by t1.create_time desc
|
||||
</select>
|
||||
<select id="incomeStatistics" resultType="com.ruoyi.cai.controller.admin.incomeStatis.AccountCashCountDTO">
|
||||
select
|
||||
sum(cash_money) as cash_money,
|
||||
count(id) as cash_money
|
||||
from cai_account_cash
|
||||
where status = 2 and verify_time between #{startTime} and #{endTime}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -46,6 +46,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</where>
|
||||
order by t1.create_time desc
|
||||
</select>
|
||||
<select id="incomeStatistics"
|
||||
resultType="com.ruoyi.cai.controller.admin.incomeStatis.RechargeOrderCountDTO">
|
||||
select
|
||||
pay_time,
|
||||
sum(if(admin=1 and recharge_type=1 and recharge_coin > 0,recharge_coin,0)) as modify_coin_add,
|
||||
sum(if(admin=1 and recharge_type=1 and recharge_coin < 0,-recharge_coin,0)) as modify_coin_sub,
|
||||
sum(if(admin=1 and recharge_type=2 and recharge_coin > 0,recharge_coin,0)) as modify_income_add,
|
||||
sum(if(admin=1 and recharge_type=2 and recharge_coin < 0,-recharge_coin,0)) as modify_income_sub,
|
||||
sum(if(admin=0,price,0)) as exp_in_money,
|
||||
count(if(admin=0,1,0)) as order_count
|
||||
from cai_recharge_order
|
||||
where pay_status in (1,10)
|
||||
and pay_time between #{startTime} and #{endTime}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -44,6 +44,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</where>
|
||||
order by t1.create_time desc
|
||||
</select>
|
||||
<select id="incomeStatistics" resultType="com.ruoyi.cai.controller.admin.incomeStatis.VipOrderCountDTO">
|
||||
select
|
||||
sum(price) as vip_money,
|
||||
count(id) as vip_count
|
||||
from cai_vip_order
|
||||
where admin = 0
|
||||
and pay_time between #{startTime} and #{endTime};
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user