From a0e4df77f57a3d68234eb3cce6d2da2c804043d3 Mon Sep 17 00:00:00 2001 From: seesaw Date: Fri, 1 Nov 2024 14:26:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/enums/ErrorCodeConstants.java | 4 + .../CustomizeExcelController.java | 17 +++- .../customizeExcel/vo/StoreOrderExcelVO.java | 41 ++++++++ .../storebusiness/vo/StoreBusinessRespVO.java | 18 ++-- .../storeorder/StoreOrderController.java | 9 +- .../admin/storeorder/vo/StoreOrderPageVO.java | 53 +++++++---- .../StoreShoppingCartController.java | 95 +++++++++++++++++++ .../vo/StoreShoppingCartPageReqVO.java | 37 ++++++++ .../vo/StoreShoppingCartRespVO.java | 49 ++++++++++ .../vo/StoreShoppingCartSaveReqVO.java | 31 ++++++ .../storeorder/AppStoreOrderController.java | 8 +- .../storeorder/vo/AppStoreGoodsDetail.java | 12 +++ .../controller/app/storeorder/vo/CardDto.java | 27 ++++++ .../AppStoreShoppingCartController.java | 87 +++++++++++++++++ .../StoreShoppingCartDO.java | 51 ++++++++++ .../customizeExcel/CustomizeExcelMapper.java | 4 + .../mysql/storeorder/StoreOrderMapper.java | 1 + .../StoreShoppingCartMapper.java | 31 ++++++ .../customizeExcel/CustomizeExcelService.java | 3 + .../CustomizeExcelServiceImpl.java | 6 ++ .../service/storeorder/StoreOrderService.java | 7 ++ .../storeorder/StoreOrderServiceImpl.java | 59 +++++++++++- .../StoreOrderDetailService.java | 2 + .../StoreOrderDetailServiceImpl.java | 5 + .../StoreShoppingCartService.java | 55 +++++++++++ .../StoreShoppingCartServiceImpl.java | 88 +++++++++++++++++ .../customizeExcel/CustomizeExcelMapper.xml | 24 +++++ .../mapper/storeorder/StoreOrderMapper.xml | 26 +++++ 28 files changed, 817 insertions(+), 33 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/vo/StoreOrderExcelVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/StoreShoppingCartController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/vo/AppStoreGoodsDetail.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/vo/CardDto.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeshoppingcart/AppStoreShoppingCartController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeshoppingcart/StoreShoppingCartDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeshoppingcart/StoreShoppingCartMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeshoppingcart/StoreShoppingCartService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeshoppingcart/StoreShoppingCartServiceImpl.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 b458abb9..d17dd457 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 @@ -113,6 +113,8 @@ public interface ErrorCodeConstants { ErrorCode STORE_ORDER_NOT_EXISTS = new ErrorCode(1_007_904_005, "商品订单不存在"); + ErrorCode AMOUNT_NOT_ENOUGH = new ErrorCode(1_007_904_005, "金额不足"); + ErrorCode STORE_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_007_904_006,"商品订单详情不存在"); //========== 用户余额明细 1-004-014-000 ============= ErrorCode SPACE_CAPSULE_NOT_EXISTS = new ErrorCode(1_004_014_001, "太空舱不存在"); @@ -123,5 +125,7 @@ public interface ErrorCodeConstants { ErrorCode ORDER_SPACE_CAPSULE_ERREO = new ErrorCode(1_004_016_002, "太空舱订单状态非法"); ErrorCode STORE_BUSINESS_NOT_EXISTS = new ErrorCode(1_004_017_001, "超市营业统计不存在"); + + ErrorCode STORE_SHOPPING_CART_NOT_EXISTS = new ErrorCode(1_004_018_001, "小程序商品购物车不存在"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java index 8eafff9f..0074183b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/CustomizeExcelController.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.excel.core.handler.SelectSheetWriteHandler; 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.customizeExcel.vo.OrderExcelVO; +import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO; import cn.iocoder.yudao.module.member.service.customizeExcel.CustomizeExcelService; import cn.iocoder.yudao.module.member.util.CustomMergeStrategy; import com.alibaba.excel.EasyExcel; @@ -54,7 +55,7 @@ public class CustomizeExcelController { List orderExcelVOS = excelService.exportOrderExcel(startTime, endTime,carteenId); // 导出 Excel - ExcelUtils.write(response, "订单详情统计.xls", "数据", OrderExcelVO.class, + ExcelUtils.write(response, "订单详情统计.xlsx", "数据", OrderExcelVO.class, orderExcelVOS); } @GetMapping("/orderExcel1") @@ -143,4 +144,18 @@ public class CustomizeExcelController { header.createCell(7).setCellValue("重量(g)"); header.createCell(8).setCellValue("价格(元)"); } + + @GetMapping("/storeOrderExcel") + @Operation(summary = "导出超市订单详情") + @OperateLog(type = EXPORT) + public void exportStoreOrderExcel(String startTime,String endTime,Long carteenId, + HttpServletResponse response) throws IOException { + + List orderExcelVOS = excelService.exportStoreOrderExcel(startTime, endTime,carteenId); + // 导出 Excel + ExcelUtils.write(response, "订单详情统计.xlsx", "数据", StoreOrderExcelVO.class, + orderExcelVOS); + } + + } \ 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/customizeExcel/vo/StoreOrderExcelVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/vo/StoreOrderExcelVO.java new file mode 100644 index 00000000..5ec071ab --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/customizeExcel/vo/StoreOrderExcelVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.NumberFormat; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class StoreOrderExcelVO { + + @ExcelProperty("用户名") + private String nickname; + + @ExcelProperty("手机") + private String mobile; + + @ExcelProperty("时间段") + private String timeSlot; + + @ExcelProperty("总价") + @NumberFormat("#0.00") + private Double totalPrice; + + @ExcelProperty("商品") + private String goodsName; + + @ExcelProperty("单价(元)") + @NumberFormat("#0.00") + private Double customPrice; + + @ExcelProperty("数量") + private Integer number; + + @ExcelProperty("重量(g)") + private String weight; + + @ExcelProperty("日期") + private String dayTime; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storebusiness/vo/StoreBusinessRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storebusiness/vo/StoreBusinessRespVO.java index bc9e513b..13245abe 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storebusiness/vo/StoreBusinessRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storebusiness/vo/StoreBusinessRespVO.java @@ -39,39 +39,39 @@ public class StoreBusinessRespVO { private BigDecimal reduce; @Schema(description = "补贴钱包") - @ExcelProperty("补贴钱包") + @ExcelIgnore private BigDecimal subsidyPurse; @Schema(description = "VIP免单") - @ExcelProperty("VIP免单") + @ExcelIgnore private Integer gratis; @Schema(description = "早餐") - @ExcelProperty("早餐") + @ExcelProperty("早上") private BigDecimal breakfast; @Schema(description = "早餐订单") - @ExcelProperty("早餐订单") + @ExcelProperty("早上订单") private Integer breakfastNum; @Schema(description = "午餐") - @ExcelProperty("午餐") + @ExcelProperty("中午") private BigDecimal lunch; @Schema(description = "午餐订单") - @ExcelProperty("午餐订单") + @ExcelProperty("中午订单") private Integer lunchNum; @Schema(description = "晚餐") - @ExcelProperty("晚餐") + @ExcelProperty("晚上") private BigDecimal dinner; @Schema(description = "晚餐订单") - @ExcelProperty("晚餐订单") + @ExcelProperty("晚上订单") private Integer dinnerNum; @Schema(description = "智能称重") - @ExcelProperty("智能称重") + @ExcelIgnore private BigDecimal weigh; @Schema(description = "创建时间") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java index 186f78d9..18500466 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java @@ -106,13 +106,12 @@ public class StoreOrderController { @Operation(summary = "导出商品订单 Excel") @PreAuthorize("@ss.hasPermission('member:store-order:export')") @OperateLog(type = EXPORT) - public void exportStoreOrderExcel(@Valid StoreOrderPageReqVO pageReqVO, + public void exportStoreOrderExcel(@Valid StoreOrderPageVO pageReqVO, HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = storeOrderService.getStoreOrderPage(pageReqVO).getList(); + List list = storeOrderService.getStoreOrderPageNewList(pageReqVO); // 导出 Excel - ExcelUtils.write(response, "商品订单.xls", "数据", StoreOrderRespVO.class, - BeanUtils.toBean(list, StoreOrderRespVO.class)); + ExcelUtils.write(response, "商品订单统计.xls", "数据", StoreOrderPageVO.class, + list ); } @GetMapping("/reduction") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageVO.java index c8a2895e..b5a6fd70 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageVO.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.member.controller.admin.storeorder.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -18,33 +20,52 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ public class StoreOrderPageVO extends PageParam { - @Schema(description = "总价钱", example = "1722") - private Double totalPrice; @Schema(description = "订单ID", example = "1722") + @ExcelProperty("订单号") private Integer orderId; - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime createTime; - @Schema(description = "用户", example = "1722") - private String nickName; - @Schema(description = "手机", example = "1722") - private String mobile; + @Schema(description = "门店", example = "1722") + @ExcelProperty("门店") private String storesName; + @Schema(description = "用户", example = "1722") + @ExcelProperty("用户") + private String nickName; + + @Schema(description = "手机", example = "1722") + @ExcelProperty("手机") + private String mobile; + + @Schema(description = "总价钱", example = "1722") + @ExcelProperty("价钱") + private Double totalPrice; + @Schema(description = "减免金额") + @ExcelProperty("减免金额") private Double reductionPrice; - @Schema(description = "时间段", example = "1722") - private String timePeriod; - - private String startDate; - - private String endDate; - @Schema(description = "门店", example = "1722") + @ExcelIgnore private Long carteenId; + + @Schema(description = "创建时间") + @ExcelIgnore + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime createTime; + + + @Schema(description = "时间段", example = "1722") + @ExcelIgnore + private String timePeriod; + + @ExcelIgnore + private String startDate; + + @ExcelIgnore + private String endDate; + @Schema(description = "订单状态", example = "1722") + @ExcelIgnore private Integer status; } \ 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/storeshoppingcart/StoreShoppingCartController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/StoreShoppingCartController.java new file mode 100644 index 00000000..f5970092 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/StoreShoppingCartController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO; +import cn.iocoder.yudao.module.member.service.storeshoppingcart.StoreShoppingCartService; + +@Tag(name = "管理后台 - 小程序商品购物车") +@RestController +@RequestMapping("/member/store-shopping-cart") +@Validated +public class StoreShoppingCartController { + + @Resource + private StoreShoppingCartService storeShoppingCartService; + + @PostMapping("/create") + @Operation(summary = "创建小程序商品购物车") + @PreAuthorize("@ss.hasPermission('member:store-shopping-cart:create')") + public CommonResult createStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO createReqVO) { + return success(storeShoppingCartService.createStoreShoppingCart(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新小程序商品购物车") + @PreAuthorize("@ss.hasPermission('member:store-shopping-cart:update')") + public CommonResult updateStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO updateReqVO) { + storeShoppingCartService.updateStoreShoppingCart(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除小程序商品购物车") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:store-shopping-cart:delete')") + public CommonResult deleteStoreShoppingCart(@RequestParam("id") Long id) { + storeShoppingCartService.deleteStoreShoppingCart(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得小程序商品购物车") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:store-shopping-cart:query')") + public CommonResult getStoreShoppingCart(@RequestParam("id") Long id) { + StoreShoppingCartDO storeShoppingCart = storeShoppingCartService.getStoreShoppingCart(id); + return success(BeanUtils.toBean(storeShoppingCart, StoreShoppingCartRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得小程序商品购物车分页") + @PreAuthorize("@ss.hasPermission('member:store-shopping-cart:query')") + public CommonResult> getStoreShoppingCartPage(@Valid StoreShoppingCartPageReqVO pageReqVO) { + PageResult pageResult = storeShoppingCartService.getStoreShoppingCartPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StoreShoppingCartRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出小程序商品购物车 Excel") + @PreAuthorize("@ss.hasPermission('member:store-shopping-cart:export')") + @OperateLog(type = EXPORT) + public void exportStoreShoppingCartExcel(@Valid StoreShoppingCartPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storeShoppingCartService.getStoreShoppingCartPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "小程序商品购物车.xls", "数据", StoreShoppingCartRespVO.class, + BeanUtils.toBean(list, StoreShoppingCartRespVO.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/storeshoppingcart/vo/StoreShoppingCartPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartPageReqVO.java new file mode 100644 index 00000000..3b4c2f3a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.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 StoreShoppingCartPageReqVO extends PageParam { + + @Schema(description = "数量") + private Integer number; + + @Schema(description = "商品ID", example = "10013") + private Integer goodsId; + + @Schema(description = "用户ID", example = "19600") + private Long userId; + + @Schema(description = "门店ID", example = "13561") + private Long carteenId; + + @Schema(description = "是否选中") + private Boolean selected; + + @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/storeshoppingcart/vo/StoreShoppingCartRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartRespVO.java new file mode 100644 index 00000000..3482ea2b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo; + +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; +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 StoreShoppingCartRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4497") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "数量") + @ExcelProperty("数量") + private Integer number; + + @Schema(description = "商品ID", example = "10013") + @ExcelProperty("商品ID") + private Integer goodsId; + + @Schema(description = "用户ID", example = "19600") + @ExcelProperty("用户ID") + private Long userId; + + @Schema(description = "门店ID", example = "13561") + @ExcelProperty("门店ID") + private Long carteenId; + + @Schema(description = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否选中") + private Boolean selected; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "商品信息") + @ExcelIgnore + private StoreGoodsDO goodsInfo; + +} \ 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/storeshoppingcart/vo/StoreShoppingCartSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartSaveReqVO.java new file mode 100644 index 00000000..2c7697ff --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeshoppingcart/vo/StoreShoppingCartSaveReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 小程序商品购物车新增/修改 Request VO") +@Data +public class StoreShoppingCartSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4497") + private Long id; + + @Schema(description = "数量") + private Integer number; + + @Schema(description = "商品ID", example = "10013") + private Integer goodsId; + + @Schema(description = "用户ID", example = "19600") + private Long userId; + + @Schema(description = "门店ID", example = "13561") + private Long carteenId; + + @Schema(description = "是否选中", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否选中不能为空") + private Boolean selected; + +} \ 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/app/storeorder/AppStoreOrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java index 6f52847a..26480ecb 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java @@ -10,7 +10,9 @@ import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderP import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderRespVO; import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO; import cn.iocoder.yudao.module.member.controller.admin.storeorderdetail.vo.StoreOrderDetailRespVO; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo; +import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto; import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO; import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService; @@ -60,6 +62,10 @@ public class AppStoreOrderController { return success(bean); } - + @PostMapping("/appCreate") + @Operation(summary = "购物车订单") + public CommonResult appCreate(@RequestBody CardDto dto) { + return success(storeOrderService.appCreate(dto)); + } } \ 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/app/storeorder/vo/AppStoreGoodsDetail.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/vo/AppStoreGoodsDetail.java new file mode 100644 index 00000000..f82d852d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/vo/AppStoreGoodsDetail.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.module.member.controller.app.storeorder.vo; + +import lombok.Data; + +@Data +public class AppStoreGoodsDetail { + private Double customPrice; + private Integer number; + private Double weight; + private String goodsName; + private Integer goodsId; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/vo/CardDto.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/vo/CardDto.java new file mode 100644 index 00000000..1e4b7623 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/vo/CardDto.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.app.storeorder.vo; + +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreGoodsDto; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class CardDto { + + @Schema(description = "总价钱", example = "1722") + private Double totalPrice; + + @Schema(description = "用户ID") + @ExcelProperty("用户") + private Long userId; + + @Schema(description = "商品详情") + private List goodsList; + + @Schema(description = "门店", example = "1722") + private Long carteenId; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeshoppingcart/AppStoreShoppingCartController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeshoppingcart/AppStoreShoppingCartController.java new file mode 100644 index 00000000..f7f60d5e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeshoppingcart/AppStoreShoppingCartController.java @@ -0,0 +1,87 @@ +package cn.iocoder.yudao.module.member.controller.app.storeshoppingcart; + +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.storeshoppingcart.vo.StoreShoppingCartPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.StoreShoppingCartRespVO; +import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.StoreShoppingCartSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; +import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO; +import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService; +import cn.iocoder.yudao.module.member.service.storeshoppingcart.StoreShoppingCartService; +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.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 小程序商品购物车") +@RestController +@RequestMapping("/member/store-shopping-cart") +@Validated +public class AppStoreShoppingCartController { + + @Resource + private StoreShoppingCartService storeShoppingCartService; + + @Resource + private StoreGoodsService storeGoodsService; + + @PostMapping("/create") + @Operation(summary = "创建小程序商品购物车") + public CommonResult createStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO createReqVO) { + return success(storeShoppingCartService.createStoreShoppingCart(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新小程序商品购物车") + public CommonResult updateStoreShoppingCart(@Valid @RequestBody StoreShoppingCartSaveReqVO updateReqVO) { + storeShoppingCartService.updateStoreShoppingCart(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除小程序商品购物车") + @Parameter(name = "id", description = "编号", required = true) + public CommonResult deleteStoreShoppingCart(@RequestParam("id") Long id) { + storeShoppingCartService.deleteStoreShoppingCart(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得小程序商品购物车") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + public CommonResult getStoreShoppingCart(@RequestParam("id") Long id) { + StoreShoppingCartDO storeShoppingCart = storeShoppingCartService.getStoreShoppingCart(id); + return success(BeanUtils.toBean(storeShoppingCart, StoreShoppingCartRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得小程序商品购物车分页") + public CommonResult> getStoreShoppingCartPage(@Valid StoreShoppingCartPageReqVO pageReqVO) { + PageResult pageResult = storeShoppingCartService.getStoreShoppingCartPage(pageReqVO); + PageResult bean = BeanUtils.toBean(pageResult, StoreShoppingCartRespVO.class); + List list = bean.getList(); + List goodsIds = list.stream().map(StoreShoppingCartRespVO::getGoodsId).collect(Collectors.toList()); + List all = storeGoodsService.getAll(goodsIds); + Map map = all.stream().collect(Collectors.toMap(StoreGoodsDO::getGoodsId, a -> a)); + for (StoreShoppingCartRespVO vo : list) { + vo.setGoodsInfo(map.get(vo.getGoodsId())); + } + return success(bean); + } + +} \ 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/storeshoppingcart/StoreShoppingCartDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeshoppingcart/StoreShoppingCartDO.java new file mode 100644 index 00000000..ace92501 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeshoppingcart/StoreShoppingCartDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart; + +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_store_shopping_cart") +@KeySequence("member_store_shopping_cart_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreShoppingCartDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 数量 + */ + private Integer number; + /** + * 商品ID + */ + private Integer goodsId; + /** + * 用户ID + */ + private Long userId; + /** + * 门店ID + */ + private Long carteenId; + /** + * 是否选中 + */ + private Boolean selected; + +} \ 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/customizeExcel/CustomizeExcelMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customizeExcel/CustomizeExcelMapper.java index 7f1eefbb..979987b4 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customizeExcel/CustomizeExcelMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/customizeExcel/CustomizeExcelMapper.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.dal.mysql.customizeExcel; import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO; +import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -12,4 +13,7 @@ public interface CustomizeExcelMapper { List selectOrder(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("carteenId")Long carteenId); + + List selectStoreOrder(@Param("startTime")String startTime, @Param("endTime")String endTime, @Param("carteenId")Long carteenId); + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeorder/StoreOrderMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeorder/StoreOrderMapper.java index e2689e37..fc39ee19 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeorder/StoreOrderMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeorder/StoreOrderMapper.java @@ -34,4 +34,5 @@ public interface StoreOrderMapper extends BaseMapperX { IPage getStoreOrderPageNew(IPage page, @Param("vo") StoreOrderPageVO vo); + List getStoreOrderPageNewList(@Param("vo") StoreOrderPageVO vo); } \ 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/storeshoppingcart/StoreShoppingCartMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeshoppingcart/StoreShoppingCartMapper.java new file mode 100644 index 00000000..836615ac --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeshoppingcart/StoreShoppingCartMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.dal.mysql.storeshoppingcart; + +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.storeshoppingcart.StoreShoppingCartDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*; + +/** + * 小程序商品购物车 Mapper + * + * @author 管理员 + */ +@Mapper +public interface StoreShoppingCartMapper extends BaseMapperX { + + default PageResult selectPage(StoreShoppingCartPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(StoreShoppingCartDO::getNumber, reqVO.getNumber()) + .eqIfPresent(StoreShoppingCartDO::getGoodsId, reqVO.getGoodsId()) + .eqIfPresent(StoreShoppingCartDO::getUserId, reqVO.getUserId()) + .eqIfPresent(StoreShoppingCartDO::getCarteenId, reqVO.getCarteenId()) + .eqIfPresent(StoreShoppingCartDO::getSelected, reqVO.getSelected()) + .betweenIfPresent(StoreShoppingCartDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(StoreShoppingCartDO::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/service/customizeExcel/CustomizeExcelService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelService.java index f6171ff6..1d225767 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.member.service.customizeExcel; import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO; +import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; @@ -11,4 +12,6 @@ public interface CustomizeExcelService { List exportOrderExcel(String startTime,String endTime,Long carteenId); + + List exportStoreOrderExcel(String startTime, String endTime, Long carteenId); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java index 6a9544ba..e671b658 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/customizeExcel/CustomizeExcelServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.member.service.customizeExcel; import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.OrderExcelVO; +import cn.iocoder.yudao.module.member.controller.admin.customizeExcel.vo.StoreOrderExcelVO; import cn.iocoder.yudao.module.member.dal.mysql.customizeExcel.CustomizeExcelMapper; import cn.iocoder.yudao.module.member.service.devicewarn.DeviceWarnService; import cn.iocoder.yudao.module.system.api.deviceInfo.DeviceInfoApi; @@ -20,4 +21,9 @@ public class CustomizeExcelServiceImpl implements CustomizeExcelService { public List exportOrderExcel(String startTime, String endTime,Long carteenId) { return customizeExcelMapper.selectOrder(startTime,endTime,carteenId); } + + @Override + public List exportStoreOrderExcel(String startTime, String endTime, Long carteenId) { + return customizeExcelMapper.selectStoreOrder(startTime,endTime,carteenId); + } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java index 0e861810..7e270725 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java @@ -8,10 +8,13 @@ import cn.iocoder.yudao.module.member.controller.app.store.dto.FacePayDto; import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto; import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadDto; import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo; +import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto; import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; +import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; import java.math.BigDecimal; +import java.util.List; /** * 商品订单 Service 接口 @@ -70,5 +73,9 @@ public interface StoreOrderService { PageResult getStoreOrderPageNew(StoreOrderPageVO pageReqVO); + List getStoreOrderPageNewList(StoreOrderPageVO pageReqVO); + void reduction(Long orderId, BigDecimal money); + + Boolean appCreate(@RequestBody CardDto dto); } \ 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/storeorder/StoreOrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java index 1da38894..a63ca02b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java @@ -15,7 +15,10 @@ import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreLocalOrderDt import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto; import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadDto; import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo; +import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreGoodsDetail; +import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto; import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; @@ -23,6 +26,7 @@ import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper; import cn.iocoder.yudao.module.member.enums.CostTypeEnum; import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum; import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; +import cn.iocoder.yudao.module.member.service.amount.AmountService; import cn.iocoder.yudao.module.member.service.amount.DeductionService; import cn.iocoder.yudao.module.member.service.card.CardService; import cn.iocoder.yudao.module.member.service.storebusiness.StoreBusinessService; @@ -45,6 +49,7 @@ import java.util.ArrayList; import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.AMOUNT_NOT_ENOUGH; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_ORDER_NOT_EXISTS; import static cn.iocoder.yudao.module.member.util.QRCodeWithJWTUtil.validateJWT; @@ -76,7 +81,8 @@ public class StoreOrderServiceImpl implements StoreOrderService { private CashregisterinfoApi cashregisterinfoApi; @Resource private StoreBusinessService storeBusinessService; - + @Resource + private AmountService amountService; @Resource private StringRedisTemplate storeOrderRedisTemplate; @@ -192,6 +198,16 @@ public class StoreOrderServiceImpl implements StoreOrderService { if (StrUtil.isBlank(s)) { return "二维码过期"; } + + List equipmentGoodsCustoms = dto.getEquipmentGoodsCustoms(); + double sum = equipmentGoodsCustoms.stream() + .mapToDouble(StoreGoodsDto::getTotalPrice) + .sum(); + BigDecimal totalMoney = BigDecimal.valueOf(sum); + BigDecimal amount = amountService.getAmount(dto.getUserId()); + if(amount.compareTo(totalMoney) < 0){ + return "金额不足"; + } MemberUserDO user = userService.getUser(Long.valueOf(s)); dto.setUserId(user.getId()); StoreOrderDO order = createOrder(dto,StoreOrderStatusEnum.COMPLETE.getCode()); @@ -200,6 +216,8 @@ public class StoreOrderServiceImpl implements StoreOrderService { BigDecimal compute = compute(total, user.getId()); if (compute.compareTo(BigDecimal.ZERO) < 0) { + storeOrderMapper.deleteById(order.getOrderId()); + orderDetailService.deleteByOrderNo(order.getOrderId()); return "金额不足"; } //营业数据 @@ -252,6 +270,11 @@ public class StoreOrderServiceImpl implements StoreOrderService { return new PageResult<>(records, pageNew.getTotal()); } + @Override + public List getStoreOrderPageNewList(StoreOrderPageVO pageReqVO) { + return storeOrderMapper.getStoreOrderPageNewList(pageReqVO); + } + @Override public void reduction(Long orderId, BigDecimal money) { StoreOrderDO storeOrderDO = storeOrderMapper.selectById(orderId); @@ -273,6 +296,40 @@ public class StoreOrderServiceImpl implements StoreOrderService { storeBusinessService.updateStatistics(statisticsVo); } + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean appCreate(CardDto dto) { + BigDecimal amount = amountService.getAmount(dto.getUserId()); + BigDecimal total = BigDecimal.valueOf(dto.getTotalPrice()); + if(amount.compareTo(total) < 0){ + throw exception(AMOUNT_NOT_ENOUGH); + } + + //创建订单 + StoreOrderDO storeOrderDO = new StoreOrderDO(); + BeanUtil.copyProperties(dto, storeOrderDO); + storeOrderDO.setStatus(StoreOrderStatusEnum.PAY.getCode()); + storeOrderMapper.insert(storeOrderDO); + List goodsList = dto.getGoodsList(); + ArrayList addList = new ArrayList<>(); + for(AppStoreGoodsDetail goodsDetail : goodsList){ + StoreOrderDetailDO storeOrderDetailDO = new StoreOrderDetailDO(); + BeanUtil.copyProperties(goodsDetail, storeOrderDetailDO); + storeOrderDetailDO.setOrderId(storeOrderDO.getOrderId()); + addList.add(storeOrderDetailDO); + } + orderDetailService.saveBatch(addList); + + //扣款 + BigDecimal compute = compute(total, dto.getUserId()); + if (compute.compareTo(BigDecimal.ZERO) < 0) { + storeOrderMapper.deleteById(storeOrderDO.getOrderId()); + orderDetailService.deleteByOrderNo(storeOrderDO.getOrderId()); + throw exception(AMOUNT_NOT_ENOUGH); + } + return true; + } + public void test() { //计算金额 //if (total.compareTo(wxAmount) <= 0) { diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java index 5030bda1..54a99d7a 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java @@ -56,4 +56,6 @@ public interface StoreOrderDetailService { void saveBatch(List list); List getListByOrderNo(Integer orderId); + + void deleteByOrderNo(Integer orderId); } \ 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/storeorderdetail/StoreOrderDetailServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailServiceImpl.java index 87c6df85..8cd0651f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailServiceImpl.java @@ -82,4 +82,9 @@ public class StoreOrderDetailServiceImpl implements StoreOrderDetailService { public List getListByOrderNo(Integer orderId) { return storeOrderDetailMapper.selectByOrderId(orderId); } + + @Override + public void deleteByOrderNo(Integer orderId) { + storeOrderDetailMapper.delete(Wrappers.lambdaQuery().eq(StoreOrderDetailDO::getOrderId,orderId)); + } } \ 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/storeshoppingcart/StoreShoppingCartService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeshoppingcart/StoreShoppingCartService.java new file mode 100644 index 00000000..dc185298 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeshoppingcart/StoreShoppingCartService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.member.service.storeshoppingcart; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 小程序商品购物车 Service 接口 + * + * @author 管理员 + */ +public interface StoreShoppingCartService { + + /** + * 创建小程序商品购物车 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStoreShoppingCart(@Valid StoreShoppingCartSaveReqVO createReqVO); + + /** + * 更新小程序商品购物车 + * + * @param updateReqVO 更新信息 + */ + void updateStoreShoppingCart(@Valid StoreShoppingCartSaveReqVO updateReqVO); + + /** + * 删除小程序商品购物车 + * + * @param id 编号 + */ + void deleteStoreShoppingCart(Long id); + + /** + * 获得小程序商品购物车 + * + * @param id 编号 + * @return 小程序商品购物车 + */ + StoreShoppingCartDO getStoreShoppingCart(Long id); + + /** + * 获得小程序商品购物车分页 + * + * @param pageReqVO 分页查询 + * @return 小程序商品购物车分页 + */ + PageResult getStoreShoppingCartPage(StoreShoppingCartPageReqVO pageReqVO); + +} \ 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/storeshoppingcart/StoreShoppingCartServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeshoppingcart/StoreShoppingCartServiceImpl.java new file mode 100644 index 00000000..55f64ab3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeshoppingcart/StoreShoppingCartServiceImpl.java @@ -0,0 +1,88 @@ +package cn.iocoder.yudao.module.member.service.storeshoppingcart; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.member.controller.admin.storeshoppingcart.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storeshoppingcart.StoreShoppingCartDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.member.dal.mysql.storeshoppingcart.StoreShoppingCartMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; + +/** + * 小程序商品购物车 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class StoreShoppingCartServiceImpl implements StoreShoppingCartService { + + @Resource + private StoreShoppingCartMapper storeShoppingCartMapper; + + @Override + public Long createStoreShoppingCart(StoreShoppingCartSaveReqVO createReqVO) { + // 插入 + Long id ; + List storeShoppingCartDOS = storeShoppingCartMapper.selectList(Wrappers.lambdaQuery() + .eq(StoreShoppingCartDO::getUserId, createReqVO.getUserId()) + .eq(StoreShoppingCartDO::getCarteenId, createReqVO.getCarteenId())); + if(CollectionUtil.isNotEmpty(storeShoppingCartDOS)){ + StoreShoppingCartDO storeShoppingCartDO = storeShoppingCartDOS.get(0); + storeShoppingCartDO.setNumber(storeShoppingCartDO.getNumber()+createReqVO.getNumber()); + storeShoppingCartMapper.updateById(storeShoppingCartDO); + id = storeShoppingCartDO.getId(); + }else { + StoreShoppingCartDO storeShoppingCart = BeanUtils.toBean(createReqVO, StoreShoppingCartDO.class); + storeShoppingCartMapper.insert(storeShoppingCart); + id = storeShoppingCart.getId(); + } + // 返回 + return id; + } + + @Override + public void updateStoreShoppingCart(StoreShoppingCartSaveReqVO updateReqVO) { + // 校验存在 + validateStoreShoppingCartExists(updateReqVO.getId()); + // 更新 + StoreShoppingCartDO updateObj = BeanUtils.toBean(updateReqVO, StoreShoppingCartDO.class); + storeShoppingCartMapper.updateById(updateObj); + } + + @Override + public void deleteStoreShoppingCart(Long id) { + // 校验存在 + validateStoreShoppingCartExists(id); + // 删除 + storeShoppingCartMapper.deleteById(id); + } + + private void validateStoreShoppingCartExists(Long id) { + if (storeShoppingCartMapper.selectById(id) == null) { + throw exception(STORE_SHOPPING_CART_NOT_EXISTS); + } + } + + @Override + public StoreShoppingCartDO getStoreShoppingCart(Long id) { + return storeShoppingCartMapper.selectById(id); + } + + @Override + public PageResult getStoreShoppingCartPage(StoreShoppingCartPageReqVO pageReqVO) { + return storeShoppingCartMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml index c8e76e9d..9caf0015 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/customizeExcel/CustomizeExcelMapper.xml @@ -31,4 +31,28 @@ order by mo.user_id,order_id + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/storeorder/StoreOrderMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/storeorder/StoreOrderMapper.xml index 782ceaa1..14691c17 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/storeorder/StoreOrderMapper.xml +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/storeorder/StoreOrderMapper.xml @@ -35,4 +35,30 @@ order by so.order_id DESC + + \ No newline at end of file