From a2944f47783f03f30c86768b7577b9378c862d6a Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 09 六月 2021 19:19:10 +0800 Subject: [PATCH] 日志调整 --- service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java | 139 +++++++++++++++++++++++++++++----------------- 1 files changed, 87 insertions(+), 52 deletions(-) diff --git a/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java b/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java index 38fa184..bd8b3f1 100644 --- a/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java +++ b/service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java @@ -2,6 +2,7 @@ import com.alipay.api.AlipayApiException; import com.alipay.api.response.AlipayTradeQueryResponse; +import com.ks.vip.exception.OrderPayException; import com.ks.vip.exception.VipOrderException; import com.ks.vip.mapper.VipOrderMapper; import com.ks.vip.pojo.DO.VipCombo; @@ -10,27 +11,27 @@ import com.ks.vip.pojo.DTO.VipOrderDTO; import com.ks.vip.pojo.Enums.OrderTypeEnum; import com.ks.vip.pojo.Enums.PayWayEnum; -import com.ks.vip.query.VipOrderQuery; import com.ks.vip.service.VipCenterService; import com.ks.vip.service.VipComboService; import com.ks.vip.service.VipOrederPayService; -import com.ks.vip.service.VipOrederService; -import com.ks.vip.service.manager.RedisManager; import com.ks.vip.util.Constant; import com.ks.vip.util.PayUtil; import org.apache.dubbo.config.annotation.Service; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.StringUtil; import org.yeshi.utils.alipay.AlipayH5PayUtil; import org.yeshi.utils.entity.wx.WXPayOrderInfoV3; import org.yeshi.utils.wx.WXPayV3Util; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; import javax.annotation.Resource; -import java.math.BigDecimal; -import java.math.RoundingMode; import java.util.Date; -import java.util.List; +import java.util.Map; import java.util.UUID; +import java.util.concurrent.TimeUnit; @Service(version = "1.0") public class VipOrderPayServiceImpl implements VipOrederPayService { @@ -45,22 +46,22 @@ private VipCenterService vipCenterService; @Resource - private RedisManager redisManager; + private JedisPool jedisPool; @Override @Transactional(rollbackFor = Exception.class) - public PayWayInfoDTO addOrderByBuy(VipOrderDTO t) throws VipOrderException { - if(t.getComboId() == null || t.getComboId() <= 0){ + public PayWayInfoDTO addOrderWithPay(VipOrderDTO t, String notifyUrl, String returnUrl, String ip) throws VipOrderException { + if (t.getComboId() == null || t.getComboId() <= 0) { throw new VipOrderException(1, "濂楅ID涓嶈兘涓虹┖"); } - if(StringUtil.isNullOrEmpty(t.getUid())){ + if (StringUtil.isNullOrEmpty(t.getUid())) { throw new VipOrderException(1, "鐢ㄦ埛ID涓嶈兘涓虹┖"); } - if(t.getPayWay() == null){ + if (t.getPayWay() == null) { throw new VipOrderException(1, "浠樻鏂瑰紡涓嶈兘涓虹┖"); } - if(StringUtil.isNullOrEmpty(t.getThreeOrderId())){ + if (StringUtil.isNullOrEmpty(t.getThreeOrderId())) { throw new VipOrderException(1, "浠樻璁㈠崟鍙蜂笉鑳戒负绌�"); } @@ -71,60 +72,81 @@ } // 鍒ゆ柇璁㈠崟绫诲瀷: 棣栧崟銆佺画璐� - String orderType = OrderTypeEnum.buyNewly.name(); + OrderTypeEnum orderType = OrderTypeEnum.buyNewly; long count = vipOrderMapper.countByTypeAndUid(t.getUid(), orderType); - if(count > 0) { - orderType = OrderTypeEnum.buyRenew.name(); + if (count > 0) { + orderType = OrderTypeEnum.buyRenew; } // 鎻掑叆璁㈠崟淇℃伅 VipOrder newOrder = new VipOrder(); + newOrder.setState(VipOrder.STATE_INIT); newOrder.setComboId(t.getComboId()); newOrder.setUid(t.getUid()); newOrder.setThreeOrderId(t.getThreeOrderId()); newOrder.setPayWay(t.getPayWay().name()); newOrder.setType(orderType); + newOrder.setPayMoney(t.getPayMoney()); newOrder.setCreateTime(new Date()); vipOrderMapper.insertSelective(newOrder); + if (returnUrl != null) { + returnUrl += "?id=" + newOrder.getId(); + } // 鏀粯鏂瑰紡 - return payOrder(newOrder); + try { + return payOrder(newOrder, notifyUrl, returnUrl, ip); + } catch (OrderPayException e) { + e.printStackTrace(); + throw new VipOrderException(VipOrderException.CODE_CREATE_PAY_ORDER_FAIL, e.getMsg()); + } } @Override @Transactional(rollbackFor = Exception.class) - public PayWayInfoDTO payOrder(VipOrder order) { + public PayWayInfoDTO payOrder(VipOrder order, String notifyUrl, String returnUrl, String ip) throws OrderPayException { + if (order.getState() == VipOrder.STATE_PAY) { + throw new OrderPayException(OrderPayException.CODE_ALREADY_PAY, "宸茬粡瀹屾垚鏀粯"); + } String goodsTitle = Constant.ORDER_PAY_TITLE; - String orderId = order.getId() + ""; + String orderId = order.getThreeOrderId() + ""; switch (order.getPayWay()) { - case "alipay": //鐢熸垚鏀粯瀹濇敮浠樿鍗� - if (order.getState() == VipOrder.STATE_PAY) { - return new PayWayInfoDTO(PayWayEnum.alipay.getWay(), PayUtil.getPaySuccessUrl(orderId)); + //鐢熸垚鏀粯瀹濇敮浠樿鍗� + case "alipay": + String form = PayUtil.getVipChargeAlipayForm(goodsTitle, orderId, order.getPayMoney(), notifyUrl, returnUrl); + if (StringUtil.isNullOrEmpty(form)) { + throw new OrderPayException(OrderPayException.CODE_CREATE_PAY_ORDER_FAIL, "鍒涘缓鏀粯瀹濇敮浠樿鍗曞け璐�"); } - String form = PayUtil.getVipChargeAlipayForm(orderId, goodsTitle, orderId, order.getPayMoney()); //鏆傚瓨2鍒嗛挓 String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); - redisManager.cacheCommonString(id, form, 120); - String payUrl = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + id; - return new PayWayInfoDTO(PayWayEnum.alipay.getWay(), payUrl); + Jedis jedis = jedisPool.getResource(); + try { + jedis.set(id, form); + jedis.expire(id, 120); + } finally { + jedis.close(); + } + return new PayWayInfoDTO(PayWayEnum.alipay, null, id); case "weChat": try { - if (order.getState() == VipOrder.STATE_PAY) { - return new PayWayInfoDTO(PayWayEnum.weChat.getWay(), PayUtil.getPaySuccessUrl(orderId)); - } - - String formWX = PayUtil.createWXOrder(orderId, null, orderId, order.getPayMoney() ,goodsTitle); - //鏆傚瓨2鍒嗛挓 - String idWX = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); - redisManager.cacheCommonString(formWX, formWX, 120); - String payUrlWX = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + idWX; - return new PayWayInfoDTO(PayWayEnum.weChat.getWay(), payUrlWX); + String payUrl = PayUtil.createWXOrder(ip, orderId, order.getPayMoney(), goodsTitle, notifyUrl, returnUrl); + return new PayWayInfoDTO(PayWayEnum.weChat, payUrl, null); } catch (Exception e) { - + throw new OrderPayException(OrderPayException.CODE_CREATE_PAY_ORDER_FAIL, e.getMessage()); } } return null; + } + + @Override + public String getAlipayForm(String formId) { + Jedis jedis = jedisPool.getResource(); + try { + return jedis.get(formId); + } finally { + jedis.close(); + } } @@ -136,10 +158,11 @@ return order; } switch (order.getPayWay()) { - case "alipay": //鏀粯瀹� + //鏀粯瀹� + case "alipay": AlipayTradeQueryResponse res = null; try { - res = AlipayH5PayUtil.queryOrder(PayUtil.getAlipayApp(), id+"" , null); + res = AlipayH5PayUtil.queryOrder(PayUtil.getAlipayApp(), id + "", null); //鏀粯鎴愬姛 if (res.isSuccess() && "TRADE_SUCCESS".equalsIgnoreCase(res.getTradeStatus())) { try { @@ -151,9 +174,10 @@ } catch (AlipayApiException e) { e.printStackTrace(); } - case "weChat": //寰俊 + //寰俊 + case "weChat": try { - WXPayOrderInfoV3 info = WXPayV3Util.getPayOrderInfo(id+"" , PayUtil.getWXAPP()); + WXPayOrderInfoV3 info = WXPayV3Util.getPayOrderInfo(id + "", PayUtil.getWXAPP()); if (info != null && info.getTrade_state().equalsIgnoreCase("SUCCESS")) { paySuccess(order); return order; @@ -163,11 +187,22 @@ } } return null; - } + } + + @Override + public String getWXPaySuccessOutOrderNo(String notifyContent) throws Exception { + return WXPayV3Util.getPaySuccessOutOrderNo(notifyContent, PayUtil.getWXAPP()); + } + + @Override + public String getAlipayPaySuccessOutOrderNo(Map<String, String> params) throws Exception { + return AlipayH5PayUtil.getPaySuccessNotifyOutOrderNo(params, PayUtil.getAlipayApp()); + } /** * 鏀粯鎴愬姛鏇存柊澶勭悊 + * * @param order * @return */ @@ -182,22 +217,22 @@ Integer validDays = vipCombo.getValidDays(); // 鍒ゆ柇璁㈠崟绫诲瀷 - String orderType = OrderTypeEnum.buyNewly.name(); + OrderTypeEnum orderType = OrderTypeEnum.buyNewly; long count = vipOrderMapper.countByTypeAndUid(order.getUid(), orderType); - if(count > 0) { - orderType = OrderTypeEnum.buyRenew.name(); + if (count > 0) { + orderType = OrderTypeEnum.buyRenew; } // order.setThreeOrderId(); TODO - order.setState(VipOrder.STATE_PAY); - order.setPayTime(new Date()); - order.setUpdateTime(new Date()); - vipOrderMapper.updateByPrimaryKeySelective(order); + order.setState(VipOrder.STATE_PAY); + order.setPayTime(new Date()); + order.setUpdateTime(new Date()); + vipOrderMapper.updateByPrimaryKeySelective(order); - // 鏇存柊绛夌骇 - vipCenterService.saveVipCenter(order.getUid(), vipCombo.getGradeId(), validDays, order.getId() ); + // 鏇存柊绛夌骇 + vipCenterService.saveVipCenter(order.getUid(), vipCombo.getGradeId(), validDays * 24, order.getId()); - return order; - } + return order; + } } -- Gitblit v1.8.0