From b42e88afc77b0d40ea8bbad87df6cc22d03414e1 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期一, 14 一月 2019 18:03:13 +0800 Subject: [PATCH] 后台订单统计 用户统计 --- fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java | 424 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 416 insertions(+), 8 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java b/fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java index 832e806..c05f24f 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java @@ -4,7 +4,9 @@ import java.io.FileInputStream; import java.io.InputStream; import java.io.PrintWriter; +import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; @@ -14,6 +16,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -25,10 +28,14 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import com.yeshi.fanli.controller.admin.utils.AdminUtils; import com.yeshi.fanli.entity.admin.UserInfoAdmin; +import com.yeshi.fanli.entity.bus.user.AccountDetails; import com.yeshi.fanli.entity.bus.user.Extract; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.MoneyRecord; @@ -50,6 +57,7 @@ import com.yeshi.fanli.service.inter.user.ExtractService; import com.yeshi.fanli.service.inter.user.MoneyRecordService; import com.yeshi.fanli.service.inter.user.ScanHistoryService; +import com.yeshi.fanli.service.inter.user.UserActiveLogService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; @@ -57,7 +65,6 @@ import com.yeshi.fanli.util.HongBaoUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; -import org.yeshi.utils.JsonUtil; @Controller @RequestMapping("admin/new/api/v1/user") @@ -103,6 +110,9 @@ @Resource private UserInfoCountService userInfoCountService; + + @Resource + private UserActiveLogService userActiveLogService; @RequestMapping(value = "getUserList", method = RequestMethod.POST) @@ -649,8 +659,6 @@ return; } - //double sumMoney = userInfoService.querySumMoney(key, userType, days, startTime, endTime); - long count = userInfoService.queryCount(key, userType, days, startTime, endTime); int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); @@ -698,7 +706,7 @@ long countGold = userInfoCountService.countRank(3); // 缁熻鎵�鏈夋�婚噾棰� - double countTotalMoney = userInfoCountService.countAllMoney(null); + BigDecimal countTotalMoney = userInfoCountService.countAllMoney(null); // 缁熻鎵�鏈夊彲鎻愮幇閲戦 String minMoney = configService.get(Constant.EXTRACT_MIN_MONEY); @@ -706,7 +714,7 @@ minMoney = "20"; double min = Double.parseDouble(minMoney); - double countCanAssets = userInfoCountService.countAllMoney(min); + BigDecimal countCanAssets = userInfoCountService.countAllMoney(min); JSONObject data = new JSONObject(); data.put("countTotal", countTotal); @@ -1024,10 +1032,410 @@ } } - public static void main(String[] args) { + + + /** + * 闃熷憳鍏崇郴 + * @param pageIndex + * @param key + * @param state + * @param startTime + * @param endTime + * @param out + */ + @RequestMapping(value = "getRelationList") + public void getRelationList(String callback, Integer pageIndex, Integer pageSize, Long uid, Integer type, + Integer state, String startTime, String endTime, PrintWriter out) { - java.lang.System.out.println(java.lang.System.currentTimeMillis()); + if (pageIndex == null || pageIndex < 1) { + pageIndex = 1; + } + + if (pageSize == null || pageSize < 1) { + pageSize = Constant.PAGE_SIZE; + } + + try { + + if (!StringUtil.isNullOrEmpty(endTime)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Date enddate = sdf.parse(endTime); + Calendar c = Calendar.getInstance(); + c.setTime(enddate); + c.add(Calendar.DAY_OF_MONTH, 1);// 浠婂ぉ+1澶� + endTime = sdf.format(c.getTime()); + } + + List<ThreeSale> listQuery = null; + if (type == 0) { + // 涓婄骇鐢ㄦ埛 + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏌ヨ涓婄骇闇�杈撳叆鐢ㄦ埛id")); + return; + } + listQuery = threeSaleService.listSuperiorQuery((pageIndex - 1) * pageSize, pageSize, state, uid); + } else if (type == 1) { + // 涓�绾х敤鎴� + listQuery = threeSaleService.listFirstTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, + state, startTime, endTime); + } else if (type == 2) { + // 浜岀骇鐢ㄦ埛 + listQuery = threeSaleService.listSecondTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, + state, startTime, endTime); + } + + if (listQuery == null || listQuery.size() == 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏆傛棤鏁版嵁")); + return; + } + + for (ThreeSale threeSale: listQuery) { + Integer expire = threeSale.getExpire(); + if (threeSale.getState()) { + threeSale.setExpire(1); // 閭�璇锋垚鍔� + } else { + if (expire != null && expire == 1) { + threeSale.setExpire(2); // 閭�璇峰け鏁� + } else { + threeSale.setExpire(0);// 宸查個璇� + } + } + } + + long count = 0; + if (type == 0) { + // 涓婄骇鐢ㄦ埛 + count = threeSaleService.countSuperiorQuery(state, uid); + } else if (type == 1) { + // 涓�绾х敤鎴� + count = threeSaleService.countFirstTeamQuery(uid, state, startTime, endTime); + } else if (type == 2) { + // 浜岀骇鐢ㄦ埛 + count = threeSaleService.countSecondTeamQuery(uid, state, startTime, endTime); + } + + int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); + + JSONObject data = new JSONObject(); + data.put("pe", pe); + data.put("result_list", listQuery); + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏌ヨ澶辫触")); + e.printStackTrace(); + } } -} + /** + * 鐢ㄦ埛璐︽埛鏄庣粏 + * @param callback + * @param pageIndex + * @param pageSize + * @param id + * @param out + */ + @RequestMapping(value = "getAccountDetails") + public void getAccountDetails(String callback, Integer pageIndex,Integer pageSize, Long uid, PrintWriter out) { + if (pageIndex == null || pageIndex < 1) { + pageIndex = 1; + } + + if (pageSize == null || pageSize < 1) { + pageSize = Constant.PAGE_SIZE; + } + + if (uid == null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇蜂紶閫掓纭暟鎹�")); + return; + } + + try { + + List<AccountDetails> detailsList = accountDetailsService.findAccountDetailsList(uid, pageIndex); + if (detailsList == null || detailsList.size() == 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏆傛棤鏁版嵁")); + return; + } + + int count = accountDetailsService.getCount(uid); + + int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); + + + JSONObject data = new JSONObject(); + data.put("pe", pe); + data.put("result_list", GsonUtil.toJsonExpose(detailsList)); + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + e.printStackTrace(); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鏌ヨ澶辫触")); + } + } + + /** + * 鏍规嵁娓犻亾 缁熻褰撴棩鏂板鐢ㄦ埛鏁伴噺 + * @param channelArray 鍚嶅瓧鏁扮粍 + * @param dateType 绫诲瀷 1鏃� 2鏈� 3骞� + * @param year 2018 + * @param startTime 2018-12-01 + * @param endTime 2018-12-01 + * @param out + */ + @RequestMapping(value = "getNewUserCharts") + public void getNewUserCharts(String callback, String channelArray, Integer dateType, + String year, String startTime, String endTime, PrintWriter out) { + + + String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime); + if (validateMsg != null) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg)); + return; + } + + if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) { + startTime = null; + endTime = null; + } + + List<String> channelList = null; + if (channelArray != null && channelArray.trim().length() > 0) { + Gson gson = new Gson(); + channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType()); + } + + if (channelList == null || channelList.size() == 0) { + channelList = new ArrayList<String>(); + channelList.add("all"); + } + + + if (dateType == 1 && year != null) { + year = null; // 璁剧疆涓虹┖ + } else if (dateType == 2) { + if (startTime != null) + startTime = null; + + if (endTime != null) + endTime = null; + + } else if (dateType == 3) { + if (year != null) + year = null; + + if (startTime != null) + startTime = null; + + if (endTime != null) + endTime = null; + } + + + try { + + Gson gson = new Gson(); + Object objectDate = null; + List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year); + + JSONArray line_list = new JSONArray(); + for (String channel : channelList) { + + List<Map<String, Object>> list = userInfoCountService.countNewUserByDate(channel, + dateType, year, startTime, endTime); + + if ("all".equalsIgnoreCase(channel)) { + channel = "鎬昏"; + } + + JSONObject innerList = new JSONObject(); + innerList.put("name", channel); + + if (dateType != 3) { + innerList.put("data", gson.toJson(AdminUtils.dayOrMonthDataFactory(dateType, dateList, list))); + } else { + // 骞磋鍥� + Map<String, Object> map = AdminUtils.yearsDataFactory(list); + + if (objectDate == null) { + objectDate = map.get("date"); + } + innerList.put("data", gson.toJson(map.get("value"))); + } + + line_list.add(innerList); + } + + + JSONObject data = new JSONObject(); + if (objectDate != null) { + data.put("xAxis_list", gson.toJson(objectDate)); + } else { + data.put("xAxis_list", gson.toJson(dateList)); + } + + data.put("line_list", line_list); + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鎿嶄綔寮傚父")); + e.printStackTrace(); + } + } + + + /** + * 鏍规嵁娓犻亾 缁熻褰撴棩鏂板鐢ㄦ埛鏁伴噺 + * @param channelArray 鍚嶅瓧鏁扮粍 + * @param dateType 绫诲瀷 1鏃� 2鏈� 3骞� + * @param year 2018 + * @param startTime 2018-12-01 + * @param endTime 2018-12-01 + * @param out + */ + @RequestMapping(value = "getTodayBuyRate") + public void getTodayBuyRate(String callback, String channelArray, Integer dateType, + String year, String startTime, String endTime, Integer orderNum, PrintWriter out) { + + if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) { + startTime = null; + endTime = null; + } + + try { + + Gson gson = new Gson(); + List<String> list = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType()); + + if (list == null || list.size() == 0) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鍙傛暟鏍煎紡涓嶆纭�")); + return; + } + + JSONArray array = new JSONArray(); + + for (String channel: list) { + JSONObject channelData = new JSONObject(); + List<Object> resultList = null; + + //userActiveLogService.getBuyProportion(channel, dateType, year, startTime, endTime, orderNum); + if (resultList == null) { + resultList = new ArrayList<Object>(); + } + channelData.put("name", channel); + channelData.put("data_list", resultList); + array.add(channelData); + } + + JSONObject data = new JSONObject(); + data.put("result_list", array); + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鎿嶄綔寮傚父")); + e.printStackTrace(); + } + } + + + /** + * 褰撳懆浜х敓3鍗曠殑鏂板鐢ㄦ埛姒傜巼 + * @param callback + * @param channelArray 娓犻亾鍚嶇О + * @param startTime + * @param endTime + * @param orderNum 璁㈠崟鏁伴噺 + * @param out + */ + @RequestMapping(value = "getWeekProportion") + public void getWeekProportion(String callback, String channelArray, String startTime, String endTime, + Integer orderNum, PrintWriter out) { + + if (StringUtil.isNullOrEmpty(startTime) || StringUtil.isNullOrEmpty(endTime)) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("璇烽�夋嫨姝g‘鏃堕棿鍖洪棿")); + return; + } + + try { + + if (orderNum == null ) { + orderNum = 0; + } + + + List<String> channelList = null; + if (channelArray != null && channelArray.trim().length() > 0) { + Gson gson = new Gson(); + channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType()); + } + + if (channelList == null || channelList.size() == 0) { + channelList = new ArrayList<String>(); + channelList.add("all"); + } + + JSONArray array = new JSONArray(); + for (String channel : channelList) { + JSONObject channelData = new JSONObject(); + + + List<Map<String, Object>> resultList = null; + //userActiveLogService.countOneWeekUserInfo(channel, startTime, endTime, orderNum); + + if (resultList == null) { + resultList = new ArrayList<Map<String, Object>>(); + } + + if ("all".equalsIgnoreCase(channel)) { + channel = "鎬昏"; + } + + channelData.put("name", channel); + channelData.put("data_list", resultList); + array.add(channelData); + } + + JSONObject data = new JSONObject(); + data.put("result_list", array); + + } catch (Exception e) { + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("鎿嶄綔寮傚父")); + e.printStackTrace(); + } + } + + /** + * 鐢ㄦ埛缁熻 锛氭�荤敤鎴枫�佹祦澶辩敤鎴锋暟閲忋�佺疮璁℃湁璐拱鐢ㄦ埛鏁� + * @param callback + * @param out + */ + @RequestMapping(value = "countUser") + public void countUser(String callback, PrintWriter out) { + try { + // 鎬荤敤鎴� + long totalUser = userInfoCountService.countNewUser(null, null); + // 娴佸け鐢ㄦ埛鏁伴噺锛�180澶╂湭浣跨敤鐧诲綍骞朵笖鏃犱换浣曡祫閲戞祦鍔ㄧ殑璐﹀彿鏁伴噺锛� + long loseUser = userInfoCountService.countLoseUser(180); + // 绱鏈夎喘涔扮敤鎴锋暟 + long orderUser = userInfoCountService.countHasOrderUser(); + + JSONObject data = new JSONObject(); + data.put("totalUser", totalUser); + data.put("loseUser", loseUser); + data.put("orderUser", orderUser); + + JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); + } catch (Exception e) { + e.printStackTrace(); + JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("缁熻寮傚父")); + } + + } + +} -- Gitblit v1.8.0