Mr.qian 1 місяць тому
батько
коміт
25e2ae6a63

+ 4 - 3
cif-service/src/main/java/com/txz/cif/CifApplication.java

@@ -7,6 +7,8 @@ import io.undertow.UndertowOptions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.web.client.RestTemplateBuilder;
 import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@@ -20,7 +22,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.client.RestTemplate;
 
 @EnableDiscoveryClient
-@SpringBootApplication
+@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
 // @EnableSwagger2Doc
 @EnableScheduling
 @RibbonClients(value = {
@@ -58,5 +60,4 @@ public class CifApplication {
         //spring官网建议RestTemplateBuilder构造器来进行构造,这里体现了构造者设计模式
         return builder.build();
     }
-}
-
+}

+ 3 - 1
cif-service/src/main/java/com/txz/cif/configurer/OpenApiConfig.java

@@ -13,6 +13,8 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -23,7 +25,7 @@ public class OpenApiConfig {
 
     //    @Value("${server.port}")
 //    private String mallPort;
-    @Value("${server.host}")
+    @Value("${server.host:localhost}")
     private String host;
 
     @Resource

+ 19 - 19
cif-service/src/main/java/com/txz/cif/configurer/sharding/ShardingSphereConfig.java

@@ -5,10 +5,10 @@ import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
 import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
 import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration;
 import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
-import org.springframework.beans.factory.annotation.Value;
 
 import javax.sql.DataSource;
 import java.sql.SQLException;
@@ -18,7 +18,7 @@ import java.util.Properties;
 
 @Configuration
 public class ShardingSphereConfig {
-
+    
     @Value("${sharding.datasource.ds0.driver-class-name}")
     private String ds0DriverClassName;
     
@@ -54,37 +54,37 @@ public class ShardingSphereConfig {
     
     @Value("${sharding.datasource.dsdefault.password}")
     private String dsDefaultPassword;
-
+    
     @Bean("shardingDataSource")
     @Primary
     public DataSource shardingDataSource() throws SQLException {
         Map<String, DataSource> dataSourceMap = new HashMap<>();
-
+        
         HikariDataSource dataSource0 = new HikariDataSource();
         dataSource0.setDriverClassName(ds0DriverClassName);
         dataSource0.setJdbcUrl(ds0JdbcUrl);
         dataSource0.setUsername(ds0Username);
         dataSource0.setPassword(ds0Password);
         dataSourceMap.put("ds0", dataSource0);
-
+        
         HikariDataSource dataSource1 = new HikariDataSource();
         dataSource1.setDriverClassName(ds1DriverClassName);
         dataSource1.setJdbcUrl(ds1JdbcUrl);
         dataSource1.setUsername(ds1Username);
         dataSource1.setPassword(ds1Password);
         dataSourceMap.put("ds1", dataSource1);
-
+        
         HikariDataSource dataSourceFault = new HikariDataSource();
         dataSourceFault.setDriverClassName(dsDefaultDriverClassName);
         dataSourceFault.setJdbcUrl(dsDefaultJdbcUrl);
         dataSourceFault.setUsername(dsDefaultUsername);
         dataSourceFault.setPassword(dsDefaultPassword);
         dataSourceMap.put("dsdefault", dataSourceFault);
-
+        
         if (dataSourceMap.isEmpty()) {
             throw new IllegalArgumentException("数据源配置不能为空");
         }
-
+        
         ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
         
         shardingRuleConfig.getTableRuleConfigs().add(getAccountFlowTableRuleConfiguration());
@@ -94,34 +94,34 @@ public class ShardingSphereConfig {
         shardingRuleConfig.getTableRuleConfigs().add(getRedEnvelopeTableRuleConfiguration());
         
         shardingRuleConfig.setDefaultDataSourceName("dsdefault");
-
+        
         Properties props = new Properties();
         props.setProperty("sql.show", "true");
-
+        
         return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, props);
     }
-
+    
     private TableRuleConfiguration getAccountFlowTableRuleConfiguration() {
         TableRuleConfiguration result = new TableRuleConfiguration("c_account_flow", "ds${0..1}.c_account_flow_${0..3}");
         // 修改为按时间分库,按用户ID分表
-        result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("create_time", new TimeShardingAlg()));
-        result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("user_id", new UserIdShardingAlg()));
+        result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("create_time", new TimeShardingAlg(), new TimeRangeShardingAlg()));
+        result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("user_id", new UserIdShardingAlg(), new UserIdRangeShardingAlg()));
         return result;
     }
-
+    
     private TableRuleConfiguration getFlowTableRuleConfiguration() {
         TableRuleConfiguration result = new TableRuleConfiguration("c_flow", "ds${0..1}.c_flow_${0..3}");
         // 修改为按时间分库,按用户ID分表
-        result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("create_time", new TimeShardingAlg()));
-        result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("user_id", new UserIdShardingAlg()));
+        result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("create_time", new TimeShardingAlg(), new TimeRangeShardingAlg()));
+        result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("user_id", new UserIdShardingAlg(), new UserIdRangeShardingAlg()));
         return result;
     }
-
+    
     private TableRuleConfiguration getRedEnvelopeTableRuleConfiguration() {
         TableRuleConfiguration result = new TableRuleConfiguration("c_red_envelope", "ds${0..1}.c_red_envelope_${0..3}");
         // 修改为按时间分库,按用户ID分表
-        result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("create_time", new TimeShardingAlg()));
-        result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("user_id", new UserIdShardingAlg()));
+        result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("create_time", new TimeShardingAlg(), new TimeRangeShardingAlg()));
+        result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("user_id", new UserIdShardingAlg(), new UserIdRangeShardingAlg()));
         return result;
     }
 }

+ 21 - 0
cif-service/src/main/java/com/txz/cif/configurer/sharding/TimeRangeShardingAlg.java

@@ -0,0 +1,21 @@
+package com.txz.cif.configurer.sharding;
+
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
+
+import java.util.Collection;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+public class TimeRangeShardingAlg implements RangeShardingAlgorithm<Date> {
+    
+    @Override
+    public Collection<String> doSharding(Collection<String> availableTargetNames, RangeShardingValue<Date> shardingValue) {
+        // 对于时间范围查询,返回所有可能的数据源,确保查询的完整性
+        Set<String> result = new LinkedHashSet<>();
+        result.addAll(availableTargetNames);
+        return result;
+    }
+}

+ 9 - 1
cif-service/src/main/java/com/txz/cif/configurer/sharding/TimeShardingAlg.java

@@ -2,12 +2,14 @@ package com.txz.cif.configurer.sharding;
 
 import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
 import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
 
 import java.util.Collection;
 import java.util.Date;
 import java.text.SimpleDateFormat;
 
-public class TimeShardingAlg implements PreciseShardingAlgorithm<Date> {
+public class TimeShardingAlg implements PreciseShardingAlgorithm<Date>, RangeShardingAlgorithm<Date> {
     
     @Override
     public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Date> shardingValue) {
@@ -18,4 +20,10 @@ public class TimeShardingAlg implements PreciseShardingAlgorithm<Date> {
         // 兜底
         return availableTargetNames.iterator().next();
     }
+
+    @Override
+    public Collection<String> doSharding(Collection<String> availableTargetNames, RangeShardingValue<Date> shardingValue) {
+        // 对于范围查询,返回所有可能的数据源,确保查询的完整性
+        return availableTargetNames;
+    }
 }

+ 19 - 0
cif-service/src/main/java/com/txz/cif/configurer/sharding/UserIdRangeShardingAlg.java

@@ -0,0 +1,19 @@
+package com.txz.cif.configurer.sharding;
+
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
+
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+public class UserIdRangeShardingAlg implements RangeShardingAlgorithm<Long> {
+    
+    @Override
+    public Collection<String> doSharding(Collection<String> availableTargetNames, RangeShardingValue<Long> shardingValue) {
+        // 对于用户ID范围查询,返回所有可能的表
+        Set<String> result = new LinkedHashSet<>();
+        result.addAll(availableTargetNames);
+        return result;
+    }
+}

+ 13 - 1
cif-service/src/main/java/com/txz/cif/configurer/sharding/UserIdShardingAlg.java

@@ -2,10 +2,14 @@ package com.txz.cif.configurer.sharding;
 
 import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
 import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingAlgorithm;
+import org.apache.shardingsphere.api.sharding.standard.RangeShardingValue;
 
 import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Set;
 
-public class UserIdShardingAlg implements PreciseShardingAlgorithm<Long> {
+public class UserIdShardingAlg implements PreciseShardingAlgorithm<Long>, RangeShardingAlgorithm<Long> {
     
     @Override
     public String doSharding(Collection<String> availableTargetNames, PreciseShardingValue<Long> shardingValue) {
@@ -35,4 +39,12 @@ public class UserIdShardingAlg implements PreciseShardingAlgorithm<Long> {
             return "dsdefault";
         }
     }
+
+    @Override
+    public Collection<String> doSharding(Collection<String> availableTargetNames, RangeShardingValue<Long> shardingValue) {
+        // 对于范围查询,返回所有可能的表
+        Set<String> result = new LinkedHashSet<>();
+        result.addAll(availableTargetNames);
+        return result;
+    }
 }

+ 2 - 6
cif-service/src/main/java/com/txz/cif/service/impl/FlowServiceImpl.java

@@ -3,17 +3,16 @@ package com.txz.cif.service.impl;
 import cn.hutool.core.date.DateUtil;
 import com.txz.cif.configurer.LocalUtil;
 import com.txz.cif.constants.MyConstants;
+import com.txz.cif.core.AbstractService;
 import com.txz.cif.core.ServiceException;
 import com.txz.cif.dao.FlowMapper;
 import com.txz.cif.dto.Result;
 import com.txz.cif.enums.BizTypeEnum;
 import com.txz.cif.model.*;
 import com.txz.cif.param.*;
-import com.txz.cif.service.AccountFlowService;
 import com.txz.cif.service.AccountFreezdService;
 import com.txz.cif.service.AccountService;
 import com.txz.cif.service.FlowService;
-import com.txz.cif.core.AbstractService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -35,10 +34,7 @@ public class FlowServiceImpl extends AbstractService<Flow> implements FlowServic
 
     @Resource
     private AccountService accountService;
-
-    @Resource
-    private AccountFlowService accountFlowService;
-
+    
     @Resource
     private AccountFreezdService accountFreezdService;
 

+ 2 - 1
cif-service/src/main/resources/bootstrap.properties

@@ -1,5 +1,6 @@
 spring.application.name=cif
 server.port=8881
+server.host=localhost
 project.version=1.03
 #server.port=8079
 #spring.mvc.throw-exception-if-no-handler-found=true
@@ -203,4 +204,4 @@ cshg.apiurl=http://smsapi.cshuagu.com/api/msg/key/send
 cshg.apikey=e3543dc9
 cshg.apisecret=7bf5efdb
 
-server.host=124.222.152.234
+sharding.enabled=true

+ 1 - 1
cif-service/src/main/resources/mapper/AccountFlowMapper.xml

@@ -25,7 +25,7 @@
   <select id="sumOccur" resultType="java.math.BigDecimal" >
     select sum(amount)  from  c_account_flow
     where type =  #{type} 
-    and DATE(create_time) = CURDATE()
+    and  create_time >= #{startTime}  and #{endTime} > create_time
     and flow_type not in (4,5)  
     and aliases = #{aliases}
     and user_id = #{userId}

+ 0 - 70
cif-service/src/test/java/com/txz/cif/service/AccountFlowServiceTest.java

@@ -1,70 +0,0 @@
-package com.txz.cif.service;
-
-import com.txz.cif.CifApplication;
-import com.txz.cif.model.AccountFlow;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-
-import static org.junit.Assert.*;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = CifApplication.class)
-@WebAppConfiguration
-@TestPropertySource(properties = {
-        "spring.cloud.nacos.discovery.group=qly",
-        "dubbo.registry.group=qly",
-        "dev.nacos=124.222.152.234:8848",
-        "mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl",
-        "mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl"
-})
-public class AccountFlowServiceTest {
-
-    @Resource
-    private AccountFlowService accountFlowService;
-
-    @Test
-    public void testSumOccur() {
-        String aliases = "101";
-        int type = 1;
-        String startTime = "2025-10-01 00:00:00";
-        String endTime = "2025-10-10 23:59:59";
-        Long userId = 1L;
-        
-        BigDecimal result = accountFlowService.sumOccur(aliases, type, startTime, endTime, userId);
-        assertNotNull(result);
-    }
-
-    @Test
-    public void testSaveAccountFlow() {
-        AccountFlow accountFlow = new AccountFlow();
-        accountFlow.setAliases("101");
-        accountFlow.setBizNo("TEST001");
-        accountFlow.setAccountId(10001L);
-        accountFlow.setUserId(1L);
-        accountFlow.setAmount(new BigDecimal("100.00"));
-        accountFlow.setBalance(new BigDecimal("500.00"));
-        accountFlow.setFreezeAmount(new BigDecimal("50.00"));
-        accountFlow.setType(1);
-        accountFlow.setBizType(1001);
-        accountFlow.setFlowType(1);
-        
-        accountFlowService.save(accountFlow);
-        assertNotNull(accountFlow.getId());
-    }
-
-    @Test
-    public void testFindAccountFlow() {
-        AccountFlow accountFlow = accountFlowService.findById(1L);
-        if (accountFlow != null) {
-            assertNotNull(accountFlow.getId());
-            assertNotNull(accountFlow.getAliases());
-        }
-    }
-}

+ 0 - 76
cif-service/src/test/java/com/txz/cif/service/FlowServiceTest.java

@@ -1,76 +0,0 @@
-package com.txz.cif.service;
-
-import com.txz.cif.CifApplication;
-import com.txz.cif.dto.Result;
-import com.txz.cif.model.Flow;
-import com.txz.cif.param.*;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-
-import static org.junit.Assert.*;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = CifApplication.class)
-@WebAppConfiguration
-@TestPropertySource(properties = {
-        "spring.cloud.nacos.discovery.group=qly",
-        "dubbo.registry.group=qly",
-        "dev.nacos=124.222.152.234:8848",
-        "mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl",
-        "mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl"
-})
-public class FlowServiceTest {
-
-    @Resource
-    private FlowService flowService;
-
-    @Test
-    public void testCountByUserId() {
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("type", 1);
-        map.put("startTime", "2025-10-01 00:00:00");
-        map.put("endTime", "2025-10-10 23:59:59");
-        map.put("userId", 1L);
-        
-        Integer count = flowService.countByUserId(map);
-        assertNotNull(count);
-    }
-
-    @Test
-    public void testSaveFlow() {
-        Flow flow = new Flow();
-        flow.setBizNo("TEST001");
-        flow.setBizId("BIZ001");
-        flow.setDebitAccount(10001L);
-        flow.setUserId(1L);
-        flow.setCreditAccount(10002L);
-        flow.setAmount(new BigDecimal("100.00"));
-        flow.setBalance(new BigDecimal("500.00"));
-        flow.setType(1);
-        flow.setBizType(1001);
-        flow.setTransTime(new Date());
-        flow.setCreateTime(new Date());
-        flow.setUpdateTime(new Date());
-        
-        flowService.save(flow);
-        assertNotNull(flow.getId());
-    }
-
-    @Test
-    public void testFindFlow() {
-        Flow flow = flowService.findById(1L);
-        if (flow != null) {
-            assertNotNull(flow.getId());
-            assertNotNull(flow.getBizNo());
-        }
-    }
-}

+ 0 - 96
cif-service/src/test/java/com/txz/cif/service/RedEnvelopeServiceTest.java

@@ -1,96 +0,0 @@
-package com.txz.cif.service;
-
-import com.txz.cif.CifApplication;
-import com.txz.cif.dto.EarningsDTO;
-import com.txz.cif.dto.Result;
-import com.txz.cif.model.RedEnvelope;
-import com.txz.cif.web.bo.UserTopBo;
-import com.txz.cif.web.para.RedEnvelopeParam;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-
-import static org.junit.Assert.*;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = CifApplication.class)
-@WebAppConfiguration
-@TestPropertySource(properties = {
-        "spring.cloud.nacos.discovery.group=qly",
-        "dubbo.registry.group=qly",
-        "dev.nacos=124.222.152.234:8848",
-        "mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl",
-        "mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl"
-})
-public class RedEnvelopeServiceTest {
-
-    @Resource
-    private RedEnvelopeService redEnvelopeService;
-
-    @Test
-    public void testSumWithDay() {
-        String day = "2025-10-01 00:00:00";
-        Long userId = 1L;
-        Integer type = 1;
-        
-        BigDecimal result = redEnvelopeService.sumWithDay(day, userId, type);
-        assertNotNull(result);
-    }
-
-    @Test
-    public void testSumByStatus() {
-        HashMap<String, Object> map = new HashMap<>();
-        map.put("status", 1);
-        map.put("bizType", 5001);
-        map.put("startTime", "2025-10-01 00:00:00");
-        map.put("endTime", "2025-10-10 23:59:59");
-        map.put("userId", 1L);
-        
-        BigDecimal result = redEnvelopeService.sumByStatus(map);
-        assertNotNull(result);
-    }
-
-    @Test
-    public void testSaveRedEnvelope() {
-        RedEnvelope redEnvelope = new RedEnvelope();
-        redEnvelope.setOrderNo("ORDER001");
-        redEnvelope.setTranNo("TRAN001");
-        redEnvelope.setUserId(1L);
-        redEnvelope.setAmount(new BigDecimal("100.00"));
-        redEnvelope.setBalance(new BigDecimal("500.00"));
-        redEnvelope.setDebitAccount(10001L);
-        redEnvelope.setCreditAccount(10002L);
-        redEnvelope.setStatus(1);
-        redEnvelope.setBizType(5001);
-        redEnvelope.setTransTime(new Date());
-        redEnvelope.setSettleTime(new Date());
-        redEnvelope.setCreateUser("testUser");
-        redEnvelope.setUpdateUser("testUser");
-        redEnvelope.setUpdateTime(new Date());
-        redEnvelope.setCreateTime(new Date());
-        redEnvelope.setName("Test User");
-        redEnvelope.setPhoneNo("13800138000");
-        redEnvelope.setMemo("Test memo");
-        
-        redEnvelopeService.save(redEnvelope);
-        assertNotNull(redEnvelope.getId());
-    }
-
-    @Test
-    public void testFindRedEnvelope() {
-        RedEnvelope redEnvelope = redEnvelopeService.findById(1L);
-        if (redEnvelope != null) {
-            assertNotNull(redEnvelope.getId());
-            assertNotNull(redEnvelope.getOrderNo());
-        }
-    }
-}

+ 24 - 22
cif-service/src/test/java/com/txz/cif/sharding/AccountFlowMapperTest.java

@@ -1,23 +1,25 @@
 package com.txz.cif.sharding;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import com.txz.cif.CifApplication;
-import com.txz.cif.dao.AccountFlowMapper;
 import com.txz.cif.model.AccountFlow;
+import com.txz.cif.service.AccountFlowService;
+import lombok.extern.log4j.Log4j2;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.context.web.WebAppConfiguration;
+import tk.mybatis.mapper.entity.Condition;
+import tk.mybatis.mapper.entity.Example;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Calendar;
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertNotNull;
+import java.util.List;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = CifApplication.class)
@@ -29,22 +31,22 @@ import static org.junit.Assert.assertNotNull;
         "mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl",
         "mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl"
 })
+@Log4j2
 public class AccountFlowMapperTest {
     
     @Resource
-    private AccountFlowMapper accountFlowMapper;
+    private AccountFlowService accountFlowService;
     
     @Test
     public void testSumOccur() {
-        Map<String, Object> map = new HashMap<>();
-        map.put("aliases", "101");
-        map.put("type", 1);
-        map.put("startTime", "2025-10-01 00:00:00");
-        map.put("endTime", "2025-10-10 23:59:59");
-        map.put("userId", 1L);
+        String aliases = "101";
+        int type = 1;
+        String startTime = "2025-10-01 00:00:00";
+        String endTime = "2025-10-10 23:59:59";
+        Long userId = 1L;
         
-        BigDecimal result = accountFlowMapper.sumOccur(map);
-        assertNotNull(result);
+        BigDecimal result = accountFlowService.sumOccur(aliases, type, startTime, endTime, userId);
+        log.info(result);
     }
     
     @Test
@@ -67,7 +69,7 @@ public class AccountFlowMapperTest {
         
         for (long i = 1; i < 5L; i++) {
             accountFlow.setUserId(i);
-            accountFlowMapper.insert(accountFlow);
+            accountFlowService.save(accountFlow);
         }
         
         // 前一天
@@ -79,16 +81,16 @@ public class AccountFlowMapperTest {
         
         for (long i = 1; i < 5L; i++) {
             accountFlow.setUserId(i);
-            accountFlowMapper.insert(accountFlow);
+            accountFlowService.save(accountFlow);
         }
     }
     
     @Test
-    public void testSelectAccountFlow() {
-        AccountFlow accountFlow = accountFlowMapper.selectByPrimaryKey(1L);
-        if (accountFlow != null) {
-            assertNotNull(accountFlow.getId());
-            assertNotNull(accountFlow.getAliases());
-        }
+    public void testQuery() {
+        Condition c = new Condition(AccountFlow.class);
+        Example.Criteria criteria = c.createCriteria().andIn("userId", CollUtil.newArrayList(1L,2L,3L));
+        criteria.andBetween("createTime", DateUtil.beginOfDay(DateUtil.yesterday()), DateUtil.beginOfDay(DateUtil.date()));
+        List<AccountFlow> flows = accountFlowService.findByCondition(c);
+        System.out.println(flows.size());
     }
 }

+ 5 - 13
cif-service/src/test/java/com/txz/cif/sharding/FlowMapperTest.java

@@ -3,6 +3,7 @@ package com.txz.cif.sharding;
 import com.txz.cif.CifApplication;
 import com.txz.cif.dao.FlowMapper;
 import com.txz.cif.model.Flow;
+import lombok.extern.log4j.Log4j2;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -15,8 +16,6 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
 
-import static org.junit.Assert.*;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = CifApplication.class)
 @WebAppConfiguration
@@ -27,6 +26,7 @@ import static org.junit.Assert.*;
         "mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl",
         "mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl"
 })
+@Log4j2
 public class FlowMapperTest {
 
     @Resource
@@ -41,7 +41,7 @@ public class FlowMapperTest {
         map.put("userId", 1L);
         
         Integer count = flowMapper.countByUserId(map);
-        assertNotNull(count);
+        log.info("count: {}", count);
     }
 
     @Test
@@ -65,15 +65,7 @@ public class FlowMapperTest {
                 .build();
         
         flowMapper.insert(flow);
-        assertNotNull(flow.getId());
-    }
-
-    @Test
-    public void testSelectFlow() {
-        Flow flow = flowMapper.selectByPrimaryKey(1L);
-        if (flow != null) {
-            assertNotNull(flow.getId());
-            assertNotNull(flow.getBizNo());
-        }
+        log.info("flow: {}", flow);
     }
+    
 }

+ 10 - 18
cif-service/src/test/java/com/txz/cif/sharding/RedEnvelopeMapperTest.java

@@ -3,6 +3,7 @@ package com.txz.cif.sharding;
 import com.txz.cif.CifApplication;
 import com.txz.cif.dao.RedEnvelopeMapper;
 import com.txz.cif.model.RedEnvelope;
+import lombok.extern.log4j.Log4j2;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -15,8 +16,6 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.HashMap;
 
-import static org.junit.Assert.*;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = CifApplication.class)
 @WebAppConfiguration
@@ -27,11 +26,12 @@ import static org.junit.Assert.*;
         "mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl",
         "mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl"
 })
+@Log4j2
 public class RedEnvelopeMapperTest {
-
+    
     @Resource
     private RedEnvelopeMapper redEnvelopeMapper;
-
+    
     @Test
     public void testSumWithDay() {
         String day = "2025-10-01 00:00:00";
@@ -39,9 +39,9 @@ public class RedEnvelopeMapperTest {
         Integer type = 1;
         
         BigDecimal result = redEnvelopeMapper.sumWithDay(day, userId, type);
-        assertNotNull(result);
+        log.info("result: {}", result);
     }
-
+    
     @Test
     public void testSumByStatus() {
         HashMap<String, Object> map = new HashMap<>();
@@ -52,9 +52,9 @@ public class RedEnvelopeMapperTest {
         map.put("userId", 1L);
         
         BigDecimal result = redEnvelopeMapper.sumByStatus(map);
-        assertNotNull(result);
+        log.info("result: {}", result);
     }
-
+    
     @Test
     public void testInsertRedEnvelope() {
         RedEnvelope redEnvelope = RedEnvelope.builder()
@@ -80,15 +80,7 @@ public class RedEnvelopeMapperTest {
                 .build();
         
         redEnvelopeMapper.insert(redEnvelope);
-        assertNotNull(redEnvelope.getId());
-    }
-
-    @Test
-    public void testSelectRedEnvelope() {
-        RedEnvelope redEnvelope = redEnvelopeMapper.selectByPrimaryKey(1L);
-        if (redEnvelope != null) {
-            assertNotNull(redEnvelope.getId());
-            assertNotNull(redEnvelope.getOrderNo());
-        }
+        log.info("redEnvelope: {}", redEnvelope);
     }
+    
 }