Browse Source

feat(contract): 添加店铺签约状态查询功能

- 在 StoreContractMapper 中新增 selectSigningStatus 方法
- 添加 XML 映射查询最新的签约状态
- 修改 StoreContractServiceImpl 中的签约状态获取逻辑
- 优化查询性能,直接返回状态字符串而非完整对象
- 移除不必要的 LambdaQueryWrapper 查询方式
- 更新业务逻辑以适配新的数据获取方式
fcw 1 month ago
parent
commit
c73879f208

+ 5 - 0
alien-entity/src/main/java/shop/alien/mapper/StoreContractMapper.java

@@ -1,5 +1,6 @@
 package shop.alien.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -8,6 +9,8 @@ import org.apache.ibatis.annotations.Param;
 import shop.alien.entity.store.StoreContract;
 import shop.alien.entity.store.vo.StoreContractVo;
 
+import java.util.List;
+
 /**
  * 合同 Mapper 接口
  *
@@ -32,5 +35,7 @@ public interface StoreContractMapper extends BaseMapper<StoreContract> {
             @Param("status") Integer status,
             @Param("storeId") Integer storeId
     );
+
+    String selectSigningStatus(@Param("storeId") Integer storeId);
 }
 

+ 9 - 0
alien-entity/src/main/resources/mapper/StoreContractMapper.xml

@@ -81,4 +81,13 @@
         ORDER BY cm.created_time DESC
     </select>
 
+    <select id="selectSigningStatus" resultType="java.lang.String">
+        SELECT signing_status
+        FROM store_contract
+        WHERE store_id = #{storeId}
+        AND delete_flag = 0
+        ORDER BY created_time DESC
+        LIMIT 1
+    </select>
+
 </mapper>

+ 10 - 9
alien-store-platform/src/main/java/shop/alien/storeplatform/service/impl/StoreContractServiceImpl.java

@@ -200,22 +200,23 @@ public class StoreContractServiceImpl implements StoreContractService {
             if (storeId == null) {
                 return R.fail("店铺ID不能为空");
             }
+            String contracts = storeContractMapper.selectSigningStatus(storeId);
 
             // 根据店铺ID查询最新的合同(按创建时间倒序)
-            List<StoreContract> contracts = storeContractMapper.selectList(
-                    new LambdaQueryWrapper<StoreContract>()
-                            .eq(StoreContract::getStoreId, storeId.longValue())
-                            .eq(StoreContract::getDeleteFlag, 0)
-                            .orderByDesc(StoreContract::getCreatedTime)
-                            .last("LIMIT 1")
-            );
+//            List<StoreContract> contracts = storeContractMapper.selectList(
+//                    new LambdaQueryWrapper<StoreContract>()
+//                            .eq(StoreContract::getStoreId, storeId.longValue())
+//                            .eq(StoreContract::getDeleteFlag, 0)
+//                            .orderByDesc(StoreContract::getCreatedTime)
+//                            .last("LIMIT 1")
+//            );
 
             if (contracts == null || contracts.isEmpty()) {
                 return R.fail("该店铺暂无合同");
             }
 
-            StoreContract contract = contracts.get(0);
-            String signingStatus = contract.getSigningStatus();
+//            StoreContract contract = contracts.get(0);
+            String signingStatus = contracts;
             // 将字符串状态转换为数字:已签署=1, 未签署=0, 已到期=2
             Integer statusValue = null;
             if (signingStatus != null) {