diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java index 18500466..18d1a756 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storeorder/StoreOrderController.java @@ -1,41 +1,44 @@ package cn.iocoder.yudao.module.member.controller.admin.storeorder; import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +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.StoreOrderDetailVO; +import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageVO; +import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreOrderDetailVo; +import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; -import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; +import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService; import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService; import cn.iocoder.yudao.module.member.service.user.MemberUserService; import cn.iocoder.yudao.module.system.api.cashregisterinfo.CashregisterinfoApi; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; +import 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.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.math.BigDecimal; -import java.util.*; +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 cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; - -import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.*; -import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; -import cn.iocoder.yudao.module.member.service.storeorder.StoreOrderService; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 商品订单") @RestController @@ -121,4 +124,11 @@ public class StoreOrderController { return CommonResult.success(true); } + @PostMapping("/customize") + @Operation(summary = "自定义") + public CommonResult customize(@RequestBody StoreOrderDto dto){ + storeOrderService.customize(dto); + return CommonResult.success(true); + } + } \ 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/StoreOrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java index 7e270725..a6f76052 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderService.java @@ -61,7 +61,7 @@ public interface StoreOrderService { */ PageResult getStoreOrderPage(StoreOrderPageReqVO pageReqVO); - StoreOrderDO createOrder(StoreOrderDto dto,Integer status); + StoreOrderDO createOrder(StoreOrderDto dto, Integer status); UserInfoVo facePay(FacePayDto dto); @@ -77,5 +77,7 @@ public interface StoreOrderService { void reduction(Long orderId, BigDecimal money); - Boolean appCreate(@RequestBody CardDto dto); + Boolean appCreate(@RequestBody CardDto dto); + + String customize(StoreOrderDto dto); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storeorder/StoreOrderServiceImpl.java index 92f8e718..d7e27c37 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 @@ -17,15 +17,11 @@ import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadD import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.AppStoreGoodsDetail; import cn.iocoder.yudao.module.member.controller.app.storeorder.vo.CardDto; -import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; -import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper; -import cn.iocoder.yudao.module.member.enums.CostTypeEnum; import cn.iocoder.yudao.module.member.enums.StoreOrderStatusEnum; -import cn.iocoder.yudao.module.member.enums.TimePeriodEnum; import cn.iocoder.yudao.module.member.service.amount.AmountService; import cn.iocoder.yudao.module.member.service.amount.DeductionService; import cn.iocoder.yudao.module.member.service.card.CardService; @@ -51,7 +47,6 @@ import java.util.List; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.AMOUNT_NOT_ENOUGH; import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_ORDER_NOT_EXISTS; -import static cn.iocoder.yudao.module.member.util.QRCodeWithJWTUtil.validateJWT; /** * 商品订单 Service 实现类 @@ -331,6 +326,43 @@ public class StoreOrderServiceImpl implements StoreOrderService { return true; } + @Override + public String customize(StoreOrderDto dto) { + + MemberUserDO user = userService.getUserByMobile(dto.getJwt()); + + List equipmentGoodsCustoms = dto.getEquipmentGoodsCustoms(); + double sum = equipmentGoodsCustoms.stream() + .mapToDouble(StoreGoodsDto::getTotalPrice) + .sum(); + BigDecimal totalMoney = BigDecimal.valueOf(sum); + + dto.setUserId(user.getId()); + if(user.getMoney().compareTo(totalMoney) < 0){ + throw exception(AMOUNT_NOT_ENOUGH); + } + StoreOrderDO order = createOrder(dto,StoreOrderStatusEnum.COMPLETE.getCode()); + Double totalPrice = order.getTotalPrice(); + BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP); + + BigDecimal compute = compute(total, user.getId()); + if (compute.compareTo(BigDecimal.ZERO) < 0) { + storeOrderMapper.deleteById(order.getOrderId()); + orderDetailService.deleteByOrderNo(order.getOrderId()); + throw exception(AMOUNT_NOT_ENOUGH); + } + //营业数据 + StatisticsVo statisticsVo = new StatisticsVo(); + statisticsVo.setCarteenId(order.getCarteenId()); + statisticsVo.setTotalMoney(total); + statisticsVo.setOrderSum(1); + statisticsVo.setTime(order.getCreateTime()); + statisticsVo.setOrderId(order.getOrderId().longValue()); + storeBusinessService.updateStatistics(statisticsVo); + + return null; + } + public void test() { //计算金额 //if (total.compareTo(wxAmount) <= 0) {