瀏覽代碼

添加销售和旅行社关联关系,销售查询所属旅行社订单

caotao 23 小時之前
父節點
當前提交
3da647cf84
共有 11 個文件被更改,包括 153 次插入3 次删除
  1. 2 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/controller/admin/distributorcategory/vo/DistributorCategoryRespVO.java
  2. 3 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/controller/admin/distributorcategory/vo/DistributorCategorySaveReqVO.java
  3. 5 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/dataobject/distributorcategory/DistributorCategoryDO.java
  4. 38 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/dataobject/distributorcategory/DistributorCategoryHisDO.java
  5. 9 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/mysql/distributorcategory/DistributorCategoryHisMapper.java
  6. 55 2
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributor/DistributorServiceImpl.java
  7. 4 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorcategory/DistributorCategoryHisService.java
  8. 9 0
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorcategory/DistributorCategoryHisServiceImpl.java
  9. 1 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderPageReqVO.java
  10. 16 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java
  11. 11 0
      ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

+ 2 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/controller/admin/distributorcategory/vo/DistributorCategoryRespVO.java

@@ -36,5 +36,7 @@ public class DistributorCategoryRespVO {
     @Schema(description = "创建时间")
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
+    @Schema(description = "所属销售id")
+    private Integer userId;
 
 }

+ 3 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/controller/admin/distributorcategory/vo/DistributorCategorySaveReqVO.java

@@ -24,4 +24,7 @@ public class DistributorCategorySaveReqVO {
     @Schema(description = "状态", example = "2")
     private Integer useStatus;
 
+    @Schema(description = "所属销售id")
+    private Integer userId;
+
 }

+ 5 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/dataobject/distributorcategory/DistributorCategoryDO.java

@@ -44,4 +44,9 @@ public class DistributorCategoryDO extends BaseDO {
      */
     private Integer useStatus;
 
+    /**
+     * 所属销售id
+     */
+    private Integer userId;
+
 }

+ 38 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/dataobject/distributorcategory/DistributorCategoryHisDO.java

@@ -0,0 +1,38 @@
+package com.yc.ship.module.ota.dal.dataobject.distributorcategory;
+
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yc.ship.framework.mybatis.core.dataobject.BaseDO;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+@TableName("ota_distributor_category_his")
+@KeySequence("ota_distributor_category_his_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DistributorCategoryHisDO extends BaseDO {
+    @TableId
+    private Long id;
+    /**
+     * 分销商分组ID
+     */
+    private Long otaCategoryId;
+    /**
+     * 分销商ID
+     */
+    private Long distributorId;
+    /**
+     * 开始时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 结束时间
+     */
+    private LocalDateTime endTime;
+}

+ 9 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/dal/mysql/distributorcategory/DistributorCategoryHisMapper.java

@@ -0,0 +1,9 @@
+package com.yc.ship.module.ota.dal.mysql.distributorcategory;
+
+import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
+import com.yc.ship.module.ota.dal.dataobject.distributorcategory.DistributorCategoryHisDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DistributorCategoryHisMapper extends BaseMapperX<DistributorCategoryHisDO> {
+}

+ 55 - 2
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributor/DistributorServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.XML;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -22,16 +23,17 @@ import com.yc.ship.framework.mybatis.core.query.MPJLambdaWrapperX;
 import com.yc.ship.framework.security.core.LoginUser;
 import com.yc.ship.framework.security.core.util.SecurityFrameworkUtils;
 import com.yc.ship.framework.tenant.core.aop.TenantIgnore;
-import com.yc.ship.framework.tenant.core.context.TenantContextHolder;
 import com.yc.ship.framework.tenant.core.util.TenantUtils;
 import com.yc.ship.module.infra.api.config.ConfigApi;
 import com.yc.ship.module.ota.controller.admin.distributor.vo.*;
 import com.yc.ship.module.ota.controller.admin.distributorauditlog.vo.DistributorAuditLogSaveReqVO;
 import com.yc.ship.module.ota.api.dto.DistributorRespDTO;
 import com.yc.ship.module.ota.dal.dataobject.distributor.DistributorDO;
+import com.yc.ship.module.ota.dal.dataobject.distributorcategory.DistributorCategoryHisDO;
 import com.yc.ship.module.ota.dal.dataobject.distributortype.DistributorTypeDO;
 import com.yc.ship.module.ota.dal.dataobject.otaDistributorRegion.OtaDistributorRegionDO;
 import com.yc.ship.module.ota.dal.mysql.distributor.DistributorMapper;
+import com.yc.ship.module.ota.dal.mysql.distributorcategory.DistributorCategoryHisMapper;
 import com.yc.ship.module.ota.dal.mysql.otaDistributorRegion.OtaDistributorRegionMapper;
 import com.yc.ship.module.ota.enums.DistributorTypeEnum;
 import com.yc.ship.module.ota.service.distributorauditlog.DistributorAuditLogService;
@@ -58,6 +60,7 @@ import java.math.BigDecimal;
 import java.net.Socket;
 import java.net.SocketTimeoutException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
@@ -105,6 +108,8 @@ public class DistributorServiceImpl implements DistributorService {
 
     @Resource
     private DistributorTypeService distributorTypeService;
+    @Resource
+    private DistributorCategoryHisMapper distributorCategoryHisMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -123,6 +128,8 @@ public class DistributorServiceImpl implements DistributorService {
             }
         }
 
+
+
         //登录密码加密
         String password = createReqVO.getPassword();
         if (StringUtils.isNotBlank(password)) {
@@ -189,6 +196,14 @@ public class DistributorServiceImpl implements DistributorService {
                 list.add(otaDistributorRegionDO);
             }
         }
+        if(distributor.getOtaCategoryId() != null){
+            DistributorCategoryHisDO distributorCategoryHis = new DistributorCategoryHisDO();
+            distributorCategoryHis.setOtaCategoryId(distributor.getOtaCategoryId());
+            distributorCategoryHis.setDistributorId(distributor.getId());
+            distributorCategoryHis.setStartTime(LocalDateTime.now());
+            distributorCategoryHis.setId(IdWorker.getId(distributorCategoryHis));
+            distributorCategoryHisMapper.insert(distributorCategoryHis);
+        }
         if(!list.isEmpty()) {
             otaDistributorRegionMapper.insertBatch(list);
         }
@@ -387,7 +402,10 @@ public class DistributorServiceImpl implements DistributorService {
     @Override
     public void updateDistributor(DistributorSaveReqVO updateReqVO) {
         // 校验存在
-        validateDistributorExists(updateReqVO.getId());
+        DistributorDO oldDistributorDO = distributorMapper.selectById(updateReqVO.getId());
+        if (oldDistributorDO == null) {
+            throw exception(DISTRIBUTOR_NOT_EXISTS);
+        }
         // 校验登录名重复
         validateLoginNameUnique(updateReqVO.getId(), updateReqVO.getLoginName());
         // 更新
@@ -446,6 +464,41 @@ public class DistributorServiceImpl implements DistributorService {
         if(!list.isEmpty()) {
             otaDistributorRegionMapper.insertBatch(list);
         }
+        log.info("分销商分组是否改变:{}", !Objects.equals(updateObj.getOtaCategoryId(), oldDistributorDO.getOtaCategoryId()));
+        if(updateObj.getOtaCategoryId() != null && !Objects.equals(updateObj.getOtaCategoryId(), oldDistributorDO.getOtaCategoryId())){
+            // 改变了分销商分组
+            if(oldDistributorDO.getOtaCategoryId() != null){
+                List<DistributorCategoryHisDO> distributorCategoryHisDOS = distributorCategoryHisMapper.selectList(
+                        new LambdaUpdateWrapper<DistributorCategoryHisDO>()
+                                .eq(DistributorCategoryHisDO::getDistributorId, updateObj.getId())
+                                .eq(DistributorCategoryHisDO::getOtaCategoryId, oldDistributorDO.getOtaCategoryId())
+                                .isNull(DistributorCategoryHisDO::getEndTime)
+                );
+                if(!distributorCategoryHisDOS.isEmpty()){
+                    DistributorCategoryHisDO distributorCategoryHisDO = distributorCategoryHisDOS.get(0);
+                    distributorCategoryHisDO.setEndTime(LocalDateTime.now());
+                    distributorCategoryHisMapper.updateById(distributorCategoryHisDO);
+                }
+                DistributorCategoryHisDO distributorCategoryHis = new DistributorCategoryHisDO();
+                distributorCategoryHis.setOtaCategoryId(updateObj.getOtaCategoryId());
+                distributorCategoryHis.setDistributorId(updateObj.getId());
+                distributorCategoryHis.setStartTime(LocalDateTime.now());
+                distributorCategoryHis.setId(IdWorker.getId(distributorCategoryHis));
+                distributorCategoryHisMapper.insert(distributorCategoryHis);
+
+            }
+        }else{
+            List<DistributorCategoryHisDO> distributorCategoryHisDOS = distributorCategoryHisMapper.selectList(DistributorCategoryHisDO::getDistributorId, updateObj.getId(),
+                    DistributorCategoryHisDO::getOtaCategoryId, updateObj.getOtaCategoryId() );
+            if(updateObj.getOtaCategoryId() != null && distributorCategoryHisDOS.isEmpty()){
+                DistributorCategoryHisDO distributorCategoryHis = new DistributorCategoryHisDO();
+                distributorCategoryHis.setOtaCategoryId(updateObj.getOtaCategoryId());
+                distributorCategoryHis.setDistributorId(updateObj.getId());
+                distributorCategoryHis.setStartTime(LocalDateTime.now());
+                distributorCategoryHis.setId(IdWorker.getId(distributorCategoryHis));
+                distributorCategoryHisMapper.insert(distributorCategoryHis);
+            }
+        }
 
     }
 

+ 4 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorcategory/DistributorCategoryHisService.java

@@ -0,0 +1,4 @@
+package com.yc.ship.module.ota.service.distributorcategory;
+
+public interface DistributorCategoryHisService {
+}

+ 9 - 0
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorcategory/DistributorCategoryHisServiceImpl.java

@@ -0,0 +1,9 @@
+package com.yc.ship.module.ota.service.distributorcategory;
+
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+@Service
+@Validated
+public class DistributorCategoryHisServiceImpl implements DistributorCategoryHisService {
+}

+ 1 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/order/vo/order/TradeOrderPageReqVO.java

@@ -235,6 +235,7 @@ public class TradeOrderPageReqVO extends PageParam {
     private List<String> roomModelIds;
 
     private List<String> additiveIds;
+    private List<Long> categoryIds;
     private String floor;
 
     /**

+ 16 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -22,6 +22,9 @@ import com.yc.ship.framework.mybatis.core.util.MyBatisUtils;
 import com.yc.ship.framework.security.core.LoginUser;
 import com.yc.ship.module.ota.api.OtaDistributorApi;
 import com.yc.ship.module.ota.api.dto.DistributorProductRespDTO;
+import com.yc.ship.module.ota.dal.dataobject.distributorcategory.DistributorCategoryDO;
+import com.yc.ship.module.ota.dal.mysql.distributorcategory.DistributorCategoryHisMapper;
+import com.yc.ship.module.ota.dal.mysql.distributorcategory.DistributorCategoryMapper;
 import com.yc.ship.module.product.api.ProductApi;
 import com.yc.ship.module.product.api.dto.*;
 import com.yc.ship.module.product.enums.ProductTypeEnum;
@@ -154,7 +157,10 @@ public class TradeOrderServiceImpl implements TradeOrderService {
 
     @Resource
     private ConfigUtils configUtils;
-
+    @Resource
+    private DistributorCategoryHisMapper distributorCategoryHisMapper;
+    @Resource
+    private DistributorCategoryMapper distributorCategoryMapper;
 
     @Override
     public PageResult<TradeOrderRespVO> getPlatOrderPage(TradeOrderPageReqVO pageReqVO) {
@@ -166,6 +172,15 @@ public class TradeOrderServiceImpl implements TradeOrderService {
         if (agencyLoginUser.getStoreId() != null) {
             pageReqVO.setStoreId(agencyLoginUser.getStoreId());
         }
+        // 当前用户分销商分组
+        List<DistributorCategoryDO> distributorCategoryList = distributorCategoryMapper.selectList(DistributorCategoryDO::getUserId, agencyLoginUser.getId());
+        if(!distributorCategoryList.isEmpty()){
+            List<Long> idList = distributorCategoryList.stream()
+                    .map(DistributorCategoryDO::getId) // 提取 id 字段
+                    .filter(Objects::nonNull) // 过滤掉 null(可选,建议加上)
+                    .collect(Collectors.toList());
+            pageReqVO.setCategoryIds(idList);
+        }
         //当前用户角色
         List<Long> currentRoleList = roleApi.getCurrentRoleList();
         log.info("查询TradeOrder任务开始时间{}", LocalDateTime.now());

+ 11 - 0
ship-module-trade/ship-module-trade-biz/src/main/resources/mapper/order/TradeOrderMapper.xml

@@ -504,6 +504,17 @@
         LEFT JOIN trade_detail tdl ON td.id = tdl.order_id AND tdl.deleted = 0
         LEFT JOIN product_spu ps ON ps.id = tdl.product_id and ps.deleted=0
         LEFT JOIN ota_distributor od ON od.id = td.source_id and od.deleted=0
+
+        <if test="vo.categoryIds != null and vo.categoryIds.size() > 0">
+            INNER JOIN ota_distributor_category_his his
+            ON his.distributor_id = od.id
+            AND his.deleted = 0
+            AND td.create_time <![CDATA[ >= ]]> his.start_time
+            AND td.create_time <![CDATA[ <= ]]> IFNULL(his.end_time, NOW())
+            AND his.ota_category_id IN
+            <foreach collection="vo.categoryIds" item="item" open="(" separator="," close=")">#{item}</foreach>
+        </if>
+
         LEFT JOIN trade_order_room_model torm ON torm.order_id = td.id and torm.deleted=0
         WHERE td.deleted = 0