From 39c683421f75449c7a85280fa499bae3a2f5241b Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期一, 26 八月 2019 09:27:49 +0800
Subject: [PATCH] 金币领取

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/msg/MsgOrderDetailServiceImpl.java |  106 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 85 insertions(+), 21 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 f87b41f..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
@@ -9,8 +9,14 @@
 
 import com.yeshi.fanli.dao.mybatis.msg.MsgOrderDetailMapper;
 import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail;
+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 {
@@ -18,41 +24,99 @@
 	@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
 	public List<MsgOrderDetail> listMsgOrderDetail(Long uid, int page) {
-		return null;
+		return msgOrderDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE);
 	}
 
 	@Override
 	public long countMsgOrderDetail(Long uid) {
-		return 0;
+		return msgOrderDetailMapper.countByUid(uid);
+	}
+
+	@Override
+	public void readMsgByUid(Long uid) {
+		msgOrderDetailMapper.setMsgReadByUid(uid);
+	}
+
+	@Override
+	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)
+			throw new MsgOrderDetailException(2, "娑堟伅涓嶅畬鏁�");
+
+		MsgOrderDetail msg = msgOrderDetailMapper.selectByUidAndOrderId(detail.getUser().getId(), detail.getOrderId());
+		if (msg == null)
+			return;
+
+		if (msg.getState() == CommonOrder.STATE_WQ)
+			return;
+
+		MsgOrderDetail update = new MsgOrderDetail();
+		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());
+			if (needNotify)
+				userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1);
+		}
+		msgOrderDetailMapper.updateByPrimaryKeySelective(update);
+	}
+
+	@Override
+	public List<MsgOrderDetail> listMsgOrderByOrderId(String orderId) {
+		return msgOrderDetailMapper.listByOrderId(orderId);
 	}
 
 }

--
Gitblit v1.8.0