【代码优化】PAY:移除 PayClient 缓存,减少复杂性,性能足够(非高频读取)
							parent
							
								
									f717c0f9c6
								
							
						
					
					
						commit
						41f56969e1
					
				| 
						 | 
					@ -13,12 +13,12 @@ import cn.iocoder.yudao.module.pay.controller.admin.channel.vo.PayChannelUpdateR
 | 
				
			||||||
import cn.iocoder.yudao.module.pay.dal.dataobject.channel.PayChannelDO;
 | 
					import cn.iocoder.yudao.module.pay.dal.dataobject.channel.PayChannelDO;
 | 
				
			||||||
import cn.iocoder.yudao.module.pay.dal.mysql.channel.PayChannelMapper;
 | 
					import cn.iocoder.yudao.module.pay.dal.mysql.channel.PayChannelMapper;
 | 
				
			||||||
import com.alibaba.fastjson.JSON;
 | 
					import com.alibaba.fastjson.JSON;
 | 
				
			||||||
import jakarta.annotation.Resource;
 | 
					 | 
				
			||||||
import jakarta.validation.Validator;
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
import org.springframework.boot.test.mock.mockito.MockBean;
 | 
					import org.springframework.boot.test.mock.mockito.MockBean;
 | 
				
			||||||
import org.springframework.context.annotation.Import;
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import jakarta.annotation.Resource;
 | 
				
			||||||
 | 
					import jakarta.validation.Validator;
 | 
				
			||||||
import java.util.Collections;
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,8 +60,6 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
 | 
				
			||||||
        PayChannelDO channel = channelMapper.selectById(channelId);
 | 
					        PayChannelDO channel = channelMapper.selectById(channelId);
 | 
				
			||||||
        assertPojoEquals(reqVO, channel, "config");
 | 
					        assertPojoEquals(reqVO, channel, "config");
 | 
				
			||||||
        assertPojoEquals(config, channel.getConfig());
 | 
					        assertPojoEquals(config, channel.getConfig());
 | 
				
			||||||
        // 校验缓存
 | 
					 | 
				
			||||||
        assertNull(channelService.getClientCache().getIfPresent(channelId));
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
| 
						 | 
					@ -102,8 +100,6 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
 | 
				
			||||||
        PayChannelDO channel = channelMapper.selectById(reqVO.getId()); // 获取最新的
 | 
					        PayChannelDO channel = channelMapper.selectById(reqVO.getId()); // 获取最新的
 | 
				
			||||||
        assertPojoEquals(reqVO, channel, "config");
 | 
					        assertPojoEquals(reqVO, channel, "config");
 | 
				
			||||||
        assertPojoEquals(config, channel.getConfig());
 | 
					        assertPojoEquals(config, channel.getConfig());
 | 
				
			||||||
        // 校验缓存
 | 
					 | 
				
			||||||
        assertNull(channelService.getClientCache().getIfPresent(channel.getId()));
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
| 
						 | 
					@ -134,8 +130,6 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
 | 
				
			||||||
        channelService.deleteChannel(id);
 | 
					        channelService.deleteChannel(id);
 | 
				
			||||||
        // 校验数据不存在了
 | 
					        // 校验数据不存在了
 | 
				
			||||||
        assertNull(channelMapper.selectById(id));
 | 
					        assertNull(channelMapper.selectById(id));
 | 
				
			||||||
        // 校验缓存
 | 
					 | 
				
			||||||
        assertNull(channelService.getClientCache().getIfPresent(id));
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
| 
						 | 
					@ -306,20 +300,20 @@ public class PayChannelServiceTest extends BaseDbUnitTest {
 | 
				
			||||||
        PayChannelDO channel = randomPojo(PayChannelDO.class, o -> {
 | 
					        PayChannelDO channel = randomPojo(PayChannelDO.class, o -> {
 | 
				
			||||||
            o.setCode(PayChannelEnum.ALIPAY_APP.getCode());
 | 
					            o.setCode(PayChannelEnum.ALIPAY_APP.getCode());
 | 
				
			||||||
            o.setConfig(randomAlipayPayClientConfig());
 | 
					            o.setConfig(randomAlipayPayClientConfig());
 | 
				
			||||||
 | 
					            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        channelMapper.insert(channel);
 | 
					        channelMapper.insert(channel);
 | 
				
			||||||
        // mock 参数
 | 
					        // mock 参数
 | 
				
			||||||
        Long id = channel.getId();
 | 
					        Long id = channel.getId();
 | 
				
			||||||
        // mock 方法
 | 
					        // mock 方法
 | 
				
			||||||
        PayClient mockClient = mock(PayClient.class);
 | 
					        PayClient mockClient = mock(PayClient.class);
 | 
				
			||||||
        when(payClientFactory.getPayClient(eq(id))).thenReturn(mockClient);
 | 
					        when(payClientFactory.createOrUpdatePayClient(eq(id), eq(channel.getCode()), eq(channel.getConfig())))
 | 
				
			||||||
 | 
					                .thenReturn(mockClient);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 调用
 | 
					        // 调用
 | 
				
			||||||
        PayClient client = channelService.getPayClient(id);
 | 
					        PayClient client = channelService.getPayClient(id);
 | 
				
			||||||
        // 断言
 | 
					        // 断言
 | 
				
			||||||
        assertSame(client, mockClient);
 | 
					        assertSame(client, mockClient);
 | 
				
			||||||
        verify(payClientFactory).createOrUpdatePayClient(eq(id), eq(channel.getCode()),
 | 
					 | 
				
			||||||
                eq(channel.getConfig()));
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public WxPayClientConfig randomWxPayClientConfig() {
 | 
					    public WxPayClientConfig randomWxPayClientConfig() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue