package com.yeshi.fanli.controller.client.v1; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yeshi.fanli.dto.order.UserTeamLevel; import com.yeshi.fanli.dto.order.UserTeamRate; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.help.AppPageNotification; import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; import com.yeshi.fanli.service.inter.help.AppPageNotificationService; import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; import com.yeshi.fanli.service.manger.AppUpdateManager; import com.yeshi.fanli.util.Constant; import org.yeshi.utils.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.VersionUtil; import net.sf.json.JSONObject; @Controller @RequestMapping("api/v1/help") public class HelpController { @Resource private AppPageNotificationService appPageNotificationService; @Resource private AppUpdateManager appUpdateManager; @Resource private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; /** * 获取app页面的通知 * * @param acceptData * @param type * @param out */ @RequestMapping(value = "getAppPageNotification") public void getAppPageNotification(AcceptData acceptData, String type, PrintWriter out) { if (StringUtil.isNullOrEmpty(type)) { out.print(JsonUtil.loadFalseResult(1, "请上传类型")); return; } String platform = acceptData.getPlatform(); String version = acceptData.getVersion(); AppPageNotification ap = appPageNotificationService.getValidNotificationByTypeCache(type, platform, Integer.parseInt(version),acceptData.getSystem()); if ("home".equalsIgnoreCase(type) && VersionUtil.smallerThan_1_5_1(platform, version) && ap != null) { AppPageNotification no = new AppPageNotification(); no.setContentUrl(""); no.setMd5("111111111111111111"); no.setPageName(ap.getPageName()); no.setShow(true); no.setType(ap.getType()); no.setUpdateTime(ap.getUpdateTime()); no.setCanClose(false); no.setContent(String.format("尊敬的用户,为更加准确高效的为你返利、省钱,请升级到%s最新版本", Constant.getAppName(platform, version))); Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); out.print(JsonUtil.loadTrueResult(gson.toJson(no))); return; } // 没有通知 if (ap == null || !ap.getShow()) { out.print(JsonUtil.loadFalseResult(2, "无通知")); } else {// 有通知 Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); out.print(JsonUtil.loadTrueResult(gson.toJson(ap))); } } @RequestMapping(value = "updateApp") public void updateApp(AcceptData acceptData, PrintWriter out) { if (Constant.IS_TEST) acceptData.setVersion("20"); String result = "{\"code\":1}";// appUpdateManager.getUpdateInfoCache(acceptData); try { out.print(new String(result.getBytes("ISO-8859-1"), "UTF-8")); } catch (UnsupportedEncodingException e) { out.print(result); } } @RequestMapping(value = "computeCommission") public void computeCommission(AcceptData acceptData, String list, String money, String callback, PrintWriter out) { money = money.replace("¥", "").trim(); BigDecimal moneyBigDecial = null; try { moneyBigDecial = new BigDecimal(money); } catch (Exception e) { } if (moneyBigDecial == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("资金格式不对")); return; } List levelList = new ArrayList(); net.sf.json.JSONArray array = net.sf.json.JSONArray.fromObject(list); for (int i = 0; i < array.size(); i++) levelList.add(UserLevelEnum.valueOf(array.optString(i))); Collections.reverse(levelList); BigDecimal fanLiRate = orderHongBaoMoneyComputeService.getFanliRate(levelList.get(0), new Date(),acceptData.getSystem()); moneyBigDecial = MoneyBigDecimalUtil.divUp(moneyBigDecial.multiply(new BigDecimal(100)), fanLiRate); List bossList = new ArrayList<>(); if (levelList.size() > 1) for (int i = 1; i < levelList.size(); i++) { bossList.add(new UserTeamLevel(10000L + i, levelList.get(i))); } Date date = new Date(); List rateList = null; Map teamRewardMap = new HashMap<>(); Map teamReward2Map = new HashMap<>(); Map teamDividentsMap = new HashMap<>(); // 计算二级外分红 List moreThan2LevelList = orderHongBaoMoneyComputeService .getTeamRewardMoreThan2LevelRates(levelList.get(0), bossList, date,acceptData.getSystem()); if (moreThan2LevelList != null) for (UserTeamRate rate : moreThan2LevelList) { teamReward2Map.put(rate.getUid(), rate); } // 计算一级奖金 if (bossList.size() >= 1) { UserTeamRate rate = orderHongBaoMoneyComputeService.getTeamRewardRate(levelList.get(0), bossList, date, 1,acceptData.getSystem()); if (rate != null) teamRewardMap.put(rate.getUid(), rate); } // 计算二级奖金 if (bossList.size() >= 2) { UserTeamRate rate = orderHongBaoMoneyComputeService.getTeamRewardRate(levelList.get(0), bossList, date, 2,acceptData.getSystem()); if (rate != null) teamRewardMap.put(rate.getUid(), rate); } // 计算分红 rateList = orderHongBaoMoneyComputeService.getTeamDividentsRates(levelList.get(0), bossList, date,acceptData.getSystem()); if (rateList != null) for (UserTeamRate rate : rateList) { teamDividentsMap.put(rate.getUid(), rate); } BigDecimal fanliRate = orderHongBaoMoneyComputeService.getFanliRate(levelList.get(0), date,acceptData.getSystem()); List resultList = new ArrayList<>(); resultList.add( "¥" + MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(moneyBigDecial, fanliRate), new BigDecimal(100))); for (int i = 0; i < bossList.size(); i++) { // String st = ""; Long uid = bossList.get(i).getUid(); if (teamRewardMap.get(uid) == null) st += "¥0"; else st += "¥" + MoneyBigDecimalUtil.div( MoneyBigDecimalUtil.mul(moneyBigDecial, teamRewardMap.get(uid).getRate()), new BigDecimal(100)); st += "+"; if (teamReward2Map.get(uid) == null) st += "¥0"; else st += "¥" + MoneyBigDecimalUtil.div( MoneyBigDecimalUtil.mul(moneyBigDecial, teamReward2Map.get(uid).getRate()), new BigDecimal(100)); st += "+"; if (teamDividentsMap.get(uid) == null) st += "¥0"; else st += "¥" + MoneyBigDecimalUtil.div( MoneyBigDecimalUtil.mul(moneyBigDecial, teamDividentsMap.get(uid).getRate()), new BigDecimal(100)); resultList.add(st); } Collections.reverse(resultList); JSONObject data = new JSONObject(); data.put("list", resultList); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } }