From fe879975a3e8a0a1aa280fb839e02d159bfbcff8 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 27 八月 2019 18:04:38 +0800
Subject: [PATCH] 金币任务多次获取bug修改
---
fanli/src/main/java/com/yeshi/fanli/service/impl/msg/MsgOrderDetailServiceImpl.java | 72 +++++++++++++++++++++++++-----------
1 files changed, 50 insertions(+), 22 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/msg/MsgOrderDetailServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/msg/MsgOrderDetailServiceImpl.java
index 60170d8..23f7f2c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/msg/MsgOrderDetailServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/msg/MsgOrderDetailServiceImpl.java
@@ -12,7 +12,11 @@
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.exception.msg.MsgOrderDetailException;
import com.yeshi.fanli.service.inter.msg.MsgOrderDetailService;
+import com.yeshi.fanli.service.inter.msg.UserMsgReadStateService;
import com.yeshi.fanli.util.Constant;
+
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
@Service
public class MsgOrderDetailServiceImpl implements MsgOrderDetailService {
@@ -20,30 +24,52 @@
@Resource
private MsgOrderDetailMapper msgOrderDetailMapper;
+ @Resource
+ private UserMsgReadStateService userMsgReadStateService;
+
+ @Resource
+ private JedisPool jedisPool;
+
@Override
- public void addMsgOrderDetail(MsgOrderDetail detail) throws MsgOrderDetailException {
+ public void addMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException {
if (detail == null)
throw new MsgOrderDetailException(1, "娑堟伅涓虹┖");
- if (detail.getOrderId() == null || detail.getGoodsCount() == null || detail.getType() == null
- || detail.getState() == null || detail.getPayMoney() == null || detail.getUser() == null)
+ if (detail.getOrderId() == null || detail.getType() == null || detail.getState() == null
+ || detail.getUser() == null)
throw new MsgOrderDetailException(2, "娑堟伅涓嶅畬鏁�");
- MsgOrderDetail old = msgOrderDetailMapper.selectByUidAndOrderId(detail.getUser().getId(), detail.getOrderId());
- if (old == null) {
- detail.setCreateTime(new Date());
- detail.setUpdateTime(new Date());
- detail.setRead(false);
- msgOrderDetailMapper.insertSelective(detail);
- } else {
- MsgOrderDetail update = new MsgOrderDetail();
- update.setId(old.getId());
- update.setUpdateTime(new Date());
- update.setState(detail.getState());
- update.setPayMoney(detail.getPayMoney());
- update.setHongBaoMoney(detail.getHongBaoMoney());
- update.setRead(false);
- update.setBeiZhu(detail.getBeiZhu());
- msgOrderDetailMapper.updateByPrimaryKeySelective(update);
+ // 閿佷綇璁㈠崟鍙�
+ Jedis jedis = jedisPool.getResource();
+ try {
+ String key = "rs-order-" + detail.getOrderId();
+ if (jedis.setnx(key, "1") > 0) {
+ jedis.expire(key, 60);
+ MsgOrderDetail old = msgOrderDetailMapper.selectByUidAndOrderId(detail.getUser().getId(),
+ detail.getOrderId());
+ if (old == null) {
+ detail.setCreateTime(new Date());
+ detail.setUpdateTime(new Date());
+ detail.setRead(false);
+ msgOrderDetailMapper.insertSelective(detail);
+ } else {
+ MsgOrderDetail update = new MsgOrderDetail();
+ update.setId(old.getId());
+ update.setUpdateTime(new Date());
+ update.setState(detail.getState());
+ update.setPayMoney(detail.getPayMoney());
+ update.setHongBaoMoney(detail.getHongBaoMoney());
+ update.setRead(false);
+ update.setBeiZhu(detail.getBeiZhu());
+ msgOrderDetailMapper.updateByPrimaryKeySelective(update);
+ }
+ if (needNotify)
+ userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1);
+ jedis.del(key);
+ }
+
+ } finally {
+ jedisPool.returnResource(jedis);
}
+
}
@Override
@@ -62,7 +88,7 @@
}
@Override
- public void updateMsgOrderDetail(MsgOrderDetail detail) throws MsgOrderDetailException {
+ public void updateMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException {
if (detail == null)
throw new MsgOrderDetailException(1, "娑堟伅涓虹┖");
if (detail.getOrderId() == null || detail.getState() == null || detail.getUser() == null)
@@ -76,12 +102,14 @@
return;
MsgOrderDetail update = new MsgOrderDetail();
- update.setId(detail.getId());
+ update.setId(msg.getId());
update.setHongBaoMoney(detail.getHongBaoMoney());
update.setPayMoney(detail.getPayMoney());
if (detail.getState().intValue() != msg.getState()) {
update.setState(detail.getState());
- update.setUpdateTime(new Date());
+ // update.setUpdateTime(new Date());
+ if (needNotify)
+ userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1);
}
msgOrderDetailMapper.updateByPrimaryKeySelective(update);
}
--
Gitblit v1.8.0