V13
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.cai.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.FastPayTotal;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
public interface FastPayTotalService extends IService<FastPayTotal> {
|
||||
void refreshDate(LocalDate date);
|
||||
|
||||
void refreshAll();
|
||||
|
||||
Long getCurrentDay();
|
||||
}
|
||||
@@ -30,4 +30,6 @@ public interface RechargeOrderService extends IService<RechargeOrder> {
|
||||
RechargeConsumerResp orderSuccess(String orderNo, Map<String,String> params, String appId, PayTypeEnum payTypeEnum);
|
||||
|
||||
RechargeOrder updateAdminRechargeOrder(AddRechargeOrderAdminDto dto);
|
||||
|
||||
void setFastPay(String orderNo);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.ruoyi.cai.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.ruoyi.cai.domain.UnionTotal;
|
||||
import com.ruoyi.cai.enums.rank.RankDataTypeEnum;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 工会每日收益Service接口
|
||||
*
|
||||
* @author 77
|
||||
* @date 2025-09-11
|
||||
*/
|
||||
public interface UnionTotalService extends IService<UnionTotal> {
|
||||
|
||||
void refreshData(LocalDate localDate);
|
||||
|
||||
void refreshData(RankDataTypeEnum dataType, LocalDate localDate);
|
||||
|
||||
void refreshAll();
|
||||
|
||||
void refreshUnionTotalAll();
|
||||
|
||||
void refreshUnionTotal(Long unionId);
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
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.domain.FastPayTotal;
|
||||
import com.ruoyi.cai.domain.RechargeOrder;
|
||||
import com.ruoyi.cai.mapper.FastPayTotalMapper;
|
||||
import com.ruoyi.cai.service.FastPayTotalService;
|
||||
import com.ruoyi.cai.service.RechargeOrderService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
|
||||
@Service
|
||||
public class FastPayTotalServiceImpl extends ServiceImpl<FastPayTotalMapper, FastPayTotal> implements FastPayTotalService {
|
||||
|
||||
@Autowired
|
||||
private RechargeOrderService rechargeOrderService;
|
||||
|
||||
|
||||
@Override
|
||||
public Long getCurrentDay() {
|
||||
LocalDate date = LocalDate.now();
|
||||
LocalDateTime startTime = date.atTime(LocalTime.MIN);
|
||||
LocalDateTime endTime = date.atTime(LocalTime.MAX);
|
||||
long count = rechargeOrderService.count(Wrappers.lambdaQuery(RechargeOrder.class)
|
||||
.eq(RechargeOrder::getFastPay, true)
|
||||
.eq(RechargeOrder::getAdmin, false)
|
||||
.between(RechargeOrder::getPayTime, startTime, endTime));
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshDate(LocalDate date) {
|
||||
LocalDateTime startTime = date.atTime(LocalTime.MIN);
|
||||
LocalDateTime endTime = date.atTime(LocalTime.MAX);
|
||||
long count = rechargeOrderService.count(Wrappers.lambdaQuery(RechargeOrder.class)
|
||||
.eq(RechargeOrder::getFastPay, true)
|
||||
.eq(RechargeOrder::getAdmin, false)
|
||||
.between(RechargeOrder::getPayTime, startTime, endTime));
|
||||
FastPayTotal one = this.getOne(Wrappers.lambdaQuery(FastPayTotal.class)
|
||||
.eq(FastPayTotal::getCountDate, date)
|
||||
.last("limit 1"));
|
||||
if(one == null){
|
||||
one = new FastPayTotal();
|
||||
one.setCountDate(date);
|
||||
one.setCount(count);
|
||||
one.setRefreshTime(LocalDateTime.now());
|
||||
this.save(one);
|
||||
}else{
|
||||
FastPayTotal update = new FastPayTotal();
|
||||
update.setRefreshTime(LocalDateTime.now());
|
||||
update.setCount(count);
|
||||
update.setId(one.getId());
|
||||
this.updateById(update);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshAll(){
|
||||
RechargeOrder one = rechargeOrderService.getOne(Wrappers.lambdaQuery(RechargeOrder.class)
|
||||
.eq(RechargeOrder::getPayStatus,1)
|
||||
.eq(RechargeOrder::getFastPay, true)
|
||||
.eq(RechargeOrder::getAdmin, false)
|
||||
.orderByAsc(RechargeOrder::getPayTime)
|
||||
.last("limit 1"));
|
||||
if(one == null){
|
||||
log.error("无数据,不用刷");
|
||||
return;
|
||||
}
|
||||
LocalDate localDate = one.getPayTime().toLocalDate();
|
||||
while (true){
|
||||
if(localDate.equals(LocalDate.now())){
|
||||
return;
|
||||
}
|
||||
refreshDate(localDate);
|
||||
localDate = localDate.plusDays(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -136,6 +136,7 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
||||
resp.setTraceId(traceId);
|
||||
resp.setPrice(rechargeOrder.getPrice());
|
||||
resp.setRechargeCoin(rechargeOrder.getRechargeCoin());
|
||||
resp.setOrderNo(rechargeOrder.getOrderNo());
|
||||
return resp;
|
||||
}
|
||||
|
||||
@@ -202,5 +203,12 @@ public class RechargeOrderServiceImpl extends ServiceImpl<RechargeOrderMapper,Re
|
||||
return order;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFastPay(String orderNo) {
|
||||
if(orderNo != null){
|
||||
this.update(Wrappers.<RechargeOrder>lambdaUpdate().set(RechargeOrder::getFastPay,true).eq(RechargeOrder::getOrderNo, orderNo));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
package com.ruoyi.cai.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.ConsumeLog;
|
||||
import com.ruoyi.cai.domain.Union;
|
||||
import com.ruoyi.cai.domain.UnionTotal;
|
||||
import com.ruoyi.cai.enums.rank.RankDataTypeEnum;
|
||||
import com.ruoyi.cai.mapper.UnionTotalMapper;
|
||||
import com.ruoyi.cai.service.ConsumeLogService;
|
||||
import com.ruoyi.cai.service.UnionService;
|
||||
import com.ruoyi.cai.service.UnionTotalService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 工会每日收益Service业务层处理
|
||||
*
|
||||
* @author 77
|
||||
* @date 2025-09-11
|
||||
*/
|
||||
@Service
|
||||
public class UnionTotalServiceImpl extends ServiceImpl<UnionTotalMapper, UnionTotal> implements UnionTotalService {
|
||||
|
||||
@Resource
|
||||
private UnionTotalMapper unionTotalMapper;
|
||||
@Autowired
|
||||
private ConsumeLogService consumeLogService;
|
||||
@Autowired
|
||||
private UnionService unionService;
|
||||
|
||||
|
||||
@Override
|
||||
public void refreshData(LocalDate localDate) {
|
||||
this.refreshData(RankDataTypeEnum.DAY,localDate);
|
||||
if(localDate.getDayOfWeek() == DayOfWeek.MONDAY){
|
||||
this.refreshData(RankDataTypeEnum.WEEK,localDate);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshData(RankDataTypeEnum dataType, LocalDate localDate) {
|
||||
if (dataType == RankDataTypeEnum.DAY) {
|
||||
refreshDataDay(localDate);
|
||||
} else if (dataType == RankDataTypeEnum.WEEK) {
|
||||
refreshDataWeek(localDate);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshAll() {
|
||||
ConsumeLog one = consumeLogService.getOne(Wrappers.lambdaQuery(ConsumeLog.class)
|
||||
.orderByAsc(ConsumeLog::getCreateTime)
|
||||
.last("limit 1"));
|
||||
if(one == null){
|
||||
log.error("无数据,不用刷");
|
||||
return;
|
||||
}
|
||||
LocalDate localDate = one.getCreateTime().toLocalDate();
|
||||
while (true){
|
||||
if(localDate.equals(LocalDate.now())){
|
||||
return;
|
||||
}
|
||||
this.refreshData(localDate);
|
||||
localDate = localDate.plusDays(1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refreshUnionTotalAll() {
|
||||
int current = 0;
|
||||
int pageSize = 10;
|
||||
Page<Union> page = new Page<>(0, pageSize);
|
||||
while (true){
|
||||
current++;
|
||||
page.setCurrent(current);
|
||||
Page<Union> userPage = unionService.page(page);
|
||||
List<Union> records = userPage.getRecords();
|
||||
for (Union union : records) {
|
||||
this.refreshUnionTotal(union.getId());
|
||||
}
|
||||
if(records.isEmpty() || records.size() < pageSize){
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void refreshUnionTotal(Long unionId) {
|
||||
UnionTotal unionTotal = unionTotalMapper.countUnion(unionId);
|
||||
unionService.update(Wrappers.lambdaUpdate(Union.class)
|
||||
.eq(Union::getId, unionId)
|
||||
.set(Union::getAnchorEarningsTotal, unionTotal.getAnchorEarningsTotal())
|
||||
.set(Union::getUnionEarningsTotal, unionTotal.getUnionEarningsTotal()));
|
||||
}
|
||||
|
||||
private void refreshDataDay(LocalDate localDate) {
|
||||
LocalDateTime minTime = localDate.atTime(LocalTime.MIN);
|
||||
LocalDateTime maxTime = localDate.atTime(LocalTime.MAX);
|
||||
List<UnionTotal> unionTotalList = unionTotalMapper.countUnionTotal(minTime, maxTime);
|
||||
for (UnionTotal unionTotal : unionTotalList) {
|
||||
UnionTotal one = this.getOne(Wrappers.lambdaQuery(UnionTotal.class).eq(UnionTotal::getCountDate, localDate)
|
||||
.eq(UnionTotal::getDataType, RankDataTypeEnum.DAY.getCode()).last("limit 1"));
|
||||
if (one == null) {
|
||||
one = new UnionTotal();
|
||||
one.setUnionId(unionTotal.getUnionId());
|
||||
one.setUnionName(unionTotal.getUnionName());
|
||||
one.setUnionEarningsTotal(unionTotal.getUnionEarningsTotal());
|
||||
one.setAnchorEarningsTotal(unionTotal.getAnchorEarningsTotal());
|
||||
one.setCountDate(localDate);
|
||||
one.setRefreshTime(LocalDateTime.now());
|
||||
one.setDataType(RankDataTypeEnum.DAY.getCode());
|
||||
this.save(one);
|
||||
} else {
|
||||
UnionTotal update = new UnionTotal();
|
||||
update.setUnionEarningsTotal(unionTotal.getUnionEarningsTotal());
|
||||
update.setAnchorEarningsTotal(unionTotal.getAnchorEarningsTotal());
|
||||
update.setRefreshTime(LocalDateTime.now());
|
||||
update.setUnionId(unionTotal.getUnionId());
|
||||
update.setUnionName(unionTotal.getUnionName());
|
||||
update.setId(one.getId());
|
||||
this.updateById(update);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void refreshDataWeek(LocalDate localDate) {
|
||||
LocalDateTime minTime = localDate.atTime(LocalTime.MIN);
|
||||
LocalDateTime maxTime = localDate.plusDays(6).atTime(LocalTime.MAX);
|
||||
List<UnionTotal> unionTotalList = unionTotalMapper.countUnionTotal(minTime, maxTime);
|
||||
for (UnionTotal unionTotal : unionTotalList) {
|
||||
UnionTotal one = this.getOne(Wrappers.lambdaQuery(UnionTotal.class).eq(UnionTotal::getCountDate, localDate)
|
||||
.eq(UnionTotal::getDataType, RankDataTypeEnum.WEEK.getCode()).last("limit 1"));
|
||||
if (one == null) {
|
||||
one = new UnionTotal();
|
||||
one.setUnionId(unionTotal.getUnionId());
|
||||
one.setUnionName(unionTotal.getUnionName());
|
||||
one.setUnionEarningsTotal(unionTotal.getUnionEarningsTotal());
|
||||
one.setAnchorEarningsTotal(unionTotal.getAnchorEarningsTotal());
|
||||
one.setCountDate(localDate);
|
||||
one.setRefreshTime(LocalDateTime.now());
|
||||
one.setDataType(RankDataTypeEnum.WEEK.getCode());
|
||||
this.save(one);
|
||||
} else {
|
||||
UnionTotal update = new UnionTotal();
|
||||
update.setUnionEarningsTotal(unionTotal.getUnionEarningsTotal());
|
||||
update.setAnchorEarningsTotal(unionTotal.getAnchorEarningsTotal());
|
||||
update.setRefreshTime(LocalDateTime.now());
|
||||
update.setId(one.getId());
|
||||
this.updateById(update);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user