From e91ab3c0e8513ea917a655010e518b5508afea3d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 01 七月 2020 11:17:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserGoodsStorageServiceImpl.java | 194 ++++++++++++++++++++++++++++++------------------
1 files changed, 120 insertions(+), 74 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 d65ff4f..5d0d662 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
@@ -10,6 +10,7 @@
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;
@@ -19,8 +20,10 @@
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;
@@ -29,9 +32,10 @@
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.CommonGoodsUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
@@ -46,25 +50,25 @@
@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
@@ -110,9 +114,10 @@
public int deleteBatchByPrimaryKey(List<Long> list) {
return userGoodsStorageMapper.deleteBatchByPrimaryKey(list);
}
-
+
/**
* 鏍规嵁涓婚敭 銆乽id 鎵归噺鍒犻櫎
+ *
* @param list
* @return
*/
@@ -125,7 +130,7 @@
public List<UserGoodsStorage> listQueryByUid(long start, int count, Long uid, Integer source) {
return userGoodsStorageMapper.listQueryByUid(start, count, uid, source);
}
-
+
@Override
public UserGoodsStorage getByUidAndAuctionId(Long uid, Long auctionId, Integer goodsType) {
return userGoodsStorageMapper.getByUidAndAuctionId(uid, auctionId, goodsType);
@@ -135,7 +140,7 @@
public long countQueryByUid(Long uid, Integer source) {
return userGoodsStorageMapper.countQueryByUid(uid, source);
}
-
+
@Override
public void save(Long uid, Set<Long> auctionIds, Integer goodsType) throws UserGoodsStorageException {
@@ -150,25 +155,25 @@
for (Long auctionId : auctionIds) {
CommonGoods commonGoods = null;
if (goodsType == null) {
- goodsType = Constant.SOURCE_TYPE_TAOBAO;
- }
-
+ goodsType = Constant.SOURCE_TYPE_TAOBAO;
+ }
+
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鍟嗗搧宸蹭笅鏋�");
+ throw new UserGoodsStorageException(1, auctionId + "鍟嗗搧宸蹭笅鏋�");
}
commonGoods = CommonGoodsFactory.create(jdGoods);
-
- } else if (goodsType == Constant.SOURCE_TYPE_JD) {
- // 鎷煎澶�
+
+ } else if (goodsType == Constant.SOURCE_TYPE_PDD) {
+ // 鎷煎澶�
PDDGoodsDetail pddGoods = PinDuoDuoApiUtil.getGoodsDetail(auctionId);
if (pddGoods == null) {
- throw new UserGoodsStorageException(1, "auctionId鍟嗗搧宸蹭笅鏋�");
+ throw new UserGoodsStorageException(1, auctionId + "鍟嗗搧宸蹭笅鏋�");
}
commonGoods = CommonGoodsFactory.create(pddGoods);
} else {
@@ -178,11 +183,10 @@
TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
commonGoods = CommonGoodsFactory.create(goodsBrief);
} catch (TaobaoGoodsDownException e) {
- throw new UserGoodsStorageException(1, "auctionId鍟嗗搧宸蹭笅鏋�");
+ throw new UserGoodsStorageException(1, auctionId + "鍟嗗搧宸蹭笅鏋�");
}
}
-
-
+
if (commonGoods != null) {
try {
commonGoodsService.addOrUpdateCommonGoods(commonGoods);
@@ -202,7 +206,8 @@
userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
} else {
goodsStorage = new UserGoodsStorage();
- goodsStorage.setUid(uid);;
+ goodsStorage.setUid(uid);
+ ;
goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
goodsStorage.setCommonGoods(commonGoods);
goodsStorage.setCreateTime(new Date());
@@ -213,8 +218,8 @@
}
}
-
@Override
+ @Transactional(rollbackFor=Exception.class)
public void addCommonGoods(Long uid, Set<Long> ids) throws UserGoodsStorageException {
if (uid == null) {
@@ -237,7 +242,8 @@
userGoodsStorageMapper.updateByPrimaryKeySelective(goodsStorage);
} else {
goodsStorage = new UserGoodsStorage();
- goodsStorage.setUid(uid);;
+ goodsStorage.setUid(uid);
+ ;
goodsStorage.setState(UserGoodsStorage.STATE_NORMAL);
goodsStorage.setCommonGoods(commonGoods);
goodsStorage.setCreateTime(new Date());
@@ -248,21 +254,20 @@
}
}
-
@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);
+ 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>();
@@ -273,7 +278,7 @@
}
listGid.add(commonGoods.getGoodsId());
}
-
+
// API缃戠粶鎺ュ彛楠岃瘉鏄惁鍦ㄥ敭
try {
listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
@@ -285,27 +290,25 @@
e.printStackTrace();
}
}
-
-
- BigDecimal rate = manageService.getFanLiRate();
+
+ BigDecimal rate = manageService.getFanLiRate(UserLevelEnum.daRen);
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; // 榛樿鍋滃敭
+
+ if (listTaoKeGoods != null && listTaoKeGoods.size() > 0 && goodsType != null
+ && goodsType == Constant.SOURCE_TYPE_TAOBAO) {
+ state = 1; // 榛樿鍋滃敭
Long goodsId = commonGoods.getGoodsId();
- for (TaoBaoGoodsBrief taoKeGoods: listTaoKeGoods) {
+ for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
Long auctionId = taoKeGoods.getAuctionId();
if (goodsId == auctionId || goodsId.equals(auctionId)) {
state = 0; // 鍦ㄥ敭
@@ -315,7 +318,7 @@
}
commonGoods.setState(state);
TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
-
+
// 鍒ゆ柇鏄惁宸插垎浜�
Integer storageState = userGoodsStorage.getState();
if (storageState != null && storageState == UserGoodsStorage.STATE_SHARED) {
@@ -324,19 +327,18 @@
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;
@@ -348,20 +350,19 @@
}
return state;
}
-
+
@Override
- public JSONObject shareGoods(Long uid, List<Long> listStorageID, Integer goodsType)
+ 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) {
+ for (Long sid : listStorageID) {
+ for (UserGoodsStorage torage : listStorage) {
Long id = torage.getId();
if (sid == id || sid.equals(id)) {
listResult.add(torage);
@@ -369,44 +370,89 @@
}
}
}
-
+
BigDecimal totalMoney = new BigDecimal(0.00);
List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
-
- BigDecimal rate = hongBaoManageService.getShareRate();
- for (UserGoodsStorage userGoodsStorage: listResult) {
+
+ BigDecimal rate = hongBaoManageService.getShareRate(UserLevelEnum.daRen);
+ for (UserGoodsStorage userGoodsStorage : listResult) {
CommonGoods commonGoods = userGoodsStorage.getCommonGoods();
TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(commonGoods);
listGoodsBrief.add(goodsBrief);
-
- BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goodsBrief, rate);
+
+ BigDecimal money = TaoBaoUtil.getGoodsHongBaoMoney(goodsBrief, rate,true);
totalMoney = MoneyBigDecimalUtil.add(totalMoney, money);
}
-
- ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorage(uid, listGoodsBrief, listStorageID);
+
+ ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordGoodsStorage(uid, listGoodsBrief,
+ listStorageID);
FileUploadResult uploadResult = new FileUploadResult();
uploadResult.setUrl(shareRecord.getSharePictureUrl());
-
+
JSONObject data = new JSONObject();
- data.put("revenue", listGoodsBrief.size() + "涓晢鍝侀浼板垎浜閲戯細楼"+totalMoney);
+ data.put("revenue", listGoodsBrief.size() + "涓晢鍝侀浼板垎浜閲戯細楼" + totalMoney);
data.put("shareId", shareRecord.getRedisKey());
data.put("shareImg", uploadResult);
-
- if (goodsType == null) {
- goodsType = Constant.SOURCE_TYPE_TAOBAO;
+ data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareMultipleNotify.getKey()));
+ 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;
+ }
+ }
+ }
+
+ BigDecimal totalMoney = new BigDecimal(0.00);
+ List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
+
+ Integer goodsType = null;
+ BigDecimal rate = hongBaoManageService.getShareRate(UserLevelEnum.daRen);
+ 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) {
- // 浜笢 TODO
- data.put("notifyDesc", configService.get("goods_share_multiple_notify"));
+ // 浜笢
+ data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareNotifyJD.getKey()));
} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
- // 鎷煎澶� TODO
- data.put("notifyDesc", configService.get("goods_share_multiple_notify"));
+ // 鎷煎澶�
+ data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareNotifyPDD.getKey()));
} else {
- data.put("notifyDesc", configService.get("goods_share_multiple_notify"));
+ data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareMultipleNotify.getKey()));
}
-
return data;
}
--
Gitblit v1.8.0