From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 五月 2020 09:54:38 +0800
Subject: [PATCH] 足迹、收藏订单兼容新需求

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 100 insertions(+), 17 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java
index d53e733..0b57b02 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java
@@ -1,15 +1,19 @@
 package com.yeshi.fanli.service.impl.user;
 
+import java.io.InputStream;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 import javax.annotation.Resource;
 
 import org.springframework.stereotype.Service;
+import org.yeshi.utils.entity.FileUploadResult;
+import org.yeshi.utils.tencentcloud.COSManager;
 
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
@@ -23,6 +27,7 @@
 import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
 import com.yeshi.fanli.service.inter.user.PreviewInfoService;
 import com.yeshi.fanli.service.inter.user.invite.ThreeSaleDetailService;
+import com.yeshi.fanli.util.ImageUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
@@ -44,12 +49,11 @@
 	@Resource
 	private ThreeSaleDetailService threeSaleDetailService;
 	
-	
+	 
 	
 	@Override
 	public void save(Long createUid, Long preUid, PreviewEnum type, String content) {
 		String id = StringUtil.Md5(createUid + "#" + type.name());
-		
 		PreviewInfo info = new PreviewInfo();
 		info.setId(id);
 		info.setUid(preUid);
@@ -59,11 +63,30 @@
 		info.setUpdateTime(new Date());
 		previewInfoDao.save(info);
 		
-		// 缂撳瓨10鍒嗛挓
-		String key = StringUtil.Md5("preview" + preUid + "#" + type.name());
-		redisManager.cacheCommonString(key, info.getContent(), 60 * 10);
+		if (type == PreviewEnum.extractRecord || type == PreviewEnum.moneyArrival) {
+			return;
+		}
+		
+		// redis缂撳瓨
+		if (StringUtil.isNullOrEmpty(content)) {
+			removePreview(preUid, type);
+		} else {
+			adddPreview(preUid, type, content);
+		}
 	}
 	
+	// 缂撳瓨10鍒嗛挓
+	private void adddPreview(Long uid, PreviewEnum type, String content) {
+		String key = StringUtil.Md5("preview" + uid + "#" + type.name());
+		redisManager.cacheCommonString(key, content, 60 * 10);
+	}
+	
+	// 缂撳瓨10鍒嗛挓
+	private void removePreview(Long uid, PreviewEnum type) {
+		String key = StringUtil.Md5("preview" + uid + "#" + type.name());
+		redisManager.removeCommonString(key);
+	}
+		
 	
 	@Override
 	public String getRedisContent(Long uid, PreviewEnum previewEnum) {
@@ -91,25 +114,29 @@
 		BindingAccount alipay = bindingAccountService.getBindingAccountByUidAndType(uid, BindingAccount.TYPE_ALIPAY);
 		if (alipay == null)
 			throw new PreviewInfoException(1, "鏈粦瀹氭彁鐜拌处鍙�");
+		if (money == null || money.compareTo(BigDecimal.ZERO) <= 0)
+			throw new PreviewInfoException(1, "璇疯緭鍏ユ纭殑閲戦");
 		if (StringUtil.isNullOrEmpty(time))
 			throw new PreviewInfoException(1, "鎻愮幇鏃堕棿涓嶈兘涓虹┖");
-		if (money.compareTo(BigDecimal.ZERO) <= 0)
-			throw new PreviewInfoException(1, "鎻愮幇閲戦涓嶈兘灏忎簬0");
+	
+		Date parse = TimeUtil.parseDotCommon2(time);
+		if (parse == null)
+			throw new PreviewInfoException(1, "璇疯緭鍏ユ纭殑鏃堕棿鏍煎紡锛屽锛�2020.01.01 01:01");
+		
 		
 		Gson gson = new Gson();
-		List<Extract> list = null;
+		List<Extract> list = new ArrayList<Extract>();
 		
 		Extract extract = new Extract();
 		extract.setName(alipay.getName());
 		extract.setAccount(alipay.getAccount());
 		extract.setMoney(money);
-		extract.setReceiveTime(TimeUtil.parseDotCommon(time));
+		extract.setReceiveTime(TimeUtil.parseDotCommon2(time));
 		extract.setId(java.lang.System.currentTimeMillis());
 		
 		String id = StringUtil.Md5(uid + "#" + PreviewEnum.extractRecord.name());
 		PreviewInfo previewInfo = previewInfoDao.get(id);
 		if (previewInfo == null) {
-			 list = new ArrayList<Extract>();
 			 list.add(extract);
 		} else {
 			String content = previewInfo.getContent();
@@ -127,13 +154,35 @@
 				Comparator<Extract> cm = new Comparator<Extract>() {
 					@Override
 					public int compare(Extract o1, Extract o2) {
-						return (int) (o2.getReceiveTime().getTime() - o1.getReceiveTime().getTime());
+						if (o2.getReceiveTime().getTime() > o1.getReceiveTime().getTime()) {
+							return 1;
+						} else {
+							return -1;
+						}
 					}
 				};
 				Collections.sort(list, cm);
 			}
 		}
 		save(uid, uid, PreviewEnum.extractRecord, gson.toJson(list));
+	}
+	
+	
+
+	@Override
+	public void previewExtractRecord(Long uid) throws PreviewInfoException{
+		String id = StringUtil.Md5(uid + "#" + PreviewEnum.extractRecord.name());
+		PreviewInfo previewInfo = previewInfoDao.get(id);
+		if (previewInfo == null) {
+			throw new PreviewInfoException(1, "璇锋坊鍔犳彁鐜拌褰曚俊鎭�");
+		} 
+		
+		String content = previewInfo.getContent();
+		if (StringUtil.isNullOrEmpty(content)) {
+			throw new PreviewInfoException(1, "璇锋坊鍔犳彁鐜拌褰曚俊鎭�");
+		}
+
+		adddPreview(uid, PreviewEnum.extractRecord, content);
 	}
 	
 	
@@ -163,7 +212,11 @@
 				break;
 			}
 		}
+		
 		save(uid, uid, PreviewEnum.extractRecord, gson.toJson(list));
+		
+		// 鍙栨秷棰勮
+		removePreview(uid, PreviewEnum.extractRecord);
 	}
 	
 	
@@ -193,17 +246,47 @@
 	
 
 	@Override
-	public String saveMoneyArrival(Long uid, BigDecimal money, String time,String orderNo) throws PreviewInfoException {
+	public String saveMoneyArrival(Long uid, BigDecimal money, String time,String orderNo, String platform)
+			throws PreviewInfoException,Exception {
 		if (uid == null )
 			throw new PreviewInfoException(1, "璇峰厛鐧诲綍");
 		if (money == null )
 			throw new PreviewInfoException(1, "璇疯緭鍏ラ噾棰�");
+		if(StringUtil.isNullOrEmpty(orderNo))
+			throw new PreviewInfoException(1, "璇疯緭鍏ヨ鍗曞彿");
 		if(StringUtil.isNullOrEmpty(time))
 			throw new PreviewInfoException(1, "璇疯緭鍏ュ垱寤烘椂闂�");
-		if(StringUtil.isNullOrEmpty(time))
-			throw new PreviewInfoException(1, "璇疯緭鍏ヨ鍗曞彿");
-		String content = ""; // TODO
-		// save(uid, PreviewEnum.moneyArrival, gson.toJson(infoVO));
-		return content;
+		Date date = TimeUtil.parseDotCommon2(time);
+		if (date == null)
+			throw new PreviewInfoException(1, "璇疯緭鍏ユ纭殑鏃堕棿鏍煎紡锛屽锛�2020.01.01 01:01");
+		
+		// 杞崲鏍煎紡
+		time = TimeUtil.formatYMDHHMM(date);
+		
+		InputStream drawStream = null;
+		if ("ios".equalsIgnoreCase(platform)) {
+			drawStream = ImageUtil.drawAlipayIOS(money, orderNo, time);
+		} else {
+			drawStream = ImageUtil.drawAlipayAndroid(money, orderNo, time);
+		}
+		
+		if (drawStream == null) 
+			throw new PreviewInfoException(1, "棰勮鐢熸垚澶辫触");
+		
+		// 涓婁紶鏂囦欢
+		String uuid = UUID.randomUUID().toString().replace("-", "");
+		String upPath = "/user/img/preview/" + uuid + "_" + System.currentTimeMillis() + ".png";
+		FileUploadResult result = COSManager.getInstance().uploadInputStream(drawStream, upPath);
+		if (result == null) {
+			throw new PreviewInfoException(1, "棰勮鐢熸垚澶辫触");
+		}
+		
+		// 淇濆瓨淇℃伅
+		save(uid, uid, PreviewEnum.moneyArrival, result.getUrl());
+		
+		return result.getUrl();
 	}
 }
+	
+	
+	 

--
Gitblit v1.8.0