From 28fafb67d05ea8398f3f5968f37dec86f0e37e67 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 09 六月 2020 11:43:21 +0800 Subject: [PATCH] 支付宝转账升级 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java | 189 ++++++++++++++++++++++++++++++----------------- 1 files changed, 121 insertions(+), 68 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java index 886044e..5fa8f95 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudGoodsServiceImpl.java @@ -2,14 +2,19 @@ import java.util.Date; import java.util.List; -import java.util.Set; import javax.annotation.Resource; import org.springframework.stereotype.Service; +import com.aliyun.openservices.ons.api.Message; +import com.aliyun.openservices.ons.api.Producer; import com.yeshi.fanli.dao.mybatis.user.cloud.UserCloudGoodsMapper; +import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum; +import com.yeshi.fanli.dto.mq.user.body.UserCloudMQMsg; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; +import com.yeshi.fanli.dto.suning.SuningGoodsInfo; +import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; import com.yeshi.fanli.entity.bus.user.cloud.UserCloudGoods; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.jd.JDGoods; @@ -20,48 +25,66 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; import com.yeshi.fanli.service.inter.user.cloud.UserCloudGoodsService; +import com.yeshi.fanli.service.inter.user.cloud.UserCloudManageService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; - +import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory; +import com.yeshi.fanli.util.rocketmq.MQTopicName; +import com.yeshi.fanli.util.suning.SuningApiUtil; +import com.yeshi.fanli.util.vipshop.VipShopApiUtil; @Service public class UserCloudGoodsServiceImpl implements UserCloudGoodsService { @Resource private UserCloudGoodsMapper userCloudGoodsMapper; - + @Resource private RedisManager redisManager; - + @Resource private JDGoodsCacheUtil jdGoodsCacheUtil; - + @Resource private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; - + @Resource private CommonGoodsService commonGoodsService; - - + + @Resource + private UserCloudManageService userCloudManageService; + + @Resource(name = "producer") + private Producer producer; + @Override public void deleteByPrimaryKeyAndUid(Long id, Long uid) { userCloudGoodsMapper.deleteByPrimaryKeyAndUid(id, uid); } - + @Override public UserCloudGoods selectByPrimaryKey(Long id) { return userCloudGoodsMapper.selectByPrimaryKey(id); } - + @Override public void updateByPrimaryKeySelective(UserCloudGoods record) { userCloudGoodsMapper.updateByPrimaryKeySelective(record); } - - + + @Override + public List<UserCloudGoods> query(int page, int pageSize, String key) { + return userCloudGoodsMapper.query((page - 1) * pageSize, pageSize, key); + } + + @Override + public long count(String key) { + return userCloudGoodsMapper.count(key); + } + @Override public List<UserCloudGoods> listByUid(long start, int count, Long uid) { return userCloudGoodsMapper.listByUid(start, count, uid); @@ -72,79 +95,109 @@ return userCloudGoodsMapper.listByNotShare(uid); } - @Override public long countByUid(Long uid) { return userCloudGoodsMapper.countByUid(uid); } - @Override public UserCloudGoods getByUidAndGoods(Long uid, Long goodsId, Integer goodsType) { return userCloudGoodsMapper.getByUidAndGoods(uid, goodsId, goodsType); } @Override - public void addGoods(Long uid, Set<Long> set, Integer goodsType) throws UserCloudGoodsException { - if (uid == null) { + public UserCloudGoods addGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudGoodsException { + if (uid == null) throw new UserCloudGoodsException(1, "鐢ㄦ埛灏氭湭鐧诲綍"); - } - - if (set == null || set.size() == 0 || goodsType == null) { + if (goodsId == null || goodsType == null) throw new UserCloudGoodsException(1, "绯荤粺鍙傛暟涓嶆纭�"); + + CommonGoods commonGoods = null; + if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { // 娣樺疂 + try { + TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); + commonGoods = CommonGoodsFactory.create(goodsBrief); + } catch (TaobaoGoodsDownException e) { + throw new UserCloudGoodsException(1, goodsId + "鍟嗗搧宸蹭笅鏋�"); + } + } else if (goodsType == Constant.SOURCE_TYPE_JD) { // 浜笢 + JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); + if (goods == null) + throw new UserCloudGoodsException(1, goodsId + "鏈壘鍒板晢鍝佷俊鎭�"); + commonGoods = CommonGoodsFactory.create(goods); + } else if (goodsType == Constant.SOURCE_TYPE_PDD) { // 鎷煎澶� + PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); + if (goods == null) + throw new UserCloudGoodsException(1, goodsId + "鏈壘鍒板晢鍝佷俊鎭�"); + commonGoods = CommonGoodsFactory.create(goods); + } else if (goodsType == Constant.SOURCE_TYPE_VIP) { // 鍞搧浼� + VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(goodsId +""); + if (goods == null) + throw new UserCloudGoodsException(1, goodsId + "鏈壘鍒板晢鍝佷俊鎭�"); + commonGoods = CommonGoodsFactory.create(goods); + } else if (goodsType == Constant.SOURCE_TYPE_SUNING) { // 鑻忓畞 + SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(goodsId +"", sellerId + ""); + if (goods == null) + throw new UserCloudGoodsException(1, goodsId + "鏈壘鍒板晢鍝佷俊鎭�"); + commonGoods = CommonGoodsFactory.create(goods); } - for (Long goodsId : set) { - CommonGoods commonGoods = null; - if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { // 娣樺疂 - try { - TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); - commonGoods = CommonGoodsFactory.create(goodsBrief); - } catch (TaobaoGoodsDownException e) { - throw new UserCloudGoodsException(1, goodsId + "鍟嗗搧宸蹭笅鏋�"); - } - } else if (goodsType == Constant.SOURCE_TYPE_JD) { // 浜笢 - JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId); - if (goods == null) - throw new UserCloudGoodsException(1, goodsId + "鏈壘鍒板晢鍝佷俊鎭�"); - commonGoods = CommonGoodsFactory.create(goods); - } else if (goodsType == Constant.SOURCE_TYPE_PDD) { // 鎷煎澶� - PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); - if (goods == null) - throw new UserCloudGoodsException(1, goodsId + "鏈壘鍒板晢鍝佷俊鎭�"); - commonGoods = CommonGoodsFactory.create(goods); - } + if (commonGoods == null) { + LogHelper.test("浜戝彂鍗曟湭鎵惧埌鍟嗗搧璇︽儏锛宨d=" + goodsId + "type=" + goodsType); + throw new UserCloudGoodsException(1, "鍟嗗搧淇℃伅鑾峰彇澶辫触"); + } - if (commonGoods == null) { - LogHelper.test("浜戝彂鍗曟湭鎵惧埌鍟嗗搧璇︽儏锛宨d=" + goodsId + "type=" + goodsType); - continue; - } - - try { - commonGoodsService.addOrUpdateCommonGoods(commonGoods); - } catch (CommonGoodsException e) { - LogHelper.errorDetailInfo(e); - throw new UserCloudGoodsException(1, "鍟嗗搧淇℃伅鏇存柊澶辫触"); - } + try { + commonGoodsService.addOrUpdateCommonGoods(commonGoods); + } catch (CommonGoodsException e) { + LogHelper.errorDetailInfo(e); + throw new UserCloudGoodsException(1, "鍟嗗搧淇℃伅鏇存柊澶辫触"); + } + + UserCloudGoods result = null; + UserCloudGoods cloudGoods = userCloudGoodsMapper.getByUidAndCommonGoodsId(uid, commonGoods.getId()); + if (cloudGoods != null) { + result = cloudGoods; + + UserCloudGoods update = new UserCloudGoods(); + update.setId(cloudGoods.getId()); + update.setState(UserCloudGoods.STATE_NORMAL); + update.setUpdateTime(new Date()); + userCloudGoodsMapper.updateByPrimaryKeySelective(update); + } else { + cloudGoods = new UserCloudGoods(); + cloudGoods.setUid(uid); + cloudGoods.setState(UserCloudGoods.STATE_NORMAL); + cloudGoods.setCommonGoods(commonGoods); + cloudGoods.setCreateTime(new Date()); + cloudGoods.setUpdateTime(new Date()); + userCloudGoodsMapper.insertSelective(cloudGoods); + + result = cloudGoods; + } + return result; + } - UserCloudGoods cloudGoods = userCloudGoodsMapper.getByUidAndCommonGoodsId(uid, commonGoods.getId()); - if (cloudGoods != null) { - UserCloudGoods update = new UserCloudGoods(); - update.setId(cloudGoods.getId()); - update.setState(UserCloudGoods.STATE_NORMAL); - update.setUpdateTime(new Date()); - userCloudGoodsMapper.updateByPrimaryKeySelective(update); - } else { - cloudGoods = new UserCloudGoods(); - cloudGoods.setUid(uid); - cloudGoods.setState(UserCloudGoods.STATE_NORMAL); - cloudGoods.setCommonGoods(commonGoods); - cloudGoods.setCreateTime(new Date()); - cloudGoods.setUpdateTime(new Date()); - userCloudGoodsMapper.insertSelective(cloudGoods); - } + @Override + public void sendGoodsMQMsg(Long uid) { + if (Constant.IS_TEST) { + return; + } + + List<UserCloudGoods> list = userCloudGoodsMapper.listByNotShare(uid); + if (list == null || list.size() == 0) { + return; + } + + long deliverTime = java.lang.System.currentTimeMillis(); + for (UserCloudGoods cloudGoods : list) { + UserCloudMQMsg msg = new UserCloudMQMsg(uid, cloudGoods.getId() + "", UserCloudMQMsg.TYPE_STORE); + Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg); + message.setStartDeliverTime(deliverTime); + producer.send(message); + // 姣�5鍒嗛挓鏌ヨ涓�娆� + deliverTime = deliverTime + 1000 * 60 * 5; } } - - + } -- Gitblit v1.8.0