package com.dsh.account.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.account.entity.RechargeRecords; import com.dsh.account.entity.TAppUser; import com.dsh.account.entity.VipPayment; import com.dsh.account.model.IncomeQuery; import com.dsh.account.model.dto.VipPaymentDto; import com.dsh.account.model.dto.VipRefundDto; import com.dsh.account.model.query.RechargeRecordsQuery; import com.dsh.account.model.vo.RechargeRecordsVO; import com.dsh.account.model.vo.VipPaymentListVO; import com.dsh.account.service.*; import io.swagger.models.auth.In; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 充值记录控制器 */ @RestController @RequestMapping("") public class FinanceController { @Autowired private RechargeRecordsService rechargeRecordsService; @Autowired private IVipPaymentService vipPaymentService; @Autowired private TAppUserService appUserService; /** * 充值记录列表数据 */ @ResponseBody @RequestMapping("/finance/rechargeList") public List rechargeList(@RequestBody RechargeRecordsQuery query) { List rechargeRecordsVOS = rechargeRecordsService.rechargeList(query); for (RechargeRecordsVO rechargeRecordsVO : rechargeRecordsVOS) { TAppUser byId = appUserService.getById(rechargeRecordsVO.getAppUserId()); if (byId == null) continue; Date vipEndTime = byId.getVipEndTime(); if (vipEndTime == null) { rechargeRecordsVO.setType(2); continue; } if (rechargeRecordsVO.getPayTime().after(vipEndTime)) { rechargeRecordsVO.setType(2); } else { rechargeRecordsVO.setType(1); } } return rechargeRecordsVOS; } /** * 数据统计-充值记录列表数据 */ @ResponseBody @RequestMapping("/finance/rechargeList1") public List rechargeList1(@RequestBody RechargeRecordsQuery query) { List payStatus = rechargeRecordsService.list(new QueryWrapper().eq("payStatus", 2)); for (RechargeRecords list : payStatus) { TAppUser byId = appUserService.getById(list.getAppUserId()); Integer addUserId = byId.getAddUserId(); } return payStatus; } /** * 加入会员列表数据 */ @ResponseBody @RequestMapping("/finance/vipPaymentList") public List registrationList(@RequestBody IncomeQuery query) { return rechargeRecordsService.listAll(query); } /** * 退费 */ @ResponseBody @RequestMapping("/finance/refund") public String refund(@RequestBody VipRefundDto vipRefundDto) throws ParseException { VipPayment vipPayment = vipPaymentService.getById(vipRefundDto.getId()); if (vipPayment==null){ return "500"; } Integer appUserId = vipPayment.getAppUserId(); TAppUser appUser = appUserService.getById(appUserId); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date parse = simpleDateFormat.parse(vipRefundDto.getEndTime() + " 00:00:00"); appUser.setVipEndTime( parse); if (parse.before(new Date())){ appUser.setIsVip(0); } appUserService.updateById(appUser); vipPayment.setState(3); vipPaymentService.updateById(vipPayment); return "200"; } @ResponseBody @PostMapping("/finance/vipPayment") List vipPayment(@RequestBody VipPaymentDto vipPaymentDto){ List vipPaymentListVOS = new ArrayList<>(); List payStatus = new ArrayList<>(); payStatus.add(2); LambdaQueryWrapper vipPaymentLambdaQueryWrapper = new LambdaQueryWrapper<>(); vipPaymentLambdaQueryWrapper.in(vipPaymentDto.getUserIds()!=null&&!vipPaymentDto.getUserIds().isEmpty(),VipPayment::getAppUserId, vipPaymentDto.getUserIds()); vipPaymentLambdaQueryWrapper.in(vipPaymentDto.getVipIds()!=null&&!vipPaymentDto.getVipIds().isEmpty(),VipPayment::getVipId, vipPaymentDto.getVipIds()); vipPaymentLambdaQueryWrapper.in(VipPayment::getPayStatus,payStatus); vipPaymentLambdaQueryWrapper.ge(StringUtils.hasLength(vipPaymentDto.getStartTime()), VipPayment::getInsertTime, vipPaymentDto.getStartTime()); vipPaymentLambdaQueryWrapper.le(StringUtils.hasLength(vipPaymentDto.getEndTime()), VipPayment::getInsertTime, vipPaymentDto.getEndTime()); if (vipPaymentDto.getIsRefund()!=null&&vipPaymentDto.getIsRefund()==1){ payStatus.add(3); } vipPaymentLambdaQueryWrapper.orderByDesc(VipPayment::getInsertTime); List list = vipPaymentService.list(vipPaymentLambdaQueryWrapper); // 使用 Stream + 手动拷贝提升性能和可读性(或使用 MapStruct) vipPaymentListVOS = list.stream().map(vipDetail -> { VipPaymentListVO vo = new VipPaymentListVO(); BeanUtils.copyProperties(vipDetail,vo); // 注意参数顺序是否正确 return vo; }).collect(Collectors.toList()); for (VipPaymentListVO vipPaymentListVO : vipPaymentListVOS) { if (vipPaymentListVO.getPayStatus()==2){ vipPaymentListVO.setIsRefund(0); }else { vipPaymentListVO.setIsRefund(1); } } return vipPaymentListVOS; } }