3.3 门店列表
3.3.1 商户服务查询门店列表
3.3.1.1 接口定义
1、接口描述
1)根据商户id和分页信息查询门店列表
2、接口定义如下:MerchantService
/**
\* 分页条件查询商户下门店
\* @param storeDTO
\* @param pageNo
\* @param pageSize
\* @return
*/
PageVO<StoreDTO> queryStoreByPage(StoreDTO storeDTO, Integer pageNo, Integer pageSize);
3.3.1.2 接口实现
3、在MerchantServiceImpl中实现queryStoreByPage方法:
@Override
public PageVO<StoreDTO> queryStoreByPage(StoreDTO storeDTO, Integer pageNo, Integer pageSize) {
// 创建分页
Page<Store> page = new Page<>(pageNo, pageSize);
// 构造查询条件
QueryWrapper<Store> qw = new QueryWrapper();
if (null != storeDTO && null != storeDTO.getMerchantId()) {
qw.lambda().eq(Store::getMerchantId, storeDTO.getMerchantId());
}
// 执行查询
IPage<Store> storeIPage = storeMapper.selectPage(page, qw);
// entity List转DTO List
List<StoreDTO> storeList = StoreConvert.INSTANCE.listentity2dto(storeIPage.getRecords());
// 封装结果集
return new PageVO<>(storeList, storeIPage.getTotal(), pageNo, pageSize);
}
3.3.2 商户平台应用查询门店列表
3.3.2.1 接口定义
1、接口描述
1)请求商户服务查询门店列表
2、接口定义如下:StoreController
package com.huiminpay.merchant.controller;
@Api(value = "商户平台‐门店管理", tags = "商户平台‐门店管理", description = "商户平台‐门店的增删改查")
@RestController
public class StoreController {
@ApiOperation("分页条件查询商户下门店")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNo", value = "页码", required = true, dataType = "int",
paramType = "query"),
@ApiImplicitParam(name = "pageSize", value = "每页记录数", required = true, dataType =
"int", paramType = "query")})
@PostMapping("/my/stores/merchants/page")
public PageVO<StoreDTO> queryStoreByPage(@RequestParam Integer pageNo, @RequestParam Integer pageSize){
}
}
3.3.2.2 接口实现
前端JS在Long长度大于17位时会出现精度丢失的问题,由于项目中门店ID的长度会超过17位,所以在此处添加注解将返回给前端的门店ID自动转为string类型
1)使用jackson来完成自动转换,在huiminpay-merchant-api工程中添加依赖:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
2)在StoreDTO中添加注解:
@ApiModelProperty("门店Id")
@JsonSerialize(using= ToStringSerializer.class)
private Long id;
2、在StoreController中实现queryStoreByPage方法:
@PostMapping("/my/stores/merchants/page")
public PageVO<StoreDTO> queryStoreByPage(@RequestParam Integer pageNo,
@RequestParam Integer pageSize){
//获取商户id
Long merchantId = SecurityUtil.getMerchantId();
StoreDTO storeDTO = new StoreDTO();
storeDTO.setMerchantId(merchantId);
//分页查询
PageVO<StoreDTO> stores = merchantService.queryStoreByPage(storeDTO, pageNo, pageSize);
return stores;
}
3.3.2.3 接口测试
由于已经接入SaaS,请求统一走网关的端口56010。
1首先请求认证获取token,及租户的id
1)启动三个SaaS服务
2)使用账号申请token
2使用Postman:
POST http://localhost:56010/merchant/my/stores/merchants/page?pageNo=1&pageSize=20 查询门店列表
注意在header中添加 Authorization及tenantId。