Commit 3ceea4ee authored by shiyu's avatar shiyu

我推荐的列表详情

parent 478d5dbd
...@@ -91,6 +91,28 @@ public interface DistributionOrderDao { ...@@ -91,6 +91,28 @@ public interface DistributionOrderDao {
*/ */
Long countSelledNum(long itemId); Long countSelledNum(long itemId);
List<DistributionOrder> findByIntroducer(DistributionOrderRequestDto dto);
/**
* 该介绍人产生的订单数量
* @param introducerId
* @param sellerId
* @return
*/
Long countByIntroducer(long introducerId, long sellerId);
/**
* 该介绍人产生的订单总金额
* @param introducerId
* @param sellerId
* @return
*/
Long sumAmountByIntroducer(long introducerId, long sellerId);
/** /**
* 根据状态统计订单数量 * 根据状态统计订单数量
* @param buyerId * @param buyerId
......
...@@ -12,6 +12,7 @@ import com.xxdxxs.db.component.JdbcHelper; ...@@ -12,6 +12,7 @@ import com.xxdxxs.db.component.JdbcHelper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -122,6 +123,37 @@ public class DistributionOrderDaoImpl implements DistributionOrderDao { ...@@ -122,6 +123,37 @@ public class DistributionOrderDaoImpl implements DistributionOrderDao {
return distributionOrderMapper.countSelledNum(itemId); return distributionOrderMapper.countSelledNum(itemId);
} }
@Override
public List<DistributionOrder> findByIntroducer(DistributionOrderRequestDto dto) {
DistributionOrderExample example = new DistributionOrderExample();
DistributionOrderExample.Criteria criteria = example.createCriteria();
//藏品订单,分享id为介绍人自己的id
criteria.andShareRecordIdEqualTo(String.valueOf(dto.getShareRecordId()));
criteria.andSellerIdEqualTo(dto.getSellerId());
criteria.andStateNotIn(Arrays.asList(1, 101));
example.setOrderByClause("create_time desc");
PageHelper.startPage(dto.getPage(), dto.getLimit());
return distributionOrderMapper.selectByExample(example);
}
@Override
public Long countByIntroducer(long introducerId, long sellerId) {
DistributionOrderExample example = new DistributionOrderExample();
DistributionOrderExample.Criteria criteria = example.createCriteria();
//藏品订单,分享id为介绍人自己的id
criteria.andShareRecordIdEqualTo(String.valueOf(introducerId));
criteria.andSellerIdEqualTo(sellerId);
criteria.andStateNotIn(Arrays.asList(1, 101));
return distributionOrderMapper.countByExample(example);
}
@Override
public Long sumAmountByIntroducer(long introducerId, long sellerId) {
return distributionOrderMapper.sumAmountByIntroducer(introducerId, sellerId);
}
@Override @Override
public Long countByStateForBuyer(long buyerId, int state) { public Long countByStateForBuyer(long buyerId, int state) {
DistributionOrderExample example = new DistributionOrderExample(); DistributionOrderExample example = new DistributionOrderExample();
......
...@@ -75,6 +75,18 @@ public interface DistributionOrderMapper { ...@@ -75,6 +75,18 @@ public interface DistributionOrderMapper {
*/ */
List<DistributionOrderNum> countGroupByStateForDistributor(@Param("sellerId")Long distributorId); List<DistributionOrderNum> countGroupByStateForDistributor(@Param("sellerId")Long distributorId);
/**
* 介绍人产生的订单金额总和
* @param introducerId
* @param sellerId
* @return
*/
long sumAmountByIntroducer(@Param("introducerId")Long introducerId, @Param("sellerId")Long sellerId);
/** /**
* 统计用户各状态的订单数量 * 统计用户各状态的订单数量
* @param userId * @param userId
......
...@@ -641,4 +641,8 @@ ...@@ -641,4 +641,8 @@
<select id="countSelledNum" parameterType="java.lang.Long" resultType="java.lang.Long"> <select id="countSelledNum" parameterType="java.lang.Long" resultType="java.lang.Long">
select sum(item_num) as selledNum from distribution_order where item_id = #{itemId} and state not in (1, 101) select sum(item_num) as selledNum from distribution_order where item_id = #{itemId} and state not in (1, 101)
</select> </select>
<select id="sumAmountByIntroducer" parameterType="java.lang.Long" resultType="java.lang.Long">
select sum(amount) as amount from distribution_order where share_record_id = #{introducerId} and seller_id =#{sellerId} and state not in (1, 101)
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -102,4 +102,14 @@ public class FollowFansRecordVo implements Entity { ...@@ -102,4 +102,14 @@ public class FollowFansRecordVo implements Entity {
*/ */
private Long introduceNum; private Long introduceNum;
/**
* 介绍人产生的订单数量
*/
private Long orderNum;
/**
* 介绍获取的佣金
*/
private String introduceAmount;
} }
...@@ -165,5 +165,10 @@ public class DistributionOrderVo implements Entity { ...@@ -165,5 +165,10 @@ public class DistributionOrderVo implements Entity {
* 利润 * 利润
*/ */
private String profit; private String profit;
/**
* 介绍佣金
*/
private String introduceAmount;
} }
...@@ -9,6 +9,10 @@ import java.util.Map; ...@@ -9,6 +9,10 @@ import java.util.Map;
@Data @Data
public class DistributorShareRecordVo implements Entity { public class DistributorShareRecordVo implements Entity {
/**
*
*/
/** /**
* 分享记录id * 分享记录id
*/ */
......
...@@ -8,15 +8,23 @@ import com.wwdz.ch.core.consts.ResultCode; ...@@ -8,15 +8,23 @@ import com.wwdz.ch.core.consts.ResultCode;
import com.wwdz.ch.core.type.PageSearchResult; import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.CacheUtil; import com.wwdz.ch.core.util.CacheUtil;
import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.core.util.RedisUtils; import com.wwdz.ch.core.util.RedisUtils;
import com.wwdz.ch.core.util.StringUtil; import com.wwdz.ch.core.util.StringUtil;
import com.wwdz.ch.db.dao.FollowFansRecordDao; import com.wwdz.ch.db.dao.FollowFansRecordDao;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.FollowFansRecord; import com.wwdz.ch.db.domain.FollowFansRecord;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecord; import com.wwdz.ch.db.domain.distribution.DistributorShareRecord;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto; import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.wx.entity.MessageContentText; import com.wwdz.ch.wx.entity.MessageContentText;
import com.wwdz.ch.wx.entity.request.MessageRequestDto; import com.wwdz.ch.wx.entity.request.MessageRequestDto;
import com.wwdz.ch.wx.entity.vo.FollowFansRecordVo; import com.wwdz.ch.wx.entity.vo.FollowFansRecordVo;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderVo;
import com.wwdz.ch.wx.entity.vo.distribution.DistributorShareRecordVo;
import com.wwdz.ch.wx.service.FollowFansRecordService; import com.wwdz.ch.wx.service.FollowFansRecordService;
import com.wwdz.ch.wx.service.MessageService; import com.wwdz.ch.wx.service.MessageService;
import com.wwdz.mall.common.vo.response.CloudServerResponse; import com.wwdz.mall.common.vo.response.CloudServerResponse;
...@@ -54,8 +62,11 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService { ...@@ -54,8 +62,11 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
@Autowired @Autowired
RedisUtils redisUtils; RedisUtils redisUtils;
@Reference @Autowired
CommunityAttributeReadService communityAttributeReadService; DistributionOrderDao distributionOrderDao;
@Autowired
SupplierItemDao supplierItemDao;
@Override @Override
public Result follow(FollowFansRecordRequestDto dto) { public Result follow(FollowFansRecordRequestDto dto) {
...@@ -214,12 +225,12 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService { ...@@ -214,12 +225,12 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
List<FollowFansRecord> followRecordList = followFansRecordDao.findList(followFansRecordRequestDto); List<FollowFansRecord> followRecordList = followFansRecordDao.findList(followFansRecordRequestDto);
List<Long> followerIdList = followRecordList.stream().map(FollowFansRecord::getFollowerId).collect(Collectors.toList()); List<Long> followerIdList = followRecordList.stream().map(FollowFansRecord::getFollowerId).collect(Collectors.toList());
followFansRecordList.forEach(f -> { for (FollowFansRecord f : followFansRecordList) {
FollowFansRecordVo followFansRecordVo = new FollowFansRecordVo(); FollowFansRecordVo followFansRecordVo = new FollowFansRecordVo();
EntityMapper.copyAttribute(f, followFansRecordVo); EntityMapper.copyAttribute(f, followFansRecordVo);
followFansRecordVo.setFansName(cacheUtil.getAppletUserNameById(f.getFansId())); followFansRecordVo.setFansName(cacheUtil.appletUserInfoCache.get(f.getFansId()).get().getNickname());
followFansRecordVo.setFansIcon(cacheUtil.getAppletUserById(f.getFansId()).getAvatar()); followFansRecordVo.setFansIcon(cacheUtil.appletUserInfoCache.get(f.getFansId()).get().getAvatar());
followFansRecordVo.setIntroducerName(cacheUtil.getAppletUserById(f.getIntroducerId()).getNickname()); followFansRecordVo.setIntroducerName(cacheUtil.appletUserInfoCache.get(f.getIntroducerId()).get().getNickname());
/* try { /* try {
CloudServerResponse<CommunityUserAttributeDO> response = communityAttributeReadService.getCommunityUserAttributeByUserId(f.getFansId()); CloudServerResponse<CommunityUserAttributeDO> response = communityAttributeReadService.getCommunityUserAttributeByUserId(f.getFansId());
if (response.isSuccess()) { if (response.isSuccess()) {
...@@ -236,7 +247,7 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService { ...@@ -236,7 +247,7 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
followFansRecordVo.setRelationCode(FollowFansEnum.RelationEnum.BACK_FOLLOWED.getCode()); followFansRecordVo.setRelationCode(FollowFansEnum.RelationEnum.BACK_FOLLOWED.getCode());
} }
followFansRecordVos.add(followFansRecordVo); followFansRecordVos.add(followFansRecordVo);
}); }
List<FollowFansRecordVo> followFansRecordVoList = getCurrentFollowRelation(dto, followFansRecordVos, "fans"); List<FollowFansRecordVo> followFansRecordVoList = getCurrentFollowRelation(dto, followFansRecordVos, "fans");
return Result.success(PageSearchResult.of(pageInfo, followFansRecordVoList)); return Result.success(PageSearchResult.of(pageInfo, followFansRecordVoList));
} catch (Exception e) { } catch (Exception e) {
...@@ -327,7 +338,9 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService { ...@@ -327,7 +338,9 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
List<FollowFansRecord> followFansRecordList = followFansRecordDao.findListGroupByFollowerId(dto); List<FollowFansRecord> followFansRecordList = followFansRecordDao.findListGroupByFollowerId(dto);
PageInfo<FollowFansRecord> pageInfo = new PageInfo<>(followFansRecordList); PageInfo<FollowFansRecord> pageInfo = new PageInfo<>(followFansRecordList);
List<FollowFansRecord> list = followFansRecordList.stream().filter(StringUtil.distinctByKey(FollowFansRecord::getFollowerId)).collect(Collectors.toList()); List<FollowFansRecord> list = followFansRecordList.stream().filter(StringUtil.distinctByKey(FollowFansRecord::getFollowerId)).collect(Collectors.toList());
list.forEach(f -> { long totolOrderNum = 0;
double totalIntroduceAmount = 0;
for (FollowFansRecord f : list) {
FollowFansRecordVo followFansRecordVo = new FollowFansRecordVo(); FollowFansRecordVo followFansRecordVo = new FollowFansRecordVo();
followFansRecordVo.setCollectorId(f.getFollowerId()); followFansRecordVo.setCollectorId(f.getFollowerId());
followFansRecordVo.setCollectorName(cacheUtil.getAppletUserById(f.getFollowerId()).getNickname()); followFansRecordVo.setCollectorName(cacheUtil.getAppletUserById(f.getFollowerId()).getNickname());
...@@ -335,8 +348,21 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService { ...@@ -335,8 +348,21 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
followFansRecordVo.setIntroducerName(cacheUtil.getAppletUserById(f.getIntroducerId()).getNickname()); followFansRecordVo.setIntroducerName(cacheUtil.getAppletUserById(f.getIntroducerId()).getNickname());
long num = followFansRecordDao.countFansByIntroducerId(f.getIntroducerId(), f.getFollowerId()); long num = followFansRecordDao.countFansByIntroducerId(f.getIntroducerId(), f.getFollowerId());
followFansRecordVo.setIntroduceNum(num); followFansRecordVo.setIntroduceNum(num);
//我介绍的人创建的订单数
long orderNum = distributionOrderDao.countByIntroducer(f.getIntroducerId(), f.getFollowerId());
totolOrderNum = totolOrderNum + orderNum;
followFansRecordVo.setOrderNum(orderNum);
//获得的佣金
Long totalOrderAmount = distributionOrderDao.sumAmountByIntroducer(f.getIntroducerId(), f.getFollowerId());
double introduceCost = totalOrderAmount.doubleValue() * 0.03;
totalIntroduceAmount = totalIntroduceAmount + introduceCost;
followFansRecordVo.setIntroduceAmount(PriceUtil.convertDoubleToString(introduceCost));
followFansRecordVos.add(followFansRecordVo); followFansRecordVos.add(followFansRecordVo);
}); }
Map<String, Object> map = new HashMap<>();
map.put("list", PageSearchResult.of(pageInfo, followFansRecordVos));
map.put("totolOrderNum", totolOrderNum);
map.put("totalIntroduceAmount", PriceUtil.convertDoubleToString(totalIntroduceAmount));
return Result.success(PageSearchResult.of(pageInfo, followFansRecordVos)); return Result.success(PageSearchResult.of(pageInfo, followFansRecordVos));
} catch (Exception e) { } catch (Exception e) {
logger.error("{} 查询我推荐的列表 {}", dto.getId(), e); logger.error("{} 查询我推荐的列表 {}", dto.getId(), e);
...@@ -367,4 +393,49 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService { ...@@ -367,4 +393,49 @@ public class FollowFansRecordServiceImpl implements FollowFansRecordService {
} }
return Result.failed(); return Result.failed();
} }
@Override
public Result introduceAmountDetail(FollowFansRecordRequestDto dto) {
try {
DistributionOrderRequestDto distributionOrderRequestDto = new DistributionOrderRequestDto();
distributionOrderRequestDto.setShareRecordId(String.valueOf(dto.getIntroducerId()));
distributionOrderRequestDto.setSellerId(dto.getFollowerId());
List<DistributionOrder> distributionOrderList = distributionOrderDao.findByIntroducer(distributionOrderRequestDto);
PageInfo<DistributionOrder> pageInfo = new PageInfo<>(distributionOrderList);
List<DistributionOrderVo> distributionOrderVoList = new ArrayList<>();
for (DistributionOrder distributionOrder : distributionOrderList) {
DistributionOrderVo distributionOrderVo = new DistributionOrderVo();
EntityMapper.copyAttribute(distributionOrder, distributionOrderVo);
double introduceCost = distributionOrder.getAmount().doubleValue() * 0.03;
distributionOrderVo.setIntroduceAmount(PriceUtil.convertDoubleToString(introduceCost));
distributionOrderVoList.add(distributionOrderVo);
}
return Result.success(PageSearchResult.of(pageInfo, distributionOrderVoList));
} catch (Exception e) {
logger.error("{} 查询分佣订单列表 {}", dto.getId(), e);
}
return Result.failed();
}
@Override
public Result introduceOrderDetail(DistributionOrderRequestDto dto) {
try {
DistributionOrder distributionOrder = distributionOrderDao.findById(dto.getDistributionOrderId());
DistributionOrderVo distributionOrderVo = new DistributionOrderVo();
EntityMapper.copyAttribute(distributionOrder, distributionOrderVo);
double introduceCost = distributionOrder.getAmount().doubleValue() * 0.03;
distributionOrderVo.setIntroduceAmount(PriceUtil.convertDoubleToString(introduceCost));
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
distributionOrderVo.setItemName(supplierItem.getName());
distributionOrderVo.setBuyerName(cacheUtil.appletUserInfoCache.get(distributionOrder.getBuyerId()).get().getNickname());
distributionOrderVo.setSellerName(cacheUtil.appletUserInfoCache.get(distributionOrder.getSellerId()).get().getNickname());
distributionOrderVo.setAmount(PriceUtil.convertPriceFenToYuan(distributionOrder.getAmount()));
return Result.success(distributionOrderVo);
} catch (Exception e) {
logger.error("{} 查询分佣订单明细 {}", dto.getDistributionOrderId(), e);
}
return Result.failed();
}
} }
...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.service; ...@@ -2,6 +2,7 @@ package com.wwdz.ch.wx.service;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto; import com.wwdz.ch.db.dto.request.FollowFansRecordRequestDto;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
public interface FollowFansRecordService { public interface FollowFansRecordService {
...@@ -74,4 +75,19 @@ public interface FollowFansRecordService { ...@@ -74,4 +75,19 @@ public interface FollowFansRecordService {
* @return * @return
*/ */
Result findRecommendDetail(FollowFansRecordRequestDto dto); Result findRecommendDetail(FollowFansRecordRequestDto dto);
/**
* 查询分佣明细(介绍人产生的订单列表)
* @param dto
* @return
*/
Result introduceAmountDetail(FollowFansRecordRequestDto dto);
/**
* 查询分佣订单明细
* @param dto
* @return
*/
Result introduceOrderDetail(DistributionOrderRequestDto 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