From e7920b14a9baab97035a1a529da85d124a2bcacd Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 16 六月 2020 10:54:29 +0800
Subject: [PATCH] 云发单对测试用户显示

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java |  202 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 125 insertions(+), 77 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 c4172d6..20cbc03 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
@@ -71,6 +71,7 @@
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.ImageToBase64;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
+import com.yeshi.fanli.util.RedisKeyEnum;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.aitaoker.AitaokerApiUtil;
@@ -216,7 +217,6 @@
 	}
 
 	@Override
-	@Transactional(rollbackFor = Exception.class)
 	public void openCloud(Long uid, Long orderId, CloudOrderMenuEnum menuEnum) throws UserCloudException {
 		UserCloud existCloud = userCloudMapper.getByOrderId(orderId);
 		if (existCloud != null) {
@@ -230,62 +230,60 @@
 			if (userCloud.getEndTime().getTime() > java.lang.System.currentTimeMillis())
 				renew = true;
 			// 楠岃瘉濂楅鏄惁鐩稿悓
-			if (renew && userCloud.getRobotType() != menuEnum.getType()) {
+			if (renew && userCloud.getRobotType() != menuEnum.getRobotType()) {
 				LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]宸叉湁鍏朵粬浜戝彂鍗曞椁愯繕鏈粨鏉�");
 				throw new UserCloudException(1, "宸叉湁鍏朵粬浜戝彂鍗曞椁愯繕鏈粨鏉�");
 			}
 		}
 
-//		RobotInfoDTO dto = null;
-//		if (renew) { // 缁垂
-//			dto = AitaokerApiUtil.robotRenewals(userCloud.getRobotId(), menuEnum.getMonth());
-//		} else { // 鍒涘缓鏈哄櫒浜�
-//			dto = AitaokerApiUtil.robotCreate(menuEnum.getMonth(), menuEnum.getType(), "wechatrobot", null);
-//		}
-//
-//		if (dto == null) {
-//			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖绌哄��");
-//			throw new UserCloudException(1, "鏈哄櫒浜鸿幏鍙栧け璐�");
-//		}
-//
-//		String endTimeStr = dto.getEndTime();
-//		if (StringUtil.isNullOrEmpty(endTimeStr)) {
-//			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿涓虹┖");
-//			throw new UserCloudException(1, "鏈哄櫒浜鸿繑鍥炴椂闂翠负绌�");
-//		}
-//
-//		long endTime = 0;
-//		try {
-//			endTime = Long.parseLong(endTimeStr);
-//		} catch (Exception e) {
-//			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿鏍煎紡涓嶆纭�");
-//			throw new UserCloudException(1, "鏈哄櫒浜鸿繑鍥炴椂闂存牸寮忎笉姝g‘");
-//		}
-//
-//		Integer robotId = dto.getId();
-//		if (robotId == null) {
-//			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 鏈哄櫒浜篒D杩斿洖涓虹┖");
-//			throw new UserCloudException(1, "鏈哄櫒浜篒D杩斿洖涓虹┖");
-//		}
-//
-//		Integer groupNum = dto.getGroupNum();
-//		if (groupNum == null) {
-//			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 groupNum杩斿洖涓虹┖");
-//			throw new UserCloudException(1, "groupNum杩斿洖涓虹┖");
-//		}
+		RobotInfoDTO dto = null;
+		if (renew) { // 缁垂
+			dto = AitaokerApiUtil.robotRenewals(userCloud.getRobotId(), menuEnum.getMonth());
+		} else { // 鍒涘缓鏈哄櫒浜�
+			dto = AitaokerApiUtil.robotCreate(menuEnum.getMonth(), menuEnum.getRobotType(), "wechatrobot", null);
+		}
+
+		if (dto == null) {
+			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 鏈哄櫒浜哄垱寤哄け璐�");
+		}
+
+		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 + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿涓虹┖");
+		}
+
+		long endTime = 0;
+		try {
+			endTime = Long.parseLong(endTimeStr);
+		} catch (Exception e) {
+			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 杩斿洖鏃堕棿鏍煎紡涓嶆纭�");
+		}
+
+		Integer groupNum = dto.getGroupNum();
+		if (groupNum == null) {
+			LogHelper.cloudInfo("鏂规硶openCloud: [uid=" + uid + "][璁㈠崟ID=" + orderId + "]鏈哄櫒浜哄け璐ワ細 groupNum杩斿洖涓虹┖");
+		}
 
 		UserCloud newCloud = new UserCloud();
 		newCloud.setUid(uid);
 		newCloud.setOrderId(orderId);
-//		newCloud.setGroupNum(groupNum);
-//		newCloud.setRobotId(robotId);
-		newCloud.setRobotType(menuEnum.getType());
-//		if (renew) {
-//			newCloud.setStartTime(userCloud.getStartTime());
-//		} else {
-//			newCloud.setStartTime(new Date());
-//		}
-//		newCloud.setEndTime(new Date(endTime * 1000)); // Unix 杞崲 鏅�氭椂闂�
+		newCloud.setGroupNum(groupNum);
+		newCloud.setRobotId(robotId);
+		newCloud.setRobotType(menuEnum.getRobotType());
+		if (renew) {
+			newCloud.setWxId(userCloud.getWxId());
+			newCloud.setWxName(userCloud.getWxName());
+			newCloud.setWxPortrait(userCloud.getPortrait());
+			newCloud.setStartTime(userCloud.getStartTime());
+		} else {
+			newCloud.setStartTime(new Date());
+		}
+		newCloud.setEndTime(new Date(endTime * 1000)); // Unix 杞崲 鏅�氭椂闂�
 		newCloud.setCreateTime(new Date());
 		userCloudMapper.insertSelective(newCloud);
 		
@@ -306,12 +304,27 @@
 		List<WeiXinGroupDTO> list = AitaokerApiUtil.getContract(robotId);
 		if (list == null || list.size() == 0)
 			throw new UserCloudException(1, "鏈绱㈠埌瀵瑰簲缇�");
-
+		
+		String wxId = userCloud.getWxId();
 		for (WeiXinGroupDTO dto : list) {
-			userCloudGroupService.addGroup(uid, dto.getGroupId(), dto.getGroupName(), userCloud.getGroupNum());
+			String groupId = dto.getGroupId();
+			// 妫�娴嬫槸鍚﹀尮閰嶇兢
+			String key =  RedisKeyEnum.cloudMatchGroup.getKey() + StringUtil.Md5(wxId + "_" + groupId);
+			String result = redisManager.getCommonString(key);
+			 if (!StringUtil.isNullOrEmpty(result)) {
+				userCloudGroupService.addGroup(uid, dto.getGroupId(), dto.getGroupName(), userCloud.getGroupNum());
+			}
 		}
 	}
 	
+	@Override
+	public void cacheMatchGroup(String wxId, String groupId) {
+		 if (StringUtil.isNullOrEmpty(wxId) || StringUtil.isNullOrEmpty(groupId))
+			return;
+		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{
 		sendCircleByDynamic(uid, id, UserCloudSendRecord.SEND_WAY_MANUAL);
@@ -374,6 +387,10 @@
 		String wxId = userCloud.getWxId();
 		if (StringUtil.isNullOrEmpty(wxId)) 
 			throw new UserCloudException(1003, "寰俊鍙蜂笉瀛樺湪锛岃鍏堝井淇$櫥褰�");
+		
+		if (!AitaokerApiUtil.onlineCheck(robotId)) {
+			throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝璇峰厛閲嶆柊鐧诲綍寰俊");
+		}
 		
 		// 楠岃瘉寮�鍚姸鎬�
 		List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid);
@@ -492,7 +509,7 @@
 		sendRecord.setWxId(wxId);
 		sendRecord.setRobotId(robotId);
 		sendRecord.setSendTime(new Date());
-		sendRecord.setSendOrigin(UserCloudSendRecord.ORIGIN_STORE);
+		sendRecord.setSendOrigin(UserCloudSendRecord.ORIGIN_EVALUATE);
 		UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord);
 		String pid = result.getId();
 		
@@ -516,9 +533,12 @@
 						
 					if (listImg.size() > 0) {
 						for (String img: listImg) {
-							picUrl += "," + img;
+							picUrl +=  img + ";" ;
 						}
 					}
+					
+					if (picUrl.endsWith(";")) 
+						picUrl = picUrl.substring(0, picUrl.length()-1);
 					sendContent.setTitle(title);
 					sendContent.setPicUrl(picUrl);
 					// 鍙戦�佸浘鏂�
@@ -583,7 +603,7 @@
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void sendCustomGoods(Long uid, Long goodsId, Integer goodsType, Long sellerId) throws UserCloudException{
-		sendCircleByGoods(uid, goodsId, goodsType, null, sellerId);
+		sendCircleByGoods(uid, goodsId, goodsType, null, sellerId,  UserCloudSendRecord.SEND_WAY_MANUAL);
 	}
 
 	@Override
@@ -610,13 +630,14 @@
 		
 		try {
 			// 鍙戦�佸晢鍝�
-			sendCircleByGoods(uid, cgoods.getGoodsId(), cgoods.getGoodsType(), id, cgoods.getSellerId());
+			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());
 		}
 	}
 
-	private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId, Long sellerId) throws UserCloudException {
+	private void sendCircleByGoods(Long uid, Long goodsId, Integer goodsType, Long storeId,
+			Long sellerId, int way) throws UserCloudException {
 		// 楠岃瘉鏄惁鎺堟潈
 		UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
 		if (user == null)
@@ -665,7 +686,7 @@
 				custom = cloudManage.getCustom();
 		}
 		if (!custom) {
-			throw new UserCloudException(0, "鎴愬姛鍔犲叆浜戝彂鍗曞簱");
+			return;
 		}
 				
 		Integer robotId = userCloud.getRobotId();
@@ -675,6 +696,11 @@
 		String wxId = userCloud.getWxId();
 		if (StringUtil.isNullOrEmpty(wxId)) 
 			throw new UserCloudException(1002, "璇峰厛鐧诲綍寰俊");
+		
+		if (!AitaokerApiUtil.onlineCheck(robotId)) {
+			throw new UserCloudException(1003, "寰俊宸叉帀绾匡紝璇峰厛閲嶆柊鐧诲綍寰俊");
+		}
+		
 		
 		// 楠岃瘉寮�鍚姸鎬�
 		List<UserCloudGroup> listGroup = userCloudGroupService.listByUid(uid);
@@ -715,27 +741,43 @@
 		}
 		UserCloudSendRecord result = userCloudSendRecordService.save(sendRecord);
 		
-		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
-			sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
-		} else if (goodsType == Constant.SOURCE_TYPE_JD) {
-			sendJDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
-		} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
-			sendPDDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
-		} else if (goodsType == Constant.SOURCE_TYPE_VIP) {
-			sendVIPGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
-		} else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
-			sendSuNingGoods(user, robotId, wxId, goodsId, sellerId, relationId, listOpen, result.getId());
+		try {
+			if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
+				sendTaoBaoGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
+			} else if (goodsType == Constant.SOURCE_TYPE_JD) {
+				sendJDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
+			} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
+				sendPDDGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
+			} else if (goodsType == Constant.SOURCE_TYPE_VIP) {
+				sendVIPGoods(user, robotId, wxId, goodsId, relationId, listOpen, result.getId());
+			} else if (goodsType == Constant.SOURCE_TYPE_SUNING) {
+				sendSuNingGoods(user, robotId, wxId, goodsId, sellerId, relationId, listOpen, result.getId());
+			}
+			// 鏇存柊鍙戝崟璁板綍
+			if (storeId != null) {
+				UserCloudGoods record = new UserCloudGoods();
+				record.setId(storeId);
+				record.setState(UserCloudGoods.STATE_SHARED);
+				record.setSendTime(new Date());
+				record.setUpdateTime(new Date());
+				userCloudGoodsService.updateByPrimaryKeySelective(record);
+			}
+			
+		} catch (UserCloudException e) {
+			LogHelper.cloudInfo("autoSendCustomGoods - [uid:" +uid + " 搴搃d:"+  storeId +  "]鍘熷洜锛�"+ e.getMsg());
+			// 鏇存柊鍙戝崟璁板綍
+			if (storeId != null) {
+				UserCloudGoods record = new UserCloudGoods();
+				record.setId(storeId);
+				record.setState(UserCloudGoods.STATE_INVALID);
+				record.setSendTime(new Date());
+				record.setUpdateTime(new Date());
+				userCloudGoodsService.updateByPrimaryKeySelective(record);
+			}
 		}
+	
 		
-		// 鏇存柊鍙戝崟璁板綍
-		if (storeId != null) {
-			UserCloudGoods record = new UserCloudGoods();
-			record.setId(storeId);
-			record.setState(UserCloudGoods.STATE_SHARED);
-			record.setSendTime(new Date());
-			record.setUpdateTime(new Date());
-			userCloudGoodsService.updateByPrimaryKeySelective(record);
-		}
+		
 	}
 	
 	/**
@@ -1009,9 +1051,12 @@
 				String picUrl = "";
 				if (listImg.size() > 0) {
 					for (String img: listImg) {
-						picUrl += "," + img;
+						picUrl +=  img + ";" ;
 					}
 				}
+				
+				if (picUrl.endsWith(";")) 
+					picUrl = picUrl.substring(0, picUrl.length()-1);
 				sendContent.setTitle(title);
 				sendContent.setPicUrl(picUrl);
 				
@@ -1072,17 +1117,20 @@
 		Date lastTime =  new Date(time);
 		
 		for (int i = 0; i < 1000; i ++) {
-			List<Long> list = userCloudMapper.listValidUid((i-1)*1000, 1000);
+			// 鏌ヨ鍝簺鐢ㄦ埛寮�閫�
+			List<Long> list = userCloudMapper.listValidUid(i*1000, 1000);
 			if (list == null || list.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;

--
Gitblit v1.8.0