package com.xinquan.user.controller.client; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; 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.WebUtils; import com.xinquan.common.core.utils.page.CollUtils; import com.xinquan.common.core.utils.page.PageDTO; import com.xinquan.common.log.annotation.Log; import com.xinquan.common.log.enums.BusinessType; import com.xinquan.common.security.service.TokenService; import com.xinquan.common.security.utils.SecurityUtils; import com.xinquan.meditation.api.feign.RemoteMeditationService; import com.xinquan.system.api.RemoteUserService; import com.xinquan.system.api.domain.*; import com.xinquan.system.api.model.LoginUser; import com.xinquan.user.api.domain.dto.OrderListDTO; import com.xinquan.user.api.domain.dto.PrizeRecordDTO; import com.xinquan.user.domain.export.PrizeExport; import com.xinquan.user.domain.export.WithdrawExport; import com.xinquan.user.service.AppUserService; import com.xinquan.user.service.PrizeRedemptionRecordService; import com.xinquan.user.service.PrizeService; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** *

* 奖品兑换记录表 前端控制器 *

* * @author mitao * @since 2024-08-21 */ @RestController @RequestMapping("/client/prize-redemption-record") public class ClientPrizeRedemptionRecordController { @Resource private PrizeService prizeService; @Resource private PrizeRedemptionRecordService prizeRedemptionRecordService; @Resource private AppUserService appUserService; @Resource private RemoteUserService remoteUserService; @PostMapping("/getPrizeRecordCount") public R getPrizeRecordCount(){ List list = prizeRedemptionRecordService.lambdaQuery() .eq(PrizeRedemptionRecord::getStatus, 1).list(); return R.ok(list.size()+""); } @ApiOperation(value = "兑换记录管理导出", tags = {"管理后台-兑换记录管理"}) @PutMapping("/export") public void export(@RequestBody PrizeRecordDTO courseDTO){ String startTime = null; String endTime = null; if (org.springframework.util.StringUtils.hasLength(courseDTO.getTime())){ String[] split = courseDTO.getTime().split(" - "); startTime = split[0]+" 00:00:00"; endTime = split[1]+" 23:59:59"; } List longs = new ArrayList<>(); LambdaQueryWrapper courseLambdaQueryWrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasLength(courseDTO.getIds())){ courseLambdaQueryWrapper.in(PrizeRedemptionRecord::getId, Arrays.asList(courseDTO.getIds().split(","))); } if (startTime!=null){ courseLambdaQueryWrapper.between(PrizeRedemptionRecord::getCreateTime, startTime, endTime); } if (courseDTO.getStatus()!=null){ courseLambdaQueryWrapper.eq(PrizeRedemptionRecord::getStatus, courseDTO.getStatus()); } courseLambdaQueryWrapper.orderByDesc(PrizeRedemptionRecord::getCreateTime); if (org.springframework.util.StringUtils.hasLength(courseDTO.getUserNameOrPhone())){ List collect = appUserService.lambdaQuery().like(AppUser::getNickname, courseDTO.getUserNameOrPhone()).list() .stream().map(AppUser::getId).collect(Collectors.toList()); longs.addAll(collect); List collect1 = appUserService.lambdaQuery().like(AppUser::getCellPhone, courseDTO.getUserNameOrPhone()).list() .stream().map(AppUser::getId).collect(Collectors.toList()); longs.addAll(collect1); if (longs.isEmpty()){ longs.add(-1L); } courseLambdaQueryWrapper.in(PrizeRedemptionRecord::getAppUserId, longs); } if (org.springframework.util.StringUtils.hasLength(courseDTO.getName())){ List collect = prizeService.lambdaQuery().like(Prize::getName, courseDTO.getName()).list() .stream().map(Prize::getId).collect(Collectors.toList()); if (collect.isEmpty()){ collect.add(-1L); } courseLambdaQueryWrapper.in(PrizeRedemptionRecord::getPrizeId, collect); } List prizeExports = new ArrayList<>(); List page = prizeRedemptionRecordService.list(courseLambdaQueryWrapper); for (PrizeRedemptionRecord record : page) { Prize byId = prizeService.getById(record.getPrizeId()); record.setUid(record.getId().toString()); AppUser byId1 = appUserService.getById(record.getAppUserId()); PrizeExport prizeExport = new PrizeExport(); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String format = df.format(record.getCreateTime()); prizeExport.setCreateTime(format); if (Objects.nonNull(byId1)){ record.setUserName(byId1.getNickname()); record.setAvatar(byId1.getAvatar()); record.setCellPhone(byId1.getCellPhone()); prizeExport.setUserName(byId1.getNickname()); prizeExport.setCellphone(byId1.getCellPhone()); } if (Objects.nonNull(byId)){ record.setName(byId.getName()); record.setWorth(byId.getWorth()); record.setEnergyValue(byId.getEnergyValue()); prizeExport.setPrizeName(byId.getName()); prizeExport.setAmount(byId.getWorth()+""); prizeExport.setEnergyValue(byId.getEnergyValue()+""); } prizeExport.setStatus(record.getStatus()+""); prizeExports.add(prizeExport); } Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), PrizeExport.class, prizeExports); HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("兑换记录管理导出.xls", "utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } @PostMapping("/prizeRedemptionRecordList") @ApiOperation(value = "兑换记录管理列表-分页", tags = {"管理后台-兑换记录管理"}) public R> prizeRedemptionRecordList(@RequestBody PrizeRecordDTO courseDTO) { String startTime = null; String endTime = null; if (org.springframework.util.StringUtils.hasLength(courseDTO.getTime())){ String[] split = courseDTO.getTime().split(" - "); startTime = split[0]+" 00:00:00"; endTime = split[1]+" 23:59:59"; } List longs = new ArrayList<>(); LambdaQueryWrapper courseLambdaQueryWrapper = new LambdaQueryWrapper<>(); if (startTime!=null){ courseLambdaQueryWrapper.between(PrizeRedemptionRecord::getCreateTime, startTime, endTime); } if (courseDTO.getStatus()!=null){ courseLambdaQueryWrapper.eq(PrizeRedemptionRecord::getStatus, courseDTO.getStatus()); } courseLambdaQueryWrapper.orderByDesc(PrizeRedemptionRecord::getCreateTime); if (org.springframework.util.StringUtils.hasLength(courseDTO.getUserNameOrPhone())){ List collect = appUserService.lambdaQuery().like(AppUser::getNickname, courseDTO.getUserNameOrPhone()).list() .stream().map(AppUser::getId).collect(Collectors.toList()); longs.addAll(collect); List collect1 = appUserService.lambdaQuery().like(AppUser::getCellPhone, courseDTO.getUserNameOrPhone()).list() .stream().map(AppUser::getId).collect(Collectors.toList()); longs.addAll(collect1); if (longs.isEmpty()){ longs.add(-1L); } courseLambdaQueryWrapper.in(PrizeRedemptionRecord::getAppUserId, longs); } if (org.springframework.util.StringUtils.hasLength(courseDTO.getName())){ List collect = prizeService.lambdaQuery().like(Prize::getName, courseDTO.getName()).list() .stream().map(Prize::getId).collect(Collectors.toList()); if (collect.isEmpty()){ collect.add(-1L); } courseLambdaQueryWrapper.in(PrizeRedemptionRecord::getPrizeId, collect); } Page page = prizeRedemptionRecordService.page(new Page<>(courseDTO.getPageCurr(), courseDTO.getPageSize()), courseLambdaQueryWrapper); if (CollUtils.isEmpty(page.getRecords())) { return R.ok(PageDTO.empty(page)); } for (PrizeRedemptionRecord record : page.getRecords()) { record.setUuid(record.getAppUserId()+""); Prize byId = prizeService.getById(record.getPrizeId()); if (Objects.nonNull(byId)){ record.setName(byId.getName()); record.setWorth(byId.getWorth()); record.setEnergyValue(byId.getEnergyValue()); record.setCoverUrl(byId.getCoverUrl()); } record.setUid(record.getId().toString()); AppUser byId1 = appUserService.getById(record.getAppUserId()); if (Objects.nonNull(byId1)){ record.setUserName(byId1.getNickname()); record.setAvatar(byId1.getAvatar()); record.setCellPhone(byId1.getCellPhone()); } } return R.ok(PageDTO.of(page, PrizeRedemptionRecord.class)); } @GetMapping("/detailPrizeRedemptionRecord") @ApiOperation(value = "查看详情兑换记录管理", tags = "管理后台-兑换记录管理") public R detailPrizeRedemptionRecord(String uid) { PrizeRedemptionRecord byId = prizeRedemptionRecordService.getById(uid); Prize byId1 = prizeService.getById(byId.getPrizeId()); if (Objects.nonNull(byId1)){ byId.setName(byId1.getName()); byId.setWorth(byId1.getWorth()); byId.setEnergyValue(byId1.getEnergyValue()); } byId.setUid(byId.getId().toString()); AppUser byId2 = appUserService.getById(byId.getAppUserId()); if (Objects.nonNull(byId2)){ byId.setUserName(byId2.getNickname()); byId.setAvatar(byId2.getAvatar()); byId.setCellPhone(byId2.getCellPhone()); } return R.ok(); } @Autowired private TokenService tokenService; @GetMapping("/confirm") @ApiOperation(value = "确认兑换", tags = "管理后台-兑换记录管理") @Log(title = "【奖品管理】确认兑换", businessType = BusinessType.UPDATE) public R updateState(String uid,String code) { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); PrizeRedemptionRecord byId = prizeRedemptionRecordService.getById(uid); if (!byId.getCode().equals(code)){ return R.fail("兑换码错误"); }else{ byId.setStatus(2); byId.setUpdateTime(LocalDateTime.now()); SysUser data = remoteUserService.getSysUserById(userId + "").getData(); byId.setUpdateBy(data.getUserName()+data.getNickName()+"("+data.getUserName()+")"); byId.setHandleName(data.getUserName()+data.getNickName()+"("+data.getUserName()+")"); prizeRedemptionRecordService.updateById(byId); } return R.ok(); } }