Commit 71beeeb0 by 穆龙飞

modify:修改查询供应商商品接口

parent 64d660c8
package com.netease.mail.yanxuan.change.biz.service;
import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierGoodsInfoReq;
import com.netease.mail.yanxuan.change.integration.todo.SupplierItemPageVO;
public interface ISupplierItemService {
/**
* 查询供应商商品信息
*
* @param supplierGoodsInfoReq
* @param itemId
* @param itemName
* @param page
* @param pageSize
* @return
*/
SupplierItemPageVO supplierGoodsInfoBySupplier(SupplierGoodsInfoReq supplierGoodsInfoReq, String itemId, String itemName, Integer page, Integer pageSize);
}
package com.netease.mail.yanxuan.change.biz.service.impl;
import com.netease.mail.yanxuan.change.biz.service.ISupplierItemService;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierSendService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierGoodsInfoReq;
import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierGoodsInfoRsp;
import com.netease.mail.yanxuan.change.integration.item.ItemRpcService;
import com.netease.mail.yanxuan.change.integration.item.meta.SpuTO;
import com.netease.mail.yanxuan.change.integration.item.param.BatchQuerySpuInfoParam;
import com.netease.mail.yanxuan.change.integration.todo.PageVO;
import com.netease.mail.yanxuan.change.integration.todo.SupplierItemPageVO;
import com.netease.mail.yanxuan.change.integration.todo.SupplierItemVO;
import com.netease.yanxuan.flowx.sdk.meta.controller.communal.AjaxResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SupplierItemServiceImpl implements ISupplierItemService {
@Autowired
private FlowRpcSupplierSendService flowRpcSupplierSendService;
@Autowired
private ItemRpcService itemRpcService;
@Override
public SupplierItemPageVO supplierGoodsInfoBySupplier(SupplierGoodsInfoReq supplierGoodsInfoReq, String itemId, String itemName, Integer page, Integer pageSize) {
AjaxResponse<List<SupplierGoodsInfoRsp>> listAjaxResponse = flowRpcSupplierSendService.supplierGoodsInfoBySupplier(supplierGoodsInfoReq);
List<SupplierGoodsInfoRsp> data = listAjaxResponse.getData();
List<SpuTO> spuTOList = new ArrayList<>();
if (data != null) {
Set<Long> fullItemIds = data.stream().map(SupplierGoodsInfoRsp::getItemId).collect(Collectors.toSet());
while (fullItemIds.size() > 200) {
List<Long> itemIds = new ArrayList<>(fullItemIds).subList(0, 200);
AjaxResult<List<SpuTO>> listAjaxResult = itemRpcService.batchQuerySpuInfo(BatchQuerySpuInfoParam.builder().ids(itemIds).build());
List<SpuTO> pageSpuTo = listAjaxResult.getData();
if (CollectionUtils.isEmpty(pageSpuTo)) {
spuTOList.addAll(pageSpuTo);
}
fullItemIds.removeAll(itemIds);
}
}
if (StringUtils.isNotBlank(itemId)) {
spuTOList = spuTOList.stream().filter(i -> Long.valueOf(itemId).equals(i.getId())).collect(Collectors.toList());
}
if (StringUtils.isNotBlank(itemName)) {
spuTOList = spuTOList.stream().filter(i -> i.getName().contains(itemName)).collect(Collectors.toList());
}
PageVO pageVO = buildPageVo(spuTOList.size(), page, pageSize);
Integer endIndex = page * pageSize;
if (page * pageSize > spuTOList.size()) {
endIndex = spuTOList.size();
}
List<SpuTO> pageItem = spuTOList.subList((page - 1) * pageSize, endIndex);
List<SupplierItemVO> supplierItemVOList = pageItem.stream().map(i -> {
SupplierItemVO supplierItemVO = new SupplierItemVO();
supplierItemVO.setItemId(i.getId());
supplierItemVO.setItemName(i.getName());
return supplierItemVO;
}).collect(Collectors.toList());
return SupplierItemPageVO.builder().pageVo(pageVO).supplierItemVOList(supplierItemVOList).build();
}
private PageVO buildPageVo(int size, Integer page, Integer pageSize) {
int totalPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1;
return PageVO.builder().page(page).pageSize(pageSize).totalCount(size).totalPage(totalPage).build();
}
}
package com.netease.mail.yanxuan.change.integration.todo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PageVO {
/**
* 当前页
*/
private Integer page;
/**
* 页面大小
*/
private Integer pageSize;
/**
* 总页数
*/
private Integer totalPage;
/**
* 总条数
*/
private Integer totalCount;
}
package com.netease.mail.yanxuan.change.integration.todo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SupplierItemPageVO {
private PageVO pageVo;
private List<SupplierItemVO> supplierItemVOList;
}
package com.netease.mail.yanxuan.change.integration.todo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SupplierItemVO {
/**
* 商品id
*/
private Long itemId;
/**
* 商品名称
*/
private String itemName;
}
...@@ -2,12 +2,12 @@ package com.netease.mail.yanxuan.change.web.controller; ...@@ -2,12 +2,12 @@ package com.netease.mail.yanxuan.change.web.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.netease.mail.yanxuan.change.biz.config.AppConfig; import com.netease.mail.yanxuan.change.biz.config.AppConfig;
import com.netease.mail.yanxuan.change.biz.service.ISupplierItemService;
import com.netease.mail.yanxuan.change.common.bean.ResponseCodeEnum; import com.netease.mail.yanxuan.change.common.bean.ResponseCodeEnum;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierSendService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierService; import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierGoodsInfoReq; import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierGoodsInfoReq;
import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierGoodsInfoRsp;
import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierInfoRsp; import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierInfoRsp;
import com.netease.mail.yanxuan.change.integration.todo.SupplierItemPageVO;
import com.netease.yanxuan.flowx.sdk.meta.controller.communal.AjaxResponse; import com.netease.yanxuan.flowx.sdk.meta.controller.communal.AjaxResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -31,7 +31,7 @@ public class SupplierController { ...@@ -31,7 +31,7 @@ public class SupplierController {
private FlowRpcSupplierService rpcSupplierService; private FlowRpcSupplierService rpcSupplierService;
@Autowired @Autowired
private FlowRpcSupplierSendService flowRpcSupplierSendService; private ISupplierItemService supplierItemService;
@Autowired @Autowired
private AppConfig appConfig; private AppConfig appConfig;
...@@ -58,10 +58,14 @@ public class SupplierController { ...@@ -58,10 +58,14 @@ public class SupplierController {
} }
@GetMapping("/query/supplier/item") @GetMapping("/query/supplier/item")
public AjaxResponse<List<SupplierGoodsInfoRsp>> querySupplier(@RequestParam String supplier) { public AjaxResponse<SupplierItemPageVO> querySupplier(@RequestParam String supplier,
@RequestParam(required = false) String itemId,
@RequestParam(required = false) String itemName,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer pageSize) {
SupplierGoodsInfoReq supplierGoodsInfoReq = new SupplierGoodsInfoReq(); SupplierGoodsInfoReq supplierGoodsInfoReq = new SupplierGoodsInfoReq();
supplierGoodsInfoReq.setSupplierIds(supplier); supplierGoodsInfoReq.setSupplierIds(supplier);
return flowRpcSupplierSendService.supplierGoodsInfoBySupplier(supplierGoodsInfoReq); return AjaxResponse.initSuccessResult(supplierItemService.supplierGoodsInfoBySupplier(supplierGoodsInfoReq, itemId, itemName, page, pageSize));
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment