From 98b1a0affd69bbe63223c21fdd2c404e8bedfccb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 20 五月 2020 17:25:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into 2.1.2

---
 fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java             |    4 
 fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java                                      |  197 ++++++++++++++++
 utils/src/main/java/org/yeshi/utils/DateUtil.java                                            |    7 
 fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java                   |   83 ++++++
 fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java       |    5 
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java |    5 
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java  |    5 
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java             |   62 +++++
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java        |   12 
 pom.xml                                                                                      |    5 
 fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java          |   64 +++++
 fanli/src/main/resource/image/alipay/android.png                                             |    0 
 fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java     |   10 
 fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java                  |   85 +++++++
 fanli/src/main/java/com/yeshi/fanli/service/inter/user/PreviewInfoService.java               |    3 
 fanli/src/main/resource/image/alipay/ios.png                                                 |    0 
 fanli/src/main/java/com/yeshi/fanli/vo/order/OrderRankingVO.java                             |   51 ++++
 fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java                                       |   17 +
 fanli/src/main/java/com/yeshi/fanli/service/impl/user/PreviewInfoServiceImpl.java            |   49 +++
 fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java    |   10 
 20 files changed, 647 insertions(+), 27 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
index 2d99c98..8535fd5 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserInfoController.java
@@ -2228,7 +2228,7 @@
 			if (VersionUtil.greaterThan_2_0_7(acceptData.getPlatform(), acceptData.getVersion())) {
 				UserInviteLevelEnum level = null;
 				// VIP棰勮淇℃伅
-				if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
+				if (VersionUtil.greaterThan_2_1_1(acceptData.getPlatform(), acceptData.getVersion())) {
 					String redisContent = previewInfoService.getRedisContent(uid, PreviewEnum.mineInfo);
 					if (!StringUtil.isNullOrEmpty(redisContent)) {
 						MineInfoVO vo = new Gson().fromJson(redisContent, MineInfoVO.class);
@@ -2303,6 +2303,8 @@
 					data.put("vipAction", vipAction);
 
 			}
+			
+			data.put("user", JsonUtil.getConvertBigDecimalToStringBuilder(gsonBuilder).create().toJson(userInfo));
 
 			out.print(JsonUtil.loadTrueResult(data));
 
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
index cc92a62..c1bcd66 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/InviteControllerV2.java
@@ -74,6 +74,7 @@
 import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
 import com.yeshi.fanli.util.user.UserLevelUtil;
 import com.yeshi.fanli.util.wx.WXLoginUtil;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -1267,7 +1268,6 @@
 	@RequestMapping(value = "countTeamNum")
 	public void countTeamNum(String callback, AcceptData acceptData, Long uid, PrintWriter out) {
 		try {
-			
 			Date minDate = null;
 			Date maxDate = null;
 			long timeStamp = System.currentTimeMillis();
@@ -1344,4 +1344,64 @@
 	}
 	
 	
+	
+	/**
+	 * 閭�璇锋帓琛屾
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param dateType
+	 * @param out
+	 */
+	@RequestMapping(value = "getRanking")
+	public void getRanking(String callback, AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) {
+		if (uid == null || dateType == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟缂哄け"));
+			return;
+		}
+		
+		try {
+			Date minDate = null;
+			Date maxDate = null;
+			long timeStamp = System.currentTimeMillis();
+			Calendar calendar = Calendar.getInstance();
+			calendar.setTimeInMillis(timeStamp);
+			
+			if (dateType == 1) {
+				// 浠婃棩
+				calendar.add(Calendar.DAY_OF_YEAR, -1);
+				minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
+			} else if (dateType == 2) {
+				// 鏄ㄦ棩
+				calendar.add(Calendar.DAY_OF_YEAR, -1);
+				maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
+				minDate = DateUtil.reduceDay(1, maxDate);
+			} else {
+				// 鏈湀
+				maxDate = new Date(timeStamp);
+				calendar = Calendar.getInstance();
+				minDate = new Date(TimeUtil
+						.convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
+				calendar.add(Calendar.MONTH, -1);
+			}
+			
+			
+			List<OrderRankingVO> list = teamDailyRecordService.getRankingByFirstNum(uid, minDate, maxDate);
+			if (list.size() > 0) {
+				for (OrderRankingVO vo: list) {
+					UserInfo user = userInfoService.getUserByIdWithMybatis(vo.getUid());
+					vo.setNickName(user.getNickName());
+					vo.setPortrait(user.getPortrait());
+				}
+			}
+			
+			JSONObject json = new JSONObject();
+			json.put("list", list);
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
+		} catch (Exception e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("缁熻澶辫触"));
+			e.printStackTrace();
+		}
+	}
+	
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java
index 71c1eee..a8d4646 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/PreviewInfoControllerV2.java
@@ -267,10 +267,10 @@
 		}
 		try {
 			previewInfoService.saveExtractRecord(uid, dayTime, money);
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
 		} catch (PreviewInfoException e) {
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
 		}
-		JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("淇濆瓨鎴愬姛"));
 	}
 
 	@RequestMapping(value = "getExtractRecord")
@@ -286,7 +286,6 @@
 			list = new ArrayList<>();
 
 		JSONArray JSONArray = new JSONArray();
-		
 		if (list.size() > 0) {
 			for (Extract extract : list) {
 				Date receiveTime = extract.getReceiveTime();
@@ -408,13 +407,8 @@
 	@RequestMapping(value = "saveMoneyArrival")
 	public void saveMoneyArrival(String callback, AcceptData acceptData, Long uid, BigDecimal money, String dayTime,
 			String orderNo, PrintWriter out) {
-		if (uid == null) {
-			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鐢ㄦ埛鏈櫥褰�"));
-			return;
-		}
-
 		try {
-			String link = previewInfoService.saveMoneyArrival(uid, money, dayTime, orderNo);
+			String link = previewInfoService.saveMoneyArrival(uid, money, dayTime, orderNo, acceptData.getPlatform());
 			JSONObject object = new JSONObject();
 			object.put("link", link);
 			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object));
@@ -422,7 +416,7 @@
 			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
 		} catch (Exception e) {
 			LogHelper.errorDetailInfo(e);
-			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淇濆瓨澶辫触"));
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("棰勮澶辫触"));
 		}
 	}
 
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
index b8ad8ae..4345f80 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserMoneyControllerV2.java
@@ -53,6 +53,7 @@
 import com.yeshi.fanli.vo.money.MoneyPredictVO;
 import com.yeshi.fanli.vo.money.MoneyStatisticVO;
 import com.yeshi.fanli.vo.money.TeamPredictVO;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -810,7 +811,6 @@
 	
 	private OrderMoneyDailyCount createVO(List<OrderMoneyDailyCount> list) {
 		OrderMoneyDailyCount totalityRecord = new OrderMoneyDailyCount(0,0,0);
-		
 		if (list != null && list.size() > 0) {
 			for (OrderMoneyDailyCount record: list) {
 				totalityRecord.setDirectOrderNum(totalityRecord.getDirectOrderNum() + record.getDirectOrderNum());
@@ -818,7 +818,67 @@
 				totalityRecord.setBeyondOrderNum(totalityRecord.getBeyondOrderNum() + record.getBeyondOrderNum());
 			}
 		}  
-		
 		return totalityRecord;
 	}
+	
+	
+	
+	/**
+	 * 璁㈠崟鎺掕姒�
+	 * @param callback
+	 * @param acceptData
+	 * @param uid
+	 * @param dateType
+	 * @param out
+	 */
+	@RequestMapping(value = "getRanking")
+	public void getRanking(String callback, AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) {
+		if (uid == null || dateType == null) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟缂哄け"));
+			return;
+		}
+		
+		try {
+			Date minDate = null;
+			Date maxDate = null;
+			long timeStamp = System.currentTimeMillis();
+			
+			Calendar calendar = Calendar.getInstance();
+			calendar.setTimeInMillis(timeStamp);
+			
+			if (dateType == 1) {
+				// 浠婃棩
+				calendar.add(Calendar.DAY_OF_YEAR, -1);
+				minDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
+			} else if (dateType == 2) {
+				// 鏄ㄦ棩
+				calendar.add(Calendar.DAY_OF_YEAR, -1);
+				maxDate = new Date(TimeUtil.convertDateToTemp(TimeUtil.getGernalTime(timeStamp)));
+				minDate = DateUtil.reduceDay(1, maxDate);
+			} else {
+				// 鏈湀
+				maxDate = new Date(timeStamp);
+				calendar = Calendar.getInstance();
+				minDate = new Date(TimeUtil
+						.convertToTimeTemp(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1), "yyyy-M"));
+				calendar.add(Calendar.MONTH, -1);
+			}
+			
+			List<OrderRankingVO> list = orderMoneyDailyCountService.getRankingByOrderNum(uid, minDate, maxDate);
+			if (list.size() > 0) {
+				for (OrderRankingVO vo: list) {
+					UserInfo user = userInfoService.getUserByIdWithMybatis(vo.getUid());
+					vo.setNickName(user.getNickName());
+					vo.setPortrait(user.getPortrait());
+				}
+			}
+			
+			JSONObject json = new JSONObject();
+			json.put("list", list);
+			JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(json));
+		} catch (Exception e) {
+			JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("缁熻澶辫触"));
+			e.printStackTrace();
+		}
+	}
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java b/fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java
index 2ad0044..9a306d7 100644
--- a/fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java
+++ b/fanli/src/main/java/com/yeshi/fanli/dao/order/OrderMoneyDailyCountDao.java
@@ -11,10 +11,15 @@
 import java.util.Map;
 
 import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.AggregationOperation;
+import org.springframework.data.mongodb.core.aggregation.AggregationResults;
+import org.springframework.data.mongodb.core.aggregation.LookupOperation;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Repository;
+import org.yeshi.utils.DateUtil;
 
 import com.mongodb.BasicDBList;
 import com.mongodb.BasicDBObject;
@@ -24,6 +29,8 @@
 import com.yeshi.fanli.dao.MongodbBaseDao;
 import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
 import com.yeshi.fanli.entity.order.OrderMoneyDailyCount.SourceTypeEnum;
+import com.yeshi.fanli.util.TimeUtil;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 @Repository
 public class OrderMoneyDailyCountDao extends MongodbBaseDao<OrderMoneyDailyCount> {
@@ -723,4 +730,80 @@
 		}
 		return results;
 	}
+	
+	
+	
+	/**
+	 * 鏍规嵁璁㈠崟鎺掕姒滆繘琛寀id鍒嗙粍璁㈠崟鏁伴噺鎺掑簭
+	 * @param uid
+	 * @param minDate
+	 * @param maxDate
+	 * @return
+	 */
+	public List<OrderRankingVO> getRankingByOrderNum(Long uid, Date minDate, Date maxDate) {
+    	LookupOperation lookupToLots = LookupOperation.newLookup().
+                from("order_money_daily_count").//鍏宠仈琛ㄥ悕锛屽鏂�
+                localField("workerUid").// 涓昏〃鍏宠仈瀛楁
+                foreignField("uid").// 娆¤〃瀛楁鍏宠仈瀛楁
+                as("orders"); // 娆¤〃鐨勫埆鍚�
+
+		// 鏌ヨ鏉′欢
+		List<Criteria> list = new ArrayList<Criteria>();
+		list.add(Criteria.where("bossUid").is(uid));
+		if (minDate != null) {
+			minDate = DateUtil.reduceDay(minDate, 1);
+			list.add(Criteria.where("orders.countDay").gt(minDate));
+		}
+		if (maxDate != null) {
+			maxDate = DateUtil.reduceDay(maxDate, 1);
+			list.add(Criteria.where("orders.countDay").lte(maxDate));
+		}
+		// 杞崲鏁扮粍
+		Criteria[] cas = new Criteria[list.size()];
+		for (int i = 0; i < list.size(); i++)
+			cas[i] = list.get(i);
+		// 鏌ヨ鍙傛暟
+		Criteria criteria = new Criteria().andOperator(cas);
+		
+            	
+        List<AggregationOperation> aggs = new ArrayList<>(); 
+        // 宸﹁繛鎺�
+        aggs.add(lookupToLots); 
+        // 鎷嗗垎瀛愭暟缁�
+        aggs.add(Aggregation.unwind("orders"));
+        // 鏉′欢鍖归厤
+        aggs.add(Aggregation.match(criteria));  
+        // 闇�瑕佽繑鍥炵殑瀛楁
+        aggs.add(Aggregation.project().and("workerUid").as("workerUid").and("level").as("level")
+        		.and("orders.orderNum").as("number"));
+        // 鍒嗙粍姹傚拰骞惰繑鍥�
+        aggs.add(Aggregation.group("workerUid").first("workerUid").as("workerUid").first("level").as("level")
+        		.sum("number").as("number")); 
+        // 鎺掑簭
+        aggs.add(Aggregation.sort(new Sort(Sort.Direction.DESC, "number")));  
+        aggs.add(Aggregation.limit(10));  
+        
+        // 缁勭粐鏉′欢
+        Aggregation agg = Aggregation.newAggregation(aggs);  
+        // 鎵ц鏌ヨ
+        AggregationResults<BasicDBObject> results = mongoTemplate.aggregate(agg, "threeSaleDetail", BasicDBObject.class);
+       
+        // 杩斿洖缁撴灉澶勭悊
+        List<BasicDBObject> livevideo  = results.getMappedResults();
+        
+        List<OrderRankingVO> resultList = new ArrayList<>();
+        for (BasicDBObject obj : livevideo) {
+			Object object = obj.get("workerUid");
+			if (object == null) {
+				continue;
+			}
+			
+			OrderRankingVO vo = new OrderRankingVO();
+			vo.setUid(new BigDecimal(obj.get("workerUid").toString()).longValue());
+			vo.setGrade(new BigDecimal(obj.get("level").toString()).intValue());
+			vo.setNumber(new BigDecimal(obj.get("number").toString()).intValue());
+			resultList.add(vo);	
+		}
+        return resultList;
+	}
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java b/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
index 8ff1d39..a20d14b 100644
--- a/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
+++ b/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
@@ -9,10 +9,16 @@
 import java.util.Locale;
 import java.util.Map;
 
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.AggregationOperation;
+import org.springframework.data.mongodb.core.aggregation.AggregationResults;
+import org.springframework.data.mongodb.core.aggregation.LookupOperation;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Repository;
+import org.yeshi.utils.DateUtil;
 
 import com.mongodb.BasicDBList;
 import com.mongodb.BasicDBObject;
@@ -21,6 +27,7 @@
 import com.mongodb.GroupCommand;
 import com.yeshi.fanli.dao.MongodbBaseDao;
 import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 @Repository
 public class TeamDailyRecordDao extends MongodbBaseDao<TeamDailyRecord> {
@@ -376,4 +383,82 @@
 		}
 		return results;
 	}
+	
+	
+	
+
+	/**
+	 * 鏍规嵁璁㈠崟鎺掕姒滆繘琛寀id鍒嗙粍璁㈠崟鏁伴噺鎺掑簭
+	 * @param uid
+	 * @param minDate
+	 * @param maxDate
+	 * @return
+	 */
+	public List<OrderRankingVO> getRankingByFirstNum(Long uid, Date minDate, Date maxDate) {
+    	LookupOperation lookupToLots = LookupOperation.newLookup().
+                from("teamDailyRecord").//鍏宠仈琛ㄥ悕锛屽鏂�
+                localField("workerUid").// 涓昏〃鍏宠仈瀛楁
+                foreignField("uid").// 娆¤〃瀛楁鍏宠仈瀛楁
+                as("result"); // 娆¤〃鐨勫埆鍚�
+
+		// 鏌ヨ鏉′欢
+		List<Criteria> list = new ArrayList<Criteria>();
+		list.add(Criteria.where("bossUid").is(uid));
+		if (minDate != null) {
+			minDate = DateUtil.reduceDay(minDate, 1);
+			list.add(Criteria.where("orders.countDay").gt(minDate));
+		}
+		if (maxDate != null) {
+			maxDate = DateUtil.reduceDay(maxDate, 1);
+			list.add(Criteria.where("orders.countDay").lte(maxDate));
+		}
+		
+		// 杞崲鏁扮粍
+		Criteria[] cas = new Criteria[list.size()];
+		for (int i = 0; i < list.size(); i++)
+			cas[i] = list.get(i);
+		// 鏌ヨ鍙傛暟
+		Criteria criteria = new Criteria().andOperator(cas);
+		
+            	
+        List<AggregationOperation> aggs = new ArrayList<>(); 
+        // 宸﹁繛鎺�
+        aggs.add(lookupToLots); 
+        // 鎷嗗垎瀛愭暟缁�
+        aggs.add(Aggregation.unwind("result"));
+        // 鏉′欢鍖归厤
+        aggs.add(Aggregation.match(criteria));  
+        // 闇�瑕佽繑鍥炵殑瀛楁
+        aggs.add(Aggregation.project().and("workerUid").as("workerUid").and("level").as("level")
+        		.and("result.firstNum").as("number"));
+        // 鍒嗙粍姹傚拰骞惰繑鍥�
+        aggs.add(Aggregation.group("workerUid").first("workerUid").as("workerUid").first("level").as("level")
+        		.sum("number").as("number")); 
+        // 鎺掑簭
+        aggs.add(Aggregation.sort(new Sort(Sort.Direction.DESC, "number")));  
+        aggs.add(Aggregation.limit(10));  
+        
+        // 缁勭粐鏉′欢
+        Aggregation agg = Aggregation.newAggregation(aggs);  
+        // 鎵ц鏌ヨ
+        AggregationResults<BasicDBObject> results = mongoTemplate.aggregate(agg, "threeSaleDetail", BasicDBObject.class);
+       
+        // 杩斿洖缁撴灉澶勭悊
+        List<BasicDBObject> livevideo  = results.getMappedResults();
+        
+        List<OrderRankingVO> resultList = new ArrayList<>();
+        for (BasicDBObject obj : livevideo) {
+			Object object = obj.get("workerUid");
+			if (object == null) {
+				continue;
+			}
+			
+			OrderRankingVO vo = new OrderRankingVO();
+			vo.setUid(new BigDecimal(obj.get("workerUid").toString()).longValue());
+			vo.setGrade(new BigDecimal(obj.get("level").toString()).intValue());
+			vo.setNumber(new BigDecimal(obj.get("number").toString()).intValue());
+			resultList.add(vo);	
+		}
+        return resultList;
+	}
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
index 911bbd4..9eb5d29 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -64,6 +64,7 @@
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
 import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
 import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
@@ -1796,7 +1797,7 @@
 
 		try {
 			Date now = new Date();
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 			ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
 			params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
 			for (GoodsEvaluate goodsEvaluate : list) {
@@ -1822,7 +1823,7 @@
 							if (commentInfoEnum != null && commentInfoEnum == CommentInfoEnum.currencyCoupon) {
 								String endTime = commentInfo.getEndTime();
 								if (!StringUtil.isNullOrEmpty(endTime)) {
-									Date endDay = sdf.parse(endTime);
+									Date endDay = format.parse(endTime);
 									if (endDay.getTime() < now.getTime()) {
 										goodsEvaluate.setState(0); // 娲诲姩杩囨湡
 									}
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java
index 44c2e3c..2bfe4ce 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneyDailyCountServiceImpl.java
@@ -14,6 +14,7 @@
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 @Service
 public class OrderMoneyDailyCountServiceImpl implements OrderMoneyDailyCountService {
@@ -134,4 +135,8 @@
 		return orderMoneyDailyCountDao.sumTeamOrderNumGroupByUid(uid, minDay, maxDay);
 	}
 	
+	@Override
+	public List<OrderRankingVO> getRankingByOrderNum(Long uid, Date minDay, Date maxDay) {
+		return orderMoneyDailyCountDao.getRankingByOrderNum(uid, minDay, maxDay);
+	}
 }
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 3d914b5..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,7 +49,6 @@
 	@Resource
 	private ThreeSaleDetailService threeSaleDetailService;
 	
-	
 	 
 	
 	@Override
@@ -59,16 +63,16 @@
 		info.setUpdateTime(new Date());
 		previewInfoDao.save(info);
 		
-		if (type == PreviewEnum.extractRecord) {
+		if (type == PreviewEnum.extractRecord || type == PreviewEnum.moneyArrival) {
 			return;
 		}
 		
+		// redis缂撳瓨
 		if (StringUtil.isNullOrEmpty(content)) {
 			removePreview(preUid, type);
 		} else {
 			adddPreview(preUid, type, content);
 		}
-		
 	}
 	
 	// 缂撳瓨10鍒嗛挓
@@ -242,22 +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(time))
+		if(StringUtil.isNullOrEmpty(orderNo))
 			throw new PreviewInfoException(1, "璇疯緭鍏ヨ鍗曞彿");
 		if(StringUtil.isNullOrEmpty(time))
 			throw new PreviewInfoException(1, "璇疯緭鍏ュ垱寤烘椂闂�");
-		Date parse = TimeUtil.parseDotCommon2(time);
-		if (parse == null)
+		Date date = TimeUtil.parseDotCommon2(time);
+		if (date == null)
 			throw new PreviewInfoException(1, "璇疯緭鍏ユ纭殑鏃堕棿鏍煎紡锛屽锛�2020.01.01 01:01");
 		
+		// 杞崲鏍煎紡
+		time = TimeUtil.formatYMDHHMM(date);
 		
-		String content = ""; // TODO
-		// save(uid, PreviewEnum.moneyArrival, gson.toJson(infoVO));
-		return content;
+		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();
 	}
 }
+	
+	
+	 
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java
index 6282da5..e0a5889 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/TeamDailyRecordServiceImpl.java
@@ -15,6 +15,7 @@
 import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.TimeUtil;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 @Service
 public class TeamDailyRecordServiceImpl implements TeamDailyRecordService {
@@ -128,4 +129,8 @@
 		return teamDailyRecordDao.sumTeamNumGroupByUid(uid, minDay, maxDay);
 	}
 	
+	@Override
+	public List<OrderRankingVO> getRankingByFirstNum(Long uid, Date minDay, Date maxDay) {
+		return teamDailyRecordDao.getRankingByFirstNum(uid, minDay, maxDay);
+	}
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java b/fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java
index b64802a..c5f43eb 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderMoneyDailyCountService.java
@@ -4,6 +4,7 @@
 import java.util.List;
 
 import com.yeshi.fanli.entity.order.OrderMoneyDailyCount;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 public interface OrderMoneyDailyCountService {
 
@@ -93,5 +94,14 @@
 
 	public List<OrderMoneyDailyCount> sumTeamOrderNumGroupByUid(Long uid, Date minDay, Date maxDay);
 
+	/**
+	 * 鎴戠殑璁㈠崟鎺掕姒�
+	 * @param uid
+	 * @param minDay
+	 * @param maxDay
+	 * @return
+	 */
+	public List<OrderRankingVO> getRankingByOrderNum(Long uid, Date minDay, Date maxDay);
+
 	
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/PreviewInfoService.java b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/PreviewInfoService.java
index 7b239db..9d4b6c5 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/PreviewInfoService.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/PreviewInfoService.java
@@ -59,7 +59,7 @@
 	 * @param orderNo
 	 * @throws PreviewInfoException
 	 */
-	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;
 
 	public void saveMoneyInfo(Long uid, MoneyStatisticVO vo) throws PreviewInfoException;
 
@@ -77,4 +77,5 @@
 	 * @throws PreviewInfoException
 	 */
 	public void previewExtractRecord(Long uid) throws PreviewInfoException;
+
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java
index 4945b98..acb28a2 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/TeamDailyRecordService.java
@@ -5,6 +5,7 @@
 
 import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
 import com.yeshi.fanli.exception.user.TeamDailyRecordException;
+import com.yeshi.fanli.vo.order.OrderRankingVO;
 
 public interface TeamDailyRecordService {
 
@@ -63,4 +64,13 @@
 
 
 	public List<TeamDailyRecord> sumTeamNumGroupByUid(Long uid, Date minDay, Date maxDay);
+
+	/**
+	 * 閭�璇锋帓琛屾
+	 * @param uid
+	 * @param minDay
+	 * @param maxDay
+	 * @return
+	 */
+	public List<OrderRankingVO> getRankingByFirstNum(Long uid, Date minDay, Date maxDay);
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
index ef5a634..ebbcd09 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
@@ -2572,7 +2572,204 @@
 			}
 		}
 		return null;
+	}
+	
+	
+	
+	/**
+	 * 瀹夊崜-鏀粯瀹濈敾鍥�
+	 * @param money
+	 * @param orderNo
+	 * @param time
+	 * @param targetPath
+	 * @return
+	 * @throws IOException
+	 */
+	public static InputStream drawAlipayAndroid(BigDecimal money, String orderNo, String time) throws IOException {
+		String bgpic = "image/alipay/android.png";
+		BufferedImage bgImage = ImageIO.read(ImageUtil.class.getClassLoader().getResourceAsStream(bgpic));
+		
+		final BufferedImage targetImg = new BufferedImage(bgImage.getWidth(), bgImage.getHeight(), BufferedImage.TYPE_INT_RGB);
+		HashMap<Key, Object> mapH = new HashMap<Key, Object>();
+		mapH.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 鎶楅敮榻柯狅紙鎶楅敮榻挎�诲紑鍏筹級聽聽
+		mapH.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);// 鏂囧瓧鎶楅敮榻柯�
 
+		// 鐢� 鑳屾櫙鍥剧墖
+		final Graphics2D g2d = targetImg.createGraphics();
+		g2d.setRenderingHints(mapH);
+		g2d.drawImage(bgImage, 0, 0, bgImage.getWidth(), bgImage.getHeight(), null);
+		g2d.setBackground(Color.BLACK);
+		
+		// 瀛椾綋
+		String os = System.getProperty("os.name");
+		String fontRob0to = "/usr/share/fonts/ROBOTO-REGULAR.TTF";
+		String fontBahnschrift = "/usr/share/fonts/BAHNSCHRIFT.TTF";
+		if (os.toLowerCase().startsWith("win")) {
+			fontRob0to = "D:/ROBOTO-REGULAR.TTF";
+			fontBahnschrift = "D:/BAHNSCHRIFT.TTF";
+		}
+		
+		// 瀛椾綋澶у皬
+		Font font40 = null;
+		Font font42 = null;
+		Font font86 = null;
+		try {
+			font40 = Font.createFont(Font.PLAIN, new File(fontRob0to)).deriveFont(40.00f);
+			font42 = Font.createFont(Font.PLAIN, new File(fontBahnschrift)).deriveFont(42.00f);
+			font86 = Font.createFont(Font.PLAIN, new File(fontRob0to)).deriveFont(86.68f);
+		} catch (FontFormatException e) {
+			e.printStackTrace();
+		}
+		
+		
+		/*  鏃堕棿淇℃伅   */
+		g2d.setFont(font42);
+		g2d.setColor(new Color(247, 247, 247));
+		g2d.drawString(TimeUtil.formatHHMM_12H(new Date()), 134, 67);
+		
+		
+		/*  璧勯噾淇℃伅   */
+		String moneyInfo = "+" + money.setScale(2);
+		// 璁$畻闀垮害
+		FontMetrics fm = g2d.getFontMetrics(font86);
+		int textLength = fm.stringWidth(moneyInfo);
+		// 灞呬腑浣嶇疆
+		int x_money =  (bgImage.getWidth() - textLength) / 2 ;
+		// 鐢婚噾棰�
+		g2d.setFont(font86);
+		g2d.setColor(new Color(51, 51, 51));
+		g2d.drawString(moneyInfo, x_money, 420);
+
+		
+		/*  鍒涘缓鏃堕棿淇℃伅   */
+		FontMetrics fm2 = g2d.getFontMetrics(font40);
+		int l_time = fm2.stringWidth(time);
+		int x_time =  bgImage.getWidth() - l_time -41  ;
+		g2d.setFont(font40);
+		g2d.setColor(new Color(51, 51, 51));
+		g2d.drawString(time, x_time, 972);
+
+		/*  鍒涘缓鏃堕棿淇℃伅   */
+		int l_order = fm2.stringWidth(orderNo);
+		int x_order =  bgImage.getWidth() - l_order -41  ;
+		g2d.setFont(font40);
+		g2d.setColor(new Color(51, 51, 51));
+		g2d.drawString(orderNo, x_order, 1072);
+		g2d.dispose();
+
+		ByteArrayOutputStream aos = new ByteArrayOutputStream();
+		ImageIO.write(targetImg, "png", aos);
+		
+		return new ByteArrayInputStream(aos.toByteArray());
+	}
+
+	
+	
+	/**
+	 * IOS 鏀粯瀹濈敾鍥�
+	 * @param money
+	 * @param orderNo
+	 * @param time
+	 * @param targetPath
+	 * @return
+	 * @throws IOException
+	 */
+	public static InputStream drawAlipayIOS(BigDecimal money, String orderNo, String time)
+			throws IOException {
+		String bgpic = "image/alipay/ios.png";
+		BufferedImage bgImage = ImageIO.read(ImageUtil.class.getClassLoader().getResourceAsStream(bgpic));
+
+		final BufferedImage targetImg = new BufferedImage(bgImage.getWidth(), bgImage.getHeight(),
+				BufferedImage.TYPE_INT_RGB);
+		HashMap<Key, Object> mapH = new HashMap<Key, Object>();
+		mapH.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);// 鎶楅敮榻柯狅紙鎶楅敮榻挎�诲紑鍏筹級聽聽
+		mapH.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);// 鏂囧瓧鎶楅敮榻柯�
+
+		// 鐢� 鑳屾櫙鍥剧墖
+		final Graphics2D g2d = targetImg.createGraphics();
+		g2d.setRenderingHints(mapH);
+		g2d.drawImage(bgImage, 0, 0, bgImage.getWidth(), bgImage.getHeight(), null);
+		g2d.setBackground(Color.BLACK);
+
+		// 瀛椾綋
+		String os = System.getProperty("os.name");
+		String fontHeiTi = "/usr/share/fonts/AdobeHeiTiStd.otf";
+		String fontSquare = "/usr/share/fonts/SquareHeitiStd.TTF";
+		if (os.toLowerCase().startsWith("win")) {
+			fontHeiTi = "D:/AdobeHeiTiStd.otf";
+			fontSquare = "D:/SquareHeitiStd.TTF";
+		}
+		
+		// 瀛椾綋澶у皬
+		Font font40 = null;
+		Font font44 = null;
+		Font font92 = null;
+		try {
+			font44 = Font.createFont(Font.PLAIN, new File(fontHeiTi)).deriveFont(44.18f);
+			font40 = Font.createFont(Font.PLAIN, new File(fontSquare)).deriveFont(40.00f);
+			font92 = Font.createFont(Font.PLAIN, new File(fontSquare)).deriveFont(92.03f);
+		} catch (FontFormatException e) {
+			e.printStackTrace();
+		}
+		/* 鏃堕棿淇℃伅 */
+		g2d.setFont(font44);
+		g2d.setColor(new Color(16, 16, 16));
+		MyDrawString(TimeUtil.formatHHMM_12H(new Date()), 82, 82, font44, g2d);
+ 
+	        
+		/* 璧勯噾淇℃伅 */
+		String moneyInfo = "+" + money.setScale(2);
+		// 璁$畻闀垮害
+		FontMetrics fm = g2d.getFontMetrics(font92);
+		int textLength = fm.stringWidth(moneyInfo);
+		// 灞呬腑浣嶇疆
+		int x_money = (bgImage.getWidth() - textLength) / 2;
+		// 鐢婚噾棰�
+		g2d.setFont(font92);
+		g2d.setColor(new Color(51, 51, 51));
+		g2d.drawString(moneyInfo, x_money, 480);
+
+		/* 鍒涘缓鏃堕棿淇℃伅 */
+		FontMetrics fm2 = g2d.getFontMetrics(font40);
+		int l_time = fm2.stringWidth(time);
+		int x_time = bgImage.getWidth() - l_time - 41;
+		g2d.setFont(font40);
+		g2d.setColor(new Color(51, 51, 51));
+		g2d.drawString(time, x_time, 1052);
+		
+		/* 鍒涘缓鏃堕棿淇℃伅 */
+		int l_order = fm2.stringWidth(orderNo);
+		int x_order = bgImage.getWidth() - l_order - 41;
+		g2d.setFont(font40);
+		g2d.setColor(new Color(51, 51, 51));
+		g2d.drawString(orderNo, x_order, 1160);
+
+		g2d.dispose();
+
+		ByteArrayOutputStream aos = new ByteArrayOutputStream();
+		ImageIO.write(targetImg, "png", aos);
+		return new ByteArrayInputStream(aos.toByteArray());
+	}
+
+	public static void MyDrawString(String str,int x,int y, Font font40, Graphics2D g2d){
+		int i = 0;
+		int x_next = x;
+		String tempStr= null;
+		while(str.length()>0)
+		{
+			tempStr=str.substring(0, 1);
+			str=str.substring(1, str.length());
+			g2d.drawString(tempStr, x_next, y);
+			
+			if (i == 1) {
+				x_next += 3 +  22;
+			} else if (i == 2) {
+				x_next += 10;
+			} else {
+				x_next += 0 + 22;
+			}
+			i++;
+		}
 	}
 
 }
diff --git a/fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java
index 605725c..b9f4145 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java
@@ -181,6 +181,23 @@
 		return date;
 	}
 	
+	public static String formatHHMM_12H(Date time) {
+		SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
+		String date = sdf.format(time);
+		return date;
+	}
+	
+	public static String formatYMDHHMM(Date date) {
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+		try {
+			return sdf.format(date);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+	
+	
 	public static String formatDateAddT(Date date) {
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
 		try {
diff --git a/fanli/src/main/java/com/yeshi/fanli/vo/order/OrderRankingVO.java b/fanli/src/main/java/com/yeshi/fanli/vo/order/OrderRankingVO.java
new file mode 100644
index 0000000..6969167
--- /dev/null
+++ b/fanli/src/main/java/com/yeshi/fanli/vo/order/OrderRankingVO.java
@@ -0,0 +1,51 @@
+package com.yeshi.fanli.vo.order;
+
+
+public class OrderRankingVO {
+	private Long uid;
+	private String nickName;
+	private String portrait;
+	private Integer number; // 鏁伴噺
+	private Integer grade;// 绗嚑绾ч槦鍛�
+
+	public Long getUid() {
+		return uid;
+	}
+
+	public void setUid(Long uid) {
+		this.uid = uid;
+	}
+
+	public String getNickName() {
+		return nickName;
+	}
+
+	public void setNickName(String nickName) {
+		this.nickName = nickName;
+	}
+
+	public String getPortrait() {
+		return portrait;
+	}
+
+	public void setPortrait(String portrait) {
+		this.portrait = portrait;
+	}
+	 
+	public Integer getNumber() {
+		return number;
+	}
+
+	public void setNumber(Integer number) {
+		this.number = number;
+	}
+
+	public Integer getGrade() {
+		return grade;
+	}
+
+	public void setGrade(Integer grade) {
+		this.grade = grade;
+	}
+
+}
diff --git a/fanli/src/main/resource/image/alipay/android.png b/fanli/src/main/resource/image/alipay/android.png
new file mode 100644
index 0000000..d0fbe22
--- /dev/null
+++ b/fanli/src/main/resource/image/alipay/android.png
Binary files differ
diff --git a/fanli/src/main/resource/image/alipay/ios.png b/fanli/src/main/resource/image/alipay/ios.png
new file mode 100644
index 0000000..21eb07c
--- /dev/null
+++ b/fanli/src/main/resource/image/alipay/ios.png
Binary files differ
diff --git a/pom.xml b/pom.xml
index 2978640..eea953d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,10 @@
 		<org.hibernate.version>4.1.2</org.hibernate.version>
 		<org.springframework-version>4.3.0.RELEASE</org.springframework-version>
 		<mybatis.version>3.4.1</mybatis.version>
-		<spring.mongodb.version>1.9.8.RELEASE</spring.mongodb.version>
+		<!-- <spring.mongodb.version>1.9.8.RELEASE</spring.mongodb.version> -->
+		<spring.mongodb.version>1.10.10.RELEASE</spring.mongodb.version>
+		
+		
 	</properties>
 	<profiles>
 		<profile>
diff --git a/utils/src/main/java/org/yeshi/utils/DateUtil.java b/utils/src/main/java/org/yeshi/utils/DateUtil.java
index 0b84ec1..915a83b 100644
--- a/utils/src/main/java/org/yeshi/utils/DateUtil.java
+++ b/utils/src/main/java/org/yeshi/utils/DateUtil.java
@@ -336,6 +336,13 @@
 		return ca.getTime();
 	}
 	
+	public static Date reduceDay(Date currdate, int num) {
+		Calendar ca = Calendar.getInstance();
+		ca.setTime(currdate);
+		ca.add(Calendar.DATE, -num);
+		return ca.getTime();
+	}
+	
 	/**
 	 * 鎸囧畾鏃ユ湡鍑忓幓澶╂暟鍚庣殑鏃ユ湡
 	 * 

--
Gitblit v1.8.0