From eec7e789a87863c25d92c10ad5dfc22ad80c448d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 14 七月 2020 12:36:48 +0800
Subject: [PATCH] 系统区分BUG修复

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java |  694 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 405 insertions(+), 289 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java
index 3d9b3fd..b2944fa 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java
@@ -8,347 +8,463 @@
 
 import javax.annotation.Resource;
 
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.user.UserInfo;
+import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.util.*;
 import org.springframework.core.task.TaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.yeshi.utils.JsonUtil;
 import org.yeshi.utils.entity.FileUploadResult;
-import org.yeshi.utils.taobao.TbImgUtil;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.yeshi.fanli.dao.mybatis.user.UserGoodsStorageMapper;
-import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord.ShareSourceTypeEnum;
+import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
+import com.yeshi.fanli.dto.share.ShareGoodsRecordDTO;
 import com.yeshi.fanli.entity.bus.user.UserGoodsStorage;
+import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
 import com.yeshi.fanli.entity.goods.CommonGoods;
+import com.yeshi.fanli.entity.jd.JDGoods;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.exception.goods.CommonGoodsException;
 import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
+import com.yeshi.fanli.exception.taobao.TaoKeApiException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.exception.user.UserGoodsStorageException;
 import com.yeshi.fanli.service.inter.config.ConfigService;
 import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
 import com.yeshi.fanli.service.inter.user.UserGoodsStorageService;
 import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
-import com.yeshi.fanli.util.MoneyBigDecimalUtil;
-import com.yeshi.fanli.util.RedisManager;
-import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.factory.CommonGoodsFactory;
+import com.yeshi.fanli.util.jd.JDApiUtil;
+import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
+import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 
 @Service
 public class UserGoodsStorageServiceImpl implements UserGoodsStorageService {
-	
-	@Resource(name = "taskExecutor")
-	private TaskExecutor executor;
-	
-	@Resource
-	private RedisManager redisManager;
-	
-	@Resource
-	private ConfigService configService;
-	
-	@Resource
-	private CommonGoodsService commonGoodsService;
-	
-	@Resource
-	private HongBaoManageService manageService;
 
-	@Resource
-	private UserGoodsStorageMapper userGoodsStorageMapper;
-	
-	@Resource
-	private UserShareGoodsRecordService userShareGoodsRecordService;
-	@Resource
-	private HongBaoManageService hongBaoManageService;
+    @Resource(name = "taskExecutor")
+    private TaskExecutor executor;
 
-	@Override
-	public int deleteByPrimaryKey(Long id) {
-		return userGoodsStorageMapper.deleteByPrimaryKey(id);
-	}
+    @Resource
+    private RedisManager redisManager;
 
-	@Override
-	public int insert(UserGoodsStorage record) {
-		return userGoodsStorageMapper.insert(record);
-	}
+    @Resource
+    private ConfigService configService;
 
-	@Override
-	public int insertSelective(UserGoodsStorage record) {
-		return userGoodsStorageMapper.insertSelective(record);
-	}
+    @Resource
+    private CommonGoodsService commonGoodsService;
 
-	@Override
-	public UserGoodsStorage selectByPrimaryKey(Long id) {
-		return userGoodsStorageMapper.selectByPrimaryKey(id);
-	}
+    @Resource
+    private HongBaoManageService manageService;
 
-	@Override
-	public int updateByPrimaryKeySelective(UserGoodsStorage record) {
-		return userGoodsStorageMapper.updateByPrimaryKeySelective(record);
-	}
+    @Resource
+    private UserGoodsStorageMapper userGoodsStorageMapper;
 
-	@Override
-	public int updateByPrimaryKey(UserGoodsStorage record) {
-		return userGoodsStorageMapper.updateByPrimaryKey(record);
-	}
+    @Resource
+    private UserShareGoodsRecordService userShareGoodsRecordService;
+    @Resource
+    private HongBaoManageService hongBaoManageService;
 
-	/**
-	 * 鏍规嵁涓婚敭鎵归噺鍒犻櫎
-	 * 
-	 * @param list
-	 * @return
-	 */
-	@Override
-	public int deleteBatchByPrimaryKey(List<Long> list) {
-		return userGoodsStorageMapper.deleteBatchByPrimaryKey(list);
-	}
-	
-	/**
-	 * 鏍规嵁涓婚敭 銆乽id 鎵归噺鍒犻櫎
-	 * @param list
-	 * @return
-	 */
-	@Override
-	public int deleteBatchByUidAndPrimaryKey(Long uid, List<Long> list) {
-		return userGoodsStorageMapper.deleteBatchByUidAndPrimaryKey(uid, list);
-	}
+    @Resource
+    private UserInfoService userInfoService;
 
-	@Override
-	public List<UserGoodsStorage> listQueryByUid(long start, int count, Long uid) {
-		return userGoodsStorageMapper.listQueryByUid(start, count, uid);
-	}
-	
-	@Override
-	public UserGoodsStorage getByUidAndAuctionId(Long uid, Long auctionId) {
-		return userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId);
-	}
+    @Override
+    public int deleteByPrimaryKey(Long id) {
+        return userGoodsStorageMapper.deleteByPrimaryKey(id);
+    }
 
-	@Override
-	public long countQueryByUid(Long uid) {
-		return userGoodsStorageMapper.countQueryByUid(uid);
-	}
+    @Override
+    public int insert(UserGoodsStorage record) {
+        return userGoodsStorageMapper.insert(record);
+    }
 
-	@Override
-	public void save(Long uid, Set<Long> auctionIds) throws UserGoodsStorageException {
+    @Override
+    public int insertSelective(UserGoodsStorage record) {
+        return userGoodsStorageMapper.insertSelective(record);
+    }
 
-		if (uid == null) {
-			throw new UserGoodsStorageException(1, "鐢ㄦ埛灏氭湭鐧诲綍");
-		}
+    @Override
+    public UserGoodsStorage selectByPrimaryKey(Long id) {
+        return userGoodsStorageMapper.selectByPrimaryKey(id);
+    }
 
-		if (auctionIds == null || auctionIds.size() == 0) {
-			throw new UserGoodsStorageException(1, "鍟嗗搧ID涓虹┖");
-		}
+    @Override
+    public int updateByPrimaryKeySelective(UserGoodsStorage record) {
+        return userGoodsStorageMapper.updateByPrimaryKeySelective(record);
+    }
 
-		for (Long auctionId : auctionIds) {
+    @Override
+    public int updateByPrimaryKey(UserGoodsStorage record) {
+        return userGoodsStorageMapper.updateByPrimaryKey(record);
+    }
 
-			TaoBaoGoodsBrief goodsBrief = null;
+    /**
+     * 鏍规嵁涓婚敭鎵归噺鍒犻櫎
+     *
+     * @param list
+     * @return
+     */
+    @Override
+    public int deleteBatchByPrimaryKey(List<Long> list) {
+        return userGoodsStorageMapper.deleteBatchByPrimaryKey(list);
+    }
 
-			try {
-				// 鑾峰彇鍟嗗搧璇︽儏
-				goodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
-			} catch (TaobaoGoodsDownException e) {
+    /**
+     * 鏍规嵁涓婚敭 銆乽id 鎵归噺鍒犻櫎
+     *
+     * @param list
+     * @return
+     */
+    @Override
+    public int deleteBatchByUidAndPrimaryKey(Long uid, List<Long> list) {
+        return userGoodsStorageMapper.deleteBatchByUidAndPrimaryKey(uid, list);
+    }
 
-				// 鏇存柊绠�鐗� 涓嬫灦鐘舵��
-				CommonGoods commonGoods = new CommonGoods();
-				commonGoods.setGoodsId(auctionId);
-				commonGoods.setGoodsType(CommonGoods.GOODS_TYPE_TB);
-				commonGoods.setState(CommonGoods.STATE_OFFLINE);
+    @Override
+    public List<UserGoodsStorage> listQueryByUid(long start, int count, Long uid, Integer source) {
+        return userGoodsStorageMapper.listQueryByUid(start, count, uid, source);
+    }
 
-				throw new UserGoodsStorageException(1, "璇ュ晢鍝佸凡涓嬫灦");
-			}
+    @Override
+    public UserGoodsStorage getByUidAndAuctionId(Long uid, Long auctionId, Integer goodsType) {
+        return userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId, goodsType);
+    }
 
-			// 杞崲绠�鐗堝晢鍝佷俊鎭�
-			CommonGoods commonGoods = CommonGoodsFactory.create(goodsBrief);
-			try {
-				commonGoodsService.addOrUpdateCommonGoods(commonGoods);
-			} catch (CommonGoodsException e) {
-				e.printStackTrace();
-				throw new UserGoodsStorageException(1, "鍟嗗搧淇℃伅鏇存柊澶辫触");
-			}
+    @Override
+    public long countQueryByUid(Long uid, Integer source) {
+        return userGoodsStorageMapper.countQueryByUid(uid, source);
+    }
 
-			Long cid = commonGoods.getId();
+    @Override
+    public void save(Long uid, Set<Long> auctionIds, Integer goodsType) throws UserGoodsStorageException {
 
-			UserGoodsStorage goodsStorage = userGoodsStorageMapper.getByUidAndCid(uid, cid);
+        if (uid == null) {
+            throw new UserGoodsStorageException(1, "鐢ㄦ埛灏氭湭鐧诲綍");
+        }
 
-			if (goodsStorage != null) {
-				// 鍒濆璇濈姸鎬�
-				goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
-				goodsStorage.setUpdateTime(new Date());
-				userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
-			} else {
-				goodsStorage = new UserGoodsStorage();
-				goodsStorage.setUid(uid);;
-				goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
-				goodsStorage.setCommonGoods(commonGoods);
-				goodsStorage.setCreateTime(new Date());
-				goodsStorage.setUpdateTime(new Date());
-				userGoodsStorageMapper.insertSelective(goodsStorage);
-			}
+        if (auctionIds == null || auctionIds.size() == 0) {
+            throw new UserGoodsStorageException(1, "鍟嗗搧ID涓虹┖");
+        }
 
-		}
-	}
+        for (Long auctionId : auctionIds) {
+            CommonGoods commonGoods = null;
+            if (goodsType == null) {
+                goodsType = Constant.SOURCE_TYPE_TAOBAO;
+            }
 
-	
-	@Override
-	public JSONArray getMyStorage(int page, int pageSize, Long uid) throws UserGoodsStorageException {
-		
-		JSONArray  array = new JSONArray();
+            if (goodsType == Constant.SOURCE_TYPE_JD) {
+                // 浜笢
+                JDGoods jdGoods = JDApiUtil.queryGoodsDetail(auctionId);
+                if (jdGoods == null) {
+                    jdGoods = JDApiUtil.getGoodsDetail(auctionId);
+                }
+                if (jdGoods == null) {
+                    throw new UserGoodsStorageException(1, auctionId + "鍟嗗搧宸蹭笅鏋�");
+                }
+                commonGoods = CommonGoodsFactory.create(jdGoods);
 
-		List<UserGoodsStorage> listStorage = listQueryByUid(page , pageSize, uid);
-		if (listStorage == null || listStorage.size() == 0) {
-			return array;
-		}
-		
-		Date nowDate = new Date();
-		long nh = 1000 * 60 * 60;
-		long nd = 1000 * 24 * 60 * 60;
-		List<CommonGoods> listUpadteCommonGoods = new ArrayList<CommonGoods>();
-		
-		BigDecimal  rate = manageService.getFanLiRate();
-		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
+            } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
+                // 鎷煎澶�
+                PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(auctionId);
+                if (pddGoods == null) {
+                    throw new UserGoodsStorageException(1, auctionId + "鍟嗗搧宸蹭笅鏋�");
+                }
+                commonGoods = CommonGoodsFactory.create(pddGoods);
+            } else {
+                // 娣樺疂
+                try {
+                    // 鑾峰彇鍟嗗搧璇︽儏
+                    TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
+                    commonGoods = CommonGoodsFactory.create(goodsBrief);
+                } catch (TaobaoGoodsDownException e) {
+                    throw new UserGoodsStorageException(1, auctionId + "鍟嗗搧宸蹭笅鏋�");
+                }
+            }
 
-		
-		for (UserGoodsStorage userGoodsStorage : listStorage) {
-			CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
-			if (commonGoods == null) {
-				continue;
-			}
-			
-			TaoBaoGoodsBrief goodsBrief = null;
-			JSONObject dataObject = new JSONObject();
-			
-			
-			// 鏇存柊涓�涓皬鏃朵箣鍐呯殑鍟嗗搧涓嶅啀鏇存柊
-			Integer goodsState = commonGoods.getState();
-			// 鐘舵�佹湭涓嬫灦鏃惰繘琛屾洿鏂�
-			if (goodsState != null && (goodsState != 1 || !goodsState.equals(1))) {
-				Date updateTime = commonGoods.getUpdateTime();
-				if (updateTime != null) {
-					// 璁$畻宸灏戝皬鏃�
-					long diff = nowDate.getTime() - updateTime.getTime();
-					long day = diff / nd;
-				    long hour = diff % nd / nh;
-				    if (hour > 1 || day > 0 ) {
-				    	try {
-				    		if (commonGoods.getGoodsType() == CommonGoods.GOODS_TYPE_TB) {
-				    			goodsBrief = redisManager.getTaoBaoGoodsBrief(commonGoods.getGoodsId());
-				    		
-				    			goodsState = 0;
-				    			goodsBrief.setState(goodsState);
-				    			
-				    			CommonGoods upadeteCommonGoods = CommonGoodsFactory.create(goodsBrief);
-				    			upadeteCommonGoods.setState(goodsState);
-								upadeteCommonGoods.setId(commonGoods.getId());
-								listUpadteCommonGoods.add(upadeteCommonGoods);
-				    		}
-						} catch (TaobaoGoodsDownException e) {
-							// 宸蹭笅鏋�
-							goodsState = 1;
-							commonGoods.setState(goodsState);
-							listUpadteCommonGoods.add(commonGoods);
-							e.printStackTrace();
-						}
-				    }
-				}
-			}
-			
-			if (goodsBrief == null) {
-				goodsBrief = TaoBaoUtil.convert(commonGoods);
-			} 
-			
-			// 鍒ゆ柇鏄惁宸插垎浜�
-			Integer state = userGoodsStorage.getState();
-			int shared = UserGoodsStorage.STATE_SHARED;
-			if (state != null && (state == shared || state.equals(shared))) {
-				if (goodsState != 1 || !goodsState.equals(1)) {
-					goodsBrief.setState(2); // 宸插垎浜姸鎬�
-				}
-			}
+            if (commonGoods != null) {
+                try {
+                    commonGoodsService.addOrUpdateCommonGoods(commonGoods);
+                } catch (CommonGoodsException e) {
+                    e.printStackTrace();
+                    throw new UserGoodsStorageException(1, "鍟嗗搧淇℃伅鏇存柊澶辫触");
+                }
 
-			// 鏀瑰彉鍥剧墖灏哄
-			String pictUrl = goodsBrief.getPictUrl();
-			if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
-				goodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
-			}
-			String json = gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, rate.toString(), null));
+                Long cid = commonGoods.getId();
 
-			dataObject.put("storageId", userGoodsStorage.getId());
-			dataObject.put("goods", json);
-			array.add(dataObject);
-		}
-		
-		
-		if (listUpadteCommonGoods.size() > 0) {
-			executor.execute(new Runnable() {
-				@Override
-				public void run() {
-					try {
-						// 鏇存柊绠�鐗堜俊鎭�
-						commonGoodsService.updateBatchCommonGoods(listUpadteCommonGoods);
-					} catch (Exception e) {
-						e.printStackTrace();
-					}
-					
-				}
-			});
-		}
-		
-		return array;
-	}
-	
-	
-	@Override
-	public boolean isExistStorage(Long uid, Long auctionId) {
-		boolean state = false;
-		if (uid != null && auctionId != null) {
-			UserGoodsStorage userGoodsStorage = userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId);
-			if (userGoodsStorage != null) {
-				state = true;
-			}
-		}
-		return state;
-	}
-	
-	@Override
-	public JSONObject shareGoods(Long uid, List<Long> listStorageID)  
-			throws UserGoodsStorageException, UserShareGoodsRecordException {
-		
-		List<UserGoodsStorage> listStorage = userGoodsStorageMapper.listQueryByIds(listStorageID);
-		if (listStorage == null || listStorage.size() == 0) {
-			throw new UserGoodsStorageException(1, "閫夊搧搴撳晢鍝佷笉瀛樺湪");
-		}
-		
-		BigDecimal totalMoney = new BigDecimal(0.00);
-		List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
-		
-		for (UserGoodsStorage userGoodsStorage: listStorage) {
-			CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
-			TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
-			listGoodsBrief.add(goodsBrief);
-			// 宸插垎浜�
-			userGoodsStorage.setState(1);
-			userGoodsStorage.setUpdateTime(new Date());
-			
-			String rateStr = hongBaoManageService.get("hongbao_goods_proportion");
-			BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goodsBrief, new BigDecimal(rateStr));
-			totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
-		}
-		
-		String revenue = listGoodsBrief.size() + "涓晢鍝侀浼板垎浜閲戯細楼"+totalMoney;
-		FileUploadResult loadResult = userShareGoodsRecordService.save(uid, ShareSourceTypeEnum.storage, listGoodsBrief);
+                UserGoodsStorage goodsStorage = userGoodsStorageMapper.getByUidAndCid(uid, cid);
 
-		// 鏇存柊涓哄凡鍒嗕韩
-		userGoodsStorageMapper.updateBatchSelective(listStorage);
-		
-		JSONObject data = new JSONObject();
-		data.put("shareImg", loadResult);
-		data.put("revenue", revenue);
-		data.put("notifyDesc", configService.get("goods_share_notify"));
+                if (goodsStorage != null) {
+                    // 鍒濆璇濈姸鎬�
+                    goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
+                    goodsStorage.setUpdateTime(new Date());
+                    userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
+                } else {
+                    goodsStorage = new UserGoodsStorage();
+                    goodsStorage.setUid(uid);
+                    ;
+                    goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
+                    goodsStorage.setCommonGoods(commonGoods);
+                    goodsStorage.setCreateTime(new Date());
+                    goodsStorage.setUpdateTime(new Date());
+                    userGoodsStorageMapper.insertSelective(goodsStorage);
+                }
+            }
+        }
+    }
 
-		return data;
-	}
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void addCommonGoods(Long uid, Set<Long> ids) throws UserGoodsStorageException {
+
+        if (uid == null) {
+            throw new UserGoodsStorageException(1, "鐢ㄦ埛灏氭湭鐧诲綍");
+        }
+
+        if (ids == null || ids.size() == 0) {
+            throw new UserGoodsStorageException(1, "鍟嗗搧ID涓虹┖");
+        }
+
+        for (Long id : ids) {
+            CommonGoods commonGoods = commonGoodsService.selectByPrimaryKey(id);
+            if (commonGoods != null) {
+                UserGoodsStorage goodsStorage = userGoodsStorageMapper.getByUidAndCid(uid, id);
+
+                if (goodsStorage != null) {
+                    // 鍒濆璇濈姸鎬�
+                    goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
+                    goodsStorage.setUpdateTime(new Date());
+                    userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
+                } else {
+                    goodsStorage = new UserGoodsStorage();
+                    goodsStorage.setUid(uid);
+                    ;
+                    goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
+                    goodsStorage.setCommonGoods(commonGoods);
+                    goodsStorage.setCreateTime(new Date());
+                    goodsStorage.setUpdateTime(new Date());
+                    userGoodsStorageMapper.insertSelective(goodsStorage);
+                }
+            }
+        }
+    }
+
+    @Override
+    public JSONArray getMyStorage(int page, int pageSize, Long uid, Integer source) throws UserGoodsStorageException {
+
+        JSONArray array = new JSONArray();
+
+        List<UserGoodsStorage> listStorage = listQueryByUid(page, pageSize, uid, source);
+        if (listStorage == null || listStorage.size() == 0) {
+            return array;
+        }
+
+        if (source == null) {
+            source = Constant.SOURCE_TYPE_TAOBAO;
+        }
+
+        List<TaoBaoGoodsBrief> listTaoKeGoods = null;
+        if (source == Constant.SOURCE_TYPE_TAOBAO) {
+            List<Long> listGid = new ArrayList<Long>();
+            for (UserGoodsStorage userGoodsStorage : listStorage) {
+                CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
+                if (commonGoods == null) {
+                    continue;
+                }
+                listGid.add(commonGoods.getGoodsId());
+            }
+
+            // API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭
+            try {
+                listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
+            } catch (TaoKeApiException e) {
+                e.printStackTrace();
+            } catch (TaobaoGoodsDownException e) {
+                e.printStackTrace();
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        SystemEnum system = userInfoService.getUserSystem(uid);
+        BigDecimal rate = manageService.getFanLiRate(UserLevelEnum.daRen, system);
+        Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+                .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
+
+        for (UserGoodsStorage userGoodsStorage : listStorage) {
+            CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
+            if (commonGoods == null) {
+                continue;
+            }
+
+            int state = 0;
+            Integer goodsType = commonGoods.getGoodsType();
+
+            if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 && goodsType != null
+                    && goodsType == Constant.SOURCE_TYPE_TAOBAO) {
+                state = 1; // 榛樿鍋滃敭
+                Long goodsId = commonGoods.getGoodsId();
+                for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
+                    Long auctionId = taoKeGoods.getAuctionId();
+                    if (goodsId == auctionId || goodsId.equals(auctionId)) {
+                        state = 0; // 鍦ㄥ敭
+                        break;
+                    }
+                }
+            }
+            commonGoods.setState(state);
+            TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
+
+            // 鍒ゆ柇鏄惁宸插垎浜�
+            Integer storageState = userGoodsStorage.getState();
+            if (storageState != null && storageState == UserGoodsStorage.STATE_SHARED) {
+                Integer goodsState = goodsBrief.getState();
+                if (goodsState != null && goodsState != 1) {
+                    goodsBrief.setState(2); // 宸插垎浜姸鎬� 浼樺厛鏄剧ず宸蹭笅鏋�
+                }
+            }
+
+            String json = gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, rate.toString(), null));
+
+            JSONObject dataObject = new JSONObject();
+            dataObject.put("storageId", userGoodsStorage.getId());
+            dataObject.put("goods", json);
+            array.add(dataObject);
+        }
+
+        return array;
+    }
+
+    @Override
+    public boolean isExistStorage(Long uid, Long auctionId, Integer goodType) {
+        boolean state = false;
+        if (uid != null && auctionId != null) {
+            UserGoodsStorage userGoodsStorage = userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId, goodType);
+            if (userGoodsStorage != null) {
+                state = true;
+            }
+        }
+        return state;
+    }
+
+    @Override
+    public JSONObject shareGoods(Long uid, List<Long> listStorageID)
+            throws UserGoodsStorageException, UserShareGoodsRecordException {
+        List<UserGoodsStorage> listStorage = userGoodsStorageMapper.listQueryByIds(listStorageID);
+        if (listStorage == null || listStorage.size() == 0) {
+            throw new UserGoodsStorageException(1, "閫夊搧搴撳晢鍝佷笉瀛樺湪");
+        }
+
+        List<UserGoodsStorage> listResult = new ArrayList<UserGoodsStorage>();
+        // 杩樺師椤哄簭 鐢ㄤ簬鍒跺浘
+        for (Long sid : listStorageID) {
+            for (UserGoodsStorage torage : listStorage) {
+                Long id = torage.getId();
+                if (sid == id || sid.equals(id)) {
+                    listResult.add(torage);
+                    break;
+                }
+            }
+        }
+
+        BigDecimal totalMoney = new BigDecimal(0.00);
+        List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
+
+        SystemEnum system = userInfoService.getUserSystem(uid);
+
+        BigDecimal rate = hongBaoManageService.getShareRate(UserLevelEnum.daRen,system);
+        for (UserGoodsStorage userGoodsStorage : listResult) {
+            CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
+            TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
+            listGoodsBrief.add(goodsBrief);
+
+            BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goodsBrief, rate, true);
+            totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
+        }
+
+        ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorage(uid, listGoodsBrief,
+                listStorageID);
+        FileUploadResult uploadResult = new FileUploadResult();
+        uploadResult.setUrl(shareRecord.getSharePictureUrl());
+
+        UserInfo user = userInfoService.selectByPKey(uid);
+
+        JSONObject data = new JSONObject();
+        data.put("revenue", listGoodsBrief.size() + "涓晢鍝侀浼板垎浜閲戯細楼" + totalMoney);
+        data.put("shareId", shareRecord.getRedisKey());
+        data.put("shareImg", uploadResult);
+        data.put("notifyDesc", configService.getValue(ConfigKeyEnum.goodsShareMultipleNotify.getKey(), user.getSystem()));
+        return data;
+    }
+
+    @Override
+    public JSONObject createShareV2(Long uid, List<Long> listStorageID, boolean needDrawPicture)
+            throws UserGoodsStorageException, UserShareGoodsRecordException {
+        List<UserGoodsStorage> listStorage = userGoodsStorageMapper.listQueryByIds(listStorageID);
+        if (listStorage == null || listStorage.size() == 0) {
+            throw new UserGoodsStorageException(1, "閫夊搧搴撳晢鍝佷笉瀛樺湪");
+        }
+
+        List<UserGoodsStorage> listResult = new ArrayList<UserGoodsStorage>();
+        // 杩樺師椤哄簭 鐢ㄤ簬鍒跺浘
+        for (Long sid : listStorageID) {
+            for (UserGoodsStorage torage : listStorage) {
+                Long id = torage.getId();
+                if (sid == id || sid.equals(id)) {
+                    listResult.add(torage);
+                    break;
+                }
+            }
+        }
+
+        SystemEnum system = userInfoService.getUserSystem(uid);
+
+        BigDecimal totalMoney = new BigDecimal(0.00);
+        List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
+
+        Integer goodsType = null;
+        BigDecimal rate = hongBaoManageService.getShareRate(UserLevelEnum.daRen,system);
+        for (UserGoodsStorage userGoodsStorage : listResult) {
+            CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
+            BigDecimal money = CommonGoodsUtil.getCommission(commonGoods, rate);
+            totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
+            listCommonGoods.add(commonGoods);
+
+            if (goodsType == null) {
+                goodsType = commonGoods.getGoodsType();
+            }
+        }
+
+        ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorageV2(uid, listCommonGoods,
+                listStorageID, needDrawPicture);
+        FileUploadResult uploadResult = new FileUploadResult();
+        uploadResult.setUrl(shareRecord.getSharePictureUrl());
+
+        JSONObject data = new JSONObject();
+        data.put("revenue", listCommonGoods.size() + "涓晢鍝侀浼板垎浜閲戯細楼" + totalMoney);
+        data.put("shareId", shareRecord.getRedisKey());
+        data.put("shareImg", uploadResult);
+
+
+        // 鎻愮ず璇笉鍚�
+        if (goodsType == Constant.SOURCE_TYPE_JD) {
+            // 浜笢
+            data.put("notifyDesc", configService.getValue(ConfigKeyEnum.goodsShareNotifyJD.getKey(), system));
+        } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
+            // 鎷煎澶�
+            data.put("notifyDesc", configService.getValue(ConfigKeyEnum.goodsShareNotifyPDD.getKey(), system));
+        } else {
+            data.put("notifyDesc", configService.getValue(ConfigKeyEnum.goodsShareMultipleNotify.getKey(), system));
+        }
+        return data;
+    }
+
 }

--
Gitblit v1.8.0