Browse Source

Merge branch 'dev/2024/0403/business' of Harper/feifan-backend-zx-business into master

Yangzw 1 year ago
parent
commit
8a54c66421
20 changed files with 173 additions and 6 deletions
  1. 1 1
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuServiceImpl.java
  2. 6 0
      feifan-module-mall/feifan-module-trade-biz/pom.xml
  3. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java
  4. 9 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/expresstemplate/ShopBO.java
  5. 24 2
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderDetailController.java
  6. 1 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/convert/aftersale/AfterSaleConvert.java
  7. 8 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateDO.java
  8. 6 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderDO.java
  9. 5 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/order/TradeOrderMapper.java
  10. 8 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleService.java
  11. 7 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java
  12. 0 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/delivery/DeliveryExpressTemplateService.java
  13. 41 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/delivery/DeliveryExpressTemplateServiceImpl.java
  14. 7 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryService.java
  15. 5 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java
  16. 9 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/vo/ShopPageReqVO.java
  17. 12 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/vo/ShopRespVO.java
  18. 7 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/vo/ShopSaveReqVO.java
  19. 12 0
      feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/dal/dataobject/shop/ShopDO.java
  20. 3 0
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/dal/dataobject/user/AdminUserDO.java

+ 1 - 1
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuServiceImpl.java

@@ -69,7 +69,7 @@ public class ProductSpuServiceImpl implements ProductSpuService {
 
         // 校验 SKU
         List<ProductSkuSaveReqVO> skuSaveReqList = createReqVO.getSkus();
-        productSkuService.validateSkuList(skuSaveReqList, createReqVO.getSpecType());
+            productSkuService.validateSkuList(skuSaveReqList, createReqVO.getSpecType());
 
         ProductSpuDO spu = BeanUtils.toBean(createReqVO, ProductSpuDO.class);
         // 初始化 SPU 中 SKU 相关属性

+ 6 - 0
feifan-module-mall/feifan-module-trade-biz/pom.xml

@@ -108,6 +108,12 @@
             <artifactId>feifan-spring-boot-starter-biz-dict</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-system-biz</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java

@@ -44,6 +44,8 @@ public class DeliveryExpressTemplateController {
         return success(true);
     }
 
+
+
     @DeleteMapping("/delete")
     @Operation(summary = "删除快递运费模板")
     @Parameter(name = "id", description = "编号", required = true)

+ 9 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/expresstemplate/ShopBO.java

@@ -0,0 +1,9 @@
+package cn.newfeifan.mall.module.trade.controller.admin.delivery.vo.expresstemplate;
+
+import lombok.Data;
+
+@Data
+public class ShopBO {
+    private Long shopId;
+    private Long merId;
+}

+ 24 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderDetailController.java

@@ -7,6 +7,7 @@ import cn.newfeifan.mall.module.member.api.user.dto.MemberUserRespDTO;
 import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
 import cn.newfeifan.mall.module.pay.service.order.PayOrderService;
 import cn.newfeifan.mall.module.trade.controller.admin.aftersale.vo.AfterSaleBaseVO;
+import cn.newfeifan.mall.module.trade.controller.admin.aftersale.vo.AfterSaleDetailRespVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.*;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.detailvo.TradeOrderDeliveryVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.detailvo.TradeOrderPayVo;
@@ -34,7 +35,9 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertList;
@@ -104,6 +107,25 @@ public class TradeOrderDetailController {
         return success(AfterSaleConvert.INSTANCE.convert02(afterSaleByOrderNo));
     }
 
+    @GetMapping("/after_saleByMer")
+        @Operation(summary = "新增接口20240402-售后信息-商户查询售后")
+    @Parameter(name = "merId", description = "商户ID", required = true, example = "1")
+    @PreAuthorize("@ss.hasPermission('trade:order:query')")
+    public CommonResult<List<AfterSaleDetailRespVO>> afterSaleByMer(@RequestParam("merId") Long merId) {
+        // 查询订单
+        List<TradeOrderDO> orders = tradeOrderQueryService.getOrderByMerId(merId);
+        if (orders.isEmpty()) {
+            return success(null);
+        }
+
+        List<Long> orderIds = orders.stream()
+                .map(TradeOrderDO::getId) // 提取每个TradeOrderDO对象的id属性
+                .collect(Collectors.toList());
+        // 查询售后订单
+        List<AfterSaleDO> afterSaleDOS = afterSaleService.getAfterSaleByMer(orderIds);
+        return success(AfterSaleConvert.INSTANCE.convertList02(afterSaleDOS));
+    }
+
     @GetMapping("/delivery")
     @Operation(summary = "新增接口20240229-物流信息")
     @Parameter(name = "id", description = "订单编号", required = true, example = "1")
@@ -141,9 +163,9 @@ public class TradeOrderDetailController {
                 .path("")
                 .payPrice(order.getPayPrice())
                 .build();
-        if (payOrderDO == null){
+        if (payOrderDO == null) {
             build.setPayStatus("未支付");
-        }else {
+        } else {
             build.setPayStatus(payOrderDO.getStatus() == 0 ? "未支付" : "已支付");
         }
         return success(null);

+ 1 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/convert/aftersale/AfterSaleConvert.java

@@ -82,6 +82,7 @@ public interface AfterSaleConvert {
 
     List<AfterSaleLogRespVO> convertList1(List<AfterSaleLogDO> list);
     AfterSaleDetailRespVO convert02(AfterSaleDO bean);
+    List<AfterSaleDetailRespVO> convertList02(List<AfterSaleDO> list);
     AfterSaleDetailRespVO.OrderItem convert02(TradeOrderItemDO bean);
     TradeOrderBaseVO convert(TradeOrderDO bean);
 

+ 8 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateDO.java

@@ -41,6 +41,14 @@ public class DeliveryExpressTemplateDO extends BaseDO {
     private Integer sort;
 
 
+    /**
+     * 店铺id
+     */
     private Long shopId;
 
+    /**
+     * 商户id
+     */
+    private Long merchantId;
+
 }

+ 6 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -331,7 +331,12 @@ public class TradeOrderDO extends BaseDO {
     private Long combinationRecordId;
 
 
+    /**
+     * 店铺id
+     */
     private Long shopId;
-
+    /**
+     * 商户id
+     */
     private Long merchantId;
 }

+ 5 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/order/TradeOrderMapper.java

@@ -146,5 +146,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
                 .eqIfPresent(TradeOrderDO::getMerchantId, key))));
     }
 
+    default List<TradeOrderDO> selectOrderListByMerId(Long merId){
+        return selectList(new LambdaQueryWrapperX<TradeOrderDO>()
+                .eq(TradeOrderDO::getMerchantId, merId));
+    }
+
     ;
 }

+ 8 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleService.java

@@ -9,6 +9,8 @@ import cn.newfeifan.mall.module.trade.controller.app.aftersale.vo.AppAfterSaleCr
 import cn.newfeifan.mall.module.trade.controller.app.aftersale.vo.AppAfterSaleDeliveryReqVO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.aftersale.AfterSaleDO;
 
+import java.util.List;
+
 /**
  * 售后订单 Service 接口
  *
@@ -131,4 +133,10 @@ public interface AfterSaleService {
      */
     Long getApplyingAfterSaleCount(Long userId);
 
+    /**
+     * 【用户】获取售后订单
+     * @param orderIds  订单ID集
+     * @return          售后订单
+     */
+    List<AfterSaleDO> getAfterSaleByMer(List<Long> orderIds);
 }

+ 7 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java

@@ -43,6 +43,7 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.List;
 
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.*;
@@ -419,4 +420,10 @@ public class AfterSaleServiceImpl implements AfterSaleService {
         return tradeAfterSaleMapper.selectCountByUserIdAndStatus(userId, AfterSaleStatusEnum.APPLYING_STATUSES);
     }
 
+    @Override
+    public List<AfterSaleDO> getAfterSaleByMer(List<Long> orderIds) {
+        return tradeAfterSaleMapper.selectList(new LambdaQueryWrapper<AfterSaleDO>()
+                .in(AfterSaleDO::getOrderId, orderIds));
+    }
+
 }

+ 0 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/delivery/DeliveryExpressTemplateService.java

@@ -91,5 +91,4 @@ public interface DeliveryExpressTemplateService {
      * @return Map (templateId -> 运费模板设置)
      */
     Map<Long, DeliveryExpressTemplateRespBO> getExpressTemplateMapByIdsAndArea(Collection<Long> ids, Integer areaId);
-
 }

+ 41 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/delivery/DeliveryExpressTemplateServiceImpl.java

@@ -5,6 +5,8 @@ import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.ObjectUtil;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.common.util.collection.CollectionUtils;
+import cn.newfeifan.mall.module.system.dal.dataobject.user.AdminUserDO;
+import cn.newfeifan.mall.module.system.dal.mysql.user.AdminUserMapper;
 import cn.newfeifan.mall.module.trade.controller.admin.delivery.vo.expresstemplate.*;
 import cn.newfeifan.mall.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateChargeDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.delivery.DeliveryExpressTemplateDO;
@@ -13,6 +15,10 @@ import cn.newfeifan.mall.module.trade.dal.mysql.delivery.DeliveryExpressTemplate
 import cn.newfeifan.mall.module.trade.dal.mysql.delivery.DeliveryExpressTemplateFreeMapper;
 import cn.newfeifan.mall.module.trade.dal.mysql.delivery.DeliveryExpressTemplateMapper;
 import cn.newfeifan.mall.module.trade.service.delivery.bo.DeliveryExpressTemplateRespBO;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -22,6 +28,7 @@ import java.util.*;
 
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.*;
+import static cn.newfeifan.mall.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 import static cn.newfeifan.mall.module.trade.convert.delivery.DeliveryExpressTemplateConvert.INSTANCE;
 import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.EXPRESS_TEMPLATE_NAME_DUPLICATE;
 import static cn.newfeifan.mall.module.trade.enums.ErrorCodeConstants.EXPRESS_TEMPLATE_NOT_EXISTS;
@@ -41,6 +48,12 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
     private DeliveryExpressTemplateChargeMapper expressTemplateChargeMapper;
     @Resource
     private DeliveryExpressTemplateFreeMapper expressTemplateFreeMapper;
+    @Resource
+    private StringRedisTemplate stringRedisTemplate;
+
+    @Resource
+    private AdminUserMapper userMapper;
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -50,6 +63,9 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 
         // 插入
         DeliveryExpressTemplateDO template = INSTANCE.convert(createReqVO);
+        ShopBO shop = getShop();
+        template.setShopId(shop.getShopId());
+        template.setMerchantId(shop.getMerId());
         expressTemplateMapper.insert(template);
         // 插入运费模板计费表
         if (CollUtil.isNotEmpty(createReqVO.getCharges())) {
@@ -66,6 +82,7 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
         return template.getId();
     }
 
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateDeliveryExpressTemplate(DeliveryExpressTemplateUpdateReqVO updateReqVO) {
@@ -147,7 +164,12 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
      * @param id   运费模板编号,可以为 null
      */
     private void validateTemplateNameUnique(String name, Long id) {
-        DeliveryExpressTemplateDO template = expressTemplateMapper.selectByName(name);
+        ShopBO shop = getShop();
+        QueryWrapper<DeliveryExpressTemplateDO> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .eq(DeliveryExpressTemplateDO::getShopId,shop.getShopId())
+                .eq(DeliveryExpressTemplateDO::getName,name);
+        DeliveryExpressTemplateDO template = expressTemplateMapper.selectOne(queryWrapper);
         if (template == null) {
             return;
         }
@@ -186,6 +208,8 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
 
     @Override
     public PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO) {
+        ShopBO shop = getShop();
+        pageReqVO.setShopId(shop.getShopId());
         return expressTemplateMapper.selectPage(pageReqVO);
     }
 
@@ -215,4 +239,20 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla
         return INSTANCE.convertMap(areaId, templateList, chargeList, freeList);
     }
 
+    private ShopBO getShop() {
+        Long loginUserId = getLoginUserId();
+        String s = stringRedisTemplate.opsForValue().get("shop:" + loginUserId);
+        if (StringUtils.isEmpty(s)) {
+            AdminUserDO adminUserDO = userMapper.selectById(loginUserId);
+            ShopBO shop = new ShopBO();
+            shop.setShopId(adminUserDO.getShopId());
+            shop.setMerId(adminUserDO.getMerchantId());
+            return shop;
+        } else {
+           return JSONObject.parseObject(s, ShopBO.class);
+        }
+    }
+
+
+
 }

+ 7 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryService.java

@@ -189,4 +189,11 @@ public interface TradeOrderQueryService {
      */
     Integer getShopSalesVolume(Long key);
 
+
+    /**
+     * 获取商户下的订单
+     * @param merId 商户ID
+     * @return 该商户下的订单
+     */
+    List<TradeOrderDO> getOrderByMerId(Long merId);
 }

+ 5 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java

@@ -189,6 +189,11 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
 
     }
 
+    @Override
+    public List<TradeOrderDO> getOrderByMerId(Long merId) {
+        return tradeOrderMapper.selectOrderListByMerId(merId);
+    }
+
     @Override
     public List<ExpressTrackRespDTO> getExpressTrackList(Long id, Long userId) {
         // 查询订单

+ 9 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/vo/ShopPageReqVO.java

@@ -31,4 +31,13 @@ public class ShopPageReqVO extends PageParam {
     @Schema(description = "logo地址", example = "https://www.zhongxing.cn")
     private String logoUrl;
 
+    @Schema(description = "是否启用全场包邮")
+    private Boolean deliveryExpressFreeEnabled;
+
+    @Schema(description = "全场包邮的最小金额,单位:分", example = "10353")
+    private Integer deliveryExpressFreePrice;
+
+    @Schema(description = "是否开启自提")
+    private Boolean deliveryPickUpEnabled;
+
 }

+ 12 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/vo/ShopRespVO.java

@@ -45,4 +45,16 @@ public class ShopRespVO {
     @ExcelProperty("最后更新时间")
     private LocalDateTime updateTime;
 
+    @Schema(description = "是否启用全场包邮", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("是否启用全场包邮")
+    private Boolean deliveryExpressFreeEnabled;
+
+    @Schema(description = "全场包邮的最小金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10353")
+    @ExcelProperty("全场包邮的最小金额,单位:分")
+    private Integer deliveryExpressFreePrice;
+
+    @Schema(description = "是否开启自提", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("是否开启自提")
+    private Boolean deliveryPickUpEnabled;
+
 }

+ 7 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/controller/admin/shop/vo/ShopSaveReqVO.java

@@ -34,5 +34,12 @@ public class ShopSaveReqVO {
     @Schema(description = "域名", example = "https://www.zhongxing.cn")
     private String website;
 
+    @Schema(description = "是否启用全场包邮", example = "1")
+    private Boolean deliveryExpressFreeEnabled;
 
+    @Schema(description = "全场包邮的最小金额,单位:分", example = "10353")
+    private Integer deliveryExpressFreePrice;
+
+    @Schema(description = "是否开启自提", example = "1")
+    private Boolean deliveryPickUpEnabled;
 }

+ 12 - 0
feifan-module-sale/feifan-module-sale-biz/src/main/java/cn/newfeifan/mall/sale/dal/dataobject/shop/ShopDO.java

@@ -49,5 +49,17 @@ public class ShopDO extends BaseDO {
      * 域名
      */
     private String website;
+    /**
+     * 是否启用全场包邮
+     */
+    private Boolean deliveryExpressFreeEnabled;
+    /**
+     * 全场包邮的最小金额,单位:分
+     */
+    private Integer deliveryExpressFreePrice;
+    /**
+     * 是否开启自提
+     */
+    private Boolean deliveryPickUpEnabled;
 
 }

+ 3 - 0
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/dal/dataobject/user/AdminUserDO.java

@@ -110,6 +110,9 @@ public class AdminUserDO extends TenantBaseDO {
      */
     private Long shopId;
 
+    /**
+     * 店铺id
+     */
     private Long merchantId;