MonthlyCustomersController.java 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. package com.kmall.admin.controller.statistics;
  2. import com.kmall.admin.entity.WechatFollowersEntity;
  3. import com.kmall.admin.fromcomm.entity.SysUserEntity;
  4. import com.kmall.admin.service.statistics.MonthlyCustomersService;
  5. import com.kmall.admin.utils.ShiroUtils;
  6. import com.kmall.common.utils.R;
  7. import org.apache.shiro.SecurityUtils;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestParam;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import java.text.ParseException;
  13. import java.text.SimpleDateFormat;
  14. import java.util.*;
  15. /**
  16. * @author zhangchuangbiao
  17. * @version 1.0
  18. * 2020-09-01 14:35
  19. */
  20. @RestController
  21. @RequestMapping("/monthly")
  22. public class MonthlyCustomersController {
  23. @Autowired
  24. private MonthlyCustomersService monthlyCustomersService;
  25. private void calculateDifferentMonth(List<String> monthList, String startMonth, String endMonth) throws ParseException {
  26. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  27. Calendar bef = Calendar.getInstance();
  28. Calendar aft = Calendar.getInstance();
  29. bef.setTime(sdf.parse(startMonth));
  30. aft.setTime(sdf.parse(endMonth));
  31. do {
  32. monthList.add(sdf.format(bef.getTime()));
  33. bef.add(Calendar.MONTH, 1);
  34. }
  35. while (bef.compareTo(aft) <= 0);
  36. }
  37. @RequestMapping("/customersQuery")
  38. public R queryMonthlyCustomers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) {
  39. List<String> dateList = new ArrayList<>();
  40. Map<String, Object> returnMap = new HashMap<>();
  41. try {
  42. calculateDifferentMonth(dateList, startMonth, endMonth);
  43. } catch (ParseException e) {
  44. e.printStackTrace();
  45. }
  46. try {
  47. String merchSn = null;
  48. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  49. if(!"1".equals(sysUser.getRoleType())){
  50. merchSn = sysUser.getMerchSn();
  51. }
  52. Map<String,Object> map = monthlyCustomersService.queryMonthlyCustomers(startMonth,endMonth,merchSn);
  53. returnMap.put("dateList", dateList);
  54. returnMap.putAll(map);
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. return R.error(e.getMessage());
  58. }
  59. return R.ok(returnMap);
  60. }
  61. @RequestMapping("/top10ForProduct")
  62. public R top10ForProduct(@RequestParam("month") String month, @RequestParam("week") String week){
  63. Map<String,Object> map = monthlyCustomersService.top10ForProduct(month,week);
  64. return R.ok(map);
  65. }
  66. @RequestMapping("/top10ByBrandAndSupplier")
  67. public R top10ByBrandAndSupplier(@RequestParam("startDate") String startDate,
  68. @RequestParam("endDate") String endDate){
  69. Map<String,Object> map = monthlyCustomersService.top10ByBrandAndSupplier(startDate,endDate);
  70. return R.ok(map);
  71. }
  72. @RequestMapping("/customersQueryByWeek")
  73. public R queryWeeklyCustomers(@RequestParam("startWeek") String startWeek, @RequestParam("endWeek") String endWeek) throws ParseException {
  74. List<String> dateList = new ArrayList<>();
  75. try {
  76. calculateDifferentWeek(dateList, startWeek, endWeek);
  77. } catch (ParseException e) {
  78. e.printStackTrace();
  79. }
  80. String merchSn = null;
  81. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  82. if(!"1".equals(sysUser.getRoleType())){
  83. merchSn = sysUser.getMerchSn();
  84. }
  85. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  86. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  87. Calendar bef = Calendar.getInstance();
  88. Calendar aft = Calendar.getInstance();
  89. bef.setFirstDayOfWeek(Calendar.MONDAY);
  90. aft.setFirstDayOfWeek(Calendar.MONDAY);
  91. bef.setTime(sdf.parse(startWeek));
  92. aft.setTime(sdf.parse(endWeek));
  93. int befWeek = bef.get(Calendar.WEEK_OF_YEAR);
  94. int aftWeek = aft.get(Calendar.WEEK_OF_YEAR);
  95. if(befWeek<10){
  96. startWeek =weekSdf.format(bef.getTime())+"-0"+befWeek;
  97. }else{
  98. startWeek =weekSdf.format(bef.getTime())+"-"+befWeek;
  99. }
  100. if(aftWeek<10){
  101. endWeek =weekSdf.format(aft.getTime())+"-0"+aftWeek;
  102. }else{
  103. endWeek =weekSdf.format(aft.getTime())+"-"+aftWeek;
  104. }
  105. Map<String,Object> map = monthlyCustomersService.queryWeeklyCustomers(startWeek,endWeek,merchSn);
  106. Map<String, Object> returnMap = new HashMap<>();
  107. returnMap.put("dateList", dateList);
  108. returnMap.putAll(map);
  109. return R.ok(returnMap);
  110. }
  111. // todo
  112. private void calculateDifferentWeek(List<String> weekList, String startWeek, String endWeek) throws ParseException {
  113. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  114. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  115. Calendar bef = Calendar.getInstance();
  116. Calendar aft = Calendar.getInstance();
  117. bef.setFirstDayOfWeek(Calendar.MONDAY);
  118. aft.setFirstDayOfWeek(Calendar.MONDAY);
  119. bef.setTime(sdf.parse(startWeek));
  120. aft.setTime(sdf.parse(endWeek));
  121. do {
  122. int i = bef.get(Calendar.WEEK_OF_YEAR);
  123. if (i<10){
  124. weekList.add(weekSdf.format(bef.getTime())+"-0"+i);
  125. }else{
  126. weekList.add(weekSdf.format(bef.getTime())+"-"+i);
  127. }
  128. bef.set(Calendar.DAY_OF_MONTH,bef.get(Calendar.DAY_OF_MONTH)+7); //给当前时间增加一周
  129. }
  130. while (bef.compareTo(aft) <= 0);
  131. }
  132. @RequestMapping("/queryMonthlyWechatFollowers")
  133. public R queryMonthlyWechatFollowers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) {
  134. List<String> dateList = new ArrayList<>();
  135. Map<String, Object> returnMap = new HashMap<>();
  136. try {
  137. calculateDifferentMonth(dateList, startMonth, endMonth);
  138. } catch (ParseException e) {
  139. e.printStackTrace();
  140. }
  141. try {
  142. String merchSn = null;
  143. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  144. if(!"1".equals(sysUser.getRoleType())){
  145. merchSn = sysUser.getMerchSn();
  146. }
  147. Map<String,Object> map = monthlyCustomersService.queryMonthlyWechatFollowers(startMonth,endMonth,merchSn);
  148. returnMap.put("dateList", dateList);
  149. returnMap.putAll(map);
  150. } catch (Exception e) {
  151. e.printStackTrace();
  152. return R.error(e.getMessage());
  153. }
  154. return R.ok(returnMap);
  155. }
  156. @RequestMapping("/addWechatFollowers")
  157. public R addWechatFollowers( @RequestParam("wechatFollowers") Integer wechatFollowers) {
  158. try {
  159. String merchSn = null;
  160. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  161. if(!"1".equals(sysUser.getRoleType())){
  162. merchSn = sysUser.getMerchSn();
  163. }
  164. WechatFollowersEntity wechatFollowersEntity = new WechatFollowersEntity();
  165. wechatFollowersEntity.setCreaterSn(ShiroUtils.getUserId().toString());
  166. wechatFollowersEntity.setCreateTime(new Date());
  167. wechatFollowersEntity.setWechatFollowers(wechatFollowers);
  168. wechatFollowersEntity.setMerchSn(merchSn);
  169. monthlyCustomersService.addWechatFollowers(wechatFollowersEntity);
  170. } catch (Exception e) {
  171. e.printStackTrace();
  172. return R.error(e.getMessage());
  173. }
  174. return R.ok("添加成功");
  175. }
  176. }