diff --git a/sky-server/src/main/java/com/sky/controller/admin/WorkSpaceController.java b/sky-server/src/main/java/com/sky/controller/admin/WorkSpaceController.java new file mode 100644 index 0000000..cbd3f01 --- /dev/null +++ b/sky-server/src/main/java/com/sky/controller/admin/WorkSpaceController.java @@ -0,0 +1,76 @@ +package com.sky.controller.admin; + +import com.sky.result.Result; +import com.sky.service.WorkspaceService; +import com.sky.vo.BusinessDataVO; +import com.sky.vo.DishOverViewVO; +import com.sky.vo.OrderOverViewVO; +import com.sky.vo.SetmealOverViewVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import java.time.LocalDateTime; +import java.time.LocalTime; + +/** + * 工作台 + */ +@RestController +@RequestMapping("/admin/workspace") +@Slf4j +@Api(tags = "工作台相关接口") +public class WorkSpaceController { + + @Autowired + private WorkspaceService workspaceService; + + /** + * 工作台今日数据查询 + * @return + */ + @GetMapping("/businessData") + @ApiOperation("工作台今日数据查询") + public Result businessData(){ + //获得当天的开始时间 + LocalDateTime begin = LocalDateTime.now().with(LocalTime.MIN); + //获得当天的结束时间 + LocalDateTime end = LocalDateTime.now().with(LocalTime.MAX); + + BusinessDataVO businessDataVO = workspaceService.getBusinessData(begin, end); + return Result.success(businessDataVO); + } + + /** + * 查询订单管理数据 + * @return + */ + @GetMapping("/overviewOrders") + @ApiOperation("查询订单管理数据") + public Result orderOverView(){ + return Result.success(workspaceService.getOrderOverView()); + } + + /** + * 查询菜品总览 + * @return + */ + @GetMapping("/overviewDishes") + @ApiOperation("查询菜品总览") + public Result dishOverView(){ + return Result.success(workspaceService.getDishOverView()); + } + + /** + * 查询套餐总览 + * @return + */ + @GetMapping("/overviewSetmeals") + @ApiOperation("查询套餐总览") + public Result setmealOverView(){ + return Result.success(workspaceService.getSetmealOverView()); + } +} diff --git a/sky-server/src/main/java/com/sky/mapper/DishMapper.java b/sky-server/src/main/java/com/sky/mapper/DishMapper.java index d3ac44b..80513be 100644 --- a/sky-server/src/main/java/com/sky/mapper/DishMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/DishMapper.java @@ -9,6 +9,7 @@ import com.sky.vo.DishVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; +import java.util.Map; @Mapper public interface DishMapper { @@ -82,4 +83,12 @@ public interface DishMapper { * @return List */ List getBySetmealId(Long id); + + /** + * 根据条件统计菜品数量 + * + * @param map + * @return + */ + Integer countByMap(Map map); } diff --git a/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java b/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java index 53fac70..b74a5db 100644 --- a/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/SetmealMapper.java @@ -7,6 +7,7 @@ import com.sky.vo.DishItemVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; +import java.util.Map; @Mapper public interface SetmealMapper { @@ -65,4 +66,12 @@ public interface SetmealMapper { * @param setmealId Long */ void deleteById(Long setmealId); + + /** + * 根据条件统计套餐数量 + * + * @param map + * @return + */ + Integer countByMap(Map map); } diff --git a/sky-server/src/main/java/com/sky/mapper/UserMapper.java b/sky-server/src/main/java/com/sky/mapper/UserMapper.java index 61fc143..5bb8832 100644 --- a/sky-server/src/main/java/com/sky/mapper/UserMapper.java +++ b/sky-server/src/main/java/com/sky/mapper/UserMapper.java @@ -37,5 +37,5 @@ public interface UserMapper { * @param map Map * @return Integer */ - Integer sumByMap(Map map); + Integer countByMap(Map map); } diff --git a/sky-server/src/main/java/com/sky/service/WorkspaceService.java b/sky-server/src/main/java/com/sky/service/WorkspaceService.java new file mode 100644 index 0000000..09d0c8f --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/WorkspaceService.java @@ -0,0 +1,37 @@ +package com.sky.service; + +import com.sky.vo.BusinessDataVO; +import com.sky.vo.DishOverViewVO; +import com.sky.vo.OrderOverViewVO; +import com.sky.vo.SetmealOverViewVO; +import java.time.LocalDateTime; + +public interface WorkspaceService { + + /** + * 根据时间段统计营业数据 + * @param begin + * @param end + * @return + */ + BusinessDataVO getBusinessData(LocalDateTime begin, LocalDateTime end); + + /** + * 查询订单管理数据 + * @return + */ + OrderOverViewVO getOrderOverView(); + + /** + * 查询菜品总览 + * @return + */ + DishOverViewVO getDishOverView(); + + /** + * 查询套餐总览 + * @return + */ + SetmealOverViewVO getSetmealOverView(); + +} diff --git a/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java index 3711f71..eec6ffe 100644 --- a/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/ReportServiceImpl.java @@ -106,10 +106,10 @@ public class ReportServiceImpl implements ReportService { HashMap map = new HashMap<>(); map.put("end", endTime); // 总用户数量 - Integer totalUser = userMapper.sumByMap(map); + Integer totalUser = userMapper.countByMap(map); map.put("begin", beginTime); // 新增用户数量 - Integer newUser = userMapper.sumByMap(map); + Integer newUser = userMapper.countByMap(map); totalUserList.add(totalUser); newUserList.add(newUser); } diff --git a/sky-server/src/main/java/com/sky/service/impl/WorkspaceServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/WorkspaceServiceImpl.java new file mode 100644 index 0000000..60ba313 --- /dev/null +++ b/sky-server/src/main/java/com/sky/service/impl/WorkspaceServiceImpl.java @@ -0,0 +1,165 @@ +package com.sky.service.impl; + +import com.sky.constant.StatusConstant; +import com.sky.entity.Orders; +import com.sky.mapper.DishMapper; +import com.sky.mapper.OrderMapper; +import com.sky.mapper.SetmealMapper; +import com.sky.mapper.UserMapper; +import com.sky.service.WorkspaceService; +import com.sky.vo.BusinessDataVO; +import com.sky.vo.DishOverViewVO; +import com.sky.vo.OrderOverViewVO; +import com.sky.vo.SetmealOverViewVO; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.HashMap; +import java.util.Map; + +@Service +@Slf4j +public class WorkspaceServiceImpl implements WorkspaceService { + + @Resource + private OrderMapper orderMapper; + @Resource + private UserMapper userMapper; + @Resource + private DishMapper dishMapper; + @Resource + private SetmealMapper setmealMapper; + + /** + * 根据时间段统计营业数据 + * + * @param begin + * @param end + * @return + */ + public BusinessDataVO getBusinessData(LocalDateTime begin, LocalDateTime end) { + /** + * 营业额:当日已完成订单的总金额 + * 有效订单:当日已完成订单的数量 + * 订单完成率:有效订单数 / 总订单数 + * 平均客单价:营业额 / 有效订单数 + * 新增用户:当日新增用户的数量 + */ + + HashMap map = new HashMap(); + map.put("begin", begin); + map.put("end", end); + + // 查询总订单数 + Integer totalOrderCount = orderMapper.countByMap(map); + + map.put("status", Orders.COMPLETED); + // 营业额 + Double turnover = orderMapper.sumByMap(map); + turnover = turnover == null ? 0.0 : turnover; + + // 有效订单数 + Integer validOrderCount = orderMapper.countByMap(map); + + Double unitPrice = 0.0; + + Double orderCompletionRate = 0.0; + if (totalOrderCount != 0 && validOrderCount != 0) { + // 订单完成率 + orderCompletionRate = validOrderCount.doubleValue() / totalOrderCount; + // 平均客单价 + unitPrice = turnover / validOrderCount; + } + + // 新增用户数 + Integer newUsers = userMapper.countByMap(map); + + return BusinessDataVO.builder() + .turnover(turnover) + .validOrderCount(validOrderCount) + .orderCompletionRate(orderCompletionRate) + .unitPrice(unitPrice) + .newUsers(newUsers) + .build(); + } + + + /** + * 查询订单管理数据 + * + * @return + */ + public OrderOverViewVO getOrderOverView() { + Map map = new HashMap(); + map.put("begin", LocalDateTime.now().with(LocalTime.MIN)); + map.put("status", Orders.TO_BE_CONFIRMED); + + // 待接单 + Integer waitingOrders = orderMapper.countByMap(map); + + // 待派送 + map.put("status", Orders.CONFIRMED); + Integer deliveredOrders = orderMapper.countByMap(map); + + // 已完成 + map.put("status", Orders.COMPLETED); + Integer completedOrders = orderMapper.countByMap(map); + + // 已取消 + map.put("status", Orders.CANCELLED); + Integer cancelledOrders = orderMapper.countByMap(map); + + // 全部订单 + map.put("status", null); + Integer allOrders = orderMapper.countByMap(map); + + return OrderOverViewVO.builder() + .waitingOrders(waitingOrders) + .deliveredOrders(deliveredOrders) + .completedOrders(completedOrders) + .cancelledOrders(cancelledOrders) + .allOrders(allOrders) + .build(); + } + + /** + * 查询菜品总览 + * + * @return + */ + public DishOverViewVO getDishOverView() { + Map map = new HashMap(); + map.put("status", StatusConstant.ENABLE); + Integer sold = dishMapper.countByMap(map); + + map.put("status", StatusConstant.DISABLE); + Integer discontinued = dishMapper.countByMap(map); + + return DishOverViewVO.builder() + .sold(sold) + .discontinued(discontinued) + .build(); + } + + /** + * 查询套餐总览 + * + * @return + */ + public SetmealOverViewVO getSetmealOverView() { + Map map = new HashMap(); + map.put("status", StatusConstant.ENABLE); + Integer sold = setmealMapper.countByMap(map); + + map.put("status", StatusConstant.DISABLE); + Integer discontinued = setmealMapper.countByMap(map); + + return SetmealOverViewVO.builder() + .sold(sold) + .discontinued(discontinued) + .build(); + } +} diff --git a/sky-server/src/main/resources/mapper/DishMapper.xml b/sky-server/src/main/resources/mapper/DishMapper.xml index 9699e50..26a238e 100644 --- a/sky-server/src/main/resources/mapper/DishMapper.xml +++ b/sky-server/src/main/resources/mapper/DishMapper.xml @@ -116,4 +116,17 @@ left join setmeal_dish b on a.id = b.dish_id where b.setmeal_id = #{id} + + + diff --git a/sky-server/src/main/resources/mapper/SetmealMapper.xml b/sky-server/src/main/resources/mapper/SetmealMapper.xml index 8ca8562..6993c64 100644 --- a/sky-server/src/main/resources/mapper/SetmealMapper.xml +++ b/sky-server/src/main/resources/mapper/SetmealMapper.xml @@ -92,4 +92,17 @@ from setmeal where id = #{id} + + + diff --git a/sky-server/src/main/resources/mapper/UserMapper.xml b/sky-server/src/main/resources/mapper/UserMapper.xml index 60d6d3c..5fcd41e 100644 --- a/sky-server/src/main/resources/mapper/UserMapper.xml +++ b/sky-server/src/main/resources/mapper/UserMapper.xml @@ -23,7 +23,7 @@ - select count(id) from user