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 |  685 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 408 insertions(+), 277 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 933a834..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
@@ -4,24 +4,31 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 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 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;
@@ -30,310 +37,434 @@
 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.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 void updateShareState(Long shareId) {
-		userGoodsStorageMapper.updateShareState(shareId);
-	}
+    @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;
-		}
-		
-	
-		List<Long> listGid = new ArrayList<Long>();
-		for (UserGoodsStorage userGoodsStorage : listStorage) {
-			CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
-			if (commonGoods == null) {
-				continue;
-			}
-			listGid.add(commonGoods.getGoodsId());
-		}
-		
-		// API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭
-		List<TaoBaoGoodsBrief> listTaoKeGoods = null;
-		try {
-			listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
-		} catch (TaoKeApiException e) {
-			e.printStackTrace();
-		} catch (TaobaoGoodsDownException e) {
-			e.printStackTrace();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		
-		BigDecimal  rate = manageService.getFanLiRate();
-		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-		
-		for (UserGoodsStorage userGoodsStorage : listStorage) {
-			CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
-			if (commonGoods == null) {
-				continue;
-			}
-			
-			if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 ) {
-				int 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) {
-		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, "閫夊搧搴撳晢鍝佷笉瀛樺湪");
-		}
-		
-		
-		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>();
-		
-		BigDecimal rate = hongBaoManageService.getShareRate();
-		for (UserGoodsStorage userGoodsStorage: listResult) {
-			CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
-			TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
-			listGoodsBrief.add(goodsBrief);
-			
-			BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goodsBrief, rate);
-			totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
-		}
-		
-		String revenue = listGoodsBrief.size() + "涓晢鍝侀浼板垎浜閲戯細楼"+totalMoney;
-		
-		Map<String,Object> map = userShareGoodsRecordService.save(uid, ShareSourceTypeEnum.storage, 
-				null, listGoodsBrief);
-		
-		JSONObject data = new JSONObject();
-		data.put("revenue", revenue);
-		data.put("shareId", map.get("shareId"));
-		data.put("shareImg", map.get("loadResult"));
-		data.put("notifyDesc", configService.get("goods_share_multiple_notify"));
+            } 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 + "鍟嗗搧宸蹭笅鏋�");
+                }
+            }
 
-		return data;
-	}
+            if (commonGoods != null) {
+                try {
+                    commonGoodsService.addOrUpdateCommonGoods(commonGoods);
+                } catch (CommonGoodsException e) {
+                    e.printStackTrace();
+                    throw new UserGoodsStorageException(1, "鍟嗗搧淇℃伅鏇存柊澶辫触");
+                }
+
+                Long cid = commonGoods.getId();
+
+                UserGoodsStorage goodsStorage = userGoodsStorageMapper.getByUidAndCid(uid, cid);
+
+                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
+    @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