| | |
| | | package com.nq.controller.protol; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.google.common.collect.Maps; |
| | | import com.google.gson.Gson; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.enums.EStockType; |
| | | import com.nq.pojo.ApplyLever; |
| | | import com.nq.pojo.StockSubscribe; |
| | | import com.nq.pojo.UserStockSubscribe; |
| | | import com.nq.pojo.*; |
| | | import com.nq.service.*; |
| | | import com.nq.service.impl.PayServiceImpl; |
| | | import com.nq.utils.PropertiesUtil; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.Map; |
| | | import java.util.concurrent.locks.Lock; |
| | | import java.util.concurrent.locks.ReentrantLock; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import javax.servlet.http.HttpSession; |
| | | |
| | | import com.nq.utils.translate.GoogleTranslateUtil; |
| | | import com.nq.vo.pay.PayoutCallbackRequest; |
| | | import com.nq.vo.stock.UserStockSubscribeAddIn; |
| | | import org.apache.ibatis.annotations.Property; |
| | | import org.slf4j.Logger; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Controller; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | @Controller |
| | |
| | | @Autowired |
| | | IUserRechargeService iUserRechargeService; |
| | | |
| | | |
| | | @Autowired |
| | | PayServiceImpl payService; |
| | | |
| | | @Autowired |
| | | IApplyLeverServices iApplyLeverServices; |
| | | |
| | | @Autowired |
| | | IUserWithdrawService iUserWithdrawService; |
| | | |
| | | private static final ThreadLocal<Boolean> orderCreated = ThreadLocal.withInitial(() -> false); |
| | | private final Lock lock = new ReentrantLock(); |
| | | |
| | | private static final ThreadLocal<Boolean> buyOrderCreated = ThreadLocal.withInitial(() -> false); |
| | | private final Lock buyLock = new ReentrantLock(); |
| | | |
| | | private static final ThreadLocal<Boolean> payCreated = ThreadLocal.withInitial(() -> false); |
| | | private final Lock payLock = new ReentrantLock(); |
| | | |
| | | //添加到自选股 |
| | | @RequestMapping({"addOption.do"}) |
| | |
| | | return iApplyLeverServices.applyLever(applyLever,request); |
| | | } |
| | | |
| | | /** |
| | | * 充值第三方支付 |
| | | */ |
| | | @RequestMapping({"thirdPartyRecharge.do"}) |
| | | @ResponseBody |
| | | public ServerResponse thirdPartyRecharge(@RequestParam("tradeAmoun") String tradeAmoun,@RequestParam("type") Integer type,HttpServletRequest request) { |
| | | payLock.lock(); |
| | | try { |
| | | if (payCreated.get()) { |
| | | return ServerResponse.createByErrorMsg("当前充值人数过多,请稍后重试", request); |
| | | } |
| | | if (!isIntegerGreaterThan100(tradeAmoun)) { |
| | | return ServerResponse.createByErrorMsg("请输入整数!",request); |
| | | } |
| | | if(null == type){ |
| | | return ServerResponse.createByErrorMsg("请选择支付通道!",request); |
| | | } |
| | | if(new BigDecimal(tradeAmoun).compareTo(new BigDecimal("5000")) < 0){ |
| | | return ServerResponse.createByErrorMsg("请重新输入,最低充值金额:5000", request); |
| | | } |
| | | if(type == 0 && new BigDecimal(tradeAmoun).compareTo(new BigDecimal("40000")) > 0){ |
| | | return ServerResponse.createByErrorMsg("请重新输入,最大充值金额:40000", request); |
| | | } |
| | | |
| | | payCreated.set(true); |
| | | return payService.thirdPartyRecharge(request,tradeAmoun,type); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ServerResponse.createByErrorMsg("获取充值链接异常,请稍后重试", request); |
| | | } finally{ |
| | | payLock.unlock(); |
| | | payCreated.set(false); |
| | | } |
| | | } |
| | | // 判断字符串是否是整数且大于100 |
| | | public static boolean isIntegerGreaterThan100(String str) { |
| | | try { |
| | | int number = Integer.parseInt(str); // 尝试将字符串转换为整数 |
| | | return number > 100; // 判断是否大于100 |
| | | } catch (NumberFormatException e) { |
| | | return false; // 如果转换失败,说明不是整数 |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 默认充值异步接收地址 |
| | | */ |
| | | @PostMapping({"rechargeCallbackZero.do"}) |
| | | public void rechargeCallbackZero(@RequestBody PaymentNotifyResponse vo, HttpServletResponse response) throws IOException { |
| | | payService.rechargeCallbackZero(vo,response); |
| | | } |
| | | |
| | | /** |
| | | * 充值1异步接收地址 |
| | | */ |
| | | @PostMapping({"rechargeCallback.do"}) |
| | | public void rechargeCallback(PaymentResponse vo, HttpServletResponse response) throws IOException { |
| | | payService.rechargeCallback(vo,response); |
| | | } |
| | | |
| | | /** |
| | | * 充值2异步接收地址 |
| | | */ |
| | | @PostMapping({"rechargeCallbackTwo.do"}) |
| | | public void rechargeCallbackTwo(@RequestParam("status") String status, |
| | | @RequestParam("merchantid") String merchantid, |
| | | @RequestParam("out_trade_no") String outTradeNo, |
| | | @RequestParam("total_fee") String totalFee, |
| | | @RequestParam("poundage") String poundage, |
| | | @RequestParam("account_fee") String accountFee, |
| | | @RequestParam("sign") String sign, HttpServletResponse response) throws IOException { |
| | | TransactionStatusVo vo = new TransactionStatusVo(); |
| | | vo.setStatus(status); |
| | | vo.setMerchantid(merchantid); |
| | | vo.setOut_trade_no(outTradeNo); |
| | | vo.setTotal_fee(totalFee); |
| | | vo.setPoundage(poundage); |
| | | vo.setAccount_fee(accountFee); |
| | | vo.setSign(sign); |
| | | payService.rechargeCallbackTwo(vo,response); |
| | | } |
| | | |
| | | /** |
| | | * 充值2异步接收地址 |
| | | */ |
| | | @PostMapping({"rechargeCallbackThree.do"}) |
| | | public void rechargeCallbackThree(@RequestBody RechargeCallbackThreeVo callbackVo, HttpServletResponse response) throws IOException { |
| | | TransactionStatusVo vo = new TransactionStatusVo(); |
| | | vo.setStatus(callbackVo.getOrder_status()); |
| | | vo.setMerchantid(callbackVo.getMerchant_id()); |
| | | vo.setOut_trade_no(callbackVo.getSystem_order_id()); |
| | | vo.setTotal_fee(callbackVo.getAmount()); |
| | | vo.setAccount_fee(callbackVo.getAccount_amount()); |
| | | vo.setSign(callbackVo.getSign()); |
| | | vo.setPoundage("0"); |
| | | payService.rechargeCallbackThree(vo,response); |
| | | } |
| | | |
| | | /** |
| | | * 支付4(代收 v2)异步通知 |
| | | */ |
| | | @PostMapping({"rechargeCallbackFour.do"}) |
| | | public void rechargeCallbackFour(@RequestBody PayV2NotifyRequest vo, HttpServletResponse response) throws IOException { |
| | | payService.rechargeCallbackFour(vo, response); |
| | | } |
| | | |
| | | /** |
| | | * 代付回调接口 |
| | | */ |
| | | @PostMapping({"payoutCallback.do"}) |
| | | public void payoutCallback(@RequestBody PayoutCallbackVo callbackVo, HttpServletResponse response) throws IOException { |
| | | payService.payoutCallback(callbackVo, response); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 代付回调接口 |
| | | */ |
| | | @PostMapping({"payoutCallbackTwo.do"}) |
| | | public Map<String, Object> payoutCallbackTwo(@RequestBody PayoutCallbackRequest callbackVo, HttpServletResponse response) throws IOException { |
| | | return payService.payoutCallbackTwo(callbackVo, response); |
| | | } |
| | | |
| | | /** |
| | | * 代付 v2(payOutCreate)异步通知 |
| | | */ |
| | | @PostMapping({"payoutCallbackThree.do"}) |
| | | public void payoutCallbackThree(@RequestBody PayV2PayoutNotifyRequest vo, HttpServletResponse response) throws IOException { |
| | | payService.payoutCallbackThree(vo, response); |
| | | } |
| | | } |