订单和充值明细
This commit is contained in:
@ -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, "订单明细不存在");
|
||||
|
||||
|
||||
}
|
||||
|
@ -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<Long> createCard(@Valid @RequestBody CardSaveReqVO createReqVO) {
|
||||
return success(cardService.createCard(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新余额变动明细")
|
||||
@PreAuthorize("@ss.hasPermission('member:card:update')")
|
||||
public CommonResult<Boolean> 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<Boolean> 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<CardRespVO> 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<PageResult<CardRespVO>> getCardPage(@Valid CardPageReqVO pageReqVO) {
|
||||
PageResult<CardDO> 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<CardDO> 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<Boolean> recharge(BigDecimal money) {
|
||||
return success(cardService.recharge(money,CardDO.ADD));
|
||||
}
|
||||
|
||||
@GetMapping("/getMoney")
|
||||
@Operation(summary = "获取余额")
|
||||
public CommonResult<BigDecimal> getMoney() {
|
||||
return success(cardService.getMoney());
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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<Long> createOrder(@Valid @RequestBody OrderSaveReqVO createReqVO) {
|
||||
// return success(orderService.createOrder(createReqVO));
|
||||
//}
|
||||
//
|
||||
//@PutMapping("/update")
|
||||
//@Operation(summary = "更新会员订单")
|
||||
//@PreAuthorize("@ss.hasPermission('member:order:update')")
|
||||
//public CommonResult<Boolean> 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<Boolean> 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<OrderRespVO> 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<PageResult<OrderRespVO>> getOrderPage(@Valid OrderPageReqVO pageReqVO) {
|
||||
// PageResult<OrderDO> 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<OrderDO> list = orderService.getOrderPage(pageReqVO).getList();
|
||||
// // 导出 Excel
|
||||
// ExcelUtils.write(response, "会员订单.xls", "数据", OrderRespVO.class,
|
||||
// BeanUtils.toBean(list, OrderRespVO.class));
|
||||
//}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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<Long> createOrderDetail(@Valid @RequestBody OrderDetailSaveReqVO createReqVO) {
|
||||
// return success(orderDetailService.createOrderDetail(createReqVO));
|
||||
//}
|
||||
//
|
||||
//@PutMapping("/update")
|
||||
//@Operation(summary = "更新订单明细")
|
||||
//@PreAuthorize("@ss.hasPermission('member:order-detail:update')")
|
||||
//public CommonResult<Boolean> 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<Boolean> 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<OrderDetailRespVO> 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<PageResult<OrderDetailRespVO>> getOrderDetailPage(@Valid OrderDetailPageReqVO pageReqVO) {
|
||||
// PageResult<OrderDetailDO> 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<OrderDetailDO> list = orderDetailService.getOrderDetailPage(pageReqVO).getList();
|
||||
// // 导出 Excel
|
||||
// ExcelUtils.write(response, "订单明细.xls", "数据", OrderDetailRespVO.class,
|
||||
// BeanUtils.toBean(list, OrderDetailRespVO.class));
|
||||
//}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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<OrderDetailRespVO> detailList;
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -118,4 +118,10 @@ public class MemberUserController {
|
||||
return success(MemberUserConvert.INSTANCE.convertPage(pageResult, tags, levels, groups));
|
||||
}
|
||||
|
||||
@PutMapping("/bindCard")
|
||||
@Operation(summary = "绑卡")
|
||||
public CommonResult<Boolean> bindCard(@Valid @RequestBody BindCardVO vo){
|
||||
return success(memberUserService.bindCard(vo.getCardId()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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 <description class purpose>
|
||||
* @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;
|
||||
|
||||
|
||||
|
||||
}
|
@ -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<Long> createOrder(@Valid @RequestBody AppOrderSaveReqVO createReqVO) {
|
||||
return success(orderService.createOrder(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新会员订单")
|
||||
public CommonResult<Boolean> 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<Boolean> 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<AppOrderRespVO> getOrder(@RequestParam("id") Long id) {
|
||||
return success(orderService.getOrder(id));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得会员订单分页")
|
||||
@PreAuthorize("@ss.hasPermission('member:order:query')")
|
||||
public CommonResult<PageResult<AppOrderRespVO>> getOrderPage(@Valid AppOrderPageReqVO pageReqVO) {
|
||||
PageResult<DishOrderDO> 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<DishOrderDO> list = orderService.getOrderPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "会员订单.xls", "数据", AppOrderRespVO.class,
|
||||
BeanUtils.toBean(list, AppOrderRespVO.class));
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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<AppOrderDetailRespVO> detailList;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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<Long> createOrderDetail(@Valid @RequestBody AppOrderDetailSaveReqVO createReqVO) {
|
||||
return success(orderDetailService.createOrderDetail(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新订单明细")
|
||||
@PreAuthorize("@ss.hasPermission('member:order-detail:update')")
|
||||
public CommonResult<Boolean> 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<Boolean> 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<OrderDetailRespVO> 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<PageResult<OrderDetailRespVO>> getOrderDetailPage(@Valid AppOrderDetailPageReqVO pageReqVO) {
|
||||
PageResult<OrderDetailDO> 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<OrderDetailDO> list = orderDetailService.getOrderDetailPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "订单明细.xls", "数据", OrderDetailRespVO.class,
|
||||
BeanUtils.toBean(list, OrderDetailRespVO.class));
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -141,5 +141,13 @@ public class MemberUserDO extends TenantBaseDO {
|
||||
* 关联 {@link MemberGroupDO#getId()} 字段
|
||||
*/
|
||||
private Long groupId;
|
||||
/**
|
||||
* 卡号
|
||||
*/
|
||||
private String cardId;
|
||||
/**
|
||||
* 人脸
|
||||
*/
|
||||
private Long faceId;
|
||||
|
||||
}
|
||||
|
@ -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<CardDO> {
|
||||
|
||||
default PageResult<CardDO> selectPage(CardPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<CardDO>()
|
||||
.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));
|
||||
}
|
||||
}
|
@ -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<DishOrderDO> {
|
||||
|
||||
default PageResult<DishOrderDO> selectPage(AppOrderPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<DishOrderDO>()
|
||||
.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));
|
||||
}
|
||||
|
||||
}
|
@ -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<OrderDetailDO> {
|
||||
|
||||
default PageResult<OrderDetailDO> selectPage(AppOrderDetailPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<OrderDetailDO>()
|
||||
.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));
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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<CardDO> getCardPage(CardPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 余额变动
|
||||
*/
|
||||
Boolean recharge(BigDecimal money, String flag);
|
||||
|
||||
/**
|
||||
* 获取余额
|
||||
*/
|
||||
BigDecimal getMoney();
|
||||
|
||||
}
|
@ -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<CardDO> 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.<CardDO>lambdaQuery().eq(CardDO::getUserId, SecurityFrameworkUtils.getLoginUserId())
|
||||
.orderByDesc(CardDO::getCreateTime).last("limit 1"));
|
||||
return lastCardDO;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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<DishOrderDO> getOrderPage(AppOrderPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获得会员订单分页
|
||||
* @return 会员订单分页
|
||||
*/
|
||||
List<AppOrderRespVO> getOrderList();
|
||||
|
||||
}
|
@ -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<AppOrderDetailRespVO> appOrderDetailRespVOS = orderDetailService.selectListByOrderId(id);
|
||||
appOrderRespVO.setDetailList(appOrderDetailRespVOS);
|
||||
return appOrderRespVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<DishOrderDO> getOrderPage(AppOrderPageReqVO pageReqVO) {
|
||||
return dishOrderMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AppOrderRespVO> getOrderList() {
|
||||
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
||||
List<DishOrderDO> dishOrderDOS = dishOrderMapper.selectList(Wrappers.<DishOrderDO>lambdaQuery().eq(DishOrderDO::getUserId,loginUserId));
|
||||
List<AppOrderRespVO> vos = new ArrayList<>();
|
||||
for (DishOrderDO dishOrderDO : dishOrderDOS){
|
||||
List<AppOrderDetailRespVO> appOrderDetailRespVOS = orderDetailService.selectListByOrderId(dishOrderDO.getId());
|
||||
AppOrderRespVO appOrderRespVO = BeanUtils.toBean(dishOrderDO, AppOrderRespVO.class);
|
||||
appOrderRespVO.setDetailList(appOrderDetailRespVOS);
|
||||
vos.add(appOrderRespVO);
|
||||
}
|
||||
return vos;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -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<OrderDetailDO> getOrderDetailPage(AppOrderDetailPageReqVO pageReqVO);
|
||||
|
||||
List<AppOrderDetailRespVO> selectListByOrderId(Long orderId);
|
||||
|
||||
}
|
@ -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<OrderDetailDO> getOrderDetailPage(AppOrderDetailPageReqVO pageReqVO) {
|
||||
return orderDetailMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AppOrderDetailRespVO> selectListByOrderId(Long orderId) {
|
||||
List<OrderDetailDO> orderDetailDOS = orderDetailMapper.selectList(Wrappers.<OrderDetailDO>lambdaQuery().eq(OrderDetailDO::getOrderId, orderId));
|
||||
return BeanUtils.toBean(orderDetailDOS, AppOrderDetailRespVO.class);
|
||||
}
|
||||
}
|
@ -187,4 +187,10 @@ public interface MemberUserService {
|
||||
*/
|
||||
boolean updateUserPoint(Long userId, Integer point);
|
||||
|
||||
/**
|
||||
* 用户绑卡
|
||||
*/
|
||||
boolean bindCard(String cardId);
|
||||
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper">
|
||||
|
||||
<!--
|
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||
-->
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user