Sfoglia il codice sorgente

Merge branch 'dev/2024/0513/update-business-Y' of Harper/feifan-backend-zx-business into master

增加用户时,自动绑定另一端同手机号用户
Yangzw 10 mesi fa
parent
commit
e0e402bc17
14 ha cambiato i file con 110 aggiunte e 23 eliminazioni
  1. 9 0
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/BacklogConstants.java
  2. 7 7
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java
  3. 8 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/aftersale/AfterSaleMapper.java
  4. 7 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/order/TradeOrderMapper.java
  5. 8 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleService.java
  6. 8 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java
  7. 7 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryService.java
  8. 25 14
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java
  9. 4 1
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/dataobject/user/MemberUserDO.java
  10. 1 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserService.java
  11. 11 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserServiceImpl.java
  12. 6 0
      feifan-module-system/feifan-module-system-biz/pom.xml
  13. 8 0
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/user/AdminUserServiceImpl.java
  14. 1 1
      feifan-server/src/main/resources/application.yaml

+ 9 - 0
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/BacklogConstants.java

@@ -0,0 +1,9 @@
+package cn.newfeifan.mall.module.trade.enums;
+
+/**
+ * 待办的类型
+ */
+public interface BacklogConstants {
+    String BACKLOG_SHIPMENTS = "待发货";
+    String BACKLOG_AFTER_SALE = "待售后";
+}

+ 7 - 7
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java

@@ -70,16 +70,9 @@ public class TradeOrderController {
     @Resource
     private TradeOrderLogService tradeOrderLogService;
     @Resource
-    private TradeOrderProperties tradeOrderProperties;
-    @Resource
     private MemberUserApi memberUserApi;
-
-    @Resource
-    private DeliveryExpressService deliveryExpressService;
     @Resource
     private AfterSaleService afterSaleService;
-
-
     @Resource
     private PayOrderService orderService;
     @Resource
@@ -109,6 +102,13 @@ public class TradeOrderController {
         return success(TradeOrderConvert.INSTANCE.convertPage(pageResult, orderItems, userMap));
     }
 
+    @GetMapping("/get-backlog")
+    @Operation(summary = "获取待发货及待售后")
+    @PreAuthorize("@ss.hasAnyPermissions('trade:order:query')")
+    public CommonResult<Map<String,Long>> getBacklog() {
+        return success(tradeOrderQueryService.getBacklog());
+    }
+
     @GetMapping("/summary")
     @Operation(summary = "获得交易订单统计")
     @PreAuthorize("@ss.hasPermission('trade:order:query')")

+ 8 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/aftersale/AfterSaleMapper.java

@@ -79,4 +79,12 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> {
         );
     }
 
+    default Long selectCount(Long shopId,Long merId,Integer... status){
+        return selectCount(new LambdaQueryWrapperX<AfterSaleDO>()
+                .eq(AfterSaleDO::getShopId, shopId)
+                .eq(AfterSaleDO::getMerchantId, merId)
+                .in(AfterSaleDO::getStatus, (Object[]) status)
+        );
+    }
+
 }

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

@@ -165,4 +165,11 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
         );
     }
 
+    default Long selectCountByStatus(Integer status, Long shopId, Long merId){
+        return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
+                .eq(TradeOrderDO::getStatus, status)
+                .eq(TradeOrderDO::getShopId, shopId)
+                .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

@@ -157,4 +157,12 @@ public interface AfterSaleService {
     List<AfterSaleDO> getAfterSaleByMerAndShop();
 
     Map<Integer, Long> getTabsCount(AfterSalePageReqVO pageVO);
+
+    /**
+     * 获取售后订单数量
+     * @param shopId  店铺ID
+     * @param merId  商户ID
+     * @return    售后订单数量
+     */
+    Long selectCountByStatus(Long shopId, Long merId);
 }

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

@@ -522,5 +522,13 @@ public class AfterSaleServiceImpl implements AfterSaleService {
         return counts;
     }
 
+    @Override
+    public Long selectCountByStatus(Long shopId, Long merId) {
+        return tradeAfterSaleMapper.selectCount(shopId,merId,AfterSaleStatusEnum.APPLY.getStatus(),
+                AfterSaleStatusEnum.SELLER_AGREE.getStatus(),
+                AfterSaleStatusEnum.BUYER_DELIVERY.getStatus(),
+                AfterSaleStatusEnum.WAIT_REFUND.getStatus());
+    }
+
 
 }

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

@@ -11,6 +11,7 @@ import cn.newfeifan.mall.module.trade.framework.delivery.core.client.dto.Express
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 
 import static java.util.Collections.singleton;
 
@@ -199,4 +200,10 @@ public interface TradeOrderQueryService {
     List<TradeOrderDO> getOrderByMerId(Long id);
 
     TradeOrderDO getOrderById(Long orderId);
+
+    /**
+     * 获取待发货订单及待办的售后订单
+     * @return 集合
+     */
+    Map<String, Long> getBacklog();
 }

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

@@ -21,15 +21,18 @@ import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
 import cn.newfeifan.mall.module.trade.dal.mysql.order.TradeOrderItemMapper;
 import cn.newfeifan.mall.module.trade.dal.mysql.order.TradeOrderMapper;
 import cn.newfeifan.mall.module.trade.dal.redis.RedisKeyConstants;
+import cn.newfeifan.mall.module.trade.enums.BacklogConstants;
 import cn.newfeifan.mall.module.trade.enums.order.TradeOrderRefundStatusEnum;
 import cn.newfeifan.mall.module.trade.enums.order.TradeOrderStatusEnum;
 import cn.newfeifan.mall.module.trade.framework.delivery.core.client.ExpressClientFactory;
 import cn.newfeifan.mall.module.trade.framework.delivery.core.client.dto.ExpressTrackQueryReqDTO;
 import cn.newfeifan.mall.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
+import cn.newfeifan.mall.module.trade.service.aftersale.AfterSaleService;
 import cn.newfeifan.mall.module.trade.service.delivery.DeliveryExpressService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.cache.annotation.Cacheable;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -69,6 +72,10 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     @Resource
     private AdminUserService userService;
 
+    @Resource
+    @Lazy
+    private AfterSaleService afterSaleService;
+
 
     // =================== Order ===================
 
@@ -80,8 +87,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     @Override
     public TradeOrderDO getOrder(Long userId, Long id) {
         TradeOrderDO order = tradeOrderMapper.selectById(id);
-        if (order != null
-                && ObjectUtil.notEqual(order.getUserId(), userId)) {
+        if (order != null && ObjectUtil.notEqual(order.getUserId(), userId)) {
             return null;
         }
         return order;
@@ -175,7 +181,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     public Long getOrderCount(Integer status, TradeOrderPageReqVO reqVO) {
         UserShopDetailsVO userShopDetails = userService.getUserShopDetails();
 
-        return tradeOrderMapper.selectCountByStatus(status, userShopDetails.getShopId(), userShopDetails.getMerId(),reqVO);
+        return tradeOrderMapper.selectCountByStatus(status, userShopDetails.getShopId(), userShopDetails.getMerId(), reqVO);
     }
 
     @Override
@@ -213,10 +219,19 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
 
     @Override
     public TradeOrderDO getOrderById(Long orderId) {
-        return tradeOrderMapper.selectOne(new LambdaQueryWrapper<TradeOrderDO>()
-                .eq(TradeOrderDO::getId, orderId)
-                .isNull(TradeOrderDO::getReceivingTime)
-        );
+        return tradeOrderMapper.selectOne(new LambdaQueryWrapper<TradeOrderDO>().eq(TradeOrderDO::getId, orderId).isNull(TradeOrderDO::getReceivingTime));
+    }
+
+    @Override
+    public Map<String, Long> getBacklog() {
+        UserShopDetailsVO userShopDetails = userService.getUserShopDetails();
+        Long backlogShipmentsCount = tradeOrderMapper.selectCountByStatus(TradeOrderStatusEnum.UNDELIVERED.getStatus(), userShopDetails.getShopId(), userShopDetails.getMerId());
+        Long backlogAfterSaleCount = afterSaleService.selectCountByStatus(userShopDetails.getShopId(), userShopDetails.getMerId());
+
+        Map<String,Long> backMap = new HashMap<>();
+        backMap.put(BacklogConstants.BACKLOG_SHIPMENTS,backlogShipmentsCount);
+        backMap.put(BacklogConstants.BACKLOG_AFTER_SALE,backlogAfterSaleCount);
+        return backMap;
     }
 
     @Override
@@ -282,12 +297,9 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
      * @param receiverMobile 收、寄件人的电话号码
      * @return 物流轨迹
      */
-    @Cacheable(cacheNames = RedisKeyConstants.EXPRESS_TRACK, key = "#code + '-' + #logisticsNo + '-' + #receiverMobile",
-            condition = "#result != null")
+    @Cacheable(cacheNames = RedisKeyConstants.EXPRESS_TRACK, key = "#code + '-' + #logisticsNo + '-' + #receiverMobile", condition = "#result != null")
     public List<ExpressTrackRespDTO> getExpressTrackList(String code, String logisticsNo, String receiverMobile) {
-        return expressClientFactory.getDefaultExpressClient().getExpressTrackList(
-                new ExpressTrackQueryReqDTO().setExpressCode(code).setLogisticsNo(logisticsNo)
-                        .setPhone(receiverMobile));
+        return expressClientFactory.getDefaultExpressClient().getExpressTrackList(new ExpressTrackQueryReqDTO().setExpressCode(code).setLogisticsNo(logisticsNo).setPhone(receiverMobile));
     }
 
 
@@ -296,8 +308,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     @Override
     public TradeOrderItemDO getOrderItem(Long userId, Long itemId) {
         TradeOrderItemDO orderItem = tradeOrderItemMapper.selectById(itemId);
-        if (orderItem != null
-                && ObjectUtil.notEqual(orderItem.getUserId(), userId)) {
+        if (orderItem != null && ObjectUtil.notEqual(orderItem.getUserId(), userId)) {
             return null;
         }
         return orderItem;

+ 4 - 1
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/dataobject/user/MemberUserDO.java

@@ -188,5 +188,8 @@ public class MemberUserDO extends TenantBaseDO {
      * 累计消费金额(只算人民币,单位为分)
      */
     private Long cumulativeSpending;
-
+    /**
+     * 关联系统用户ID
+     */
+    private Long systemUsersId;
 }

+ 1 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserService.java

@@ -187,4 +187,5 @@ public interface MemberUserService {
      */
     boolean updateUserPoint(Long userId, Integer point);
 
+    void updateUserByMobile(Long id, String mobile);
 }

+ 11 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/user/MemberUserServiceImpl.java

@@ -314,4 +314,15 @@ public class MemberUserServiceImpl implements MemberUserService {
         return true;
     }
 
+    @Override
+    public void updateUserByMobile(Long systemUserId, String mobile) {
+        if(StrUtil.isEmpty(mobile)){
+            return;
+        }
+
+        MemberUserDO memberUserDO = memberUserMapper.selectByMobile(mobile);
+        memberUserDO.setSystemUsersId(systemUserId);
+        memberUserMapper.updateById(memberUserDO);
+    }
+
 }

+ 6 - 0
feifan-module-system/feifan-module-system-biz/pom.xml

@@ -135,6 +135,12 @@
             <groupId>com.tencentcloudapi</groupId>
             <artifactId>tencentcloud-sdk-java-sms</artifactId> <!-- 短信(腾讯云) -->
         </dependency>
+        <dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-member-biz</artifactId>
+            <version>2.0.0-jdk8-snapshot</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 </project>

+ 8 - 0
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/user/AdminUserServiceImpl.java

@@ -12,6 +12,7 @@ import cn.newfeifan.mall.framework.common.util.json.JsonUtils;
 import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
 import cn.newfeifan.mall.framework.datapermission.core.util.DataPermissionUtils;
 import cn.newfeifan.mall.module.infra.api.file.FileApi;
+import cn.newfeifan.mall.module.member.service.user.MemberUserService;
 import cn.newfeifan.mall.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
 import cn.newfeifan.mall.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
 import cn.newfeifan.mall.module.system.controller.admin.user.vo.user.*;
@@ -91,6 +92,9 @@ public class AdminUserServiceImpl implements AdminUserService {
     @Resource
     private StringRedisTemplate stringRedisTemplate;
 
+    @Resource
+    private MemberUserService memberUserService;
+
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -121,6 +125,10 @@ public class AdminUserServiceImpl implements AdminUserService {
         user.setPassword(encodePassword(createReqVO.getPassword())); // 加密密码
 
         userMapper.insert(user);
+
+        //绑定关联消费者
+        memberUserService.updateUserByMobile(user.getId(), user.getMobile());
+
         // 插入关联岗位
         if (CollectionUtil.isNotEmpty(user.getPostIds())) {
             userPostMapper.insertBatch(convertList(user.getPostIds(),

+ 1 - 1
feifan-server/src/main/resources/application.yaml

@@ -246,7 +246,7 @@ feifan:
     expire-times: 10m
     send-frequency: 1m
     send-maximum-quantity-per-day: 10
-    begin-code: 9999 # 这里配置 9999 的原因是,测试方便。
+    begin-code: 0000 # 这里配置 9999 的原因是,测试方便。
     end-code: 9999 # 这里配置 9999 的原因是,测试方便。
   trade:
     order: