Commit 5cff936b authored by renjie's avatar renjie

月度账单

获取企业认证图片
parent d9f246c1
...@@ -450,56 +450,6 @@ public class AccountController { ...@@ -450,56 +450,6 @@ public class AccountController {
return resultDto; return resultDto;
} }
@RequestMapping(path = "/authorize/details", method = RequestMethod.GET)
public ResultDto getAuthorizeDetails(Principal principal) {
ResultDto resultDto = new ResultDto();
try {
resultDto.setData(accountService.getAuthorizeDetails(principal.getName()));
resultDto.setStatus(0);
}catch (ClientRequestException e) {
resultDto.setStatus(-1);
Map<String, Object> statusInfo = new HashMap<>();
statusInfo.put("code", e.getErrorCode());
statusInfo.put("message", e.getMessage());
resultDto.setStatusInfo(statusInfo);
}
return resultDto;
}
@RequestMapping(path = "/authorize/files", method = RequestMethod.GET)
public ResultDto getAuthorizeFiles(Principal principal, HttpServletResponse response) {
ResultDto resultDto = new ResultDto();
try {
File tempFile = accountService.getAuthorizeFiles(principal.getName());
try(OutputStream os = response.getOutputStream();
FileInputStream fis = new FileInputStream(tempFile)){
response.setHeader("content-type", "application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("压缩包.zip", "UTF-8"));
int len =0;
byte[] bt = new byte[5*1024];
while((len = fis.read(bt)) != -1) {
os.write(bt,0,len);
}
}catch(Exception e) {
e.printStackTrace();
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}finally {
tempFile.deleteOnExit();
}
accountService.getAuthorizeFiles(principal.getName());
resultDto.setStatus(0);
}catch (ClientRequestException e) {
resultDto.setStatus(-1);
Map<String, Object> statusInfo = new HashMap<>();
statusInfo.put("code", e.getErrorCode());
statusInfo.put("message", e.getMessage());
resultDto.setStatusInfo(statusInfo);
}
return resultDto;
}
@RequestMapping(path = "/ali/login", method = RequestMethod.GET) @RequestMapping(path = "/ali/login", method = RequestMethod.GET)
public String save(HttpServletRequest request,HttpServletResponse response) { public String save(HttpServletRequest request,HttpServletResponse response) {
//页面回调地址 必须与应用中的设置一样 //页面回调地址 必须与应用中的设置一样
......
...@@ -5,12 +5,18 @@ import com.edgec.browserbackend.account.domain.AccountDto; ...@@ -5,12 +5,18 @@ import com.edgec.browserbackend.account.domain.AccountDto;
import com.edgec.browserbackend.account.dto.ResultDto; import com.edgec.browserbackend.account.dto.ResultDto;
import com.edgec.browserbackend.account.dto.SubUsersRequestDto; import com.edgec.browserbackend.account.dto.SubUsersRequestDto;
import com.edgec.browserbackend.account.service.AccountService; import com.edgec.browserbackend.account.service.AccountService;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.browser.dto.ShopRequestDto; import com.edgec.browserbackend.browser.dto.ShopRequestDto;
import com.edgec.browserbackend.common.commons.error.ClientRequestException; import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.security.Principal; import java.security.Principal;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
......
package com.edgec.browserbackend.account.controller; package com.edgec.browserbackend.account.controller;
import com.edgec.browserbackend.account.dto.ResultDto;
import com.edgec.browserbackend.account.service.*; import com.edgec.browserbackend.account.service.*;
import com.edgec.browserbackend.account.domain.*; import com.edgec.browserbackend.account.domain.*;
import com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode;
import com.edgec.browserbackend.common.auth.Securitys; import com.edgec.browserbackend.common.auth.Securitys;
import com.edgec.browserbackend.common.commons.error.ClientRequestException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
...@@ -11,8 +14,16 @@ import org.springframework.data.domain.Pageable; ...@@ -11,8 +14,16 @@ import org.springframework.data.domain.Pageable;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.security.Principal;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController @RestController
...@@ -35,6 +46,9 @@ public class AdministratorController { ...@@ -35,6 +46,9 @@ public class AdministratorController {
@Autowired @Autowired
private UserPrePaidBillingService userPrePaidBillingService; private UserPrePaidBillingService userPrePaidBillingService;
@Autowired
private AccountService accountService;
//--------------------------------ROOT用户操作--------------------------------------// //--------------------------------ROOT用户操作--------------------------------------//
//管理员注册tested //管理员注册tested
@PreAuthorize(Securitys.ROOT_EL) @PreAuthorize(Securitys.ROOT_EL)
...@@ -261,6 +275,58 @@ public class AdministratorController { ...@@ -261,6 +275,58 @@ public class AdministratorController {
public boolean userbillingTransfer() { public boolean userbillingTransfer() {
return administratorService.userbillingTransfer(); return administratorService.userbillingTransfer();
} }
@PreAuthorize(Securitys.ADMIN_EL)
@RequestMapping(path = "/0xadministrator/authorize/files", method = RequestMethod.GET)
public ResultDto getAuthorizeFiles(Principal principal, @RequestParam("username")String username, HttpServletResponse response) {
ResultDto resultDto = new ResultDto();
try {
File tempFile = accountService.getAuthorizeFiles(username);
try(OutputStream os = response.getOutputStream();
FileInputStream fis = new FileInputStream(tempFile)){
response.setHeader("content-type", "application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("Licenses.zip", "UTF-8"));
int len =0;
byte[] bt = new byte[5*1024];
while((len = fis.read(bt)) != -1) {
os.write(bt,0,len);
}
}catch(Exception e) {
e.printStackTrace();
throw new ClientRequestException(BrowserErrorCode.UNKNOWN);
}finally {
tempFile.deleteOnExit();
}
resultDto.setStatus(0);
}catch (ClientRequestException e) {
resultDto.setStatus(-1);
Map<String, Object> statusInfo = new HashMap<>();
statusInfo.put("code", e.getErrorCode());
statusInfo.put("message", e.getMessage());
resultDto.setStatusInfo(statusInfo);
}
return resultDto;
}
@PreAuthorize(Securitys.ADMIN_EL)
@RequestMapping(path = "/0xadministrator/authorize/details", method = RequestMethod.GET)
public ResultDto getAuthorizeDetails(Principal principal) {
ResultDto resultDto = new ResultDto();
try {
resultDto.setData(accountService.getAuthorizeDetails(principal.getName()));
resultDto.setStatus(0);
}catch (ClientRequestException e) {
resultDto.setStatus(-1);
Map<String, Object> statusInfo = new HashMap<>();
statusInfo.put("code", e.getErrorCode());
statusInfo.put("message", e.getMessage());
resultDto.setStatusInfo(statusInfo);
}
return resultDto;
}
} }
......
...@@ -9,9 +9,11 @@ public class CompanyMonthReport { ...@@ -9,9 +9,11 @@ public class CompanyMonthReport {
private int month; //几月的订单 private int month; //几月的订单
private int prepaidBillingCount; //订单的总数 private int billingCount; //订单的总数
private float prepaidBillingAmount; //订单的金额统计 private float companyIncomeAmount; //公司收入
private float companyExpenseAmount; //公司支出
public int getYear() { public int getYear() {
...@@ -30,19 +32,27 @@ public class CompanyMonthReport { ...@@ -30,19 +32,27 @@ public class CompanyMonthReport {
this.month = month; this.month = month;
} }
public int getPrepaidBillingCount() { public float getCompanyExpenseAmount() {
return prepaidBillingCount; return companyExpenseAmount;
}
public void setCompanyExpenseAmount(float companyExpenseAmount) {
this.companyExpenseAmount = companyExpenseAmount;
}
public int getBillingCount() {
return billingCount;
} }
public void setPrepaidBillingCount(int prepaidBillingCount) { public void setBillingCount(int billingCount) {
this.prepaidBillingCount = prepaidBillingCount; this.billingCount = billingCount;
} }
public float getPrepaidBillingAmount() { public float getCompanyIncomeAmount() {
return prepaidBillingAmount; return companyIncomeAmount;
} }
public void setPrepaidBillingAmount(float prepaidBillingAmount) { public void setCompanyIncomeAmount(float companyIncomeAmount) {
this.prepaidBillingAmount = prepaidBillingAmount; this.companyIncomeAmount = companyIncomeAmount;
} }
} }
...@@ -43,7 +43,7 @@ public class UserPrePaidBilling { ...@@ -43,7 +43,7 @@ public class UserPrePaidBilling {
private boolean isPrepaid; private boolean isPrepaid;
private float total; private float total;
//0 -- 充值, 1 -- newip, 2 -- renew, 3 -- return //0 -- 充值, 1 -- newip, 2 -- renew, 3 -- return, 4 -- 礼金提现
private int chargeType; private int chargeType;
private String unit = "month"; private String unit = "month";
......
...@@ -12,9 +12,11 @@ import java.util.List; ...@@ -12,9 +12,11 @@ import java.util.List;
public interface UserPrePaidBillingRepositoryCustom { public interface UserPrePaidBillingRepositoryCustom {
long countPrepaidNum(int year, int month); long countPrepaidOrderNum(int year, int month);
float prepaidAmount(int year, int month); float companyIncomeAmount(int year, int month);
float companyExpenseAmount(int year, int month);
Page<UserPrePaidBilling> findByUsernameAndChargeTypes(Pageable pageable, String username, String[] chargeTypes, int year, int month, int day, String zoneId); Page<UserPrePaidBilling> findByUsernameAndChargeTypes(Pageable pageable, String username, String[] chargeTypes, int year, int month, int day, String zoneId);
......
...@@ -36,9 +36,9 @@ public class UserPrePaidBillingRepositoryCustomImpl implements UserPrePaidBillin ...@@ -36,9 +36,9 @@ public class UserPrePaidBillingRepositoryCustomImpl implements UserPrePaidBillin
@Override @Override
public long countPrepaidNum(int year, int month) { public long countPrepaidOrderNum(int year, int month) {
MatchOperation matchOperation = Aggregation.match(where("year").is(year).and("month").is(month)); MatchOperation matchOperation = Aggregation.match(where("year").is(year).and("month").is(month).and("chargeType").in(Arrays.asList(1,2)));
CountOperation countOperation = Aggregation.count().as("count"); CountOperation countOperation = Aggregation.count().as("count");
AggregationResults<HashMap> result = mongoTemplate.aggregate(Aggregation.newAggregation(matchOperation, countOperation), AggregationResults<HashMap> result = mongoTemplate.aggregate(Aggregation.newAggregation(matchOperation, countOperation),
UserPrePaidBilling.class, HashMap.class); UserPrePaidBilling.class, HashMap.class);
...@@ -62,9 +62,35 @@ public class UserPrePaidBillingRepositoryCustomImpl implements UserPrePaidBillin ...@@ -62,9 +62,35 @@ public class UserPrePaidBillingRepositoryCustomImpl implements UserPrePaidBillin
} }
@Override @Override
public float prepaidAmount(int year, int month) { public float companyExpenseAmount(int year, int month) {
MatchOperation matchOperation = Aggregation.match(where("year").is(year).and("month").is(month).and("payMethod").in(Arrays.asList(0,3,4)));
GroupOperation groupOperation = Aggregation.group("month").sum("total").as("prepaidAmount");
AggregationResults<Map> totalSum = mongoTemplate.aggregate(Aggregation.newAggregation(matchOperation, groupOperation),
UserPrePaidBilling.class, Map.class);
if (totalSum.getMappedResults() == null || totalSum.getMappedResults().size() == 0) {
return 0;
} else {
Map map = totalSum.getMappedResults().get(0);
if (map == null) {
return 0;
} else {
Double sum = (Double) map.get("prepaidAmount");
if (sum == null) {
return 0;
} else {
return sum.floatValue();
}
}
}
}
@Override
public float companyIncomeAmount(int year, int month) {
MatchOperation matchOperation = Aggregation.match(where("year").is(year).and("month").is(month)); MatchOperation matchOperation = Aggregation.match(where("year").is(year).and("month").is(month).and("payMethod").in(Arrays.asList(1,2)));
GroupOperation groupOperation = Aggregation.group("month").sum("total").as("prepaidAmount"); GroupOperation groupOperation = Aggregation.group("month").sum("total").as("prepaidAmount");
AggregationResults<Map> totalSum = mongoTemplate.aggregate(Aggregation.newAggregation(matchOperation, groupOperation), AggregationResults<Map> totalSum = mongoTemplate.aggregate(Aggregation.newAggregation(matchOperation, groupOperation),
......
...@@ -30,19 +30,21 @@ public class PrepaidBillingCountTaskScheduler { ...@@ -30,19 +30,21 @@ public class PrepaidBillingCountTaskScheduler {
int monthValue = lastmonth.getMonthValue(); int monthValue = lastmonth.getMonthValue();
int year = lastmonth.getYear(); int year = lastmonth.getYear();
for (int i = 2019; i <= year; i++){ for (int i = 2020; i <= year; i++){
for (int j =1; j <= monthValue; j++){ for (int j =1; j <= monthValue; j++){
if (i == 2019 && j < 5){ if (i == 2020 && j < 1){
continue; continue;
}else { }else {
if (monthReportRepository.findByYearAndMonth(i,j) == null){ if (monthReportRepository.findByYearAndMonth(i,j) == null){
int count = new Long(userPrePaidBillingRepository.countPrepaidNum(i, j)).intValue(); int count = new Long(userPrePaidBillingRepository.countPrepaidOrderNum(i, j)).intValue();
float amountSum = userPrePaidBillingRepository.prepaidAmount(i, j); float companyExpenseAmount = userPrePaidBillingRepository.companyExpenseAmount(i, j);
float companyIncomeAmount = userPrePaidBillingRepository.companyIncomeAmount(i, j);
CompanyMonthReport companyMonthReport = new CompanyMonthReport(); CompanyMonthReport companyMonthReport = new CompanyMonthReport();
companyMonthReport.setYear(i); companyMonthReport.setYear(i);
companyMonthReport.setMonth(j); companyMonthReport.setMonth(j);
companyMonthReport.setPrepaidBillingCount(count); companyMonthReport.setBillingCount(count);
companyMonthReport.setPrepaidBillingAmount(amountSum); companyMonthReport.setCompanyExpenseAmount(companyExpenseAmount);
companyMonthReport.setCompanyIncomeAmount(companyIncomeAmount);
monthReportRepository.save(companyMonthReport); monthReportRepository.save(companyMonthReport);
}else { }else {
continue; continue;
......
...@@ -442,15 +442,46 @@ public class PaymentServiceImpl implements PaymentService { ...@@ -442,15 +442,46 @@ public class PaymentServiceImpl implements PaymentService {
userPaymentRepository.save(bankOrder); userPaymentRepository.save(bankOrder);
UserBalance userBalance = userBalanceRepository.findById(username).orElse(null); UserBalance userBalance = userBalanceRepository.findById(username).orElse(null);
UserPrePaidBilling bill = new UserPrePaidBilling();
Account account = accountRepository.findByName(username);
if (account != null && account.getParent() != null)
bill.setAdministrator(account.getParent());
else
bill.setAdministrator(account.getName());
bill.setTradeNo(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ SmsUtils.createRandom(true, 4));
bill.setChargeType(0);
bill.setAmount(0);
bill.setUnit(null);
bill.setPeriod(0);
bill.setPayMethod(3);
bill.setUsername(username);
bill.setTotal((float) amount);
bill.setStatus(BillStatus.PAID);
bill.setPrepaid(true);
bill.setTimestamp(Instant.now().toEpochMilli());
final YearMonth lastmonth = YearMonth.now();
int monthValue = lastmonth.getMonthValue();
int year = lastmonth.getYear();
bill.setYear(year);
bill.setMonth(monthValue);
if (userBalance == null) { if (userBalance == null) {
userBalance = new UserBalance(); userBalance = new UserBalance();
userBalance.setUsername(username); userBalance.setUsername(username);
userBalance.setUsed(0); userBalance.setUsed(0);
userBalance.setBalanced(amount); userBalance.setBalanced(amount);
bill.setBalanced(userBalance.getBalanced() + amount);
userPrePaidBillingRepository.save(bill);
return userBalanceRepository.save(userBalance); return userBalanceRepository.save(userBalance);
} else { } else {
bill.setBalanced(userBalance.getBalanced() + amount);
userPrePaidBillingRepository.save(bill);
userBalanceRepository.incrementBalance(userBalance, amount, 0); userBalanceRepository.incrementBalance(userBalance, amount, 0);
} }
return userBalanceRepository.findById(username).orElse(null); return userBalanceRepository.findById(username).orElse(null);
} }
......
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