diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/store/AnewRechargeOrderHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/store/AnewRechargeOrderHandler.java new file mode 100644 index 000000000..6373f29f5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/store/AnewRechargeOrderHandler.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.handler.store; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.store.BuyGoodsNewLogic; +import com.ljsd.jieling.network.session.ISession; +import org.springframework.stereotype.Component; +import rpc.protocols.MessageTypeProto; +import rpc.protocols.PlayerInfoProto; + +/** + * 补单 + */ +@Component +public class AnewRechargeOrderHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.AnewRechargeOrderRequest; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.AnewRechargeOrderRequest proto) throws Exception { + BuyGoodsNewLogic.anewRecharge(iSession); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Order.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Order.java new file mode 100644 index 000000000..0e3c60990 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Order.java @@ -0,0 +1,96 @@ +package com.ljsd.jieling.logic.dao; + +import com.ljsd.jieling.util.KeyGenUtils; +import com.ljsd.jieling.util.UUIDEnum; + +public class Order { + private String id; + private int uid; + private String sdkGoodsId; + private String openId; + private String orderId; + private long orderTime; + private long amount; + + public Order() { + } + + public Order(int uid, String sdkGoodsId, String openId, String orderId, long orderTime, long amount) { + this.id = KeyGenUtils.produceIdByModuleNew(UUIDEnum.Recharge, uid); + this.uid = uid; + this.sdkGoodsId = sdkGoodsId; + this.openId = openId; + this.orderId = orderId; + this.orderTime = orderTime; + this.amount = amount; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getUid() { + return uid; + } + + public void setUid(int uid) { + this.uid = uid; + } + + public String getSdkGoodsId() { + return sdkGoodsId; + } + + public void setSdkGoodsId(String sdkGoodsId) { + this.sdkGoodsId = sdkGoodsId; + } + + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public long getOrderTime() { + return orderTime; + } + + public void setOrderTime(long orderTime) { + this.orderTime = orderTime; + } + + public long getAmount() { + return amount; + } + + public void setAmount(long amount) { + this.amount = amount; + } + + @Override + public String toString() { + return "Order{" + + "id='" + id + '\'' + + ", uid=" + uid + + ", sdkGoodsId='" + sdkGoodsId + '\'' + + ", openId='" + openId + '\'' + + ", orderId='" + orderId + '\'' + + ", orderTime=" + orderTime + + ", amount=" + amount + + '}'; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java index 29ba0bccd..b16631582 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsNewLogic.java @@ -20,6 +20,7 @@ import com.ljsd.jieling.logic.activity.ActivityType; import com.ljsd.jieling.logic.activity.ActivityTypeEnum; import com.ljsd.jieling.logic.activity.activityLogic.GmSingleActivityLogic; import com.ljsd.jieling.logic.activity.event.*; +import com.ljsd.jieling.logic.dao.Order; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.VipInfo; @@ -188,6 +189,13 @@ public class BuyGoodsNewLogic { resultRes.setResultCode(0); ISession session = OnlineUserManager.getSessionByUid(uid); if (session == null) { +// Order order = new Order(uid, sdkGoodsId, openId, orderId, orderTime, amount); +// String key = RedisKey.ANEW_RECHARGE_ORDER + ":" + uid; +// RedisUtil.getInstence().putmap(key, order.getId(), order); +// RedisUtil.getInstence().expireMills(key, TimeUtils.DAY * 30); +// LOGGER.error("sendGoods 玩家不在缓存中,补单信息已放入redis缓存, uid={},order:{}",uid, order); +// +// resultRes.setResultCode(1); resultRes.setResultMsg("Session is null"); return resultRes; } @@ -297,6 +305,33 @@ public class BuyGoodsNewLogic { return resultRes; } + /** + * 补单 + */ + public static void anewRecharge(ISession session){ + PlayerInfoProto.AnewRechargeOrderResponse.Builder builder = PlayerInfoProto.AnewRechargeOrderResponse.newBuilder(); + String key = RedisKey.ANEW_RECHARGE_ORDER + ":" + session.getUid(); + Map orderMap = RedisUtil.getInstence().getmapvaluekeyclass(key, String.class, Order.class); + if (orderMap == null || orderMap.isEmpty()){ + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.AnewRechargeOrderResponse_VALUE, builder.build(), true); + return; + } + for (Map.Entry entry : orderMap.entrySet()) { + Order order = entry.getValue(); + if (order == null) { + continue; + } + LOGGER.info("补单信息:{}", order); + try { + sendGoods(order.getUid(), order.getSdkGoodsId(), order.getOpenId(), order.getOrderId(), order.getOrderTime(), (int) order.getAmount()); + } catch (Exception e) { + LOGGER.error("补单失败", e); + } + } + RedisUtil.getInstence().del(key); + MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.AnewRechargeOrderResponse_VALUE, builder.build(), true); + } + public static void setFirstRecharge(int uid){ RedisUtil.getInstence().putmap(RedisKey.First_Recharge, String.valueOf(uid), TimeUtils.now()); }