mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-08 04:39:00 +08:00
feat(pigx-mp-platform): 新增按wxUserId精确过滤微信消息查询
- 分页查询新增 wxUserId 精确匹配条件,字段为空时不参与过滤 - 更新接口注释,明确各过滤字段的匹配规则 - 新增 WxFansMsgControllerTests 单元测试,验证按公众号和粉丝维度过滤 (cherry picked from commit 66870cc38f44ccc6c116a09c5e5620ac4b43f9b3)
This commit is contained in:
1 parent
b8fda524f8
commit
ca84985d63
2 files changed
+45
-2
No files matched your search
+5
-2
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
package com.pig4cloud.pigx.mp.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
@@ -43,14 +44,16 @@ public class WxFansMsgController {
|
||||
private final WxMsgService wxMsgService;
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* 分页查询微信消息,可按公众号、粉丝、昵称和消息类型过滤
|
||||
* @param page 分页对象
|
||||
* @param msg 查询条件
|
||||
* @param msg 查询条件:appId、wxUserId、type 精确匹配,nickName 模糊匹配;字段为空时不参与过滤
|
||||
* @return 消息分页结果
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
public R getWxMsgPage(Page page, WxMsg msg) {
|
||||
LambdaQueryWrapper<WxMsg> wrapper = Wrappers.<WxMsg>lambdaQuery()
|
||||
.eq(StrUtil.isNotBlank(msg.getAppId()), WxMsg::getAppId, msg.getAppId())
|
||||
.eq(ObjectUtil.isNotNull(msg.getWxUserId()), WxMsg::getWxUserId, msg.getWxUserId())
|
||||
.like(StrUtil.isNotBlank(msg.getNickName()), WxMsg::getNickName, msg.getNickName())
|
||||
.eq(StrUtil.isNotBlank(msg.getType()), WxMsg::getType, msg.getType());
|
||||
return R.ok(wxMsgService.page(page, wrapper));
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package com.pig4cloud.pigx.mp.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.pig4cloud.pigx.mp.entity.WxMsg;
|
||||
import com.pig4cloud.pigx.mp.service.WxMsgService;
|
||||
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.same;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
class WxFansMsgControllerTests {
|
||||
|
||||
@Test
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
void conversationQueryRestrictsMessagesToAccountAndFan() {
|
||||
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), "test"), WxMsg.class);
|
||||
WxMsgService service = mock(WxMsgService.class);
|
||||
WxFansMsgController controller = new WxFansMsgController(service);
|
||||
WxMsg filter = new WxMsg();
|
||||
filter.setAppId("test-account");
|
||||
filter.setWxUserId(42L);
|
||||
Page<WxMsg> page = new Page<>(1, 20);
|
||||
|
||||
controller.getWxMsgPage(page, filter);
|
||||
|
||||
ArgumentCaptor<LambdaQueryWrapper<WxMsg>> captor = ArgumentCaptor.forClass(LambdaQueryWrapper.class);
|
||||
verify(service).page(same(page), captor.capture());
|
||||
LambdaQueryWrapper<WxMsg> query = captor.getValue();
|
||||
assertThat(query.getSqlSegment()).contains("app_id =", "wx_user_id =");
|
||||
assertThat(query.getParamNameValuePairs()).containsValues("test-account", 42L);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user