From d56e53508f12858560bef9df4d947287d2c7ac3f Mon Sep 17 00:00:00 2001 From: zengtao01 Date: Mon, 22 Apr 2024 09:25:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/enums/ErrorCodeConstants.java | 4 +- .../devicewarn/DeviceWarnController.java | 100 +++++++++++++++ .../devicewarn/vo/DeviceWarnPageReqVO.java | 31 +++++ .../admin/devicewarn/vo/DeviceWarnRespVO.java | 36 ++++++ .../devicewarn/vo/DeviceWarnSaveReqVO.java | 22 ++++ ...sStoreVo.java => DiningPlatesStoreVO.java} | 7 +- .../admin/screen/ScreenController.java | 58 ++++++++- .../admin/screen/vo/CarTeenInfoVO.java | 27 ++++ .../controller/admin/screen/vo/DishVo.java | 2 +- .../admin/screen/vo/StoreEvaluateVO.java | 19 +++ .../customertraffic/CustomerTrafficDO.java | 6 + .../dataobject/devicewarn/DeviceWarnDO.java | 43 +++++++ .../diningplates/DiningPlatesDO.java | 11 ++ .../mysql/devicewarn/DeviceWarnMapper.java | 29 +++++ .../diningplates/DiningPlatesMapper.java | 7 +- .../dal/mysql/order/DishOrderMapper.java | 5 +- .../mysql/orderdetail/OrderDetailMapper.java | 6 +- .../module/member/job/CustomerTrafficJob.java | 7 +- .../service/devicewarn/DeviceWarnService.java | 60 +++++++++ .../devicewarn/DeviceWarnServiceImpl.java | 118 ++++++++++++++++++ .../diningplates/DiningPlatesService.java | 4 +- .../diningplates/DiningPlatesServiceImpl.java | 68 ++++++---- .../member/service/order/OrderService.java | 11 +- .../service/order/OrderServiceImpl.java | 52 +++++++- .../orderdetail/OrderDetailService.java | 4 +- .../orderdetail/OrderDetailServiceImpl.java | 17 ++- .../storeevaluate/StoreEvaluateService.java | 4 +- .../StoreEvaluateServiceImpl.java | 24 ++-- .../mapper/order/DishOrderMapper.xml | 26 +++- .../mapper/orderdetail/OrderDetailMapper.xml | 2 +- .../system/api/deviceInfo/DeviceInfoApi.java | 4 + .../api/deviceInfo/DeviceInfoApiImpl.java | 14 +++ 32 files changed, 741 insertions(+), 87 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/DeviceWarnController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnSaveReqVO.java rename yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/diningplates/vo/{DiningPlatesStoreVo.java => DiningPlatesStoreVO.java} (70%) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/CarTeenInfoVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/StoreEvaluateVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/devicewarn/DeviceWarnDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/devicewarn/DeviceWarnMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnServiceImpl.java diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index 31abbf3b..0f034d9c 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -66,7 +66,9 @@ public interface ErrorCodeConstants { ErrorCode ALLOC_NOT_EXISTS = new ErrorCode(1_004_013_007, "订单明细不存在"); ErrorCode STORE_EVALUATE_NOT_EXISTS = new ErrorCode(1_004_013_008, "订单明细不存在"); ErrorCode STORE_COMPLAIN_NOT_EXISTS = new ErrorCode(1_004_013_009, "订单明细不存在"); - ErrorCode CUSTOMER_TRAFFIC_NOT_EXISTS = new ErrorCode(1_004_013_009, "订单明细不存在"); + ErrorCode CUSTOMER_TRAFFIC_NOT_EXISTS = new ErrorCode(1_004_013_010, "订单明细不存在"); + ErrorCode DEVICE_WARN_NOT_EXISTS = new ErrorCode(1_004_013_011, "订单明细不存在"); + ErrorCode DINING_PLATES_NOT_EXISTS = new ErrorCode(1_004_099_000, "餐盘不存在"); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/DeviceWarnController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/DeviceWarnController.java new file mode 100644 index 00000000..44f8696f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/DeviceWarnController.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.member.controller.admin.devicewarn; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.DeviceWarnPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.DeviceWarnRespVO; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.DeviceWarnSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.devicewarn.DeviceWarnDO; +import cn.iocoder.yudao.module.member.service.devicewarn.DeviceWarnService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 设备告警次数") +@RestController +@RequestMapping("/member/device-warn") +@Validated +public class DeviceWarnController { + + @Resource + private DeviceWarnService deviceWarnService; + + @PostMapping("/create") + @Operation(summary = "创建设备告警次数") + @PreAuthorize("@ss.hasPermission('member:device-warn:create')") + public CommonResult createDeviceWarn(@Valid @RequestBody DeviceWarnSaveReqVO createReqVO) { + return success(deviceWarnService.createDeviceWarn(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新设备告警次数") + @PreAuthorize("@ss.hasPermission('member:device-warn:update')") + public CommonResult updateDeviceWarn(@Valid @RequestBody DeviceWarnSaveReqVO updateReqVO) { + deviceWarnService.updateDeviceWarn(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除设备告警次数") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:device-warn:delete')") + public CommonResult deleteDeviceWarn(@RequestParam("id") Long id) { + deviceWarnService.deleteDeviceWarn(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得设备告警次数") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:device-warn:query')") + public CommonResult getDeviceWarn(@RequestParam("id") Long id) { + DeviceWarnDO deviceWarn = deviceWarnService.getDeviceWarn(id); + return success(BeanUtils.toBean(deviceWarn, DeviceWarnRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得设备告警次数分页") + @PreAuthorize("@ss.hasPermission('member:device-warn:query')") + public CommonResult> getDeviceWarnPage(@Valid DeviceWarnPageReqVO pageReqVO) { + PageResult pageResult = deviceWarnService.getDeviceWarnPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, DeviceWarnRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出设备告警次数 Excel") + @PreAuthorize("@ss.hasPermission('member:device-warn:export')") + @OperateLog(type = EXPORT) + public void exportDeviceWarnExcel(@Valid DeviceWarnPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deviceWarnService.getDeviceWarnPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "设备告警次数.xls", "数据", DeviceWarnRespVO.class, + BeanUtils.toBean(list, DeviceWarnRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnPageReqVO.java new file mode 100644 index 00000000..820dbff6 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 设备告警次数分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class DeviceWarnPageReqVO extends PageParam { + + @Schema(description = "设备Ip") + private String deviceSn; + + @Schema(description = "门店id", example = "27128") + private Long storeId; + + @Schema(description = "报警次数") + private Integer warnNum; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnRespVO.java new file mode 100644 index 00000000..a9eb2b11 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnRespVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 设备告警次数 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DeviceWarnRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26802") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "设备Ip") + @ExcelProperty("设备Ip") + private String deviceSn; + + @Schema(description = "门店id", example = "27128") + @ExcelProperty("门店id") + private Long storeId; + + @Schema(description = "报警次数") + @ExcelProperty("报警次数") + private Integer warnNum; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnSaveReqVO.java new file mode 100644 index 00000000..22085f4f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/devicewarn/vo/DeviceWarnSaveReqVO.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 设备告警次数新增/修改 Request VO") +@Data +public class DeviceWarnSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26802") + private Long id; + + @Schema(description = "设备Ip") + private String deviceSn; + + @Schema(description = "门店id", example = "27128") + private Long storeId; + + @Schema(description = "报警次数") + private Integer warnNum; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/diningplates/vo/DiningPlatesStoreVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/diningplates/vo/DiningPlatesStoreVO.java similarity index 70% rename from yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/diningplates/vo/DiningPlatesStoreVo.java rename to yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/diningplates/vo/DiningPlatesStoreVO.java index 056802fe..79a3715d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/diningplates/vo/DiningPlatesStoreVo.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/diningplates/vo/DiningPlatesStoreVO.java @@ -9,11 +9,14 @@ import lombok.Data; * @since 2024/4/16 */ @Data -public class DiningPlatesStoreVo { +public class DiningPlatesStoreVO { @Schema(description = "门店ID") private Long storeId; - @Schema(description = "门店ID") + @Schema(description = "人数") private Integer num; + + @Schema(description = "门店名") + private String storeName; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java index c33cb14c..5ca44c77 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/ScreenController.java @@ -5,14 +5,19 @@ import cn.hutool.core.date.DateTime; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.controller.admin.customertraffic.vo.CustomerTrafficRespVO; -import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVo; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.StoreEvaluateVO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDetailDO; import cn.iocoder.yudao.module.member.service.customertraffic.CustomerTrafficService; +import cn.iocoder.yudao.module.member.service.devicewarn.DeviceWarnService; import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import cn.iocoder.yudao.module.member.service.storeevaluate.StoreEvaluateService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.GetMapping; @@ -22,8 +27,9 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.annotation.security.PermitAll; +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; import java.util.List; -import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -45,11 +51,13 @@ public class ScreenController { private OrderService orderService; @Resource private OrderDetailService orderDetailService; + @Resource + private DeviceWarnService deviceWarnService; @GetMapping("/getEvaluate") @Operation(summary = "获得店铺评价,1-好评,2-差评") @PermitAll - public Map getEvaluate(Long storeId){ + public StoreEvaluateVO getEvaluate(Long storeId){ return storeEvaluateService.getEvaluate(storeId); } @@ -78,14 +86,52 @@ public class ScreenController { @GetMapping("/getUserCount") @Operation(summary = "获取总顾客流量") @PermitAll - public CommonResult getUserCount(Long storeId) { - return success(orderService.selectTodayUser(storeId)); + @Parameters({ + @Parameter(name = "storeId", description = "门店Id,不传查所有"), + @Parameter(name = "time", description = "时间,不传查总所有,yyyy-mm-dd") + }) + public CommonResult getUserCount(Long storeId,String time) { + return success(orderService.selectUser(storeId,time)); } @GetMapping("/selectDishSale") @Operation(summary = "菜品今日销售") @PermitAll - public CommonResult> selectDishSale(Long storeId) { + public CommonResult> selectDishSale(Long storeId) { return success(orderDetailService.selectDishSale(storeId)); } + + @GetMapping("/addWarn") + @Operation(summary = "添加设备报警次数") + @PermitAll + public void addWarn(HttpServletRequest request) { + deviceWarnService.addDeviceWarn(request); + } + + @GetMapping("/getWarn") + @Operation(summary = "获取门店报警次数") + @PermitAll + public CommonResult getWarn(Long storeId) { + return success(deviceWarnService.getWarn(storeId)); + } + + @GetMapping("/getSaleMoney") + @Operation(summary = "销售额") + @PermitAll + @Parameters({ + @Parameter(name = "storeId", description = "门店Id,不传查所有门店"), + @Parameter(name = "time", description = "时间,不传查总销售额,yyyy-mm-dd") + }) + public CommonResult getSaleMoney(Long storeId, String time) { + return success(orderService.getSaleMoney(storeId,time)); + } + + + @GetMapping("/getCarTeenInfo") + @Operation(summary = "获取食堂信息") + @PermitAll + public CommonResult> getCarTeenInfo() { + return success(orderService.getCarTeenInfo()); + } + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/CarTeenInfoVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/CarTeenInfoVO.java new file mode 100644 index 00000000..1bb79c5d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/CarTeenInfoVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.admin.screen.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author zt + * @description + * @since 2024/4/19 + */ +@Data +public class CarTeenInfoVO { + @Schema(description = "今日销售额") + private BigDecimal todayMoney; + @Schema(description = "总销售e") + private BigDecimal totalMoney; + @Schema(description = "设备数量") + private String deviceNum; + @Schema(description = "供应人数") + private String peopleNUm; + @Schema(description = "门店Id") + private Long storeId; + @Schema(description = "门店名") + private String storesName; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/DishVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/DishVo.java index edf36be7..c4f6620f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/DishVo.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/DishVo.java @@ -11,7 +11,7 @@ import java.math.BigDecimal; * @since 2024/4/16 */ @Data -public class DishVo { +public class DishVO { @Schema(description = "菜品") private String dishesName; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/StoreEvaluateVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/StoreEvaluateVO.java new file mode 100644 index 00000000..a53466ff --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/screen/vo/StoreEvaluateVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.member.controller.admin.screen.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author zt + * @description + * @since 2024/4/19 + */ +@Data +public class StoreEvaluateVO { + @Schema(description = "好评率") + private String good; + @Schema(description = "差评率") + private String bad; + @Schema(description = "次数") + private Long num; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDO.java index c33e8290..e4c81791 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/customertraffic/CustomerTrafficDO.java @@ -39,6 +39,12 @@ public class CustomerTrafficDO extends BaseDO { * 门店id */ private Long storeId; + + /** + * 门店名 + */ + private String storeName; + /** * 顾客数 */ diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/devicewarn/DeviceWarnDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/devicewarn/DeviceWarnDO.java new file mode 100644 index 00000000..c6b11248 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/devicewarn/DeviceWarnDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.devicewarn; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 设备告警次数 DO + * + * @author 开发账号 + */ +@TableName("member_device_warn") +@KeySequence("member_device_warn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DeviceWarnDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 设备Ip + */ + private String deviceSn; + /** + * 门店id + */ + private Long storeId; + /** + * 报警次数 + */ + private Integer warnNum; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/diningplates/DiningPlatesDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/diningplates/DiningPlatesDO.java index fb9aabe0..c1c49571 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/diningplates/DiningPlatesDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/diningplates/DiningPlatesDO.java @@ -54,6 +54,17 @@ public class DiningPlatesDO extends BaseDO { * 状态:付费标志(0-无付费,1-正在付费) */ private String payFlag; + + /** + * 所属门店 + */ + private Long storeId; + + /** + * 所属门店 + */ + private String storeName; + /** * 绑定时间 */ diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/devicewarn/DeviceWarnMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/devicewarn/DeviceWarnMapper.java new file mode 100644 index 00000000..08020b3e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/devicewarn/DeviceWarnMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.dal.mysql.devicewarn; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.devicewarn.DeviceWarnDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.*; + +/** + * 设备告警次数 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface DeviceWarnMapper extends BaseMapperX { + + default PageResult selectPage(DeviceWarnPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DeviceWarnDO::getDeviceSn, reqVO.getDeviceSn()) + .eqIfPresent(DeviceWarnDO::getStoreId, reqVO.getStoreId()) + .eqIfPresent(DeviceWarnDO::getWarnNum, reqVO.getWarnNum()) + .betweenIfPresent(DeviceWarnDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(DeviceWarnDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/diningplates/DiningPlatesMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/diningplates/DiningPlatesMapper.java index 1cfd55fc..0c565edd 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/diningplates/DiningPlatesMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/diningplates/DiningPlatesMapper.java @@ -4,12 +4,8 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesPageReqVO; -import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesStoreVo; import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO; import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; /** * 餐盘 Mapper @@ -29,7 +25,6 @@ public interface DiningPlatesMapper extends BaseMapperX { .orderByDesc(DiningPlatesDO::getId)); } - @Select("select store_id,count(*) as num from member_dining_plates where create_time = #{time} group by store_id") - List selectCountByStore(String time); + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/order/DishOrderMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/order/DishOrderMapper.java index 981f84fd..dd10b6be 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/order/DishOrderMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/order/DishOrderMapper.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -44,6 +45,8 @@ public interface DishOrderMapper extends BaseMapperX { } - Integer selectTodayUser(@Param("time") String time,@Param("storeId") Long storeId); + Integer selectUser(@Param("time")Long storeId,@Param("storeId")String time); + + BigDecimal getSaleMoney(@Param("storeId")Long storeId, @Param("time")String time); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetail/OrderDetailMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetail/OrderDetailMapper.java index a9a4680b..82b71de8 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetail/OrderDetailMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetail/OrderDetailMapper.java @@ -3,12 +3,11 @@ package cn.iocoder.yudao.module.member.dal.mysql.orderdetail; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVo; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO; import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; import java.util.List; @@ -31,7 +30,6 @@ public interface OrderDetailMapper extends BaseMapperX { .orderByDesc(OrderDetailDO::getId)); } - @Select("") - List selectDishSale(@Param("time") String time, @Param("storeId") Long storeId); + List selectDishSale(@Param("time") String time, @Param("storeId") Long storeId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/CustomerTrafficJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/CustomerTrafficJob.java index 50c8f4e7..5f9595ff 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/CustomerTrafficJob.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/CustomerTrafficJob.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.job; import cn.hutool.core.collection.CollectionUtil; import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; -import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesStoreVo; +import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesStoreVO; import cn.iocoder.yudao.module.member.dal.dataobject.customertraffic.CustomerTrafficDO; import cn.iocoder.yudao.module.member.service.customertraffic.CustomerTrafficService; import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; @@ -40,7 +40,7 @@ public class CustomerTrafficJob implements JobHandler { public String execute(String param) { DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(MemberConstants.HOUR_FORMAT); LocalDateTime localDateTime = LocalDateTime.now().withSecond(0); - List diningPlatesNum = platesService.getDiningPlatesNum(localDateTime, ROUND_TIME); + List diningPlatesNum = platesService.getDiningPlatesNum(localDateTime, ROUND_TIME); if(CollectionUtil.isNotEmpty(diningPlatesNum)){ List addList = new ArrayList<>(); diningPlatesNum.forEach(a -> { @@ -48,7 +48,8 @@ public class CustomerTrafficJob implements JobHandler { CustomerTrafficDO customerTrafficDO = new CustomerTrafficDO(); customerTrafficDO.setCustomerNum(a.getNum()) .setTimePoint(localDateTime.format(dateFormatter)) - .setStoreId(a.getStoreId()); + .setStoreId(a.getStoreId()).setStoreName(a.getStoreName()) + .setCreateTime(localDateTime.withNano(0)); addList.add(customerTrafficDO); } }); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnService.java new file mode 100644 index 00000000..2e415641 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnService.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.member.service.devicewarn; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.DeviceWarnPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.DeviceWarnSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.devicewarn.DeviceWarnDO; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +/** + * 设备告警次数 Service 接口 + * + * @author 开发账号 + */ +public interface DeviceWarnService { + + /** + * 创建设备告警次数 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createDeviceWarn(@Valid DeviceWarnSaveReqVO createReqVO); + + /** + * 更新设备告警次数 + * + * @param updateReqVO 更新信息 + */ + void updateDeviceWarn(@Valid DeviceWarnSaveReqVO updateReqVO); + + /** + * 删除设备告警次数 + * + * @param id 编号 + */ + void deleteDeviceWarn(Long id); + + /** + * 获得设备告警次数 + * + * @param id 编号 + * @return 设备告警次数 + */ + DeviceWarnDO getDeviceWarn(Long id); + + /** + * 获得设备告警次数分页 + * + * @param pageReqVO 分页查询 + * @return 设备告警次数分页 + */ + PageResult getDeviceWarnPage(DeviceWarnPageReqVO pageReqVO); + + + void addDeviceWarn(HttpServletRequest request); + + Long getWarn(Long storeId); +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnServiceImpl.java new file mode 100644 index 00000000..bbb8eaef --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/devicewarn/DeviceWarnServiceImpl.java @@ -0,0 +1,118 @@ +package cn.iocoder.yudao.module.member.service.devicewarn; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.DeviceWarnPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.devicewarn.vo.DeviceWarnSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.devicewarn.DeviceWarnDO; +import cn.iocoder.yudao.module.member.dal.mysql.devicewarn.DeviceWarnMapper; +import cn.iocoder.yudao.module.member.util.MemberConstants; +import cn.iocoder.yudao.module.system.api.deviceInfo.DeviceInfoApi; +import cn.iocoder.yudao.module.system.api.deviceInfo.dto.DeviceInfoDto; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.DEVICE_WARN_NOT_EXISTS; + +/** + * 设备告警次数 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class DeviceWarnServiceImpl implements DeviceWarnService { + + @Resource + private DeviceWarnMapper deviceWarnMapper; + @Resource + private DeviceInfoApi deviceInfoApi; + + + @Override + public Long createDeviceWarn(DeviceWarnSaveReqVO createReqVO) { + // 插入 + DeviceWarnDO deviceWarn = BeanUtils.toBean(createReqVO, DeviceWarnDO.class); + deviceWarnMapper.insert(deviceWarn); + // 返回 + return deviceWarn.getId(); + } + + @Override + public void updateDeviceWarn(DeviceWarnSaveReqVO updateReqVO) { + // 校验存在 + validateDeviceWarnExists(updateReqVO.getId()); + // 更新 + DeviceWarnDO updateObj = BeanUtils.toBean(updateReqVO, DeviceWarnDO.class); + deviceWarnMapper.updateById(updateObj); + } + + @Override + public void deleteDeviceWarn(Long id) { + // 校验存在 + validateDeviceWarnExists(id); + // 删除 + deviceWarnMapper.deleteById(id); + } + + private void validateDeviceWarnExists(Long id) { + if (deviceWarnMapper.selectById(id) == null) { + throw exception(DEVICE_WARN_NOT_EXISTS); + } + } + + @Override + public DeviceWarnDO getDeviceWarn(Long id) { + return deviceWarnMapper.selectById(id); + } + + @Override + public PageResult getDeviceWarnPage(DeviceWarnPageReqVO pageReqVO) { + return deviceWarnMapper.selectPage(pageReqVO); + } + + @Override + public void addDeviceWarn(HttpServletRequest request) { + String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT)); + String deviceIp = request.getHeader("Authorization"); + DeviceInfoDto device = deviceInfoApi.getDevice(deviceIp); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("date_format(create_time,'%Y-%m-%d')", format) + .eq("device_sn", deviceIp) + .last(MemberConstants.LIMIT_ONE); + DeviceWarnDO old = deviceWarnMapper.selectOne(queryWrapper); + if (ObjUtil.isNotEmpty(old)) { + old.setWarnNum(old.getWarnNum() + 1); + deviceWarnMapper.updateById(old); + } else { + DeviceWarnDO deviceWarnDO = new DeviceWarnDO(); + deviceWarnDO.setDeviceSn(deviceIp).setWarnNum(1).setStoreId(device.getCarteenId()); + deviceWarnMapper.insert(deviceWarnDO); + } + } + + @Override + public Long getWarn(Long storeId) { + String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT)); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("sum(warn_num) as warnNum") + .eq("date_format(create_time,'%Y-%m-%d')", format) + .eq(storeId!=null,"store_id", storeId); + List> maps = deviceWarnMapper.selectMaps(queryWrapper); + if(CollectionUtil.isNotEmpty(maps) && maps.get(0)!=null){ + return Long.valueOf(maps.get(0).get("warnNum").toString()); + } + return 0L; + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java index 53ce8e6e..4f01e560 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.service.diningplates; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesSaveReqVO; -import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesStoreVo; +import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesStoreVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO; import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO; @@ -91,5 +91,5 @@ public interface DiningPlatesService { AppUserInfoCardVO appCheckBind(String diningPlatesNum); - List getDiningPlatesNum(LocalDateTime localDateTime, Integer time); + List getDiningPlatesNum(LocalDateTime localDateTime, Integer time); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java index 83133ab8..87616af6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.websocket.core.sender.WebSocketMessageSender; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesSaveReqVO; -import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesStoreVo; +import cn.iocoder.yudao.module.member.controller.admin.diningplates.vo.DiningPlatesStoreVO; import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO; import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO; import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; @@ -17,6 +17,8 @@ import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import cn.iocoder.yudao.module.member.service.card.CardService; import cn.iocoder.yudao.module.member.util.MemberConstants; +import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.data.redis.core.StringRedisTemplate; @@ -29,7 +31,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; -import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -56,6 +58,8 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { private StringRedisTemplate stringRedisTemplate; @Resource private WebSocketMessageSender webSocketMessageSender; + @Resource + private CarteenApi carteenApi; @Override public Long createDiningPlates(DiningPlatesSaveReqVO createReqVO) { @@ -148,7 +152,7 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.lambdaQuery() .eq(MemberUserDO::getCardId, cardId) .last(MemberConstants.LIMIT_ONE)); - checkMemberUser(memberUserDO,false); + checkMemberUser(memberUserDO, false); //余额验证 BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId()); checkMoney(money); @@ -160,9 +164,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { //创建初始订单 DishOrderDO dishOrderDO = new DishOrderDO(); - dishOrderDO.setDiningPlatesNum(diningPlatesNum); - dishOrderDO.setOrderStatus(DishOrderDO.INCOMPLETE); - dishOrderDO.setUserId(memberUserDO.getId()); + dishOrderDO.setDiningPlatesNum(diningPlatesNum) + .setOrderStatus(DishOrderDO.INCOMPLETE) + .setUserId(memberUserDO.getId()) + .setStoreId(diningPlatesDO.getStoreId()) + .setStoreName(diningPlatesDO.getStoreName()); dishOrderMapper.insert(dishOrderDO); //设置总价 @@ -185,7 +191,7 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { MemberUserDO memberUserDO = memberUserMapper.selectOne(Wrappers.lambdaQuery() .eq(MemberUserDO::getFaceId, faceId) .last(MemberConstants.LIMIT_ONE)); - checkMemberUser(memberUserDO,true); + checkMemberUser(memberUserDO, true); //余额验证 BigDecimal money = cardService.getMoneyByUserId(memberUserDO.getId()); checkMoney(money); @@ -211,6 +217,7 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { //afterBind(memberUserDO.getId()); return data; } + @Override public Boolean checkBind(String diningPlatesNum) { DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.lambdaQuery() @@ -221,6 +228,7 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { } return true; } + @Override public AppUserInfoCardVO appCheckBind(String diningPlatesNum) { DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.lambdaQuery() @@ -239,7 +247,7 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { public void checkDiningPlates(DiningPlatesDO diningPlatesDO) { - if(diningPlatesDO == null) { + if (diningPlatesDO == null) { throw exception(DINING_PLATES_NOT_EXISTS); } if (diningPlatesDO.getUserId() != null) { @@ -247,11 +255,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { } } - public void checkMemberUser(MemberUserDO memberUserDo,Boolean isFace) { - if(memberUserDo == null){ - if (isFace){ + public void checkMemberUser(MemberUserDO memberUserDo, Boolean isFace) { + if (memberUserDo == null) { + if (isFace) { throw exception(FACE_NOT_BIND_USER); - }else { + } else { throw exception(CARD_NOT_BIND_USER); } } @@ -268,21 +276,33 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { @Override - public List getDiningPlatesNum(LocalDateTime localDateTime, Integer time) { + public List getDiningPlatesNum(LocalDateTime localDateTime, Integer time) { + List result = new ArrayList<>(); // 获取当前时间 - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT); - LocalDateTime currentTime = localDateTime; + LocalDateTime endTime = localDateTime; // 计算指定分钟之前的时间 - String nowTime = currentTime.format(dateFormatter); - List diningPlatesStoreVos = diningPlatesMapper.selectCountByStore(nowTime); - return diningPlatesStoreVos; + LocalDateTime startTime = endTime.minusMinutes(10); + + List diningPlatesDOS = diningPlatesMapper.selectList(Wrappers.lambdaQuery() + .le(DiningPlatesDO::getBindingTime, endTime) + .gt(DiningPlatesDO::getBindingTime, startTime)); + List carteenList = carteenApi.getCarteenList(); + carteenList.forEach(dto->{ + DiningPlatesStoreVO diningPlatesStoreVO = new DiningPlatesStoreVO(); + diningPlatesStoreVO.setStoreId(dto.getId()); + diningPlatesStoreVO.setStoreName(dto.getStoresName()); + long count = diningPlatesDOS.stream().filter(diningPlatesDO -> dto.getId().equals(diningPlatesDO.getStoreId())).count(); + diningPlatesStoreVO.setNum(Integer.valueOf(String.valueOf(count))); + result.add(diningPlatesStoreVO); + }); + return result; } /** * 绑定之后的操作 */ - public void afterBind(Long userId){ + public void afterBind(Long userId) { //判断是否已记录 LocalDate today = LocalDate.now(); @@ -294,17 +314,17 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { List dishOrderDOS = dishOrderMapper.selectList(Wrappers.lambdaQuery() .eq(DishOrderDO::getUserId, userId) .between(DishOrderDO::getCreateTime, startOfDay, endOfDay)); - if(dishOrderDOS.size() > 0){ + if (dishOrderDOS.size() > 0) { return; } String s = stringRedisTemplate.opsForValue().get(MemberConstants.CUSTOMER_PREFIX); - if(StrUtil.isBlank(s)){ + if (StrUtil.isBlank(s)) { s = "1"; - }else { - s = String.valueOf(Integer.valueOf(s)+1); + } else { + s = String.valueOf(Integer.valueOf(s) + 1); } - stringRedisTemplate.opsForValue().set(MemberConstants.CUSTOMER_PREFIX,s); + stringRedisTemplate.opsForValue().set(MemberConstants.CUSTOMER_PREFIX, s); //根据餐盘对应的门店ID发送给对应的用户 webSocketMessageSender.sendObject(UserTypeEnum.ADMIN.getValue(), 1L, // 给指定用户 "demo-message-receive", s); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java index 14ead6f1..11e3eb1b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.order; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderPageReqVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderRespVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderSaveReqVO; @@ -10,6 +11,7 @@ import cn.iocoder.yudao.module.member.controller.app.order.vo.AppPageVo; import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; import javax.validation.Valid; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -90,6 +92,13 @@ public interface OrderService { * 获取今日顾客总量 * @return */ - Integer selectTodayUser(Long storeId); + Integer selectUser(Long storeId,String time); + /** + * 获取销售额 + * @return + */ + BigDecimal getSaleMoney(Long storeId,String time); + + List getCarTeenInfo(); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java index d547a7c6..eab1c653 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderPageReqVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderRespVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderSaveReqVO; @@ -21,6 +22,10 @@ import cn.iocoder.yudao.module.member.enums.CostTypeEnum; import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; import cn.iocoder.yudao.module.member.util.MemberConstants; +import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; +import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; +import cn.iocoder.yudao.module.system.api.deviceInfo.DeviceInfoApi; +import cn.iocoder.yudao.module.system.api.deviceInfo.dto.DeviceInfoDto; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -29,7 +34,6 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; -import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -57,6 +61,10 @@ public class OrderServiceImpl implements OrderService { private OrderDetailService orderDetailService; @Resource private MemberUserMapper memberUserMapper; + @Resource + private DeviceInfoApi deviceInfoApi; + @Resource + private CarteenApi carteenApi; @Value("${propose.morning}") private Double proposeMorning; @@ -230,9 +238,43 @@ public class OrderServiceImpl implements OrderService { } @Override - public Integer selectTodayUser(Long storeId) { - LocalDate today = LocalDate.now(); - String time = today.format(DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT)); - return dishOrderMapper.selectTodayUser(time,storeId); + public Integer selectUser(Long storeId, String time) { + return dishOrderMapper.selectUser(storeId,time); + } + + @Override + public BigDecimal getSaleMoney(Long storeId, String time) { + return dishOrderMapper.getSaleMoney(storeId,time); + } + + @Override + public List getCarTeenInfo() { + List result = new ArrayList<>(); + List carteenList = carteenApi.getCarteenList(); + List device = deviceInfoApi.getDevice(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT); + String today = LocalDateTime.now().format(formatter); + List dishOrderDOS = dishOrderMapper.selectList(); + for (CarteenRespDto dto : carteenList){ + CarTeenInfoVO carTeenInfoVO = new CarTeenInfoVO(); + long deviceNum = device.stream().filter(vo -> vo.getCarteenId().equals(dto.getId())).count(); + carTeenInfoVO.setDeviceNum(String.valueOf(deviceNum)); + + List carteenOrderList = dishOrderDOS.stream().filter(dishOrderDO -> dishOrderDO.getStoreId().equals(dto.getId())).collect(Collectors.toList()); + BigDecimal totalMoney = carteenOrderList.stream().map(DishOrderDO::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + carTeenInfoVO.setTodayMoney(totalMoney); + + List todayCarteenOrderList = carteenOrderList.stream().filter(vo -> today.equals(vo.getCreateTime().format(formatter))).collect(Collectors.toList()); + BigDecimal todayMoney = todayCarteenOrderList.stream().map(DishOrderDO::getTotalMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + carTeenInfoVO.setTodayMoney(todayMoney); + long peopleNUm = todayCarteenOrderList.stream().map(DishOrderDO::getUserId).distinct().count(); + carTeenInfoVO.setPeopleNUm(String.valueOf(peopleNUm)); + + carTeenInfoVO.setStoresName(dto.getStoresName()); + carTeenInfoVO.setStoreId(dto.getId()); + + result.add(carTeenInfoVO); + } + return result; } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailService.java index 3525369c..a41dbd8e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailService.java @@ -1,7 +1,7 @@ package cn.iocoder.yudao.module.member.service.orderdetail; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVo; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO; @@ -59,5 +59,5 @@ public interface OrderDetailService { List selectListByOrderIds(List orderIds); - List selectDishSale(Long storeId); + List selectDishSale(Long storeId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java index a270a96e..bc8c4f3c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.service.orderdetail; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVo; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.DishVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO; @@ -14,7 +14,6 @@ import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService; import cn.iocoder.yudao.module.member.util.MemberConstants; import cn.iocoder.yudao.module.system.api.carteen.CarteenApi; -import cn.iocoder.yudao.module.system.api.carteen.dto.CarteenRespDto; import cn.iocoder.yudao.module.system.api.dish.DishesApi; import cn.iocoder.yudao.module.system.api.dish.dto.DishesRespDto; import cn.iocoder.yudao.module.system.api.dishesnutrition.DishesNutritionApi; @@ -93,12 +92,12 @@ public class OrderDetailServiceImpl implements OrderDetailService { // 插入数据 OrderDetailDO orderDetail = BeanUtils.toBean(createReqVO, OrderDetailDO.class); - //判定门店资料是否录入 - if(dishOrderDO.getStoreId()==null){ - CarteenRespDto carteen = carteenApi.getCarteen(createReqVO.getDishesId()); - dishOrderDO.setStoreId(carteen.getId()).setStoreName(carteen.getStoresName()); - dishOrderMapper.updateById(dishOrderDO); - } + //判定门店资料是否录入 ->移动到绑盘的时候 + //if(dishOrderDO.getStoreId()==null){ + // CarteenRespDto carteen = carteenApi.getCarteen(createReqVO.getDishesId()); + // dishOrderDO.setStoreId(carteen.getId()).setStoreName(carteen.getStoresName()); + // dishOrderMapper.updateById(dishOrderDO); + //} //计算新总价 String old = stringRedisTemplate.opsForValue().get(createReqVO.getDiningPlatesNum()); BigDecimal oldBigDecimal = new BigDecimal(old); @@ -182,7 +181,7 @@ public class OrderDetailServiceImpl implements OrderDetailService { } @Override - public List selectDishSale(Long storeId) { + public List selectDishSale(Long storeId) { LocalDate today = LocalDate.now(); String time = today.format(DateTimeFormatter.ofPattern(MemberConstants.DATE_FORMAT)); return orderDetailMapper.selectDishSale(time,storeId); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateService.java index 8fd37b66..5db75fa1 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateService.java @@ -1,13 +1,13 @@ package cn.iocoder.yudao.module.member.service.storeevaluate; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.StoreEvaluateVO; import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluatePageReqVO; import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluateSaveReqVO; import cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo.AppStoreEvaluateSaveReqVO; import cn.iocoder.yudao.module.member.dal.dataobject.storeevaluate.StoreEvaluateDO; import javax.validation.Valid; -import java.util.Map; /** * 店铺评价 Service 接口 @@ -59,7 +59,7 @@ public interface StoreEvaluateService { StoreEvaluateDO selectByUserId(Long storeId); - Map getEvaluate(Long storeId); + StoreEvaluateVO getEvaluate(Long storeId); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateServiceImpl.java index 09e3bad6..78cb26a6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeevaluate/StoreEvaluateServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.member.controller.admin.screen.vo.StoreEvaluateVO; import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluatePageReqVO; import cn.iocoder.yudao.module.member.controller.admin.storeevaluate.vo.StoreEvaluateSaveReqVO; import cn.iocoder.yudao.module.member.controller.app.storeevaluate.vo.AppStoreEvaluateSaveReqVO; @@ -17,8 +18,6 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.HashMap; -import java.util.Map; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_EVALUATE_NOT_EXISTS; @@ -108,23 +107,24 @@ public class StoreEvaluateServiceImpl implements StoreEvaluateService { } @Override - public Map getEvaluate(Long storeId) { - HashMap result = new HashMap<>(); + public StoreEvaluateVO getEvaluate(Long storeId) { + StoreEvaluateVO storeEvaluateVO = new StoreEvaluateVO(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(storeId != null,StoreEvaluateDO::getStoreId,storeId); Long good = storeEvaluateMapper.selectCount(queryWrapper .gt(StoreEvaluateDO::getEvaluate, MemberConstants.GOOD_EVALUATE) ); Long total = storeEvaluateMapper.selectCount(queryWrapper); + storeEvaluateVO.setNum(total); if(total == 0){ - result.put("1","0.00%"); - result.put("0","0.00%"); - return result; + storeEvaluateVO.setGood("0.00%"); + storeEvaluateVO.setBad("0.00%"); + }else{ + BigDecimal goodPercent = new BigDecimal(good).divide(new BigDecimal(total), 4, BigDecimal.ROUND_HALF_UP); + BigDecimal badPercent = BigDecimal.ONE.subtract(goodPercent); + storeEvaluateVO.setGood(goodPercent.multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP).toString()+"%"); + storeEvaluateVO.setBad(badPercent.multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP).toString()+"%"); } - BigDecimal goodPercent = new BigDecimal(good).divide(new BigDecimal(total), 4, BigDecimal.ROUND_HALF_UP); - BigDecimal badPercent = BigDecimal.ONE.subtract(goodPercent); - result.put("1",goodPercent.multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP).toString()+"%"); - result.put("0",badPercent.multiply(new BigDecimal("100")).setScale(2,BigDecimal.ROUND_HALF_UP).toString()+"%"); - return result; + return storeEvaluateVO; } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/order/DishOrderMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/order/DishOrderMapper.xml index 29cf3961..a7f32d11 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/order/DishOrderMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/order/DishOrderMapper.xml @@ -8,13 +8,29 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - select count(distinct user_id) from member_dish_order where - date_format(create_time,'%Y-%m-%d') = #{time} - - and store_id = #{storeId} - + + + date_format(create_time,'%Y-%m-%d') = #{time} + + + and store_id = #{storeId} + + + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderdetail/OrderDetailMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderdetail/OrderDetailMapper.xml index 663fa480..04cc0c44 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderdetail/OrderDetailMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/orderdetail/OrderDetailMapper.xml @@ -8,7 +8,7 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - select dishes_name, sum(a.weight) as weight , sum(a.price) as price from member_order_detail a where date_format(a.create_time,'%Y-%m-%d') = #{time} diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java index b094835c..f8f5d04d 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApi.java @@ -17,4 +17,8 @@ public interface DeviceInfoApi { * @return */ String getDeviceInfoName(String deviceIp); + + DeviceInfoDto getDevice(String deviceIp); + + List getDevice(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java index 8f0460df..ddc69dad 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/deviceInfo/DeviceInfoApiImpl.java @@ -38,4 +38,18 @@ public class DeviceInfoApiImpl implements DeviceInfoApi { .last(" limit 1")) .getDeviceName(); } + + @Override + public DeviceInfoDto getDevice(String deviceIp) { + DeviceInfoDO deviceInfoDO = deviceInfoMapper.selectOne(new LambdaQueryWrapperX() + .eq(DeviceInfoDO::getDeviceIp, deviceIp) + .last(" limit 1")); + return BeanUtils.toBean(deviceInfoDO,DeviceInfoDto.class); + } + + @Override + public List getDevice() { + List deviceInfoDOS = deviceInfoMapper.selectList(); + return BeanUtils.toBean(deviceInfoDOS,DeviceInfoDto.class); + } }