查询全部的商品goodsId和skuId(queryAllGoodsIdAndSkuId接口)

概念

skuID 同一商品不同规格,skuID也不同,比如小号的A杯子和中号的A杯子,他们对应的skuID不相同,skuID是商品的最小维度

goodsID 指的是商品ID,不同商品goodsID 不同,同一商品不同规格goodsID相同

AppKey 公钥(相当于账户)本项目使用公司姓名加盐的形式生成的字符串

AppSecret 私钥(相当于密码)

channelId 渠道ID

公钥和私钥 公钥发给每人一把,私钥自己拥有,当自己私钥加密时发信息给别人,别人可以用公钥解密,当别人用公钥加密时发送给你时,你可以用私钥解密

准备

该接口的返回类QueryAllGoodsIdAndSkuIdResult封装了返回的结果

1
2
3
4
5
6
7
public class QueryAllGoodsIdAndSkuIdResult extends AbstractResult {    
//商品编号信息
private Object goodsInfos;
private Long total;
private Integer pageCount;
// 省略getset
}

所有返回类的基类AbstractResult

1
2
3
4
5
public class AbstractResult {    
protected int recCode;
protected String recMsg;
protected Object result;
}

步骤

  • 接口接收参数@RequestParam Map<String, String> map
  • 添加@DitchCheck自定义的注解进行渠道验证(参数appKey、channelId是否有指定,二者是否匹配)。
  • 先从请求参数中将channelIdappKey获取。
  • 凭借这两个参数获得第三方渠道商的配置参数对象ThirdPartyConfiguration,其中包含公钥
  • 判断渠道商是否为null,如果是,则返回类设置recMsg为渠道商不存在,设置recCode为对应状态码
  • 将结果转换为JSON
  • 如果渠道商不为null,那么使用AESDecodeUtil.toAesMap(Map<String, String> map, String keys)方法,keys为公钥,返回为TreeMap类型,(因为签名的规则要求参照字母排序拼接,TreeMap刚好可以自动将传入的参数按自然顺序或自定义顺序遍历key,所以采用返回TreeMap类型)将所有接收到的参数进行解密,(除了appkeysignchannelId之外的参数字段都经过了加密)
  • SignUtil.toSign(toAesMap)方法获得签名sign
  • 如果sign为null,返回类设置RecCodeRecMsg
  • 如果sign值和请求参数中的sign值不相等,返回类设置RecCodeRecMsg(sign验证不通过)
  • 设置当前页,判断传入参数中是否有key为page,如果没有则设置为1,如果有则采用page对应的value值设为当前页码Integer pageNow = toAesMap.containsKey("page") ? Integer.valueOf(toAesMap.get("page")) : 1;
  • 将pageNow作为参数传入,PageHelper.startPage(pagenow, 30);启用分页
  • List<GoodsInfo> goodsInfos = commodityTypeInfoMapper.selectAllGoodsId(list)获取所有的goodsID
  • 查询出每个goodsID下对应的skuID,放入goodsInfo实例中
1
2
3
4
for (GoodsInfo goodsInfo : goodsInfos) {   
List<String> skuIdList = commodityTypeInfoMapper.selectSkuId(goodsInfo.getGoodsId(),goodsInfo.getSupplyChannel());
goodsInfo.setSkuIdList(skuIdList);
}
  • 将goodsInfos对象强转为Page<GoodsInfo>对象

  • getTotal()方法返回总数,int PageCount = (int) ((total + 30 - 1) / 30)返回总页数

  • 返回类设置属性

  • return返回类对象

  • JSON.toJSONString(result) 返回类对象转变为JSON输出

赏个🍗吧
0%