MonthlyCustomersController.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  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. String merchSn = null;
  64. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  65. if(!"1".equals(sysUser.getRoleType())){
  66. merchSn = sysUser.getMerchSn();
  67. }
  68. Map<String,Object> map = monthlyCustomersService.top10ForProduct(month,week,merchSn);
  69. return R.ok(map);
  70. }
  71. @RequestMapping("/top10ByBrandAndSupplier")
  72. public R top10ByBrandAndSupplier(@RequestParam("startDate") String startDate,
  73. @RequestParam("endDate") String endDate){
  74. String merchSn = null;
  75. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  76. if(!"1".equals(sysUser.getRoleType())){
  77. merchSn = sysUser.getMerchSn();
  78. }
  79. Map<String,Object> map = monthlyCustomersService.top10ByBrandAndSupplier(startDate,endDate,merchSn);
  80. return R.ok(map);
  81. }
  82. @RequestMapping("/customersQueryByWeek")
  83. public R queryWeeklyCustomers(@RequestParam("startWeek") String startWeek, @RequestParam("endWeek") String endWeek) throws ParseException {
  84. List<String> dateList = new ArrayList<>();
  85. try {
  86. calculateDifferentWeek(dateList, startWeek, endWeek);
  87. } catch (ParseException e) {
  88. e.printStackTrace();
  89. }
  90. String merchSn = null;
  91. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  92. if(!"1".equals(sysUser.getRoleType())){
  93. merchSn = sysUser.getMerchSn();
  94. }
  95. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  96. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  97. Calendar bef = Calendar.getInstance();
  98. Calendar aft = Calendar.getInstance();
  99. bef.setFirstDayOfWeek(Calendar.MONDAY);
  100. aft.setFirstDayOfWeek(Calendar.MONDAY);
  101. bef.setTime(sdf.parse(startWeek));
  102. aft.setTime(sdf.parse(endWeek));
  103. int befWeek = bef.get(Calendar.WEEK_OF_YEAR);
  104. int aftWeek = aft.get(Calendar.WEEK_OF_YEAR);
  105. if(befWeek<10){
  106. startWeek =weekSdf.format(bef.getTime())+"-0"+befWeek;
  107. }else{
  108. startWeek =weekSdf.format(bef.getTime())+"-"+befWeek;
  109. }
  110. if(aftWeek<10){
  111. endWeek =weekSdf.format(aft.getTime())+"-0"+aftWeek;
  112. }else{
  113. endWeek =weekSdf.format(aft.getTime())+"-"+aftWeek;
  114. }
  115. Map<String,Object> map = monthlyCustomersService.queryWeeklyCustomers(startWeek,endWeek,merchSn);
  116. Map<String, Object> returnMap = new HashMap<>();
  117. returnMap.put("dateList", dateList);
  118. returnMap.putAll(map);
  119. return R.ok(returnMap);
  120. }
  121. // todo
  122. private void calculateDifferentWeek(List<String> weekList, String startWeek, String endWeek) throws ParseException {
  123. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  124. SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy");
  125. Calendar bef = Calendar.getInstance();
  126. Calendar aft = Calendar.getInstance();
  127. bef.setFirstDayOfWeek(Calendar.MONDAY);
  128. aft.setFirstDayOfWeek(Calendar.MONDAY);
  129. bef.setTime(sdf.parse(startWeek));
  130. aft.setTime(sdf.parse(endWeek));
  131. do {
  132. int i = bef.get(Calendar.WEEK_OF_YEAR);
  133. if (i<10){
  134. weekList.add(weekSdf.format(bef.getTime())+"-0"+i);
  135. }else{
  136. weekList.add(weekSdf.format(bef.getTime())+"-"+i);
  137. }
  138. bef.set(Calendar.DAY_OF_MONTH,bef.get(Calendar.DAY_OF_MONTH)+7); //给当前时间增加一周
  139. }
  140. while (bef.compareTo(aft) <= 0);
  141. }
  142. @RequestMapping("/queryMonthlyWechatFollowers")
  143. public R queryMonthlyWechatFollowers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) {
  144. List<String> dateList = new ArrayList<>();
  145. Map<String, Object> returnMap = new HashMap<>();
  146. try {
  147. calculateDifferentMonth(dateList, startMonth, endMonth);
  148. } catch (ParseException e) {
  149. e.printStackTrace();
  150. }
  151. try {
  152. String merchSn = null;
  153. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  154. if(!"1".equals(sysUser.getRoleType())){
  155. merchSn = sysUser.getMerchSn();
  156. }
  157. Map<String,Object> map = monthlyCustomersService.queryMonthlyWechatFollowers(startMonth,endMonth,merchSn);
  158. returnMap.put("dateList", dateList);
  159. returnMap.putAll(map);
  160. } catch (Exception e) {
  161. e.printStackTrace();
  162. return R.error(e.getMessage());
  163. }
  164. return R.ok(returnMap);
  165. }
  166. @RequestMapping("/addWechatFollowers")
  167. public R addWechatFollowers( @RequestParam("wechatFollowers") Integer wechatFollowers) {
  168. try {
  169. String merchSn = null;
  170. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  171. if(!"1".equals(sysUser.getRoleType())){
  172. merchSn = sysUser.getMerchSn();
  173. }
  174. WechatFollowersEntity wechatFollowersEntity = new WechatFollowersEntity();
  175. wechatFollowersEntity.setCreaterSn(ShiroUtils.getUserId().toString());
  176. wechatFollowersEntity.setCreateTime(new Date());
  177. wechatFollowersEntity.setWechatFollowers(wechatFollowers);
  178. wechatFollowersEntity.setMerchSn(merchSn);
  179. monthlyCustomersService.addWechatFollowers(wechatFollowersEntity);
  180. } catch (Exception e) {
  181. e.printStackTrace();
  182. return R.error(e.getMessage());
  183. }
  184. return R.ok("添加成功");
  185. }
  186. @RequestMapping("/salesByCategory")
  187. public R salesByCategory(@RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate){
  188. String merchSn = null;
  189. SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
  190. if(!"1".equals(sysUser.getRoleType())){
  191. merchSn = sysUser.getMerchSn();
  192. }
  193. return R.ok().put("list",monthlyCustomersService.salesByCategory(startDate,endDate,merchSn));
  194. }
  195. }