From dfcbfb5b1f7fd9a44979dd6933593abdf2ed166f Mon Sep 17 00:00:00 2001 From: phpcjl <phpcjl@gmail.com> Date: 星期三, 18 十二月 2024 19:55:12 +0800 Subject: [PATCH] 1 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java | 1 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java | 101 +++++++++++-------- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatistics.java | 27 +++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatisticsDetail.java | 49 +++++++++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java | 4 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java | 5 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java | 5 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java | 102 ++++++++++++++++++- 9 files changed, 242 insertions(+), 56 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java index 44f58b2..15ee0ab 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java @@ -81,4 +81,8 @@ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endTime; + @ApiModelProperty(value = "门店名称") + @TableField(exist = false) + private String shopName; + } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java index cdc150d..a0bb471 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java @@ -6,12 +6,13 @@ import com.ruoyi.other.api.factory.ShopBalanceStatementClientFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @FeignClient(contextId = "ShopBalanceStatementClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = ShopBalanceStatementClientFallbackFactory.class) public interface ShopBalanceStatementClient { - @PostMapping() - R<List<ShopBalanceStatement>> getList(ShopBalanceStatement shopBalanceStatement); + @PostMapping("/shop-balance-statement/getList") + R<List<ShopBalanceStatement>> getList(@RequestBody ShopBalanceStatement shopBalanceStatement); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java index 440d198..c1c56d4 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java @@ -6,6 +6,7 @@ import com.ruoyi.account.dto.BalanceQuery; import com.ruoyi.account.service.BalanceChangeRecordService; import com.ruoyi.account.vo.CommissionStatistics; +import com.ruoyi.account.vo.WalletStatistics; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.poi.ExcelUtil; import io.swagger.annotations.ApiOperation; @@ -23,54 +24,68 @@ @RestController @RequestMapping("/balanceChangeRecord") public class BalanceChangeRecordController { - - @Resource - private BalanceChangeRecordService balanceChangeRecordService; - - - /** - * 保存账户流水记录 - * @param balanceChangeRecord - * @return - */ - @PostMapping("/saveBalanceChangeRecord") - public R saveBalanceChangeRecord(@RequestBody BalanceChangeRecord balanceChangeRecord){ - balanceChangeRecordService.save(balanceChangeRecord); - return R.ok(); - } - @PostMapping("/page") - @ApiOperation(value = "余额变更明细", tags = {"后台"}) - public R<IPage<BalanceChangeRecord>> page(@RequestBody BalanceQuery agentQuery) { + @Resource + private BalanceChangeRecordService balanceChangeRecordService; - return R.ok(balanceChangeRecordService.pageList(agentQuery)); - } - /** - * 用户分佣统计 - */ - @GetMapping("/commissionStatistics") - @ApiOperation(value = "用户分佣统计", tags = "管理后台-财务统计-用户分佣统计") - public R<CommissionStatistics> commissionStatistics(@ApiParam("页码") @RequestParam Integer pageNum, - @ApiParam("每一页数据大小") Integer pageSize, - BalanceChangeRecord balanceChangeRecord) { - CommissionStatistics commissionStatistics1 = balanceChangeRecordService.commissionStatistics(Page.of(pageNum, pageSize), balanceChangeRecord); - return R.ok(commissionStatistics1); - } -// + /** + * 保存账户流水记录 + * + * @param balanceChangeRecord + * @return + */ + @PostMapping("/saveBalanceChangeRecord") + public R saveBalanceChangeRecord(@RequestBody BalanceChangeRecord balanceChangeRecord) { + balanceChangeRecordService.save(balanceChangeRecord); + return R.ok(); + } + + @PostMapping("/page") + @ApiOperation(value = "余额变更明细", tags = {"后台"}) + public R<IPage<BalanceChangeRecord>> page(@RequestBody BalanceQuery agentQuery) { + + return R.ok(balanceChangeRecordService.pageList(agentQuery)); + } + + /** + * 用户分佣统计 + */ + @GetMapping("/commissionStatistics") + @ApiOperation(value = "用户分佣统计", tags = "管理后台-财务统计-用户分佣统计") + public R<CommissionStatistics> commissionStatistics(@ApiParam("页码") @RequestParam Integer pageNum, + @ApiParam("每一页数据大小") Integer pageSize, + BalanceChangeRecord balanceChangeRecord) { + CommissionStatistics commissionStatistics1 = balanceChangeRecordService.commissionStatistics(Page.of(pageNum, pageSize), balanceChangeRecord); + return R.ok(commissionStatistics1); + } + + // // /** // * 导出用户分佣统计 // */ - @GetMapping("/commissionExport") - @ApiOperation(value = "用户分佣统计导出", tags = "管理后台-财务统计-用户分佣统计") - public void commissionExport(HttpServletResponse response, BalanceChangeRecord balanceChangeRecord) { - CommissionStatistics commissionStatistics1 = balanceChangeRecordService.commissionStatistics(Page.of(1, Integer.MAX_VALUE), balanceChangeRecord); - IPage<BalanceChangeRecord> userPointPage = commissionStatistics1.getUserPointPage(); - List<BalanceChangeRecord> userPointList = userPointPage.getRecords(); - ExcelUtil<BalanceChangeRecord> util = new ExcelUtil<>(BalanceChangeRecord.class); - util.exportExcel(response, userPointList, "用户分佣统计"); - } + @GetMapping("/commissionExport") + @ApiOperation(value = "用户分佣统计导出", tags = "管理后台-财务统计-用户分佣统计") + public void commissionExport(HttpServletResponse response, BalanceChangeRecord balanceChangeRecord) { + CommissionStatistics commissionStatistics1 = balanceChangeRecordService.commissionStatistics(Page.of(1, Integer.MAX_VALUE), balanceChangeRecord); + IPage<BalanceChangeRecord> userPointPage = commissionStatistics1.getUserPointPage(); + List<BalanceChangeRecord> userPointList = userPointPage.getRecords(); + ExcelUtil<BalanceChangeRecord> util = new ExcelUtil<>(BalanceChangeRecord.class); + util.exportExcel(response, userPointList, "用户分佣统计"); + } - - + + /** + * 钱包统计 + */ + @GetMapping("/walletStatistics") + @ApiOperation(value = "钱包统计", tags = "管理后台-财务统计-钱包统计") + public R<WalletStatistics> walletStatistics(@ApiParam("页码") @RequestParam Integer pageNum, + @ApiParam("每一页数据大小") Integer pageSize, + BalanceChangeRecord balanceChangeRecord) { + WalletStatistics walletStatistics = balanceChangeRecordService.walletStatistics(Page.of(pageNum, pageSize), balanceChangeRecord); + return R.ok(walletStatistics); + } + + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java index a1cf54f..9727203 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java @@ -6,9 +6,13 @@ import com.ruoyi.account.api.model.BalanceChangeRecord; import com.ruoyi.account.dto.BalanceQuery; import com.ruoyi.account.vo.CommissionStatistics; +import com.ruoyi.account.vo.WalletStatistics; public interface BalanceChangeRecordService extends IService<BalanceChangeRecord> { IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery); CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord); + + WalletStatistics walletStatistics(Page<BalanceChangeRecord> of, BalanceChangeRecord balanceChangeRecord); + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java index 1a3ca07..4d0426c 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java @@ -1,26 +1,27 @@ package com.ruoyi.account.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.account.api.model.AppUser; import com.ruoyi.account.api.model.BalanceChangeRecord; -import com.ruoyi.account.api.model.UserClickLog; -import com.ruoyi.account.api.model.WithdrawalRequests; import com.ruoyi.account.dto.BalanceQuery; import com.ruoyi.account.mapper.BalanceChangeRecordMapper; -import com.ruoyi.account.service.AppUserService; import com.ruoyi.account.service.BalanceChangeRecordService; import com.ruoyi.account.vo.CommissionStatistics; -import com.ruoyi.common.core.utils.StringUtils; -import com.ruoyi.other.api.domain.ShopPoint; +import com.ruoyi.account.vo.WalletStatistics; +import com.ruoyi.account.vo.WalletStatisticsDetail; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.other.api.domain.ShopBalanceStatement; +import com.ruoyi.other.api.feignClient.ShopBalanceStatementClient; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -28,7 +29,7 @@ @Service public class BalanceChangeRecordServiceImpl extends ServiceImpl<BalanceChangeRecordMapper, BalanceChangeRecord> implements BalanceChangeRecordService { @Resource - private AppUserService appUserService; + private ShopBalanceStatementClient shopBalanceStatementClient; @Override public IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery) { @@ -51,4 +52,87 @@ IPage<BalanceChangeRecord> balanceChangeRecordIPage = this.baseMapper.queryCommissionStatistics(page, balanceChangeRecord); return new CommissionStatistics(totalCommission, balanceChangeRecordIPage); } + + @Override + public WalletStatistics walletStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord) { + ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement(); + shopBalanceStatement.setType(4); + + R<List<ShopBalanceStatement>> r; + try { + r = shopBalanceStatementClient.getList(shopBalanceStatement); + } catch (Exception e) { + log.error("获取店铺余额对账单列表时出错", e); + return null; + } + + if (R.isError(r)) { + return null; + } + + List<BalanceChangeRecord> balanceChangeRecordList = this.baseMapper.selectBalanceChangeRecordList(balanceChangeRecord); + + List<WalletStatisticsDetail> walletStatisticsDetailList = new ArrayList<>(); + for (BalanceChangeRecord changeRecord : balanceChangeRecordList) { + WalletStatisticsDetail walletStatisticsDetail = new WalletStatisticsDetail(); + BeanUtils.copyBeanProp(walletStatisticsDetail, changeRecord); + walletStatisticsDetailList.add(walletStatisticsDetail); + } + + walletStatisticsDetailList.addAll(r.getData().stream().map(this::createWalletStatisticsDetail).collect(Collectors.toList())); + + // 按时间排序(倒序) + walletStatisticsDetailList.sort(Comparator.comparing(WalletStatisticsDetail::getCreateTime).reversed()); + + long current = page.getCurrent(); + long size = page.getSize(); + int fromIndex = (int) (current - 1); + int toIndex = (int) Math.min(fromIndex + size, walletStatisticsDetailList.size()); + + if (fromIndex < 0 || toIndex > walletStatisticsDetailList.size()) { + throw new ServiceException("页面参数无效"); + } + + List<WalletStatisticsDetail> walletStatisticsDetailList2 = walletStatisticsDetailList.subList(fromIndex, toIndex); + + + Map<Integer, BigDecimal> shopCommissionMap = walletStatisticsDetailList.stream() + .collect(Collectors.groupingBy( + WalletStatisticsDetail::getChangeType, + Collectors.reducing( + BigDecimal.ZERO, + WalletStatisticsDetail::getChangeAmount, + BigDecimal::add + ) + )); + + BigDecimal totalRecharge = shopCommissionMap.get(1); + BigDecimal totalWithdraw = shopCommissionMap.get(2); + BigDecimal totalShopWithdraw = shopCommissionMap.get(7); + + + WalletStatistics walletStatistics = new WalletStatistics(); + Page<WalletStatisticsDetail> page1 = new Page<>(); + page1.setRecords(walletStatisticsDetailList2); + page1.setTotal(walletStatisticsDetailList.size()); + page1.setCurrent(current); + page1.setSize(size); + walletStatistics.setPage(page1); + walletStatistics.setTotalRecharge(totalRecharge); + walletStatistics.setTotalWithdraw(totalWithdraw); + walletStatistics.setTotalShopWithdraw(totalShopWithdraw); + return walletStatistics; + } + + private WalletStatisticsDetail createWalletStatisticsDetail(ShopBalanceStatement item) { + WalletStatisticsDetail walletStatisticsDetail = new WalletStatisticsDetail(); + walletStatisticsDetail.setShopName(item.getShopName()); + walletStatisticsDetail.setUserName(item.getShopManagerName()); + walletStatisticsDetail.setUserPhone(item.getPhone()); + walletStatisticsDetail.setChangeType(4); + walletStatisticsDetail.setCreateTime(item.getCreateTime()); + walletStatisticsDetail.setChangeAmount(item.getVariableAmount()); + return walletStatisticsDetail; + } + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatistics.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatistics.java new file mode 100644 index 0000000..c2681cb --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatistics.java @@ -0,0 +1,27 @@ +package com.ruoyi.account.vo; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class WalletStatistics { + + /** + * 用户充值总金额 + */ + private BigDecimal totalRecharge; + + /** + * 用户提现总金额 + */ + private BigDecimal totalWithdraw; + + /** + * 门店提现总金额 + */ + private BigDecimal totalShopWithdraw; + + private IPage<WalletStatisticsDetail> page; +} diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatisticsDetail.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatisticsDetail.java new file mode 100644 index 0000000..76215da --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletStatisticsDetail.java @@ -0,0 +1,49 @@ +package com.ruoyi.account.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class WalletStatisticsDetail { + /** + * 门店名称 + */ + @ApiModelProperty(value = "门店名称") + private String shopName; + + /** + * 用户姓名 + */ + @ApiModelProperty(value = "用户姓名") + private String userName; + + /** + * 联系电话 + */ + @ApiModelProperty(value = "联系电话") + private String userPhone; + + @ApiModelProperty("类型:1充值2提现3红包4分佣5商城购物6订单取消回退7门店提现") + @Excel(name = "变更类型", readConverterExp = "1=充值,2=提现,3=红包,4=分佣,5=商城购物,6=订单取消回退,7=门店提现") + private Integer changeType; + + /** + * 变更时间 + */ + @ApiModelProperty(value = "变更时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + /** + * 变更数量 + */ + @ApiModelProperty(value = "变更数量") + private BigDecimal changeAmount; +} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java index 9d2c249..616be9e 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java @@ -8,6 +8,7 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.other.api.domain.ShopBalanceStatement; +import com.ruoyi.other.mapper.ShopBalanceStatementMapper; import com.ruoyi.other.service.ShopBalanceStatementService; import com.ruoyi.other.vo.ShopCommissionStatisticsVO; import io.swagger.annotations.Api; @@ -33,6 +34,8 @@ public class ShopBalanceStatementController { @Resource private ShopBalanceStatementService shopBalanceStatementService; + @Resource + private ShopBalanceStatementMapper shopBalanceStatementMapper; /** * 门店分佣统计 @@ -62,7 +65,7 @@ @PostMapping("/getList") public R<List<ShopBalanceStatement>> getList(@RequestBody ShopBalanceStatement shopBalanceStatement){ - return R.ok(); + return R.ok(shopBalanceStatementMapper.selectShopBalanceStatementList(shopBalanceStatement)); } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java index e0b3725..fa5bbb4 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java @@ -22,5 +22,4 @@ List<ShopBalanceStatement> selectShopBalanceStatementList(@Param("bs") ShopBalanceStatement shopBalanceStatement); - } -- Gitblit v1.7.1