package com.kmall.admin.controller.statistics; import com.kmall.admin.entity.WechatFollowersEntity; import com.kmall.admin.fromcomm.entity.SysUserEntity; import com.kmall.admin.service.statistics.MonthlyCustomersService; import com.kmall.admin.utils.ShiroUtils; import com.kmall.common.utils.R; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * @author zhangchuangbiao * @version 1.0 * 2020-09-01 14:35 */ @RestController @RequestMapping("/monthly") public class MonthlyCustomersController { @Autowired private MonthlyCustomersService monthlyCustomersService; private void calculateDifferentMonth(List monthList, String startMonth, String endMonth) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); Calendar bef = Calendar.getInstance(); Calendar aft = Calendar.getInstance(); bef.setTime(sdf.parse(startMonth)); aft.setTime(sdf.parse(endMonth)); do { monthList.add(sdf.format(bef.getTime())); bef.add(Calendar.MONTH, 1); } while (bef.compareTo(aft) <= 0); } @RequestMapping("/customersQuery") public R queryMonthlyCustomers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) { List dateList = new ArrayList<>(); Map returnMap = new HashMap<>(); try { calculateDifferentMonth(dateList, startMonth, endMonth); } catch (ParseException e) { e.printStackTrace(); } try { String merchSn = null; SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); if(!"1".equals(sysUser.getRoleType())){ merchSn = sysUser.getMerchSn(); } Map map = monthlyCustomersService.queryMonthlyCustomers(startMonth,endMonth,merchSn); returnMap.put("dateList", dateList); returnMap.putAll(map); } catch (Exception e) { e.printStackTrace(); return R.error(e.getMessage()); } return R.ok(returnMap); } @RequestMapping("/top10ForProduct") public R top10ForProduct(@RequestParam("month") String month, @RequestParam("week") String week){ Map map = monthlyCustomersService.top10ForProduct(month,week); return R.ok(map); } @RequestMapping("/top10ByBrandAndSupplier") public R top10ByBrandAndSupplier(@RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate){ Map map = monthlyCustomersService.top10ByBrandAndSupplier(startDate,endDate); return R.ok(map); } @RequestMapping("/customersQueryByWeek") public R queryWeeklyCustomers(@RequestParam("startWeek") String startWeek, @RequestParam("endWeek") String endWeek) throws ParseException { List dateList = new ArrayList<>(); try { calculateDifferentWeek(dateList, startWeek, endWeek); } catch (ParseException e) { e.printStackTrace(); } String merchSn = null; SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); if(!"1".equals(sysUser.getRoleType())){ merchSn = sysUser.getMerchSn(); } SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar bef = Calendar.getInstance(); Calendar aft = Calendar.getInstance(); bef.setFirstDayOfWeek(Calendar.MONDAY); aft.setFirstDayOfWeek(Calendar.MONDAY); bef.setTime(sdf.parse(startWeek)); aft.setTime(sdf.parse(endWeek)); int befWeek = bef.get(Calendar.WEEK_OF_YEAR); int aftWeek = aft.get(Calendar.WEEK_OF_YEAR); if(befWeek<10){ startWeek =weekSdf.format(bef.getTime())+"-0"+befWeek; }else{ startWeek =weekSdf.format(bef.getTime())+"-"+befWeek; } if(aftWeek<10){ endWeek =weekSdf.format(aft.getTime())+"-0"+aftWeek; }else{ endWeek =weekSdf.format(aft.getTime())+"-"+aftWeek; } Map map = monthlyCustomersService.queryWeeklyCustomers(startWeek,endWeek,merchSn); Map returnMap = new HashMap<>(); returnMap.put("dateList", dateList); returnMap.putAll(map); return R.ok(returnMap); } // todo private void calculateDifferentWeek(List weekList, String startWeek, String endWeek) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat weekSdf = new SimpleDateFormat("yyyy"); Calendar bef = Calendar.getInstance(); Calendar aft = Calendar.getInstance(); bef.setFirstDayOfWeek(Calendar.MONDAY); aft.setFirstDayOfWeek(Calendar.MONDAY); bef.setTime(sdf.parse(startWeek)); aft.setTime(sdf.parse(endWeek)); do { int i = bef.get(Calendar.WEEK_OF_YEAR); if (i<10){ weekList.add(weekSdf.format(bef.getTime())+"-0"+i); }else{ weekList.add(weekSdf.format(bef.getTime())+"-"+i); } bef.set(Calendar.DAY_OF_MONTH,bef.get(Calendar.DAY_OF_MONTH)+7); //给当前时间增加一周 } while (bef.compareTo(aft) <= 0); } @RequestMapping("/queryMonthlyWechatFollowers") public R queryMonthlyWechatFollowers(@RequestParam("startMonth") String startMonth, @RequestParam("endMonth") String endMonth) { List dateList = new ArrayList<>(); Map returnMap = new HashMap<>(); try { calculateDifferentMonth(dateList, startMonth, endMonth); } catch (ParseException e) { e.printStackTrace(); } try { String merchSn = null; SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); if(!"1".equals(sysUser.getRoleType())){ merchSn = sysUser.getMerchSn(); } Map map = monthlyCustomersService.queryMonthlyWechatFollowers(startMonth,endMonth,merchSn); returnMap.put("dateList", dateList); returnMap.putAll(map); } catch (Exception e) { e.printStackTrace(); return R.error(e.getMessage()); } return R.ok(returnMap); } @RequestMapping("/addWechatFollowers") public R addWechatFollowers( @RequestParam("wechatFollowers") Integer wechatFollowers) { try { String merchSn = null; SysUserEntity sysUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); if(!"1".equals(sysUser.getRoleType())){ merchSn = sysUser.getMerchSn(); } WechatFollowersEntity wechatFollowersEntity = new WechatFollowersEntity(); wechatFollowersEntity.setCreaterSn(ShiroUtils.getUserId().toString()); wechatFollowersEntity.setCreateTime(new Date()); wechatFollowersEntity.setWechatFollowers(wechatFollowers); wechatFollowersEntity.setMerchSn(merchSn); monthlyCustomersService.addWechatFollowers(wechatFollowersEntity); } catch (Exception e) { e.printStackTrace(); return R.error(e.getMessage()); } return R.ok("添加成功"); } }