|
@@ -23,11 +23,11 @@ import com.etotem.cfc.mapper.UserMapper;
|
|
|
import com.etotem.cfc.mapper.WithdrawalRequestMapper;
|
|
import com.etotem.cfc.mapper.WithdrawalRequestMapper;
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
-import java.util.Calendar;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.LinkedHashMap;
|
|
import java.util.LinkedHashMap;
|
|
@@ -1000,11 +1000,15 @@ public class CommissionService {
|
|
|
for (int i = 0; i < months; i++) {
|
|
for (int i = 0; i < months; i++) {
|
|
|
Calendar c = Calendar.getInstance();
|
|
Calendar c = Calendar.getInstance();
|
|
|
c.setTime(startMonth);
|
|
c.setTime(startMonth);
|
|
|
|
|
+ c.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
c.add(Calendar.MONTH, i);
|
|
c.add(Calendar.MONTH, i);
|
|
|
- int dayOfMonth = c.getActualMinimum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
- int lastDayOfMonth = c.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
- long monthBegin = dayOfMonth * 24 * 60 * 60 * 1000;
|
|
|
|
|
- long monthLast = lastDayOfMonth * 24 * 60 * 60 * 1000;
|
|
|
|
|
|
|
+ long monthBegin = c.getTimeInMillis();
|
|
|
|
|
+ c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
|
|
|
|
|
+ c.set(Calendar.HOUR_OF_DAY, 23);
|
|
|
|
|
+ c.set(Calendar.MINUTE, 59);
|
|
|
|
|
+ c.set(Calendar.SECOND, 59);
|
|
|
|
|
+ c.set(Calendar.MILLISECOND, 999);
|
|
|
|
|
+ long monthLast = c.getTimeInMillis();
|
|
|
|
|
|
|
|
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
|
|
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<User>()
|
|
|
.ge(User::getCreatedAt, monthBegin)
|
|
.ge(User::getCreatedAt, monthBegin)
|
|
@@ -1061,11 +1065,15 @@ public class CommissionService {
|
|
|
for (int i = 0; i < months; i++) {
|
|
for (int i = 0; i < months; i++) {
|
|
|
Calendar c = Calendar.getInstance();
|
|
Calendar c = Calendar.getInstance();
|
|
|
c.setTime(startMonth);
|
|
c.setTime(startMonth);
|
|
|
|
|
+ c.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
c.add(Calendar.MONTH, i);
|
|
c.add(Calendar.MONTH, i);
|
|
|
- int dayOfMonth = c.getActualMinimum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
- int lastDayOfMonth = c.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
- long monthBegin = dayOfMonth * 24 * 60 * 60 * 1000;
|
|
|
|
|
- long monthLast = lastDayOfMonth * 24 * 60 * 60 * 1000;
|
|
|
|
|
|
|
+ long monthBegin = c.getTimeInMillis();
|
|
|
|
|
+ c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
|
|
|
|
|
+ c.set(Calendar.HOUR_OF_DAY, 23);
|
|
|
|
|
+ c.set(Calendar.MINUTE, 59);
|
|
|
|
|
+ c.set(Calendar.SECOND, 59);
|
|
|
|
|
+ c.set(Calendar.MILLISECOND, 999);
|
|
|
|
|
+ long monthLast = c.getTimeInMillis();
|
|
|
|
|
|
|
|
LambdaQueryWrapper<ProductOrder> wrapper = new LambdaQueryWrapper<ProductOrder>()
|
|
LambdaQueryWrapper<ProductOrder> wrapper = new LambdaQueryWrapper<ProductOrder>()
|
|
|
.ge(ProductOrder::getCreatedAt, monthBegin)
|
|
.ge(ProductOrder::getCreatedAt, monthBegin)
|
|
@@ -1112,25 +1120,39 @@ public class CommissionService {
|
|
|
calendar.add(Calendar.MONTH, -months + 1);
|
|
calendar.add(Calendar.MONTH, -months + 1);
|
|
|
Date startMonth = calendar.getTime();
|
|
Date startMonth = calendar.getTime();
|
|
|
|
|
|
|
|
|
|
+ // L1 直属下级 userId 列表(ProductOrder 无 referrerId 列,需经 users.referrer_id 关联)
|
|
|
|
|
+ List<Long> l1UserIds = userMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapper<User>().eq(User::getReferrerId, userId))
|
|
|
|
|
+ .stream().map(User::getId).collect(Collectors.toList());
|
|
|
|
|
+
|
|
|
Map<Long, Integer> monthL1ConsumptionMap = new LinkedHashMap<>();
|
|
Map<Long, Integer> monthL1ConsumptionMap = new LinkedHashMap<>();
|
|
|
for (int i = 0; i < months; i++) {
|
|
for (int i = 0; i < months; i++) {
|
|
|
Calendar c = Calendar.getInstance();
|
|
Calendar c = Calendar.getInstance();
|
|
|
c.setTime(startMonth);
|
|
c.setTime(startMonth);
|
|
|
|
|
+ c.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
c.add(Calendar.MONTH, i);
|
|
c.add(Calendar.MONTH, i);
|
|
|
- int dayOfMonth = c.getActualMinimum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
- int lastDayOfMonth = c.getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
- long monthBegin = dayOfMonth * 24 * 60 * 60 * 1000;
|
|
|
|
|
- long monthLast = lastDayOfMonth * 24 * 60 * 60 * 1000;
|
|
|
|
|
|
|
+ long monthBegin = c.getTimeInMillis();
|
|
|
|
|
+ c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
|
|
|
|
|
+ c.set(Calendar.HOUR_OF_DAY, 23);
|
|
|
|
|
+ c.set(Calendar.MINUTE, 59);
|
|
|
|
|
+ c.set(Calendar.SECOND, 59);
|
|
|
|
|
+ c.set(Calendar.MILLISECOND, 999);
|
|
|
|
|
+ long monthLast = c.getTimeInMillis();
|
|
|
|
|
+
|
|
|
|
|
+ if (l1UserIds.isEmpty()) {
|
|
|
|
|
+ monthL1ConsumptionMap.put((long) i, 0);
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
LambdaQueryWrapper<ProductOrder> wrapper = new LambdaQueryWrapper<ProductOrder>()
|
|
LambdaQueryWrapper<ProductOrder> wrapper = new LambdaQueryWrapper<ProductOrder>()
|
|
|
.ge(ProductOrder::getCreatedAt, monthBegin)
|
|
.ge(ProductOrder::getCreatedAt, monthBegin)
|
|
|
.le(ProductOrder::getCreatedAt, monthLast)
|
|
.le(ProductOrder::getCreatedAt, monthLast)
|
|
|
-.eq(ProductOrder::getFulfillStatus, "completed")
|
|
|
|
|
- .eq(ProductOrder::getBuyerId, userId);
|
|
|
|
|
- int sum = (int) productOrderMapper.selectList(wrapper).stream()
|
|
|
|
|
- .mapToLong(o -> o.getTotalAmount() != null ? o.getTotalAmount() : 0)
|
|
|
|
|
- .sum();
|
|
|
|
|
- monthL1ConsumptionMap.put((long) i, sum);
|
|
|
|
|
|
|
+ .eq(ProductOrder::getFulfillStatus, "completed")
|
|
|
|
|
+ .in(ProductOrder::getBuyerId, l1UserIds);
|
|
|
|
|
+ int sum = (int) productOrderMapper.selectList(wrapper).stream()
|
|
|
|
|
+ .mapToLong(o -> o.getTotalAmount() != null ? o.getTotalAmount() : 0)
|
|
|
|
|
+ .sum();
|
|
|
|
|
+ monthL1ConsumptionMap.put((long) i, sum);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
for (int i = 0; i < months; i++) {
|
|
for (int i = 0; i < months; i++) {
|