Commit d89e4fd4 authored by renjie's avatar renjie

费用明细

parent ff3dde2e
...@@ -4,6 +4,7 @@ import com.edgec.browserbackend.account.domain.*; ...@@ -4,6 +4,7 @@ import com.edgec.browserbackend.account.domain.*;
import com.edgec.browserbackend.account.dto.MobileDto; import com.edgec.browserbackend.account.dto.MobileDto;
import com.edgec.browserbackend.account.dto.ResultDto; import com.edgec.browserbackend.account.dto.ResultDto;
import com.edgec.browserbackend.account.dto.BillQueryCriteriaDto; import com.edgec.browserbackend.account.dto.BillQueryCriteriaDto;
import com.edgec.browserbackend.account.dto.UserPrePaidBillingRequestDto;
import com.edgec.browserbackend.common.auth.Securitys; import com.edgec.browserbackend.common.auth.Securitys;
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 com.edgec.browserbackend.common.commons.utils.DateConverter;
...@@ -160,10 +161,20 @@ public class AccountController { ...@@ -160,10 +161,20 @@ public class AccountController {
} }
// 消费总览 // 消费总览
@RequestMapping(path = "/current/userbilling", method = RequestMethod.GET) @RequestMapping(path = "/userbilling", method = RequestMethod.POST)
@Deprecated public ResultDto getUserBills0(Principal principal, @RequestBody UserPrePaidBillingRequestDto userPrePaidBillingRequestDto) {
public List<UserBillList> getUserBills0(Principal principal) { ResultDto resultDto = new ResultDto();
return accountService.getUserBills0(principal.getName()); try {
resultDto.setData(accountService.getUserPrePaidBills(principal.getName(), userPrePaidBillingRequestDto));
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;
} }
// 消费总览 // 消费总览
......
...@@ -37,19 +37,19 @@ public class UserPrePaidBilling { ...@@ -37,19 +37,19 @@ public class UserPrePaidBilling {
private BillStatus status; private BillStatus status;
//0 -- 余额, 2 -- 支付宝, 3 -- 微信 //0 -- 余额, 1 -- 支付宝, 2 -- 微信
private int payMethod; private int payMethod;
private boolean isPrepaid; private boolean isPrepaid;
private String user;
private float total; private float total;
//0 -- 充值, 1 -- newip, 2 -- renew, 3 -- return //0 -- 充值, 1 -- newip, 2 -- renew, 3 -- return
private int chargeType; private int chargeType;
private String unit = "month"; private String unit = "month";
private String administrator;
private List<DeductionRecord> deductionRecords = new ArrayList<>(); private List<DeductionRecord> deductionRecords = new ArrayList<>();
public float getRate() { public float getRate() {
...@@ -176,16 +176,6 @@ public class UserPrePaidBilling { ...@@ -176,16 +176,6 @@ public class UserPrePaidBilling {
this.period = period; this.period = period;
} }
public String getUser() {
if(StringUtils.isEmpty(user))
return username;
return user;
}
public void setUser(String user) {
this.user = user;
}
public int getPayMethod() { public int getPayMethod() {
return payMethod; return payMethod;
} }
...@@ -201,4 +191,12 @@ public class UserPrePaidBilling { ...@@ -201,4 +191,12 @@ public class UserPrePaidBilling {
public void setTradeNo(String tradeNo) { public void setTradeNo(String tradeNo) {
this.tradeNo = tradeNo; this.tradeNo = tradeNo;
} }
public String getAdministrator() {
return administrator;
}
public void setAdministrator(String administrator) {
this.administrator = administrator;
}
} }
package com.edgec.browserbackend.account.dto;
import com.edgec.browserbackend.browser.dto.PageInfo;
import java.util.List;
public class PrePaidBillingPageResultDto<T> {
List<T> billingList;
PageInfo billingPage;
public List<T> getBillingList() {
return billingList;
}
public void setBillingList(List<T> billingList) {
this.billingList = billingList;
}
public PageInfo getBillingPage() {
return billingPage;
}
public void setBillingPage(PageInfo billingPage) {
this.billingPage = billingPage;
}
}
...@@ -7,7 +7,7 @@ public class UserPrePaidBillingRequestDto { ...@@ -7,7 +7,7 @@ public class UserPrePaidBillingRequestDto {
private int day; private int day;
private int page; private int page;
private int amount; private int amount;
// 0 -- 全部, 1 -- 充值, 2 -- 余额扣费, 3 -- 微信扣费, 4 -- 支付宝扣费 // 0 -- 全部, 1 -- 充值, 2 -- 余额扣费, 3 -- 支付宝扣费, 4 -- 微信扣费
private int tradeType; private int tradeType;
public int getDay() { public int getDay() {
......
...@@ -26,4 +26,13 @@ public interface UserPrePaidBillingRepository extends MongoRepository<UserPrePai ...@@ -26,4 +26,13 @@ public interface UserPrePaidBillingRepository extends MongoRepository<UserPrePai
Page<UserPrePaidBilling> findByUsernameAndTimestampGreaterThanOrderByTimestamp(String username, long time, Pageable pageable); Page<UserPrePaidBilling> findByUsernameAndTimestampGreaterThanOrderByTimestamp(String username, long time, Pageable pageable);
Page<UserPrePaidBilling> findByAdministratorAndTimestampGreaterThanOrderByTimestamp(String administrator, long time, Pageable pageable);
Page<UserPrePaidBilling> findByUsernameAndTimestampGreaterThanAndChargeTypeOrderByTimestamp(String username, long time, int chargeType, Pageable pageable);
Page<UserPrePaidBilling> findByAdministratorAndTimestampGreaterThanAndChargeTypeOrderByTimestamp(String administrator, long time, int chargeType, Pageable pageable);
Page<UserPrePaidBilling> findByUsernameAndTimestampGreaterThanAndChargeTypeIsNotAndPayMethodOrderByTimestamp(String username, long time, int chargeType, int payMethod, Pageable pageable);
Page<UserPrePaidBilling> findByAdministratorAndTimestampGreaterThanAndChargeTypeIsNotAndPayMethodOrderByTimestamp(String administrator, long time, int chargeType, int payMethod, Pageable pageable);
} }
...@@ -66,7 +66,7 @@ public interface AccountService { ...@@ -66,7 +66,7 @@ public interface AccountService {
List<UserBillList> getUserBills(String name, Services services); List<UserBillList> getUserBills(String name, Services services);
Page<UserPrePaidBilling> getUserPrePaidBills(String name, UserPrePaidBillingRequestDto userPrePaidBillingRequestDto); PrePaidBillingPageResultDto getUserPrePaidBills(String name, UserPrePaidBillingRequestDto userPrePaidBillingRequestDto);
void resetPasswordWithOtp(UserDto user); void resetPasswordWithOtp(UserDto user);
......
...@@ -143,25 +143,42 @@ public class AccountServiceImpl implements AccountService { ...@@ -143,25 +143,42 @@ public class AccountServiceImpl implements AccountService {
} }
@Override @Override
public Page<UserPrePaidBilling> getUserPrePaidBills(String name, UserPrePaidBillingRequestDto userPrePaidBillingRequestDto) { public PrePaidBillingPageResultDto getUserPrePaidBills(String name, UserPrePaidBillingRequestDto userPrePaidBillingRequestDto) {
Account account = repository.findByName(name);
if (account == null)
throw new ClientRequestException(AccountErrorCode.NAMENOTEXIST);
if (userPrePaidBillingRequestDto.getAmount() > 100) if (userPrePaidBillingRequestDto.getAmount() > 100)
userPrePaidBillingRequestDto.setAmount(100); userPrePaidBillingRequestDto.setAmount(100);
Pageable pageable = PageRequest.of(userPrePaidBillingRequestDto.getPage(), userPrePaidBillingRequestDto.getAmount()); Pageable pageable = PageRequest.of(userPrePaidBillingRequestDto.getPage(), userPrePaidBillingRequestDto.getAmount());
long time = Instant.now().atZone(ZoneOffset.UTC).minusDays(userPrePaidBillingRequestDto.getDay()).toInstant().toEpochMilli(); long time = Instant.now().atZone(ZoneOffset.UTC).minusDays(userPrePaidBillingRequestDto.getDay()).toInstant().toEpochMilli();
Page<UserPrePaidBilling> userPrePaidBillings; Page<UserPrePaidBilling> userPrePaidBillings;
switch (userPrePaidBillingRequestDto.getTradeType()) { if (userPrePaidBillingRequestDto.getTradeType() == 1) {
case 0: if (account.getParent() != null)
userPrePaidBillings = prePaidBillingRepository.findByUsernameAndTimestampGreaterThanOrderByTimestamp(name, time, pageable); userPrePaidBillings = prePaidBillingRepository.findByUsernameAndTimestampGreaterThanAndChargeTypeOrderByTimestamp(name, time, 0, pageable);
break; else
case 1: userPrePaidBillings = prePaidBillingRepository.findByAdministratorAndTimestampGreaterThanAndChargeTypeOrderByTimestamp(name, time, 0, pageable);
} else if (userPrePaidBillingRequestDto.getTradeType() == 2 || userPrePaidBillingRequestDto.getTradeType() == 3 || userPrePaidBillingRequestDto.getTradeType() == 4) {
default: if (account.getParent() != null)
userPrePaidBillings = prePaidBillingRepository.findByUsernameAndTimestampGreaterThanAndChargeTypeIsNotAndPayMethodOrderByTimestamp(name, time, 0, 0, pageable);
else
userPrePaidBillings = prePaidBillingRepository.findByAdministratorAndTimestampGreaterThanAndChargeTypeIsNotAndPayMethodOrderByTimestamp(name, time, 0, 0, pageable);
} else {
if (account.getParent() != null)
userPrePaidBillings = prePaidBillingRepository.findByUsernameAndTimestampGreaterThanOrderByTimestamp(name, time, pageable); userPrePaidBillings = prePaidBillingRepository.findByUsernameAndTimestampGreaterThanOrderByTimestamp(name, time, pageable);
break; else
userPrePaidBillings = prePaidBillingRepository.findByAdministratorAndTimestampGreaterThanOrderByTimestamp(name, time, pageable);
} }
return userPrePaidBillings; PrePaidBillingPageResultDto prePaidBillingPageResultDto = new PrePaidBillingPageResultDto();
prePaidBillingPageResultDto.setBillingList(userPrePaidBillings.getContent());
PageInfo pageInfo = new PageInfo();
pageInfo.setTotalItems((int)userPrePaidBillings.getTotalElements());
pageInfo.setTotalPages(userPrePaidBillings.getTotalPages());
pageInfo.setCurrentPage(userPrePaidBillings.getNumber());
prePaidBillingPageResultDto.setBillingPage(pageInfo);
return prePaidBillingPageResultDto;
} }
@Override @Override
...@@ -189,6 +206,10 @@ public class AccountServiceImpl implements AccountService { ...@@ -189,6 +206,10 @@ public class AccountServiceImpl implements AccountService {
charge.setSuccess(true); charge.setSuccess(true);
UserPrePaidBilling bill = new UserPrePaidBilling(); UserPrePaidBilling bill = new UserPrePaidBilling();
if (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.setTradeNo(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ SmsUtils.createRandom(true, 4));
bill.setChargeType(requestDto.getChargeType()); bill.setChargeType(requestDto.getChargeType());
bill.setAmount(requestDto.getAmount()); bill.setAmount(requestDto.getAmount());
...@@ -201,7 +222,6 @@ public class AccountServiceImpl implements AccountService { ...@@ -201,7 +222,6 @@ public class AccountServiceImpl implements AccountService {
bill.setPrepaid(true); bill.setPrepaid(true);
bill.setTimestamp(Instant.now().toEpochMilli()); bill.setTimestamp(Instant.now().toEpochMilli());
final YearMonth lastmonth = YearMonth.now(); final YearMonth lastmonth = YearMonth.now();
int monthValue = lastmonth.getMonthValue(); int monthValue = lastmonth.getMonthValue();
......
...@@ -276,7 +276,6 @@ public class AdministratorServiceImpl implements AdministratorService { ...@@ -276,7 +276,6 @@ public class AdministratorServiceImpl implements AdministratorService {
userPrePaidBilling.setPrepaid(false); userPrePaidBilling.setPrepaid(false);
userPrePaidBilling.setChargeType(9); userPrePaidBilling.setChargeType(9);
userPrePaidBilling.setUnit("month"); userPrePaidBilling.setUnit("month");
userPrePaidBilling.setUser(userBilling.getUsername());
userPrePaidBilling.setUsername(userBilling.getUsername()); userPrePaidBilling.setUsername(userBilling.getUsername());
userPrePaidBillingRepository.save(userPrePaidBilling); userPrePaidBillingRepository.save(userPrePaidBilling);
......
...@@ -8,6 +8,7 @@ import com.alipay.api.request.AlipayTradeQueryRequest; ...@@ -8,6 +8,7 @@ import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradePagePayResponse; import com.alipay.api.response.AlipayTradePagePayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse; import com.alipay.api.response.AlipayTradeQueryResponse;
import com.edgec.browserbackend.account.exception.AccountErrorCode; import com.edgec.browserbackend.account.exception.AccountErrorCode;
import com.edgec.browserbackend.account.repository.AccountRepository;
import com.edgec.browserbackend.account.repository.UserBalanceRepository; import com.edgec.browserbackend.account.repository.UserBalanceRepository;
import com.edgec.browserbackend.account.repository.UserPaymentRepository; import com.edgec.browserbackend.account.repository.UserPaymentRepository;
import com.edgec.browserbackend.account.repository.UserPrePaidBillingRepository; import com.edgec.browserbackend.account.repository.UserPrePaidBillingRepository;
...@@ -57,6 +58,9 @@ public class PaymentServiceImpl implements PaymentService { ...@@ -57,6 +58,9 @@ public class PaymentServiceImpl implements PaymentService {
@Autowired @Autowired
private UserPrePaidBillingRepository userPrePaidBillingRepository; private UserPrePaidBillingRepository userPrePaidBillingRepository;
@Autowired
private AccountRepository accountRepository;
@Override @Override
public String wechatPayCallback(String tradno) { public String wechatPayCallback(String tradno) {
...@@ -156,6 +160,11 @@ public class PaymentServiceImpl implements PaymentService { ...@@ -156,6 +160,11 @@ public class PaymentServiceImpl implements PaymentService {
if (chargeType == 0) { if (chargeType == 0) {
UserPrePaidBilling bill = new UserPrePaidBilling(); UserPrePaidBilling bill = new UserPrePaidBilling();
Account account = accountRepository.findByName(byTradeNo.getUsername());
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.setTradeNo(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ SmsUtils.createRandom(true, 4));
bill.setChargeType(0); bill.setChargeType(0);
bill.setAmount(0); bill.setAmount(0);
...@@ -265,6 +274,11 @@ public class PaymentServiceImpl implements PaymentService { ...@@ -265,6 +274,11 @@ public class PaymentServiceImpl implements PaymentService {
if (chargeType == 0) { if (chargeType == 0) {
UserPrePaidBilling bill = new UserPrePaidBilling(); UserPrePaidBilling bill = new UserPrePaidBilling();
Account account = accountRepository.findByName(byTradeNo.getUsername());
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.setTradeNo(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())+ SmsUtils.createRandom(true, 4));
bill.setChargeType(0); bill.setChargeType(0);
bill.setAmount(0); bill.setAmount(0);
......
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