Commit 1460ccb6 authored by shiyu's avatar shiyu

用户主页商品列表

parent 1a32ae99
......@@ -42,6 +42,13 @@ public interface DistributionOrderDao {
List<DistributionOrder> findByBuyerId(long buyerId);
/**
* 根据买家id查询最近一次购买记录
* @param buyerId
* @return
*/
DistributionOrder findLastedByBuyerId(long buyerId);
/**
* 根据买家id查询对于这个商品的历史有效购买记录,排除已取消的订单
* @param buyerId
......
......@@ -2,6 +2,7 @@ package com.wwdz.ch.db.dao.distribution;
import com.wwdz.ch.db.domain.ConsignSaleRecord;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecord;
import com.wwdz.ch.db.dto.request.distribution.DistributorShareRecordRequestDto;
import java.util.List;
......@@ -23,4 +24,12 @@ public interface DistributorShareRecordDao {
*/
DistributorShareRecord findById(String shareId);
/**
* 查询最高价格的分享记录
* @param dto
* @return
*/
List<DistributorShareRecord> findMaxPriceRecord(DistributorShareRecordRequestDto dto);
}
......@@ -4,6 +4,8 @@ import com.wwdz.ch.db.dto.request.BaseRequestDto;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.List;
/**
* 供应商商品请求参数类
*/
......@@ -15,6 +17,12 @@ public class SupplierItemRequestDto extends BaseRequestDto implements Entity {
*/
private Long id;
private List<Long> ids;
/**
* 用户id
*/
private Long userId;
/**
* 供应商id
......
......@@ -51,6 +51,14 @@ public class DistributionOrderDaoImpl implements DistributionOrderDao {
return distributionOrderMapper.selectByExample(example);
}
@Override
public DistributionOrder findLastedByBuyerId(long buyerId) {
DistributionOrderExample example = new DistributionOrderExample();
DistributionOrderExample.Criteria criteria = example.createCriteria();
criteria.andBuyerIdEqualTo(buyerId);
example.setOrderByClause("pay_time desc");
return distributionOrderMapper.selectOneByExample(example);
}
@Override
public List<DistributionOrder> findValidOrderOfItemIdByBuyerId(long buyerId, long itemId) {
......
......@@ -3,10 +3,12 @@ package com.wwdz.ch.db.impl.distribution;
import com.wwdz.ch.db.dao.distribution.DistributorShareRecordDao;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecord;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecordExample;
import com.wwdz.ch.db.dto.request.distribution.DistributorShareRecordRequestDto;
import com.wwdz.ch.db.mapper.distribution.DistributorShareRecordMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository
public class DistributorShareRecordDaoImpl implements DistributorShareRecordDao {
......@@ -26,4 +28,10 @@ public class DistributorShareRecordDaoImpl implements DistributorShareRecordDao
criteria.andShareIdEqualTo(shareId);
return distributorShareRecordMapper.selectOneByExample(distributorShareRecordExample);
}
@Override
public List<DistributorShareRecord> findMaxPriceRecord(DistributorShareRecordRequestDto dto) {
List<DistributorShareRecord> distributorShareRecords = distributorShareRecordMapper.findMaxPriceRecord(dto.getDistributorId());
return distributorShareRecords;
}
}
......@@ -26,6 +26,7 @@ public class SupplierItemDaoImpl implements SupplierItemDao {
SupplierItemExample supplierItemExample = new SupplierItemExample();
SupplierItemExample.Criteria criteria = supplierItemExample.createCriteria();
JdbcHelper.ifPresent(dto.getId(), criteria::andIdEqualTo);
JdbcHelper.ifPresent(dto.getIds(), criteria::andIdIn);
if (StringUtils.hasLength(dto.getName())) {
criteria.andNameLike("%" + dto.getName() + "%");
}
......
......@@ -66,4 +66,11 @@ public interface DistributorShareRecordMapper {
int updateByPrimaryKeySelective(DistributorShareRecord record);
int updateByPrimaryKey(DistributorShareRecord record);
/**
* 查询价格最高的商品分销记录
* @param distributorId
* @return
*/
List<DistributorShareRecord> findMaxPriceRecord(@Param("distributorId") long distributorId);
}
\ No newline at end of file
......@@ -351,4 +351,14 @@
limit 1
</select>
<select id="findMaxPriceRecord" parameterType="java.lang.Long" resultMap="BaseResultMap">
SELECT o.*
FROM distributor_share_record o
JOIN
(SELECT item_id, MAX(price) as max_amount
FROM distributor_share_record
GROUP BY item_id) t
ON o.item_id = t.item_id AND price = t.max_amount;
</select>
</mapper>
\ No newline at end of file
......@@ -94,4 +94,10 @@ public class SupplierItemVo implements Entity {
* 用于列表展示的图片对象
*/
private Map<String, Object> homePageImage;
/**
* 对于用户来说
* 最近一次购买的商品所属分享商的分享id
*/
private String shareId;
}
......@@ -5,10 +5,14 @@ import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.DistributorShareRecordDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.AiAssistant;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecord;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.distribution.DistributorShareRecordRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.entity.vo.distribution.SupplierItemVo;
import com.wwdz.ch.wx.service.distribution.SupplierItemService;
......@@ -26,6 +30,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
public class SupplierItemServiceImpl implements SupplierItemService {
......@@ -38,6 +44,9 @@ public class SupplierItemServiceImpl implements SupplierItemService {
@Autowired
DistributorShareRecordDao distributorShareRecordDao;
@Autowired
DistributionOrderDao distributionOrderDao;
@Autowired
RedissonClient redissonClient;
......@@ -117,4 +126,44 @@ public class SupplierItemServiceImpl implements SupplierItemService {
}
return Result.failed("扣减库存失败");
}
@Override
public Result findItemsOfCurrentDistributor(SupplierItemRequestDto dto) {
try {
//当前用户
long userId = dto.getUserId();
//查询当前用户最近一次的购买记录
DistributionOrder distributionOrder = distributionOrderDao.findLastedByBuyerId(userId);
if (distributionOrder == null || distributionOrder.getSellerId() == null) {
return Result.success();
}
long sellerId = distributionOrder.getSellerId();
DistributorShareRecordRequestDto distributorShareRecordRequestDto = new DistributorShareRecordRequestDto();
distributorShareRecordRequestDto.setDistributorId(sellerId);
List<DistributorShareRecord> distributorShareRecordList = distributorShareRecordDao.findMaxPriceRecord(distributorShareRecordRequestDto);
Map<Long, DistributorShareRecord> map = distributorShareRecordList.stream().collect(Collectors.toMap(DistributorShareRecord::getItemId, Function.identity(), (k1, k2) -> k1));
List<Long> itemIds = distributorShareRecordList.stream().map(DistributorShareRecord::getItemId).collect(Collectors.toList());
SupplierItemRequestDto searchDto = new SupplierItemRequestDto();
searchDto.setIsOnSale(true);
searchDto.setIsDeleted(false);
searchDto.setIds(itemIds);
dto.setStock(0);//库存大于0
List<SupplierItem> supplierItemList = supplierItemDao.findList(dto);
PageInfo<SupplierItem> pageInfo = new PageInfo(supplierItemList);
List<SupplierItemVo> supplierItemVos = new ArrayList<>();
supplierItemList.forEach(supplierItem -> {
SupplierItemVo supplierItemVo = new SupplierItemVo();
EntityMapper.copyAttribute(supplierItem, supplierItemVo);
supplierItemVo.setSalePrice(PriceUtil.convertPriceFenToYuan(map.get(supplierItem.getId()).getPrice()));
supplierItemVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
supplierItemVo.setShareId(map.get(supplierItem.getId()).getShareId());
supplierItemVos.add(supplierItemVo);
});
return Result.success(PageSearchResult.of(pageInfo, supplierItemVos));
} catch (Exception e) {
logger.error("查询最近订单所属分销商的商品列表 error : {}", e);
}
return Result.failed();
}
}
......@@ -20,6 +20,13 @@ public interface SupplierItemService {
*/
Result findDetail(SupplierItemRequestDto dto);
/**
* 查询用户最近一次购买记录所属分销商的分享商品列表
* @param dto
* @return
*/
Result findItemsOfCurrentDistributor(SupplierItemRequestDto dto);
/**
* 扣减商品库存
......
......@@ -40,4 +40,18 @@ public class SupplierItemController {
}
/**
* 查询用户最近一次购买的商品所属分销商历史分享的商品列表
* @param dto
* @return
*/
@PostMapping("/findItemsOfCurrentDistributor")
public Result findItemsOfCurrentDistributor(@RequestBody SupplierItemRequestDto dto) {
logger.info("查询分销商历史分享的商品列表,请求参数:{}", JSON.toJSONString(dto));
if (dto.getUserId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return supplierItemService.findItemsOfCurrentDistributor(dto);
}
}
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