代理商提现

This commit is contained in:
GYJ
2024-12-07 10:56:22 +08:00
parent db80169234
commit a297859b47
5 changed files with 188 additions and 151 deletions

View File

@@ -11,6 +11,7 @@ import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse; import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
import com.alipay.api.response.AlipayFundTransUniTransferResponse; import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.sqx.common.utils.Result; 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.entity.UserEntity;
import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.entity.UserMoneyDetails;
import com.sqx.modules.app.service.UserMoneyDetailsService; import com.sqx.modules.app.service.UserMoneyDetailsService;
@@ -57,16 +58,24 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
@RequestMapping(value = "/cash") @RequestMapping(value = "/cash")
public class CashController { public class CashController {
/** 充值记录 */ /**
* 充值记录
*/
@Autowired @Autowired
private PayDetailsService payDetailsService; private PayDetailsService payDetailsService;
/** 提现记录 */ /**
* 提现记录
*/
@Autowired @Autowired
private CashOutService cashOutService; private CashOutService cashOutService;
/** app用户 */ /**
* app用户
*/
@Autowired @Autowired
private UserService userService; private UserService userService;
/** 通用配置 */ /**
* 通用配置
*/
@Autowired @Autowired
private CommonInfoService commonInfoService; private CommonInfoService commonInfoService;
@Autowired @Autowired
@@ -79,14 +88,14 @@ public class CashController {
private OrdersService ordersService; private OrdersService ordersService;
@Autowired @Autowired
private UserMoneyService userMoneyService; private UserMoneyService userMoneyService;
private ReentrantReadWriteLock reentrantReadWriteLock=new ReentrantReadWriteLock(true); private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(true);
@RequestMapping(value = "/sendMsgByUserId", method = RequestMethod.GET) @RequestMapping(value = "/sendMsgByUserId", method = RequestMethod.GET)
@ApiOperation("管理平台主动推送消息(指定用户)") @ApiOperation("管理平台主动推送消息(指定用户)")
@ResponseBody @ResponseBody
public Result sendMsgByUserId(String title,String content,Long userId){ public Result sendMsgByUserId(String title, String content, Long userId) {
UserEntity user = userService.queryByUserId(userId); UserEntity user = userService.queryByUserId(userId);
send(user,title,content); send(user, title, content);
return Result.success(); return Result.success();
} }
@@ -94,32 +103,32 @@ public class CashController {
@RequestMapping(value = "/sendMsg", method = RequestMethod.GET) @RequestMapping(value = "/sendMsg", method = RequestMethod.GET)
@ApiOperation("管理平台主动推送消息") @ApiOperation("管理平台主动推送消息")
@ResponseBody @ResponseBody
public Result sendMsg(String title,String content,String phone,Integer flag){ public Result sendMsg(String title, String content, String phone, Integer flag) {
if(flag==1){ if (flag == 1) {
//根据手机号推送 //根据手机号推送
UserEntity userByPhone = userService.queryByPhone(phone); UserEntity userByPhone = userService.queryByPhone(phone);
if(null==userByPhone){ if (null == userByPhone) {
return Result.error(-100,"手机号不存在!"); return Result.error(-100, "手机号不存在!");
} }
send(userByPhone,title,content); send(userByPhone, title, content);
}else{ } else {
//所有人推送 //所有人推送
List<UserEntity> userInfos = userService.list(); List<UserEntity> userInfos = userService.list();
//用户数量较大 使用多线程推送 根据用户数量进行拆分 同时按照3个线程进行推送 //用户数量较大 使用多线程推送 根据用户数量进行拆分 同时按照3个线程进行推送
int count = userInfos.size() / 3; int count = userInfos.size() / 3;
new Thread(() -> { new Thread(() -> {
for(int i=0 ;i<count;i++){ for (int i = 0; i < count; i++) {
send(userInfos.get(i),title,content); send(userInfos.get(i), title, content);
} }
}).start(); }).start();
new Thread(() -> { new Thread(() -> {
for(int i=count ;i<count*2;i++){ for (int i = count; i < count * 2; i++) {
send(userInfos.get(i),title,content); send(userInfos.get(i), title, content);
} }
}).start(); }).start();
new Thread(() -> { new Thread(() -> {
for(int i=count*2 ;i<userInfos.size();i++){ for (int i = count * 2; i < userInfos.size(); i++) {
send(userInfos.get(i),title,content); send(userInfos.get(i), title, content);
} }
}).start(); }).start();
/* for(UserInfo userByPhone:userInfos){ /* for(UserInfo userByPhone:userInfos){
@@ -129,7 +138,7 @@ public class CashController {
return Result.success(); return Result.success();
} }
private void send(UserEntity userByPhone,String title,String content){ private void send(UserEntity userByPhone, String title, String content) {
if (userByPhone.getClientid() != null) { if (userByPhone.getClientid() != null) {
userService.pushToSingle(title, content, userByPhone.getClientid()); userService.pushToSingle(title, content, userByPhone.getClientid());
} }
@@ -147,22 +156,22 @@ public class CashController {
@RequestMapping(value = "/selectCashOut", method = RequestMethod.GET) @RequestMapping(value = "/selectCashOut", method = RequestMethod.GET)
@ApiOperation("获取最新的提现信息") @ApiOperation("获取最新的提现信息")
@ResponseBody @ResponseBody
public Result selectCashOut(){ public Result selectCashOut() {
return Result.success().put("data",cashOutService.selectCashOutLimit3()); return Result.success().put("data", cashOutService.selectCashOutLimit3());
} }
@RequestMapping(value = "/selectSumPay", method = RequestMethod.GET) @RequestMapping(value = "/selectSumPay", method = RequestMethod.GET)
@ApiOperation("查询用户充值金豆") @ApiOperation("查询用户充值金豆")
@ResponseBody @ResponseBody
public Result selectSumPay(String createTime,String endTime,Long userId){ public Result selectSumPay(String createTime, String endTime, Long userId) {
return Result.success().put("data",payDetailsService.selectSumPay(createTime,endTime,userId)); return Result.success().put("data", payDetailsService.selectSumPay(createTime, endTime, userId));
} }
@RequestMapping(value = "/selectUserRecharge", method = RequestMethod.GET) @RequestMapping(value = "/selectUserRecharge", method = RequestMethod.GET)
@ApiOperation("查询所有用户充值信息列表") @ApiOperation("查询所有用户充值信息列表")
@ResponseBody @ResponseBody
public Result selectUserRecharge(int page, int limit, String startTime, String endTime, Integer state,String userName,String orderId) { public Result selectUserRecharge(int page, int limit, String startTime, String endTime, Integer state, String userName, String orderId) {
return Result.success().put("data", payDetailsService.selectPayDetails(page, limit, startTime, endTime, null, state,userName,orderId)); return Result.success().put("data", payDetailsService.selectPayDetails(page, limit, startTime, endTime, null, state, userName, orderId));
} }
@RequestMapping(value = "/selectUserRechargeByUserId", method = RequestMethod.GET) @RequestMapping(value = "/selectUserRechargeByUserId", method = RequestMethod.GET)
@@ -182,72 +191,72 @@ public class CashController {
@RequestMapping(value = "/selectPayDetails", method = RequestMethod.GET) @RequestMapping(value = "/selectPayDetails", method = RequestMethod.GET)
@ApiOperation("查询提现记录列表") @ApiOperation("查询提现记录列表")
@ResponseBody @ResponseBody
public Result selectHelpProfit(int page,int limit,CashOut cashOut){ public Result selectHelpProfit(int page, int limit, CashOut cashOut) {
return Result.success().put("data",cashOutService.selectCashOutList(page,limit,cashOut)); return Result.success().put("data", cashOutService.selectCashOutList(page, limit, cashOut));
} }
@RequestMapping(value = "/excelPayDetails", method = RequestMethod.GET) @RequestMapping(value = "/excelPayDetails", method = RequestMethod.GET)
@ApiOperation("查询提现记录列表") @ApiOperation("查询提现记录列表")
@ResponseBody @ResponseBody
public void excelPayDetails(CashOut cashOut, public void excelPayDetails(CashOut cashOut,
HttpServletResponse response)throws Exception { HttpServletResponse response) throws Exception {
ExcelData data = cashOutService.excelPayDetails(cashOut); ExcelData data = cashOutService.excelPayDetails(cashOut);
ExportExcelUtils.exportExcel(response,"财务列表.xlsx",data); ExportExcelUtils.exportExcel(response, "财务列表.xlsx", data);
} }
@ApiOperation("财务提现统计") @ApiOperation("财务提现统计")
@GetMapping("/statisticsCashMoney") @GetMapping("/statisticsCashMoney")
public Result statisticsMoney(String time,Integer flag){ public Result statisticsMoney(String time, Integer flag) {
Double sumMoney = cashOutService.sumMoney(time, flag); Double sumMoney = cashOutService.sumMoney(time, flag);
Integer countMoney = cashOutService.countMoney(time, flag); Integer countMoney = cashOutService.countMoney(time, flag);
Integer stayMoney = cashOutService.stayMoney(time, flag); Integer stayMoney = cashOutService.stayMoney(time, flag);
Map<String,Object> map=new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("sumMoney",sumMoney==null?0.00:sumMoney); map.put("sumMoney", sumMoney == null ? 0.00 : sumMoney);
map.put("countMoney",countMoney==null?0:countMoney); map.put("countMoney", countMoney == null ? 0 : countMoney);
map.put("stayMoney",stayMoney==null?0:stayMoney); map.put("stayMoney", stayMoney == null ? 0 : stayMoney);
return Result.success().put("data",map); return Result.success().put("data", map);
} }
@ApiOperation("充值统计") @ApiOperation("充值统计")
@GetMapping("/payMember") @GetMapping("/payMember")
public Result payMember(String time,Integer flag,Integer payClassify){ public Result payMember(String time, Integer flag, Integer payClassify) {
Double sumMoney = payDetailsService.selectSumPayByClassify(time, flag, null,payClassify); Double sumMoney = payDetailsService.selectSumPayByClassify(time, flag, null, payClassify);
//1app微信 2微信公众号 3微信小程序 4支付宝app 5支付宝h5 6抖音 7苹果 8快手 //1app微信 2微信公众号 3微信小程序 4支付宝app 5支付宝h5 6抖音 7苹果 8快手
Double weiXinAppMoney = payDetailsService.selectSumPayByClassify(time, flag, 1,payClassify); Double weiXinAppMoney = payDetailsService.selectSumPayByClassify(time, flag, 1, payClassify);
Double weiXinGZHMoney = payDetailsService.selectSumPayByClassify(time, flag, 2,payClassify); Double weiXinGZHMoney = payDetailsService.selectSumPayByClassify(time, flag, 2, payClassify);
Double weiXinXCXMoney = payDetailsService.selectSumPayByClassify(time, flag, 3,payClassify); Double weiXinXCXMoney = payDetailsService.selectSumPayByClassify(time, flag, 3, payClassify);
Double zhiFuBaoAppMoney = payDetailsService.selectSumPayByClassify(time, flag, 4,payClassify); Double zhiFuBaoAppMoney = payDetailsService.selectSumPayByClassify(time, flag, 4, payClassify);
Double zhiFuBaoH5Money = payDetailsService.selectSumPayByClassify(time, flag, 5,payClassify); Double zhiFuBaoH5Money = payDetailsService.selectSumPayByClassify(time, flag, 5, payClassify);
Double dyMoney = payDetailsService.selectSumPayByClassify(time, flag, 6,payClassify); Double dyMoney = payDetailsService.selectSumPayByClassify(time, flag, 6, payClassify);
Double iosMoney = payDetailsService.selectSumPayByClassify(time, flag, 7,payClassify); Double iosMoney = payDetailsService.selectSumPayByClassify(time, flag, 7, payClassify);
Double ksMoney = payDetailsService.selectSumPayByClassify(time, flag, 8,payClassify); Double ksMoney = payDetailsService.selectSumPayByClassify(time, flag, 8, payClassify);
Map<String,Object> map=new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("sumMoney",sumMoney==null?0.00:sumMoney); map.put("sumMoney", sumMoney == null ? 0.00 : sumMoney);
map.put("weiXinAppMoney",weiXinAppMoney==null?0.00:weiXinAppMoney); map.put("weiXinAppMoney", weiXinAppMoney == null ? 0.00 : weiXinAppMoney);
map.put("weiXinGZHMoney",weiXinGZHMoney==null?0.00:weiXinGZHMoney); map.put("weiXinGZHMoney", weiXinGZHMoney == null ? 0.00 : weiXinGZHMoney);
map.put("weiXinXCXMoney",weiXinXCXMoney==null?0.00:weiXinXCXMoney); map.put("weiXinXCXMoney", weiXinXCXMoney == null ? 0.00 : weiXinXCXMoney);
map.put("zhiFuBaoAppMoney",zhiFuBaoAppMoney==null?0.00:zhiFuBaoAppMoney); map.put("zhiFuBaoAppMoney", zhiFuBaoAppMoney == null ? 0.00 : zhiFuBaoAppMoney);
map.put("zhiFuBaoH5Money",zhiFuBaoH5Money==null?0.00:zhiFuBaoH5Money); map.put("zhiFuBaoH5Money", zhiFuBaoH5Money == null ? 0.00 : zhiFuBaoH5Money);
map.put("dyMoney",dyMoney==null?0.00:dyMoney); map.put("dyMoney", dyMoney == null ? 0.00 : dyMoney);
map.put("iosMoney",iosMoney==null?0.00:iosMoney); map.put("iosMoney", iosMoney == null ? 0.00 : iosMoney);
map.put("ksMoney",ksMoney==null?0.00:ksMoney); map.put("ksMoney", ksMoney == null ? 0.00 : ksMoney);
return Result.success().put("data",map); return Result.success().put("data", map);
} }
@ApiOperation("收入统计") @ApiOperation("收入统计")
@GetMapping("/statisticsIncomeMoney") @GetMapping("/statisticsIncomeMoney")
public Result statisticsIncomeMoney(String time,Integer flag){ public Result statisticsIncomeMoney(String time, Integer flag) {
Double sumMoney = ordersService.statisticsIncomeMoney(time, flag, null); Double sumMoney = ordersService.statisticsIncomeMoney(time, flag, null);
Double courseMoney = ordersService.statisticsIncomeMoney(time, flag, 1); Double courseMoney = ordersService.statisticsIncomeMoney(time, flag, 1);
Double vipMoney = ordersService.statisticsIncomeMoney(time, flag, 2); Double vipMoney = ordersService.statisticsIncomeMoney(time, flag, 2);
Map<String,Object> map=new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("sumMoney",sumMoney==null?0.00:sumMoney); map.put("sumMoney", sumMoney == null ? 0.00 : sumMoney);
map.put("courseMoney",courseMoney==null?0.00:courseMoney); map.put("courseMoney", courseMoney == null ? 0.00 : courseMoney);
map.put("vipMoney",vipMoney==null?0.00:vipMoney); map.put("vipMoney", vipMoney == null ? 0.00 : vipMoney);
return Result.success().put("data",map); return Result.success().put("data", map);
} }
@@ -265,11 +274,11 @@ public class CashController {
return Result.error("提现记录不存在!"); return Result.error("提现记录不存在!");
} }
//订单状态不是待转帐 //订单状态不是待转帐
if (one.getState()!=0) { if (one.getState() != 0) {
return Result.error(9999, one.getZhifubaoName() + "转账失败!原因是用户已转账"); return Result.error(9999, one.getZhifubaoName() + "转账失败!原因是用户已转账");
} }
//订单编号为空 //订单编号为空
if(StringUtils.isEmpty(one.getOrderNumber())){ if (StringUtils.isEmpty(one.getOrderNumber())) {
one.setOrderNumber(String.valueOf(System.currentTimeMillis())); one.setOrderNumber(String.valueOf(System.currentTimeMillis()));
} }
//配置文件对象 //配置文件对象
@@ -292,27 +301,27 @@ public class CashController {
String rootCertPath=this.getClass().getClassLoader().getResource("zhifubao/alipayRootCert.crt").getPath(); String rootCertPath=this.getClass().getClassLoader().getResource("zhifubao/alipayRootCert.crt").getPath();
//获取的文件路径前缀会携带斜杠 所以截取掉*/ //获取的文件路径前缀会携带斜杠 所以截取掉*/
CommonInfo url = commonInfoService.findOne(200); CommonInfo url = commonInfoService.findOne(200);
certAlipayRequest.setCertPath(url.getValue()+"/appCertPublicKey.crt"); //应用公钥证书路径app_cert_path 文件绝对路径) certAlipayRequest.setCertPath(url.getValue() + "/appCertPublicKey.crt"); //应用公钥证书路径app_cert_path 文件绝对路径)
certAlipayRequest.setAlipayPublicCertPath(url.getValue()+"/alipayCertPublicKey_RSA2.crt"); //支付宝公钥证书文件路径alipay_cert_path 文件绝对路径) certAlipayRequest.setAlipayPublicCertPath(url.getValue() + "/alipayCertPublicKey_RSA2.crt"); //支付宝公钥证书文件路径alipay_cert_path 文件绝对路径)
certAlipayRequest.setRootCertPath(url.getValue()+"/alipayRootCert.crt"); //支付宝CA根证书文件路径alipay_root_cert_path 文件绝对路径) certAlipayRequest.setRootCertPath(url.getValue() + "/alipayRootCert.crt"); //支付宝CA根证书文件路径alipay_root_cert_path 文件绝对路径)
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
request.setBizContent("{" + request.setBizContent("{" +
"\"out_biz_no\":\""+one.getOrderNumber()+"\"," + //订单编号 "\"out_biz_no\":\"" + one.getOrderNumber() + "\"," + //订单编号
"\"trans_amount\":"+new BigDecimal(one.getMoney())+"," + //转账金豆 "\"trans_amount\":" + new BigDecimal(one.getMoney()) + "," + //转账金豆
"\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," + "\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," +
"\"biz_scene\":\"DIRECT_TRANSFER\"," + "\"biz_scene\":\"DIRECT_TRANSFER\"," +
"\"order_title\":\""+name.getValue() + "佣金结算"+"\"," + "\"order_title\":\"" + name.getValue() + "佣金结算" + "\"," +
"\"payee_info\":{" + "\"payee_info\":{" +
"\"identity\":\""+one.getZhifubao()+"\"," + //支付宝账号 "\"identity\":\"" + one.getZhifubao() + "\"," + //支付宝账号
"\"identity_type\":\"ALIPAY_LOGON_ID\"," + "\"identity_type\":\"ALIPAY_LOGON_ID\"," +
"\"name\":\""+one.getZhifubaoName()+"\"," + //支付宝名称 "\"name\":\"" + one.getZhifubaoName() + "\"," + //支付宝名称
"}," + "}," +
"\"remark\":\""+name.getValue() + "佣金结算"+"\"" + "\"remark\":\"" + name.getValue() + "佣金结算" + "\"" +
"}"); "}");
AlipayFundTransUniTransferResponse response = null; AlipayFundTransUniTransferResponse response = null;
response = alipayClient.certificateExecute(request); response = alipayClient.certificateExecute(request);
log.error("支付宝转账返回值:"+response.getBody()); log.error("支付宝转账返回值:" + response.getBody());
//如果转账成功 //如果转账成功
if (AliPayConstants.SUCCESS_CODE.equalsIgnoreCase(response.getCode())) { if (AliPayConstants.SUCCESS_CODE.equalsIgnoreCase(response.getCode())) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -323,10 +332,10 @@ public class CashController {
//更新转账订单 //更新转账订单
cashOutService.update(one); cashOutService.update(one);
//查询用户 //查询用户
UserEntity userInfo=userService.queryByUserId(one.getUserId()); UserEntity userInfo = userService.queryByUserId(one.getUserId());
if (userInfo != null && userInfo.getOpenId() != null) { if (userInfo != null && userInfo.getOpenId() != null) {
//提现通知消息 //提现通知消息
cashOutService.cashOutSuccess(userInfo.getOpenId(), one.getOutAt(), one.getMoney(), one.getZhifubao(), commonInfoService.findOne(19).getValue()); cashOutService.cashOutSuccess(userInfo.getOpenId(), one.getOutAt(), one.getMoney(), one.getZhifubao(), commonInfoService.findOne(19).getValue());
} }
return Result.success(one.getZhifubaoName() + "转账成功"); return Result.success(one.getZhifubaoName() + "转账成功");
@@ -339,7 +348,7 @@ public class CashController {
return Result.error(9999, one.getZhifubaoName() + "转账失败!" + e.getMessage()); return Result.error(9999, one.getZhifubaoName() + "转账失败!" + e.getMessage());
} }
}else if(commonInfo.getValue() != null && commonInfo.getValue().equals("2")){ } else if (commonInfo.getValue() != null && commonInfo.getValue().equals("2")) {
AlipayClient alipayClient = new DefaultAlipayClient(AliPayConstants.REQUEST_URL, AlipayClient alipayClient = new DefaultAlipayClient(AliPayConstants.REQUEST_URL,
commonInfoService.findOne(63).getValue(), commonInfoService.findOne(65).getValue(), AliPayConstants.FORMAT, commonInfoService.findOne(63).getValue(), commonInfoService.findOne(65).getValue(), AliPayConstants.FORMAT,
AliPayConstants.CHARSET, commonInfoService.findOne(64).getValue(), AliPayConstants.SIGNTYPE); AliPayConstants.CHARSET, commonInfoService.findOne(64).getValue(), AliPayConstants.SIGNTYPE);
@@ -366,10 +375,10 @@ public class CashController {
//更新转账订单 //更新转账订单
cashOutService.update(one); cashOutService.update(one);
//查询用户 //查询用户
UserEntity userInfo=userService.queryByUserId(one.getUserId()); UserEntity userInfo = userService.queryByUserId(one.getUserId());
if (userInfo != null && userInfo.getOpenId() != null) { if (userInfo != null && userInfo.getOpenId() != null) {
//推送提现通知消息 //推送提现通知消息
cashOutService.cashOutSuccess(userInfo.getOpenId(), one.getOutAt(), one.getMoney(), one.getZhifubao(),commonInfoService.findOne(19).getValue()); cashOutService.cashOutSuccess(userInfo.getOpenId(), one.getOutAt(), one.getMoney(), one.getZhifubao(), commonInfoService.findOne(19).getValue());
} }
return Result.success(one.getZhifubaoName() + "转账成功"); return Result.success(one.getZhifubaoName() + "转账成功");
} else { } else {
@@ -381,42 +390,41 @@ public class CashController {
return Result.error(9999, one.getZhifubaoName() + "转账失败!" + e.getMessage()); return Result.error(9999, one.getZhifubaoName() + "转账失败!" + e.getMessage());
} }
} else{ } else {
//人工转账后改变状态的 //人工转账后改变状态的
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date(); Date now = new Date();
one.setState(1); one.setState(1);
one.setOutAt(sdf.format(now)); one.setOutAt(sdf.format(now));
cashOutService.update(one); cashOutService.update(one);
UserEntity userInfo=userService.queryByUserId(one.getUserId()); UserEntity userInfo = userService.queryByUserId(one.getUserId());
if (userInfo != null && userInfo.getOpenId() != null) { if (userInfo != null && userInfo.getOpenId() != null) {
//推送提现通知消息 //推送提现通知消息
cashOutService.cashOutSuccess(userInfo.getOpenId(), one.getOutAt(), one.getMoney(), one.getZhifubao(),commonInfoService.findOne(19).getValue()); cashOutService.cashOutSuccess(userInfo.getOpenId(), one.getOutAt(), one.getMoney(), one.getZhifubao(), commonInfoService.findOne(19).getValue());
} }
return Result.success(one.getZhifubaoName() + "转账成功"); return Result.success(one.getZhifubaoName() + "转账成功");
} }
}catch (Exception e){ } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error("转账异常"+e.getMessage(),e); log.error("转账异常" + e.getMessage(), e);
}finally { } finally {
reentrantReadWriteLock.writeLock().unlock(); reentrantReadWriteLock.writeLock().unlock();
} }
return Result.error("系统繁忙,请稍后再试!"); return Result.error("系统繁忙,请稍后再试!");
} }
@RequestMapping(value = "/refund/{cashId}/{content}", method = RequestMethod.POST) @RequestMapping(value = "/refund/{cashId}/{content}", method = RequestMethod.POST)
@ApiOperation("管理平台退款") @ApiOperation("管理平台退款")
@ResponseBody @ResponseBody
public Result refund(@PathVariable("cashId") Long cashId,@PathVariable("content") String content) { public Result refund(@PathVariable("cashId") Long cashId, @PathVariable("content") String content) {
CashOut one = cashOutService.selectById(cashId); CashOut one = cashOutService.selectById(cashId);
if (one == null) { if (one == null) {
return Result.error("提现信息不存在"); return Result.error("提现信息不存在");
} }
//将状态为待提现的退款 //将状态为待提现的退款
if(one.getState()!=0){ if (one.getState() != 0) {
return Result.error(-100,"状态错误,已经转账或退款!"); return Result.error(-100, "状态错误,已经转账或退款!");
} }
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date(); Date now = new Date();
@@ -428,36 +436,36 @@ public class CashController {
Long userId = one.getUserId(); Long userId = one.getUserId();
double v = Double.parseDouble(one.getMoney()); double v = Double.parseDouble(one.getMoney());
if(one.getRate()!=null && one.getRate()>0.00){ if (one.getRate() != null && one.getRate() > 0.00) {
v= AmountCalUtils.add(new BigDecimal(v), BigDecimal.valueOf(one.getRate())).doubleValue(); v = AmountCalUtils.add(new BigDecimal(v), BigDecimal.valueOf(one.getRate())).doubleValue();
} }
//将金豆退还 //将金豆退还
if(one.getSysUserId()!=null){ if (one.getSysUserId() != null) {
UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setSysUserId(one.getSysUserId()); userMoneyDetails.setSysUserId(one.getSysUserId());
userMoneyDetails.setTitle("[退款提醒]提现失败:"+one.getMoney()+",退还手续费:"+one.getRate()+",总退还:"+v); userMoneyDetails.setTitle("[退款提醒]提现失败:" + one.getMoney() + ",退还手续费:" + one.getRate() + ",总退还:" + v);
userMoneyDetails.setContent(content); userMoneyDetails.setContent(content);
userMoneyDetails.setType(1); userMoneyDetails.setType(1);
userMoneyDetails.setClassify(2); userMoneyDetails.setClassify(2);
userMoneyDetails.setMoney(new BigDecimal(v)); userMoneyDetails.setMoney(new BigDecimal(v));
userMoneyDetails.setCreateTime(sdf.format(now)); userMoneyDetails.setCreateTime(sdf.format(now));
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
userMoneyService.updateSysMoney(1,userId,v); userMoneyService.updateSysMoney(1, userId, v);
}else{ } else {
UserEntity userInfo = userService.queryByUserId(userId); UserEntity userInfo = userService.queryByUserId(userId);
UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); UserMoneyDetails userMoneyDetails = new UserMoneyDetails();
userMoneyDetails.setUserId(userInfo.getUserId()); userMoneyDetails.setUserId(userInfo.getUserId());
userMoneyDetails.setTitle("[退款提醒]提现失败:"+one.getMoney()+",退还手续费:"+one.getRate()+",总退还:"+v); userMoneyDetails.setTitle("[退款提醒]提现失败:" + one.getMoney() + ",退还手续费:" + one.getRate() + ",总退还:" + v);
userMoneyDetails.setContent(content); userMoneyDetails.setContent(content);
userMoneyDetails.setType(1); userMoneyDetails.setType(1);
userMoneyDetails.setClassify(2); userMoneyDetails.setClassify(2);
userMoneyDetails.setMoney(new BigDecimal(v)); userMoneyDetails.setMoney(new BigDecimal(v));
userMoneyDetails.setCreateTime(sdf.format(now)); userMoneyDetails.setCreateTime(sdf.format(now));
userMoneyDetailsService.save(userMoneyDetails); userMoneyDetailsService.save(userMoneyDetails);
inviteMoneyDao.updateInviteMoneyCashOut(1,v,userId); inviteMoneyDao.updateInviteMoneyCashOut(1, v, userId);
if (userInfo.getOpenId() != null) { if (userInfo.getOpenId() != null) {
//推送提现通知消息 //推送提现通知消息
cashOutService.refundSuccess(userInfo, one.getOutAt(), one.getMoney(), commonInfoService.findOne(19).getValue(),content); cashOutService.refundSuccess(userInfo, one.getOutAt(), one.getMoney(), commonInfoService.findOne(19).getValue(), content);
} }
} }
return Result.success(); return Result.success();
@@ -465,9 +473,15 @@ public class CashController {
@GetMapping(value = "/cashMoney") @GetMapping(value = "/cashMoney")
@ApiOperation("发起提现") @ApiOperation("发起提现")
public Result cashMoney(Long userId,Double money) public Result cashMoney(Long userId, Double money) {
{ return cashOutService.sysCashMoney(userId, money);
return cashOutService.sysCashMoney(userId,money); }
@Login
@GetMapping(value = "/withdraw")
@ApiOperation("发起提现 余额 金钱")
public Result withdraw(Long userId, Double amount) {
return cashOutService.withdraw(userId, amount, true);
} }

View File

@@ -24,7 +24,9 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping(value = "/app/cash") @RequestMapping(value = "/app/cash")
public class AppCashController { public class AppCashController {
/** 提现记录 */ /**
* 提现记录
*/
@Autowired @Autowired
private CashOutService cashOutService; private CashOutService cashOutService;
@Autowired @Autowired
@@ -37,40 +39,40 @@ public class AppCashController {
@GetMapping(value = "/cashMoney") @GetMapping(value = "/cashMoney")
@ApiOperation("发起提现 余额 金豆") @ApiOperation("发起提现 余额 金豆")
public Result cashMoney(@RequestAttribute("userId") Long userId, Double money) { public Result cashMoney(@RequestAttribute("userId") Long userId, Double money) {
return cashOutService.cashMoney(userId,money); return cashOutService.cashMoney(userId, money);
} }
@Login @Login
@GetMapping(value = "/withdraw") @GetMapping(value = "/withdraw")
@ApiOperation("发起提现 余额 金钱") @ApiOperation("发起提现 余额 金钱")
public Result withdraw(@RequestAttribute("userId") Long userId,Double amount) { public Result withdraw(@RequestAttribute("userId") Long userId, Double amount) {
return cashOutService.withdraw(userId,amount); return cashOutService.withdraw(userId, amount, false);
} }
@Login @Login
@RequestMapping(value = "/selectUserRechargeByUserId", method = RequestMethod.GET) @RequestMapping(value = "/selectUserRechargeByUserId", method = RequestMethod.GET)
@ApiOperation("查询某个用户充值信息列表") @ApiOperation("查询某个用户充值信息列表")
@ResponseBody @ResponseBody
public Result selectUserRechargeByUserId(int page,int limit,String startTime,String endTime,@RequestAttribute("userId") Long userId,Integer state){ public Result selectUserRechargeByUserId(int page, int limit, String startTime, String endTime, @RequestAttribute("userId") Long userId, Integer state) {
return Result.success().put("data",payDetailsService.selectPayDetails(page,limit,startTime,endTime,userId,state,null,null)); return Result.success().put("data", payDetailsService.selectPayDetails(page, limit, startTime, endTime, userId, state, null, null));
} }
@Login @Login
@RequestMapping(value = "/selectPayDetails", method = RequestMethod.GET) @RequestMapping(value = "/selectPayDetails", method = RequestMethod.GET)
@ApiOperation("查询提现记录列表") @ApiOperation("查询提现记录列表")
@ResponseBody @ResponseBody
public Result selectHelpProfit(int page,int limit,@RequestAttribute("userId") Long userId){ public Result selectHelpProfit(int page, int limit, @RequestAttribute("userId") Long userId) {
CashOut cashOut=new CashOut(); CashOut cashOut = new CashOut();
cashOut.setUserId(userId); cashOut.setUserId(userId);
PageUtils pageUtils = cashOutService.selectCashOutList(page,limit,cashOut); PageUtils pageUtils = cashOutService.selectCashOutList(page, limit, cashOut);
return Result.success().put("data",pageUtils); return Result.success().put("data", pageUtils);
} }
@Login @Login
@ApiOperation("钱包明细") @ApiOperation("钱包明细")
@GetMapping("/queryUserMoneyDetails") @GetMapping("/queryUserMoneyDetails")
public Result queryUserMoneyDetails(Integer page, Integer limit,@RequestAttribute("userId") Long userId,Integer classify,Integer type) { public Result queryUserMoneyDetails(Integer page, Integer limit, @RequestAttribute("userId") Long userId, Integer classify, Integer type) {
return userMoneyDetailsService.queryUserMoneyDetails(page, limit,null, userId,2,type); return userMoneyDetailsService.queryUserMoneyDetails(page, limit, null, userId, 2, type);
} }

View File

@@ -24,10 +24,8 @@ 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.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;

View File

@@ -46,8 +46,8 @@ public interface CashOutService {
* *
* @param userId 用户Id tb_user的id * @param userId 用户Id tb_user的id
* @param money 提现金额 * @param money 提现金额
* @return * @param isSys 是否是系统用户提现
*/ */
Result withdraw(Long userId, Double money); Result withdraw(Long userId, Double money, boolean isSys);
} }

View File

@@ -87,7 +87,7 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
List<CashOut> cashOutList = baseMapper.selectCashOutList(cashOut1); List<CashOut> cashOutList = baseMapper.selectCashOutList(cashOut1);
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("用户名称");
@@ -100,9 +100,9 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
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) {
List<Object> row = new ArrayList(); List<Object> row = new ArrayList<>();
row.add(cashOut.getId()); row.add(cashOut.getId());
if (cashOut.getUserType() == 1) { if (cashOut.getUserType() == 1) {
row.add("用户"); row.add("用户");
@@ -186,11 +186,6 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
/** /**
* 退款成功通知 * 退款成功通知
*
* @param
* @param date
* @param money
* @param url
*/ */
@Override @Override
public void refundSuccess(UserEntity userByWxId, String date, String money, String url, String content) { public void refundSuccess(UserEntity userByWxId, String date, String money, String url, String content) {
@@ -296,16 +291,17 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
} }
//手续费 //手续费
CommonInfo one1 = commonInfoService.findOne(152); CommonInfo one1 = commonInfoService.findOne(152);
Double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue())); double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue()));
if (mul < 0.01) { if (mul < 0.01) {
mul = 0.01; mul = 0.01;
} }
// UserMoney userMoney=userMoneyService.selectUserMoneyByUserId(userId); // UserMoney userMoney=userMoneyService.selectUserMoneyByUserId(userId);
InviteMoney inviteMoney = inviteMoneyService.selectInviteMoneyByUserId(userId); InviteMoney inviteMoney = inviteMoneyService.selectInviteMoneyByUserId(userId);
UserEntity userEntity = userService.selectUserById(userId); UserEntity userEntity = userService.selectUserById(userId);
//提现判断金豆是否足够 // 提现判断金豆是否足够 金豆=提现金豆+手续费
Double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue(); //金豆=提现金豆+手续费 Double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue();
if (inviteMoney.getMoney() >= moneySum) { //用户金豆足够 // 用户金豆足够
if (inviteMoney.getMoney() >= moneySum) {
//扣除可提现金豆 //扣除可提现金豆
inviteMoneyService.updateInviteMoneyCashOut(2, moneySum, userId); inviteMoneyService.updateInviteMoneyCashOut(2, moneySum, userId);
//增加金豆操作记录 //增加金豆操作记录
@@ -355,16 +351,17 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
} }
//手续费 //手续费
CommonInfo one1 = commonInfoService.findOne(152); CommonInfo one1 = commonInfoService.findOne(152);
Double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue())); double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue()));
if (mul < 0.01) { if (mul < 0.01) {
mul = 0.01; mul = 0.01;
} }
UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(userId); UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(userId);
SysUserEntity sysUserEntity = sysUserService.getById(userId); SysUserEntity sysUserEntity = sysUserService.getById(userId);
//提现判断金豆是否足够 //提现判断金豆是否足够 金豆=提现金豆+手续费
Double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue(); //金豆=提现金豆+手续费 double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue();
if (userMoney.getMoney().doubleValue() >= moneySum) { //用户金豆足够 // 用户金豆足够
if (userMoney.getMoney().doubleValue() >= moneySum) {
//扣除可提现金豆 //扣除可提现金豆
userMoneyService.updateSysMoney(2, userId, moneySum); userMoneyService.updateSysMoney(2, userId, moneySum);
//增加金豆操作记录 //增加金豆操作记录
@@ -400,25 +397,46 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
@Override @Override
@Transactional @Transactional
public Result withdraw(Long userId, Double money) { public Result withdraw(Long userId, Double money, boolean isSys) {
if (money == null || money <= 0.00) { if (money == null || money <= 0.00) {
return Result.error("请不要输入小于0的数字,请输入正确的提现金额!"); return Result.error("请不要输入小于0的数字,请输入正确的提现金额!");
} }
UserEntity userInfo = userService.queryByUserId(userId);
if (StringUtils.isBlank(userInfo.getZhiFuBao()) || StringUtils.isBlank(userInfo.getZhiFuBaoName())) { String alipayAccount;
return Result.error(9999, "请先绑定支付宝账号!"); String alipayName;
if (isSys) {
SysUserEntity sysUserEntity = sysUserService.getById(userId);
if (StringUtils.isBlank(sysUserEntity.getZhiFuBao()) || StringUtils.isBlank(sysUserEntity.getZhiFuBaoName())) {
return Result.error(9999, "请先绑定支付宝账号!");
}
alipayAccount = sysUserEntity.getZhiFuBao();
alipayName = sysUserEntity.getZhiFuBaoName();
} else {
UserEntity userInfo = userService.queryByUserId(userId);
if (StringUtils.isBlank(userInfo.getZhiFuBao()) || StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
return Result.error(9999, "请先绑定支付宝账号!");
}
alipayAccount = userInfo.getZhiFuBao();
alipayName = userInfo.getZhiFuBaoName();
} }
//最低提现金额
// CommonInfo one = commonInfoService.findOne(112); // 最低提现金额
// if(one!=null && money<Double.parseDouble(one.getValue())){ CommonInfo one = commonInfoService.findOne(112);
// return Result.error("不满足最低提现金额,请重新输入!"); if(one!=null && money<Double.parseDouble(one.getValue())){
// } return Result.error("不满足最低提现金额,请重新输入!");
}
CashOut cashOut = new CashOut(); CashOut cashOut = new CashOut();
cashOut.setIsOut(false); cashOut.setIsOut(false);
cashOut.setMoney(money.toString()); cashOut.setMoney(money.toString());
cashOut.setUserId(userInfo.getUserId()); if (isSys) {
cashOut.setZhifubao(userInfo.getZhiFuBao()); cashOut.setSysUserId(userId);
cashOut.setZhifubaoName(userInfo.getZhiFuBaoName()); } else {
cashOut.setUserId(userId);
}
cashOut.setZhifubao(alipayAccount);
cashOut.setZhifubaoName(alipayName);
cashOut.setState(0); cashOut.setState(0);
cashOut.setRate(0.00); cashOut.setRate(0.00);
@@ -437,7 +455,12 @@ public class CashOutServiceImpl extends ServiceImpl<CashOutDao, CashOut> impleme
userMoneyDetails.setClassify(4); userMoneyDetails.setClassify(4);
userMoneyDetails.setMoney(new BigDecimal(money)); userMoneyDetails.setMoney(new BigDecimal(money));
userMoneyDetails.setCreateTime(date); userMoneyDetails.setCreateTime(date);
UserMoney userMoney = userMoneyService.selectUserMoneyByUserId(userId); UserMoney userMoney;
if (isSys) {
userMoney = userMoneyService.selectSysUserMoneyByUserId(userId);
} else {
userMoney = userMoneyService.selectUserMoneyByUserId(userId);
}
//提现判断余额是否足够 //提现判断余额是否足够
if (userMoney.getAmount().doubleValue() < money) { if (userMoney.getAmount().doubleValue() < money) {
return Result.success("可提现余额不足!"); return Result.success("可提现余额不足!");