Преглед изворни кода

feat(mall): 优化首页diy装修页面获取接口并修复数据类型问题

- 合并多个首页diy装修页面获取接口为单一接口,通过type参数区分
- 修复MallDiyPcPageController中isHome字段的数据类型问题,统一使用Long类型
- 在订单服务中添加订单审核状态更新逻辑
- 添加商品库存相关字段的更新支持
- 新增购物车商品导出功能,支持Excel格式导出
- 添加购物车商品导出专用VO类
- 修复产品收藏分页查询中的用户ID获取问题
- 增加订单主表更新时间字段映射
肖路 пре 4 недеља
родитељ
комит
126195fb4a

+ 10 - 10
ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/controller/MallDiyPcPageController.java

@@ -81,15 +81,15 @@ public class MallDiyPcPageController extends BaseController {
     @RepeatSubmit()
     @PostMapping()
     public R<MallDiyPcPage> add(@Validated(AddGroup.class) @RequestBody MallDiyPcPageBo bo) {
-        if(Objects.equals(bo.getIsHome(), 1)){
+        if(Objects.equals(bo.getIsHome(), 1L)){
             if(ObjectUtil.isEmpty(bo.getSiteId())){
                 mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getType, bo.getType())
-                    .set(MallDiyPcPage::getIsHome, 0));
+                    .set(MallDiyPcPage::getIsHome, 0L));
             }else {
                 mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getSiteId, bo.getSiteId())
-                    .set(MallDiyPcPage::getIsHome, 0));
+                    .set(MallDiyPcPage::getIsHome, 0L));
             }
 
 
@@ -105,15 +105,15 @@ public class MallDiyPcPageController extends BaseController {
     @RepeatSubmit()
     @PutMapping()
     public R<MallDiyPcPage> edit(@Validated(EditGroup.class) @RequestBody MallDiyPcPageBo bo) {
-        if(Objects.equals(bo.getIsHome(), 1)){
+        if(Objects.equals(bo.getIsHome(), 1L)){
             if(ObjectUtil.isEmpty(bo.getSiteId())){
                 mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getType, bo.getType())
-                    .set(MallDiyPcPage::getIsHome, 0));
+                    .set(MallDiyPcPage::getIsHome, 0L));
             }else {
                 mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getSiteId, bo.getSiteId())
-                    .set(MallDiyPcPage::getIsHome, 0)
+                    .set(MallDiyPcPage::getIsHome, 0L)
                 );
             }
         }
@@ -145,17 +145,17 @@ public class MallDiyPcPageController extends BaseController {
         if (mallDiyPcPage.getSiteId() != null){
             mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getSiteId, mallDiyPcPage.getSiteId())
-                    .set(MallDiyPcPage::getIsHome, 0));
+                    .set(MallDiyPcPage::getIsHome, 0L));
             mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getId, id)
-                    .set(MallDiyPcPage::getIsHome, 1));
+                    .set(MallDiyPcPage::getIsHome, 1L));
         }else{
             mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getType, mallDiyPcPage.getType())
-                    .set(MallDiyPcPage::getIsHome, 0));
+                    .set(MallDiyPcPage::getIsHome, 0L));
             mallDiyPcPageService.update(Wrappers.<MallDiyPcPage>lambdaUpdate()
                     .eq(MallDiyPcPage::getId, id)
-                    .set(MallDiyPcPage::getIsHome, 1));
+                    .set(MallDiyPcPage::getIsHome, 1L));
         }
          return R.ok();
     }

+ 4 - 31
ruoyi-modules/ruoyi-mall/src/main/java/org/dromara/mall/controller/pc/DiyPcPageController.java

@@ -25,41 +25,14 @@ public class DiyPcPageController {
     private final IMallDiyPcPageService mallDiyPcPageService;
 
     /**
-     * 获取平台首页diy装修页面
+     * 获取首页diy装修页面
      */
-    @GetMapping("/getPlatformIndexDiyPcPage")
-    public R<MallDiyPcPage> getPlatformIndexDiyPcPage() {
+    @GetMapping("/getIndexDiyPcPage")
+    public R<MallDiyPcPage> getIndexDiyPcPage(String type) {
         MallDiyPcPage one = mallDiyPcPageService.getOne(
             Wrappers.lambdaQuery(MallDiyPcPage.class)
                 .eq(MallDiyPcPage::getIsHome, 1)
-                .eq(MallDiyPcPage::getType, 1)
-                .last("limit 1")
-        );
-        return R.ok(one);
-    }
-
-    /**
-    * 获取工业品商城首页diy装修页面
-    * */
-    @GetMapping("/getIndustryPlatformIndexDiyPcPage")
-    public R<MallDiyPcPage> getIndustryPlatformIndexDiyPcPage() {
-        MallDiyPcPage one = mallDiyPcPageService.getOne(
-            Wrappers.lambdaQuery(MallDiyPcPage.class)
-                .eq(MallDiyPcPage::getIsHome, 1)
-                .eq(MallDiyPcPage::getType, 2)
-                .last("limit 1")
-        );
-        return R.ok(one);
-    }
-    /**
-    * 获取福利商城首页diy装修页面
-    * */
-    @GetMapping("/getWelfarePlatformIndexDiyPcPage")
-    public R<MallDiyPcPage> getWelfarePlatformIndexDiyPcPage() {
-        MallDiyPcPage one = mallDiyPcPageService.getOne(
-            Wrappers.lambdaQuery(MallDiyPcPage.class)
-                .eq(MallDiyPcPage::getIsHome, 1)
-                .eq(MallDiyPcPage::getType, 3)
+                .eq(MallDiyPcPage::getType, type)
                 .last("limit 1")
         );
         return R.ok(one);

+ 2 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/domain/vo/OrderMainVo.java

@@ -424,4 +424,6 @@ public class OrderMainVo implements Serializable {
     private Integer evaluationStatus;
 
 
+    private Date updateTime;
+
 }

+ 5 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/service/impl/OrderMainServiceImpl.java

@@ -522,6 +522,11 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
                 this.update(Wrappers.lambdaUpdate(OrderMain.class)
                     .eq(OrderMain::getId, orderId)
                     .set(OrderMain::getOrderStatus, 1)); // 假设 1 代表某种特定状态,需确认枚举值
+            }else {
+                this.update(Wrappers.lambdaUpdate(OrderMain.class)
+                    .eq(OrderMain::getId, orderId)
+                    .set(OrderMain::getCheckStatus, "1")
+                );
             }
 
             // 5. 如果是从购物车下单,删除购物车数据

+ 49 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/controller/pc/MyProductController.java

@@ -1,9 +1,12 @@
 package org.dromara.product.controller.pc;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.domain.R;
+import org.dromara.common.excel.utils.ExcelUtil;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.satoken.utils.LoginHelper;
@@ -15,10 +18,13 @@ import org.dromara.product.domain.bo.*;
 import org.dromara.product.domain.vo.PcProductVo;
 import org.dromara.product.domain.vo.ProcurementProgramVo;
 import org.dromara.product.domain.vo.ProductFavoritesVo;
+import org.dromara.product.domain.vo.ProductShoppingCartExportVo;
 import org.dromara.product.service.*;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -100,6 +106,7 @@ public class MyProductController {
      */
     @GetMapping("/getProductFavoritesPage")
     public TableDataInfo<ProductFavoritesVo> getProductFavoritesPage(ProductFavoritesBo bo, PageQuery pageQuery) {
+        bo.setUserId(LoginHelper.getUserId());
         return productFavoritesService.queryPageList(bo, pageQuery);
     }
     /**
@@ -268,4 +275,46 @@ public class MyProductController {
         return R.ok();
     }
 
+    /**
+    * 导出购物车的商品
+    * */
+    @PostMapping("/exportProductShoppingCart")
+    public void exportProductShoppingCart( HttpServletResponse response) {
+        PageQuery pageQuery = new PageQuery();
+        pageQuery.setPageNum(1);
+        pageQuery.setPageSize(Integer.MAX_VALUE);
+        TableDataInfo<PcProductVo> tableDataInfo = productBaseService.getProductShoppingCartPage(null, LoginHelper.getUserId(),pageQuery);
+        // 转换为导出对象
+        List<ProductShoppingCartExportVo> exportList = new ArrayList<>();
+        BigDecimal totalAmount = BigDecimal.ZERO;
+
+        if (ObjectUtil.isNotEmpty(tableDataInfo.getRows())) {
+            int index = 1;
+            for (PcProductVo vo : tableDataInfo.getRows()) {
+                ProductShoppingCartExportVo exportVo = new ProductShoppingCartExportVo();
+                exportVo.setSerialNumber(index++);
+                exportVo.setProductNo(vo.getProductNo());
+                exportVo.setItemName(vo.getItemName());
+                exportVo.setUnitName(vo.getUnitName());
+                exportVo.setProductNum(vo.getProductNum());
+
+                BigDecimal price = vo.getMemberPrice() != null ? vo.getMemberPrice() : BigDecimal.ZERO;
+                exportVo.setPrice(price);
+
+                BigDecimal subtotal = price.multiply(BigDecimal.valueOf(vo.getProductNum() != null ? vo.getProductNum() : 0L));
+                exportVo.setSubtotal(subtotal);
+
+                totalAmount = totalAmount.add(subtotal);
+                exportList.add(exportVo);
+            }
+        }
+
+        // 设置合计值
+        for (ProductShoppingCartExportVo vo : exportList) {
+            vo.setTotal(totalAmount);
+        }
+
+        ExcelUtil.exportExcel(exportList, "购物车商品", ProductShoppingCartExportVo.class, response);
+    }
+
 }

+ 72 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/domain/vo/ProductShoppingCartExportVo.java

@@ -0,0 +1,72 @@
+package org.dromara.product.domain.vo;
+
+import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
+import cn.idev.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 购物车商品导出对象
+ *
+ * @author
+ * @date 2026-03-17
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class ProductShoppingCartExportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 序号
+     */
+    @ExcelProperty(value = "序号", index = 0)
+    private Integer serialNumber;
+
+    /**
+     * 商品编号
+     */
+    @ExcelProperty(value = "商品编号", index = 1)
+    private String productNo;
+
+    /**
+     * 商品名称
+     */
+    @ExcelProperty(value = "商品名称", index = 2)
+    private String itemName;
+
+    /**
+     * 单位
+     */
+    @ExcelProperty(value = "单位", index = 3)
+    private String unitName;
+
+    /**
+     * 数量
+     */
+    @ExcelProperty(value = "数量", index = 4)
+    private Long productNum;
+
+    /**
+     * 单价
+     */
+    @ExcelProperty(value = "单价", index = 5)
+    private BigDecimal price;
+
+    /**
+     * 小计
+     */
+    @ExcelProperty(value = "小计", index = 6)
+    private BigDecimal subtotal;
+
+    /**
+     * 合计
+     */
+    @ExcelProperty(value = "合计", index = 7)
+    private BigDecimal total;
+
+}

+ 5 - 1
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductBaseServiceImpl.java

@@ -905,7 +905,8 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
         // 如果没有传价格相关信息,不做任何操作
         if (bo.getMidRangePrice() == null && bo.getStandardPrice() == null &&
             bo.getCertificatePrice() == null && bo.getPurchasePrice() == null &&
-            bo.getEstimatedPurchasePrice() == null) {
+            bo.getEstimatedPurchasePrice() == null && bo.getTotalInventory() == null &&
+             bo.getNowInventory() == null && bo.getVirtualInventory() == null) {
             return;
         }
 
@@ -917,6 +918,9 @@ public class ProductBaseServiceImpl extends ServiceImpl<ProductBaseMapper, Produ
             if (bo.getCertificatePrice() != null) existing.setMinSellingPrice(bo.getCertificatePrice());
             if (bo.getPurchasePrice() != null) existing.setPurchasingPrice(bo.getPurchasePrice());
             if (bo.getEstimatedPurchasePrice() != null) existing.setMaxPurchasePrice(bo.getEstimatedPurchasePrice());
+            if(bo.getTotalInventory() != null) existing.setTotalInventory(bo.getTotalInventory());
+            if(bo.getNowInventory() != null) existing.setNowInventory(bo.getNowInventory());
+            if(bo.getVirtualInventory() != null) existing.setVirtualInventory(bo.getVirtualInventory());
             priceInventoryMapper.updateById(existing);
         } else {
             // 创建新记录