From 61d4579d924895c009bc0b158104e45b4668ffbe Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期一, 26 八月 2019 16:33:40 +0800
Subject: [PATCH] 券修改
---
fanli/src/main/java/com/yeshi/fanli/service/impl/count/UserInfoCountServiceImpl.java | 243 +++++++++++++++++++++++++++++++++++-------------
1 files changed, 175 insertions(+), 68 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/count/UserInfoCountServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/count/UserInfoCountServiceImpl.java
index 6a31d04..e07e639 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/count/UserInfoCountServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/count/UserInfoCountServiceImpl.java
@@ -1,9 +1,9 @@
package com.yeshi.fanli.service.impl.count;
-import java.text.SimpleDateFormat;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
import java.util.ArrayList;
-import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -34,7 +34,7 @@
}
@Override
- public double countAllMoney(Double rank) {
+ public BigDecimal countAllMoney(Double rank) {
return userInfoMapper.countAllMoney(rank);
}
@@ -49,132 +49,239 @@
return userInfoMapper.countHasOrderUser();
}
- public List<Object> countNewUserByDate(Integer type,String years, String startTime,
+ @Override
+ public List<Map<String, Object>> countNewUserByDate(String channel,Integer type,String years, String startTime,
String endTime) throws Exception {
- List<Map<String, Object>> list = userInfoMapper.countNewUserByDate(type, years, startTime, endTime);
+ return userInfoMapper.countNewUserByDate(channel, type, years, startTime, endTime);
- if (list == null || list.size() == 0) {
- return null;
- }
-
- switch (type){
- case 1: // 鎸夊ぉ澶勭悊
- return dayFactory(startTime, endTime, list);
- case 2: // 鎸夋湀澶勭悊
- return monthFactory(list);
- case 3:
- return yearFactory(list);
- default:
- return null;
- }
}
-
- public List<Object> dayFactory(String startTime, String endTime, List<Map<String, Object>> list) throws Exception {
-
- List<Object> listObject = new ArrayList<Object>();
-
- if (startTime.equals(endTime)) {
+ @Override
+ public List<Map<String, Object>> getTodayBuyRate(String channel, Integer dateType,String years, String startTime,
+ String endTime) throws Exception {
+
+ List<Map<String, Object>> result_list = null;
+
+ List<Map<String, Object>> listToday =
+ userInfoMapper.getTodayHasOrder(channel, dateType, years, startTime, endTime);
+
+ if (listToday == null || listToday.size() == 0) {
+ return result_list;
+ }
+
+ List<Map<String, Object>> listTotal =
+ userInfoMapper.countNewUserByDate(channel, dateType, years, startTime, endTime);
+
+ if (listTotal == null || listTotal.size() == 0) {
+ return result_list;
+ }
+
+ switch (dateType){
+ case 1: // 鎸夊ぉ澶勭悊
+ result_list = dayFactory(startTime, endTime, listTotal);
+ break;
+ case 2: // 鎸夋湀澶勭悊
+ result_list = monthFactory(listTotal);
+ break;
+ case 3:
+ result_list = yearFactory(listTotal);
+ break;
+ default:
+ break;
+ }
+
+ DecimalFormat df = new DecimalFormat("#.00");
+
+ for (int i = 0; i < result_list.size(); i++) {
+ double proportion = 0;
+ Map<String, Object> resultMap = result_list.get(i);
+ Object showDate = resultMap.get("showDate");
+
+ for (int j = 0; j < listToday.size(); j++) {
+
+ Map<String, Object> innerMap = listToday.get(j);
+ Object innerDate = innerMap.get("showDate");
+
+ if (innerDate != null && innerDate.toString().equals(showDate.toString())) {
+ Object innerValue = innerMap.get("showValue");
+ long innerData = Long.parseLong(innerValue.toString());
+
+ Object showValue = resultMap.get("showValue");
+ long showData = Long.parseLong(showValue.toString());
+
+ if (showData > 0) {
+ proportion = innerData/(double)showData;
+ }
+
+ break; // 缁撴潫鍐呴儴寰幆
+ }
+ }
+
+ resultMap.put("showValue", Double.parseDouble(df.format(proportion *100)));
+ }
+
+ return result_list;
+ }
+
+
+ @Override
+ public List<Object> getWeekBuyRate(String channel, String startTime, String endTime,
+ Integer orderNum, List<String> dateList)
+ throws Exception {
+
+ List<Object> resultList = new ArrayList<Object>();
+
+ if (dateList == null || dateList.size() == 0) {
+ return resultList;
+ }
+
+ List<Map<String, Object>> totalList = userInfoMapper.countNewUserByDate(channel, 1, null, startTime, endTime);
+ if (totalList == null || totalList.size() == 0) {
+ return resultList;
+ }
+
+ DecimalFormat df = new DecimalFormat("#.00");
+ for (int i = 0; i < dateList.size(); i++) {
+ double proportion = 0;
+
+ String showDate = dateList.get(i);
+ String plusDay = DateUtil.plusDay(7, showDate);
+ Map<String, Object> map = userInfoMapper.getWeekHasOrder(channel, showDate, plusDay, orderNum);
+
+ Object showValue = null;
+ if (map != null) {
+ showValue = map.get("showValue");
+
+ if (showValue != null) {
+ for (int j = 0; j < totalList.size(); j++) {
+ Map<String, Object> mapTotal = totalList.get(j);
+ String reslutTime = mapTotal.get("showDate").toString();
+ if (showDate.equalsIgnoreCase(reslutTime)) {
+ Object totalObject = mapTotal.get("showValue");
+
+ long hasCount = Long.parseLong(showValue.toString());
+ long total = Long.parseLong(totalObject.toString());
+
+ if (total > 0) {
+ proportion = hasCount / (double) total;
+ }
+
+ break;
+ }
+ }
+ }
+ }
+ resultList.add(Double.parseDouble(df.format(proportion * 100)));
+ }
+
+ return resultList;
+ }
+
+
+ public List<Map<String, Object>> dayFactory(String startTime, String endTime, List<Map<String, Object>> list) throws Exception {
+
+ List<Map<String, Object>> listObject = new ArrayList<Map<String, Object>>();
+
+ if (startTime.equals(endTime)) {
+
Map<String, Object> map = list.get(0);
- Object total = map.get("total");
+ Object total = map.get("showValue");
if (total == null) {
- map.put("payMoney", 0);
+ map.put("showValue", 0);
}
listObject.add(map);
return listObject;
}
-
-
+
String plusDay = "";
- for (int i = 0; i < 1000 ; i++) {
+ for (int i = 0; i < 1000; i++) {
if (i == 0) {
plusDay = startTime;
} else {
plusDay = DateUtil.plusDay(i, startTime);
}
-
+
Map<String, Object> mapObject = new HashMap<String, Object>();
Object total = null;
-
+
for (int j = 0; j < list.size(); j++) {
Map<String, Object> map = list.get(j);
- Object createDate = map.get("createDate");
+ Object createDate = map.get("showDate");
String month = createDate.toString();
if (plusDay.equalsIgnoreCase(month)) {
- total = map.get("total");
+ total = map.get("showValue");
break;
}
}
-
+
if (total == null) {
total = 0;
}
- mapObject.put("total", total);
-
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
- Date parseDate = sdf.parse(plusDay.toString());
-
- mapObject.put("createDate", sdf2.format(parseDate));
-
+ mapObject.put("showValue", total);
+
+ mapObject.put("showDate", plusDay);
+
listObject.add(mapObject);
-
+
if (plusDay.equals(endTime)) {
break; // 鏃堕棿缁撴潫
}
}
-
+
return listObject;
}
-
-
- public List<Object> monthFactory(List<Map<String, Object>> list) {
-
- List<Object> listObject = new ArrayList<Object>();
+
+ public List<Map<String, Object>> monthFactory(List<Map<String, Object>> list) {
+
+ List<Map<String, Object>> listObject = new ArrayList<Map<String, Object>>();
// 12 涓湀澶勭悊
for (int i = 1; i <= 12; i++) {
Map<String, Object> mapObject = new HashMap<String, Object>();
Object total = null;
-
+
for (int j = 0; j < list.size(); j++) {
Map<String, Object> map = list.get(j);
- Object createDate = map.get("createDate");
+ Object createDate = map.get("showDate");
String month = createDate.toString();
- if ((i+"").equalsIgnoreCase(month) || i == Integer.parseInt(month)) {
- total = map.get("total");
+ if ((i + "").equalsIgnoreCase(month) || i == Integer.parseInt(month)) {
+ total = map.get("showValue");
break;
}
}
-
+
if (total == null) {
total = 0;
}
- mapObject.put("total", total);
+ mapObject.put("showValue", total);
- mapObject.put("createDate", i + "鏈�");
-
+ if (i <10) {
+ mapObject.put("showDate", "0"+ i);
+ } else {
+ mapObject.put("showDate", i);
+ }
+
listObject.add(mapObject);
}
return listObject;
}
-
- public List<Object> yearFactory(List<Map<String, Object>> list) {
-
- List<Object> listObject = new ArrayList<Object>();
-
+
+ public List<Map<String, Object>> yearFactory(List<Map<String, Object>> list) {
+
+ List<Map<String, Object>> listObject = new ArrayList<Map<String, Object>>();
+
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
- Object total = map.get("total");
-
+ Object total = map.get("showValue");
+
if (total == null) {
total = 0;
}
- map.put("total", total);
-
+ map.put("showValue", total);
+
listObject.add(map);
}
-
+
return listObject;
}
--
Gitblit v1.8.0