提现 / 定时任务
This commit is contained in:
@@ -9,6 +9,8 @@ public interface UserMoneyDao extends BaseMapper<UserMoney> {
|
|||||||
|
|
||||||
void updateMayMoney(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double money);
|
void updateMayMoney(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double money);
|
||||||
|
|
||||||
|
void updateMayAmount(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double amount);
|
||||||
|
|
||||||
void updateSysMoney(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("money") Double money);
|
void updateSysMoney(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("money") Double money);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,12 @@ public class UserMoney implements Serializable {
|
|||||||
@ApiModelProperty("钱包金豆")
|
@ApiModelProperty("钱包金豆")
|
||||||
private BigDecimal money;
|
private BigDecimal money;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 钱包金豆
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("钱包余额 钱")
|
||||||
|
private BigDecimal amount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户id
|
* 用户id
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ public interface UserMoneyService extends IService<UserMoney> {
|
|||||||
|
|
||||||
void updateMoney(int i, Long userId, double money);
|
void updateMoney(int i, Long userId, double money);
|
||||||
|
|
||||||
|
void updateAmount(int i, Long userId, double amount);
|
||||||
|
|
||||||
void updateSysMoney(int i, Long userId, double money);
|
void updateSysMoney(int i, Long userId, double money);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,12 @@ public class UserMoneyServiceImpl extends ServiceImpl<UserMoneyDao, UserMoney> i
|
|||||||
baseMapper.updateMayMoney(i,userId,money);
|
baseMapper.updateMayMoney(i,userId,money);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateAmount(int i, Long userId, double amount){
|
||||||
|
selectUserMoneyByUserId(userId);
|
||||||
|
baseMapper.updateMayAmount(i,userId,amount);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateSysMoney(int i, Long userId, double money){
|
public void updateSysMoney(int i, Long userId, double money){
|
||||||
selectSysUserMoneyByUserId(userId);
|
selectSysUserMoneyByUserId(userId);
|
||||||
|
|||||||
@@ -1,10 +1,16 @@
|
|||||||
package com.sqx.modules.discSpinning.controller;
|
package com.sqx.modules.discSpinning.controller;
|
||||||
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.sqx.common.utils.DateUtils;
|
import com.sqx.common.utils.DateUtils;
|
||||||
import com.sqx.common.utils.Result;
|
import com.sqx.common.utils.Result;
|
||||||
|
import com.sqx.modules.app.entity.UserEntity;
|
||||||
|
import com.sqx.modules.app.entity.UserMoney;
|
||||||
|
import com.sqx.modules.app.entity.UserMoneyDetails;
|
||||||
|
import com.sqx.modules.app.service.UserMoneyDetailsService;
|
||||||
|
import com.sqx.modules.app.service.UserMoneyService;
|
||||||
|
import com.sqx.modules.app.service.UserService;
|
||||||
|
import com.sqx.modules.common.entity.CommonInfo;
|
||||||
import com.sqx.modules.common.service.CommonInfoService;
|
import com.sqx.modules.common.service.CommonInfoService;
|
||||||
import com.sqx.modules.discSpinning.entity.DiscSpinning;
|
import com.sqx.modules.discSpinning.entity.DiscSpinning;
|
||||||
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
|
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
|
||||||
@@ -12,37 +18,55 @@ import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
|
|||||||
import com.sqx.modules.discSpinning.service.DiscSpinningService;
|
import com.sqx.modules.discSpinning.service.DiscSpinningService;
|
||||||
import com.sqx.modules.orders.entity.Orders;
|
import com.sqx.modules.orders.entity.Orders;
|
||||||
import com.sqx.modules.orders.service.OrdersService;
|
import com.sqx.modules.orders.service.OrdersService;
|
||||||
|
import com.sqx.modules.pay.entity.CashOut;
|
||||||
|
import com.sqx.modules.pay.service.CashOutService;
|
||||||
|
import com.sqx.modules.pay.wuyou.BaseResp;
|
||||||
|
import com.sqx.modules.pay.wuyou.WuyouPay;
|
||||||
|
import com.sqx.modules.utils.AliPayOrderUtil;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@Api(value = "大转盘", tags = {"大转盘"})
|
@Api(value = "大转盘", tags = {"大转盘"})
|
||||||
@RequestMapping(value = "/discSpinning")
|
@RequestMapping
|
||||||
public class DiscSpinningController {
|
public class DiscSpinningController {
|
||||||
|
|
||||||
private final DiscSpinningService discSpinningService;
|
private final DiscSpinningService discSpinningService;
|
||||||
private final CommonInfoService commonRepository;
|
private final CommonInfoService commonRepository;
|
||||||
private final OrdersService ordersService;
|
private final OrdersService ordersService;
|
||||||
private final DiscSpinningRecordService recordService;
|
private final DiscSpinningRecordService recordService;
|
||||||
|
private final UserMoneyService userMoneyService;
|
||||||
|
private final UserMoneyDetailsService userMoneyDetailsService;
|
||||||
|
private final UserService userService;
|
||||||
|
private final CashOutService cashOutService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public DiscSpinningController(CommonInfoService commonRepository, DiscSpinningService discSpinningService,OrdersService ordersService,DiscSpinningRecordService recordService) {
|
public DiscSpinningController(CommonInfoService commonRepository, DiscSpinningService discSpinningService,
|
||||||
|
UserMoneyDetailsService userMoneyDetailsService, CashOutService cashOutService,
|
||||||
|
OrdersService ordersService, DiscSpinningRecordService recordService, UserMoneyService userMoneyService, UserService userService) {
|
||||||
this.commonRepository = commonRepository;
|
this.commonRepository = commonRepository;
|
||||||
this.discSpinningService = discSpinningService;
|
this.discSpinningService = discSpinningService;
|
||||||
this.ordersService = ordersService;
|
this.ordersService = ordersService;
|
||||||
this.recordService = recordService;
|
this.recordService = recordService;
|
||||||
|
this.userMoneyService = userMoneyService;
|
||||||
|
this.userMoneyDetailsService = userMoneyDetailsService;
|
||||||
|
this.userService = userService;
|
||||||
|
this.cashOutService = cashOutService;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/insertDiscSpinning")
|
@PostMapping("/discSpinning/insertDiscSpinning")
|
||||||
@ApiOperation("添加大转盘")
|
@ApiOperation("添加大转盘")
|
||||||
public Result insertDiscSpinning(@RequestBody DiscSpinning discSpinning) {
|
public Result insertDiscSpinning(@RequestBody DiscSpinning discSpinning) {
|
||||||
discSpinning.setCreateTime(DateUtils.format(new Date()));
|
discSpinning.setCreateTime(DateUtils.format(new Date()));
|
||||||
@@ -50,13 +74,13 @@ public class DiscSpinningController {
|
|||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/discSpinning/{id}")
|
||||||
@ApiOperation("通过Id查询详情")
|
@ApiOperation("通过Id查询详情")
|
||||||
public Result selectOne(@PathVariable Integer id) {
|
public Result selectOne(@PathVariable Integer id) {
|
||||||
return Result.success().put("data", discSpinningService.getById(id));
|
return Result.success().put("data", discSpinningService.getById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/updateDiscSpinning")
|
@PostMapping("/discSpinning/updateDiscSpinning")
|
||||||
@ApiOperation("修改大转盘")
|
@ApiOperation("修改大转盘")
|
||||||
public Result updateDiscSpinning(@RequestBody DiscSpinning discSpinning) {
|
public Result updateDiscSpinning(@RequestBody DiscSpinning discSpinning) {
|
||||||
List<DiscSpinning> prizes = discSpinningService.list(new QueryWrapper<DiscSpinning>().orderByAsc("type", "id"));
|
List<DiscSpinning> prizes = discSpinningService.list(new QueryWrapper<DiscSpinning>().orderByAsc("type", "id"));
|
||||||
@@ -85,20 +109,20 @@ public class DiscSpinningController {
|
|||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/deleteDiscSpinning")
|
@PostMapping("/discSpinning/deleteDiscSpinning")
|
||||||
@ApiOperation("删除大转盘")
|
@ApiOperation("删除大转盘")
|
||||||
public Result deleteDiscSpinning(Long id) {
|
public Result deleteDiscSpinning(Long id) {
|
||||||
discSpinningService.removeById(id);
|
discSpinningService.removeById(id);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/selectDiscSpinning")
|
@GetMapping("/app/discSpinning/selectDiscSpinning")
|
||||||
@ApiOperation("查询大转盘")
|
@ApiOperation("查询大转盘")
|
||||||
public Result selectDiscSpinning() {
|
public Result selectDiscSpinning() {
|
||||||
return Result.success().put("data", discSpinningService.page(new Page<>(0, 8), new QueryWrapper<DiscSpinning>().orderByAsc("odds")));
|
return Result.success().put("data", discSpinningService.page(new Page<>(0, 8), new QueryWrapper<DiscSpinning>().orderByAsc("odds")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/draw")
|
@PostMapping("/app/discSpinning/draw")
|
||||||
@ApiOperation("抽取大转盘")
|
@ApiOperation("抽取大转盘")
|
||||||
public Result draw(Long orderId, @RequestAttribute("userId") Long userId) {
|
public Result draw(Long orderId, @RequestAttribute("userId") Long userId) {
|
||||||
int drawCount = Integer.parseInt(commonRepository.findOne(901).getValue());
|
int drawCount = Integer.parseInt(commonRepository.findOne(901).getValue());
|
||||||
@@ -110,8 +134,70 @@ public class DiscSpinningController {
|
|||||||
return new Result().put("data", draws(order.getPayMoney().doubleValue(), order.getOrdersId(), userId));
|
return new Result().put("data", draws(order.getPayMoney().doubleValue(), order.getOrdersId(), userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/app/discSpinning/receive")
|
||||||
|
@ApiOperation("大转盘奖项领取")
|
||||||
|
@Transactional
|
||||||
|
public Result receive(DiscSpinningRecord receive) {
|
||||||
|
UserEntity userInfo = userService.queryByUserId(receive.getUserId());
|
||||||
|
if (StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) {
|
||||||
|
receive.setTarget("1");
|
||||||
|
//提现
|
||||||
|
withdraw(receive, receive.getUserId(), receive.getNumber().doubleValue());
|
||||||
|
}else {
|
||||||
|
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
|
||||||
|
userMoneyDetails.setClassify(5);
|
||||||
|
userMoneyDetails.setMoney(receive.getNumber());
|
||||||
|
userMoneyDetails.setUserId(receive.getUserId());
|
||||||
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date()));
|
||||||
|
userMoneyDetails.setContent("现金大转盘:现金红包奖励");
|
||||||
|
userMoneyDetails.setTitle("现金大转盘:现金红包奖励" + receive.getNumber() + "元");
|
||||||
|
userMoneyDetails.setState(2);
|
||||||
|
userMoneyDetails.setType(1);
|
||||||
|
//存入余额 钱
|
||||||
|
userMoneyService.updateAmount(1, receive.getUserId(), receive.getNumber().doubleValue());
|
||||||
|
receive.setTarget("2");
|
||||||
|
userMoneyDetailsService.save(userMoneyDetails);
|
||||||
|
receive.setTargetId(userMoneyDetails.getId());
|
||||||
|
}
|
||||||
|
recordService.updateById(receive);
|
||||||
|
return Result.success();
|
||||||
|
}
|
||||||
|
|
||||||
public DiscSpinning draws(double orderAmount,Long orderId,Long userId) {
|
public void withdraw(DiscSpinningRecord record, Long userId, Double money) {
|
||||||
|
UserEntity userInfo = userService.queryByUserId(userId);
|
||||||
|
//最高提现金额
|
||||||
|
CommonInfo one2 = commonRepository.findOne(910);
|
||||||
|
CashOut cashOut = new CashOut();
|
||||||
|
cashOut.setIsOut(false);
|
||||||
|
cashOut.setMoney(money.toString());
|
||||||
|
cashOut.setUserId(userInfo.getUserId());
|
||||||
|
cashOut.setZhifubao(userInfo.getZhiFuBao());
|
||||||
|
cashOut.setZhifubaoName(userInfo.getZhiFuBaoName());
|
||||||
|
|
||||||
|
cashOut.setState(0);
|
||||||
|
cashOut.setRate(0.00);
|
||||||
|
cashOut.setUserType(1);
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
String date = sdf.format(new Date());
|
||||||
|
cashOut.setCreateAt(date);
|
||||||
|
if (one2 != null && money >= Double.parseDouble(one2.getValue())) {
|
||||||
|
cashOutService.saveBody(cashOut);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String outOrderNo = AliPayOrderUtil.createOrderId();
|
||||||
|
cashOut.setOrderNumber(outOrderNo);
|
||||||
|
BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
|
||||||
|
if (baseResp.getStatus().equals(2)) {
|
||||||
|
cashOut.setState(1);
|
||||||
|
}
|
||||||
|
cashOutService.saveBody(cashOut);
|
||||||
|
record.setTargetId(cashOut.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public DiscSpinningRecord draws(double orderAmount, Long orderId, Long userId) {
|
||||||
DiscSpinning result = new DiscSpinning("谢谢惠顾", 1, null);
|
DiscSpinning result = new DiscSpinning("谢谢惠顾", 1, null);
|
||||||
List<DiscSpinning> prizes = discSpinningService.list();
|
List<DiscSpinning> prizes = discSpinningService.list();
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
@@ -155,9 +241,10 @@ public class DiscSpinningController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
recordService.save(new DiscSpinningRecord(result.getName(),orderId,userId,result.getType(),
|
DiscSpinningRecord record = new DiscSpinningRecord(result.getName(), orderId, userId, result.getType(),
|
||||||
result.getNumber(),DateUtils.formatYMD(new Date()),DateUtils.format(new Date())));
|
result.getNumber(), DateUtils.formatYMD(new Date()), DateUtils.format(new Date()));
|
||||||
return result;
|
recordService.save(record);
|
||||||
|
return record;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import java.util.Date;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@Api(value = "大转盘抽奖记录", tags = {"大转盘抽奖记录"})
|
@Api(value = "大转盘抽奖记录", tags = {"大转盘抽奖记录"})
|
||||||
@RequestMapping(value = "/discSpinningRecord")
|
@RequestMapping(value = "/app/discSpinningRecord")
|
||||||
public class DiscSpinningRecordController {
|
public class DiscSpinningRecordController {
|
||||||
/**
|
/**
|
||||||
* 服务对象
|
* 服务对象
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ public class DiscSpinningRecord extends Model<DiscSpinningRecord> {
|
|||||||
//创建时间
|
//创建时间
|
||||||
private String createTime;
|
private String createTime;
|
||||||
|
|
||||||
|
public DiscSpinningRecord() {
|
||||||
|
}
|
||||||
|
|
||||||
public DiscSpinningRecord(String name, Long orderId, Long userId, Integer type, BigDecimal number, String drawDay, String createTime) {
|
public DiscSpinningRecord(String name, Long orderId, Long userId, Integer type, BigDecimal number, String drawDay, String createTime) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.userId = userId;
|
this.userId = userId;
|
||||||
|
|||||||
40
src/main/java/com/sqx/modules/job/task/CashOutTask.java
Normal file
40
src/main/java/com/sqx/modules/job/task/CashOutTask.java
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package com.sqx.modules.job.task;
|
||||||
|
|
||||||
|
import com.sqx.modules.pay.dao.CashOutDao;
|
||||||
|
import com.sqx.modules.pay.entity.CashOut;
|
||||||
|
import com.sqx.modules.pay.wuyou.BaseResp;
|
||||||
|
import com.sqx.modules.pay.wuyou.WuyouPay;
|
||||||
|
import com.sqx.modules.utils.AliPayOrderUtil;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component("CashOutTask")
|
||||||
|
public class CashOutTask implements ITask{
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CashOutDao cashOutDao;
|
||||||
|
|
||||||
|
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(String params) {
|
||||||
|
logger.info("提现开始");
|
||||||
|
List<CashOut> cashOuts = cashOutDao.selectYesterday();
|
||||||
|
for (CashOut cashOut : cashOuts) {
|
||||||
|
String outOrderNo = AliPayOrderUtil.createOrderId();
|
||||||
|
cashOut.setOrderNumber(outOrderNo);
|
||||||
|
BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
|
||||||
|
if (baseResp.getStatus().equals(2)) {
|
||||||
|
cashOut.setState(1);
|
||||||
|
}else {
|
||||||
|
cashOut.setRefund(baseResp.getMsg());
|
||||||
|
}
|
||||||
|
cashOutDao.updateById(cashOut);
|
||||||
|
}
|
||||||
|
logger.info("提现结束");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -471,5 +471,11 @@ public class CashController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping(value = "/withdraw")
|
||||||
|
@ApiOperation("发起提现 余额 金钱")
|
||||||
|
public Result withdraw(Long userId,Double amount)
|
||||||
|
{
|
||||||
|
return cashOutService.withdraw(userId,amount);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,20 +1,26 @@
|
|||||||
package com.sqx.modules.pay.controller.app;
|
package com.sqx.modules.pay.controller.app;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.sqx.common.utils.DateUtils;
|
import com.sqx.common.utils.DateUtils;
|
||||||
import com.sqx.common.utils.Result;
|
import com.sqx.common.utils.Result;
|
||||||
import com.sqx.modules.app.entity.UserEntity;
|
import com.sqx.modules.app.entity.UserEntity;
|
||||||
|
import com.sqx.modules.app.entity.UserMoney;
|
||||||
import com.sqx.modules.app.service.UserService;
|
import com.sqx.modules.app.service.UserService;
|
||||||
import com.sqx.modules.invite.service.InviteService;
|
import com.sqx.modules.invite.service.InviteService;
|
||||||
import com.sqx.modules.orders.entity.Orders;
|
import com.sqx.modules.orders.entity.Orders;
|
||||||
import com.sqx.modules.orders.service.OrdersService;
|
import com.sqx.modules.orders.service.OrdersService;
|
||||||
|
import com.sqx.modules.pay.dao.CashOutDao;
|
||||||
import com.sqx.modules.pay.dao.PayDetailsDao;
|
import com.sqx.modules.pay.dao.PayDetailsDao;
|
||||||
|
import com.sqx.modules.pay.entity.CashOut;
|
||||||
import com.sqx.modules.pay.entity.PayDetails;
|
import com.sqx.modules.pay.entity.PayDetails;
|
||||||
|
import com.sqx.modules.pay.service.CashOutService;
|
||||||
import com.sqx.modules.pay.wuyou.*;
|
import com.sqx.modules.pay.wuyou.*;
|
||||||
import com.sqx.modules.utils.AliPayOrderUtil;
|
import com.sqx.modules.utils.AliPayOrderUtil;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -37,14 +43,16 @@ public class WuyouController {
|
|||||||
private final PayDetailsDao payDetailsDao;
|
private final PayDetailsDao payDetailsDao;
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
private final InviteService inviteService;
|
private final InviteService inviteService;
|
||||||
|
private final CashOutDao cashOutDao;
|
||||||
|
|
||||||
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
WuyouController(OrdersService ordersService, PayDetailsDao payDetailsDao, UserService userService, InviteService inviteService) {
|
WuyouController(OrdersService ordersService, PayDetailsDao payDetailsDao, UserService userService, InviteService inviteService, CashOutDao cashOutDao) {
|
||||||
this.ordersService = ordersService;
|
this.ordersService = ordersService;
|
||||||
this.payDetailsDao = payDetailsDao;
|
this.payDetailsDao = payDetailsDao;
|
||||||
this.userService = userService;
|
this.userService = userService;
|
||||||
this.inviteService = inviteService;
|
this.inviteService = inviteService;
|
||||||
|
this.cashOutDao = cashOutDao;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("支付订单")
|
@ApiOperation("支付订单")
|
||||||
@@ -99,7 +107,14 @@ public class WuyouController {
|
|||||||
log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign);
|
log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign);
|
||||||
return "签名错误";
|
return "签名错误";
|
||||||
}
|
}
|
||||||
|
CashOut cashOut = cashOutDao.selectOne(new QueryWrapper<CashOut>().eq("order_number", notifyDto.getOut_trade_no()));
|
||||||
|
if (cashOut != null) {
|
||||||
|
if(notifyDto.getStatus().equals("2")){
|
||||||
|
cashOut.setState(1);
|
||||||
|
}else {
|
||||||
|
cashOut.setRefund(notifyDto.getMsg());
|
||||||
|
}
|
||||||
|
}
|
||||||
return "success";
|
return "success";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ public interface CashOutDao extends BaseMapper<CashOut> {
|
|||||||
|
|
||||||
List<CashOut> selectCashOutLimit3();
|
List<CashOut> selectCashOutLimit3();
|
||||||
|
|
||||||
|
List<CashOut> selectYesterday();
|
||||||
|
|
||||||
Double selectCashOutSum(@Param("userId") Long userId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
|
Double selectCashOutSum(@Param("userId") Long userId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
|
||||||
|
|
||||||
Double sumMoney(@Param("time") String time, @Param("flag") Integer flag);
|
Double sumMoney(@Param("time") String time, @Param("flag") Integer flag);
|
||||||
|
|||||||
@@ -42,4 +42,12 @@ public interface CashOutService {
|
|||||||
|
|
||||||
Result sysCashMoney(Long userId, Double money);
|
Result sysCashMoney(Long userId, Double money);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param userId 用户Id tb_user的id
|
||||||
|
* @param money 提现金额
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Result withdraw(Long userId, Double money);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,11 @@ import com.sqx.modules.message.entity.MessageInfo;
|
|||||||
import com.sqx.modules.pay.dao.CashOutDao;
|
import com.sqx.modules.pay.dao.CashOutDao;
|
||||||
import com.sqx.modules.pay.entity.CashOut;
|
import com.sqx.modules.pay.entity.CashOut;
|
||||||
import com.sqx.modules.pay.service.CashOutService;
|
import com.sqx.modules.pay.service.CashOutService;
|
||||||
|
import com.sqx.modules.pay.wuyou.BaseResp;
|
||||||
|
import com.sqx.modules.pay.wuyou.WuyouPay;
|
||||||
import com.sqx.modules.sys.entity.SysUserEntity;
|
import com.sqx.modules.sys.entity.SysUserEntity;
|
||||||
import com.sqx.modules.sys.service.SysUserService;
|
import com.sqx.modules.sys.service.SysUserService;
|
||||||
|
import com.sqx.modules.utils.AliPayOrderUtil;
|
||||||
import com.sqx.modules.utils.AmountCalUtils;
|
import com.sqx.modules.utils.AmountCalUtils;
|
||||||
import com.sqx.modules.utils.excel.ExcelData;
|
import com.sqx.modules.utils.excel.ExcelData;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@@ -85,9 +88,17 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
|
|||||||
ExcelData data = new ExcelData();
|
ExcelData data = new ExcelData();
|
||||||
data.setName("提现列表");
|
data.setName("提现列表");
|
||||||
List<String> titles = new ArrayList();
|
List<String> titles = new ArrayList();
|
||||||
titles.add("编号");titles.add("用户类型");titles.add("用户名称");titles.add("支付宝账号");titles.add("支付宝名称");
|
titles.add("编号");
|
||||||
titles.add("提现金豆");titles.add("状态");
|
titles.add("用户类型");
|
||||||
titles.add("拒绝原因");titles.add("申请时间");titles.add("转账/拒绝时间");titles.add("转账订单号");
|
titles.add("用户名称");
|
||||||
|
titles.add("支付宝账号");
|
||||||
|
titles.add("支付宝名称");
|
||||||
|
titles.add("提现金豆");
|
||||||
|
titles.add("状态");
|
||||||
|
titles.add("拒绝原因");
|
||||||
|
titles.add("申请时间");
|
||||||
|
titles.add("转账/拒绝时间");
|
||||||
|
titles.add("转账订单号");
|
||||||
data.setTitles(titles);
|
data.setTitles(titles);
|
||||||
List<List<Object>> rows = new ArrayList();
|
List<List<Object>> rows = new ArrayList();
|
||||||
for (CashOut cashOut : cashOutList) {
|
for (CashOut cashOut : cashOutList) {
|
||||||
@@ -100,7 +111,8 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
|
|||||||
row.add("分销商");
|
row.add("分销商");
|
||||||
row.add(cashOut.getSysUserName());
|
row.add(cashOut.getSysUserName());
|
||||||
}
|
}
|
||||||
row.add(cashOut.getZhifubao());row.add(cashOut.getZhifubaoName());
|
row.add(cashOut.getZhifubao());
|
||||||
|
row.add(cashOut.getZhifubaoName());
|
||||||
row.add(cashOut.getMoney());
|
row.add(cashOut.getMoney());
|
||||||
|
|
||||||
if (cashOut.getState() == -1) {
|
if (cashOut.getState() == -1) {
|
||||||
@@ -385,4 +397,59 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public Result withdraw(Long userId, Double money) {
|
||||||
|
if (money == null || money <= 0.00) {
|
||||||
|
return Result.error("请不要输入小于0的数字,请输入正确的提现金额!");
|
||||||
|
}
|
||||||
|
UserEntity userInfo = userService.queryByUserId(userId);
|
||||||
|
//最低提现金额
|
||||||
|
// CommonInfo one = commonInfoService.findOne(112);
|
||||||
|
// if(one!=null && money<Double.parseDouble(one.getValue())){
|
||||||
|
// return Result.error("不满足最低提现金额,请重新输入!");
|
||||||
|
// }
|
||||||
|
CashOut cashOut = new CashOut();
|
||||||
|
cashOut.setIsOut(false);
|
||||||
|
cashOut.setMoney(money.toString());
|
||||||
|
cashOut.setUserId(userInfo.getUserId());
|
||||||
|
cashOut.setZhifubao(userInfo.getZhiFuBao());
|
||||||
|
cashOut.setZhifubaoName(userInfo.getZhiFuBaoName());
|
||||||
|
|
||||||
|
cashOut.setState(0);
|
||||||
|
cashOut.setRate(0.00);
|
||||||
|
cashOut.setUserType(1);
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
String date = sdf.format(new Date());
|
||||||
|
cashOut.setCreateAt(date);
|
||||||
|
|
||||||
|
String outOrderNo = AliPayOrderUtil.createOrderId();
|
||||||
|
UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
|
||||||
|
userMoneyDetails.setSysUserId(userId);
|
||||||
|
userMoneyDetails.setTitle("提现:" + money);
|
||||||
|
userMoneyDetails.setType(2);
|
||||||
|
userMoneyDetails.setState(1);
|
||||||
|
userMoneyDetails.setClassify(4);
|
||||||
|
userMoneyDetails.setMoney(new BigDecimal(money));
|
||||||
|
userMoneyDetails.setCreateTime(date);
|
||||||
|
UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userId);
|
||||||
|
//提现判断余额是否足够
|
||||||
|
if (userMoney.getAmount().doubleValue() >= money) { //用户金豆足够
|
||||||
|
//扣除可提现余额
|
||||||
|
userMoneyService.updateAmount(2, userId, money);
|
||||||
|
}else {
|
||||||
|
return Result.success("可提现余额不足!");
|
||||||
|
}
|
||||||
|
BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName());
|
||||||
|
if (baseResp.getStatus().equals(2)) {
|
||||||
|
userMoneyDetails.setContent("成功提现:" + money);
|
||||||
|
userMoneyDetails.setState(2);
|
||||||
|
cashOut.setState(1);
|
||||||
|
}
|
||||||
|
userMoneyDetailsService.save(userMoneyDetails);
|
||||||
|
baseMapper.insert(cashOut);
|
||||||
|
return Result.success("提现成功,将在三个工作日内到账,请耐心等待!");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,12 @@ public class WuyouPay {
|
|||||||
return JSONObject.parseObject(body, BaseResp.class);
|
return JSONObject.parseObject(body, BaseResp.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提现
|
||||||
|
* @param account 支付宝账号
|
||||||
|
* @param userName 支付宝名称
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public static BaseResp extractOrder(String outOrderNo, String amount, String account, String userName) {
|
public static BaseResp extractOrder(String outOrderNo, String amount, String account, String userName) {
|
||||||
Map<String, Object> params = getBaseParams();
|
Map<String, Object> params = getBaseParams();
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,17 @@
|
|||||||
where user_id=#{userId}
|
where user_id=#{userId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="updateMayAmount">
|
||||||
|
update user_money set
|
||||||
|
<if test="type==1">
|
||||||
|
amount=amount+#{amount}
|
||||||
|
</if>
|
||||||
|
<if test="type==2">
|
||||||
|
amount=amount-#{amount}
|
||||||
|
</if>
|
||||||
|
where user_id=#{userId}
|
||||||
|
</update>
|
||||||
|
|
||||||
<update id="updateSysMoney">
|
<update id="updateSysMoney">
|
||||||
update user_money set
|
update user_money set
|
||||||
<if test="type==1">
|
<if test="type==1">
|
||||||
|
|||||||
@@ -7,6 +7,14 @@
|
|||||||
select * from cash_out where state=1 order by out_at desc limit 3
|
select * from cash_out where state=1 order by out_at desc limit 3
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectYesterday" resultType="com.sqx.modules.pay.entity.CashOut">
|
||||||
|
SELECT * FROM cash_out
|
||||||
|
WHERE
|
||||||
|
state = 0 AND user_type = 1
|
||||||
|
AND create_at < DATE_FORMAT(NOW(), '%Y-%m-%d 00:00:00' )
|
||||||
|
AND create_at > DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y-%m-%d 00:00:00')
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectCashOutSum" resultType="Double">
|
<select id="selectCashOutSum" resultType="Double">
|
||||||
select sum(money) from cash_out where state in (0,1) and user_id=#{userId} and date_format(create_at,'%Y-%m-%d') between #{startTime} and #{endTime}
|
select sum(money) from cash_out where state in (0,1) and user_id=#{userId} and date_format(create_at,'%Y-%m-%d') between #{startTime} and #{endTime}
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Reference in New Issue
Block a user