From 480c4994ab7ad8b3507ff94b40045ebcf0650cc6 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期三, 01 七月 2020 11:16:08 +0800
Subject: [PATCH] 拉新商品比例和付款金额限制
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java | 741 ++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 472 insertions(+), 269 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
index 3eb94eb..27d389a 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
@@ -8,9 +8,11 @@
import javax.annotation.Resource;
+import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.BigDecimalUtil;
+import org.yeshi.utils.taobao.TbImgUtil;
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.Producer;
@@ -55,8 +57,11 @@
import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService;
+import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
+import com.yeshi.fanli.service.inter.msg.UserSystemMsgService;
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.push.PushService;
import com.yeshi.fanli.service.inter.user.QrCodeService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
@@ -104,62 +109,73 @@
@Resource
private ConvertLinkManager convertLinkManager;
-
+
@Resource
private UserCloudGoodsService userCloudGoodsService;
-
+
@Resource
private UserInfoExtraService userInfoExtraService;
-
+
@Resource
private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
-
+
@Resource
private UserInfoService userInfoService;
-
+
@Resource
private ShareGoodsService shareGoodsService;
-
+
@Resource
private ConfigService configService;
-
+
@Resource
private JDGoodsCacheUtil jdGoodsCacheUtil;
-
+
@Resource
private PinDuoDuoCacheUtil pinDuoDuoCacheUtil;
-
+
@Resource
private QrCodeService qrCodeService;
-
+
@Resource
private RedisManager redisManager;
-
+
@Resource
private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
-
+
@Resource
private HongBaoManageService hongBaoManageService;
-
+
@Resource
private ShareGoodsTextTemplateService shareGoodsTextTemplateService;
-
+
@Resource
private CommonGoodsService commonGoodsService;
-
+
@Resource
private UserCloudSendRecordService userCloudSendRecordService;
-
+
@Resource
private UserCloudSendContentService userCloudSendContentService;
-
+
@Resource
private UserCloudManageService userCloudManageService;
-
+
@Resource(name = "producer")
private Producer producer;
-
-
+
+ @Resource
+ private UserOtherMsgNotificationService userOtherMsgNotificationService;
+
+ @Resource
+ private PushService pushService;
+
+ @Resource
+ private UserSystemMsgService userSystemMsgService;
+
+ @Resource(name = "taskExecutor")
+ private TaskExecutor executor;
+
@Override
public UserCloud getValidByUid(Long uid) {
return userCloudMapper.getValidByUid(uid);
@@ -175,13 +191,12 @@
Long count = userCloudMapper.countByUid(uid);
return count;
}
-
-
+
@Override
- public List<UserCloud> query(int page, int count,String key, Integer state) {
- return userCloudMapper.query((page-1)* count, count, key, state);
+ public List<UserCloud> query(int page, int count, String key, Integer state) {
+ return userCloudMapper.query((page - 1) * count, count, key, state);
}
-
+
@Override
public long count(String key, Integer state) {
Long count = userCloudMapper.count(key, state);
@@ -197,6 +212,14 @@
if (userCloud == null)
throw new UserCloudException(1, "浜戝彂鍗曞凡杩囨湡");
+ // 妫�娴嬫槸鍚﹂渶瑕佹洿鏂� - 1鍒嗛挓闂撮殧
+ String key = "cloudLogin_" + uid;
+ String result = redisManager.getCommonString(key);
+ if (!StringUtil.isNullOrEmpty(result)) {
+ return;
+ }
+ redisManager.cacheCommonString(key, "true", 60);
+
// 鏇存柊淇℃伅
UserCloud update = new UserCloud();
update.setId(userCloud.getId());
@@ -204,6 +227,23 @@
update.setWxName(wxName);
update.setWxPortrait(wxPortrait);
userCloudMapper.updateByPrimaryKeySelective(update);
+
+ try {
+ userOtherMsgNotificationService.cloudMsg(uid, "浜戝彂鍗曞井淇¤处鍙�", "寰俊璐﹀彿鐧诲綍鎴愬姛", "鍙互寮�鍚綘鐨勭兢鍙戝崟浜�");
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ }
+
+ // 鏇存柊鎻愰啋鐘舵��
+ UserCloudManage cloudManage = userCloudManageService.selectForUpdate(uid);
+ if (cloudManage == null) {
+ userCloudManageService.save(uid, false, false);
+ } else {
+ UserCloudManage updateManage = new UserCloudManage();
+ updateManage.setId(uid);
+ updateManage.setOfflineNotice(false);
+ userCloudManageService.updateByPrimaryKeySelective(updateManage);
+ }
// 寰俊鍙峰彉鍖�-娓呯┖缇や俊鎭�
if (!wxId.equals(userCloud.getWxId())) {
@@ -245,14 +285,13 @@
if (dto == null) {
LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 鏈哄櫒浜哄垱寤哄け璐�");
- throw new UserCloudException(1, "鏈哄櫒浜哄垱寤哄け璐�");
}
Integer robotId = dto.getId();
if (robotId == null) {
LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 鏈哄櫒浜篒D杩斿洖涓虹┖");
}
-
+
String endTimeStr = dto.getEndTime();
if (StringUtil.isNullOrEmpty(endTimeStr)) {
LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿涓虹┖");
@@ -287,9 +326,22 @@
newCloud.setEndTime(new Date(endTime * 1000)); // Unix 杞崲 鏅�氭椂闂�
newCloud.setCreateTime(new Date());
userCloudMapper.insertSelective(newCloud);
-
+
// 寮�鍚彂鍦堝姛鑳�
userCloudManageService.save(uid, null, null);
+
+ try {
+ String item = null;
+ if (renew) {
+ item = "鎴愬姛缁垂" + menuEnum.getDescShow();
+ } else {
+ item = "鎴愬姛寮�閫�" + menuEnum.getDescShow();
+ }
+ String desc = "瀹屾垚鍏呭�兼敮浠�" + BigDecimal.valueOf(menuEnum.getMoney()).setScale(2, BigDecimal.ROUND_DOWN) + "鍏�";
+ userOtherMsgNotificationService.cloudMsg(uid, "浜戝彂鍗曞厖鍊�", item, desc);
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ }
}
@Override
@@ -302,36 +354,38 @@
if (robotId == null)
throw new UserCloudException(1, "浜戝彂鍗曟満鍣ㄤ汉涓嶅瓨鍦�");
- List<WeiXinGroupDTO> list = AitaokerApiUtil.getContract(robotId);
+ List<String> list = AitaokerApiUtil.getContract(robotId);
if (list == null || list.size() == 0)
throw new UserCloudException(1, "鏈绱㈠埌瀵瑰簲缇�");
-
+
String wxId = userCloud.getWxId();
- for (WeiXinGroupDTO dto : list) {
- String groupId = dto.getGroupId();
- // 妫�娴嬫槸鍚﹀尮閰嶇兢
- String key = RedisKeyEnum.cloudMatchGroup.getKey() + StringUtil.Md5(wxId + "_" + groupId);
+ for (String roomId : list) {
+ String key = RedisKeyEnum.cloudMatchGroup.getKey() + StringUtil.Md5(wxId + "_" + roomId);
String result = redisManager.getCommonString(key);
- if (!StringUtil.isNullOrEmpty(result)) {
- userCloudGroupService.addGroup(uid, dto.getGroupId(), dto.getGroupName(), userCloud.getGroupNum());
+ if (!StringUtil.isNullOrEmpty(result)) {
+ String groupName = null;
+ WeiXinGroupDTO groupDetail = AitaokerApiUtil.getGroupDetail(robotId, roomId);
+ if (groupDetail != null) {
+ groupName = groupDetail.getGroupName();
+ }
+ userCloudGroupService.addGroup(uid, roomId, groupName, userCloud.getGroupNum());
}
}
}
-
+
@Override
public void cacheMatchGroup(String wxId, String groupId) {
- if (StringUtil.isNullOrEmpty(wxId) || StringUtil.isNullOrEmpty(groupId))
+ if (StringUtil.isNullOrEmpty(wxId) || StringUtil.isNullOrEmpty(groupId))
return;
- String key = RedisKeyEnum.cloudMatchGroup.getKey() + StringUtil.Md5(wxId + "_" + groupId);
- redisManager.cacheCommonString(key , "true" , 60*20);
+ String key = RedisKeyEnum.cloudMatchGroup.getKey() + StringUtil.Md5(wxId + "_" + groupId);
+ redisManager.cacheCommonString(key, "true", 60 * 20);
}
-
+
@Override
- public void sendByDynamic(Long uid, String id) throws UserCloudException{
+ public void sendByDynamic(Long uid, String id) throws UserCloudException {
sendCircleByDynamic(uid, id, UserCloudSendRecord.SEND_WAY_MANUAL);
}
-
-
+
@Override
@Transactional(rollbackFor = Exception.class)
public void autoSendByDynamic(Long uid, String id) {
@@ -341,19 +395,19 @@
if (cloudManage.getOfficial() != null)
official = cloudManage.getOfficial();
}
-
+
if (!official)
return;
-
+
try {
sendCircleByDynamic(uid, id, UserCloudSendRecord.SEND_WAY_AUTO);
} catch (UserCloudException e) {
- LogHelper.cloudInfo("autoSendByDynamic - [uid:" +uid + " 鍔ㄦ�乮d:"+ id + "]鍘熷洜锛�"+ e.getMsg());
+ LogHelper.cloudInfo("autoSendByDynamic - [uid:" + uid + " 鍔ㄦ�乮d:" + id + "]鍘熷洜锛�" + e.getMsg());
}
}
-
private void sendCircleByDynamic(Long uid, String id, int way) throws UserCloudException {
+ long time1= java.lang.System.currentTimeMillis();
UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
if (user == null)
throw new UserCloudException(1, "鐢ㄦ埛淇℃伅涓嶅瓨鍦�");
@@ -361,7 +415,7 @@
if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
throw new UserCloudException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
}
-
+
String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
if (StringUtil.isNullOrEmpty(inviteCode))
throw new UserCloudException(3, "閭�璇风爜鏈縺娲�");
@@ -375,6 +429,9 @@
if (StringUtil.isNullOrEmpty(relationId))
throw new UserCloudException(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿");
+ long time2= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByDynamic淇濋獙璇佺敤鎴风姸鎬侊細" + (time2 - time1));
+
// 楠岃瘉鏄惁寮�閫�
UserCloud userCloud = userCloudMapper.getValidByUid(uid);
@@ -386,12 +443,12 @@
throw new UserCloudException(1002, "浜戝彂鍗曟満鍣ㄤ汉涓嶅瓨鍦�");
String wxId = userCloud.getWxId();
- if (StringUtil.isNullOrEmpty(wxId))
+ if (StringUtil.isNullOrEmpty(wxId))
throw new UserCloudException(1003, "寰俊鍙蜂笉瀛樺湪锛岃鍏堝井淇$櫥褰�");
-
- if (!AitaokerApiUtil.onlineCheck(robotId)) {
- throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝璇峰厛閲嶆柊鐧诲綍寰俊");
- }
+
+ long time3= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByDynamic楠岃瘉鏄惁婊¤冻寮�閫氾細" + (time3 - time2));
+
// 楠岃瘉寮�鍚姸鎬�
List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid);
@@ -406,7 +463,9 @@
}
if (listOpen.size() == 0)
throw new UserCloudException(1005, "璇峰厛寮�鍚簯鍙戝崟缇ゅ姛鑳�");
-
+
+ long time4= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByDynamic楠岃瘉鏄惁寮�鍚細" + (time4 - time3));
// 楠岃瘉鍙戝湀鏄惁鍙
GoodsEvaluate evaluate = goodsEvaluateService.getById(id);
@@ -421,11 +480,19 @@
if (comments == null || comments.size() == 0)
throw new UserCloudException(1, "璇ュ唴瀹逛笉鑳借浆閾�");
+ long time5= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByDynamic楠岃瘉鍙戝湀鍐呭鏄惁婊¤冻锛�" + (time5 - time4));
+
// 妫�娴嬪井淇℃槸鍚︾櫥褰曠姸鎬�
if (!AitaokerApiUtil.onlineCheck(robotId)) {
- throw new UserCloudException(1003, "璇烽噸鏂扮櫥褰曞井淇�");
+ // 閫氱煡鐧诲綍寰俊
+ offlineNotification(uid);
+
+ throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝闇�瑕侀噸鏂版壂鎻忎簩缁寸爜鐧诲綍");
}
-
+
+ long time6= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByDynamic楠岃瘉鍙戞槸鍚︾櫥褰曪細" + (time6 - time5));
boolean hasToken = false;
List<String> listComment = new ArrayList<>();
@@ -458,19 +525,27 @@
}
comment = comment.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
}
-
+
listComment.add(comment);
}
if (!hasToken)
throw new UserCloudException(1, "璇ュ唴瀹瑰寘鍚彲杞摼鍙d护鎴栭摼鎺�");
+ // 寮傛鎵ц鍙戦��
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ sendEvaluate(uid, evaluate, way, userCloud, listOpen, listComment);
+ }
+ });
+ }
- String qrCode = null;
- String cloudPic = null;
+ private void sendEvaluate(Long uid, GoodsEvaluate evaluate, int way, UserCloud userCloud,
+ List<UserCloudGroup> listOpen, List<String> listComment) {
ImgInfo imgVideo = null;
List<String> listImg = new ArrayList<>();
-
+
List<ImgInfo> imgs = evaluate.getImgList();
if (imgs != null && imgs.size() > 0) {
for (ImgInfo imgInfo : imgs) {
@@ -478,34 +553,16 @@
imgVideo = imgInfo;
continue;
}
-
- if (imgInfo.getType() == ImgEnum.goods) {
- cloudPic = imgInfo.getUrl();
- }
listImg.add(imgInfo.getUrl());
-
- // 鍙栨秷浜岀淮鐮佸浘
-// GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
-// if (goodsVO == null) {
-// listImg.add(imgInfo.getUrl());
-// } else {
-// String jumpLink = getJumpLink(goodsVO, user, relationId, inviteCode, imgInfo.getUrl());
-// if (!StringUtil.isNullOrEmpty(jumpLink)) {
-// qrCode = jumpLink;
-// }
-// }
- }
-
- if (cloudPic == null) {
- cloudPic = imgs.get(0).getUrl();
}
}
-
+ String wxId = userCloud.getWxId();
+ Integer robotId = userCloud.getRobotId();
// 淇濆瓨鍙戦�佽褰�
UserCloudSendRecord sendRecord = new UserCloudSendRecord();
sendRecord.setUid(uid);
- sendRecord.setSendId(id);
+ sendRecord.setSendId(evaluate.getId());
sendRecord.setSendWay(way);
sendRecord.setWxId(wxId);
sendRecord.setRobotId(robotId);
@@ -513,49 +570,49 @@
sendRecord.setSendOrigin(UserCloudSendRecord.ORIGIN_EVALUATE);
UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord);
String pid = result.getId();
+
- for (UserCloudGroup cloudGroup: listOpen) {
+ for (UserCloudGroup cloudGroup : listOpen) {
String title = evaluate.getTitle();
-
+
UserCloudSendContent sendContent = new UserCloudSendContent();
sendContent.setPid(pid);
sendContent.setUid(uid);
sendContent.setGroupId(cloudGroup.getGroupId());
sendContent.setCreateTime(new Date());
-
- if(cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { // 鏈嬪弸鍦�
+
+ if (cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { // 鏈嬪弸鍦�
String circleId = null;
sendContent.setType(UserCloudSendContent.TYPE_CIRCLE);
-
+
if (imgVideo == null) {
+
+ // 鍙戦�佸浘鏂�
String picUrl = "";
- if (!StringUtil.isNullOrEmpty(qrCode))
- picUrl += qrCode;
-
if (listImg.size() > 0) {
- for (String img: listImg) {
- picUrl += img + ";" ;
+ for (String img : listImg) {
+ picUrl += img + ";";
}
+ if (picUrl.endsWith(";"))
+ picUrl = picUrl.substring(0, picUrl.length() - 1);
}
-
- if (picUrl.endsWith(";"))
- picUrl = picUrl.substring(0, picUrl.length()-1);
+ String picUrlUpload = AitaokerApiUtil.macsendUpload(robotId, picUrl);
+ sendContent.setPicUrlUpload(picUrlUpload);
sendContent.setTitle(title);
sendContent.setPicUrl(picUrl);
- // 鍙戦�佸浘鏂�
- circleId = AitaokerApiUtil.macsendCircle(robotId, title, picUrl);
+ circleId = AitaokerApiUtil.macsendCircle(robotId, title, picUrlUpload);
} else {
+ // 鍙戦�佽棰�
sendContent.setPicUrl(imgVideo.getUrl());
sendContent.setVideoUrl(imgVideo.getVideoUrl());
- // 鍙戦�佽棰�
circleId = AitaokerApiUtil.macsendCircleVideo(robotId, imgVideo.getVideoUrl(), imgVideo.getUrl());
}
-
+
// 璇勮鏂囨湰
if (!StringUtil.isNullOrEmpty(circleId)) {
sendContent.setState(true);
List<String> list = new ArrayList<>();
- for (String comment: listComment) {
+ for (String comment : listComment) {
boolean macsend = AitaokerApiUtil.macsendCircleComment(robotId, wxId, circleId, comment);
if (macsend) {
list.add(comment);
@@ -565,29 +622,37 @@
}
} else { // 缇�
sendContent.setType(UserCloudSendContent.TYPE_GROUP);
-
+
// 鍙戦�佹枃鏈�
if (!StringUtil.isNullOrEmpty(title)) {
boolean macsend = AitaokerApiUtil.macsendText(robotId, cloudGroup.getGroupId(), title);
if (macsend)
sendContent.setTitle(title);
}
-
+
// 鍙戦�佸浘鐗�
- if (!StringUtil.isNullOrEmpty(cloudPic)) {
- try {
- String imgBase64 = ImageToBase64.NetImageToBase64(cloudPic);
- boolean macsend = AitaokerApiUtil.macsendImgBase64(robotId, cloudGroup.getGroupId(), imgBase64);
- if (macsend)
- sendContent.setPicUrl(cloudPic);
- } catch (Exception e) {
- LogHelper.errorDetailInfo(e);
- }
+ int num = 1;
+ String picNum = configService.get(ConfigKeyEnum.robotCloudGroupPictureNum.getKey());
+ if (!StringUtil.isNullOrEmpty(picNum)) {
+ num = Integer.parseInt(picNum);
}
-
+
+ if (listImg.size() > 0)
+ for (int i = 0; i < num && i < listImg.size(); i++) {
+ try {
+ String imgBase64 = ImageToBase64.NetImageToBase64(listImg.get(i));
+ boolean macsend = AitaokerApiUtil.macsendImgBase64(robotId, cloudGroup.getGroupId(),
+ imgBase64);
+ if (macsend)
+ sendContent.setPicUrl(listImg.get(i));
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ }
+ }
+
// 璇勮鏂囨湰
List<String> list = new ArrayList<>();
- for (String comment: listComment) {
+ for (String comment : listComment) {
boolean macsend = AitaokerApiUtil.macsendText(robotId, cloudGroup.getGroupId(), comment);
if (macsend) {
list.add(comment);
@@ -601,10 +666,11 @@
}
+
@Override
@Transactional(rollbackFor = Exception.class)
- public void sendCustomGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudException{
- sendCircleByGoods(uid, goodsId, goodsType, null, sellerId, UserCloudSendRecord.SEND_WAY_MANUAL);
+ public void sendCustomGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudException {
+ sendCircleByGoods(uid, goodsId, goodsType, null, sellerId, UserCloudSendRecord.SEND_WAY_MANUAL);
}
@Override
@@ -616,29 +682,32 @@
if (cloudManage.getCustom() != null)
custom = cloudManage.getCustom();
}
-
+
if (!custom) {
return;
}
-
+
UserCloudGoods cloudGoods = userCloudGoodsService.selectByPrimaryKey(id);
if (cloudGoods == null) {
return;
}
CommonGoods cgoods = cloudGoods.getCommonGoods();
- if (cgoods == null)
+ if (cgoods == null)
return;
-
+
try {
// 鍙戦�佸晢鍝�
- sendCircleByGoods(uid, cgoods.getGoodsId(), cgoods.getGoodsType(), id, cgoods.getSellerId(), UserCloudSendRecord.SEND_WAY_AUTO);
+ sendCircleByGoods(uid, cgoods.getGoodsId(), cgoods.getGoodsType(), id, cgoods.getSellerId(),
+ UserCloudSendRecord.SEND_WAY_AUTO);
} catch (UserCloudException e) {
- LogHelper.cloudInfo("autoSendCustomGoods - [uid:" +uid + " 搴搃d:"+ id + "]鍘熷洜锛�"+ e.getMsg());
+ LogHelper.cloudInfo("autoSendCustomGoods - [uid:" + uid + " 搴搃d:" + id + "]鍘熷洜锛�" + e.getMsg());
}
}
- private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId,
- Long sellerId, int way) throws UserCloudException {
+ private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId, Long sellerId, int way)
+ throws UserCloudException {
+ long begainTime = java.lang.System.currentTimeMillis();
+
// 楠岃瘉鏄惁鎺堟潈
UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
if (user == null)
@@ -647,7 +716,7 @@
if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
throw new UserCloudException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
}
-
+
String inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
if (StringUtil.isNullOrEmpty(inviteCode))
throw new UserCloudException(3, "閭�璇风爜鏈縺娲�");
@@ -661,24 +730,34 @@
if (StringUtil.isNullOrEmpty(relationId))
throw new UserCloudException(2, "娣樺疂鏈巿鏉冿紝璇峰墠寰�\"鎴戠殑\"缁戝畾娣樺疂璐﹀彿");
+ long time2 = java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByGoods楠岃瘉鐢ㄦ埛鑰楁椂锛�" + (time2 - begainTime));
+
+
// 楠岃瘉鏄惁寮�閫�
UserCloud userCloud = userCloudMapper.getValidByUid(uid);
if (userCloud == null)
throw new UserCloudException(1001, "浜戝彂鍗曞凡杩囨湡");
-
+ long time3= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByGoods楠岃瘉鏄惁寮�閫氾細" + (time3 - time2));
+
+ long time4 = time3;
// 鍔犲叆鎴戠殑澶囬�夊簱
if (storeId == null) {
try {
UserCloudGoods cloudGoods = userCloudGoodsService.addGoods(uid, goodsId, goodsType, sellerId);
if (cloudGoods != null)
- storeId =cloudGoods.getId();
+ storeId = cloudGoods.getId();
} catch (UserCloudGoodsException e) {
- LogHelper.cloudInfo("sendCustomGoods - [uid:" +uid + "goodsId:"+ goodsId + "goodsType" + goodsType +"]鍘熷洜锛�"+ e.getMsg());
+ LogHelper.cloudInfo("sendCustomGoods - [uid:" + uid + "goodsId:" + goodsId + "goodsType" + goodsType
+ + "]鍘熷洜锛�" + e.getMsg());
throw new UserCloudException(1, "鍔犲叆浜戝彂鍗曞閫夊簱澶辫触");
}
+ time4= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByGoods鍔犲叆澶囬�夊簱锛�" + (time4 - time3));
}
-
+
// 鑷�夊簱鍟嗗搧鏄惁鎵撳紑
boolean custom = false;
UserCloudManage cloudManage = userCloudManageService.selectByPrimaryKey(uid);
@@ -689,41 +768,43 @@
if (!custom) {
return;
}
-
+
Integer robotId = userCloud.getRobotId();
if (robotId == null)
throw new UserCloudException(1, "浜戝彂鍗曟満鍣ㄤ汉涓嶅瓨鍦�");
String wxId = userCloud.getWxId();
- if (StringUtil.isNullOrEmpty(wxId))
+ if (StringUtil.isNullOrEmpty(wxId))
throw new UserCloudException(1002, "璇峰厛鐧诲綍寰俊");
-
- if (!AitaokerApiUtil.onlineCheck(robotId)) {
- throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝璇峰厛閲嶆柊鐧诲綍寰俊");
- }
-
-
+
// 楠岃瘉寮�鍚姸鎬�
List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid);
if (listGroup == null || listGroup.size() == 0)
throw new UserCloudException(1003, "璇峰厛鐧诲綍寰俊");
+ long time5= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByGoods楠岃瘉鏄惁缁戝畾寰俊锛�" + (time5 - time4));
+
List<UserCloudGroup> listOpen = new ArrayList<>();
for (UserCloudGroup cloudGrou : listGroup) {
if (cloudGrou.getState()) {
listOpen.add(cloudGrou);
}
}
-
+
if (listOpen.size() == 0)
throw new UserCloudException(1004, "璇峰厛寮�鍚簯鍙戝崟缇ゅ姛鑳�");
-
-
+
// 妫�娴嬪井淇℃槸鍚︾櫥褰曠姸鎬�
if (!AitaokerApiUtil.onlineCheck(robotId)) {
- throw new UserCloudException(1003, "璇烽噸鏂扮櫥褰曞井淇�");
+ // 閫氱煡鐧诲綍寰俊
+ offlineNotification(uid);
+
+ throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝闇�瑕侀噸鏂版壂鎻忎簩缁寸爜鐧诲綍");
}
-
+
+ long time6= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByGoods楠岃瘉鏄惁鐧诲綍寰俊锛�" + (time6 - time5));
// 淇濆瓨鍙戦�佽褰�
UserCloudSendRecord sendRecord = new UserCloudSendRecord();
@@ -742,6 +823,9 @@
}
UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord);
+ long time7= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByGoods淇濆瓨鍙戦�佽褰曪細" + (time7 - time6));
+
try {
if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
@@ -763,9 +847,10 @@
record.setUpdateTime(new Date());
userCloudGoodsService.updateByPrimaryKeySelective(record);
}
-
+ long time8= java.lang.System.currentTimeMillis();
+ LogHelper.test("sendCircleByGoods鎵ц鍙戦�侊細" + (time8 - time7));
} catch (UserCloudException e) {
- LogHelper.cloudInfo("autoSendCustomGoods - [uid:" +uid + " 搴搃d:"+ storeId + "]鍘熷洜锛�"+ e.getMsg());
+ LogHelper.cloudInfo("autoSendCustomGoods - [uid:" + uid + " 搴搃d:" + storeId + "]鍘熷洜锛�" + e.getMsg());
// 鏇存柊鍙戝崟璁板綍
if (storeId != null) {
UserCloudGoods record = new UserCloudGoods();
@@ -776,13 +861,12 @@
userCloudGoodsService.updateByPrimaryKeySelective(record);
}
}
-
-
-
+
}
-
+
/**
* 娣樺疂鍟嗗搧淇℃伅澶勭悊
+ *
* @param user
* @param inviteCode
* @param robotId
@@ -792,7 +876,7 @@
* @param listOpen
* @throws UserCloudException
*/
- private void sendTaoBaoGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
+ private void sendTaoBaoGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
List<UserCloudGroup> listOpen, String pid) throws UserCloudException {
TaoBaoLink taoBaoLink = null;
try {
@@ -803,13 +887,13 @@
}
if (taoBaoLink == null)
throw new UserCloudException(1, "璇ュ晢鍝佸凡涓嬫灦");
-
+
TaoBaoGoodsBrief goods = taoBaoLink.getGoods();
boolean coupon = false;
if (!StringUtil.isNullOrEmpty(goods.getCouponInfo())) {
coupon = true;
}
-
+
String quanPrice = "";
String description = "";
String couponAmount = "";
@@ -819,21 +903,26 @@
couponAmount = MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString();
}
String sales = TaoBaoUtil.getSaleCount(goods.getBiz30day());
-
+
// 鑾峰彇鎺ㄨ崘璇�
- String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getTitle(), sales,
+ String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getTitle(), sales,
couponAmount, description);
// 鑾峰彇璇勮璇�
String commentText = shareGoodsTextTemplateService.getCommentTextByTaoToken(coupon, taoBaoLink.getTaoToken(),
goods.getZkPrice().toString(), quanPrice);
-
- // 浜戝彂鍗�
- sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getImgList(), user.getId(), pid);
+
+ // 寮傛鎵ц鍙戦��
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getImgList(), user.getId(), pid);
+ }
+ });
}
-
-
+
/**
* 浜笢鍟嗗搧浜戝彂鍗�
+ *
* @param user
* @param robotId
* @param wxId
@@ -842,39 +931,39 @@
* @param listOpen
* @throws UserCloudException
*/
- private void sendJDGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
+ private void sendJDGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
List<UserCloudGroup> listOpen, String pid) throws UserCloudException {
JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId);
if (jdGoods == null)
throw new UserCloudException(1, "璇ュ晢鍝佸凡涓嬫灦");
-
-
+
String couponUrl = null;
JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods);
if (couponInfo != null) {
couponUrl = couponInfo.getLink();
}
String materialId = "https://item.jd.com/" + goodsId + ".html";
- String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",user.getId() + "");
-
+ String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "",
+ user.getId() + "");
+
boolean coupon = false;
if (couponInfo != null) {
coupon = true;
}
-
+
String quanPrice = "";
String couponAmount = "";
if (coupon) {
quanPrice = BigDecimalUtil.getWithNoZera(JDUtil.getQuanPrice(jdGoods)).toString() + "";
couponAmount = BigDecimalUtil.getWithNoZera(couponInfo.getDiscount()).toString();
}
-
+
String sales = JDUtil.getSaleCount(jdGoods.getInOrderCount30Days());
-
+
// 鑾峰彇鎺ㄨ崘璇�
- String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, jdGoods.getSkuName(), sales,
+ String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, jdGoods.getSkuName(), sales,
couponAmount, null);
-
+
// 鑾峰彇璇勮璇�
BigDecimal price = jdGoods.getPrice();
JDPingouInfo pinGouInfo = jdGoods.getPinGouInfo();
@@ -882,15 +971,22 @@
price = pinGouInfo.getPingouPrice();
}
String zkPrice = BigDecimalUtil.getWithNoZera(price).toString();
- String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, zkPrice, quanPrice,
+ String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, zkPrice, quanPrice,
ConfigKeyEnum.quickShareJDCommentText);
-
- // 浜戝彂鍗�
- sendGoods(robotId, wxId, listOpen, recommendText, commentText, jdGoods.getImageList(), user.getId(), pid);
+
+ // 寮傛鎵ц鍙戦��
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ sendGoods(robotId, wxId, listOpen, recommendText, commentText, jdGoods.getImageList(), user.getId(), pid);
+ }
+ });
+
}
-
+
/**
* 浜笢鍟嗗搧浜戝彂鍗�
+ *
* @param user
* @param robotId
* @param wxId
@@ -899,19 +995,19 @@
* @param listOpen
* @throws UserCloudException
*/
- private void sendPDDGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
+ private void sendPDDGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
List<UserCloudGroup> listOpen, String pid) throws UserCloudException {
PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
if (goods == null)
throw new UserCloudException(1, "璇ュ晢鍝佸凡涓嬫灦");
-
+
String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", user.getId() + "");
-
+
boolean coupon = true;
if (goods.getHasCoupon() == null || !goods.getHasCoupon()) {
coupon = false;
}
-
+
String quanPrice = "";
String couponAmount = "";
if (coupon) {
@@ -920,33 +1016,42 @@
quanPrice = BigDecimalUtil.getWithNoZera(amount).toString();
couponAmount = BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString();
}
-
+
String sales = goods.getSalesTip();
if (StringUtil.isNullOrEmpty(sales)) {
sales = "0";
}
-
+
// 鑾峰彇鎺ㄨ崘璇�
- String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getGoodsName(), sales,
+ String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getGoodsName(), sales,
couponAmount, null);
-
+
// 鑾峰彇璇勮璇�
- String zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100)).setScale(2).toString();
- String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, zkPrice, quanPrice,
+ String zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100))
+ .setScale(2).toString();
+ String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, zkPrice, quanPrice,
ConfigKeyEnum.quickSharePDDCommentText);
-
+
List<String> list = null;
String[] goodsGalleryUrls = goods.getGoodsGalleryUrls();
if (goodsGalleryUrls != null && goodsGalleryUrls.length > 0) {
list = Arrays.asList(goodsGalleryUrls);
}
- // 浜戝彂鍗�
- sendGoods(robotId, wxId, listOpen, recommendText, commentText, list, user.getId(), pid );
+
+ List<String> list2 = list;
+ // 寮傛鎵ц鍙戦��
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ sendGoods(robotId, wxId, listOpen, recommendText, commentText, list2, user.getId(), pid);
+ }
+ });
+
}
-
-
+
/**
* 鍞搧浼氬晢鍝�
+ *
* @param user
* @param robotId
* @param wxId
@@ -956,15 +1061,16 @@
* @param pid
* @throws UserCloudException
*/
- private void sendVIPGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
+ private void sendVIPGoods(UserInfo user, int robotId, String wxId, Long goodsId, String relationId,
List<UserCloudGroup> listOpen, String pid) throws UserCloudException {
VIPGoodsInfo goods = VipShopApiUtil.getGoodsDetail(goodsId + "");
if (goods == null)
throw new UserCloudException(1, "璇ュ晢鍝佸凡涓嬫灦");
- VIPConvertResultDTO resultDTO = VipShopApiUtil.convertLink(goodsId + "", VipShopUtil.getShareChanTag(user.getId()));
+ VIPConvertResultDTO resultDTO = VipShopApiUtil.convertLink(goodsId + "",
+ VipShopUtil.getShareChanTag(user.getId()));
String jumpLink = resultDTO.getUrl();
-
+
boolean coupon = false;
String quanPrice = "";
String couponAmount = "";
@@ -972,16 +1078,22 @@
String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getGoodsName(), null,
couponAmount, null);
// 鑾峰彇璇勮璇�
- String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink, goods.getMarketPrice(),
- quanPrice, ConfigKeyEnum.quickShareVIPCommentText);
-
- // 浜戝彂鍗�
- sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getGoodsDetailPictures(), user.getId(), pid);
+ String commentText = shareGoodsTextTemplateService.getCommentTextByLink(coupon, jumpLink,
+ goods.getMarketPrice(), quanPrice, ConfigKeyEnum.quickShareVIPCommentText);
+
+ // 寮傛鎵ц鍙戦��
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ sendGoods(robotId, wxId, listOpen, recommendText, commentText, goods.getGoodsDetailPictures(), user.getId(),
+ pid);
+ }
+ });
}
-
-
+
/**
* 浜笢鍟嗗搧浜戝彂鍗�
+ *
* @param user
* @param robotId
* @param wxId
@@ -990,46 +1102,49 @@
* @param listOpen
* @throws UserCloudException
*/
- private void sendSuNingGoods(UserInfo user, int robotId, String wxId, Long goodsId, Long sellerId, String relationId,
- List<UserCloudGroup> listOpen, String pid) throws UserCloudException {
- SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(goodsId +"", sellerId +"");
+ private void sendSuNingGoods(UserInfo user, int robotId, String wxId, Long goodsId, Long sellerId,
+ String relationId, List<UserCloudGroup> listOpen, String pid) throws UserCloudException {
+ SuningGoodsInfo goods = SuningApiUtil.getGoodsDetail(goodsId + "", sellerId + "");
if (goods == null)
throw new UserCloudException(1, "璇ュ晢鍝佸凡涓嬫灦");
-
-
+
String couponLink = goods.getCouponInfo().getCouponUrl();
- String jumpLink = SuningApiUtil.convertLink(SuningUtil.getProductUrl(sellerId +"", goodsId +""),
+ String jumpLink = SuningApiUtil.convertLink(SuningUtil.getProductUrl(sellerId + "", goodsId + ""),
StringUtil.isNullOrEmpty(couponLink) ? null : couponLink, SuningApiUtil.PID_SHARE, user.getId() + "");
-
-
+
boolean coupon = false;
String couponAmount = "";
String sales = null;
if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 鏈夊埜
couponAmount = new BigDecimal(goods.getCouponInfo().getCouponValue()).toString();
coupon = true;
- }
-
+ }
+
// 鑾峰彇鎺ㄨ崘璇�
- String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon, goods.getCommodityInfo().getCommodityName(), sales,
- couponAmount, null);
-
+ String recommendText = shareGoodsTextTemplateService.getRecommendText(coupon,
+ goods.getCommodityInfo().getCommodityName(), sales, couponAmount, null);
+
// 鐢熸垚蹇嵎鍒嗕韩鍐呭
String template = configService.get(ConfigKeyEnum.quickShareSuNingCommentText.getKey());
String commentText = shareGoodsTextTemplateService.createQuickShareTextSuNing(template, goods, jumpLink);
-
-
+
List<String> imgList = new ArrayList<>();
for (SuningGoodsImg img : goods.getCommodityInfo().getPictureUrl()) {
imgList.add(img.getPicUrl());
}
- // 浜戝彂鍗�
- sendGoods(robotId, wxId, listOpen, recommendText, commentText, imgList, user.getId(), pid);
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ // 浜戝彂鍗�
+ sendGoods(robotId, wxId, listOpen, recommendText, commentText, imgList, user.getId(), pid);
+ }
+ });
}
-
+
/**
* 鍙戦�佸晢鍝�
+ *
* @param robotId
* @param title
* @param comment
@@ -1037,32 +1152,33 @@
* @param wxId
* @param listOpen
*/
- private void sendGoods(int robotId,String wxId, List<UserCloudGroup> listOpen, String title,
- String comment, List<String> listImg, Long uid, String pid) {
+ private void sendGoods(int robotId, String wxId, List<UserCloudGroup> listOpen, String title, String comment,
+ List<String> listImg, Long uid, String pid) {
// 閬嶅巻缇�-鏈嬪弸鍦�
- for (UserCloudGroup cloudGroup: listOpen) {
+ for (UserCloudGroup cloudGroup : listOpen) {
UserCloudSendContent sendContent = new UserCloudSendContent();
sendContent.setPid(pid);
sendContent.setUid(uid);
sendContent.setGroupId(cloudGroup.getGroupId());
sendContent.setCreateTime(new Date());
-
- if(cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { // 鏈嬪弸鍦�
+
+ if (cloudGroup.getType() == UserCloudGroup.TYPE_CIRCLE) { // 鏈嬪弸鍦�
sendContent.setType(UserCloudSendContent.TYPE_CIRCLE);
String picUrl = "";
if (listImg.size() > 0) {
- for (String img: listImg) {
- picUrl += img + ";" ;
+ for (String img : listImg) {
+ picUrl += TbImgUtil.getTBSize220Img(img) + ";";
}
+ if (picUrl.endsWith(";"))
+ picUrl = picUrl.substring(0, picUrl.length() - 1);
}
-
- if (picUrl.endsWith(";"))
- picUrl = picUrl.substring(0, picUrl.length()-1);
+
+ String picUrlUpload = AitaokerApiUtil.macsendUpload(robotId, picUrl);
+ sendContent.setPicUrlUpload(picUrlUpload);
sendContent.setTitle(title);
sendContent.setPicUrl(picUrl);
-
// 鍙戝湀鍐呭
- String circleId = AitaokerApiUtil.macsendCircle(robotId, title, picUrl);
+ String circleId = AitaokerApiUtil.macsendCircle(robotId, title, picUrlUpload);
// 璇勮鏂囨湰
if (!StringUtil.isNullOrEmpty(circleId)) {
sendContent.setState(true);
@@ -1081,20 +1197,27 @@
if (macsend)
sendContent.setTitle(title);
}
-
+
// 鍙戦�佸浘鐗�
- String picurl = listImg.get(0);
- if (!StringUtil.isNullOrEmpty(picurl)) {
- try {
- String imgBase64 = ImageToBase64.NetImageToBase64(picurl);
- boolean macsend = AitaokerApiUtil.macsendImgBase64(robotId, cloudGroup.getGroupId(), imgBase64);
- if (macsend)
- sendContent.setPicUrl(picurl);
- } catch (Exception e) {
- LogHelper.errorDetailInfo(e);
- }
-
+ int num = 1;
+ String picNum = configService.get(ConfigKeyEnum.robotCloudGroupPictureNum.getKey());
+ if (!StringUtil.isNullOrEmpty(picNum)) {
+ num = Integer.parseInt(picNum);
}
+
+ if (listImg.size() > 0)
+ for (int i = 0; i < num && i < listImg.size(); i++) {
+ try {
+ String imgBase64 = ImageToBase64.NetImageToBase64(listImg.get(i));
+ boolean macsend = AitaokerApiUtil.macsendImgBase64(robotId, cloudGroup.getGroupId(),
+ imgBase64);
+ if (macsend)
+ sendContent.setPicUrl(listImg.get(i));
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ }
+ }
+
// 璇勮鏂囨湰
List<String> list = new ArrayList<>();
boolean macsend = AitaokerApiUtil.macsendText(robotId, cloudGroup.getGroupId(), comment);
@@ -1109,43 +1232,64 @@
}
@Override
- public void fixedTimeSend(String id) {
- if (StringUtil.isNullOrEmpty(id))
+ public void fixedTimeSend(List<GoodsEvaluate> listActivity, List<GoodsEvaluate> listGoods, boolean timeLimit) {
+ if (listGoods == null && listActivity == null)
return;
-
// 涓�涓皬鏃朵箣鍓�
- long time = java.lang.System.currentTimeMillis() - 1000 * 60 * 60 ;
- Date lastTime = new Date(time);
-
- for (int i = 0; i < 1000; i ++) {
+ Date lastTime = new Date(java.lang.System.currentTimeMillis() - 1000 * 60 * 60);
+ for (int i = 0; i < 1000; i++) {
// 鏌ヨ鍝簺鐢ㄦ埛寮�閫�
- List<Long> list = userCloudMapper.listValidUid(i*1000, 1000);
- if (list == null || list.size() == 0) {
+ List<Long> listUser = userCloudMapper.listValidUid(i * 1000, 1000);
+ if (listUser == null || listUser.size() == 0) {
break;
}
-
- for (Long uid: list) {
- try {
- // 鍒ゆ柇鏄惁璇� 鍐呭宸插彂
- UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid, id);
- if (record != null)
- continue;
-
- // 鏄惁鍦ㄤ竴涓皬鏃跺唴宸插彂閫佽繃
- UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime);
- if (last != null)
- continue;
-
- boolean official = false;
+
+ // 閬嶅巻鐢ㄦ埛
+ for (Long uid : listUser) {
+ try {// 鍒ゆ柇鏄惁寮�閫氬畼鏂归噰闆�
UserCloudManage cloudManage = userCloudManageService.selectByPrimaryKey(uid);
- if (cloudManage != null) {
- if (cloudManage.getOfficial() != null)
- official = cloudManage.getOfficial();
+ if (cloudManage == null || cloudManage.getOfficial() == null || !cloudManage.getOfficial()) {
+ continue;
}
- if (!Constant.IS_TEST && official) {
- UserCloudMQMsg msg = new UserCloudMQMsg(uid, id, UserCloudMQMsg.TYPE_EVALUATE);
- Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg);
+ // 鏃堕棿闂撮殧锛氭槸鍚﹀湪涓�涓皬鏃跺唴宸插彂閫佽繃
+ if (timeLimit) {
+ UserCloudSendRecord last = userCloudSendRecordService.getLastByUid(uid, lastTime);
+ if (last != null)
+ continue;
+ }
+
+
+ String evaluateId = null;
+ // 娲诲姩
+ if (listActivity != null && listActivity.size() > 0) {
+ for (GoodsEvaluate evaluate : listActivity) {
+ UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid,
+ evaluate.getId());
+ if (record != null)
+ continue;
+
+ evaluateId = evaluate.getId();
+ break;
+ }
+ }
+ // 鍗曞搧
+ if (StringUtil.isNullOrEmpty(evaluateId) && listGoods != null && listGoods.size() > 0) {
+ for (GoodsEvaluate evaluate : listGoods) {
+ UserCloudSendRecord record = userCloudSendRecordService.getByUidAndSendId(uid,
+ evaluate.getId());
+ if (record != null)
+ continue;
+
+ evaluateId = evaluate.getId();
+ break;
+ }
+ }
+
+ if (!StringUtil.isNullOrEmpty(evaluateId)) {
+ UserCloudMQMsg msg = new UserCloudMQMsg(uid, evaluateId, UserCloudMQMsg.TYPE_EVALUATE);
+ Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud,
+ msg);
producer.send(message);
}
} catch (Exception e) {
@@ -1153,6 +1297,65 @@
}
}
}
-
}
+
+ private void offlineNotification(Long uid) {
+ UserCloudManage cloudManage = userCloudManageService.selectForUpdate(uid);
+ if (cloudManage == null) {
+ return;
+ }
+
+ Boolean offlineNotice = cloudManage.getOfflineNotice();
+ if (offlineNotice != null && offlineNotice) {
+ return;
+ }
+
+ try {
+ userOtherMsgNotificationService.cloudMsg(uid, "浜戝彂鍗曞井淇¤处鍙�", "寰俊璐﹀彿鎺夌嚎", "闇�瑕佷綘閲嶆柊鎵弿浜岀淮鐮佺櫥褰�");
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ }
+
+ // 绔欏唴淇¢�氱煡
+ offlineNotificationZNX(uid);
+
+ // 寤惰繜10鍒嗛挓鍐嶆鎻愰啋
+ if (!Constant.IS_TEST) {
+ UserCloudMQMsg msg = new UserCloudMQMsg(uid, UserCloudMQMsg.TYPE_PUSH);
+ Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.userCloud, msg);
+ message.setStartDeliverTime(java.lang.System.currentTimeMillis() + 1000 * 60 * 10);
+ producer.send(message);
+ }
+
+ // 鏇存柊宸叉彁閱�
+ UserCloudManage updateManage = new UserCloudManage();
+ updateManage.setId(uid);
+ updateManage.setOfflineNotice(true);
+ userCloudManageService.updateByPrimaryKeySelective(updateManage);
+ }
+
+ // 绔欏唴淇¢�氱煡
+ @Override
+ public void offlineNotificationZNX(Long uid) {
+ // 楠岃瘉鏄惁寮�閫�
+ UserCloud userCloud = userCloudMapper.getValidByUid(uid);
+ if (userCloud == null)
+ return;
+
+ Integer robotId = userCloud.getRobotId();
+ if (robotId == null)
+ return;
+
+ // 鐧诲綍鐘舵��
+ if (AitaokerApiUtil.onlineCheck(robotId)) {
+ return;
+ }
+
+ try {
+ pushService.pushZNX(uid, "銆愰噸瑕侀�氱煡銆戜綘鐨勪簯鍙戝崟寰俊宸叉帀绾裤��", "闇�瑕佷綘閲嶆柊鎵弿浜岀淮鐮佺櫥褰�", null, null);
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ }
+ }
+
}
\ No newline at end of file
--
Gitblit v1.8.0