批量机审
This commit is contained in:
@@ -32,6 +32,14 @@ public class AppApiMethodAspect {
|
||||
long start = System.currentTimeMillis();
|
||||
//避免回填
|
||||
Object[] args = pjp.getArgs();
|
||||
|
||||
// 如果请求参数中包含HttpServletRequest,剔除HttpServletRequest
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
if (args[i] instanceof HttpServletRequest) {
|
||||
args[i] = null;
|
||||
}
|
||||
}
|
||||
|
||||
String params = new Gson().toJson(args);
|
||||
|
||||
// 执行被拦截的方法
|
||||
|
||||
@@ -59,6 +59,7 @@ public class ShiroConfig {
|
||||
filterMap.put("/captcha.jpg", "anon");
|
||||
filterMap.put("/aaa.txt", "anon");
|
||||
filterMap.put("/search/**", "anon");
|
||||
filterMap.put("/cashOutAudit/batchCashOutOrder", "anon");
|
||||
filterMap.put("/**", "oauth2");
|
||||
|
||||
shiroFilter.setFilterChainDefinitionMap(filterMap);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.sqx.modules.discSpinning.controller;
|
||||
|
||||
import com.sqx.common.utils.Constant;
|
||||
import com.sqx.common.utils.IPUtils;
|
||||
import com.sqx.common.utils.PageUtils;
|
||||
import com.sqx.common.utils.Result;
|
||||
import com.sqx.modules.pay.entity.CashOut;
|
||||
@@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -65,4 +67,14 @@ public class CashOutController {
|
||||
Map<String, Object> data = cashOutService.alipayTransferSummaryQuery(alipayAccountName);
|
||||
return Result.success().put("data", data);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/batchCashOutOrder", method = RequestMethod.GET)
|
||||
@ApiOperation("批量提现")
|
||||
public Result batchCashOutOrder(HttpServletRequest request, Double maxMoney, Integer count) {
|
||||
String ipAddr = IPUtils.getIpAddr(request);
|
||||
if (!"127.0.0.1".equals(ipAddr)) {
|
||||
return Result.error("非法请求");
|
||||
}
|
||||
return cashOutService.batchCashOutOrder(maxMoney, count);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.sqx.modules.pay.entity.CashOut;
|
||||
import org.apache.ibatis.annotations.MapKey;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author fang
|
||||
|
||||
@@ -63,4 +63,6 @@ public interface CashOutService {
|
||||
void batchAudit(Long userId, Integer isAgree, String refund);
|
||||
|
||||
Map<String,Object> alipayTransferSummaryQuery(String alipayAccountName);
|
||||
|
||||
Result batchCashOutOrder(Double maxMoney, Integer count);
|
||||
}
|
||||
|
||||
@@ -5,8 +5,10 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapProxy;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -53,8 +55,11 @@ import weixin.popular.support.TokenManager;
|
||||
|
||||
import javax.websocket.SendResult;
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Time;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 提现申请记录
|
||||
@@ -674,5 +679,74 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result batchCashOutOrder(Double maxMoney, Integer count) {
|
||||
if (maxMoney == null || maxMoney <= 0) {
|
||||
maxMoney = 20.00;
|
||||
}
|
||||
if (count == null || count <= 0) {
|
||||
count = 1000;
|
||||
}
|
||||
// 查询 待审核的用户 id 列表
|
||||
QueryWrapper<CashOut> userIdQuery = Wrappers.<CashOut>query().select("user_id").eq("state", 3).isNotNull("user_id").groupBy("user_id");
|
||||
List<CashOut> cashOutList = baseMapper.selectList(userIdQuery);
|
||||
if (CollUtil.isEmpty(cashOutList)) {
|
||||
return Result.error("没有待审核的提现申请!");
|
||||
}
|
||||
|
||||
List<Long> userIdList = cashOutList.stream().map(CashOut::getUserId).collect(Collectors.toList());
|
||||
System.out.println("userIdList = " + userIdList);
|
||||
|
||||
Double finalMaxMoney = maxMoney;
|
||||
Integer finalCount = count;
|
||||
ThreadUtil.execAsync(() -> batchSendCashMoney(userIdList, finalMaxMoney, finalCount, 30));
|
||||
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
private void batchSendCashMoney(List<Long> userIds, Double maxMoney, Integer count, int len) {
|
||||
if (CollUtil.isEmpty(userIds)) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<List<Long>> partition = CollUtil.split(userIds, len);
|
||||
|
||||
for (List<Long> userIdList : partition) {
|
||||
// 查询需要提现的用户已经提现的金额和笔数
|
||||
QueryWrapper<CashOut> sumQuery = new QueryWrapper<>();
|
||||
sumQuery.select("user_id", "sum(money) as money", "count(1) as total");
|
||||
sumQuery.in("user_id", userIdList);
|
||||
sumQuery.eq("state", 1);
|
||||
sumQuery.groupBy("user_id");
|
||||
List<Map<String, Object>> sumList = baseMapper.selectMaps(sumQuery);
|
||||
|
||||
System.out.println("sumList = " + sumList);
|
||||
|
||||
for (Map<String, Object> objectMap : sumList) {
|
||||
Double totalMoney = Convert.toDouble(objectMap.get("money"));
|
||||
Integer total = Convert.toInt(objectMap.get("total"));
|
||||
|
||||
if (totalMoney >= maxMoney || total >= count) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Long userId = Convert.toLong(objectMap.get("user_id"));
|
||||
|
||||
try {
|
||||
// 查询用户待审核的列表
|
||||
List<CashOut> cashOutList = baseMapper.selectList(Wrappers.<CashOut>lambdaQuery().eq(CashOut::getUserId, userId).eq(CashOut::getState, 3));
|
||||
for (CashOut cashOut : cashOutList) {
|
||||
cashOut.setIsAgree(1);
|
||||
cashOut.setRefund("");
|
||||
queueAudit(cashOut);
|
||||
}
|
||||
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user