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 | 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