package com.gear.admin.controller.swx; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gear.admin.vo.swx.RechargeRecordVo; import com.gear.admin.vo.swx.WithdrawalRecordVo; import com.gear.common.builder.WhereBuilder; import com.gear.common.constant.SwxConstons; import com.gear.common.vo.Result; import com.gear.swx.domain.SwxMoneyLog; import com.gear.swx.domain.SwxRechargeRecord; import com.gear.swx.domain.SwxUser; import com.gear.swx.service.ISwxMoneyLogService; import com.gear.swx.service.ISwxUserService; import io.jsonwebtoken.lang.Collections; import org.apache.logging.log4j.util.Strings; import org.springframework.beans.BeanUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import com.gear.common.annotation.Log; import com.gear.common.core.controller.BaseController; import com.gear.common.enums.BusinessType; import com.gear.swx.domain.SwxWithdrawalRecord; import com.gear.swx.service.ISwxWithdrawalRecordService; import com.gear.common.utils.poi.ExcelUtil; /** * 提现管理Controller * * @author czx * @date 2023-11-18 */ @RestController @RequestMapping("/swx/withdrawalRecord") public class SwxWithdrawalRecordController extends BaseController { @Autowired private ISwxWithdrawalRecordService swxWithdrawalRecordService; @Autowired private ISwxUserService swxUserService; @Autowired private ISwxMoneyLogService swxMoneyLogService; /** * 查询提现管理列表 */ @PreAuthorize("@ss.hasPermi('swx:withdrawalRecord:list')") @GetMapping("/list") public Result> list(WithdrawalRecordVo swxWithdrawalRecord, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize){ QueryWrapper queryWrapper = new QueryWrapper<>(); if(!Strings.isEmpty(swxWithdrawalRecord.getPhone()) || !Strings.isEmpty(swxWithdrawalRecord.getUserName())){ QueryWrapper userQueryWrapper = new QueryWrapper<>(); if(!Strings.isEmpty(swxWithdrawalRecord.getUserName())){ userQueryWrapper.lambda().like(SwxUser::getUserName,swxWithdrawalRecord.getUserName()); } if(!Strings.isEmpty(swxWithdrawalRecord.getPhone())){ userQueryWrapper.lambda().like(SwxUser::getPhone,swxWithdrawalRecord.getPhone()); } List list = swxUserService.list(userQueryWrapper); List ids = new ArrayList<>(); if(!Collections.isEmpty(list)){ for (SwxUser item : list){ ids.add(item.getId()); } }else{ ids.add(""); } queryWrapper.lambda().in(SwxWithdrawalRecord::getUserId,ids); } if(swxWithdrawalRecord.getStatus() != null){ queryWrapper.lambda().eq(SwxWithdrawalRecord::getStatus,swxWithdrawalRecord.getStatus()); } Page page = new Page(pageNo, pageSize); queryWrapper.lambda().orderByDesc(SwxWithdrawalRecord::getCreateTime); IPage pageList = swxWithdrawalRecordService.page(page, queryWrapper); IPage result = new Page<>(); List records = new ArrayList<>(); for(SwxWithdrawalRecord item : pageList.getRecords()){ WithdrawalRecordVo vo = new WithdrawalRecordVo(); BeanUtils.copyProperties(item,vo); SwxUser swxUser = swxUserService.getById(item.getUserId()); if(swxUser != null){ vo.setUserName(swxUser.getUserName()); vo.setPhone(swxUser.getPhone()); } records.add(vo); } result.setRecords(records); result.setCurrent(pageList.getCurrent()); result.setPages(pageList.getPages()); result.setSize(pageList.getSize()); result.setTotal(pageList.getTotal()); return Result.OK(result); } /** * 导出提现管理列表 */ @PreAuthorize("@ss.hasPermi('swx:withdrawalRecord:export')") @Log(title = "提现管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, SwxWithdrawalRecord swxWithdrawalRecord){ QueryWrapper queryWrapper = WhereBuilder.build(swxWithdrawalRecord); List list = swxWithdrawalRecordService.list(queryWrapper); ExcelUtil util = new ExcelUtil(SwxWithdrawalRecord.class); util.exportExcel(response, list, "提现管理数据"); } /** * 获取提现管理详细信息 */ @PreAuthorize("@ss.hasPermi('swx:withdrawalRecord:query')") @GetMapping(value = "/{id}") public Result getInfo(@PathVariable("id") String id){ SwxWithdrawalRecord swxWithdrawalRecord = swxWithdrawalRecordService.getById(id); if(swxWithdrawalRecord==null) { return Result.error("未找到对应数据"); } return Result.OK(swxWithdrawalRecord); } /** * 修改提现管理 */ @PreAuthorize("@ss.hasPermi('swx:withdrawalRecord:edit')") @Log(title = "提现管理", businessType = BusinessType.UPDATE) @PutMapping @Transactional public Result edit(@RequestBody SwxWithdrawalRecord swxWithdrawalRecord){ //判断修改状态 if(swxWithdrawalRecord == null || swxWithdrawalRecord.getStatus() <= 0){ return Result.error("编辑失败!"); } //充值成功 if (swxWithdrawalRecord.getStatus() == SwxConstons.NOMARL_STATUS_YES){ SwxWithdrawalRecord old = swxWithdrawalRecordService.getById(swxWithdrawalRecord.getId()); SwxUser swxUser = swxUserService.getById(old.getUserId()); if(swxUser != null){ if(swxUser.getAmount().compareTo(old.getAmount()) < 0){ return Result.error("资金不足!"); } SwxMoneyLog moneyLog = new SwxMoneyLog(); moneyLog.setInfo("提现账户为:"+old.getBtcAddress()); moneyLog.setStatus(SwxConstons.NOMARL_STATUS_YES); moneyLog.setType(SwxConstons.SWX_MONEY_LOG_TYPE_WITHDRAWAL); moneyLog.setSymbol(SwxConstons.SWX_MONEY_TYPE_PAY); moneyLog.setTitle("资金提现"); moneyLog.setOldAmount(swxUser.getAmount()); swxUser.setAmount(swxUser.getAmount().subtract(old.getAmount())); swxUser.setWithdrawalAmount(swxUser.getAllWithdrawal().add(old.getAmount())); swxUserService.updateById(swxUser); moneyLog.setNowAmount(swxUser.getAmount()); moneyLog.setUserId(swxUser.getId()); moneyLog.setBusiId(old.getId()); moneyLog.setMoney(old.getAmount()); swxMoneyLogService.save(moneyLog); } } swxWithdrawalRecordService.updateById(swxWithdrawalRecord); return Result.ok("编辑成功!"); } /** * 删除提现管理 */ @PreAuthorize("@ss.hasPermi('swx:withdrawalRecord:remove')") @Log(title = "提现管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public Result remove(@PathVariable List ids){ swxWithdrawalRecordService.removeBatchByIds(ids); return Result.ok("删除成功!"); } }