From 460a1f7207a85eff27022b810d5020332b32af1d Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期二, 21 五月 2019 14:07:02 +0800
Subject: [PATCH] 邀请素材优化
---
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java | 230 ++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 187 insertions(+), 43 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
index f656e57..a36a58c 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
@@ -1,6 +1,8 @@
package com.yeshi.fanli.service.impl.dynamic;
+import java.io.IOException;
import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -8,8 +10,11 @@
import javax.annotation.Resource;
+import org.springframework.cache.annotation.Cacheable;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
+import org.yeshi.utils.DateLunarUtil;
+import org.yeshi.utils.DateUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.yeshi.fanli.dao.dynamic.DynamicInfoDao;
@@ -20,6 +25,7 @@
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.entity.dynamic.GoodsPicture;
+import com.yeshi.fanli.entity.dynamic.InviteMaterial;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.entity.taobao.TaoBaoShop;
@@ -29,10 +35,12 @@
import com.yeshi.fanli.service.inter.activity.ActivityUserService;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
+import com.yeshi.fanli.service.inter.dynamic.InviteMaterialService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
+import com.yeshi.fanli.service.inter.user.QrCodeService;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
@@ -74,6 +82,13 @@
@Resource
private TaoBaoShopService taoBaoShopService;
+ @Resource
+ private InviteMaterialService inviteMaterialService;
+
+ @Resource
+ private QrCodeService qrCodeService;
+
+
@Override
public void insert(DynamicInfo record) {
dynamicInfoDao.insert(record);
@@ -93,6 +108,7 @@
List<GoodsClass> list = DaTaoKeUtil.goodsClasses;
int index = (int) (Math.random() * list.size());
Long subclassId = list.get(index).getId();
+ int cid = Integer.parseInt(subclassId +"");
int count = 0;
double random = Math.random();
if (random > 0.5) {
@@ -136,6 +152,8 @@
// 缁勭粐鍔ㄦ�佷俊鎭�
DynamicInfo dynamicInfo = getDynamicInfo(daTaoKeDetail, classId, subclassId);
+ // 鍙戝竷鐢ㄦ埛
+ dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(cid));
dynamicInfo.setImgs(listPicture);
ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
@@ -255,7 +273,8 @@
// 缁勭粐鍔ㄦ�佷俊鎭�
DynamicInfo dynamicInfo = getDynamicInfo(daTaoKe, classId, subclassId);
-
+ // 鍙戝竷鐢ㄦ埛
+ dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid()));
dynamicInfo.setImgs(listPicture);
dynamicInfo.setDesc(shareMoneyDesc);
dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_ONE);
@@ -279,12 +298,10 @@
dynamicInfo.setClassId(classId);
dynamicInfo.setSubclassId(subclassId);
dynamicInfo.setDaTaoKeId(daTaoKe.getId());
- dynamicInfo.setCreateTime(new Date());
-
+ dynamicInfo.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
+ dynamicInfo.setUpdateTime(new Date());
// 闅忔満鍒嗕韩娆℃暟
dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000));
- // 闅忔満鍒嗗竷鐢ㄦ埛
- dynamicInfo.setUser(activityUserService.listRand(1).get(0));
// 鍐呭
dynamicInfo.setTitle(convertIntroduce(DaTaoKeUtil.getDesc(daTaoKe)));
@@ -328,11 +345,13 @@
}
@Override
+ @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId")
public long count(Long cid, Long subId) {
return dynamicInfoDao.count(cid, subId);
}
@Override
+ @Cacheable(value = "dynamicCache", key = "'query-'+#start+'-'+#count+'-'+#cid+'-'+#subId")
public List<DynamicInfo> query(int start, int count, Long cid, Long subId) {
List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId);
@@ -375,14 +394,15 @@
dynamicVO.setClassId(4L);
dynamicVO.setSubclassId(0L);
dynamicVO.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
+ dynamicVO.setUpdateTime(new Date());
+
if (existInfo != null) {
dynamicVO.setCreateTime(existInfo.getCreateTime());
dynamicVO.setShareCount(existInfo.getShareCount());
} else {
- dynamicVO.setCreateTime(new Date());
+ dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
dynamicVO.setShareCount(1000 + (int) (Math.random() * 8000));
}
-
if (activityUser == null) {
dynamicVO.setUser(activityUserService.listRand(1).get(0));
@@ -391,28 +411,43 @@
}
- // 浠嬬粛鍐呭
- ClientTextStyleVO row1 = new ClientTextStyleVO();
- row1.setColor("#333333");
- row1.setContent(title);
List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
- listtitle.add(row1);
- dynamicVO.setTitle(listtitle);
+
List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
- if(!StringUtil.isNullOrEmpty(picUrl)) {
- GoodsPicture p2 = new GoodsPicture();
- p2.setW(100);
- p2.setH(100);
- p2.setUrl(picUrl);
- listImg.add(p2);
- dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE);
- } else {
+ if(StringUtil.isNullOrEmpty(picUrl)) {
+ dynamicVO.setImgs(listImg);
dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
+
+ // 浠嬬粛鍐呭
+ ClientTextStyleVO row1 = new ClientTextStyleVO();
+ row1.setColor("#333333");
+ row1.setContent(title);
+ listtitle.add(row1);
+ dynamicVO.setTitle(listtitle);
+ dynamicInfoDao.insert(dynamicVO);
+ } else {
+ try {
+ dynamicVO.setTitle(listtitle);
+ dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE);
+
+ // 鍥剧墖
+ String imgLink = qrCodeService.drawInviteQrCodeNew(picUrl , null, null, null);
+ GoodsPicture p2 = new GoodsPicture();
+ p2.setW(100);
+ p2.setH(100);
+ p2.setUrl(imgLink);
+ p2.setUrlOriginal(picUrl);
+ listImg.add(p2);
+ dynamicVO.setImgs(listImg);
+
+
+ dynamicInfoDao.insert(dynamicVO);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
- dynamicVO.setImgs(listImg);
- dynamicInfoDao.insert(dynamicVO);
}
@@ -487,7 +522,8 @@
dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_TWO);
dynamicVO.setShop(taoBaoShop);
dynamicVO.setUser(activityUserService.listRand(1).get(0));
- dynamicVO.setCreateTime(new Date());
+ dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
+ dynamicVO.setUpdateTime(new Date());
// 浠嬬粛鍐呭
ClientTextStyleVO row1 = new ClientTextStyleVO();
@@ -546,13 +582,33 @@
BigDecimal proportion = hongBaoManageService.getFanLiRate();
for (DynamicInfo dynamicInfo: list) {
+ // 閭�璇锋暟鎹笉鍋氭洿鏂�
+ long classId = dynamicInfo.getClassId();
+ if (classId == 4) {
+ break;
+ }
+
+ // 鏇存柊鍟嗗搧淇℃伅
List<GoodsPicture> imgs = dynamicInfo.getImgs();
if (imgs == null || imgs.size() == 0) {
continue;
}
- boolean isupdate = false;
- BigDecimal shareMoney = null;
+ // 鏄惁涓�涓皬鏃朵箣鍐呭凡鏇存柊
+ Date updateTime = dynamicInfo.getUpdateTime();
+ if (updateTime != null) {
+ long nd = 1000 * 24 * 60 * 60;// 涓�澶╃殑姣鏁�
+ long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟
+ long diff = System.currentTimeMillis() - updateTime.getTime();
+ long day = diff / nd;// 璁$畻宸灏戝ぉ
+ long hour = diff % nd / nh + day * 24;// 璁$畻宸灏戝皬鏃�
+ if (hour < 1) {
+ continue;
+ }
+ }
+
+ // 鏇存柊
+ BigDecimal shareMoney = new BigDecimal(0);
for (GoodsPicture goodsPicture: imgs) {
TaoBaoGoodsBriefExtra oldExtra = goodsPicture.getGoods();
if (oldExtra == null) {
@@ -564,16 +620,6 @@
continue;
}
- long nd = 1000 * 24 * 60 * 60;// 涓�澶╃殑姣鏁�
- long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟
- long diff = System.currentTimeMillis() - oldExtra.getUpdatetime().getTime();
- long day = diff / nd;// 璁$畻宸灏戝ぉ
- long hour = diff % nd / nh + day * 24;// 璁$畻宸灏戝皬鏃�
- if (hour < 1) {
- continue;
- }
-
- isupdate = true;
try {
TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(oldExtra.getAuctionId());
TaoBaoGoodsBriefExtra newExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion.toString(), null);
@@ -584,8 +630,12 @@
newExtra.setUpdatetime(new Date());
goodsPicture.setGoods(newExtra);
- BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(goodsBrief);
- shareMoney = MoneyBigDecimalUtil.add(shareMoney, money);
+
+ // 鏇存柊鐑攢鍗曞搧鐨勫垎浜閲� 锛屽叾浣欎笉鍋氭洿鏂�
+ if (classId == 1) {
+ BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(goodsBrief);
+ shareMoney = MoneyBigDecimalUtil.add(shareMoney, money);
+ }
} catch (TaobaoGoodsDownException e) {
oldExtra.setState(1);
@@ -596,7 +646,8 @@
}
}
- if (shareMoney != null) {
+ // 鏇存柊鐑攢鍗曞搧鐨勫垎浜閲� 锛屽叾浣欎笉鍋氭洿鏂�
+ if (classId == 1) {
ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
shareMoneyDesc.setColor("#FFFFFF");
shareMoneyDesc.setBottomColor("#E8AE48");
@@ -604,9 +655,9 @@
dynamicInfo.setDesc(shareMoneyDesc);
}
- if (isupdate) {
- dynamicInfoDao.updateGoodInfo(dynamicInfo);
- }
+ dynamicInfo.setImgs(imgs);
+ dynamicInfo.setUpdateTime(new Date());
+ dynamicInfoDao.updateGoodInfo(dynamicInfo);
}
}
@@ -653,6 +704,7 @@
dynamicInfo.setShareCount(existInfo.getShareCount());
} else {
dynamicInfo.setCreateTime(new Date());
+ dynamicInfo.setUpdateTime(new Date());
dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000));
}
@@ -727,5 +779,97 @@
e.printStackTrace();
}
}
-
+
+
+ @Override
+ public void insertTimeInvite() {
+ InviteMaterial inviteMaterial = inviteMaterialService.getInviteMaterial();
+ if (inviteMaterial == null) {
+ return;
+ }
+
+ Date date = new Date();
+ String materialId = inviteMaterial.getId();
+ String content = inviteMaterial.getText();
+
+ if (!StringUtil.isNullOrEmpty(content)) {
+ DynamicInfo dynamicTxt= new DynamicInfo();
+ dynamicTxt.setId(UUID.randomUUID().toString().replace("-", ""));
+ dynamicTxt.setInviteMaterialId(materialId);
+ dynamicTxt.setClassId(4L);
+ dynamicTxt.setSubclassId(0L);
+ dynamicTxt.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
+ dynamicTxt.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
+ dynamicTxt.setUser(activityUserService.listRand(1).get(0));
+ dynamicTxt.setShareCount(1000 + (int) (Math.random() * 8000));
+ dynamicTxt.setCreateTime(date);
+ dynamicTxt.setUpdateTime(date);
+
+ SimpleDateFormat format = new SimpleDateFormat("MM鏈坉d鏃�");
+
+ StringBuffer buffer = new StringBuffer();
+ buffer.append("------------------------------------------\n");
+ buffer.append("浠婂ぉ : " + format.format(date));
+ buffer.append(" ");
+ buffer.append(DateLunarUtil.getWeekd(date) + "\n");
+ buffer.append("鍚勪綅浜茬埍鐨勪綘");
+ buffer.append(" ");
+ buffer.append("鏃╁畨锝瀄n");
+ buffer.append("鎴戠殑閭�璇风爜锛氥�愰個璇风爜銆慭n");
+ buffer.append("璐墿鐪侀挶杩斿埄鍒窤pp锛氥�愰個璇烽摼鎺ャ��");
+
+
+ ClientTextStyleVO row1 = new ClientTextStyleVO();
+ row1.setColor("#333333");
+ row1.setContent(content + "\n" + buffer.toString());
+ List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
+ listtitle.add(row1);
+ dynamicTxt.setTitle(listtitle);
+
+ // 绌烘暟鎹�
+ List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
+ dynamicTxt.setImgs(listImg);
+
+ dynamicInfoDao.insert(dynamicTxt);
+ }
+
+ String picture = inviteMaterial.getPicture();
+ if (!StringUtil.isNullOrEmpty(picture)) {
+ DynamicInfo dynamicPic = new DynamicInfo();
+ dynamicPic.setId(UUID.randomUUID().toString().replace("-", ""));
+ dynamicPic.setInviteMaterialId(materialId);
+ dynamicPic.setClassId(4L);
+ dynamicPic.setSubclassId(0L);
+ dynamicPic.setShowType(DynamicInfo.SHOW_TYPE_ONE);
+ dynamicPic.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
+ dynamicPic.setUser(activityUserService.listRand(1).get(0));
+ dynamicPic.setShareCount(1000 + (int) (Math.random() * 8000));
+ dynamicPic.setCreateTime(date);
+ dynamicPic.setUpdateTime(date);
+
+ try {
+ // 鐢诲浘
+ String url = qrCodeService.drawInviteToGreet(picture, null, null, null, content, new Date());
+
+ List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
+ dynamicPic.setTitle(listtitle);
+
+ GoodsPicture p2 = new GoodsPicture();
+ p2.setW(100);
+ p2.setH(100);
+ p2.setUrl(url);
+ p2.setUrlOriginal(picture);
+ p2.setTitleOriginal(content);
+ List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
+ listImg.add(p2);
+ dynamicPic.setImgs(listImg);
+
+ dynamicInfoDao.insert(dynamicPic);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ // 鏇存柊绱犳潗鐘舵��
+ inviteMaterialService.updateState(1, materialId);
+ }
}
--
Gitblit v1.8.0