HomeController.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. package com.ydd.web.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  5. import com.ydd.common.annotation.Log;
  6. import com.ydd.common.core.controller.BaseController;
  7. import com.ydd.common.core.domain.Result;
  8. import com.ydd.common.core.domain.entity.SysUser;
  9. import com.ydd.common.enums.BusinessType;
  10. import com.ydd.common.enums.UserTypeEnums;
  11. import com.ydd.common.utils.DateUtils;
  12. import com.ydd.module.domain.*;
  13. import com.ydd.module.dto.EChartsDto;
  14. import com.ydd.module.enums.DeliveryStatusEnum;
  15. import com.ydd.module.enums.ListSizeEnum;
  16. import com.ydd.module.service.*;
  17. import lombok.RequiredArgsConstructor;
  18. import org.apache.commons.compress.utils.Lists;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.GetMapping;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.math.BigDecimal;
  24. import java.math.RoundingMode;
  25. import java.text.SimpleDateFormat;
  26. import java.util.*;
  27. import java.util.stream.Collectors;
  28. /**
  29. * 首页Controller
  30. *
  31. * @author douya
  32. * @date 2021-03-17
  33. */
  34. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  35. @RestController
  36. @RequestMapping("/module/home")
  37. public class HomeController extends BaseController {
  38. private final IProfitsAgentService iProfitsAgentService;
  39. private final IProfitsDspService iProfitsDspService;
  40. private final IProfitsMerchantService iProfitsMerchantService;
  41. private final IWaimaiOrderService iWaimaiOrderService;
  42. private final IOrderService iOrderService;
  43. private final IDspWaimaiService iDspWaimaiService;
  44. private final IMerchantService iMerchantService;
  45. private final IAgentService iAgentService;
  46. private final INoticeService iNoticeService;
  47. private final IMessageService iMessageService;
  48. private final IDspTextConfigService iDspTextConfigService;
  49. private final IProfitsDetailService iProfitsDetailService;
  50. private final IShopService iShopService;
  51. @GetMapping("/right/data")
  52. @Log(title = "首页右侧的数据", businessType = BusinessType.EXPORT)
  53. public Result rightData() {
  54. List<Notice> noticeList = iNoticeService.selectFive();
  55. Message message = iMessageService.selectNew();
  56. Integer dspId = null;
  57. SysUser user = getSysUser();
  58. if (user.getDspId() != null){
  59. dspId = user.getDspId().intValue();
  60. }
  61. List<DspTextConfig> kefuInfo = iDspTextConfigService.selectKeFuInfo(dspId);
  62. Map map = new HashMap();
  63. map.put("noticeList", noticeList);
  64. map.put("message", message);
  65. map.put("kefuInfo", kefuInfo);
  66. return Result.success(map);
  67. }
  68. @GetMapping("/dataInfo")
  69. public Result dataInfo() {
  70. SysUser user = getSysUser();
  71. List<Map<String, Object>> list = new ArrayList<>();
  72. SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
  73. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  74. List<Long> agentIds = iAgentService.listAgent(user.getAgentId());
  75. List<Long> merchantIds = iMerchantService.findMerchantIdByAgentId(agentIds);
  76. List<Long> shopIds = Lists.newArrayList();
  77. if (CollectionUtils.isNotEmpty(merchantIds)) {
  78. shopIds = iShopService.findShopIdByMerchantId(merchantIds);
  79. }
  80. for (int i = 1; i < 3; i++) {
  81. Map<String, Object> map = new HashMap<>();
  82. String todayStartDate = DateUtils.parseToBeginTime(dft.format(new Date()));
  83. if (i == 2) {
  84. Date beginDate = new Date();
  85. Calendar date = Calendar.getInstance();
  86. date.setTime(beginDate);
  87. date.set(Calendar.DATE, date.get(Calendar.DATE) - 1);
  88. String yesStartDate = DateUtils.parseToBeginTime(dft.format(date.getTime()));
  89. String yesEndDate = DateUtils.parseToTomorrowBeginTime(dft.format(date.getTime()));
  90. map.put("commission", iProfitsAgentService.selectCommissionByAgentId(user.getAgentId(), yesStartDate, yesEndDate));
  91. map.put("agentNum", iAgentService.getSAgentNum(user.getAgentId().intValue(), todayStartDate));
  92. map.put("merchantNum", iMerchantService.getMerchantNum(user.getAgentId().intValue(), todayStartDate));
  93. } else {
  94. // BigDecimal commission = iProfitsDetailService.countBigDecimal(user.getAgentId(), null);
  95. List<Double> commissions = iProfitsDetailService.getProfitCommissionList(user.getAgentId(), null);
  96. double commissionDouble = commissions.stream().collect(Collectors.summarizingDouble(value -> value)).getSum();
  97. BigDecimal commission = BigDecimal.valueOf(commissionDouble).setScale(2, BigDecimal.ROUND_HALF_UP);
  98. map.put("commission", commission);
  99. map.put("agentNum", iAgentService.getSAgentNum(user.getAgentId().intValue(), null));
  100. map.put("merchantNum", iMerchantService.getMerchantNum(user.getAgentId().intValue(), null));
  101. }
  102. if (agentIds.size() == ListSizeEnum.ZERO.getSize() || shopIds.size() == 0) {
  103. map.put("orderNum", 0);
  104. map.put("orderAmount", BigDecimal.ZERO);
  105. } else {
  106. map.put("orderNum", iOrderService.getOrderNum(shopIds, i == 1 ? null : todayStartDate));
  107. map.put("orderAmount", iOrderService.getOrderAmount(shopIds, i == 1 ? null : todayStartDate));
  108. }
  109. list.add(map);
  110. }
  111. } else {
  112. String todayStartDate = DateUtils.parseToBeginTime(dft.format(new Date()));
  113. for (int i = 1; i < 3; i++) {
  114. Map<String, Object> map = new HashMap<>();
  115. if (i == 2) {
  116. ProfitsDsp profitsDsp = iProfitsDspService.selectCommissionByAgentId(todayStartDate);
  117. BigDecimal commission = profitsDsp.getMeituanCommission().add(profitsDsp.getShansongCommission())
  118. .add(profitsDsp.getShunfengCommission()).add(profitsDsp.getDadaCommission())
  119. .add(profitsDsp.getFengniaoCommission()).add(profitsDsp.getUuptCommission())
  120. .add(profitsDsp.getAptCommission()).add(profitsDsp.getKuaifuCommission())
  121. .add(profitsDsp.getDadayzCommission()).add(profitsDsp.getHuolalaCommission())
  122. .add(profitsDsp.getFengniaoPtCommission());
  123. map.put("commission", commission);
  124. } else {
  125. List<Double> commissions = iProfitsDetailService.getProfitCommissionList(null, user.getDspId());
  126. double commissionDouble = commissions.stream().collect(Collectors.summarizingDouble(value -> value)).getSum();
  127. BigDecimal commission = BigDecimal.valueOf(commissionDouble).setScale(2, BigDecimal.ROUND_HALF_UP);
  128. // BigDecimal commission = iProfitsDetailService.countBigDecimal(null, user.getDspId());
  129. map.put("commission", commission);
  130. }
  131. int agentCount = iAgentService.count(new QueryWrapper<Agent>()
  132. .ge(i == 2, "create_time", todayStartDate)
  133. .eq("deleted", 0));
  134. map.put("agentNum", agentCount);
  135. int merchantCount = iMerchantService.count(new QueryWrapper<Merchant>()
  136. .ge(i == 2, "create_time", todayStartDate)
  137. .eq("deleted", 0));
  138. map.put("merchantNum", merchantCount);
  139. int orderCount = iOrderService.count(new QueryWrapper<Order>()
  140. .ge(i == 2, "create_time", todayStartDate)
  141. .eq("delivery_status", DeliveryStatusEnum.FINISH.status)
  142. .eq("deleted", 0));
  143. map.put("orderNum", orderCount);
  144. map.put("orderAmount", iOrderService.getOrderAmount(null, i == 1 ? null : todayStartDate));
  145. list.add(map);
  146. }
  147. }
  148. return Result.success(list);
  149. }
  150. @GetMapping("/profit/trend")
  151. @Log(title = "收益趋势", businessType = BusinessType.EXPORT)
  152. public Result trend() {
  153. SysUser user = getSysUser();
  154. List<EChartsDto> list;
  155. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  156. list = iProfitsAgentService.getProfitTrend(user.getAgentId().intValue());
  157. } else {
  158. list = iProfitsDspService.getProfitTrend(user.getDspId());
  159. }
  160. return Result.success(list);
  161. }
  162. @GetMapping("/profit/topTen")
  163. @Log(title = "贡献收益top10", businessType = BusinessType.EXPORT)
  164. public Result topTen() {
  165. SysUser user = getSysUser();
  166. List<EChartsDto> list;
  167. //平台看代理商,代理商看商户
  168. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  169. list = iProfitsMerchantService.topTen(user.getAgentId().intValue());
  170. } else {
  171. list = iProfitsAgentService.topTen();
  172. }
  173. return Result.success(list);
  174. }
  175. @GetMapping("/delivery/profitProportion")
  176. @Log(title = "各配送平台收益占比", businessType = BusinessType.EXPORT)
  177. public Result profitProportion() {
  178. SysUser user = getSysUser();
  179. Map map = new HashMap();
  180. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  181. ProfitsAgent profitsAgent = iProfitsAgentService.profitProportion(user.getAgentId().intValue());
  182. map.put("meituan", profitsAgent.getMeituanAmount());
  183. map.put("shansong", profitsAgent.getShansongAmount());
  184. map.put("shunfeng", profitsAgent.getShunfengAmount());
  185. map.put("dada", profitsAgent.getDadaAmount());
  186. map.put("fengniao", profitsAgent.getFengniaoAmount());
  187. map.put("uupt", profitsAgent.getUuptAmount());
  188. map.put("apt", profitsAgent.getAptAmount());
  189. map.put("dadayz", profitsAgent.getDadayzAmount());
  190. map.put("kuaifu", profitsAgent.getKuaifuAmount());
  191. map.put("huolala", profitsAgent.getHuolalaAmount());
  192. map.put("meituanzb", profitsAgent.getMeituanzbAmount());
  193. map.put("fengniaopt", profitsAgent.getFengniaoPtAmount());
  194. BigDecimal total = profitsAgent.getMeituanAmount().add(profitsAgent.getShansongAmount())
  195. .add(profitsAgent.getShunfengAmount()).add(profitsAgent.getDadaAmount())
  196. .add(profitsAgent.getFengniaoAmount()).add(profitsAgent.getUuptAmount())
  197. .add(profitsAgent.getAptAmount()).add(profitsAgent.getDadayzAmount())
  198. .add(profitsAgent.getKuaifuAmount()).add(profitsAgent.getHuolalaAmount()
  199. .add(profitsAgent.getMeituanzbAmount()).add(profitsAgent.getFengniaoPtAmount()));
  200. map.put("total", total);
  201. if (total.compareTo(BigDecimal.ZERO) == 0) {
  202. map.put("meituanProportion", 0);
  203. map.put("shansongProportion", 0);
  204. map.put("shunfengProportion", 0);
  205. map.put("dadaProportion", 0);
  206. map.put("fengniaoProportion", 0);
  207. map.put("uuptProportion", 0);
  208. map.put("aptProportion", 0);
  209. map.put("dadayzProportion", 0);
  210. map.put("kuaifuProportion", 0);
  211. map.put("huolalaProportion", 0);
  212. map.put("meituanzbProportion", 0);
  213. map.put("fengniaoptProportion", 0);
  214. } else {
  215. // map.put("meituanProportion", profitsAgent.getMeituanAmount().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  216. // map.put("shansongProportion", profitsAgent.getShansongAmount().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  217. // map.put("shunfengProportion", profitsAgent.getShunfengAmount().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  218. // map.put("dadaProportion", profitsAgent.getDadaAmount().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  219. // map.put("fengniaoProportion", profitsAgent.getFengniaoAmount().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  220. map.put("meituanProportion", profitsAgent.getMeituanAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  221. map.put("shansongProportion", profitsAgent.getShansongAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  222. map.put("shunfengProportion", profitsAgent.getShunfengAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  223. map.put("dadaProportion", profitsAgent.getDadaAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  224. map.put("fengniaoProportion", profitsAgent.getFengniaoAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  225. map.put("uuptProportion", profitsAgent.getUuptAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  226. map.put("aptProportion", profitsAgent.getAptAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  227. map.put("dadayzProportion", profitsAgent.getDadayzAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  228. map.put("kuaifuProportion", profitsAgent.getKuaifuAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  229. map.put("huolalaProportion", profitsAgent.getHuolalaAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  230. map.put("meituanzbProportion", profitsAgent.getMeituanzbAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  231. map.put("fengniaoptProportion", profitsAgent.getFengniaoPtAmount().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  232. }
  233. } else {
  234. ProfitsDsp profitsDsp = iProfitsDspService.profitProportion();
  235. map.put("meituan", profitsDsp.getMeituanCommission());
  236. map.put("shansong", profitsDsp.getShansongCommission());
  237. map.put("shunfeng", profitsDsp.getShunfengCommission());
  238. map.put("dada", profitsDsp.getDadaCommission());
  239. map.put("fengniao", profitsDsp.getFengniaoCommission());
  240. map.put("uupt", profitsDsp.getUuptCommission());
  241. map.put("apt", profitsDsp.getAptCommission());
  242. map.put("dadayz", profitsDsp.getDadayzCommission());
  243. map.put("kuaifu", profitsDsp.getKuaifuCommission());
  244. map.put("huolala", profitsDsp.getHuolalaAmount());
  245. map.put("meituanzb", profitsDsp.getHuolalaAmount());
  246. map.put("fengniaopt", profitsDsp.getFengniaoPtAmount());
  247. BigDecimal total = profitsDsp.getMeituanCommission().add(profitsDsp.getShansongCommission())
  248. .add(profitsDsp.getShunfengCommission()).add(profitsDsp.getDadaCommission())
  249. .add(profitsDsp.getFengniaoCommission()).add(profitsDsp.getUuptCommission())
  250. .add(profitsDsp.getAptCommission()).add(profitsDsp.getDadayzCommission())
  251. .add(profitsDsp.getKuaifuCommission()).add(profitsDsp.getHuolalaCommission()
  252. .add(profitsDsp.getMeituanzbCommission()).add(profitsDsp.getFengniaoPtCommission()));
  253. map.put("total", total);
  254. if (total.compareTo(BigDecimal.ZERO) == 0) {
  255. map.put("meituanProportion", 0);
  256. map.put("shansongProportion", 0);
  257. map.put("shunfengProportion", 0);
  258. map.put("dadaProportion", 0);
  259. map.put("fengniaoProportion", 0);
  260. map.put("uuptProportion", 0);
  261. map.put("aptProportion", 0);
  262. map.put("dadayzProportion", 0);
  263. map.put("kuaifuProportion", 0);
  264. map.put("huolalaProportion", 0);
  265. map.put("meituanzbProportion", 0);
  266. map.put("fengniaoptProportion", 0);
  267. } else {
  268. // map.put("meituanProportion", profitsDsp.getMeituanCommission().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  269. // map.put("shansongProportion", profitsDsp.getShansongCommission().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  270. // map.put("shunfengProportion", profitsDsp.getShunfengCommission().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  271. // map.put("dadaProportion", profitsDsp.getDadaCommission().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  272. // map.put("fengniaoProportion", profitsDsp.getFengniaoCommission().divide(total, 2, RoundingMode.DOWN).multiply(new BigDecimal("100")).setScale(2, RoundingMode.DOWN));
  273. map.put("meituanProportion", profitsDsp.getMeituanCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  274. map.put("shansongProportion", profitsDsp.getShansongCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  275. map.put("shunfengProportion", profitsDsp.getShunfengCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  276. map.put("dadaProportion", profitsDsp.getDadaCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  277. map.put("fengniaoProportion", profitsDsp.getFengniaoCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  278. map.put("uuptProportion", profitsDsp.getUuptCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  279. map.put("aptProportion", profitsDsp.getAptCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  280. map.put("dadayzProportion", profitsDsp.getDadayzCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  281. map.put("kuaifuProportion", profitsDsp.getKuaifuCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  282. map.put("huolalaProportion", profitsDsp.getHuolalaCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  283. map.put("meituanzbProportion", profitsDsp.getMeituanzbCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  284. map.put("fengniaoptProportion", profitsDsp.getFengniaoPtCommission().divide(total, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
  285. }
  286. }
  287. return Result.success(map);
  288. }
  289. @GetMapping("/waimai/orderAmount")
  290. @Log(title = "外卖订单金额占比", businessType = BusinessType.EXPORT)
  291. public Result waimaiOrderAmount() {
  292. SysUser user = getSysUser();
  293. Map<String, Object> map = new HashMap<>();
  294. //返回金额
  295. /*BigDecimal meituanAmount = BigDecimal.ZERO;
  296. BigDecimal elemeAmount = BigDecimal.ZERO;
  297. BigDecimal ebaiAmount = BigDecimal.ZERO;
  298. BigDecimal meituanSgAmount = BigDecimal.ZERO;
  299. //返回金额占比
  300. BigDecimal meituanAmountProportion = BigDecimal.ZERO;
  301. BigDecimal elemeAmountProportion = BigDecimal.ZERO;
  302. BigDecimal ebaiAmountProportion = BigDecimal.ZERO;
  303. BigDecimal meituanSgAmountProportion = BigDecimal.ZERO;
  304. List<WaimaiOrderRateDto> waimaiOrderRateDtoList = Lists.newArrayList();
  305. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  306. List<Long> longs = iAgentService.listAgent(user.getAgentId());
  307. List<Integer> merchantIds = iMerchantService.findIdsByAgentIdLists(longs);
  308. if (CollectionUtils.isNotEmpty(merchantIds)) {
  309. waimaiOrderRateDtoList = iWaimaiOrderService.getOrderByMerchantIds(merchantIds);
  310. }
  311. } else {
  312. waimaiOrderRateDtoList = iWaimaiOrderService.getOrderByMerchantIds(null);
  313. }
  314. if (CollectionUtils.isNotEmpty(waimaiOrderRateDtoList)) {
  315. DspWaimai meituanDsp = iDspWaimaiService.findOne(WaimaiTypeEnums.MEI_TUAN.getType());
  316. DspWaimai elemeDsp = iDspWaimaiService.findOne(WaimaiTypeEnums.E_LE_ME.getType());
  317. DspWaimai elemeRetailDsp = iDspWaimaiService.findOne(WaimaiTypeEnums.E_LE_ME_RETAIL.getType());
  318. DspWaimai meituanSgDsp = iDspWaimaiService.findOne(WaimaiTypeEnums.MEI_TUAN_SG.getType());
  319. Long meituanId = meituanDsp == null ? null : meituanDsp.getId();
  320. Long elemeId = elemeDsp == null ? null : elemeDsp.getId();
  321. Long ebaiId = elemeRetailDsp == null ? null : elemeRetailDsp.getId();
  322. Long meituanSgId = meituanSgDsp == null ? null : meituanSgDsp.getId();
  323. double meituanAmountDouble = waimaiOrderRateDtoList.stream().filter(item -> meituanId != null && meituanId.equals(item.getWaimaiId())).mapToDouble(WaimaiOrderRateDto::getOriginalPrice).sum();
  324. meituanAmount = BigDecimal.valueOf(meituanAmountDouble);
  325. double elemeAmountDouble = waimaiOrderRateDtoList.stream().filter(item -> elemeId != null && elemeId.equals(item.getWaimaiId())).mapToDouble(WaimaiOrderRateDto::getOriginalPrice).sum();
  326. elemeAmount = BigDecimal.valueOf(elemeAmountDouble);
  327. double ebaiAmountDouble = waimaiOrderRateDtoList.stream().filter(item -> ebaiId != null && ebaiId.equals(item.getWaimaiId())).mapToDouble(WaimaiOrderRateDto::getOriginalPrice).sum();
  328. ebaiAmount = BigDecimal.valueOf(ebaiAmountDouble);
  329. double meituanSgAmountDouble = waimaiOrderRateDtoList.stream().filter(item -> meituanSgId != null && meituanSgId.equals(item.getWaimaiId())).mapToDouble(WaimaiOrderRateDto::getOriginalPrice).sum();
  330. meituanSgAmount = BigDecimal.valueOf(meituanSgAmountDouble);
  331. }
  332. BigDecimal totalAmount = meituanAmount.add(elemeAmount).add(ebaiAmount).add(meituanSgAmount);
  333. // 占比计算
  334. if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
  335. meituanAmountProportion = meituanAmount.divide(totalAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
  336. elemeAmountProportion = elemeAmount.divide(totalAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
  337. ebaiAmountProportion = ebaiAmount.divide(totalAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
  338. meituanSgAmountProportion = meituanSgAmount.divide(totalAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
  339. }
  340. map.put("meituanAmount", meituanAmountProportion);
  341. map.put("elemeAmount", elemeAmountProportion);
  342. map.put("ebaiAmount", ebaiAmountProportion);
  343. map.put("meituanSgAmount", meituanSgAmountProportion);*/
  344. // 查询影响效率, 耗时较长, 暂写定值(2022-01-28)
  345. int orderCount = 0;
  346. if (user.getType().equals(UserTypeEnums.AGENT.getCode())) {
  347. List<Long> agentIds = iAgentService.listAgent(user.getAgentId());
  348. if (CollectionUtils.isNotEmpty(agentIds)) {
  349. List<Long> merchantIds = iMerchantService.findMerchantIdByAgentId(agentIds);
  350. if (CollectionUtils.isNotEmpty(merchantIds)) {
  351. List<Long> shopIds = iShopService.findShopIdByMerchantId(merchantIds);
  352. orderCount = iOrderService.count(new QueryWrapper<Order>()
  353. .eq("delivery_status", DeliveryStatusEnum.FINISH.status)
  354. .in("shop_id", shopIds));
  355. }
  356. }
  357. } else {
  358. orderCount = iOrderService.count(new QueryWrapper<Order>()
  359. .eq("delivery_status", DeliveryStatusEnum.FINISH.status));
  360. }
  361. if (orderCount > 0) {
  362. map.put("meituanAmount", 68);
  363. map.put("elemeAmount", 18);
  364. map.put("ebaiAmount", 13);
  365. map.put("meituanSgAmount", 1);
  366. map.put("jdHomeAmount", 0);
  367. } else {
  368. map.put("meituanAmount", 0);
  369. map.put("elemeAmount", 0);
  370. map.put("ebaiAmount", 0);
  371. map.put("meituanSgAmount", 0);
  372. map.put("jdHomeAmount", 0);
  373. }
  374. return Result.success(map);
  375. }
  376. }