红包任务
This commit is contained in:
parent
e77bb19459
commit
d973622445
|
|
@ -47,15 +47,18 @@ public class AppApiMethodAspect {
|
|||
|
||||
//请求的参数
|
||||
String resultJson = new Gson().toJson(result);
|
||||
|
||||
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
|
||||
long end = System.currentTimeMillis();
|
||||
if(StringUtils.isNotBlank(resultJson) && !"null".equals(resultJson)){
|
||||
log.info("\n>>>>>> {} {}\n>>>>>> IP: {} \n>>>>>> execute time:{}ms \n>>>>>> Request: {}\n>>>>>> Response: {}",
|
||||
request.getMethod(), request.getRequestURL(), IPUtils.getIpAddr(request),end-start,
|
||||
params,
|
||||
resultJson
|
||||
);
|
||||
try{
|
||||
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
|
||||
long end = System.currentTimeMillis();
|
||||
if(StringUtils.isNotBlank(resultJson) && !"null".equals(resultJson)){
|
||||
log.info("\n>>>>>> {} {}\n>>>>>> IP: {} \n>>>>>> execute time:{}ms \n>>>>>> Request: {}\n>>>>>> Response: {}",
|
||||
request.getMethod(), request.getRequestURL(), IPUtils.getIpAddr(request),end-start,
|
||||
params,
|
||||
resultJson
|
||||
);
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error("Request 为空"+e.getMessage());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import com.sqx.common.utils.RedisKeys;
|
|||
import com.sqx.common.utils.RedisUtils;
|
||||
import com.sqx.common.utils.Result;
|
||||
import com.sqx.modules.app.annotation.Login;
|
||||
import com.sqx.modules.app.entity.UserEntity;
|
||||
import com.sqx.modules.app.service.UserService;
|
||||
import com.sqx.modules.common.service.CommonInfoService;
|
||||
import com.sqx.modules.discSpinning.entity.DiscSpinning;
|
||||
|
|
@ -23,7 +22,6 @@ import com.sqx.modules.taskCenter.service.TaskCenterRecordService;
|
|||
import com.sqx.modules.taskCenter.service.TaskCenterService;
|
||||
import io.swagger.annotations.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
|
@ -223,7 +221,7 @@ public class DiscSpinningController {
|
|||
}
|
||||
DiscSpinningRecord draws = discSpinningService.draws(i == null ? 1 : i + 1, amount, sourceId, userId, source);
|
||||
|
||||
executor.schedule(() -> receive1(draws), 4, TimeUnit.SECONDS);
|
||||
executor.schedule(() -> discSpinningService.receive1(draws), 4, TimeUnit.SECONDS);
|
||||
|
||||
return new Result().put("data", draws);
|
||||
}
|
||||
|
|
@ -236,23 +234,6 @@ public class DiscSpinningController {
|
|||
}
|
||||
|
||||
|
||||
public Result receive1(@RequestBody DiscSpinningRecord receive) {
|
||||
DiscSpinningRecord record = recordService.getById(receive.getId());
|
||||
if (record.getTargetId() != null) {
|
||||
return Result.error("不可重复领取");
|
||||
}
|
||||
CompletableFuture.runAsync(() -> {
|
||||
discSpinningService.receiveAsync(record);
|
||||
});
|
||||
UserEntity userInfo = userService.queryByUserId(record.getUserId());
|
||||
int res = 1;
|
||||
if (receive.getType().equals(2)) {
|
||||
if (StringUtils.isBlank(userInfo.getZhiFuBao()) && StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
|
||||
res = 0;
|
||||
}
|
||||
}
|
||||
return Result.success().put("data", res);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.sqx.modules.discSpinning.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.sqx.common.utils.Result;
|
||||
import com.sqx.modules.app.entity.UserEntity;
|
||||
import com.sqx.modules.discSpinning.entity.DiscSpinning;
|
||||
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
|
||||
|
|
@ -22,5 +23,7 @@ public interface DiscSpinningService extends IService<DiscSpinning> {
|
|||
//提现
|
||||
void withdrawAsync(UserEntity userInfo, Double money, String title);
|
||||
|
||||
Result receive1(DiscSpinningRecord receive);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||
import com.sqx.common.utils.DateUtils;
|
||||
import com.sqx.common.utils.RedisKeys;
|
||||
import com.sqx.common.utils.RedisUtils;
|
||||
import com.sqx.common.utils.Result;
|
||||
import com.sqx.modules.app.entity.UserEntity;
|
||||
import com.sqx.modules.app.entity.UserMoneyDetails;
|
||||
import com.sqx.modules.app.service.UserMoneyDetailsService;
|
||||
|
|
@ -38,6 +39,7 @@ import org.springframework.transaction.support.DefaultTransactionDefinition;
|
|||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
@Slf4j
|
||||
|
|
@ -251,5 +253,23 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
|
|||
recordService.save(record);
|
||||
return record;
|
||||
}
|
||||
|
||||
public Result receive1(DiscSpinningRecord receive) {
|
||||
DiscSpinningRecord record = recordService.getById(receive.getId());
|
||||
if (record.getTargetId() != null) {
|
||||
return Result.error("不可重复领取");
|
||||
}
|
||||
CompletableFuture.runAsync(() -> {
|
||||
receiveAsync(record);
|
||||
});
|
||||
UserEntity userInfo = userService.queryByUserId(record.getUserId());
|
||||
int res = 1;
|
||||
if (receive.getType().equals(2)) {
|
||||
if (StringUtils.isBlank(userInfo.getZhiFuBao()) && StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
|
||||
res = 0;
|
||||
}
|
||||
}
|
||||
return Result.success().put("data", res);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
package com.sqx.modules.job.task;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.sqx.modules.discSpinning.controller.DiscSpinningController;
|
||||
import com.sqx.modules.discSpinning.entity.DiscSpinning;
|
||||
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
|
||||
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
|
||||
import com.sqx.modules.discSpinning.service.DiscSpinningService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
|
@ -18,7 +19,7 @@ import java.util.List;
|
|||
public class SpinningTask3 implements ITask {
|
||||
|
||||
@Resource
|
||||
private DiscSpinningController spinningController;
|
||||
private DiscSpinningService spinningController;
|
||||
@Resource
|
||||
private DiscSpinningRecordService recordService;
|
||||
|
||||
|
|
@ -29,9 +30,12 @@ public class SpinningTask3 implements ITask {
|
|||
logger.info("大转盘到账补偿机制");
|
||||
// 获取当前时间
|
||||
Date now = DateUtil.date();
|
||||
if (StringUtils.isBlank(params)) {
|
||||
params = "1";
|
||||
}
|
||||
// 获取五分钟前的时间
|
||||
Date fiveMinutesAgo = DateUtil.offsetMinute(now, -5);
|
||||
Date tenMinutesAgo = DateUtil.offsetMinute(now, -10);
|
||||
Date fiveMinutesAgo = DateUtil.offsetMinute(now, Integer.valueOf(params) * -5);
|
||||
Date tenMinutesAgo = DateUtil.offsetMinute(now, (Integer.valueOf(params) * -5) - 5);
|
||||
// 将五分钟前的时间转换为指定格式的时间字符串,这里采用常见的"yyyy-MM-dd HH:mm:ss"格式
|
||||
String fiveMinutesAgoStr = DateUtil.format(fiveMinutesAgo, "yyyy-MM-dd HH:mm:ss");
|
||||
String tenMinutesAgoStr = DateUtil.format(tenMinutesAgo, "yyyy-MM-dd HH:mm:ss");
|
||||
|
|
@ -39,15 +43,18 @@ public class SpinningTask3 implements ITask {
|
|||
QueryWrapper<DiscSpinningRecord> recordQueryWrapper = new QueryWrapper<>();
|
||||
recordQueryWrapper.isNull("target");
|
||||
recordQueryWrapper.isNull("target_id");
|
||||
recordQueryWrapper.eq("type",2);
|
||||
recordQueryWrapper.eq("type", 2);
|
||||
//大于
|
||||
recordQueryWrapper.lt("create_time",fiveMinutesAgoStr);
|
||||
recordQueryWrapper.lt("create_time", fiveMinutesAgoStr);
|
||||
//小于
|
||||
recordQueryWrapper.gt("create_time", tenMinutesAgoStr);
|
||||
List<DiscSpinningRecord> list = recordService.list(recordQueryWrapper);
|
||||
for (DiscSpinningRecord record : list) {
|
||||
spinningController.receive1(record);
|
||||
}
|
||||
logger.info("大转盘到账补偿机制");
|
||||
ThreadUtil.execAsync(() -> {
|
||||
for (DiscSpinningRecord record : list) {
|
||||
spinningController.receive1(record);
|
||||
}
|
||||
});
|
||||
|
||||
logger.info("大转盘到账补偿机制结束");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.sqx.modules.pay.controller.app;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.sqx.common.annotation.Debounce;
|
||||
|
|
@ -210,7 +211,7 @@ public class WuyouController {
|
|||
log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto));
|
||||
|
||||
PayDetails payDetails = payDetailsDao.selectByTradeNo(notifyDto.getOut_trade_no());
|
||||
if(payDetails == null) {
|
||||
if (payDetails == null) {
|
||||
log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto));
|
||||
return "success";
|
||||
}
|
||||
|
|
@ -240,76 +241,78 @@ public class WuyouController {
|
|||
@Transactional
|
||||
public void activities(UserEntity user, UserEntity sourceUser) {
|
||||
//分享达标
|
||||
if (sourceUser != null && sourceUser.getUserId() != 1) {
|
||||
QueryWrapper<UserMoneyDetails> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("classify", 6);
|
||||
queryWrapper.eq("user_id", sourceUser.getUserId());
|
||||
queryWrapper.eq("by_user_id", user.getUserId());
|
||||
int count = userMoneyDetailsService.count(queryWrapper);
|
||||
if (count == 0) {
|
||||
//满3笔
|
||||
Integer sumOrderNum = ordersService.countOrderNum(user.getUserId(), null);
|
||||
if (sumOrderNum >= Integer.parseInt(commonRepository.findOne(913).getValue())) {
|
||||
String amount = commonRepository.findOne(912).getValue();
|
||||
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
|
||||
userMoneyDetails.setClassify(6);
|
||||
userMoneyDetails.setMoney(new BigDecimal(amount));
|
||||
userMoneyDetails.setUserId(sourceUser.getUserId());
|
||||
userMoneyDetails.setByUserId(user.getUserId());
|
||||
userMoneyDetails.setCreateTime(DateUtil.now());
|
||||
userMoneyDetails.setContent("分享达标奖励" + amount + "元");
|
||||
userMoneyDetails.setTitle("分享达标奖励");
|
||||
userMoneyDetails.setState(2);
|
||||
userMoneyDetails.setType(1);
|
||||
userMoneyDetails.setMoneyType(1);
|
||||
userMoneyDetailsService.save(userMoneyDetails);
|
||||
//存入余额 钱
|
||||
userMoneyService.updateAmount(1, sourceUser.getUserId(), Double.parseDouble(amount));
|
||||
SysUserEntity sysUser = sysUserService.selectSysUserByQdCode(user.getQdCode());
|
||||
String qdAward = commonRepository.findOne(915).getValue();
|
||||
if (sourceUser == null || sourceUser.getUserId() == 1) {
|
||||
return;
|
||||
}
|
||||
QueryWrapper<UserMoneyDetails> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("classify", 6);
|
||||
queryWrapper.eq("user_id", sourceUser.getUserId());
|
||||
queryWrapper.eq("by_user_id", user.getUserId());
|
||||
int count = userMoneyDetailsService.count(queryWrapper);
|
||||
if (count == 0) {
|
||||
//满3笔
|
||||
Integer sumOrderNum = ordersService.countOrderNum(user.getUserId(), null);
|
||||
if (sumOrderNum >= Integer.parseInt(commonRepository.findOne(913).getValue())) {
|
||||
String amount = commonRepository.findOne(912).getValue();
|
||||
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
|
||||
userMoneyDetails.setClassify(6);
|
||||
userMoneyDetails.setMoney(new BigDecimal(amount));
|
||||
userMoneyDetails.setUserId(sourceUser.getUserId());
|
||||
userMoneyDetails.setByUserId(user.getUserId());
|
||||
userMoneyDetails.setCreateTime(DateUtil.now());
|
||||
userMoneyDetails.setContent("分享达标奖励" + amount + "元");
|
||||
userMoneyDetails.setTitle("分享达标奖励");
|
||||
userMoneyDetails.setState(2);
|
||||
userMoneyDetails.setType(1);
|
||||
userMoneyDetails.setMoneyType(1);
|
||||
userMoneyDetailsService.save(userMoneyDetails);
|
||||
//存入余额 钱
|
||||
userMoneyService.updateAmount(1, sourceUser.getUserId(), Double.parseDouble(amount));
|
||||
SysUserEntity sysUser = sysUserService.selectSysUserByQdCode(user.getQdCode());
|
||||
String qdAward = commonRepository.findOne(915).getValue();
|
||||
|
||||
UserMoneyDetails userMoneyDetails4 = new UserMoneyDetails(
|
||||
null, sysUser == null ? null : sysUser.getUserId(), null, "[分享达标额外奖励]", 6, 1, 2,
|
||||
new BigDecimal(qdAward), "推广人员首次达标,额外奖励现金红包" + qdAward, 2);
|
||||
UserMoneyDetails userMoneyDetails4 = new UserMoneyDetails(
|
||||
null, sysUser == null ? null : sysUser.getUserId(), null, "[分享达标额外奖励]", 6, 1, 2,
|
||||
new BigDecimal(qdAward), "推广人员首次达标,额外奖励现金红包" + qdAward, 2);
|
||||
|
||||
userMoneyService.updateSysAmount(1, sysUser == null ? null : sysUser.getUserId(), Double.parseDouble(qdAward));
|
||||
userMoneyDetailsService.save(userMoneyDetails4);
|
||||
userMoneyService.updateSysAmount(1, sysUser == null ? null : sysUser.getUserId(), Double.parseDouble(qdAward));
|
||||
userMoneyDetailsService.save(userMoneyDetails4);
|
||||
|
||||
Invite invite = inviteService.selectInviteByUser(sourceUser.getUserId(), user.getUserId(), 1);
|
||||
if (invite != null) {
|
||||
invite.setMoney(Double.valueOf(amount));
|
||||
invite.setState(1);
|
||||
inviteDao.updateById(invite);
|
||||
}
|
||||
Invite invite = inviteService.selectInviteByUser(sourceUser.getUserId(), user.getUserId(), 1);
|
||||
if (invite != null) {
|
||||
invite.setMoney(Double.valueOf(amount));
|
||||
invite.setState(1);
|
||||
inviteDao.updateById(invite);
|
||||
}
|
||||
}
|
||||
|
||||
QueryWrapper<UserMoneyDetails> moneyDetailsQuery = new QueryWrapper<>();
|
||||
moneyDetailsQuery.eq("classify", 6);
|
||||
moneyDetailsQuery.eq("user_id", sourceUser.getUserId());
|
||||
//达标人数
|
||||
int completeCount = userMoneyDetailsService.count(moneyDetailsQuery);
|
||||
completAwardService.list(new QueryWrapper<CompletAward>().eq("invite_count", completeCount)).forEach(completAward -> {
|
||||
switch (completAward.getType()) {
|
||||
case 1:
|
||||
UserMoneyDetails userMoneyDetails1 = new UserMoneyDetails(
|
||||
sourceUser.getUserId(), null, null, "[分享达标额外奖励]", 6, 1, 2,
|
||||
completAward.getAwardNumber(), "邀请人员已有"+completAward.getInviteCount()+"人完成达标任务,额外奖励金币" + completAward.getAwardNumber(), 2);
|
||||
|
||||
userMoneyService.updateMoney(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue());
|
||||
userMoneyDetailsService.save(userMoneyDetails1);
|
||||
break;
|
||||
case 2:
|
||||
UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails(
|
||||
sourceUser.getUserId(), null, null, "[分享达标额外奖励]", 6, 1, 2,
|
||||
completAward.getAwardNumber(), "邀请人员已有"+completAward.getInviteCount()+"人完成达标任务,额外奖励现金红包" + completAward.getAwardNumber(), 1);
|
||||
|
||||
userMoneyService.updateAmount(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue());
|
||||
userMoneyDetailsService.save(userMoneyDetails2);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
QueryWrapper<UserMoneyDetails> moneyDetailsQuery = new QueryWrapper<>();
|
||||
moneyDetailsQuery.eq("classify", 6);
|
||||
moneyDetailsQuery.eq("user_id", sourceUser.getUserId());
|
||||
//达标人数
|
||||
int completeCount = userMoneyDetailsService.count(moneyDetailsQuery);
|
||||
completAwardService.list(new QueryWrapper<CompletAward>().eq("invite_count", completeCount)).forEach(completAward -> {
|
||||
switch (completAward.getType()) {
|
||||
case 1:
|
||||
UserMoneyDetails userMoneyDetails1 = new UserMoneyDetails(
|
||||
sourceUser.getUserId(), null, null, "[分享达标额外奖励]", 6, 1, 2,
|
||||
completAward.getAwardNumber(), "邀请人员已有" + completAward.getInviteCount() + "人完成达标任务,额外奖励金币" + completAward.getAwardNumber(), 2);
|
||||
|
||||
userMoneyService.updateMoney(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue());
|
||||
userMoneyDetailsService.save(userMoneyDetails1);
|
||||
break;
|
||||
case 2:
|
||||
UserMoneyDetails userMoneyDetails2 = new UserMoneyDetails(
|
||||
sourceUser.getUserId(), null, null, "[分享达标额外奖励]", 6, 1, 2,
|
||||
completAward.getAwardNumber(), "邀请人员已有" + completAward.getInviteCount() + "人完成达标任务,额外奖励现金红包" + completAward.getAwardNumber(), 1);
|
||||
|
||||
userMoneyService.updateAmount(1, sourceUser.getUserId(), completAward.getAwardNumber().doubleValue());
|
||||
userMoneyDetailsService.save(userMoneyDetails2);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void updateOrderStatus(PayDetails payDetails, Orders order) {
|
||||
|
|
@ -344,17 +347,20 @@ public class WuyouController {
|
|||
}
|
||||
ordersService.updateById(order);
|
||||
ordersService.insertOrders(order);
|
||||
CompletableFuture.runAsync(() -> {
|
||||
ApiAccessLimitUtil.runFunAndCheckKey(() -> {
|
||||
WuyouController proxy = applicationContext.getBean(WuyouController.class);
|
||||
proxy.activities(user, byUser);
|
||||
return null;
|
||||
}, RedisKeys.getLockKey("activaties", user.getUserId(), byUser.getUserId()), 15);
|
||||
ThreadUtil.execAsync(() -> {
|
||||
activities(user, byUser);
|
||||
});
|
||||
// CompletableFuture.runAsync(() -> {
|
||||
// ApiAccessLimitUtil.runFunAndCheckKey(() -> {
|
||||
// WuyouController proxy = applicationContext.getBean(WuyouController.class);
|
||||
// proxy.activities(user, byUser);
|
||||
// return null;
|
||||
// }, RedisKeys.getLockKey("activaties", user.getUserId(), byUser.getUserId()), 15);
|
||||
// });
|
||||
}
|
||||
|
||||
|
||||
private void updateCashAsync(NotifyDto notifyDto){
|
||||
private void updateCashAsync(NotifyDto notifyDto) {
|
||||
log.info("无忧支付提现回调, {}", notifyDto);
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("callbacks", notifyDto.getCallbacks());
|
||||
|
|
@ -373,10 +379,10 @@ public class WuyouController {
|
|||
if ("2".equals(notifyDto.getStatus())) {
|
||||
cashOut.setState(1);
|
||||
cashOut.setOutAt(DateUtil.now());
|
||||
} else if(!cashOut.getState().equals(2)){
|
||||
} else if (!cashOut.getState().equals(2)) {
|
||||
cashOut.setState(2);
|
||||
cashOut.setRefund(notifyDto.getMsg());
|
||||
if(StringUtils.isNotBlank(notifyDto.getMsg()) && notifyDto.getMsg().contains("已驳回")){
|
||||
if (StringUtils.isNotBlank(notifyDto.getMsg()) && notifyDto.getMsg().contains("已驳回")) {
|
||||
cashOut.setRefund("提现失败,请检查支付宝账号与收款人姓名后重试。");
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue