|
@@ -1,4 +1,5 @@
|
|
|
package com.txz.cif.web.mng;
|
|
|
+
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
@@ -33,222 +34,228 @@ import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
-* Created by CodeGenerator on 2025/07/15.
|
|
|
-*/
|
|
|
+ * Created by CodeGenerator on 2025/07/15.
|
|
|
+ */
|
|
|
@Api(tags = "[后台]rechargeRecord管理")
|
|
|
@RestController
|
|
|
@RequestMapping("/recharge/record")
|
|
|
public class RechargeRecordController {
|
|
|
-
|
|
|
- private static Logger log = LoggerFactory.getLogger(RechargeRecordController.class);
|
|
|
-
|
|
|
+
|
|
|
+ private static Logger log = LoggerFactory.getLogger(RechargeRecordController.class);
|
|
|
+
|
|
|
@Resource
|
|
|
private RechargeRecordService rechargeRecordService;
|
|
|
-
|
|
|
- @Resource
|
|
|
- private BizLogService bizLogService;
|
|
|
-
|
|
|
- @Resource
|
|
|
- private AccountService accountService;
|
|
|
-
|
|
|
- @Resource
|
|
|
- private PaymentChannelService paymentChannelService;
|
|
|
- @Resource
|
|
|
- private PaymentMethodService paymentMethodService;
|
|
|
-
|
|
|
-
|
|
|
- @GetMapping("/detail")
|
|
|
- @ApiOperation(value = "rechargeRecord获取详情",httpMethod = "GET")
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private BizLogService bizLogService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AccountService accountService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private PaymentChannelService paymentChannelService;
|
|
|
+ @Resource
|
|
|
+ private PaymentMethodService paymentMethodService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private UserService userService;
|
|
|
+
|
|
|
+ @GetMapping("/detail")
|
|
|
+ @ApiOperation(value = "rechargeRecord获取详情", httpMethod = "GET")
|
|
|
public Result<RechargeRecordBO> detail(@RequestParam Long id) {
|
|
|
- if(id == null){
|
|
|
- return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
- }
|
|
|
-
|
|
|
- try {
|
|
|
- RechargeRecord rechargeRecord = rechargeRecordService.findById(id);
|
|
|
- if (rechargeRecord == null){
|
|
|
- return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
- }
|
|
|
- RechargeRecordBO bo = BeanUtil.toBean(rechargeRecord,RechargeRecordBO.class);
|
|
|
- Condition c = new Condition(BizLog.class);
|
|
|
- c.createCriteria().andEqualTo("bizType",1)
|
|
|
- .andEqualTo("bizNo",rechargeRecord.getOrderNo());
|
|
|
- List<BizLog> logs = bizLogService.findByCondition(c);
|
|
|
- bo.setBizLogs(logs);
|
|
|
- Account wallet = accountService.getAccount(rechargeRecord.getUserId(), 1);
|
|
|
- if (wallet != null){
|
|
|
- bo.setWalletBalance(wallet.getBalance());
|
|
|
- }
|
|
|
- Account earnings = accountService.getAccount(rechargeRecord.getUserId(), 2);
|
|
|
- if (earnings != null){
|
|
|
- bo.setEarningsBalance(earnings.getBalance());
|
|
|
- }
|
|
|
- if (rechargeRecord.getMethodId() != null){
|
|
|
- PaymentMethod method = paymentMethodService.findById(rechargeRecord.getMethodId());
|
|
|
- if (method != null){
|
|
|
- bo.setMethodName(method.getMethodName());
|
|
|
- }
|
|
|
- }
|
|
|
- if (rechargeRecord.getChannelId() != null){
|
|
|
- PaymentChannel channel = paymentChannelService.findById(rechargeRecord.getChannelId());
|
|
|
- if (channel != null){
|
|
|
- bo.setChannelName(channel.getChannelName());
|
|
|
- }
|
|
|
- }
|
|
|
- return ResultGenerator.genSuccessResult(bo);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("查询对象操作异常e:{}",e);
|
|
|
- return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
- }
|
|
|
-
|
|
|
+ if (id == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.ID_IS_NULL);
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ RechargeRecord rechargeRecord = rechargeRecordService.findById(id);
|
|
|
+ if (rechargeRecord == null) {
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.OBJECT_IS_NULL);
|
|
|
+ }
|
|
|
+ User user = userService.findById(rechargeRecord.getUserId());
|
|
|
+ RechargeRecordBO bo = BeanUtil.toBean(rechargeRecord, RechargeRecordBO.class);
|
|
|
+ bo.setBank(user.getBank());
|
|
|
+ bo.setBankAccount(user.getBankAccount());
|
|
|
+ bo.setBankAccountName(user.getBankAccountName());
|
|
|
+ Condition c = new Condition(BizLog.class);
|
|
|
+ c.createCriteria().andEqualTo("bizType", 1)
|
|
|
+ .andEqualTo("bizNo", rechargeRecord.getOrderNo());
|
|
|
+ List<BizLog> logs = bizLogService.findByCondition(c);
|
|
|
+ bo.setBizLogs(logs);
|
|
|
+ Account wallet = accountService.getAccount(rechargeRecord.getUserId(), 1);
|
|
|
+ if (wallet != null) {
|
|
|
+ bo.setWalletBalance(wallet.getBalance());
|
|
|
+ }
|
|
|
+ Account earnings = accountService.getAccount(rechargeRecord.getUserId(), 2);
|
|
|
+ if (earnings != null) {
|
|
|
+ bo.setEarningsBalance(earnings.getBalance());
|
|
|
+ }
|
|
|
+ if (rechargeRecord.getMethodId() != null) {
|
|
|
+ PaymentMethod method = paymentMethodService.findById(rechargeRecord.getMethodId());
|
|
|
+ if (method != null) {
|
|
|
+ bo.setMethodName(method.getMethodName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (rechargeRecord.getChannelId() != null) {
|
|
|
+ PaymentChannel channel = paymentChannelService.findById(rechargeRecord.getChannelId());
|
|
|
+ if (channel != null) {
|
|
|
+ bo.setChannelName(channel.getChannelName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResultGenerator.genSuccessResult(bo);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@PostMapping("/list")
|
|
|
- @ApiOperation(value = "rechargeRecord获取列表",httpMethod = "POST")
|
|
|
+ @ApiOperation(value = "rechargeRecord获取列表", httpMethod = "POST")
|
|
|
public Result<List<RechargeRecordBO>> list(@RequestBody RecordParam param) {
|
|
|
-
|
|
|
+
|
|
|
PageHelper.startPage(param.getPage(), param.getSize());
|
|
|
-
|
|
|
+
|
|
|
Condition condition = new Condition(RechargeRecord.class);
|
|
|
Criteria criteria = condition.createCriteria();
|
|
|
- if (StrUtil.isNotBlank(param.getChannel())){
|
|
|
- criteria.andEqualTo("channel", param.getChannel());
|
|
|
- }
|
|
|
- if (StrUtil.isNotBlank(param.getUserName())){
|
|
|
- criteria.andEqualTo("userName", param.getUserName());
|
|
|
- }
|
|
|
- if (StrUtil.isNotBlank(param.getUserPhone())){
|
|
|
- criteria.andEqualTo("userPhone", param.getUserPhone());
|
|
|
- }
|
|
|
- if (StrUtil.isNotBlank(param.getOrderNo())){
|
|
|
- criteria.andEqualTo("orderNo", param.getOrderNo());
|
|
|
- }
|
|
|
- if (param.getStatus() != null){
|
|
|
- criteria.andEqualTo("status", param.getStatus());
|
|
|
- }
|
|
|
- if (param.getTimeType() != null){
|
|
|
- if (param.getTimeType() ==1 ){
|
|
|
- if (StrUtil.isNotBlank(param.getStartTime())){
|
|
|
- criteria.andBetween("createTime", param.getStartTime(),param.getEndTime());
|
|
|
- }
|
|
|
- } else if (param.getTimeType() ==2 ){
|
|
|
- if (StrUtil.isNotBlank(param.getStartTime())){
|
|
|
- criteria.andBetween("successTime", param.getStartTime(),param.getEndTime());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- PageInfo pageInfo = null;
|
|
|
- try {
|
|
|
- condition.setOrderByClause("create_time desc");
|
|
|
- List<RechargeRecord> list = rechargeRecordService.findByCondition(condition);
|
|
|
- pageInfo = new PageInfo(list);
|
|
|
- pageInfo.setList(list.stream().map(e-> {
|
|
|
- RechargeRecordBO bo = BeanUtil.toBean(e,RechargeRecordBO.class);
|
|
|
- if (e.getMethodId() != null){
|
|
|
- PaymentMethod method = paymentMethodService.findById(e.getMethodId());
|
|
|
- if (method != null){
|
|
|
- bo.setMethodName(method.getMethodName());
|
|
|
- }
|
|
|
- }
|
|
|
- if (e.getChannelId() != null){
|
|
|
- PaymentChannel channel = paymentChannelService.findById(e.getChannelId());
|
|
|
- if (channel != null){
|
|
|
- bo.setChannelName(channel.getChannelName());
|
|
|
- }
|
|
|
- }
|
|
|
- return bo;
|
|
|
- }).collect(Collectors.toList()));
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("查询对象操作异常e:{}",e);
|
|
|
- return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
- }
|
|
|
+ if (StrUtil.isNotBlank(param.getChannel())) {
|
|
|
+ criteria.andEqualTo("channel", param.getChannel());
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(param.getUserName())) {
|
|
|
+ criteria.andEqualTo("userName", param.getUserName());
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(param.getUserPhone())) {
|
|
|
+ criteria.andEqualTo("userPhone", param.getUserPhone());
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(param.getOrderNo())) {
|
|
|
+ criteria.andEqualTo("orderNo", param.getOrderNo());
|
|
|
+ }
|
|
|
+ if (param.getStatus() != null) {
|
|
|
+ criteria.andEqualTo("status", param.getStatus());
|
|
|
+ }
|
|
|
+ if (param.getTimeType() != null) {
|
|
|
+ if (param.getTimeType() == 1) {
|
|
|
+ if (StrUtil.isNotBlank(param.getStartTime())) {
|
|
|
+ criteria.andBetween("createTime", param.getStartTime(), param.getEndTime());
|
|
|
+ }
|
|
|
+ } else if (param.getTimeType() == 2) {
|
|
|
+ if (StrUtil.isNotBlank(param.getStartTime())) {
|
|
|
+ criteria.andBetween("successTime", param.getStartTime(), param.getEndTime());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageInfo pageInfo = null;
|
|
|
+ try {
|
|
|
+ condition.setOrderByClause("create_time desc");
|
|
|
+ List<RechargeRecord> list = rechargeRecordService.findByCondition(condition);
|
|
|
+ pageInfo = new PageInfo(list);
|
|
|
+ pageInfo.setList(list.stream().map(e -> {
|
|
|
+ RechargeRecordBO bo = BeanUtil.toBean(e, RechargeRecordBO.class);
|
|
|
+ if (e.getMethodId() != null) {
|
|
|
+ PaymentMethod method = paymentMethodService.findById(e.getMethodId());
|
|
|
+ if (method != null) {
|
|
|
+ bo.setMethodName(method.getMethodName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (e.getChannelId() != null) {
|
|
|
+ PaymentChannel channel = paymentChannelService.findById(e.getChannelId());
|
|
|
+ if (channel != null) {
|
|
|
+ bo.setChannelName(channel.getChannelName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return bo;
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("查询对象操作异常e:{}", e);
|
|
|
+ return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
|
|
|
+ }
|
|
|
return ResultGenerator.genSuccessResult(pageInfo);
|
|
|
}
|
|
|
-
|
|
|
- @GetMapping("/report")
|
|
|
- @ApiOperation(value = "导出", httpMethod = "GET")
|
|
|
- public void report(@RequestParam(required = false) String orderNo ,
|
|
|
- @RequestParam(required = false) String channel ,
|
|
|
- @RequestParam(required = false) String userName ,
|
|
|
- @RequestParam(required = false) String userPhone ,
|
|
|
- @RequestParam(required = false) Integer status ,
|
|
|
- @RequestParam(required = false) Integer timeType ,
|
|
|
- @RequestParam(required = false) String startTime ,
|
|
|
- @RequestParam(required = false) String endTime ,
|
|
|
- HttpServletResponse response) {
|
|
|
- Condition condition = new Condition(RechargeRecord.class);
|
|
|
- Criteria criteria = condition.createCriteria();
|
|
|
- if (StrUtil.isNotBlank(channel)){
|
|
|
- criteria.andEqualTo("channel", channel);
|
|
|
- }
|
|
|
- if (StrUtil.isNotBlank(userName)){
|
|
|
- criteria.andEqualTo("userName", userName);
|
|
|
- }
|
|
|
- if (StrUtil.isNotBlank(userPhone)){
|
|
|
- criteria.andEqualTo("userPhone", userPhone);
|
|
|
- }
|
|
|
- if (StrUtil.isNotBlank(orderNo)){
|
|
|
- criteria.andEqualTo("orderNo", orderNo);
|
|
|
- }
|
|
|
- if (status != null){
|
|
|
- criteria.andEqualTo("status", status);
|
|
|
- }
|
|
|
- if (timeType != null){
|
|
|
- if (timeType ==1 ){
|
|
|
- if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){
|
|
|
- criteria.andBetween("createTime", startTime,endTime);
|
|
|
- }
|
|
|
- } else if (timeType ==2 ){
|
|
|
- if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)){
|
|
|
- criteria.andBetween("successTime", startTime,endTime);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- condition.setOrderByClause("create_time desc");
|
|
|
- List<RechargeRecord> list = rechargeRecordService.findByCondition(condition);
|
|
|
- List<String> rowHead = CollUtil.newArrayList("编号", "订单号", "用户id", "交易金额", "折扣金额", "状态 1处理中 2充值成功 3充值失败 4超时取消", "渠道", "币种", "用户名", "手机号", "交易时间", "交易成功时间", "银行", "银行账户", "银行账户姓名");
|
|
|
- ExcelWriter writer = ExcelUtil.getWriter();
|
|
|
- try {
|
|
|
- writer.writeHeadRow(rowHead);
|
|
|
- List<List<Object>> rows = new LinkedList<>();
|
|
|
- if (CollUtil.isNotEmpty(list)) {
|
|
|
- for (RechargeRecord temp : list) {
|
|
|
- List<Object> rowA = CollUtil.newArrayList(
|
|
|
- temp.getId()+"",
|
|
|
- temp.getOrderNo(),
|
|
|
- temp.getAmount() == null? "0":temp.getAmount().toPlainString(),
|
|
|
- temp.getDiscount() == null? "0":temp.getDiscount().toPlainString(),
|
|
|
- temp.getStatus()+"",
|
|
|
- temp.getChannel(),
|
|
|
- temp.getCurrency(),
|
|
|
- temp.getUserName(),
|
|
|
- temp.getUserPhone(),
|
|
|
- temp.getTransTime() == null? "":DateUtil.format(temp.getTransTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
|
- temp.getSuccessTime() == null? "":DateUtil.format(temp.getSuccessTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
|
- temp.getBank(),
|
|
|
- temp.getBankAccount(),
|
|
|
- temp.getBankAccountName());
|
|
|
- rows.add(rowA);
|
|
|
- }
|
|
|
- }
|
|
|
- writer.write(rows);
|
|
|
- //设置宽度自适应
|
|
|
- writer.setColumnWidth(-1, 22);
|
|
|
- //response为HttpServletResponse对象
|
|
|
- response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
|
|
- //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
|
|
|
- response.setHeader("Content-Disposition", "attachment;filename=" + new String(("数据列表").getBytes("UTF-8"), "ISO-8859-1") + ".xls");
|
|
|
- ServletOutputStream out = response.getOutputStream();
|
|
|
- //out为OutputStream,需要写出到的目标流
|
|
|
- writer.flush(out);
|
|
|
- log.info("导出结束");
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("导出异常", e);
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- // 关闭writer,释放内存
|
|
|
- writer.close();
|
|
|
- log.info("导出结束");
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+ @GetMapping("/report")
|
|
|
+ @ApiOperation(value = "导出", httpMethod = "GET")
|
|
|
+ public void report(@RequestParam(required = false) String orderNo,
|
|
|
+ @RequestParam(required = false) String channel,
|
|
|
+ @RequestParam(required = false) String userName,
|
|
|
+ @RequestParam(required = false) String userPhone,
|
|
|
+ @RequestParam(required = false) Integer status,
|
|
|
+ @RequestParam(required = false) Integer timeType,
|
|
|
+ @RequestParam(required = false) String startTime,
|
|
|
+ @RequestParam(required = false) String endTime,
|
|
|
+ HttpServletResponse response) {
|
|
|
+ Condition condition = new Condition(RechargeRecord.class);
|
|
|
+ Criteria criteria = condition.createCriteria();
|
|
|
+ if (StrUtil.isNotBlank(channel)) {
|
|
|
+ criteria.andEqualTo("channel", channel);
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(userName)) {
|
|
|
+ criteria.andEqualTo("userName", userName);
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(userPhone)) {
|
|
|
+ criteria.andEqualTo("userPhone", userPhone);
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(orderNo)) {
|
|
|
+ criteria.andEqualTo("orderNo", orderNo);
|
|
|
+ }
|
|
|
+ if (status != null) {
|
|
|
+ criteria.andEqualTo("status", status);
|
|
|
+ }
|
|
|
+ if (timeType != null) {
|
|
|
+ if (timeType == 1) {
|
|
|
+ if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
+ criteria.andBetween("createTime", startTime, endTime);
|
|
|
+ }
|
|
|
+ } else if (timeType == 2) {
|
|
|
+ if (StrUtil.isNotBlank(startTime) && StrUtil.isNotBlank(endTime)) {
|
|
|
+ criteria.andBetween("successTime", startTime, endTime);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ condition.setOrderByClause("create_time desc");
|
|
|
+ List<RechargeRecord> list = rechargeRecordService.findByCondition(condition);
|
|
|
+ List<String> rowHead = CollUtil.newArrayList("编号", "订单号", "用户id", "交易金额", "折扣金额", "状态 1处理中 2充值成功 3充值失败 4超时取消", "渠道", "币种", "用户名", "手机号", "交易时间", "交易成功时间", "银行", "银行账户", "银行账户姓名");
|
|
|
+ ExcelWriter writer = ExcelUtil.getWriter();
|
|
|
+ try {
|
|
|
+ writer.writeHeadRow(rowHead);
|
|
|
+ List<List<Object>> rows = new LinkedList<>();
|
|
|
+ if (CollUtil.isNotEmpty(list)) {
|
|
|
+ for (RechargeRecord temp : list) {
|
|
|
+ List<Object> rowA = CollUtil.newArrayList(
|
|
|
+ temp.getId() + "",
|
|
|
+ temp.getOrderNo(),
|
|
|
+ temp.getAmount() == null ? "0" : temp.getAmount().toPlainString(),
|
|
|
+ temp.getDiscount() == null ? "0" : temp.getDiscount().toPlainString(),
|
|
|
+ temp.getStatus() + "",
|
|
|
+ temp.getChannel(),
|
|
|
+ temp.getCurrency(),
|
|
|
+ temp.getUserName(),
|
|
|
+ temp.getUserPhone(),
|
|
|
+ temp.getTransTime() == null ? "" : DateUtil.format(temp.getTransTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
|
+ temp.getSuccessTime() == null ? "" : DateUtil.format(temp.getSuccessTime(), "yyyy-MM-dd HH:mm:ss"),
|
|
|
+ temp.getBank(),
|
|
|
+ temp.getBankAccount(),
|
|
|
+ temp.getBankAccountName());
|
|
|
+ rows.add(rowA);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ writer.write(rows);
|
|
|
+ // 设置宽度自适应
|
|
|
+ writer.setColumnWidth(-1, 22);
|
|
|
+ // response为HttpServletResponse对象
|
|
|
+ response.setContentType("application/vnd.ms-excel;charset=utf-8");
|
|
|
+ // test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
|
|
|
+ response.setHeader("Content-Disposition", "attachment;filename=" + new String(("数据列表").getBytes("UTF-8"), "ISO-8859-1") + ".xls");
|
|
|
+ ServletOutputStream out = response.getOutputStream();
|
|
|
+ // out为OutputStream,需要写出到的目标流
|
|
|
+ writer.flush(out);
|
|
|
+ log.info("导出结束");
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("导出异常", e);
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ // 关闭writer,释放内存
|
|
|
+ writer.close();
|
|
|
+ log.info("导出结束");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|