Commit f73a0437 authored by libin's avatar libin

会员订单列表

parent fc741fff
......@@ -411,12 +411,16 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
if (isNoNullLeaderPhone) {
List<AppUserLogin> appUserLogins = mapper.selectbyPhones(Arrays.asList(leaderPhone));
Integer leaderId = null;
if (CollectionUtils.isNotEmpty(appUserLogins)) {
leaderId = appUserLogins.get(0).getId();
if (CollectionUtils.isEmpty(appUserLogins)) {
return Collections.EMPTY_LIST;
}
leaderId = appUserLogins.get(0).getId();
//2.根据leader userId查询下级 userid
if (Objects.nonNull(leaderId)) {
List<AppUserRelation> appUserRelationList = appUserRelationBiz.findMemberPageByLeaderId(leaderId);
if(CollectionUtils.isEmpty(appUserRelationList)){
return Collections.EMPTY_LIST;
}
memberIds = appUserRelationList.stream().map(AppUserRelation::getUserId).collect(Collectors.toList());
}
}
......
......@@ -44,5 +44,6 @@ public class MemberOrderBo {
private BigDecimal realAmount;
private Long payTime;
private Integer hasPay;
private String desc;
}
......@@ -37,4 +37,5 @@ public class MemberOrderFindDTO extends PageParam {
private Boolean isExport;
private List<Integer> userIds;
private Boolean isPay;
private String levelName;
}
......@@ -223,15 +223,14 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
String[] header2 = new String[]{"会员订单总数(单)","会员订单总额(元)","钻石会员订单(单)","钻石会员订单总额(元)","黄金会员订单(单)","黄金会员订单总额(元)","普通会员订单(单)","普通会员订单总额(元)"};
createHeader(row2,1,header2,cellStyleHeader01);
String[] countData = getData(memberOrderStatisticsBo);
createCellCount(row2,1,countData,cellStyleHeader01);
Row row4 = sheet.createRow(2);
createCellCount(row4,1,countData,cellStyleHeader01);
Row row3 = sheet.createRow(4);
Row row5 = sheet.createRow(4);
String[] header3 = new String[]{"订单号","创建时间","订单状态","名称","用户姓名","手机号","上级姓名/手机号","促成人姓名/手机号","订单价格(元)","优惠金额(元)","实付金额(元)","支付时间"};
CellRangeAddress cellRangeAddress3 = new CellRangeAddress(3,3,0,header3.length);
sheet.addMergedRegion(cellRangeAddress3);
createHeader(row3,0,header3,cellStyleHeader01);
createHeader(row5,0,header3,cellStyleHeader01);
workbook.write(fileOutputStream);
fileOutputStream.close();
......@@ -274,6 +273,8 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
pageDataVO.setPageSize(memberOrderFindDTO.getLimit());
pageDataVO.setData(Collections.EMPTY_LIST);
String name = memberOrderFindDTO.getLevel()==null?"":memberOrderFindDTO.getLevel()==1?"普通":memberOrderFindDTO.getLevel()==2?"黄金":memberOrderFindDTO.getLevel()==3?"钻石":null;
memberOrderFindDTO.setLevelName(name);
boolean isNoNullUserName = StringUtils.isNotEmpty(memberOrderFindDTO.getName()) && memberOrderFindDTO.getName().trim().length() > 0;
boolean isNoNullPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getPhone()) && memberOrderFindDTO.getPhone().trim().length() > 0;
boolean isNoNullLeaderPhone = StringUtils.isNotEmpty(memberOrderFindDTO.getLeaderPhone()) && memberOrderFindDTO.getLeaderPhone().trim().length() > 0;
......@@ -289,11 +290,6 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
memberOrderFindDTO.setUserIds(userIds);
memberOrderFindDTO.setIsPay(true);
List<MemberOrderBo> baseOrders = baseOrderBiz.findMemberOrders(memberOrderFindDTO);
/* if (CollectionUtils.isEmpty(baseOrders)){
memberOrderPageVo.setMemberOrderStatisticsBo(memberOrderStatisticsBo);
memberOrderPageVo.setMemberOrderPage(pageDataVO);
return memberOrderPageVo;
}*/
memberOrderStatisticsBo = getMemberOrderStatisticsBo(baseOrders);
}
memberOrderFindDTO.setIsPay(false);
......@@ -346,52 +342,57 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
private MemberOrderStatisticsBo getMemberOrderStatisticsBo(List<MemberOrderBo> baseOrders){
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo();
Map<BigDecimal, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().filter(x->x.getHasPay()==1).collect(Collectors.groupingBy(MemberOrderBo::getOrderAmount, Collectors.toList()));
baseOrders.stream().peek(x->{
if(x.getName().contains("黄金")){
x.setDesc("黄金");
}
if (x.getName().contains("钻石")){
x.setDesc("钻石");
}
if (x.getName().contains("普通")){
x.setDesc("普通");
}
}).count();
Map<String, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getDesc, Collectors.toList()));
Map<String, List<MemberOrderBo>> baseOrderHasPayMap = baseOrders.stream().filter(x->x.getHasPay()==1).collect(Collectors.groupingBy(MemberOrderBo::getDesc, Collectors.toList()));
memberOrderStatisticsBo.setOrderNum(baseOrders.size());
BigDecimal totalAmount = baseOrders.stream().filter(x->x.getHasPay()==1).map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalAmount(totalAmount);
List<MemberOrderBo> diamondOrders = baseOrderMap.get(levelEnum.DIAMOND.getPrice());
diamondOrders = diamondOrders ==null?Collections.EMPTY_LIST:diamondOrders;
memberOrderStatisticsBo.setDiamondOrderNum(diamondOrders.size());
BigDecimal diamondAmount = diamondOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
List<MemberOrderBo> diamondOrders = baseOrderMap.get(levelEnum.DIAMOND.getDesc());
memberOrderStatisticsBo.setDiamondOrderNum(diamondOrders==null?0:diamondOrders.size());
List<MemberOrderBo> diamondHashPayOrders = baseOrderHasPayMap.get(levelEnum.DIAMOND.getDesc());
diamondHashPayOrders = diamondHashPayOrders==null?Collections.EMPTY_LIST:diamondHashPayOrders;
BigDecimal diamondAmount = diamondHashPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
memberOrderStatisticsBo.setTotalDiamondAmount(diamondAmount);
List<MemberOrderBo> goldOrders = baseOrderMap.get(levelEnum.GOLD.getPrice());
goldOrders = goldOrders==null?Collections.EMPTY_LIST:goldOrders;
memberOrderStatisticsBo.setGoldOrderNum(goldOrders.size());
BigDecimal goldAmount = goldOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
List<MemberOrderBo> goldOrders = baseOrderMap.get(levelEnum.GOLD.getDesc());
memberOrderStatisticsBo.setGoldOrderNum(goldOrders==null?0:goldOrders.size());
List<MemberOrderBo> goldHasPayOrders = baseOrderHasPayMap.get(levelEnum.GOLD.getDesc());
goldHasPayOrders = goldHasPayOrders==null?Collections.EMPTY_LIST:goldHasPayOrders;
BigDecimal goldAmount = goldHasPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGoldAmount(goldAmount);
List<MemberOrderBo> generalOrders = baseOrderMap.get(levelEnum.GENERAL.getPrice());
generalOrders = generalOrders==null?Collections.EMPTY_LIST:generalOrders;
memberOrderStatisticsBo.setGeneralOrderNum(generalOrders.size());
BigDecimal generalAmount = generalOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
List<MemberOrderBo> generalOrders = baseOrderMap.get(levelEnum.GENERAL.getDesc());
memberOrderStatisticsBo.setGeneralOrderNum(generalOrders==null?0:generalOrders.size());
List<MemberOrderBo> generalHasPayOrders = baseOrderMap.get(levelEnum.GENERAL.getDesc());
generalHasPayOrders = generalHasPayOrders==null?Collections.EMPTY_LIST:generalHasPayOrders;
BigDecimal generalAmount = generalHasPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGeneralAmount(generalAmount);
return memberOrderStatisticsBo;
}
private enum levelEnum{
DIAMOND(new BigDecimal("0.20"),"钻石会员"),
GOLD(new BigDecimal("0.10"),"黄金会员"),
GENERAL(new BigDecimal("0.05"),"普通会员");
DIAMOND("钻石"),
GOLD("黄金"),
GENERAL("普通");
levelEnum(BigDecimal price, String desc) {
this.price = price;
levelEnum(String desc) {
this.desc = desc;
}
private BigDecimal price;
private String desc;
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public String getDesc() {
return desc;
}
......
......@@ -311,9 +311,6 @@
<if test="state!=null">
and `status`=#{state}
</if>
<if test="level !=null">
and `member_level`=#{level}
</if>
<if test="facilitatePhone!=null and facilitatePhone!=''">
and `facilitate_phone`=#{facilitatePhone}
</if>
......@@ -327,7 +324,7 @@
and `crt_time` <![CDATA[<=#{endOrderTime}]]>
</if>
<if test="startPayTime!=null and endPayTime!=null">
and `pay_time` between #{startPayTime} and #{startPayTime}
and `pay_time` between #{startPayTime} and #{endPayTime}
</if>
<if test="startPayTime!=null and endPayTime==null">
and `pay_time` <![CDATA[>=#{startPayTime}]]>
......@@ -335,6 +332,9 @@
<if test="endPayTime!=null and startPayTime==null">
and `pay_time` <![CDATA[<=#{endPayTime}]]>
</if>
<if test="levelName!=null and levelName!=''">
and `name` like CONCAT('%',#{levelName},'%')
</if>
<if test="userIds!=null and userIds.size()>0">
and `user_id` IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
......
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