Commit e4d82d54 by 王祖波

Merge remote-tracking branch 'origin/feature-content3' into feature-content3

parents ca7bb715 275d512f
......@@ -246,6 +246,12 @@
<artifactId>haoban-task-api</artifactId>
<version>${haoban-task-api}</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-commission-api</artifactId>
<version>${haoban-commission-api}</version>
</dependency>
</dependencies>
<build>
......
package com.gic.haoban.manage.web.controller.commission;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.commission.api.dto.commissiondetail.CommissionSettleDetailDTO;
import com.gic.haoban.commission.api.qdto.commissiondetail.CommissionSettleOrderItemQDTO;
import com.gic.haoban.commission.api.qdto.commissiondetail.CommissionSettleOrderQDTO;
import com.gic.haoban.commission.api.service.local.CommissionSettleDetailApiService;
import com.gic.haoban.manage.web.controller.goods.GoodsInfoAdaptor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
* @Author MUSI
* @Date 2023/6/16 4:30 PM
* @Description
* @Version
* 佣金管理
**/
@Slf4j
@Component
public class CommissionManager {
@Autowired
private GoodsInfoAdaptor goodsInfoAdaptor;
@Autowired
private CommissionSettleDetailApiService commissionSettleDetailApiService;
/**
* 查询商品佣金
* @param enterpriseId
* @param storeId
* @param clerkId
* @param goodsIds
* @return
*/
public Map<String, BigDecimal> calcGoodsCommission(String enterpriseId, String storeId, String clerkId, List<String> goodsIds) {
if (CollectionUtils.isEmpty(goodsIds)) {
return Collections.emptyMap();
}
if (StringUtils.isAnyBlank(storeId, clerkId, enterpriseId)) {
log.info("查询商品佣金异常 参数缺失 storeId:{} clerkID:{}", storeId, clerkId);
return Collections.emptyMap();
}
Map<String, BigDecimal> minPriceMap = goodsInfoAdaptor.queryGoodsMinPrice(enterpriseId, goodsIds);
if (MapUtils.isEmpty(minPriceMap)) {
log.info("计算商品佣金 参数异常");
return Collections.emptyMap();
}
List<CommissionSettleOrderItemQDTO> settleOrderItems = new ArrayList<>();
for (Map.Entry<String, BigDecimal> entry : minPriceMap.entrySet()) {
String goodsId = entry.getKey();
BigDecimal minPrice = entry.getValue();
CommissionSettleOrderItemQDTO commissionSettleOrderItemQDTO = new CommissionSettleOrderItemQDTO();
commissionSettleOrderItemQDTO.setGoodsId(goodsId);
commissionSettleOrderItemQDTO.setGoodsNum(1);
commissionSettleOrderItemQDTO.setGoodsPayAmount(minPrice.doubleValue());
settleOrderItems.add(commissionSettleOrderItemQDTO);
}
CommissionSettleOrderQDTO commissionSettleOrderQDTO = new CommissionSettleOrderQDTO();
commissionSettleOrderQDTO.setIsOrder(0);
commissionSettleOrderQDTO.setEnterpriseId(enterpriseId);
commissionSettleOrderQDTO.setOrderStoreId(storeId);
commissionSettleOrderQDTO.setOrderClerkId(clerkId);
commissionSettleOrderQDTO.setItems(settleOrderItems);
ServiceResponse<List<CommissionSettleDetailDTO>> serviceResponse = commissionSettleDetailApiService.calcDetailByOrder(commissionSettleOrderQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult())) {
log.info("计算商品佣金, 商品佣金为空 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyMap();
}
return serviceResponse.getResult()
.stream()
.collect(Collectors.toMap(CommissionSettleDetailDTO::getGoodsId, item -> {
Double commissionAmount = item.getCommissionAmount();
return Optional.ofNullable(commissionAmount).map(BigDecimal::new).orElse(BigDecimal.ZERO);
}, (v1, v2) -> v1));
}
}
......@@ -17,6 +17,7 @@ import com.gic.content.api.service.ContentMaterialApiService;
import com.gic.content.api.service.ContentMaterialShareApiService;
import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.web.controller.commission.CommissionManager;
import com.gic.haoban.manage.web.controller.content.adaptor.ClerkStoreAdaptor;
import com.gic.haoban.manage.web.controller.goods.GoodsInfoAdaptor;
import com.gic.haoban.manage.web.qo.content.ContentColumnClerkViewQO;
......@@ -36,10 +37,12 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -56,11 +59,12 @@ public class ContentMaterialController {
private ContentMaterialApiService contentMaterialApiService;
@Autowired
private ContentMaterialShareApiService contentMaterialShareApiService;
@Autowired
private ClerkStoreAdaptor clerkStoreAdaptor;
@Autowired
private GoodsInfoAdaptor goodsInfoAdaptor;
@Autowired
private CommissionManager commissionManager;
/**
......@@ -141,8 +145,16 @@ public class ContentMaterialController {
Page<ContentMaterialFrontDTO> responseResult = serviceResponse.getResult();
Page<ContentMaterialInfoVO> result = new Page<>();
result.setTotalCount(responseResult.getTotalCount());
List<String> goodsIds = responseResult.getResult()
.stream()
.filter(item -> CollectionUtils.isNotEmpty(item.getContentGoodsList()))
.map(item -> item.getContentGoodsList().get(0).getGoodsId())
.distinct()
.collect(Collectors.toList());
Map<String, BigDecimal> commissionMap = commissionManager.calcGoodsCommission(contentMaterialQO.getEnterpriseId(), contentMaterialQO.getStoreId(),
contentMaterialQO.getClerkId(), goodsIds);
List<ContentMaterialInfoVO> contentMaterialInfos = responseResult.getResult().stream()
.map(item -> getContentMaterialInfoVO(goodsShowStatus, item))
.map(item -> getContentMaterialInfoVO(goodsShowStatus, item, commissionMap))
.collect(Collectors.toList());
result.setResult(contentMaterialInfos);
result.setCurrentPage(contentMaterialQO.getPageNum());
......@@ -156,7 +168,7 @@ public class ContentMaterialController {
* @param item
* @return
*/
private ContentMaterialInfoVO getContentMaterialInfoVO(List<Integer> goodsShowStatus, ContentMaterialFrontDTO item) {
private ContentMaterialInfoVO getContentMaterialInfoVO(List<Integer> goodsShowStatus, ContentMaterialFrontDTO item, Map<String, BigDecimal> commissionMap) {
ContentMaterialInfoVO contentMaterialInfoVO = new ContentMaterialInfoVO();
BeanUtils.copyProperties(item, contentMaterialInfoVO);
if (CollectionUtils.isNotEmpty(item.getContentGoodsList())) {
......@@ -167,6 +179,8 @@ public class ContentMaterialController {
SimpleGoodsInfoVO simpleGoodsInfoVO = new SimpleGoodsInfoVO();
BeanUtils.copyProperties(temp, simpleGoodsInfoVO);
simpleGoodsInfoVO.setGoodsImg(temp.getGoodsImageUrl());
BigDecimal commission = commissionMap.get(temp.getGoodsId());
simpleGoodsInfoVO.setCommission(commission);
return simpleGoodsInfoVO;
}).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(goodsInfoVOS)) {
......
......@@ -8,6 +8,7 @@ import com.gic.haoban.app.aggregation.api.service.SettingApiService;
import com.gic.haoban.manage.web.qo.content.ContentMaterialQO;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.dto.qdto.GoodsListQDTO;
import com.gic.store.goods.service.GoodsCenterApiService;
import com.gic.store.goods.service.GoodsInfoOutApiService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -16,9 +17,11 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -37,6 +40,8 @@ public class GoodsInfoAdaptor {
private SettingApiService settingApiService;
@Autowired
private GoodsInfoOutApiService goodsInfoOutApiService;
@Autowired
private GoodsCenterApiService goodsCenterApiService;
public List<String> queryGoodsIdWithSearch(String enterpriseId, String search) {
// 根据关键字查询1000个商品
......@@ -101,4 +106,26 @@ public class GoodsInfoAdaptor {
}
return showStatus;
}
/**
* 查询商品最小价格
* @param enterpriseId
* @param goodsIds
* @return
*/
public Map<String, BigDecimal> queryGoodsMinPrice(String enterpriseId, List<String> goodsIds) {
if (org.springframework.util.CollectionUtils.isEmpty(goodsIds)) {
return Collections.emptyMap();
}
ServiceResponse<List<GoodsSpuInfoDTO>> serviceResponse = goodsCenterApiService.queryGoodsMinPrice(enterpriseId, goodsIds);
if (!serviceResponse.isSuccess() || com.alibaba.dubbo.common.utils.CollectionUtils.isEmpty(serviceResponse.getResult())) {
log.info("查询商品最小价格异常 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyMap();
}
return serviceResponse
.getResult()
.stream()
.collect(Collectors.toMap(GoodsSpuInfoDTO::getGoodsId, GoodsSpuInfoDTO::getMinPrice));
}
}
......@@ -143,5 +143,9 @@
<dubbo:reference interface="com.gic.haoban.task.manage.api.service.IMarketClueTaskApiService" id="iMarketClueTaskApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.task.api.service.TelTaskApiService" id="telTaskApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.store.goods.service.GoodsCenterApiService"
id="goodsCenterApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.commission.api.service.local.CommissionSettleDetailApiService"
id="commissionSettleDetailApiService" timeout="10000" retries="0" check="false" />
</beans>
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