Commit ef31d8fa authored by hanfeng's avatar hanfeng

修改订单统计

parent f48105ee
package com.xxfc.platform.order.entity;
import com.xxfc.platform.order.pojo.Member;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @author Administrator
*/
@Data
public class MembersOrder {
private String oneDay;
/**
* 时间段按日(yyyy-MM-dd)/周(yyyy-ww) /月(yyyy-MM)
*/
private String period;
private BigDecimal amount;
List<Member> members;
private Integer number;
private Integer level;
}
......@@ -2,6 +2,8 @@ package com.xxfc.platform.order.pojo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 每日、每周或每月不同会员的总数据
* @author Administrator
......@@ -11,17 +13,21 @@ public class Member {
/**
* 金额
*/
private Integer amount;
private BigDecimal amount;
/**
* 会员等级
*/
private Integer level;
/**
* 购买次数
*/
private Integer number;
/**
* 会员名
*/
private String memberName;
}
......@@ -3,13 +3,16 @@ package com.xxfc.platform.order.biz;
import cn.hutool.core.collection.CollectionUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.google.common.collect.Maps;
import com.google.common.collect.Ordering;
import com.xxfc.platform.order.contant.enumerate.OrderInquiryType;
import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.mapper.OrderStatisticsMapper;
import com.xxfc.platform.order.pojo.HomePageOrderData;
import com.xxfc.platform.order.pojo.Member;
import com.xxfc.platform.order.pojo.MembersOrderDto;
import com.xxfc.platform.order.pojo.OrderQuery;
import org.assertj.core.util.Lists;
......@@ -84,10 +87,50 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
public List<MembersOrderDto> getMemberOrderStatistics(List<BaseUserMemberLevel> memberLevels, OrderQuery query) {
List<MembersOrder> membersOrderList = membersBiz.getMemberOrderStatistics(query);
//按每天分类
if (CollectionUtil.isEmpty(membersOrderList)) {
return Lists.newArrayList();
}
//按每天分类
if (CollectionUtil.isEmpty(memberLevels)) {
throw new BaseException("获取不到会员信息");
}
//获取会员等级对应的名称
HashMap<Integer, String> map = Maps.newHashMap();
for (BaseUserMemberLevel memberLevel : memberLevels) {
map.put(memberLevel.getLevel(),memberLevel.getName());
}
//按查询条件获取统计信息
if (OrderInquiryType.DAY.getCode().equals(query.getType())) {
ArrayList<MembersOrderDto> arrayList = Lists.newArrayList();
for (MembersOrder mb : membersOrderList) {
MembersOrderDto mbdto = new MembersOrderDto();
mbdto.setTimeSlot(mb.getPeriod());
BigDecimal totalPayment = mbdto.getTotalPayment();
List<Member> members = mb.getMembers();
if (CollectionUtil.isNotEmpty(members)) {
mbdto.setMembers(members);
for (Member member : members) {
member.setMemberName(map.get(member.getLevel()));
totalPayment=totalPayment.add(member.getAmount());
}
}
}
return arrayList;
}
if (OrderInquiryType.WEEK.getCode().equals(query.getType())){
ArrayList<MembersOrderDto> arrayList = Lists.newArrayList();
for (int i = 0; i < membersOrderList.size(); i++) {
}
}
return null;
}
}
......@@ -40,12 +40,18 @@
<!-- </select>-->
<select id="getMemberOrderStatistics" parameterType="com.xxfc.platform.order.pojo.OrderQuery"
resultType="com.xxfc.platform.order.entity.MembersOrder">
resultMap="order">
SELECT
date( FROM_UNIXTIME( a.crt_time / 1000 ) ) AS oneDay,
<if test="type==2">
DATE_FORMAT(date( FROM_UNIXTIME( a.crt_time / 1000 ) ),'%Y-%m') AS period,
</if>
<if test="type==3">
DATE_FORMAT(date( FROM_UNIXTIME( a.crt_time / 1000 ) ),'%Y-%v') AS period,
</if>
date( FROM_UNIXTIME( a.crt_time / 1000 ) ) AS period,
count( a.id ) AS number,
SUM( a.account_amount ) AS amount,
d.member_level AS LEVEL
d.member_level AS level
FROM
order_account a
LEFT JOIN base_order b ON a.order_id = b.id
......@@ -61,7 +67,22 @@
AND a.crt_time &lt;= #{endTime}
</if>
GROUP BY
<if test="type==2">
DATE_FORMAT(date( FROM_UNIXTIME( a.crt_time / 1000 ) ),'%Y-%m'),
</if>
<if test="type==3">
DATE_FORMAT(date( FROM_UNIXTIME( a.crt_time / 1000 ) ),'%Y-%v'),
</if>
date( FROM_UNIXTIME( a.crt_time / 1000 ) ),
d.member_level
</select>
<resultMap id="order" type="com.xxfc.platform.order.entity.MembersOrder">
<result column="period" property="period"></result>
<collection property="members" ofType="com.xxfc.platform.order.pojo.Member">
<result column="number" property="level"></result>
<result column="amount" property="level"></result>
<result column="level" property="level"></result>
</collection>
</resultMap>
</mapper>
\ No newline at end of file
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