facade-vip/src/main/java/com/ks/vip/pojo/DO/VipOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
facade-vip/src/main/java/com/ks/vip/pojo/DTO/PayWayInfoDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
facade-vip/src/main/java/com/ks/vip/pojo/Enums/PayWayEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
facade-vip/src/main/java/com/ks/vip/service/VipOrederPayService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service-vip/src/main/java/com/ks/vip/service/manager/RedisManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service-vip/src/main/java/com/ks/vip/util/Constant.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
facade-vip/src/main/java/com/ks/vip/pojo/DO/VipOrder.java
@@ -12,6 +12,12 @@ @Valid public class VipOrder implements Serializable { // 未支付 public final static int STATE_INIT = 0; // 已支付 public final static int STATE_PAY = 1; @Column(name = "o_id") private Long id; facade-vip/src/main/java/com/ks/vip/pojo/DTO/PayWayInfoDTO.java
@@ -1,7 +1,7 @@ package com.ks.vip.pojo.DTO; public class PayWayInfoDTO { //0-表示支付成功 private int payWay; private String payUrl; facade-vip/src/main/java/com/ks/vip/pojo/Enums/PayWayEnum.java
@@ -6,16 +6,22 @@ */ public enum PayWayEnum { alipay("支付宝"), weChat("微信"); alipay(1,"支付宝"), weChat(2,"微信"); private final int way; private final String desc; private PayWayEnum(String desc) { private PayWayEnum(int way, String desc) { this.way = way; this.desc = desc; } public String getDesc() { return desc; } public int getWay() { return way; } } facade-vip/src/main/java/com/ks/vip/service/VipOrederPayService.java
@@ -20,6 +20,6 @@ * @param id * @return */ public VipOrder checkOrderPayState(String id); public VipOrder checkOrderPayState(Long id); } service-vip/src/main/java/com/ks/vip/service/manager/RedisManager.java
New file @@ -0,0 +1,144 @@ package com.ks.vip.service.manager; import org.springframework.stereotype.Component; import org.yeshi.utils.SerializeUtil; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.params.SetParams; import javax.annotation.Resource; import java.util.Set; @Component public class RedisManager { @Resource private JedisPool jedisPool; public Jedis getJedis() { Jedis jedis = jedisPool.getResource(); return jedis; } private void setString(String key, String value, int seconds) { Jedis jedis = getJedis(); try { jedis.setex(key, seconds, value); } finally { jedis.close(); } } /** * 缓存字符串 * * @param key * @param value */ private void setString(String key, String value) { Jedis jedis = getJedis(); try { jedis.set(key, value); } finally { jedis.close(); } } public void remove(String... keys) { Jedis jedis = getJedis(); try { jedis.del(keys); } finally { jedis.close(); } } public void removePrefix(String... keys) { Jedis jedis = getJedis(); try { for (String key : keys) { Set<String> sets = jedis.keys(key + "*"); if (sets != null) { for (String k : sets) { jedis.del(k); } } } } finally { jedis.close(); } } private String getString(String key) { Jedis jedis = getJedis(); try { return jedis.get(key); } finally { jedis.close(); } } public String getCommonString(String key) { return getString(key); } public void cacheCommonString(String key, String value, int seconds) { setString(key, value, seconds); } public void cacheCommonString(String key, String value) { setString(key, value); } /** * 从redis缓存中查询,反序列化 * * @param redisKey * @return */ public Object getDataFromRedis(String redisKey) { //查询 Jedis jedis = jedisPool.getResource(); try { byte[] result = jedis.get(redisKey.getBytes()); //如果查询没有为空 if (null == result) { return null; } //查询到了,反序列化 return SerializeUtil.unSerialize(result); } finally { jedis.close(); } } /** * 将数据库中查询到的数据放入redis * * @param redisKey * @param obj */ public void setDataToRedis(String redisKey, Object obj, Integer seconds) { //序列化 byte[] bytes = SerializeUtil.serialize(obj); SetParams params = null; if (seconds != null) { params = new SetParams().nx().ex(seconds); } //存入redis Jedis jedis = jedisPool.getResource(); try { jedis.set(redisKey.getBytes(), bytes, params); } finally { jedis.close(); } } } service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java
@@ -7,12 +7,15 @@ import com.ks.vip.pojo.DTO.PayWayInfoDTO; 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.transaction.annotation.Transactional; import org.yeshi.utils.StringUtil; @@ -39,14 +42,91 @@ @Resource private VipCenterService vipCenterService; @Resource private RedisManager redisManager; @Override @Transactional(rollbackFor = Exception.class) public PayWayInfoDTO payOrder(VipOrder order) { String title = Constant.ORDER_PAY_TITLE; String orderId = order.getId() + ""; switch (order.getPayWay()) { case "alipay": String formAlipay = PayUtil.getVipChargeAlipayForm(orderId, title, orderId, order.getPayMoney()); //暂存2分钟 String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); redisManager.cacheCommonString(id, formAlipay, 120); String payUrl = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + id; return new PayWayInfoDTO(PayWayEnum.alipay.getWay(), payUrl); case "weChat": try{ String formWX = PayUtil.createWXOrder(orderId, null, orderId,order.getPayMoney() ,title); //暂存2分钟 String idwx = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis()); redisManager.cacheCommonString(idwx, formWX, 120); String payUrlwx = Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + idwx; return new PayWayInfoDTO(PayWayEnum.weChat.getWay(), payUrlwx); } catch (Exception e) { } } return null; } @Override public VipOrder checkOrderPayState(String id) { @Transactional(rollbackFor = Exception.class) public VipOrder checkOrderPayState(Long id) { VipOrder vipOrder = vipOrderMapper.selectByPrimaryKey(id); if (vipOrder == null || vipOrder.getState() == VipOrder.STATE_PAY) { return vipOrder; } // OrderRecord record = vipOrderRecordDao.find(OrderRecord.class, id); // if (record.getState() == OrderRecord.STATE_PAY) // return record; // // switch (record.getPayWay()) { // case OrderRecord.PAY_WAY_ALIPAY_GOLDCORN: // case OrderRecord.PAY_WAY_ALIPAY: { // //支付宝 // AlipayTradeQueryResponse res = null; // try { // res = AlipayH5PayUtil.queryOrder(VipUtil.getAlipayApp(), VIPOrderUtil.getOutOrderNo(record.getOrderType(), id), null); // //支付成功 // if (res.isSuccess() && "TRADE_SUCCESS".equalsIgnoreCase(res.getTradeStatus())) { // try { // return paySuccess(id, OrderRecord.PAY_WAY_ALIPAY, new BigDecimal(res.getTotalAmount()), new Date()); // } catch (Exception e) { // e.printStackTrace(); // } // } // } catch (AlipayApiException e) { // e.printStackTrace(); // } // } // // break; // case OrderRecord.PAY_WAY_WX_GOLDCORN: // case OrderRecord.PAY_WAY_WX: { // //微信 // try { // WXPayOrderInfoV3 info = WXPayV3Util.getPayOrderInfo(VIPOrderUtil.getOutOrderNo(record.getOrderType(), id), VipUtil.getWXAPP()); // if (info != null && info.getTrade_state().equalsIgnoreCase("SUCCESS")) { // paySuccess(id, record.getPayWay(), new BigDecimal(info.getAmount().getPayer_total()).divide(new BigDecimal(100), 2, RoundingMode.FLOOR), new Date()); // return record; // } // } catch (Exception e) { // e.printStackTrace(); // } // } // break; // } return null; } service-vip/src/main/java/com/ks/vip/util/Constant.java
@@ -5,5 +5,9 @@ // 支付地址 public final static String HOST = ""; // 支付地址 public final static String ORDER_PAY_TITLE = "购买会员"; }