package com.yeshi.fanli.controller.apph5; import java.io.PrintWriter; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.List; import javax.annotation.Resource; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserRankings; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; import com.yeshi.fanli.service.inter.user.UserRankingsService; import com.yeshi.fanli.util.annotation.RequestNoSignValidate; import org.yeshi.utils.JsonUtil; @Controller @RequestMapping("api/apph5/v1/rewardRank") public class AppH5UserRankingsController { @Resource private UserRankingsService userRankingsService; @Resource private HongBaoService hongBaoService; /** * 返利券排行榜 * @param callback * @param out */ //@RequestNoSignValidate() @RequestMapping(value = "getRank") public void getRank(String callback, PrintWriter out) { try { List userRankingsList = userRankingsService.query(0, 50, null, 1, null, 2); if (userRankingsList == null || userRankingsList.size() == 0) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult(2, "暂无相关数据"))); return; } DecimalFormat format = new DecimalFormat("0.00"); List rankingsList = new ArrayList(); for (UserRankings userRankings: userRankingsList) { RankInfo rankInfo = new RankInfo(); rankInfo.nickName = userRankings.getNickName(); rankInfo.portrait = userRankings.getPortrait(); rankInfo.showId = userRankings.getShowId(); rankInfo.reward = format.format(userRankings.getTradeReward()); rankingsList.add(rankInfo); } Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE,-1); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式 String defaultDate = sdf.format(calendar.getTime()); //格式化前一天 // 真实用户 List listHongBao = hongBaoService.listShareAndInviteMoney(0, 50, defaultDate); if (listHongBao != null && listHongBao.size() > 0) { HongBao hongBao = listHongBao.get(0); BigDecimal maxMoney = hongBao.getShareAndInviteMoney(); UserRankings userRankings = userRankingsList.get(userRankingsList.size()-1); BigDecimal mminMoney = userRankings.getTradeReward(); // 真实数据大于最低金额 if (maxMoney.compareTo(mminMoney) > 0 ) { for (HongBao hb: listHongBao) { BigDecimal rewardMoney = hb.getShareAndInviteMoney(); // 奖金高到低排序,不满足结束循环 if (rewardMoney.compareTo(mminMoney) <= 0 ) { break; } UserInfo userInfo = hb.getUserInfo(); if (userInfo != null) { RankInfo rankInfo = new RankInfo(); rankInfo.reward = format.format(rewardMoney); rankInfo.nickName = userInfo.getNickName(); rankInfo.portrait = userInfo.getPortrait(); rankInfo.showId = userRankings.getShowId(); // 处理id Long id = userInfo.getId(); String uid = id + ""; String index = uid.substring(0, 1); String end = uid.substring(uid.length()-1, uid.length()); rankInfo.showId = index+ "****" + end; rankingsList.add(rankInfo); } } } } List resultList = null; List listSort = listSort(rankingsList); if (listSort.size() > 50) { resultList = listSort.subList(0, 50); } else { resultList = listSort; } GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("result_list", gson.toJson(resultList)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败")); e.printStackTrace(); } } /** * 自购排行榜 * @param callback * @param out */ //@RequestNoSignValidate() @RequestMapping(value = "getTrade") public void getTrade(String callback, PrintWriter out) { try { List userRankingsList = userRankingsService.query(0, 30, null, 1, null, 2); if (userRankingsList == null || userRankingsList.size() == 0) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("暂无相关数据"))); return; } DecimalFormat format = new DecimalFormat("0.00"); List rankingsList = new ArrayList(); for (UserRankings userRankings: userRankingsList) { RankInfo rankInfo = new RankInfo(); rankInfo.nickName = userRankings.getNickName(); rankInfo.portrait = userRankings.getPortrait(); rankInfo.showId = userRankings.getShowId(); rankInfo.reward = format.format(userRankings.getTradeReward()); rankingsList.add(rankInfo); } GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("result_list", gson.toJson(rankingsList)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败")); e.printStackTrace(); } } /** * 分享排行榜 * @param callback * @param out */ //@RequestNoSignValidate() @RequestMapping(value = "getShare") public void getShare(String callback, PrintWriter out) { try { List userRankingsList = userRankingsService.query(0, 30, null, null, 1, 4); if (userRankingsList == null || userRankingsList.size() == 0) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("暂无相关数据"))); return; } DecimalFormat format = new DecimalFormat("0.00"); List rankingsList = new ArrayList(); for (UserRankings userRankings: userRankingsList) { RankInfo rankInfo = new RankInfo(); rankInfo.nickName = userRankings.getNickName(); rankInfo.portrait = userRankings.getPortrait(); rankInfo.showId = userRankings.getShowId(); rankInfo.reward = format.format(userRankings.getShareReward()); rankingsList.add(rankInfo); } GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("result_list", gson.toJson(rankingsList)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败")); e.printStackTrace(); } } public List listSort (List list) { Collections.sort(list, new Comparator(){ public int compare(RankInfo p1, RankInfo p2) { //按照Person的年龄进行升序排列 if(p1.reward.compareTo(p2.reward) < 0){ return 1; } if(p1.reward.compareTo(p2.reward) == 0){ return 0; } return -1; } }); return list; } } class RankInfo { public String nickName;// 昵称 public String portrait; // 头像 public String showId; // 展示id public String reward;// 奖金 }