From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/msg/MsgOrderDetailServiceImpl.java | 294 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 172 insertions(+), 122 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/msg/MsgOrderDetailServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/msg/MsgOrderDetailServiceImpl.java index 64fcb6a..31dd9c1 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/msg/MsgOrderDetailServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/msg/MsgOrderDetailServiceImpl.java @@ -1,122 +1,172 @@ -package com.yeshi.fanli.service.impl.order.msg; - -import java.util.Date; -import java.util.List; - -import javax.annotation.Resource; - -import org.springframework.stereotype.Service; - -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.UserMsgReadStateService; -import com.yeshi.fanli.service.inter.order.msg.MsgOrderDetailService; -import com.yeshi.fanli.util.Constant; - -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; - -@Service -public class MsgOrderDetailServiceImpl implements MsgOrderDetailService { - - @Resource - private MsgOrderDetailMapper msgOrderDetailMapper; - - @Resource - private UserMsgReadStateService userMsgReadStateService; - - @Resource - private JedisPool jedisPool; - - @Override - public void addMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException { - if (detail == null) - throw new MsgOrderDetailException(1, "娑堟伅涓虹┖"); - if (detail.getOrderId() == null || detail.getType() == null || detail.getState() == null - || detail.getUser() == null) - throw new MsgOrderDetailException(2, "娑堟伅涓嶅畬鏁�"); - // 閿佷綇璁㈠崟鍙� - 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 { - jedis.close(); - } - - } - - @Override - public List<MsgOrderDetail> listMsgOrderDetail(Long uid, int page) { - return msgOrderDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); - } - - @Override - public long countMsgOrderDetail(Long uid) { - 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); - } - -} +package com.yeshi.fanli.service.impl.order.msg; + +import java.util.Date; +import java.util.List; + +import javax.annotation.Resource; + +import com.yeshi.fanli.service.inter.msg.MsgOverViewsService; +import com.yeshi.fanli.util.RedisManager; +import com.yeshi.fanli.util.factory.msg.MsgOverViewsFactory; +import org.springframework.stereotype.Service; + +import com.yeshi.fanli.dao.mybatis.msg.MsgOrderDetailMapper; +import com.yeshi.fanli.entity.bus.msg.MsgExtra; +import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail; +import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail.MsgTypeOrderTypeEnum; +import com.yeshi.fanli.entity.order.CommonOrder; +import com.yeshi.fanli.exception.msg.MsgOrderDetailException; +import com.yeshi.fanli.service.inter.msg.MsgExtraService; +import com.yeshi.fanli.service.inter.msg.UserMsgReadStateService; +import com.yeshi.fanli.service.inter.order.msg.MsgOrderDetailService; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.StringUtil; + +import org.springframework.transaction.annotation.Transactional; +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; + +@Service +public class MsgOrderDetailServiceImpl implements MsgOrderDetailService { + + @Resource + private MsgOrderDetailMapper msgOrderDetailMapper; + + @Resource + private UserMsgReadStateService userMsgReadStateService; + + @Resource + private RedisManager redisManager; + + @Resource + private MsgExtraService msgExtraService; + + @Resource + private MsgOverViewsService msgOverViewsService; + + + @Transactional(rollbackFor = Exception.class) + @Override + public void addMsgOrderDetail(MsgOrderDetail detail, boolean needNotify) throws MsgOrderDetailException { + if (detail == null) + throw new MsgOrderDetailException(1, "娑堟伅涓虹┖"); + if (detail.getOrderId() == null || detail.getType() == null || detail.getUser() == null + || StringUtil.isNullOrEmpty(detail.getExtraInfo())) + throw new MsgOrderDetailException(2, "娑堟伅涓嶅畬鏁�"); + + if (detail.getType() == MsgTypeOrderTypeEnum.businessRunning) { + MsgOrderDetail msgOrderDetail = msgOrderDetailMapper.getByUniqueKey(detail.getUniquekey()); + if (msgOrderDetail != null) { + return; + } + } + + + // 閿佷綇璁㈠崟鍙� + Jedis jedis = redisManager.getJedis(); + 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); + //鍔犲叆娑堟伅绱㈠紩 + msgOverViewsService.save(MsgOverViewsFactory.create(detail)); + // 娑堟伅鍐呭 + msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ORDER); + } 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); + //鏇存柊娑堟伅绱㈠紩鏃堕棿 + update.setUser(old.getUser()); + msgOverViewsService.updateTime(MsgOverViewsFactory.create(update).getId(), update.getUpdateTime()); + msgExtraService.addMsgExtra(update.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_ORDER); + } + if (needNotify) + userMsgReadStateService.addOrderMsgUnReadCount(detail.getUser().getId(), 1); + jedis.del(key); + } + + } finally { + jedis.close(); + } + + } + + @Override + public List<MsgOrderDetail> listMsgOrderDetail(Long uid, int page) { + return msgOrderDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); + } + + @Override + public List<MsgOrderDetail> listDetail(List<Long> ids) { + return msgOrderDetailMapper.listByPrimaryKeys(ids); + } + + @Override + public long countMsgOrderDetail(Long uid) { + 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); + } + + @Override + public MsgOrderDetail selectByPrimaryKey(Long id) { + return msgOrderDetailMapper.selectByPrimaryKey(id); + } + + @Override + public void deleteByPrimaryKey(Long id) { + msgOrderDetailMapper.deleteByPrimaryKey(id); + msgExtraService.deleteByPidAndType(id, MsgExtra.MSG_TYPE_ORDER); + } + +} -- Gitblit v1.8.0