admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/service/manger/alipay/UserCloudAlipayManager.java
@@ -1,121 +1,128 @@
package com.yeshi.fanli.service.manger.alipay;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.yeshi.fanli.dto.AlipayTradeWapPayDTO;
import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloud;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.user.cloud.UserCloudException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudGroupService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.alipay.AlipayApi;
/**
 *  云发单支付管理
 * @author Administrator
 *
 */
@Component
public class UserCloudAlipayManager {
   @Resource
   private ConfigService configService;
   @Resource
   private UserCloudService userCloudService;
   @Resource
   private UserCloudOrderService userCloudOrderService;
   @Resource
   private UserCloudGroupService userCloudGroupService;
   @Resource
   private UserCloudManageService userCloudManageService;
   public static final String  TRADE_INDEX = "yufadan-";
   /**
    * 创建支付订单
    * @param uid
    * @param type
    * @return
    * @throws Exception
    * @throws UserCloudException
    */
   @Transactional(rollbackFor = Exception.class)
   public String getAlipayForm(Long uid, String type) throws Exception, UserCloudException{
      CloudOrderMenuEnum menuEnum = CloudOrderMenuEnum.getMenuEnum(type);
      if (menuEnum == null)
         throw new UserCloudException(1, "套餐类型不匹配");
      UserCloud userCloud = userCloudService.getLastByUid(uid);
      if (userCloud != null) {
         // 续费
         boolean renew = false;
         if (userCloud.getEndTime().getTime() > java.lang.System.currentTimeMillis())
            renew = true;
         // 验证套餐是否相同
         if (renew && userCloud.getRobotType() != menuEnum.getRobotType()) {
            LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "]已有其他云发单套餐还未结束");
            throw new UserCloudException(1, "已有其他云发单套餐还未结束");
         }
      }
      // 订单信息
      UserCloudOrder cloudOrder = userCloudOrderService.addCloudOrder(uid, type);
      if (cloudOrder == null || cloudOrder.getId() == null)
         throw new UserCloudException(1, "创建订单信息失败");
      AlipayTradeWapPayDTO payDTO = new AlipayTradeWapPayDTO();
      payDTO.setSubject("云发单充值");
      payDTO.setSellerId(Constant.alipayWapConfig.getSellerId());
      payDTO.setOutTradeNo(TRADE_INDEX + cloudOrder.getId());
      payDTO.setProductCode(type);
      payDTO.setTotalAmount(menuEnum.getMoney() + "");
      payDTO.setTimeoutExpress("30m");
      payDTO.setReturnUrl(configService.get(ConfigKeyEnum.cloudAlipayReturnLink.getKey()) +"?id=" +cloudOrder.getId());
      payDTO.setNotifyUrl(configService.get(ConfigKeyEnum.cloudAlipayNotifyLink.getKey()) +"?id=" +cloudOrder.getId());
      // 获取支付form
      return AlipayApi.tradeWapPayRequest(payDTO);
   }
   /**
    * 查询订单交易是否支付成功
    * @param orderId
    * @throws Exception
    */
   public void tradeQueryByOrderId(Long orderId) throws Exception {
      boolean result = false;
      AlipayTradeQueryResponse response =  AlipayApi.tradeQuery(TRADE_INDEX + orderId, null, null, null);
      if(response != null && response.isSuccess()){
         // 相应成功
         if ("TRADE_SUCCESS".equals(response.getTradeStatus())) {
            result = true;
         } else if ("TRADE_FINISHED".equals(response.getTradeStatus())) {
            result = true; // (交易结束,不可退款)
         }
      }
      // 支付成功
      if (result) {
         userCloudOrderService.cloudPayCloudSuccess(orderId);
      }
   }
}
package com.yeshi.fanli.service.manger.alipay;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.yeshi.fanli.dto.AlipayTradeWapPayDTO;
import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloud;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloudOrder;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.user.cloud.UserCloudException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudGroupService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudOrderService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.alipay.AlipayApi;
/**
 *  云发单支付管理
 * @author Administrator
 *
 */
@Component
public class UserCloudAlipayManager {
   @Resource
   private ConfigService configService;
   @Resource
   private UserCloudService userCloudService;
   @Resource
   private UserCloudOrderService userCloudOrderService;
   @Resource
   private UserCloudGroupService userCloudGroupService;
   @Resource
   private UserCloudManageService userCloudManageService;
   @Resource
   private UserInfoService userInfoService;
   public static final String  TRADE_INDEX = "yufadan-";
   /**
    * 创建支付订单
    * @param uid
    * @param type
    * @return
    * @throws Exception
    * @throws UserCloudException
    */
   @Transactional(rollbackFor = Exception.class)
   public String getAlipayForm(Long uid, String type) throws Exception, UserCloudException{
      CloudOrderMenuEnum menuEnum = CloudOrderMenuEnum.getMenuEnum(type);
      if (menuEnum == null)
         throw new UserCloudException(1, "套餐类型不匹配");
      UserCloud userCloud = userCloudService.getLastByUid(uid);
      if (userCloud != null) {
         // 续费
         boolean renew = false;
         if (userCloud.getEndTime().getTime() > java.lang.System.currentTimeMillis())
            renew = true;
         // 验证套餐是否相同
         if (renew && userCloud.getRobotType() != menuEnum.getRobotType()) {
            LogHelper.cloudInfo("方法openCloud: [uid=" + uid + "]已有其他云发单套餐还未结束");
            throw new UserCloudException(1, "已有其他云发单套餐还未结束");
         }
      }
      // 订单信息
      UserCloudOrder cloudOrder = userCloudOrderService.addCloudOrder(uid, type);
      if (cloudOrder == null || cloudOrder.getId() == null)
         throw new UserCloudException(1, "创建订单信息失败");
      SystemEnum system=userInfoService.getUserSystem(uid);
      AlipayTradeWapPayDTO payDTO = new AlipayTradeWapPayDTO();
      payDTO.setSubject("云发单充值");
      payDTO.setSellerId(Constant.alipayWapConfig.getSellerId());
      payDTO.setOutTradeNo(TRADE_INDEX + cloudOrder.getId());
      payDTO.setProductCode(type);
      payDTO.setTotalAmount(menuEnum.getMoney() + "");
      payDTO.setTimeoutExpress("30m");
      payDTO.setReturnUrl(configService.getValue(ConfigKeyEnum.cloudAlipayReturnLink.getKey(),system) +"?id=" +cloudOrder.getId());
      payDTO.setNotifyUrl(configService.getValue(ConfigKeyEnum.cloudAlipayNotifyLink.getKey(),system) +"?id=" +cloudOrder.getId());
      // 获取支付form
      return AlipayApi.tradeWapPayRequest(payDTO);
   }
   /**
    * 查询订单交易是否支付成功
    * @param orderId
    * @throws Exception
    */
   public void tradeQueryByOrderId(Long orderId) throws Exception {
      boolean result = false;
      AlipayTradeQueryResponse response =  AlipayApi.tradeQuery(TRADE_INDEX + orderId, null, null, null);
      if(response != null && response.isSuccess()){
         // 相应成功
         if ("TRADE_SUCCESS".equals(response.getTradeStatus())) {
            result = true;
         } else if ("TRADE_FINISHED".equals(response.getTradeStatus())) {
            result = true; // (交易结束,不可退款)
         }
      }
      // 支付成功
      if (result) {
         userCloudOrderService.cloudPayCloudSuccess(orderId);
      }
   }
}