package com.xinquan.user.controller.client; import com.alibaba.nacos.common.utils.UuidUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xinquan.common.core.domain.R; import com.xinquan.common.core.utils.page.CollUtils; import com.xinquan.common.core.utils.page.PageDTO; import com.xinquan.common.core.web.domain.BaseModel; import com.xinquan.common.security.service.TokenService; import com.xinquan.common.security.utils.SecurityUtils; import com.xinquan.course.api.domain.Course; import com.xinquan.course.api.feign.RemoteCourseService; import com.xinquan.meditation.api.domain.Meditation; import com.xinquan.meditation.api.feign.RemoteMeditationService; import com.xinquan.order.api.domain.Order; import com.xinquan.order.api.feign.RemoteOrderService; import com.xinquan.system.api.domain.AppUser; import com.xinquan.system.api.domain.AppUserWalletRecord; import com.xinquan.system.api.domain.AppUserWithdraw; import com.xinquan.system.api.domain.vo.InviteRankListVO; import com.xinquan.system.api.domain.vo.OrderDetailVO; import com.xinquan.system.api.domain.vo.OrderListVO; import com.xinquan.system.api.model.LoginUser; import com.xinquan.user.api.domain.dto.UserBalanceDetailDTO; import com.xinquan.user.api.domain.dto.UserChildDTO; import com.xinquan.user.service.AppUserService; import com.xinquan.user.service.AppUserWalletRecordService; import com.xinquan.user.service.AppUserWithdrawService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.expression.spel.ast.OpNE; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; /** *

* 用户余额明细表 前端控制器 *

* * @author mitao * @since 2024-08-21 */ @RestController @RequestMapping("/client/app-user-wallet-record") public class ClientAppUserWalletRecordController { @Resource private AppUserService appUserService; @Resource private AppUserWalletRecordService walletRecordService; @Resource private AppUserWithdrawService appUserWithdrawService; @Resource private AppUserWalletRecordService appUserWalletRecordService; @Resource private RemoteOrderService remoteOrderService; @Resource private RemoteCourseService remoteCourseService; @Resource private RemoteMeditationService remoteMeditationService; // 用户获得分佣收益 新增一条余额明细记录 @PostMapping("/addBalanceRecord") public R addBalanceRecord(@RequestBody AppUserWalletRecord appUserWalletRecord) { appUserWalletRecordService.save(appUserWalletRecord); if(appUserWalletRecord.getReason().contains("分佣")){ AppUser byId = appUserService.getById(appUserWalletRecord.getAppUserId()); byId.setBalance(byId.getBalance().add(appUserWalletRecord.getAmount())); appUserService.updateById(byId); } if (appUserWalletRecord.getChangeType() == 2){ AppUser byId = appUserService.getById(appUserWalletRecord.getAppUserId()); byId.setBalance(byId.getBalance().subtract(appUserWalletRecord.getAmount())); appUserService.updateById(byId); } return R.ok(); } @PostMapping("/childUserList") @ApiOperation(value = "用户详情-下级用户列表",tags = "管理后台-用户管理") public R> childUserList(@RequestBody UserChildDTO dto) { String startTime = null; String endTime = null; if (org.springframework.util.StringUtils.hasLength(dto.getTime())){ String[] split = dto.getTime().split(" - "); startTime = split[0]+" 00:00:00"; endTime = split[1]+" 23:59:59"; } String userId = dto.getUid(); LambdaQueryWrapper appUserWalletRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); appUserWalletRecordLambdaQueryWrapper.between(startTime!=null,BaseModel::getCreateTime,startTime,endTime); appUserWalletRecordLambdaQueryWrapper.eq(AppUser::getInviteUserId, userId); appUserWalletRecordLambdaQueryWrapper.like(StringUtils.hasLength(dto.getCellPhone()),AppUser::getCellPhone,dto.getCellPhone()); appUserWalletRecordLambdaQueryWrapper.like(StringUtils.hasLength(dto.getNickName()),AppUser::getNickname,dto.getNickName()); appUserWalletRecordLambdaQueryWrapper.eq(StringUtils.hasLength(dto.getUserStatus()),AppUser::getUserStatus,dto.getUserStatus()); appUserWalletRecordLambdaQueryWrapper.orderByDesc(BaseModel::getCreateTime); Page page = appUserService .page(new Page<>(dto.getPageCurr(), dto.getPageSize()),appUserWalletRecordLambdaQueryWrapper); if (CollUtils.isEmpty(page.getRecords())){ PageDTO empty = PageDTO.empty(page); return R.ok(empty); } for (AppUser record : page.getRecords()) { // 查询该用户带来收益 List list = appUserWalletRecordService.lambdaQuery() .eq(AppUserWalletRecord::getAppUserId, userId) .eq(AppUserWalletRecord::getChildAppUserId, record.getId()).list(); BigDecimal bigDecimal = new BigDecimal("0"); record.setMoney(new BigDecimal("0")); for (AppUserWalletRecord appUserWalletRecord : list) { if (appUserWalletRecord.getAmount()!=null && appUserWalletRecord.getChangeType() == 1){ bigDecimal = bigDecimal.add(appUserWalletRecord.getAmount()); } record.setMoney(bigDecimal); } } return R.ok(PageDTO.of(page, AppUser.class)); } @PostMapping("/userBalanceList") @ApiOperation(value = "用户详情-余额明细",tags = "管理后台-用户管理") public R> userBalanceList(@RequestBody UserBalanceDetailDTO dto) { String startTime = null; String endTime = null; if (org.springframework.util.StringUtils.hasLength(dto.getTime())){ String[] split = dto.getTime().split(" - "); startTime = split[0]+" 00:00:00"; endTime = split[1]+" 23:59:59"; } String userId = dto.getUid(); LambdaQueryWrapper appUserWalletRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); appUserWalletRecordLambdaQueryWrapper.between(startTime!=null,BaseModel::getCreateTime,startTime,endTime); appUserWalletRecordLambdaQueryWrapper.eq(AppUserWalletRecord::getAppUserId, userId); appUserWalletRecordLambdaQueryWrapper.like(StringUtils.hasLength(dto.getReason()),AppUserWalletRecord::getReason,dto.getReason()); appUserWalletRecordLambdaQueryWrapper.orderByDesc(BaseModel::getCreateTime); Page page = walletRecordService .page(new Page<>(dto.getPageCurr(), dto.getPageSize()),appUserWalletRecordLambdaQueryWrapper); if (CollUtils.isEmpty(page.getRecords())){ PageDTO empty = PageDTO.empty(page); return R.ok(empty); } for (AppUserWalletRecord record : page.getRecords()) { if (record.getReason().equals("后台退款")){ record.setId(record.getOrderId()); } if (record.getReason().contains("课程")){ record.setId(record.getOrderId()); } if (record.getReason().contains("疗愈")){ record.setId(record.getOrderId()); } if (record.getReason().contains("会员")){ record.setId(record.getOrderId()); } } return R.ok(PageDTO.of(page, OrderListVO.class)); } @Autowired private TokenService tokenService; /** * 爱心助力榜单-分页 * * @param pageCurr 分页参数,当前页码 * @param pageSize 分页参数,每页数量 * @return 课程分页列表 */ @PostMapping("/balanceList") @ApiOperation(value = "余额明细列表",tags = "钱包") @ApiImplicitParams({ @ApiImplicitParam(name = "state", value = "1全部 2收入 3支出", dataType = "Integer", required = true), @ApiImplicitParam(value = "分页参数,当前页码", name = "pageCurr", required = true, dataType = "Integer"), @ApiImplicitParam(value = "分页参数,每页数量", name = "pageSize", required = true, dataType = "Integer") }) public R> balanceList(Integer state,Integer pageCurr, Integer pageSize) { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); LambdaQueryWrapper appUserWalletRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); if (state!=1){ appUserWalletRecordLambdaQueryWrapper.eq(AppUserWalletRecord::getChangeType, state-1); } appUserWalletRecordLambdaQueryWrapper.eq(AppUserWalletRecord::getAppUserId, userId); appUserWalletRecordLambdaQueryWrapper.ne(AppUserWalletRecord::getAmount, 0); appUserWalletRecordLambdaQueryWrapper.orderByDesc(BaseModel::getCreateTime); Page page = walletRecordService .page(new Page<>(pageCurr, pageSize),appUserWalletRecordLambdaQueryWrapper); if (CollUtils.isEmpty(page.getRecords())){ PageDTO empty = PageDTO.empty(page); return R.ok(empty); } for (AppUserWalletRecord record : page.getRecords()) { record.setUid(record.getId()+""); } return R.ok(PageDTO.of(page, OrderListVO.class)); } @PostMapping("/userBalanceDetail") @ApiOperation(value = "用户详情-余额明细-详情",tags = "管理后台-用户管理") @ApiImplicitParams({ @ApiImplicitParam(name = "uid", value = "uid", dataType = "Long", required = true), }) public R userBalanceDetail(String uid) { OrderDetailVO orderDetailVO = new OrderDetailVO(); AppUserWalletRecord byId = walletRecordService.getById(uid); if (byId.getOrderId()!=null){ if (byId.getReason().equals("提现")){ AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId()); orderDetailVO.setType("提现"); orderDetailVO.setRemark("银行卡提现"); orderDetailVO.setPayOrderNo(byId1.getSerialNo()); orderDetailVO.setWithdrawType(byId1.getWithdrawType()); orderDetailVO.setAmount(byId1.getAmount()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setPaymentTime(byId1.getCreateTime()); }else if (byId.getReason().equals("充值")){ Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData(); if (one!=null){ orderDetailVO.setType("充值"); orderDetailVO.setPayType(one.getPayType()); orderDetailVO.setPayOrderNo(one.getPayOrderNo()); if (one.getPayType()==1){ orderDetailVO.setRemark("微信支付"); }else if (one.getPayType()==2){ orderDetailVO.setRemark("支付宝支付"); }else if (one.getPayType() == 3){ orderDetailVO.setRemark("IOS内购"); } orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setAmount(byId.getAmount()); orderDetailVO.setPaymentTime(one.getPaymentTime()); return R.ok(orderDetailVO); } }else if (byId.getReason().equals("分佣收益")){ Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData(); if (byId.getChildAppUserId()!=null && one!=null){ orderDetailVO.setType("分佣"); orderDetailVO.setPayOrderNo(one.getPayOrderNo()); orderDetailVO.setPaymentTime(byId.getCreateTime()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setAmount(byId.getAmount()); orderDetailVO.setRemark("分佣收益"); if (one.getCommissionId()!=null){ AppUser appUserById = appUserService.getById(one.getCommissionId()); orderDetailVO.setUserName(appUserById.getNickname()); orderDetailVO.setAvatar(appUserById.getAvatar()); } return R.ok(orderDetailVO); } }else if (byId.getReason().equals("提现回退")){ AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId()); orderDetailVO.setType("提现回退"); orderDetailVO.setPayOrderNo(byId1.getSerialNo()); orderDetailVO.setWithdrawType(byId1.getWithdrawType()); orderDetailVO.setAmount(byId1.getAmount()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setPaymentTime(byId1.getUpdateTime()); orderDetailVO.setRemark(byId1.getReason()); return R.ok(orderDetailVO); } } return R.ok(orderDetailVO); } @PostMapping("/balanceDetail") @ApiOperation(value = "余额明细列表-查看详情",tags = "钱包") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "id", dataType = "Long", required = true), }) public R balanceDetail(Long id) { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); OrderDetailVO orderDetailVO = new OrderDetailVO(); AppUserWalletRecord byId = walletRecordService.getById(id); if (byId.getOrderId()!=null){ if (byId.getReason().contains("提现")){ AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId()); orderDetailVO.setType("提现"); orderDetailVO.setPayOrderNo(byId1.getSerialNo()); orderDetailVO.setWithdrawType(byId1.getWithdrawType()); orderDetailVO.setAmount(byId1.getAmount()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setPaymentTime(byId1.getUpdateTime()); orderDetailVO.setRemark("银行卡提现"); }else if (byId.getReason().equals("充值")){ Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData(); orderDetailVO.setType("充值"); orderDetailVO.setPayType(one.getPayType()); orderDetailVO.setPayOrderNo(one.getBizOrderNo()); orderDetailVO.setRemark(one.getRemark()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setAmount(byId.getAmount()); orderDetailVO.setPaymentTime(one.getPaymentTime()); if (one.getPayType()==1){ orderDetailVO.setRemark("微信支付"); }else if (one.getPayType()==2){ orderDetailVO.setRemark("支付宝支付"); }else if (one.getPayType() == 3){ orderDetailVO.setRemark("IOS内购"); } return R.ok(orderDetailVO); }else if (byId.getReason().equals("分佣收益")){ Order one = remoteOrderService.getOrderById(byId.getOrderId()).getData(); if (byId.getChildAppUserId()!=null && one!=null){ orderDetailVO.setType("分佣"); orderDetailVO.setPayOrderNo(one.getBizOrderNo()); orderDetailVO.setPaymentTime(byId.getCreateTime()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setAmount(byId.getAmount()); orderDetailVO.setRemark(one.getRemark()); orderDetailVO.setRemark("分佣收益"); if (one.getCommissionId()!=null){ AppUser appUserById = appUserService.getById(one.getAppUserId()); orderDetailVO.setUserName(appUserById.getNickname()); orderDetailVO.setAvatar(appUserById.getAvatar()); } return R.ok(orderDetailVO); } }else if (byId.getReason().equals("提现回退")){ AppUserWithdraw byId1 = appUserWithdrawService.getById(byId.getOrderId()); orderDetailVO.setType("提现回退"); orderDetailVO.setPayOrderNo(byId1.getSerialNo()); orderDetailVO.setWithdrawType(byId1.getWithdrawType()); orderDetailVO.setAmount(byId1.getAmount()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setPaymentTime(byId1.getUpdateTime()); orderDetailVO.setRemark(byId1.getReason()); return R.ok(orderDetailVO); }else if (byId.getReason().contains("课程")){ Order data = remoteOrderService.getOrderById(byId.getOrderId()).getData(); if (data!=null){ Course data1 = remoteCourseService.getCourseById(data.getBusinessId()).getData(); orderDetailVO.setType("课程购买"); orderDetailVO.setPayOrderNo(data.getBizOrderNo()); orderDetailVO.setAmount(data.getBalance()); orderDetailVO.setChangeType(byId.getChangeType()); orderDetailVO.setPaymentTime(data.getPaymentTime()); if (data1!=null)orderDetailVO.setRemark("课程购买【"+data1.getCourseTitle()+"】"); } return R.ok(orderDetailVO); } else if (byId.getReason().contains("疗愈")) { Order data = remoteOrderService.getOrderById(byId.getOrderId()).getData(); if (data!=null){ Meditation data1 = remoteMeditationService.getMeditationById(data.getBusinessId()).getData(); orderDetailVO.setType("疗愈购买"); orderDetailVO.setPayOrderNo(data.getBizOrderNo()); orderDetailVO.setAmount(data.getBalance()); orderDetailVO.setChangeType(2); orderDetailVO.setPaymentTime(data.getPaymentTime()); if (data1!=null)orderDetailVO.setRemark("疗愈购买【"+data1.getMeditationTitle()+"】"); } return R.ok(orderDetailVO); }else if (byId.getReason().contains("退款")){ Order data = remoteOrderService.getOrderById(byId.getOrderId()).getData(); if (data!=null){ orderDetailVO.setType("后台退款"); orderDetailVO.setPayOrderNo(data.getRefundCode()); orderDetailVO.setAmount(byId.getAmount()); orderDetailVO.setChangeType(1); orderDetailVO.setPaymentTime(data.getRefundTime()); switch (data.getOrderFrom()){ case 1: Meditation data1 = remoteMeditationService.getMeditationById(data.getBusinessId()).getData(); if (data1!=null)orderDetailVO.setRemark("疗愈购买【"+data1.getMeditationTitle()+"】"); break; case 2: Course data2 = remoteCourseService.getCourseById(data.getBusinessId()).getData(); if (data2!=null)orderDetailVO.setRemark("课程购买【"+data2.getCourseTitle()+"】"); break; } } } } return R.ok(orderDetailVO); } }