| | |
| | | import cn.lili.modules.lmk.domain.vo.OrderCountVO; |
| | | import cn.lili.modules.lmk.enums.general.AdminRoleEnum; |
| | | import cn.lili.modules.lmk.enums.general.VirtualGoodsTypeEnum; |
| | | import cn.lili.modules.lmk.mapper.LmkOrderSelectMapper; |
| | | import cn.lili.modules.lmk.service.CouponVirtualService; |
| | | import cn.lili.modules.member.entity.dos.Member; |
| | | import cn.lili.modules.member.entity.dto.MemberAddressDTO; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.InputStream; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.net.URLEncoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | |
| | | |
| | | @Autowired |
| | | private GoodsSkuService goodsSkuService; |
| | | |
| | | @Autowired |
| | | private LmkOrderSelectMapper lmkOrderSelectMapper; |
| | | |
| | | |
| | | private final static String LOCK_ORDER_NO_MQ="lock_order_no_mq:"; |
| | | private final static String LOCK_EDIT_ORDER_ADDRESS="lock_edit_order_address:"; |
| | | private final static String LOCK_COUPON_CARD="lock_coupon_card:"; |
| | |
| | | } |
| | | } |
| | | |
| | | List<Map<String, Object>> maps = baseMapper.selectOrderCountByDay(startTime,endTime); |
| | | List<Map<String, Object>> maps = lmkOrderSelectMapper.selectOrderCountByDay(startTime,endTime); |
| | | |
| | | Map<String, Long> dayCountMap = maps.stream() |
| | | .collect(Collectors.toMap( |
| | |
| | | |
| | | |
| | | |
| | | List<Map<String, Object>> maps = baseMapper.selectOrderTimePeriod(startTime,endTime); |
| | | |
| | | List<Map<String, Object>> maps = lmkOrderSelectMapper.selectOrderTimePeriod(startTime,endTime); |
| | | List<Map<String,Object>> countMap = lmkOrderSelectMapper.selectViewDataCount(startTime,endTime); |
| | | Map<String, Long> countByDayHour = maps.stream() |
| | | .collect(Collectors.toMap( |
| | | map -> map.get("hour").toString(), |
| | | map -> Long.valueOf(map.get("count").toString()), |
| | | Long::sum // 如果有重复,累加count |
| | | )); |
| | | |
| | | System.out.println("打印记录---------------------------------------"); |
| | | System.out.println(countMap); |
| | | System.out.println("---------------------------------------"); |
| | | // 遍历查看结果 |
| | | List<Long> countList = new ArrayList<>(); |
| | | for (int i = 0; i < 24; i++) { |
| | |
| | | return Result.ok().data(map); |
| | | } |
| | | |
| | | @Override |
| | | public Result gerProductRepurchase(StatisticsQueryParam queryParam) { |
| | | Date startTime = null; |
| | | Date endTime = new Date(); // 结束时间默认是当前时间 |
| | | |
| | | Calendar calendar = Calendar.getInstance(); // 用于日期计算的日历实例 |
| | | |
| | | if (queryParam.getYear() != null && queryParam.getMonth() != null) { |
| | | Date[] dates =CommonUtil.getMonthStartAndEnd(queryParam.getYear(),queryParam.getMonth()); |
| | | startTime = dates[0]; |
| | | endTime = dates[1]; |
| | | }else{ |
| | | switch (queryParam.getSearchType()) { |
| | | case "TODAY": |
| | | // 今天:从今天0点到现在 |
| | | calendar.setTime(new Date()); // 重置为当前时间 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); // 小时设为0(24小时制) |
| | | calendar.set(Calendar.MINUTE, 0); // 分钟设为0 |
| | | calendar.set(Calendar.SECOND, 0); // 秒设为0 |
| | | calendar.set(Calendar.MILLISECOND, 0); // 毫秒设为0 |
| | | startTime = calendar.getTime(); // 得到今天0点的Date对象 |
| | | break; |
| | | case "YESTERDAY": |
| | | // 昨天:从昨天0点到昨天23:59:59.999 |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -1); // 日期减1天(变为昨天) |
| | | |
| | | // 设置昨天0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | // 设置昨天23:59:59.999 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 23); |
| | | calendar.set(Calendar.MINUTE, 59); |
| | | calendar.set(Calendar.SECOND, 59); |
| | | calendar.set(Calendar.MILLISECOND, 999); |
| | | endTime = calendar.getTime(); |
| | | break; |
| | | case "LAST_SEVEN": |
| | | // 过去七天:从7天前0点到现在(含今天共7天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -6); // 日期减6天(7天前的今天) |
| | | |
| | | // 设置7天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | break; |
| | | case "LAST_THIRTY": |
| | | // 过去30天:从30天前0点到现在(含今天共30天) |
| | | calendar.setTime(new Date()); |
| | | calendar.add(Calendar.DATE, -29); // 日期减29天(30天前的今天) |
| | | |
| | | // 设置30天前0点 |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | startTime = calendar.getTime(); |
| | | |
| | | break; |
| | | default: |
| | | return Result.error("不支持的时间范围类型"); |
| | | } |
| | | } |
| | | List<Map<String, Object>> maps = lmkOrderSelectMapper.selectProductRepurchase(startTime,endTime,queryParam.getCurrentLimit()); |
| | | List<String> goodsData = new ArrayList<>(); |
| | | List<BigDecimal> rateData = new ArrayList<>(); |
| | | |
| | | // 遍历结果集,提取数据到集合 |
| | | for (Map<String, Object> map : maps) { |
| | | // 提取商品名(注意:键是resultMap中定义的property值"goodsName") |
| | | if (Objects.nonNull(map.get("goodsName"))) { |
| | | String goodsName = map.get("goodsName").toString(); |
| | | goodsData.add(goodsName); |
| | | } |
| | | |
| | | // 提取复购率(复购率通常是数字类型,这里用BigDecimal接收) |
| | | if (Objects.nonNull(map.get("repurchaseRate"))) { |
| | | // 转换为BigDecimal(根据实际类型调整,也可能是Double等) |
| | | BigDecimal rate = new BigDecimal(map.get("repurchaseRate").toString()).setScale(2, RoundingMode.HALF_UP); |
| | | rateData.add(rate); |
| | | } |
| | | } |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("goodsData",goodsData); |
| | | map.put("rateData",rateData); |
| | | |
| | | return Result.ok().data(map); |
| | | } |
| | | |
| | | /** |
| | | * 虚拟成团 |
| | | * |