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