Commit 5cff936b authored by renjie's avatar renjie

月度账单

获取企业认证图片
parent d9f246c1
......@@ -450,56 +450,6 @@ public class AccountController {
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)
public String save(HttpServletRequest request,HttpServletResponse response) {
//页面回调地址 必须与应用中的设置一样
......
......@@ -5,12 +5,18 @@ import com.edgec.browserbackend.account.domain.AccountDto;
import com.edgec.browserbackend.account.dto.ResultDto;
import com.edgec.browserbackend.account.dto.SubUsersRequestDto;
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.common.commons.error.ClientRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
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.Map;
......
package com.edgec.browserbackend.account.controller;
import com.edgec.browserbackend.account.dto.ResultDto;
import com.edgec.browserbackend.account.service.*;
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.commons.error.ClientRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
......@@ -11,8 +14,16 @@ import org.springframework.data.domain.Pageable;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
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.Map;
@RestController
......@@ -35,6 +46,9 @@ public class AdministratorController {
@Autowired
private UserPrePaidBillingService userPrePaidBillingService;
@Autowired
private AccountService accountService;
//--------------------------------ROOT用户操作--------------------------------------//
//管理员注册tested
@PreAuthorize(Securitys.ROOT_EL)
......@@ -261,6 +275,58 @@ public class AdministratorController {
public boolean 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 {
private int month; //几月的订单
private int prepaidBillingCount; //订单的总数
private int billingCount; //订单的总数
private float prepaidBillingAmount; //订单的金额统计
private float companyIncomeAmount; //公司收入
private float companyExpenseAmount; //公司支出
public int getYear() {
......@@ -30,19 +32,27 @@ public class CompanyMonthReport {
this.month = month;
}
public int getPrepaidBillingCount() {
return prepaidBillingCount;
public float getCompanyExpenseAmount() {
return companyExpenseAmount;
}
public void setCompanyExpenseAmount(float companyExpenseAmount) {
this.companyExpenseAmount = companyExpenseAmount;
}
public int getBillingCount() {
return billingCount;
}
public void setPrepaidBillingCount(int prepaidBillingCount) {
this.prepaidBillingCount = prepaidBillingCount;
public void setBillingCount(int billingCount) {
this.billingCount = billingCount;
}
public float getPrepaidBillingAmount() {
return prepaidBillingAmount;
public float getCompanyIncomeAmount() {
return companyIncomeAmount;
}
public void setPrepaidBillingAmount(float prepaidBillingAmount) {
this.prepaidBillingAmount = prepaidBillingAmount;
public void setCompanyIncomeAmount(float companyIncomeAmount) {
this.companyIncomeAmount = companyIncomeAmount;
}
}
......@@ -43,7 +43,7 @@ public class UserPrePaidBilling {
private boolean isPrepaid;
private float total;
//0 -- 充值, 1 -- newip, 2 -- renew, 3 -- return
//0 -- 充值, 1 -- newip, 2 -- renew, 3 -- return, 4 -- 礼金提现
private int chargeType;
private String unit = "month";
......
......@@ -12,9 +12,11 @@ import java.util.List;
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);
......
......@@ -36,9 +36,9 @@ public class UserPrePaidBillingRepositoryCustomImpl implements UserPrePaidBillin
@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");
AggregationResults<HashMap> result = mongoTemplate.aggregate(Aggregation.newAggregation(matchOperation, countOperation),
UserPrePaidBilling.class, HashMap.class);
......@@ -62,9 +62,35 @@ public class UserPrePaidBillingRepositoryCustomImpl implements UserPrePaidBillin
}
@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");
AggregationResults<Map> totalSum = mongoTemplate.aggregate(Aggregation.newAggregation(matchOperation, groupOperation),
......
......@@ -30,19 +30,21 @@ public class PrepaidBillingCountTaskScheduler {
int monthValue = lastmonth.getMonthValue();
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++){
if (i == 2019 && j < 5){
if (i == 2020 && j < 1){
continue;
}else {
if (monthReportRepository.findByYearAndMonth(i,j) == null){
int count = new Long(userPrePaidBillingRepository.countPrepaidNum(i, j)).intValue();
float amountSum = userPrePaidBillingRepository.prepaidAmount(i, j);
int count = new Long(userPrePaidBillingRepository.countPrepaidOrderNum(i, j)).intValue();
float companyExpenseAmount = userPrePaidBillingRepository.companyExpenseAmount(i, j);
float companyIncomeAmount = userPrePaidBillingRepository.companyIncomeAmount(i, j);
CompanyMonthReport companyMonthReport = new CompanyMonthReport();
companyMonthReport.setYear(i);
companyMonthReport.setMonth(j);
companyMonthReport.setPrepaidBillingCount(count);
companyMonthReport.setPrepaidBillingAmount(amountSum);
companyMonthReport.setBillingCount(count);
companyMonthReport.setCompanyExpenseAmount(companyExpenseAmount);
companyMonthReport.setCompanyIncomeAmount(companyIncomeAmount);
monthReportRepository.save(companyMonthReport);
}else {
continue;
......
......@@ -442,15 +442,46 @@ public class PaymentServiceImpl implements PaymentService {
userPaymentRepository.save(bankOrder);
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) {
userBalance = new UserBalance();
userBalance.setUsername(username);
userBalance.setUsed(0);
userBalance.setBalanced(amount);
bill.setBalanced(userBalance.getBalanced() + amount);
userPrePaidBillingRepository.save(bill);
return userBalanceRepository.save(userBalance);
} else {
bill.setBalanced(userBalance.getBalanced() + amount);
userPrePaidBillingRepository.save(bill);
userBalanceRepository.incrementBalance(userBalance, amount, 0);
}
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