Commit f8c68a35 authored by renjie's avatar renjie

Merge branch 'dev-zrj' into 'staging'

admin统计ip

See merge request !122
parents 73a23124 aecbafb3
...@@ -4,6 +4,9 @@ public class IpCountQueryResultDto { ...@@ -4,6 +4,9 @@ public class IpCountQueryResultDto {
long IpCount_using; long IpCount_using;
long IpCount_all; long IpCount_all;
long IpCount_yesterday_using;
long IpCount_yesterday_all;
public long getIpCount_all() { public long getIpCount_all() {
return IpCount_all; return IpCount_all;
} }
...@@ -19,4 +22,20 @@ public class IpCountQueryResultDto { ...@@ -19,4 +22,20 @@ public class IpCountQueryResultDto {
public void setIpCount_using(long ipCount_using) { public void setIpCount_using(long ipCount_using) {
IpCount_using = ipCount_using; IpCount_using = ipCount_using;
} }
public long getIpCount_yesterday_all() {
return IpCount_yesterday_all;
}
public void setIpCount_yesterday_all(long ipCount_yesterday_all) {
IpCount_yesterday_all = ipCount_yesterday_all;
}
public long getIpCount_yesterday_using() {
return IpCount_yesterday_using;
}
public void setIpCount_yesterday_using(long ipCount_yesterday_using) {
IpCount_yesterday_using = ipCount_yesterday_using;
}
} }
...@@ -7,6 +7,7 @@ import org.springframework.data.domain.Page; ...@@ -7,6 +7,7 @@ import org.springframework.data.domain.Page;
public class PromotionQueryResultDto { public class PromotionQueryResultDto {
private String username; private String username;
private String code; private String code;
private long ipCount;
Page<AccountPromotionDto> users; Page<AccountPromotionDto> users;
Promotion promotion; Promotion promotion;
...@@ -50,4 +51,12 @@ public class PromotionQueryResultDto { ...@@ -50,4 +51,12 @@ public class PromotionQueryResultDto {
public void setUsers(Page<AccountPromotionDto> users) { public void setUsers(Page<AccountPromotionDto> users) {
this.users = users; this.users = users;
} }
public long getIpCount() {
return ipCount;
}
public void setIpCount(long ipCount) {
this.ipCount = ipCount;
}
} }
...@@ -10,11 +10,12 @@ import com.edgec.browserbackend.account.repository.*; ...@@ -10,11 +10,12 @@ import com.edgec.browserbackend.account.repository.*;
import com.edgec.browserbackend.account.service.AdministratorService; import com.edgec.browserbackend.account.service.AdministratorService;
import com.edgec.browserbackend.auth.service.UserService; import com.edgec.browserbackend.auth.service.UserService;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode; import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.domain.IpCountRecord;
import com.edgec.browserbackend.browser.domain.ProxyConfig; import com.edgec.browserbackend.browser.domain.ProxyConfig;
import com.edgec.browserbackend.browser.repository.IpCountRecordRepository;
import com.edgec.browserbackend.browser.repository.IpResourceRepository; import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.repository.ProxyConfigRepository; import com.edgec.browserbackend.browser.repository.ProxyConfigRepository;
import com.edgec.browserbackend.common.commons.error.ClientRequestException; import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import com.edgec.browserbackend.common.commons.utils.DateConverter;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -29,9 +30,12 @@ import org.springframework.stereotype.Service; ...@@ -29,9 +30,12 @@ import org.springframework.stereotype.Service;
import java.io.File; import java.io.File;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicLong;
@Service @Service
...@@ -67,6 +71,9 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -67,6 +71,9 @@ public class AdministratorServiceImpl implements AdministratorService {
@Autowired @Autowired
private ProxyConfigRepository proxyConfigRepository; private ProxyConfigRepository proxyConfigRepository;
@Autowired
private IpCountRecordRepository ipCountRecordRepository;
@Override @Override
public Administrator createAdministrator(Administrator administrator) { public Administrator createAdministrator(Administrator administrator) {
Administrator administrator1 = new Administrator(); Administrator administrator1 = new Administrator();
...@@ -379,12 +386,27 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -379,12 +386,27 @@ public class AdministratorServiceImpl implements AdministratorService {
long ipcount_all = ipResourceRepository.count(); long ipcount_all = ipResourceRepository.count();
ipCountQueryResultDto.setIpCount_using(ipcount_using); ipCountQueryResultDto.setIpCount_using(ipcount_using);
ipCountQueryResultDto.setIpCount_all(ipcount_all); ipCountQueryResultDto.setIpCount_all(ipcount_all);
IpCountRecord ipCountRecord = ipCountRecordRepository.findFirstByUsernameAndTimestampBetween("all",
Instant.now().minus(1, ChronoUnit.DAYS).toEpochMilli(),
Instant.now().toEpochMilli());
if (ipCountRecord != null) {
ipCountQueryResultDto.setIpCount_all(ipCountRecord.getIp_all());
ipCountQueryResultDto.setIpCount_using(ipCountRecord.getIp_using());
}
} else { } else {
long ipcount_using = ipResourceRepository.countAllByOwnerAndIsDeleted(username, false); long ipcount_using = ipResourceRepository.countAllByOwnerAndIsDeleted(username, false);
long ipcount_all = ipResourceRepository.countAllByOwner(username); long ipcount_all = ipResourceRepository.countAllByOwner(username);
ipCountQueryResultDto.setIpCount_using(ipcount_using); ipCountQueryResultDto.setIpCount_using(ipcount_using);
ipCountQueryResultDto.setIpCount_all(ipcount_all); ipCountQueryResultDto.setIpCount_all(ipcount_all);
IpCountRecord ipCountRecord = ipCountRecordRepository.findFirstByUsernameAndTimestampBetween(username,
Instant.now().minus(1, ChronoUnit.DAYS).toEpochMilli(),
Instant.now().toEpochMilli());
if (ipCountRecord != null) {
ipCountQueryResultDto.setIpCount_all(ipCountRecord.getIp_all());
ipCountQueryResultDto.setIpCount_using(ipCountRecord.getIp_using());
} }
}
return ipCountQueryResultDto; return ipCountQueryResultDto;
} }
...@@ -420,6 +442,7 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -420,6 +442,7 @@ public class AdministratorServiceImpl implements AdministratorService {
List<Account> accounts = accountRepository.findAllBySignupDateBetweenAndPromotionCodeAndParentIsNull(dateTime1, dateTime2, account.getPromotion().getCode()); List<Account> accounts = accountRepository.findAllBySignupDateBetweenAndPromotionCodeAndParentIsNull(dateTime1, dateTime2, account.getPromotion().getCode());
Promotion promotion = new Promotion(); Promotion promotion = new Promotion();
Account finalAccount = account; Account finalAccount = account;
AtomicLong ipCount = new AtomicLong();
if (accounts != null && accounts.size() > 0) { if (accounts != null && accounts.size() > 0) {
accounts.forEach(x -> { accounts.forEach(x -> {
promotion.setInvitedUsers(promotion.getInvitedUsers() + 1); promotion.setInvitedUsers(promotion.getInvitedUsers() + 1);
...@@ -430,10 +453,12 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -430,10 +453,12 @@ public class AdministratorServiceImpl implements AdministratorService {
promotion.setTotalCommission(promotion.getTotalCommission() + (int)totalCommission); promotion.setTotalCommission(promotion.getTotalCommission() + (int)totalCommission);
promotion.setCommission(promotion.getCommission() + x.getPromotion().getCommission()); promotion.setCommission(promotion.getCommission() + x.getPromotion().getCommission());
double secondCommission = 0; double secondCommission = 0;
ipCount.addAndGet(ipResourceRepository.countAllByOwnerAndIsDeleted(x.getName(), false));
if (finalAccount.getPromotion().isSale() && x.getParent() == null) { if (finalAccount.getPromotion().isSale() && x.getParent() == null) {
List<Account> secondPromotes = accountRepository.findByPromotionCodeAndParentIsNull(x.getPromotion().getCode()); List<Account> secondPromotes = accountRepository.findByPromotionCodeAndParentIsNull(x.getPromotion().getCode());
if (secondPromotes != null && secondPromotes.size() > 0) { if (secondPromotes != null && secondPromotes.size() > 0) {
for (Account secondPromote : secondPromotes) { for (Account secondPromote : secondPromotes) {
ipCount.addAndGet(ipResourceRepository.countAllByOwnerAndIsDeleted(secondPromote.getName(), false));
List<UserPrePaidBilling> userPrePaidBillings1 = userPrePaidBillingRepository.findByAdministratorAndPayMethodInAndTimestampBetween(secondPromote.getName(), Arrays.asList(1,2,3), dateTime1.getTime(), dateTime2.getTime()); List<UserPrePaidBilling> userPrePaidBillings1 = userPrePaidBillingRepository.findByAdministratorAndPayMethodInAndTimestampBetween(secondPromote.getName(), Arrays.asList(1,2,3), dateTime1.getTime(), dateTime2.getTime());
if (userPrePaidBillings1 != null && userPrePaidBillings1.size() > 0) if (userPrePaidBillings1 != null && userPrePaidBillings1.size() > 0)
secondCommission += userPrePaidBillings1.stream().mapToDouble(UserPrePaidBilling::getTotal).sum(); secondCommission += userPrePaidBillings1.stream().mapToDouble(UserPrePaidBilling::getTotal).sum();
...@@ -450,7 +475,7 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -450,7 +475,7 @@ public class AdministratorServiceImpl implements AdministratorService {
}); });
} }
promotionQueryResultDto.setPromotion(promotion); promotionQueryResultDto.setPromotion(promotion);
promotionQueryResultDto.setIpCount(ipCount.get());
return promotionQueryResultDto; return promotionQueryResultDto;
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
......
package com.edgec.browserbackend.browser.domain;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "ipcountrecord")
public class IpCountRecord {
private String username;
private long timestamp;
private long ip_using;
private long ip_all;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public long getIp_all() {
return ip_all;
}
public void setIp_all(long ip_all) {
this.ip_all = ip_all;
}
public long getIp_using() {
return ip_using;
}
public void setIp_using(long ip_using) {
this.ip_using = ip_using;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
}
package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.domain.IpCountRecord;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface IpCountRecordRepository extends MongoRepository<IpCountRecord, String> {
IpCountRecord findFirstByUsernameAndTimestampBetween(String username, long begin, long end);
}
package com.edgec.browserbackend.browser.task; package com.edgec.browserbackend.browser.task;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.edgec.browserbackend.account.domain.Account;
import com.edgec.browserbackend.account.domain.IpChargeRequestDto; import com.edgec.browserbackend.account.domain.IpChargeRequestDto;
import com.edgec.browserbackend.account.domain.QueryIpUrlList; import com.edgec.browserbackend.account.domain.QueryIpUrlList;
import com.edgec.browserbackend.account.repository.AccountRepository;
import com.edgec.browserbackend.account.repository.QueryIpUrlListRepository; import com.edgec.browserbackend.account.repository.QueryIpUrlListRepository;
import com.edgec.browserbackend.account.service.AccountService; import com.edgec.browserbackend.account.service.AccountService;
import com.edgec.browserbackend.browser.domain.IpCountRecord;
import com.edgec.browserbackend.browser.domain.IpResource; import com.edgec.browserbackend.browser.domain.IpResource;
import com.edgec.browserbackend.browser.domain.IpType; import com.edgec.browserbackend.browser.domain.IpType;
import com.edgec.browserbackend.browser.dto.IpBuyResultDto; import com.edgec.browserbackend.browser.dto.IpBuyResultDto;
import com.edgec.browserbackend.browser.dto.IpInfoResultDto; import com.edgec.browserbackend.browser.dto.IpInfoResultDto;
import com.edgec.browserbackend.browser.dto.ShopRequestDto; import com.edgec.browserbackend.browser.dto.ShopRequestDto;
import com.edgec.browserbackend.browser.repository.IpCountRecordRepository;
import com.edgec.browserbackend.browser.repository.IpResourceRepository; import com.edgec.browserbackend.browser.repository.IpResourceRepository;
import com.edgec.browserbackend.browser.service.IpAndShopService; import com.edgec.browserbackend.browser.service.IpAndShopService;
import com.edgec.browserbackend.common.commons.utils.NotifyUtils; import com.edgec.browserbackend.common.commons.utils.NotifyUtils;
...@@ -62,6 +66,12 @@ public class BrowserTask { ...@@ -62,6 +66,12 @@ public class BrowserTask {
@Autowired @Autowired
private QueryIpUrlListRepository queryIpUrlListRepository; private QueryIpUrlListRepository queryIpUrlListRepository;
@Autowired
private IpCountRecordRepository ipCountRecordRepository;
@Autowired
private AccountRepository accountRepository;
@Value("${spring.profiles.active}") @Value("${spring.profiles.active}")
private String profiles; private String profiles;
...@@ -278,6 +288,33 @@ public class BrowserTask { ...@@ -278,6 +288,33 @@ public class BrowserTask {
} }
} }
@Scheduled(cron = "0 0 0 * * ?")
public void countIp() {
List<Account> accounts = accountRepository.findAll();
try {
accounts.forEach(x -> {
IpCountRecord ipCountRecord = new IpCountRecord();
ipCountRecord.setUsername(x.getName());
ipCountRecord.setTimestamp(Instant.now().toEpochMilli());
long ipcount_using = ipResourceRepository.countAllByOwnerAndIsDeleted(x.getName(), false);
long ipcount_all = ipResourceRepository.countAllByOwner(x.getName());
ipCountRecord.setIp_all(ipcount_all);
ipCountRecord.setIp_using(ipcount_using);
ipCountRecordRepository.save(ipCountRecord);
});
IpCountRecord ipCountRecord = new IpCountRecord();
ipCountRecord.setUsername("all");
ipCountRecord.setTimestamp(Instant.now().toEpochMilli());
long ipcount_using = ipResourceRepository.countAllByIsDeleted(false);
long ipcount_all = ipResourceRepository.count();
ipCountRecord.setIp_using(ipcount_using);
ipCountRecord.setIp_all(ipcount_all);
ipCountRecordRepository.save(ipCountRecord);
} catch (Exception e) {
log.error("统计IpCount error", e);
}
}
public static class HttpClientutils { public static class HttpClientutils {
static OkHttpClient.Builder builder = new OkHttpClient.Builder(); static OkHttpClient.Builder builder = new OkHttpClient.Builder();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment