From ab30f6c9cc7606a6b271195647290498312f7553 Mon Sep 17 00:00:00 2001 From: huk Date: Fri, 26 Sep 2025 16:02:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(app):=20=E6=96=B0=E5=A2=9Eapp=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E4=B8=8E=E5=95=86=E6=88=B7=E6=A8=A1=E5=9D=97=E9=85=8D?= =?UTF-8?q?=E7=BD=AE-=20=E5=9C=A8application.yml=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0app=E4=BC=9A=E5=91=98=E6=A8=A1=E5=9D=97=E5=92=8C?= =?UTF-8?q?=E5=95=86=E6=88=B7=E6=A8=A1=E5=9D=97=E7=9A=84=E5=8C=85=E6=89=AB?= =?UTF-8?q?=E6=8F=8F=E9=85=8D=E7=BD=AE=20-=20=E4=BC=98=E5=8C=96=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=9C=8D=E5=8A=A1=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81=E5=95=86=E6=88=B7?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E6=95=B0=E6=8D=AE=E7=AD=9B=E9=80=89=20-=20?= =?UTF-8?q?=E9=85=8D=E7=BD=AEknife4j=E6=96=87=E6=A1=A3=E5=88=86=E7=BB=84?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81app=E6=A8=A1=E5=9D=97=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=96=87=E6=A1=A3=E5=B1=95=E7=A4=BA=20-=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=AE=A2=E5=8D=95=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E8=A1=A5=E5=85=85=E5=95=86=E5=93=81=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E4=BA=BAID=E7=AD=89=E5=AD=97=E6=AE=B5=20-=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E8=A7=84=E5=88=99=E4=B8=AD=E7=9A=84=E6=89=8B?= =?UTF-8?q?=E7=BB=AD=E8=B4=B9=E7=9B=B8=E5=85=B3=E5=AD=97=E6=AE=B5=E4=B8=8E?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=80=BB=E8=BE=91-=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E7=A0=81VO=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=A0=B8=E9=94=80=E7=8A=B6=E6=80=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/customer/AppOrderController.java | 4 +- .../merchant/AppMerchantBillController.java | 3 +- .../merchant/AppMerchantOrderController.java | 11 +- .../web/controller/AuthController.java | 6 - .../src/main/resources/application.yml | 4 + .../soopin/order/domain/bo/OrderItemBo.java | 17 +-- .../order/domain/bo/SaveOrderSkuItemBO.java | 13 +- .../soopin/order/domain/entity/OrderItem.java | 8 +- .../order/domain/vo/MerchantOrderVO.java | 119 ++++++++++++++++++ .../order/domain/vo/VerificationCodesVO.java | 59 +++++++++ .../soopin/order/mapper/OrderItemMapper.java | 12 +- .../order/service/IMerchantOrderService.java | 8 +- .../impl/MerchantOrderServiceImpl.java | 57 ++------- .../order/service/impl/OrderServiceImpl.java | 7 +- .../main/resources/mapper/OrderItemMapper.xml | 99 ++++++++++----- .../transaction/domain/bo/DivideRuleBO.java | 7 -- .../domain/bo/DivideRuleDetailBO.java | 4 - .../service/impl/DivideRuleServiceImpl.java | 10 +- 18 files changed, 307 insertions(+), 141 deletions(-) create mode 100644 ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/MerchantOrderVO.java create mode 100644 ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/VerificationCodesVO.java diff --git a/ruoyi-admin/src/main/java/org/dromara/app/customer/AppOrderController.java b/ruoyi-admin/src/main/java/org/dromara/app/customer/AppOrderController.java index b0e1e8b55..b7f098f1f 100644 --- a/ruoyi-admin/src/main/java/org/dromara/app/customer/AppOrderController.java +++ b/ruoyi-admin/src/main/java/org/dromara/app/customer/AppOrderController.java @@ -5,7 +5,6 @@ import com.wzj.soopin.content.utils.RedisOperator; import com.wzj.soopin.order.business.IOrderBusiness; import com.wzj.soopin.order.domain.bo.OrderBo; import com.wzj.soopin.order.domain.bo.SaveOrderBO; -import com.wzj.soopin.order.domain.entity.Order; import com.wzj.soopin.order.domain.vo.OrderVO; import com.wzj.soopin.order.service.IMemberOrderService; import com.wzj.soopin.order.service.OrderService; @@ -18,13 +17,12 @@ import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; -import org.dromara.common.mq.utils.MqUtil; import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.web.bind.annotation.*; @Slf4j -@Tag(name = "订单") +@Tag(name = "app-用户-订单接口") @RequestMapping("/app/order") @RestController @RequiredArgsConstructor diff --git a/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantBillController.java b/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantBillController.java index 3d6c20d44..24307319e 100644 --- a/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantBillController.java +++ b/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantBillController.java @@ -6,6 +6,7 @@ import com.wzj.soopin.member.domain.bo.AccountBillBO; import com.wzj.soopin.member.domain.vo.AccountBillVO; import com.wzj.soopin.member.domain.vo.AccountStatisticVO; import com.wzj.soopin.transaction.service.IAccountBillService; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -60,7 +61,7 @@ public class AppMerchantBillController { return R.ok(voPage); } - @Tag(name = "账户统计") + @Operation(summary = "账户统计") @PostMapping("/statistic") public R statistic() { LoginUser loginUser = LoginHelper.getLoginUser(); diff --git a/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java b/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java index 2ee09aeb8..6886fd3ba 100644 --- a/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java +++ b/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java @@ -2,8 +2,9 @@ package org.dromara.app.merchant; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wzj.soopin.order.business.IOrderBusiness; -import com.wzj.soopin.order.domain.bo.OrderBo; +import com.wzj.soopin.order.domain.bo.OrderItemBo; import com.wzj.soopin.order.domain.entity.Order; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; import com.wzj.soopin.order.domain.vo.OrderVO; import com.wzj.soopin.order.service.IMerchantOrderService; import com.wzj.soopin.order.service.VerificationCodeService; @@ -12,8 +13,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.R; -import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.web.bind.annotation.*; /** @@ -23,7 +22,7 @@ import org.springframework.web.bind.annotation.*; * @since 2020-12-18 16:59 */ @Slf4j -@Tag(name = "商户端,订单接口") +@Tag(name = "app-商户-订单接口") @RequestMapping("/app/merchant/order") @RestController @RequiredArgsConstructor @@ -57,9 +56,7 @@ public class AppMerchantOrderController { @PostMapping("/page") @Operation(summary = "查询当前商家订单列表") - public R> page(@RequestBody OrderBo bo){ - LoginUser loginUser= LoginHelper.getLoginUser(); - bo.setTenantId(loginUser.getTenantId()); + public R> page(@RequestBody OrderItemBo bo){ return R.ok(merchantOrderService.page(bo)); } } diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index d7d005509..e530a2d0c 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -1,10 +1,8 @@ package org.dromara.web.controller; import cn.dev33.satoken.annotation.SaIgnore; -import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.codec.Base64; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; @@ -16,7 +14,6 @@ import me.zhyd.oauth.utils.AuthStateUtils; import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginBody; -import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.domain.model.RegisterBody; import org.dromara.common.core.domain.model.SocialLoginBody; import org.dromara.common.core.utils.*; @@ -29,8 +26,6 @@ import org.dromara.common.social.utils.SocialUtils; import org.dromara.common.sse.dto.SseMessageDto; import org.dromara.common.sse.utils.SseMessageUtils; import org.dromara.common.tenant.helper.TenantHelper; -import org.dromara.system.domain.SysTenant; -import org.dromara.system.domain.bo.SysTenantBo; import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.domain.vo.SysTenantVo; import org.dromara.system.service.*; @@ -43,7 +38,6 @@ import org.dromara.web.service.SysRegisterService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 0ace2766f..9614731fe 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -297,6 +297,10 @@ springdoc: packages-to-scan: com.wzj.soopin.im - group: 7.系统模块 packages-to-scan: org.dromara.system + - group: 8.app会员模块 + packages-to-scan: org.dromara.app.customer + - group: 9.app商户模块 + packages-to-scan: org.dromara.app.merchant legacy-mode: true knife4j: enable: true diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/OrderItemBo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/OrderItemBo.java index aa620d956..b0f3983c6 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/OrderItemBo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/OrderItemBo.java @@ -1,16 +1,16 @@ package com.wzj.soopin.order.domain.bo; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.wzj.soopin.order.domain.entity.OrderItem; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import org.dromara.common.core.domain.BaseBO; import java.math.BigDecimal; @Data @Schema(description = "订单中所包含的商品 查询 对象") -public class OrderItemBo { +public class OrderItemBo extends BaseBO { @Schema(description = "订单id 精确匹配") private Long orderId; @@ -32,9 +32,6 @@ public class OrderItemBo { @Schema(description = "sku快照id 精确匹配") private Long skuSnapshotId; - @Schema(description = "展示图片 精确匹配") - private String pic; - @Schema(description = "PRODUCT_NAME 精确匹配") private String productNameLike; @@ -50,10 +47,10 @@ public class OrderItemBo { @Schema(description = "商品分类id 精确匹配") private Long productCategoryId; - @Schema(description = "商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}] 精确匹配") - private String spData; + @Schema(description = "商户租户id", hidden = true) + private String tenantId; - public Wrapper toWrapper() { + public LambdaQueryWrapper toWrapper() { return new LambdaQueryWrapper() .eq(orderId != null, OrderItem::getOrderId, orderId) .eq(productId != null, OrderItem::getProductId, productId) @@ -62,12 +59,10 @@ public class OrderItemBo { .eq(outSkuId != null && !outSkuId.isEmpty(), OrderItem::getOutSkuId, outSkuId) .eq(productSnapshotId != null, OrderItem::getProductSnapshotId, productSnapshotId) .eq(skuSnapshotId != null, OrderItem::getSkuSnapshotId, skuSnapshotId) - .eq(pic != null && !pic.isEmpty(), OrderItem::getPic, pic) .like(productNameLike != null && !productNameLike.isEmpty(), OrderItem::getProductName, productNameLike) .eq(salePrice != null, OrderItem::getSalePrice, salePrice) .eq(purchasePrice != null, OrderItem::getPurchasePrice, purchasePrice) .eq(quantity != null, OrderItem::getQuantity, quantity) - .eq(productCategoryId != null, OrderItem::getProductCategoryId, productCategoryId) - .eq(spData != null && !spData.isEmpty(), OrderItem::getSpData, spData); + .eq(productCategoryId != null, OrderItem::getProductCategoryId, productCategoryId); } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/SaveOrderSkuItemBO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/SaveOrderSkuItemBO.java index cf223416e..e8be911d2 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/SaveOrderSkuItemBO.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/bo/SaveOrderSkuItemBO.java @@ -1,6 +1,7 @@ package com.wzj.soopin.order.domain.bo; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; @@ -16,15 +17,15 @@ import lombok.NoArgsConstructor; @Builder public class SaveOrderSkuItemBO { - /** - * 商品id - */ + @Schema(description = "商品id") @NotNull(message = "商品id不能为空") private Long skuId; - /** - * 下单数量 - */ + @NotNull(message = "下单数量不能为空") + @Schema(description = "下单数量") private Integer quantity; + + @Schema(description = "商品分享人id") + private Long shareMemberId; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/OrderItem.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/OrderItem.java index 69ccb25a0..6681e98e9 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/OrderItem.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/entity/OrderItem.java @@ -83,8 +83,8 @@ public class OrderItem extends BaseAudit { @Excel(name = "商品分类id") private Long productCategoryId; - @Schema(description = "商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}]") - @Excel(name = "商品sku属性:[{\"key\":\"颜色\",\"value\":\"颜色\"},{\"key\":\"容量\",\"value\":\"4G\"}]") + @Schema(description = "商品sku属性") + @Excel(name = "商品sku属性") private String spData; @Schema(description = "租户id") @@ -95,4 +95,8 @@ public class OrderItem extends BaseAudit { @Excel(name = "租户名称") private String tenantName; + @Schema(description = "商品分享人id") + private Long shareMemberId; + + } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/MerchantOrderVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/MerchantOrderVO.java new file mode 100644 index 000000000..0f48aa211 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/MerchantOrderVO.java @@ -0,0 +1,119 @@ +package com.wzj.soopin.order.domain.vo; + + +import com.wzj.soopin.order.emum.OrderStatusEnum; +import com.wzj.soopin.order.emum.VerificationCodeStatus; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.common.excel.annotation.Excel; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "商家订单详情") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class MerchantOrderVO { + + @Schema(description = "订单id") + private String orderId; + + @Schema(description = "订单编号") + private String orderSn; + + @Schema(description = "MEMBER_ID") + @Excel(name = "MEMBER_ID") + private Long memberId; + + @Schema(description = "用户帐号") + @Excel(name = "用户帐号") + private String memberUsername; + + @Schema(description = "商家备注") + private String merchantNote; + + @Schema(description = "支付方式") + private Integer payType; + + /** + * 订单状态 + * @see OrderStatusEnum#getValue() + */ + @Schema(description="订单状态", implementation = OrderStatusEnum.class) + private Integer status; + + @Schema(description="是否处于退款状态") + private Boolean aftersale; + + @Schema(description = "订单明细id") + private Long orderItemId; + + @Schema(description = "商品id") + private Long productId; + + @Schema(description = "商品skuid") + private Long skuId; + + @Schema(description = "商品快照id") + private Long productSnapshotId; + + @Schema(description = "sku快照id") + private Long skuSnapshotId; + + @Schema(description = "展示图片") + private String pic; + + @Schema(description = "商品名称") + private String productName; + + @Schema(description = "销售价格") + private BigDecimal salePrice; + + @Schema(description = "购买数量") + private Integer quantity; + + @Schema(description = "商品分类id") + private Long productCategoryId; + + @Schema(description = "商品分类名称") + private String productCategoryName; + + @Schema(description = "商品sku属性") + private String spData; + + @Schema(description = "商户id") + private String tenantId; + + @Schema(description = "商户名称") + private String tenantName; + + @Schema(description = "核销码") + private String code; + + /** + * 核销状态 + * @see VerificationCodeStatus#getCode() + */ + @Schema(description = "核销状态", implementation = VerificationCodeStatus.class) + private Integer verificationCodeStatus; + + @Schema(description = "核销码使用时间") + private LocalDateTime usedTime; + + @Schema(description = "使用商家id") + private String usedMerchantId; + + @Schema(description = "过期时间") + private LocalDateTime expireTime; + + @Schema(description = "核销时间") + private LocalDateTime verificationTime; + + @Schema(description = "核销失败原因") + private String reason; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/VerificationCodesVO.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/VerificationCodesVO.java new file mode 100644 index 000000000..d5e742d15 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/domain/vo/VerificationCodesVO.java @@ -0,0 +1,59 @@ +package com.wzj.soopin.order.domain.vo; + +import com.wzj.soopin.order.emum.VerificationCodeStatus; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import org.dromara.common.core.domain.model.BaseAudit; + +import java.time.LocalDateTime; + +@EqualsAndHashCode(callSuper = true) +@Schema(description = "核销码VO") +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class VerificationCodesVO extends BaseAudit { + + @Schema(description = "ID") + private Long id; + + @Schema(description = "核销码") + private String code; + + @Schema(description = "关联订单id") + private Long orderId; + + @Schema(description = "订单子项id") + private Long orderItemId; + + /** + * 状态 见{@link VerificationCodeStatus} + */ + @Schema(description = "状态") + private Integer status; + + @Schema(description = "用户id") + private Long memberId; + + @Schema(description = "用户昵称") + private String memberName; + + @Schema(description = "使用时间") + private LocalDateTime usedTime; + + @Schema(description = "使用商家id") + private String usedMerchantId; + + @Schema(description = "过期时间") + private LocalDateTime expireTime; + + @Schema(description = "核销时间") + private LocalDateTime verificationTime; + + @Schema(description = "核销结果") + private Integer result; + + @Schema(description = "失败原因") + private String reason; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/mapper/OrderItemMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/mapper/OrderItemMapper.java index f1ef1f381..d4d4e0a7d 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/mapper/OrderItemMapper.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/mapper/OrderItemMapper.java @@ -1,9 +1,15 @@ package com.wzj.soopin.order.mapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.wzj.soopin.order.domain.bo.OrderItemBo; import com.wzj.soopin.order.domain.entity.OrderItem; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; +import com.wzj.soopin.order.domain.vo.OrderItemVO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import java.util.List; import java.util.Map; @@ -14,7 +20,7 @@ import java.util.Map; * @author zcc */ @Mapper -public interface OrderItemMapper extends BaseMapper { +public interface OrderItemMapper extends BaseMapperPlus { /** * 查询订单中所包含的商品列表 * @@ -63,4 +69,6 @@ public interface OrderItemMapper extends BaseMapper { @Select("SELECT * FROM oms_order_item WHERE order_id = #{orderId}") List findByOrderId(Long orderId); + + IPage selectMerchatOrderPage(@Param("page") Page page, @Param("query") OrderItemBo query); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/IMerchantOrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/IMerchantOrderService.java index 26c02365a..f8140bd7c 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/IMerchantOrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/IMerchantOrderService.java @@ -1,12 +1,12 @@ package com.wzj.soopin.order.service; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; -import com.wzj.soopin.order.domain.bo.OrderBo; +import com.wzj.soopin.order.domain.bo.OrderItemBo; import com.wzj.soopin.order.domain.entity.Order; -import com.wzj.soopin.order.domain.vo.OrderVO; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; public interface IMerchantOrderService extends IService { - Page page(OrderBo bo); + IPage page(OrderItemBo bo); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/MerchantOrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/MerchantOrderServiceImpl.java index 7408be610..cd20d4fab 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/MerchantOrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/MerchantOrderServiceImpl.java @@ -1,68 +1,31 @@ package com.wzj.soopin.order.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.wzj.soopin.goods.mapper.SkuMapper; -import com.wzj.soopin.order.convert.OrderConvert; -import com.wzj.soopin.order.convert.OrderItemConvert; -import com.wzj.soopin.order.domain.bo.OrderBo; +import com.wzj.soopin.order.domain.bo.OrderItemBo; import com.wzj.soopin.order.domain.entity.Order; -import com.wzj.soopin.order.domain.entity.OrderItem; -import com.wzj.soopin.order.domain.vo.OrderVO; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; import com.wzj.soopin.order.mapper.OrderItemMapper; import com.wzj.soopin.order.mapper.OrderMapper; -import com.wzj.soopin.order.service.IMemberOrderService; import com.wzj.soopin.order.service.IMerchantOrderService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.satoken.utils.LoginHelper; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - @Service @AllArgsConstructor @Slf4j public class MerchantOrderServiceImpl extends ServiceImpl implements IMerchantOrderService { - private final OrderConvert convert; private final OrderItemMapper orderItemMapper; - private final SkuMapper skuMapper; - private final OrderItemConvert orderItemConvert; + @Override - public Page page( OrderBo bo) { - Page resultPage = baseMapper.selectPage(bo.getPage(),bo.toWrapper()); - - Page orderVOPage = convert.toVO(resultPage); - List orderVOList = orderVOPage.getRecords(); - if (orderVOList.isEmpty()) { - return orderVOPage; - } - - // 获取所有订单id - List orderIds = orderVOList.stream() - .map(OrderVO::getId) - .collect(Collectors.toList()); - - // 根据订单id查询订单详情 - QueryWrapper orderItemQueryWrapper = new QueryWrapper<>(); - orderItemQueryWrapper.in("order_id", orderIds); - List orderItemList = orderItemMapper.selectList(orderItemQueryWrapper); - - // 按照订单id分组订单详情 - Map> orderItemMapByOrderId = orderItemList.stream() - .collect(Collectors.groupingBy(OrderItem::getOrderId)); - - for (OrderVO orderVO : orderVOList) { - List orderItems = orderItemMapByOrderId.get(orderVO.getId()); - if (orderItems != null) { - orderVO.setItems(orderItemConvert.toVO(orderItems)); - } - } - - return orderVOPage; + public IPage page(OrderItemBo bo) { + LoginUser loginUser= LoginHelper.getLoginUser(); + bo.setTenantId(loginUser.getTenantId()); + return orderItemMapper.selectMerchatOrderPage(Page.of(bo.getCurrent(), bo.getSize()),bo); } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java index cc252bb72..5dfda9065 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java @@ -255,11 +255,16 @@ public class OrderServiceImpl extends ServiceImpl implements .productSnapshotId(product.getProductSnapshotId()) .skuId(sku.getId()) .skuSnapshotId(sku.getSkuSnapshotId()) - .productName(product != null ? product.getName() : "") + .productCategoryId(product.getCategoryId()) + .productName(product.getName()) + .outProductId(product.getOutProductId()) + .spData(sku.getSpData()) + .outSkuId(sku.getOutSkuId()) .pic(sku.getPic()) .salePrice(sku.getPrice()) .quantity(map.get(sku.getId())) .tenantId(sku.getTenantId()) + .shareMemberId(skuItemBOList.stream().filter(item -> item.getSkuId().equals(sku.getId())).findFirst().get().getShareMemberId()) .build(); }).toList(); orderItemMapper.insert(orderItemList); diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml index be4f1f14a..52baef1b4 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml @@ -4,38 +4,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - select id, order_id, product_id, out_product_id, sku_id, out_sku_id, product_snapshot_id, sku_snapshot_id, pic, product_name, sale_price, purchase_price, quantity, product_category_id, sp_data, create_by, create_time, update_by, update_time from oms_order_item - - - + select * from oms_order_item and order_id = #{orderId} and product_id = #{productId} @@ -54,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT * FROM oms_order_item @@ -101,4 +71,67 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleBO.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleBO.java index 7f9dd34d1..8c9f0ed34 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleBO.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleBO.java @@ -44,13 +44,6 @@ public class DivideRuleBO extends BaseBO { @NotBlank(message = "名称不能为空") private String name; - /** - * 手续费承担方式类型 - */ - @Schema(description = "手续费承担方式") - @NotNull(message = "手续费承担方式不能为空") - private Integer feeType; - /** * 状态 diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleDetailBO.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleDetailBO.java index 1a9c4300c..38f2a32a9 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleDetailBO.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/domain/bo/DivideRuleDetailBO.java @@ -41,10 +41,6 @@ public class DivideRuleDetailBO extends BaseBO { @NotNull(message = "金额占比百分值不能为空") private Integer moneyPercent; - @Schema(description ="手续费占比百分值") - @ExcelProperty(value ="手续费占比百分值", order = 5) - @NotNull(message = "手续费占比百分值不能为空") - private Integer feePercent; /** * 分账租户类型,{@link TenantType} diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideRuleServiceImpl.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideRuleServiceImpl.java index b8fe058b4..a85545179 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideRuleServiceImpl.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/service/impl/DivideRuleServiceImpl.java @@ -145,18 +145,14 @@ public class DivideRuleServiceImpl extends ServiceImpl details) { Map> map = details.stream().collect(Collectors.groupingBy(DivideRuleDetail::getType)); - List details1 = map.get(TenantType.MERCHANT.getType()); - Assert.isTrue(details1 != null && details1.size() == 1, () -> new ServiceException("商户分账详情不能为空")); - List details2 = map.get(TenantType.PLATFORM.getType()); - Assert.isTrue(details2 != null && details2.size() == 1, () -> new ServiceException("平台分账详情不能为空")); + List details1 = map.get(TenantType.PLATFORM.getType()); + Assert.isTrue(details1 != null && details1.size() == 1, () -> new ServiceException("平台分账详情不能为空")); + Assert.isTrue(CollUtil.size(map.get(TenantType.AGENT.getType())) <= 1 && CollUtil.size(map.get(TenantType.REFERENCE.getType())) <= 1 , () -> new ServiceException("分账详情存在重复账户类型")); long totalMoneyRatio = 0L; - long totalFeeRatio = 0L; for (DivideRuleDetail detail : details) { totalMoneyRatio += detail.getMoneyPercent(); - totalFeeRatio += detail.getFeePercent(); } Assert.isTrue(totalMoneyRatio == 100L, () -> new ServiceException("金额分账比例之和未等于100%")); - Assert.isTrue(totalFeeRatio == 100L, () -> new ServiceException("手续费分账比例之和未等于100%")); } @Override