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 2e3c8f56..7654dabe 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 @@ -95,6 +95,7 @@ public interface ErrorCodeConstants { ErrorCode DINING_PLATES_CANNOT_UNBIND = new ErrorCode(1_007_902_002, "餐盘已产生费用,无法解绑"); ErrorCode DINING_PLATES_ALREADY = new ErrorCode(1_007_902_003, "餐盘已存在"); + ErrorCode DINING_PLATES_TIME = new ErrorCode(1_007_902_004, "3秒内餐盘不能解绑"); ErrorCode REFUND_NOT_EXISTS = new ErrorCode(1_007_903_001, "退款审核不存在"); ErrorCode ORDER_ALREADY_APPLY = new ErrorCode(1_007_903_002, "订单已申请退款"); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageReqVO.java index 07c01c9e..d489d5a0 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderPageReqVO.java @@ -33,6 +33,9 @@ public class StoreOrderPageReqVO extends PageParam { @Schema(description = "总价钱", example = "1722") private Double totalPrice; + @Schema(description = "用户ID") + private Long userId; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java index f032a6d0..ab96ce57 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/vo/StoreOrderRespVO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.member.controller.admin.storeorder.vo; +import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -45,4 +46,12 @@ public class StoreOrderRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "用户ID") + @ExcelProperty("用户") + private Long userId; + + @Schema(description = "用户ID") + @ExcelProperty("用户") + private List detailDOS; + } \ 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/diningplates/AppDiningPlatesController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java index 05f5a0a3..c7df736a 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/diningplates/AppDiningPlatesController.java @@ -22,6 +22,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -92,13 +93,11 @@ public class AppDiningPlatesController { @Operation(summary = "餐盘解绑") public CommonResult checkBindAndUnBind(String diningPlatesNum,Long storeId) { storeId = getCarteen(storeId); - String b = diningPlatesService.checkBindAndUnBind(diningPlatesNum, storeId); + Map map = diningPlatesService.checkBindAndUnBind(diningPlatesNum, storeId); CommonResult result = new CommonResult<>(); result.setCode(200); - result.setData(b); - if ("bind".equals(b)) { - result.setMsg("餐盘已解绑"); - } + result.setData(map.get("data")); + result.setMsg(map.get("msg")); return result; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreOrderDto.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreOrderDto.java index f8b65877..6ab2d615 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreOrderDto.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreOrderDto.java @@ -8,4 +8,6 @@ public class StoreOrderDto extends StoreSaleGoodsDto{ private String cardNumber; private String jwt; + + private Long userId; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java new file mode 100644 index 00000000..0757fe74 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/storeorder/AppStoreOrderController.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.member.controller.app.storeorder; + +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.storeorder.vo.StoreOrderPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderRespVO; +import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; +import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService; +import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService; +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.*; + +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/store-order") +@Validated +public class AppStoreOrderController { + + @Resource + private StoreOrderService storeOrderService; + @Resource + private StoreOrderDetailService orderDetailService; + + + @GetMapping("/page") + @Operation(summary = "获得商品订单分页") + public CommonResult> getStoreOrderPage(@Valid StoreOrderPageReqVO pageReqVO) { + PageResult pageResult = storeOrderService.getStoreOrderPage(pageReqVO); + PageResult bean = BeanUtils.toBean(pageResult, StoreOrderRespVO.class); + //处理订单详情 + for (StoreOrderRespVO vo: bean.getList()) { + vo.setDetailDOS(orderDetailService.getListByOrderNo(vo.getOrderId())); + } + return success(bean); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java index ca5dbeb9..7972d7f6 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storeorder/StoreOrderDO.java @@ -52,4 +52,6 @@ public class StoreOrderDO extends BaseDO { */ private Double totalPrice; + 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/mysql/storeorder/StoreOrderMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeorder/StoreOrderMapper.java index 6c8ff181..c57ee193 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeorder/StoreOrderMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storeorder/StoreOrderMapper.java @@ -25,6 +25,7 @@ public interface StoreOrderMapper extends BaseMapperX { .eqIfPresent(StoreOrderDO::getEquipmentCode, reqVO.getEquipmentCode()) .eqIfPresent(StoreOrderDO::getUuid, reqVO.getUuid()) .eqIfPresent(StoreOrderDO::getTotalPrice, reqVO.getTotalPrice()) + .eqIfPresent(StoreOrderDO::getUserId, reqVO.getUserId()) .betweenIfPresent(StoreOrderDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(StoreOrderDO::getOrderId)); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java index c971c502..22633e65 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesService.java @@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO import javax.validation.Valid; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; /** * 餐盘 Service 接口 @@ -106,5 +107,5 @@ public interface DiningPlatesService { */ List getBindDiningPlatesList(); - String checkBindAndUnBind(String diningPlatesNum,Long storeId); + Map checkBindAndUnBind(String diningPlatesNum, Long storeId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java index f7cefab8..a4063499 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/diningplates/DiningPlatesServiceImpl.java @@ -37,11 +37,14 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; +import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -480,18 +483,31 @@ public class DiningPlatesServiceImpl implements DiningPlatesService { @Override @Transactional(rollbackFor = Exception.class) - public String checkBindAndUnBind(String diningPlatesNum,Long storeId) { + public Map checkBindAndUnBind(String diningPlatesNum,Long storeId) { + + Map map = new HashMap<>(); + DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.lambdaQuery() .eq(DiningPlatesDO::getDiningPlatesNum, diningPlatesNum) .eq(DiningPlatesDO::getStoreId, storeId)); + LocalDateTime bindingTime = diningPlatesDO.getBindingTime(); + long seconds = Duration.between(bindingTime, LocalDateTime.now()).getSeconds(); if(diningPlatesDO == null ) { - return "absent"; + map.put("data", "absent"); + map.put("msg",null); }else if (diningPlatesDO.getUserId() == null){ - return "unbind"; - }else { - unbind(diningPlatesNum,storeId); - return "bind"; + map.put("data", "unbind"); + map.put("msg",null); + }else if (seconds <= 3){ + throw exception(DINING_PLATES_TIME); } + else { + unbind(diningPlatesNum,storeId); + map.put("data", "bind"); + map.put("msg","餐盘已解绑"); + } + + return map; } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java index 1fb6a618..c04fac5a 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java @@ -148,12 +148,15 @@ public class StoreOrderServiceImpl implements StoreOrderService { @Override @Transactional(rollbackFor = Exception.class) public String cardPay(StoreOrderDto dto) { - Double totalPrice = createOrder(dto).getTotalPrice(); - BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP); + MemberUserDO userDO = userService.getByCardId(dto.getCardNumber()); if (ObjectUtil.isEmpty(userDO)){ return "该卡未绑定用户"; } + dto.setUserId(userDO.getId()); + Double totalPrice = createOrder(dto).getTotalPrice(); + BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP); + BigDecimal compute = compute(total, userDO.getId()); if (compute.compareTo(BigDecimal.ZERO) < 0) { return "false"; @@ -163,12 +166,14 @@ public class StoreOrderServiceImpl implements StoreOrderService { } @Override + @Transactional(rollbackFor = Exception.class) public String codePay(StoreOrderDto dto) { String s = validateJWT(dto.getJwt()); if (StrUtil.isBlank(s)) { return "二维码过期"; } MemberUserDO user = userService.getUser(Long.valueOf(s)); + dto.setUserId(user.getId()); Double totalPrice = createOrder(dto).getTotalPrice(); BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java index 7afb8d4c..04242b7d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailService.java @@ -53,4 +53,6 @@ public interface StoreOrderDetailService { PageResult getStoreOrderDetailPage(StoreOrderDetailPageReqVO pageReqVO); void saveBatch(List list); + + List getListByOrderNo(Integer orderId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailServiceImpl.java index a3dae57e..6fd78779 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorderdetail/StoreOrderDetailServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.member.service.storeorderdetail; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -75,4 +76,9 @@ public class StoreOrderDetailServiceImpl implements StoreOrderDetailService { public void saveBatch(List list) { storeOrderDetailMapper.insertBatch(list); } + + @Override + public List getListByOrderNo(Integer orderId) { + return storeOrderDetailMapper.selectList(Wrappers.lambdaQuery().eq(StoreOrderDetailDO::getOrderId, orderId)); + } } \ No newline at end of file