From 02d3b47a9d9245b6852b4bedf03af3a73d1129e2 Mon Sep 17 00:00:00 2001 From: zengtao01 Date: Mon, 1 Apr 2024 09:11:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=92=8C=E5=85=85=E5=80=BC?= =?UTF-8?q?=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/enums/ErrorCodeConstants.java | 6 + .../controller/admin/card/CardController.java | 114 +++++++++++++++++ .../admin/card/vo/CardPageReqVO.java | 37 ++++++ .../controller/admin/card/vo/CardRespVO.java | 40 ++++++ .../admin/card/vo/CardSaveReqVO.java | 27 ++++ .../admin/order/OrderController.java | 71 +++++++++++ .../admin/order/vo/OrderPageReqVO.java | 37 ++++++ .../admin/order/vo/OrderRespVO.java | 40 ++++++ .../admin/order/vo/OrderSaveReqVO.java | 27 ++++ .../orderdetail/OrderDetailController.java | 71 +++++++++++ .../orderdetail/vo/OrderDetailPageReqVO.java | 38 ++++++ .../orderdetail/vo/OrderDetailRespVO.java | 47 +++++++ .../orderdetail/vo/OrderDetailSaveReqVO.java | 31 +++++ .../admin/user/MemberUserController.java | 6 + .../controller/admin/user/vo/BindCardVO.java | 29 +++++ .../app/order/AppOrderController.java | 97 ++++++++++++++ .../app/order/vo/AppOrderPageReqVO.java | 40 ++++++ .../app/order/vo/AppOrderRespVO.java | 48 +++++++ .../app/order/vo/AppOrderSaveReqVO.java | 30 +++++ .../orderdetail/AppOrderDetailController.java | 100 +++++++++++++++ .../vo/AppOrderDetailPageReqVO.java | 40 ++++++ .../orderdetail/vo/AppOrderDetailRespVO.java | 44 +++++++ .../vo/AppOrderDetailSaveReqVO.java | 30 +++++ .../member/dal/dataobject/card/CardDO.java | 61 +++++++++ .../dal/dataobject/order/DishOrderDO.java | 57 +++++++++ .../dataobject/orderdetail/OrderDetailDO.java | 57 +++++++++ .../dal/dataobject/user/MemberUserDO.java | 8 ++ .../member/dal/mysql/card/CardMapper.java | 27 ++++ .../dal/mysql/order/DishOrderMapper.java | 29 +++++ .../mysql/orderdetail/OrderDetailMapper.java | 29 +++++ .../module/member/enums/CostTypeEnum.java | 29 +++++ .../member/service/card/CardService.java | 66 ++++++++++ .../member/service/card/CardServiceImpl.java | 118 ++++++++++++++++++ .../member/service/order/OrderService.java | 63 ++++++++++ .../service/order/OrderServiceImpl.java | 108 ++++++++++++++++ .../orderdetail/OrderDetailService.java | 59 +++++++++ .../orderdetail/OrderDetailServiceImpl.java | 80 ++++++++++++ .../service/user/MemberUserService.java | 6 + .../service/user/MemberUserServiceImpl.java | 22 +++- .../main/resources/mapper/card/CardMapper.xml | 12 ++ 40 files changed, 1879 insertions(+), 2 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/OrderDetailController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/BindCardVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/AppOrderController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/AppOrderDetailController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/card/CardDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetail/OrderDetailDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/order/DishOrderMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetail/OrderDetailMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/CostTypeEnum.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml 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 ee970a54..d32d6596 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 @@ -55,4 +55,10 @@ public interface ErrorCodeConstants { ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_004_012_000, "用户分组不存在"); ErrorCode GROUP_HAS_USER = new ErrorCode(1_004_012_001, "用户分组下存在用户,无法删除"); + //========== 用户余额明细 1-004-013-000 ============= + ErrorCode CARD_NOT_EXISTS = new ErrorCode(1_004_013_000, "余额明细不存在"); + ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_004_013_000, "订单不存在"); + ErrorCode ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_004_013_000, "订单明细不存在"); + + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java new file mode 100644 index 00000000..c1d831dc --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/CardController.java @@ -0,0 +1,114 @@ +package cn.iocoder.yudao.module.member.controller.admin.card; + +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.card.vo.CardPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardRespVO; +import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; +import cn.iocoder.yudao.module.member.service.card.CardService; +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.math.BigDecimal; +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/card") +@Validated +public class CardController { + + @Resource + private CardService cardService; + + @PostMapping("/create") + @Operation(summary = "创建余额变动明细") + @PreAuthorize("@ss.hasPermission('member:card:create')") + public CommonResult createCard(@Valid @RequestBody CardSaveReqVO createReqVO) { + return success(cardService.createCard(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新余额变动明细") + @PreAuthorize("@ss.hasPermission('member:card:update')") + public CommonResult updateCard(@Valid @RequestBody CardSaveReqVO updateReqVO) { + cardService.updateCard(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除余额变动明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:card:delete')") + public CommonResult deleteCard(@RequestParam("id") Long id) { + cardService.deleteCard(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得余额变动明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:card:query')") + public CommonResult getCard(@RequestParam("id") Long id) { + CardDO card = cardService.getCard(id); + return success(BeanUtils.toBean(card, CardRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得余额变动明细分页") + @PreAuthorize("@ss.hasPermission('member:card:query')") + public CommonResult> getCardPage(@Valid CardPageReqVO pageReqVO) { + PageResult pageResult = cardService.getCardPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, CardRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出余额变动明细 Excel") + @PreAuthorize("@ss.hasPermission('member:card:export')") + @OperateLog(type = EXPORT) + public void exportCardExcel(@Valid CardPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = cardService.getCardPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "余额变动明细.xls", "数据", CardRespVO.class, + BeanUtils.toBean(list, CardRespVO.class)); + } + + @PutMapping("/recharge") + @Operation(summary = "充值") + //@PreAuthorize("@ss.hasPermission('member:card:update')") + public CommonResult recharge(BigDecimal money) { + return success(cardService.recharge(money,CardDO.ADD)); + } + + @GetMapping("/getMoney") + @Operation(summary = "获取余额") + public CommonResult getMoney() { + return success(cardService.getMoney()); + } + +} \ 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/card/vo/CardPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardPageReqVO.java new file mode 100644 index 00000000..395396b6 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.member.controller.admin.card.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +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 CardPageReqVO extends PageParam { + + @Schema(description = "卡号", example = "23469") + private Long userId; + + @Schema(description = "余额") + private BigDecimal money; + + @Schema(description = "加减标志(0:减,1:加)") + private String flag; + + @Schema(description = "变动金额") + private BigDecimal changeMoney; + + @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/card/vo/CardRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardRespVO.java new file mode 100644 index 00000000..ae9770fd --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardRespVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.member.controller.admin.card.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 余额变动明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class CardRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21508") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "卡号", example = "23469") + @ExcelProperty("卡号") + private String cardId; + + @Schema(description = "余额") + @ExcelProperty("余额") + private BigDecimal money; + + @Schema(description = "加减标志(0:减,1:加)") + @ExcelProperty("加减标志(0:减,1:加)") + private String flag; + + @Schema(description = "变动金额") + @ExcelProperty("变动金额") + private BigDecimal changeMoney; + + @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/card/vo/CardSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardSaveReqVO.java new file mode 100644 index 00000000..dc619795 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/card/vo/CardSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.admin.card.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 余额变动明细新增/修改 Request VO") +@Data +public class CardSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21508") + private Long id; + + @Schema(description = "用户Id",example = "23469") + private Long userId; + + @Schema(description = "余额") + private BigDecimal money; + + @Schema(description = "加减标志(0:减,1:加)") + private String flag; + + @Schema(description = "变动金额") + private BigDecimal changeMoney; + +} \ 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/order/OrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java new file mode 100644 index 00000000..f793eff1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.member.controller.admin.order; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "管理后台 - 会员订单") +@RestController +@RequestMapping("/member/order") +@Validated +public class OrderController { + + //@Resource + //private OrderService orderService; + // + //@PostMapping("/create") + //@Operation(summary = "创建会员订单") + //@PreAuthorize("@ss.hasPermission('member:order:create')") + //public CommonResult createOrder(@Valid @RequestBody OrderSaveReqVO createReqVO) { + // return success(orderService.createOrder(createReqVO)); + //} + // + //@PutMapping("/update") + //@Operation(summary = "更新会员订单") + //@PreAuthorize("@ss.hasPermission('member:order:update')") + //public CommonResult updateOrder(@Valid @RequestBody OrderSaveReqVO updateReqVO) { + // orderService.updateOrder(updateReqVO); + // return success(true); + //} + // + //@DeleteMapping("/delete") + //@Operation(summary = "删除会员订单") + //@Parameter(name = "id", description = "编号", required = true) + //@PreAuthorize("@ss.hasPermission('member:order:delete')") + //public CommonResult deleteOrder(@RequestParam("id") Long id) { + // orderService.deleteOrder(id); + // return success(true); + //} + // + //@GetMapping("/get") + //@Operation(summary = "获得会员订单") + //@Parameter(name = "id", description = "编号", required = true, example = "1024") + //@PreAuthorize("@ss.hasPermission('member:order:query')") + //public CommonResult getOrder(@RequestParam("id") Long id) { + // OrderDO order = orderService.getOrder(id); + // return success(BeanUtils.toBean(order, OrderRespVO.class)); + //} + // + //@GetMapping("/page") + //@Operation(summary = "获得会员订单分页") + //@PreAuthorize("@ss.hasPermission('member:order:query')") + //public CommonResult> getOrderPage(@Valid OrderPageReqVO pageReqVO) { + // PageResult pageResult = orderService.getOrderPage(pageReqVO); + // return success(BeanUtils.toBean(pageResult, OrderRespVO.class)); + //} + // + //@GetMapping("/export-excel") + //@Operation(summary = "导出会员订单 Excel") + //@PreAuthorize("@ss.hasPermission('member:order:export')") + //@OperateLog(type = EXPORT) + //public void exportOrderExcel(@Valid OrderPageReqVO pageReqVO, + // HttpServletResponse response) throws IOException { + // pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + // List list = orderService.getOrderPage(pageReqVO).getList(); + // // 导出 Excel + // ExcelUtils.write(response, "会员订单.xls", "数据", OrderRespVO.class, + // BeanUtils.toBean(list, OrderRespVO.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/order/vo/OrderPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderPageReqVO.java new file mode 100644 index 00000000..022b4d26 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.member.controller.admin.order.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +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 OrderPageReqVO extends PageParam { + + @Schema(description = "门店Id", example = "24217") + private String storeId; + + @Schema(description = "门店名", example = "赵六") + private String storeName; + + @Schema(description = "订单状态", example = "1") + private String orderStatus; + + @Schema(description = "总价") + private BigDecimal totalMoney; + + @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/order/vo/OrderRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderRespVO.java new file mode 100644 index 00000000..8617aa1f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderRespVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.member.controller.admin.order.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 会员订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class OrderRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19151") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "门店Id", example = "24217") + @ExcelProperty("门店Id") + private String storeId; + + @Schema(description = "门店名", example = "赵六") + @ExcelProperty("门店名") + private String storeName; + + @Schema(description = "订单状态", example = "1") + @ExcelProperty("订单状态") + private String orderStatus; + + @Schema(description = "总价") + @ExcelProperty("总价") + private BigDecimal totalMoney; + + @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/order/vo/OrderSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderSaveReqVO.java new file mode 100644 index 00000000..170f16c1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderSaveReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.controller.admin.order.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 会员订单新增/修改 Request VO") +@Data +public class OrderSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19151") + private Long id; + + @Schema(description = "门店Id", example = "24217") + private String storeId; + + @Schema(description = "门店名", example = "赵六") + private String storeName; + + @Schema(description = "订单状态", example = "1") + private String orderStatus; + + @Schema(description = "总价") + private BigDecimal totalMoney; + +} \ 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/orderdetail/OrderDetailController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/OrderDetailController.java new file mode 100644 index 00000000..97621603 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/OrderDetailController.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetail; + +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Tag(name = "管理后台 - 订单明细") +@RestController +@RequestMapping("/member/order-detail") +@Validated +public class OrderDetailController { + + //@Resource + //private OrderDetailService orderDetailService; + // + //@PostMapping("/create") + //@Operation(summary = "创建订单明细") + //@PreAuthorize("@ss.hasPermission('member:order-detail:create')") + //public CommonResult createOrderDetail(@Valid @RequestBody OrderDetailSaveReqVO createReqVO) { + // return success(orderDetailService.createOrderDetail(createReqVO)); + //} + // + //@PutMapping("/update") + //@Operation(summary = "更新订单明细") + //@PreAuthorize("@ss.hasPermission('member:order-detail:update')") + //public CommonResult updateOrderDetail(@Valid @RequestBody OrderDetailSaveReqVO updateReqVO) { + // orderDetailService.updateOrderDetail(updateReqVO); + // return success(true); + //} + // + //@DeleteMapping("/delete") + //@Operation(summary = "删除订单明细") + //@Parameter(name = "id", description = "编号", required = true) + //@PreAuthorize("@ss.hasPermission('member:order-detail:delete')") + //public CommonResult deleteOrderDetail(@RequestParam("id") Long id) { + // orderDetailService.deleteOrderDetail(id); + // return success(true); + //} + // + //@GetMapping("/get") + //@Operation(summary = "获得订单明细") + //@Parameter(name = "id", description = "编号", required = true, example = "1024") + //@PreAuthorize("@ss.hasPermission('member:order-detail:query')") + //public CommonResult getOrderDetail(@RequestParam("id") Long id) { + // OrderDetailDO orderDetail = orderDetailService.getOrderDetail(id); + // return success(BeanUtils.toBean(orderDetail, OrderDetailRespVO.class)); + //} + // + //@GetMapping("/page") + //@Operation(summary = "获得订单明细分页") + //@PreAuthorize("@ss.hasPermission('member:order-detail:query')") + //public CommonResult> getOrderDetailPage(@Valid OrderDetailPageReqVO pageReqVO) { + // PageResult pageResult = orderDetailService.getOrderDetailPage(pageReqVO); + // return success(BeanUtils.toBean(pageResult, OrderDetailRespVO.class)); + //} + // + //@GetMapping("/export-excel") + //@Operation(summary = "导出订单明细 Excel") + //@PreAuthorize("@ss.hasPermission('member:order-detail:export')") + //@OperateLog(type = EXPORT) + //public void exportOrderDetailExcel(@Valid OrderDetailPageReqVO pageReqVO, + // HttpServletResponse response) throws IOException { + // pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + // List list = orderDetailService.getOrderDetailPage(pageReqVO).getList(); + // // 导出 Excel + // ExcelUtils.write(response, "订单明细.xls", "数据", OrderDetailRespVO.class, + // BeanUtils.toBean(list, OrderDetailRespVO.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/orderdetail/vo/OrderDetailPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailPageReqVO.java new file mode 100644 index 00000000..49be69b0 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailPageReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetail.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +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 OrderDetailPageReqVO extends PageParam { + + @Schema(description = "订单ID", example = "31077") + private String orderId; + + @Schema(description = "菜品ID", example = "1216") + private String dishesId; + + @Schema(description = "菜品", example = "王五") + private String dishesName; + + @Schema(description = "重量") + private BigDecimal weight; + + @Schema(description = "热量") + private Double heat; + + @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/orderdetail/vo/OrderDetailRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailRespVO.java new file mode 100644 index 00000000..70555037 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailRespVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetail.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 订单明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class OrderDetailRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20679") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "订单ID", example = "31077") + @ExcelProperty("订单ID") + private Long orderId; + + @Schema(description = "菜品ID", example = "1216") + @ExcelProperty("菜品ID") + private Long dishesId; + + @Schema(description = "菜品", example = "王五") + @ExcelProperty("菜品") + private String dishesName; + + @Schema(description = "重量") + @ExcelProperty("重量") + private BigDecimal weight; + + @Schema(description = "热量") + @ExcelProperty("热量") + private Double heat; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "总价") + private List detailList; +} \ 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/orderdetail/vo/OrderDetailSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailSaveReqVO.java new file mode 100644 index 00000000..324f782b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/orderdetail/vo/OrderDetailSaveReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.controller.admin.orderdetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 订单明细新增/修改 Request VO") +@Data +public class OrderDetailSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20679") + private Long id; + + @Schema(description = "订单ID", example = "31077") + private String orderId; + + @Schema(description = "菜品ID", example = "1216") + private String dishesId; + + @Schema(description = "菜品", example = "王五") + private String dishesName; + + @Schema(description = "重量") + private BigDecimal weight; + + @Schema(description = "热量") + private Double heat; + +} \ 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/user/MemberUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java index b382c1ca..9d67a855 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/MemberUserController.java @@ -118,4 +118,10 @@ public class MemberUserController { return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups)); } + @PutMapping("/bindCard") + @Operation(summary = "绑卡") + public CommonResult bindCard(@Valid @RequestBody BindCardVO vo){ + return success(memberUserService.bindCard(vo.getCardId())); + } + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/BindCardVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/BindCardVO.java new file mode 100644 index 00000000..f6b5dc70 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/user/vo/BindCardVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.controller.admin.user.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @author zt + * @description + * @since 2024/3/29 + */ +@Data +public class BindCardVO { + @Schema(description = "卡号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "卡号不能为空") + private String cardId; + + @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "姓名不能为空") + private String name; + + @Schema(description = "身份证", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "身份证不能为空") + private String identity; + + + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/AppOrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/AppOrderController.java new file mode 100644 index 00000000..c618f41b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/AppOrderController.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.member.controller.app.order; + +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.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; +import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; +import cn.iocoder.yudao.module.member.service.order.OrderService; +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/order") +@Validated +public class AppOrderController { + + @Resource + private OrderService orderService; + + @PostMapping("/create") + @Operation(summary = "创建会员订单") + public CommonResult createOrder(@Valid @RequestBody AppOrderSaveReqVO createReqVO) { + return success(orderService.createOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新会员订单") + public CommonResult updateOrder(@Valid @RequestBody AppOrderSaveReqVO updateReqVO) { + orderService.updateOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除会员订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:order:delete')") + public CommonResult deleteOrder(@RequestParam("id") Long id) { + orderService.deleteOrder(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得会员订单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:order:query')") + public CommonResult getOrder(@RequestParam("id") Long id) { + return success(orderService.getOrder(id)); + } + + @GetMapping("/page") + @Operation(summary = "获得会员订单分页") + @PreAuthorize("@ss.hasPermission('member:order:query')") + public CommonResult> getOrderPage(@Valid AppOrderPageReqVO pageReqVO) { + PageResult pageResult = orderService.getOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, AppOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出会员订单 Excel") + @PreAuthorize("@ss.hasPermission('member:order:export')") + @OperateLog(type = EXPORT) + public void exportOrderExcel(@Valid AppOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = orderService.getOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "会员订单.xls", "数据", AppOrderRespVO.class, + BeanUtils.toBean(list, AppOrderRespVO.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/app/order/vo/AppOrderPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderPageReqVO.java new file mode 100644 index 00000000..52bf59b8 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.member.controller.app.order.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +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 AppOrderPageReqVO extends PageParam { + + @Schema(description = "门店Id", example = "24217") + private Long storeId; + + @Schema(description = "门店名", example = "赵六") + private String storeName; + + @Schema(description = "订单状态", example = "1") + private String orderStatus; + + @Schema(description = "用户ID", example = "1") + private Long userId; + + @Schema(description = "总价") + private BigDecimal totalMoney; + + @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/app/order/vo/AppOrderRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderRespVO.java new file mode 100644 index 00000000..9d73c412 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderRespVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.member.controller.app.order.vo; + +import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 会员订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppOrderRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19151") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "门店Id", example = "24217") + @ExcelProperty("门店Id") + private Long storeId; + + @Schema(description = "门店名", example = "赵六") + @ExcelProperty("门店名") + private String storeName; + + @Schema(description = "订单状态", example = "1") + @ExcelProperty("订单状态") + private String orderStatus; + + @Schema(description = "用户ID", example = "1") + private Long userId; + + @Schema(description = "总价") + @ExcelProperty("总价") + private BigDecimal totalMoney; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "总价") + private List detailList; + +} \ 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/order/vo/AppOrderSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderSaveReqVO.java new file mode 100644 index 00000000..9701f6ff --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/order/vo/AppOrderSaveReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.controller.app.order.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 会员订单新增/修改 Request VO") +@Data +public class AppOrderSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "19151") + private Long id; + + @Schema(description = "门店Id", example = "24217") + private Long storeId; + + @Schema(description = "门店名", example = "赵六") + private String storeName; + + @Schema(description = "订单状态", example = "1") + private String orderStatus; + + @Schema(description = "用户ID", example = "1") + private Long userId; + + @Schema(description = "总价") + private BigDecimal totalMoney; + +} \ 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/orderdetail/AppOrderDetailController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/AppOrderDetailController.java new file mode 100644 index 00000000..cbbb5042 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/AppOrderDetailController.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.member.controller.app.orderdetail; + +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.orderdetail.vo.OrderDetailRespVO; +import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailPageReqVO; +import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; +import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; +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/order-detail") +@Validated +public class AppOrderDetailController { + + @Resource + private OrderDetailService orderDetailService; + + @PostMapping("/create") + @Operation(summary = "创建订单明细") + @PreAuthorize("@ss.hasPermission('member:order-detail:create')") + public CommonResult createOrderDetail(@Valid @RequestBody AppOrderDetailSaveReqVO createReqVO) { + return success(orderDetailService.createOrderDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新订单明细") + @PreAuthorize("@ss.hasPermission('member:order-detail:update')") + public CommonResult updateOrderDetail(@Valid @RequestBody AppOrderDetailSaveReqVO updateReqVO) { + orderDetailService.updateOrderDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除订单明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:order-detail:delete')") + public CommonResult deleteOrderDetail(@RequestParam("id") Long id) { + orderDetailService.deleteOrderDetail(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得订单明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:order-detail:query')") + public CommonResult getOrderDetail(@RequestParam("id") Long id) { + OrderDetailDO orderDetail = orderDetailService.getOrderDetail(id); + return success(BeanUtils.toBean(orderDetail, OrderDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得订单明细分页") + @PreAuthorize("@ss.hasPermission('member:order-detail:query')") + public CommonResult> getOrderDetailPage(@Valid AppOrderDetailPageReqVO pageReqVO) { + PageResult pageResult = orderDetailService.getOrderDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, OrderDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出订单明细 Excel") + @PreAuthorize("@ss.hasPermission('member:order-detail:export')") + @OperateLog(type = EXPORT) + public void exportOrderDetailExcel(@Valid AppOrderDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = orderDetailService.getOrderDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "订单明细.xls", "数据", OrderDetailRespVO.class, + BeanUtils.toBean(list, OrderDetailRespVO.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/app/orderdetail/vo/AppOrderDetailPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailPageReqVO.java new file mode 100644 index 00000000..b99fc7cd --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.member.controller.app.orderdetail.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +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 AppOrderDetailPageReqVO extends PageParam { + + @Schema(description = "订单ID", example = "31077") + private Long orderId; + + @Schema(description = "菜品ID", example = "1216") + private Long dishesId; + + @Schema(description = "菜品", example = "王五") + private String dishesName; + + @Schema(description = "重量") + private BigDecimal weight; + + @Schema(description = "热量") + private Double heat; + + @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/app/orderdetail/vo/AppOrderDetailRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailRespVO.java new file mode 100644 index 00000000..0bc3c85e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailRespVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.member.controller.app.orderdetail.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 订单明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppOrderDetailRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20679") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "订单ID", example = "31077") + @ExcelProperty("订单ID") + private Long orderId; + + @Schema(description = "菜品ID", example = "1216") + @ExcelProperty("菜品ID") + private Long dishesId; + + @Schema(description = "菜品", example = "王五") + @ExcelProperty("菜品") + private String dishesName; + + @Schema(description = "重量") + @ExcelProperty("重量") + private BigDecimal weight; + + @Schema(description = "热量") + @ExcelProperty("热量") + private Double heat; + + @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/app/orderdetail/vo/AppOrderDetailSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailSaveReqVO.java new file mode 100644 index 00000000..08ac6606 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/orderdetail/vo/AppOrderDetailSaveReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.controller.app.orderdetail.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 订单明细新增/修改 Request VO") +@Data +public class AppOrderDetailSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20679") + private Long id; + + @Schema(description = "订单ID", example = "31077") + private Long orderId; + + @Schema(description = "菜品ID", example = "1216") + private Long dishesId; + + @Schema(description = "菜品", example = "王五") + private String dishesName; + + @Schema(description = "重量") + private BigDecimal weight; + + @Schema(description = "热量") + private Double heat; + +} \ 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/card/CardDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/card/CardDO.java new file mode 100644 index 00000000..7f30db30 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/card/CardDO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.card; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.math.BigDecimal; + +/** + * 余额变动明细 DO + * + * @author 开发账号 + */ +@TableName("member_card") +@KeySequence("member_card_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CardDO extends BaseDO { + + public final static String ADD = "1"; + public final static String MINUS = "0"; + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 用户Id + */ + private Long userId; + /** + * 余额 + */ + private BigDecimal money; + /** + * 加减标志(0:减,1:加) + */ + private String flag; + /** + * 变动金额 + */ + private BigDecimal changeMoney; + + /** + * 消费类型 + */ + private String type; + +} \ 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/order/DishOrderDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java new file mode 100644 index 00000000..fea6b6c6 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/order/DishOrderDO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.order; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.math.BigDecimal; + +/** + * 会员订单 DO + * + * @author 开发账号 + */ +@TableName("member_dish_order") +@KeySequence("member_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DishOrderDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 门店Id + */ + private Long storeId; + /** + * 门店名 + */ + private String storeName; + /** + * 订单状态 + */ + private String orderStatus; + /** + * 总价 + */ + private BigDecimal totalMoney; + + /** + * 用户 + */ + private Long userId; +} \ 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/orderdetail/OrderDetailDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetail/OrderDetailDO.java new file mode 100644 index 00000000..c5c79938 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/orderdetail/OrderDetailDO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.orderdetail; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.math.BigDecimal; + +/** + * 订单明细 DO + * + * @author 开发账号 + */ +@TableName("member_order_detail") +@KeySequence("member_order_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderDetailDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 订单ID + */ + private Long orderId; + /** + * 菜品ID + */ + private Long dishesId; + /** + * 菜品 + */ + private String dishesName; + /** + * 重量 + */ + private BigDecimal weight; + /** + * 热量 + */ + private Double heat; + +} \ 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/user/MemberUserDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java index 97ddc191..cbfc3717 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/user/MemberUserDO.java @@ -141,5 +141,13 @@ public class MemberUserDO extends TenantBaseDO { * 关联 {@link MemberGroupDO#getId()} 字段 */ private Long groupId; + /** + * 卡号 + */ + private String cardId; + /** + * 人脸 + */ + private Long faceId; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java new file mode 100644 index 00000000..a9f69374 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.dal.mysql.card; + +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.card.vo.CardPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 余额变动明细 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface CardMapper extends BaseMapperX { + + default PageResult selectPage(CardPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(CardDO::getUserId, reqVO.getUserId()) + .eqIfPresent(CardDO::getMoney, reqVO.getMoney()) + .eqIfPresent(CardDO::getFlag, reqVO.getFlag()) + .eqIfPresent(CardDO::getChangeMoney, reqVO.getChangeMoney()) + .betweenIfPresent(CardDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(CardDO::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/order/DishOrderMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/order/DishOrderMapper.java new file mode 100644 index 00000000..ea41dd76 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/order/DishOrderMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.dal.mysql.order; + +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.app.order.vo.AppOrderPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 会员订单 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface DishOrderMapper extends BaseMapperX { + + default PageResult selectPage(AppOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(DishOrderDO::getStoreId, reqVO.getStoreId()) + .likeIfPresent(DishOrderDO::getStoreName, reqVO.getStoreName()) + .eqIfPresent(DishOrderDO::getOrderStatus, reqVO.getOrderStatus()) + .eqIfPresent(DishOrderDO::getTotalMoney, reqVO.getTotalMoney()) + .betweenIfPresent(DishOrderDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(DishOrderDO::getUserId, reqVO.getUserId()) + .orderByDesc(DishOrderDO::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/orderdetail/OrderDetailMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetail/OrderDetailMapper.java new file mode 100644 index 00000000..974c0742 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/orderdetail/OrderDetailMapper.java @@ -0,0 +1,29 @@ +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.app.orderdetail.vo.AppOrderDetailPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 订单明细 Mapper + * + * @author 开发账号 + */ +@Mapper +public interface OrderDetailMapper extends BaseMapperX { + + default PageResult selectPage(AppOrderDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(OrderDetailDO::getOrderId, reqVO.getOrderId()) + .eqIfPresent(OrderDetailDO::getDishesId, reqVO.getDishesId()) + .likeIfPresent(OrderDetailDO::getDishesName, reqVO.getDishesName()) + .eqIfPresent(OrderDetailDO::getWeight, reqVO.getWeight()) + .eqIfPresent(OrderDetailDO::getHeat, reqVO.getHeat()) + .betweenIfPresent(OrderDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(OrderDetailDO::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/enums/CostTypeEnum.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/CostTypeEnum.java new file mode 100644 index 00000000..a93a7066 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/enums/CostTypeEnum.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 代码生成的场景枚举 + * + * @author 芋道源码 + */ +@AllArgsConstructor +@Getter +public enum CostTypeEnum { + + WX_PAY("1", "微信充值"), + MORNING("2", "早餐"), + NOON("3", "午餐"), + NIGHT("4", "晚餐"), + ; + + /** + * 编码 + */ + private final String code; + /** + * 类型 + */ + private final String name; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java new file mode 100644 index 00000000..d6ff212d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardService.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.member.service.card; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; + +import javax.validation.Valid; +import java.math.BigDecimal; + +/** + * 余额变动明细 Service 接口 + * + * @author 开发账号 + */ +public interface CardService { + + /** + * 创建余额变动明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createCard(@Valid CardSaveReqVO createReqVO); + + /** + * 更新余额变动明细 + * + * @param updateReqVO 更新信息 + */ + void updateCard(@Valid CardSaveReqVO updateReqVO); + + /** + * 删除余额变动明细 + * + * @param id 编号 + */ + void deleteCard(Long id); + + /** + * 获得余额变动明细 + * + * @param id 编号 + * @return 余额变动明细 + */ + CardDO getCard(Long id); + + /** + * 获得余额变动明细分页 + * + * @param pageReqVO 分页查询 + * @return 余额变动明细分页 + */ + PageResult getCardPage(CardPageReqVO pageReqVO); + + /** + * 余额变动 + */ + Boolean recharge(BigDecimal money, String flag); + + /** + * 获取余额 + */ + BigDecimal getMoney(); + +} \ 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/card/CardServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java new file mode 100644 index 00000000..2a987e2e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/card/CardServiceImpl.java @@ -0,0 +1,118 @@ +package cn.iocoder.yudao.module.member.service.card; + +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.card.vo.CardPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.card.vo.CardSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; +import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper; +import cn.iocoder.yudao.module.member.enums.CostTypeEnum; +import cn.iocoder.yudao.module.member.service.user.MemberUserService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.math.BigDecimal; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.CARD_NOT_EXISTS; + +/** + * 余额变动明细 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class CardServiceImpl implements CardService { + + @Resource + private CardMapper cardMapper; + @Resource + private MemberUserService userService; + + @Override + public Long createCard(CardSaveReqVO createReqVO) { + // 插入 + CardDO card = BeanUtils.toBean(createReqVO, CardDO.class); + cardMapper.insert(card); + // 返回 + return card.getId(); + } + + @Override + public void updateCard(CardSaveReqVO updateReqVO) { + // 校验存在 + validateCardExists(updateReqVO.getId()); + // 更新 + CardDO updateObj = BeanUtils.toBean(updateReqVO, CardDO.class); + cardMapper.updateById(updateObj); + } + + @Override + public void deleteCard(Long id) { + // 校验存在 + validateCardExists(id); + // 删除 + cardMapper.deleteById(id); + } + + private void validateCardExists(Long id) { + if (cardMapper.selectById(id) == null) { + throw exception(CARD_NOT_EXISTS); + } + } + + @Override + public CardDO getCard(Long id) { + return cardMapper.selectById(id); + } + + @Override + public PageResult getCardPage(CardPageReqVO pageReqVO) { + return cardMapper.selectPage(pageReqVO); + } + + @Override + public Boolean recharge(BigDecimal money, String flag) { + //获取最新余额 + CardDO lastCardDO = getLastCardDO(); + CardDO cardDO = new CardDO(); + cardDO.setUserId(SecurityFrameworkUtils.getLoginUserId()); + cardDO.setFlag(flag); + cardDO.setChangeMoney(money); + cardDO.setType(CostTypeEnum.WX_PAY.getCode()); + if(lastCardDO.getMoney() == null){ + lastCardDO.setMoney(BigDecimal.ZERO); + } + if(CardDO.ADD.equals(flag)){ + cardDO.setMoney(lastCardDO.getMoney().add(money).setScale(2, BigDecimal.ROUND_HALF_UP)); + }else { + cardDO.setMoney(lastCardDO.getMoney().subtract(money).setScale(2, BigDecimal.ROUND_HALF_UP)); + } + return cardMapper.insert(cardDO)>0; + } + + @Override + public BigDecimal getMoney() { + CardDO lastCardDO = getLastCardDO(); + if (lastCardDO.getMoney() == null){ + return BigDecimal.ZERO; + } + return lastCardDO.getMoney(); + } + + /** + * 获取当前用户最新余额明细 + * @return + */ + public CardDO getLastCardDO(){ + CardDO lastCardDO = cardMapper.selectOne(Wrappers.lambdaQuery().eq(CardDO::getUserId, SecurityFrameworkUtils.getLoginUserId()) + .orderByDesc(CardDO::getCreateTime).last("limit 1")); + return lastCardDO; + } + + +} \ 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/OrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java new file mode 100644 index 00000000..cedd9dab --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.member.service.order; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +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; +import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 会员订单 Service 接口 + * + * @author 开发账号 + */ +public interface OrderService { + + /** + * 创建会员订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createOrder(@Valid AppOrderSaveReqVO createReqVO); + + /** + * 更新会员订单 + * + * @param updateReqVO 更新信息 + */ + void updateOrder(@Valid AppOrderSaveReqVO updateReqVO); + + /** + * 删除会员订单 + * + * @param id 编号 + */ + void deleteOrder(Long id); + + /** + * 获得会员订单 + * + * @param id 编号 + * @return 会员订单 + */ + AppOrderRespVO getOrder(Long id); + + /** + * 获得会员订单分页 + * + * @param pageReqVO 分页查询 + * @return 会员订单分页 + */ + PageResult getOrderPage(AppOrderPageReqVO pageReqVO); + + /** + * 获得会员订单分页 + * @return 会员订单分页 + */ + List getOrderList(); + +} \ 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 new file mode 100644 index 00000000..924d7745 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java @@ -0,0 +1,108 @@ +package cn.iocoder.yudao.module.member.service.order; + +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.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; +import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; +import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; +import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.math.BigDecimal; +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.ORDER_NOT_EXISTS; + +/** + * 会员订单 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class OrderServiceImpl implements OrderService { + + @Resource + private DishOrderMapper dishOrderMapper; + + @Resource + private OrderDetailService orderDetailService; + + @Override + public Long createOrder(AppOrderSaveReqVO createReqVO) { + // 插入 + DishOrderDO order = BeanUtils.toBean(createReqVO, DishOrderDO.class); + dishOrderMapper.insert(order); + // 返回 + return order.getId(); + } + + @Override + public void updateOrder(AppOrderSaveReqVO updateReqVO) { + // 校验存在 + DishOrderDO dishOrderDO = dishOrderMapper.selectById(updateReqVO.getId()); + if (dishOrderDO == null) { + throw exception(ORDER_NOT_EXISTS); + } + //更新总价 + BigDecimal totalMoney = dishOrderDO.getTotalMoney().add(updateReqVO.getTotalMoney()).setScale(2, BigDecimal.ROUND_HALF_UP); + updateReqVO.setTotalMoney(totalMoney); + + // 更新 + DishOrderDO updateObj = BeanUtils.toBean(updateReqVO, DishOrderDO.class); + dishOrderMapper.updateById(updateObj); + } + + @Override + public void deleteOrder(Long id) { + // 校验存在 + validateOrderExists(id); + // 删除 + dishOrderMapper.deleteById(id); + } + + private void validateOrderExists(Long id) { + if (dishOrderMapper.selectById(id) == null) { + throw exception(ORDER_NOT_EXISTS); + } + } + + @Override + public AppOrderRespVO getOrder(Long id) { + DishOrderDO order = dishOrderMapper.selectById(id); + AppOrderRespVO appOrderRespVO = BeanUtils.toBean(order, AppOrderRespVO.class); + List appOrderDetailRespVOS = orderDetailService.selectListByOrderId(id); + appOrderRespVO.setDetailList(appOrderDetailRespVOS); + return appOrderRespVO; + } + + @Override + public PageResult getOrderPage(AppOrderPageReqVO pageReqVO) { + return dishOrderMapper.selectPage(pageReqVO); + } + + @Override + public List getOrderList() { + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + List dishOrderDOS = dishOrderMapper.selectList(Wrappers.lambdaQuery().eq(DishOrderDO::getUserId,loginUserId)); + List vos = new ArrayList<>(); + for (DishOrderDO dishOrderDO : dishOrderDOS){ + List appOrderDetailRespVOS = orderDetailService.selectListByOrderId(dishOrderDO.getId()); + AppOrderRespVO appOrderRespVO = BeanUtils.toBean(dishOrderDO, AppOrderRespVO.class); + appOrderRespVO.setDetailList(appOrderDetailRespVOS); + vos.add(appOrderRespVO); + } + return vos; + } + + +} \ 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 new file mode 100644 index 00000000..61cdaae2 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailService.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.member.service.orderdetail; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +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; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 订单明细 Service 接口 + * + * @author 开发账号 + */ +public interface OrderDetailService { + + /** + * 创建订单明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createOrderDetail(@Valid AppOrderDetailSaveReqVO createReqVO); + + /** + * 更新订单明细 + * + * @param updateReqVO 更新信息 + */ + void updateOrderDetail(@Valid AppOrderDetailSaveReqVO updateReqVO); + + /** + * 删除订单明细 + * + * @param id 编号 + */ + void deleteOrderDetail(Long id); + + /** + * 获得订单明细 + * + * @param id 编号 + * @return 订单明细 + */ + OrderDetailDO getOrderDetail(Long id); + + /** + * 获得订单明细分页 + * + * @param pageReqVO 分页查询 + * @return 订单明细分页 + */ + PageResult getOrderDetailPage(AppOrderDetailPageReqVO pageReqVO); + + List selectListByOrderId(Long 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/orderdetail/OrderDetailServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java new file mode 100644 index 00000000..11f27a8b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/orderdetail/OrderDetailServiceImpl.java @@ -0,0 +1,80 @@ +package cn.iocoder.yudao.module.member.service.orderdetail; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +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; +import cn.iocoder.yudao.module.member.dal.dataobject.orderdetail.OrderDetailDO; +import cn.iocoder.yudao.module.member.dal.mysql.orderdetail.OrderDetailMapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ORDER_DETAIL_NOT_EXISTS; + +/** + * 订单明细 Service 实现类 + * + * @author 开发账号 + */ +@Service +@Validated +public class OrderDetailServiceImpl implements OrderDetailService { + + @Resource + private OrderDetailMapper orderDetailMapper; + + @Override + public Long createOrderDetail(AppOrderDetailSaveReqVO createReqVO) { + //todo:计算热量 + // 插入 + OrderDetailDO orderDetail = BeanUtils.toBean(createReqVO, OrderDetailDO.class); + orderDetailMapper.insert(orderDetail); + // 返回 + return orderDetail.getId(); + } + + @Override + public void updateOrderDetail(AppOrderDetailSaveReqVO updateReqVO) { + // 校验存在 + validateOrderDetailExists(updateReqVO.getId()); + // 更新 + OrderDetailDO updateObj = BeanUtils.toBean(updateReqVO, OrderDetailDO.class); + orderDetailMapper.updateById(updateObj); + } + + @Override + public void deleteOrderDetail(Long id) { + // 校验存在 + validateOrderDetailExists(id); + // 删除 + orderDetailMapper.deleteById(id); + } + + private void validateOrderDetailExists(Long id) { + if (orderDetailMapper.selectById(id) == null) { + throw exception(ORDER_DETAIL_NOT_EXISTS); + } + } + + @Override + public OrderDetailDO getOrderDetail(Long id) { + return orderDetailMapper.selectById(id); + } + + @Override + public PageResult getOrderDetailPage(AppOrderDetailPageReqVO pageReqVO) { + return orderDetailMapper.selectPage(pageReqVO); + } + + @Override + public List selectListByOrderId(Long orderId) { + List orderDetailDOS = orderDetailMapper.selectList(Wrappers.lambdaQuery().eq(OrderDetailDO::getOrderId, orderId)); + return BeanUtils.toBean(orderDetailDOS, AppOrderDetailRespVO.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/service/user/MemberUserService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java index fb2e9cdb..c4344d02 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java @@ -187,4 +187,10 @@ public interface MemberUserService { */ boolean updateUserPoint(Long userId, Integer point); + /** + * 用户绑卡 + */ + boolean bindCard(String cardId); + + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java index f81e9a17..9fe58787 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java @@ -3,17 +3,26 @@ package cn.iocoder.yudao.module.member.service.user; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.*; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; 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.user.vo.MemberUserPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO; -import cn.iocoder.yudao.module.member.controller.app.user.vo.*; +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserResetPasswordReqVO; +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileByWeixinReqVO; +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateMobileReqVO; +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdatePasswordReqVO; +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserUpdateReqVO; import cn.iocoder.yudao.module.member.convert.auth.AuthConvert; import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import cn.iocoder.yudao.module.member.mq.producer.user.MemberUserProducer; import cn.iocoder.yudao.module.system.api.sms.SmsCodeApi; @@ -64,6 +73,9 @@ public class MemberUserServiceImpl implements MemberUserService { @Resource private MemberUserProducer memberUserProducer; + @Resource + private CardMapper cardMapper; + @Override public MemberUserDO getUserByMobile(String mobile) { return memberUserMapper.selectByMobile(mobile); @@ -314,4 +326,10 @@ public class MemberUserServiceImpl implements MemberUserService { return true; } + @Override + public boolean bindCard(String cardId) { + MemberUserDO memberUserDO = memberUserMapper.selectById(SecurityFrameworkUtils.getLoginUserId()); + memberUserDO.setCardId(cardId); + return memberUserMapper.updateById(memberUserDO) > 0; + } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml new file mode 100644 index 00000000..a0da3ca7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/card/CardMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file