|
@@ -411,180 +411,7 @@ public class LiveController extends AppBaseController {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * 重建公司余额
|
|
|
|
|
- * 清理所有公司余额,删除log_type为3,4的记录,根据其他日志重新计算,然后根据已完成订单添加余额,根据已退款订单减去余额
|
|
|
|
|
- */
|
|
|
|
|
- @ApiOperation("重建公司余额")
|
|
|
|
|
- @PostMapping("/rebuildCompanyBalance")
|
|
|
|
|
- @Transactional
|
|
|
|
|
- public R rebuildCompanyBalance() {
|
|
|
|
|
- try {
|
|
|
|
|
- log.info("开始重建公司余额");
|
|
|
|
|
-
|
|
|
|
|
- // 1. 清理所有公司余额
|
|
|
|
|
- List<Company> allCompanies = companyService.selectCompanyList(new Company());
|
|
|
|
|
- for (Company company : allCompanies) {
|
|
|
|
|
- company.setMoney(BigDecimal.ZERO);
|
|
|
|
|
- companyMapper.updateCompany(company);
|
|
|
|
|
- }
|
|
|
|
|
- log.info("已清理所有公司余额,共{}家公司", allCompanies.size());
|
|
|
|
|
-
|
|
|
|
|
- // 2. 删除所有company_money_log中log_type是3,4的记录
|
|
|
|
|
- CompanyMoneyLogs queryLog = new CompanyMoneyLogs();
|
|
|
|
|
- queryLog.setLogsType(3);
|
|
|
|
|
- List<CompanyMoneyLogs> logs3 = companyMoneyLogsService.selectCompanyMoneyLogsList(queryLog);
|
|
|
|
|
- queryLog.setLogsType(4);
|
|
|
|
|
- List<CompanyMoneyLogs> logs4 = companyMoneyLogsService.selectCompanyMoneyLogsList(queryLog);
|
|
|
|
|
-
|
|
|
|
|
- int deleteCount3 = 0;
|
|
|
|
|
- int deleteCount4 = 0;
|
|
|
|
|
- if (logs3 != null && !logs3.isEmpty()) {
|
|
|
|
|
- Long[] ids3 = logs3.stream().map(CompanyMoneyLogs::getLogsId).toArray(Long[]::new);
|
|
|
|
|
- deleteCount3 = companyMoneyLogsService.deleteCompanyMoneyLogsByIds(ids3);
|
|
|
|
|
- }
|
|
|
|
|
- if (logs4 != null && !logs4.isEmpty()) {
|
|
|
|
|
- Long[] ids4 = logs4.stream().map(CompanyMoneyLogs::getLogsId).toArray(Long[]::new);
|
|
|
|
|
- deleteCount4 = companyMoneyLogsService.deleteCompanyMoneyLogsByIds(ids4);
|
|
|
|
|
- }
|
|
|
|
|
- log.info("已删除log_type为3的记录{}条,log_type为4的记录{}条", deleteCount3, deleteCount4);
|
|
|
|
|
-
|
|
|
|
|
- // 3. 根据其他的logs日志,添加和删除公司余额(重新计算余额)
|
|
|
|
|
- CompanyMoneyLogs allLogsQuery = new CompanyMoneyLogs();
|
|
|
|
|
- List<CompanyMoneyLogs> allOtherLogs = companyMoneyLogsService.selectCompanyMoneyLogsList(allLogsQuery);
|
|
|
|
|
- if (allOtherLogs != null && !allOtherLogs.isEmpty()) {
|
|
|
|
|
- // 按公司ID分组处理
|
|
|
|
|
- Map<Long, List<CompanyMoneyLogs>> logsByCompany = allOtherLogs.stream()
|
|
|
|
|
- .filter(log -> log.getLogsType() != null && log.getLogsType() != 3 && log.getLogsType() != 4)
|
|
|
|
|
- .collect(java.util.stream.Collectors.groupingBy(CompanyMoneyLogs::getCompanyId));
|
|
|
|
|
-
|
|
|
|
|
- for (Map.Entry<Long, List<CompanyMoneyLogs>> entry : logsByCompany.entrySet()) {
|
|
|
|
|
- Long companyId = entry.getKey();
|
|
|
|
|
- List<CompanyMoneyLogs> companyLogs = entry.getValue();
|
|
|
|
|
-
|
|
|
|
|
- // 按创建时间排序
|
|
|
|
|
- companyLogs.sort((a, b) -> {
|
|
|
|
|
- if (a.getCreateTime() == null && b.getCreateTime() == null) return 0;
|
|
|
|
|
- if (a.getCreateTime() == null) return -1;
|
|
|
|
|
- if (b.getCreateTime() == null) return 1;
|
|
|
|
|
- return a.getCreateTime().compareTo(b.getCreateTime());
|
|
|
|
|
- });
|
|
|
|
|
-
|
|
|
|
|
- Company company = companyMapper.selectCompanyByIdForUpdate(companyId);
|
|
|
|
|
- if (company != null) {
|
|
|
|
|
- BigDecimal currentBalance = BigDecimal.ZERO;
|
|
|
|
|
- for (CompanyMoneyLogs log : companyLogs) {
|
|
|
|
|
- currentBalance = currentBalance.add(log.getMoney());
|
|
|
|
|
- }
|
|
|
|
|
- company.setMoney(currentBalance);
|
|
|
|
|
- companyMapper.updateCompany(company);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- log.info("已根据其他日志重新计算公司余额,共处理{}家公司", logsByCompany.size());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 4. 查询商城和直播订单,查询已完成的订单(status=3),把公司余额进行添加
|
|
|
|
|
- // 查询商城已完成订单
|
|
|
|
|
- FsStoreOrderScrm storeOrderQuery = new FsStoreOrderScrm();
|
|
|
|
|
- storeOrderQuery.setStatus(3);
|
|
|
|
|
- List<FsStoreOrderScrm> completedStoreOrders = fsStoreOrderScrmService.selectFsStoreOrderList(storeOrderQuery);
|
|
|
|
|
- int storeOrderCount = 0;
|
|
|
|
|
- if (completedStoreOrders != null && !completedStoreOrders.isEmpty()) {
|
|
|
|
|
- for (FsStoreOrderScrm order : completedStoreOrders) {
|
|
|
|
|
- if (order.getCompanyId() != null && order.getCompanyId() > 0 &&
|
|
|
|
|
- order.getPayDelivery() != null && order.getPayDelivery().compareTo(BigDecimal.ZERO) == 0 &&
|
|
|
|
|
- (order.getTuiMoneyStatus() == null || order.getTuiMoneyStatus() != 1)) {
|
|
|
|
|
- try {
|
|
|
|
|
- companyService.addCompanyMoney(order);
|
|
|
|
|
- storeOrderCount++;
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("添加商城订单{}的公司余额失败: {}", order.getOrderCode(), e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- log.info("已处理商城已完成订单{}条,成功添加公司余额{}条", completedStoreOrders.size(), storeOrderCount);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 查询直播已完成订单
|
|
|
|
|
- LiveOrder liveOrderQuery = new LiveOrder();
|
|
|
|
|
- liveOrderQuery.setStatus(3);
|
|
|
|
|
- List<LiveOrder> completedLiveOrders = liveOrderService.selectLiveOrderList(liveOrderQuery);
|
|
|
|
|
- int liveOrderCount = 0;
|
|
|
|
|
- if (completedLiveOrders != null && !completedLiveOrders.isEmpty()) {
|
|
|
|
|
- for (LiveOrder order : completedLiveOrders) {
|
|
|
|
|
- if (order.getCompanyId() != null && order.getCompanyId() > 0) {
|
|
|
|
|
- try {
|
|
|
|
|
- companyService.addCompanyMoney(order);
|
|
|
|
|
- liveOrderCount++;
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("添加直播订单{}的公司余额失败: {}", order.getOrderCode(), e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- log.info("已处理直播已完成订单{}条,成功添加公司余额{}条", completedLiveOrders.size(), liveOrderCount);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 5. 查询所有已完成退款的订单,按照特定逻辑完成订单退款佣金
|
|
|
|
|
- // 查询商城已退款订单
|
|
|
|
|
- storeOrderQuery = new FsStoreOrderScrm();
|
|
|
|
|
- // 根据需求,查询tuiMoneyStatus=1的已退款订单
|
|
|
|
|
- storeOrderQuery.setTuiMoneyStatus(1);
|
|
|
|
|
- List<FsStoreOrderScrm> refundedStoreOrders = fsStoreOrderScrmService.selectFsStoreOrderList(storeOrderQuery);
|
|
|
|
|
- int refundStoreOrderCount = 0;
|
|
|
|
|
- if (refundedStoreOrders != null && !refundedStoreOrders.isEmpty()) {
|
|
|
|
|
- for (FsStoreOrderScrm order : refundedStoreOrders) {
|
|
|
|
|
- // 减去公司收入
|
|
|
|
|
- if (order.getCompanyId() != null && order.getCompanyId() > 0 &&
|
|
|
|
|
- order.getTuiMoneyStatus() != null && order.getTuiMoneyStatus() == 1) {
|
|
|
|
|
- try {
|
|
|
|
|
- companyService.subCompanyMoney(order);
|
|
|
|
|
- refundStoreOrderCount++;
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("处理商城退款订单{}的公司余额失败: {}", order.getOrderCode(), e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- log.info("已处理商城退款订单{}条,成功减去公司余额{}条", refundedStoreOrders.size(), refundStoreOrderCount);
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- // 6. 查询所有已完成退款的订单,按照特定逻辑完成订单退款佣金
|
|
|
|
|
- // 查询直播已退款订单
|
|
|
|
|
- liveOrderQuery = new LiveOrder();
|
|
|
|
|
- // 根据需求,查询tuiMoneyStatus=1的已退款订单
|
|
|
|
|
- liveOrderQuery.setTuiMoneyStatus(1);
|
|
|
|
|
- List<LiveOrder> refundedLiveOrders = liveOrderMapper.selectLiveOrderList(liveOrderQuery);
|
|
|
|
|
- int refundLiveOrderCount = 0;
|
|
|
|
|
- if (refundedLiveOrders != null && !refundedLiveOrders.isEmpty()) {
|
|
|
|
|
- for (LiveOrder order : refundedLiveOrders) {
|
|
|
|
|
- // 减去公司收入
|
|
|
|
|
- if (order.getCompanyId() != null && order.getCompanyId() > 0 &&
|
|
|
|
|
- order.getTuiMoneyStatus() != null && order.getTuiMoneyStatus() == 1) {
|
|
|
|
|
- try {
|
|
|
|
|
- companyService.subLiveCompanyMoney(order);
|
|
|
|
|
- refundLiveOrderCount++;
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("处理直播退款订单{}的公司余额失败: {}", order.getOrderCode(), e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- log.info("已处理直播退款订单{}条,成功减去公司余额{}条", refundedLiveOrders.size(), refundLiveOrderCount);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- log.info("重建公司余额完成");
|
|
|
|
|
- return R.ok()
|
|
|
|
|
- .put("message", "重建公司余额完成")
|
|
|
|
|
- .put("清理公司数", allCompanies.size())
|
|
|
|
|
- .put("删除日志数", deleteCount3 + deleteCount4)
|
|
|
|
|
- .put("商城已完成订单处理数", storeOrderCount)
|
|
|
|
|
- .put("直播已完成订单处理数", liveOrderCount)
|
|
|
|
|
- .put("商城退款订单处理数", refundStoreOrderCount)
|
|
|
|
|
- .put("直播退款订单处理数", refundLiveOrderCount);
|
|
|
|
|
-
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- log.error("重建公司余额失败", e);
|
|
|
|
|
- return R.error("重建公司余额失败: " + e.getMessage());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|