admin
2020-06-15 3e4ef41ffacd7f5fda2e81c3810cd11a6375b83c
fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/BindingAccountServiceImpl.java
@@ -4,7 +4,6 @@
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.annotation.Resource;
@@ -14,8 +13,9 @@
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.yeshi.fanli.dao.mybatis.AlipayAccountValidNormalHistoryMapper;
import com.yeshi.fanli.dao.mybatis.BindingAccountMapper;
import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
@@ -38,6 +38,7 @@
import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
import com.yeshi.fanli.service.inter.user.UserAccountBindingHistoryService;
import com.yeshi.fanli.util.AlipayUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
@@ -117,7 +118,7 @@
      return bindingAccountMapper.deleteByPrimaryKey(id);
   }
   @Transactional
   @Transactional(rollbackFor=Exception.class)
   @Override
   public void validAlipayAccount(Long uid, String account, String name)
         throws AlipayTransferException, AlipayApiException, AlipayAccountException {
@@ -135,7 +136,6 @@
                  "该支付宝账号已被其他账号绑定,请更换其他的支付宝账号来绑定");
      }
      // TODO 做频率验证-每月验证一次
      AlipayAccountValidNormalHistory latest = alipayAccountValidNormalHistoryMapper.selectLatestByUid(uid);
      if (latest != null) {
         Calendar caLatest = Calendar.getInstance();
@@ -177,7 +177,7 @@
      if (userInfo.getMyHongBao().compareTo(money) >= 0) {
         // 扣款
         userMoneyService.subUserMoney(uid, money, userMoneyDetail);
         userMoneyMsgNotificationService.alipayAccountValid(history);
         userMoneyMsgNotificationService.alipayAccountValid(history,"1个月",latest!=null);
      } else {// 余额不足,暂时不扣款,加入借贷关系
         UserMoneyDebt debt = new UserMoneyDebt();
         debt.setCreateTime(new Date());
@@ -198,34 +198,12 @@
   private void transferAlipayWithVerify(String account, String name)
         throws AlipayTransferException, AlipayApiException {
      String privateKey = Constant.alipayConfig.getPrivateKey();
      AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
            Constant.alipayConfig.getAppId(), privateKey, "json", "gbk", null, "RSA2");
      AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
      String uuid = UUID.randomUUID().toString().replace("-", "");
      String outBizNo=StringUtil.Md5(account)+TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd");
      String appName = Constant.systemCommonConfig.getProjectChineseName();
      JSONObject json = new JSONObject();
      json.put("out_biz_no", uuid);
      json.put("payee_type", "ALIPAY_LOGONID");
      json.put("payee_account", account);
      json.put("amount", "0.1");
      json.put("payer_show_name", appName + "支付宝验证");
      json.put("payee_real_name", name);
      json.put("remark", "来自" + appName + "的支付宝验证打款");
      request.setBizContent(json.toString());
      AlipayFundTransToaccountTransferResponse response = null;
      response = alipayClient.execute(request);
      // 成功转账
      if (response != null && response.isSuccess() && "10000".equals(response.getCode())) {
         return;
      } else// 转账失败
      {
         throw new AlipayTransferException(Integer.parseInt(response.getCode()), response.getSubCode(),
               response.getSubMsg());
      }
      AlipayUtil.transfer(outBizNo, account, name, new BigDecimal("0.1"), appName + "支付宝验证", "来自" + appName + "的支付宝验证打款");
   }
   @Transactional
   @Transactional(rollbackFor=Exception.class)
   @Override
   public BindingAccount changeAlipayBindingWithVerify(Long uid, String name, String account)
         throws AlipayTransferException, AlipayApiException, AlipayAccountException {