From ec6389a5f15c729a0a76577de04b61e602db0663 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 12 十二月 2018 10:31:32 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 156 insertions(+), 18 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java index 06b093c..e79b8a1 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserShareGoodsRecordServiceImpl.java @@ -5,17 +5,26 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import javax.annotation.Resource; import javax.transaction.Transactional; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import org.yeshi.utils.HttpUtil; +import org.yeshi.utils.JsonUtil; import org.yeshi.utils.QRCodeUtil; import org.yeshi.utils.entity.FileUploadResult; import org.yeshi.utils.exception.HttpException; +import org.yeshi.utils.taobao.TbImgUtil; import org.yeshi.utils.tencentcloud.COSManager; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.share.UserShareGoodsRecordMapper; import com.yeshi.fanli.entity.bus.share.UserShareGoodsGroup; @@ -26,6 +35,7 @@ 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.TaobaoGoodsDownException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; @@ -35,6 +45,7 @@ import com.yeshi.fanli.util.AESUtil; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.ImageUtil; +import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; import com.yeshi.fanli.util.taobao.TaoBaoUtil; @@ -42,8 +53,14 @@ @Service public class UserShareGoodsRecordServiceImpl implements UserShareGoodsRecordService { + @Resource(name = "taskExecutor") + private TaskExecutor executor; + @Resource private ConfigService configService; + + @Resource + private RedisManager redisManager; @Resource private UserInfoMapper userInfoMapper; @@ -179,13 +196,9 @@ return list; } - /** - * 淇濆瓨鍒嗕韩璁板綍 - * @param userShareGoodsRecord 鍒嗕韩璁板綍锛� uid銆乸icture銆乻ource 涓哄繀杈撳叆 - * @throws UserShareGoodsRecordException - */ + @Override - public void save(Long uid, ShareSourceTypeEnum source , TaoBaoGoodsBrief taoBaoGoodsBrief) throws UserShareGoodsRecordException { + public void save(Long uid, ShareSourceTypeEnum source, String title, TaoBaoGoodsBrief taoBaoGoodsBrief) throws UserShareGoodsRecordException { if (taoBaoGoodsBrief == null) { throw new UserShareGoodsRecordException(1, "鍒嗕韩鍟嗗搧涓嶈兘涓虹┖"); @@ -202,6 +215,7 @@ UserShareGoodsRecord userShareGoodsRecord = new UserShareGoodsRecord(); userShareGoodsRecord.setUid(uid); userShareGoodsRecord.setSource(source); + userShareGoodsRecord.setTitle(title); // 鍗曚釜鍟嗗搧鍒嗕韩 singleGoodsShare(userShareGoodsRecord, taoBaoGoodsBrief); } @@ -213,7 +227,7 @@ * @throws UserShareGoodsRecordException */ @Override - public FileUploadResult save(Long uid, ShareSourceTypeEnum source , List<TaoBaoGoodsBrief> listGoods) throws UserShareGoodsRecordException { + public FileUploadResult save(Long uid, ShareSourceTypeEnum source, String title, List<TaoBaoGoodsBrief> listGoods) throws UserShareGoodsRecordException { if (listGoods == null || listGoods.size() <= 1) { throw new UserShareGoodsRecordException(1, "鍒嗕韩鍟嗗搧鏁伴噺涓嶈冻"); @@ -230,6 +244,7 @@ UserShareGoodsRecord userShareGoodsRecord = new UserShareGoodsRecord(); userShareGoodsRecord.setUid(uid); userShareGoodsRecord.setSource(source); + userShareGoodsRecord.setTitle(title); // 鍙栦竴涓晢鍝佸浘鐗囦綔涓轰富鍥� userShareGoodsRecord.setPicture(listGoods.get(0).getPictUrl()); @@ -238,12 +253,8 @@ userShareGoodsRecord.setUpdateTime(date); userShareGoodsRecordMapper.insertSelective(userShareGoodsRecord); - FileUploadResult shareImg = createShareImg(userShareGoodsRecord, listGoods); - // 澶氫釜鍟嗗搧鍒嗕韩 - multipleGoodsShare(userShareGoodsRecord, listGoods); - - return shareImg; + return multipleGoodsShare(userShareGoodsRecord, listGoods); } @@ -256,6 +267,7 @@ public void singleGoodsShare(UserShareGoodsRecord userShareGoodsRecord, TaoBaoGoodsBrief taoBaoGoodsBrief) { CommonGoods commonGoods = CommonGoodsFactory.create(taoBaoGoodsBrief); + commonGoods.setState(taoBaoGoodsBrief.getState()); try { CommonGoods resultCommonGoods = commonGoodsService.addOrUpdateCommonGoods(commonGoods); @@ -327,17 +339,26 @@ * @param listGoods */ @Transactional - public void multipleGoodsShare(UserShareGoodsRecord userShareGoodsRecord, List<TaoBaoGoodsBrief> listGoods) { + public FileUploadResult multipleGoodsShare(UserShareGoodsRecord userShareGoodsRecord, List<TaoBaoGoodsBrief> listGoods) throws UserShareGoodsRecordException { // 鍒嗕韩璁板綍 Date date = new Date(); String rateStr = hongBaoManageService.get("hongbao_goods_proportion"); + List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>(); List<UserShareGoodsGroup> listGroup = new ArrayList<UserShareGoodsGroup>(); + for (TaoBaoGoodsBrief taoBaoGoodsBrief: listGoods) { CommonGoods commonGoods = CommonGoodsFactory.create(taoBaoGoodsBrief); + commonGoods.setState(taoBaoGoodsBrief.getState()); try { CommonGoods resultCommonGoods = commonGoodsService.addOrUpdateCommonGoods(commonGoods); + + if (resultCommonGoods != null) { + TaoBaoGoodsBrief goodsBrief = TaoBaoUtil.convert(resultCommonGoods); + listGoodsBrief.add(goodsBrief); + } + UserShareGoodsGroup shareGoodsGroup = new UserShareGoodsGroup(); shareGoodsGroup.setTotalOrder(0); shareGoodsGroup.setTotalBrowse(0); @@ -359,15 +380,21 @@ } } + FileUploadResult shareImg = createShareImg(userShareGoodsRecord, listGoodsBrief); + + // 鐭繛鎺� + String shortLink = HttpUtil.getShortLink(shareImg.getUrl()); + if (!StringUtil.isNullOrEmpty(shortLink)) { + shareImg.setUrl(shortLink); + } + + if (listGroup.size() > 0) { userShareGoodsGroupService.insertBatch(listGroup); } + return shareImg; } - - - - /** * 鐢熸垚鍒嗕韩鍥� @@ -385,7 +412,7 @@ Long shareId = shareRecord.getId(); String source = shareRecord.getSource().getDesc(); - String url = String.format("http://%s/shareMuchImg2.html?uid=%s&shareId=%s&source=%s", configService.getH5Host(), + String url = String.format("http://%s/share_mushGoods.html?uid=%s&shareId=%s&source=%s", configService.getH5Host(), AESUtil.encrypt(uid + "", Constant.UIDAESKEY), shareRecord.getId() + "", source +""); String shortLink = HttpUtil.getShortLink(url); @@ -435,4 +462,115 @@ return shareImg; } + + @Override + public JSONObject getGoodsGroup(Long recordId) throws UserShareGoodsRecordException { + UserShareGoodsRecord userShareGoodsRecord = userShareGoodsRecordMapper.selectByPrimaryKey(recordId); + + List<CommonGoods> listUpadteCommonGoods = new ArrayList<CommonGoods>(); + + JSONArray array = new JSONArray(); + + List<UserShareGoodsGroup> list = userShareGoodsGroupService.listByRecordId(recordId); + if (list != null && list.size() > 0) { + + Date nowDate = new Date(); + long nh = 1000 * 60 * 60; + long nd = 1000 * 24 * 60 * 60; + + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + Map<String, String> map = hongBaoManageService.convertMap(); + String proportion = map.get("hongbao_goods_proportion"); + + for (UserShareGoodsGroup userShareGoodsGroup : list) { + CommonGoods commonGoods = userShareGoodsGroup.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); + } + + // 鏀瑰彉鍥剧墖灏哄 + String pictUrl = commonGoods.getPicture(); + if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) { + commonGoods.setPicture(TbImgUtil.getTBSize320Img(pictUrl)); + } + + String json = gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion, null)); + + dataObject.put("groupId", userShareGoodsGroup.getId()); + dataObject.put("goods", json); + array.add(dataObject); + } + } + + String title = ""; + if(userShareGoodsRecord != null) { + title = userShareGoodsRecord.getTitle(); + } + + JSONObject data = new JSONObject(); + data.put("title", title); + data.put("count", list.size()); + data.put("result_list", array); + + if (listUpadteCommonGoods.size() > 0) { + executor.execute(new Runnable() { + @Override + public void run() { + try { + // 鏇存柊绠�鐗堜俊鎭� + commonGoodsService.updateBatchCommonGoods(listUpadteCommonGoods); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + + return data; + } + } -- Gitblit v1.8.0