Commit ef31d8fa authored by hanfeng's avatar hanfeng

修改订单统计

parent f48105ee
package com.xxfc.platform.order.entity; package com.xxfc.platform.order.entity;
import com.xxfc.platform.order.pojo.Member;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/**
* @author Administrator
*/
@Data @Data
public class MembersOrder { 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; ...@@ -2,6 +2,8 @@ package com.xxfc.platform.order.pojo;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
/** /**
* 每日、每周或每月不同会员的总数据 * 每日、每周或每月不同会员的总数据
* @author Administrator * @author Administrator
...@@ -11,17 +13,21 @@ public class Member { ...@@ -11,17 +13,21 @@ public class Member {
/** /**
* 金额 * 金额
*/ */
private Integer amount; private BigDecimal amount;
/** /**
* 会员等级 * 会员等级
*/ */
private Integer level; private Integer level;
/**
* 购买次数
*/
private Integer number;
/** /**
* 会员名 * 会员名
*/ */
private String memberName; private String memberName;
} }
...@@ -3,13 +3,16 @@ package com.xxfc.platform.order.biz; ...@@ -3,13 +3,16 @@ package com.xxfc.platform.order.biz;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.common.biz.BaseBiz; 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.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.google.common.collect.Maps;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import com.xxfc.platform.order.contant.enumerate.OrderInquiryType; import com.xxfc.platform.order.contant.enumerate.OrderInquiryType;
import com.xxfc.platform.order.entity.MembersOrder; import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderStatistics; import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.mapper.OrderStatisticsMapper; import com.xxfc.platform.order.mapper.OrderStatisticsMapper;
import com.xxfc.platform.order.pojo.HomePageOrderData; 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.MembersOrderDto;
import com.xxfc.platform.order.pojo.OrderQuery; import com.xxfc.platform.order.pojo.OrderQuery;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
...@@ -84,10 +87,50 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat ...@@ -84,10 +87,50 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
public List<MembersOrderDto> getMemberOrderStatistics(List<BaseUserMemberLevel> memberLevels, OrderQuery query) { public List<MembersOrderDto> getMemberOrderStatistics(List<BaseUserMemberLevel> memberLevels, OrderQuery query) {
List<MembersOrder> membersOrderList = membersBiz.getMemberOrderStatistics(query); List<MembersOrder> membersOrderList = membersBiz.getMemberOrderStatistics(query);
//按每天分类 //按每天分类
if (CollectionUtil.isEmpty(membersOrderList)) { if (CollectionUtil.isEmpty(membersOrderList)) {
return Lists.newArrayList(); 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 @@ ...@@ -40,12 +40,18 @@
<!-- </select>--> <!-- </select>-->
<select id="getMemberOrderStatistics" parameterType="com.xxfc.platform.order.pojo.OrderQuery" <select id="getMemberOrderStatistics" parameterType="com.xxfc.platform.order.pojo.OrderQuery"
resultType="com.xxfc.platform.order.entity.MembersOrder"> resultMap="order">
SELECT 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, count( a.id ) AS number,
SUM( a.account_amount ) AS amount, SUM( a.account_amount ) AS amount,
d.member_level AS LEVEL d.member_level AS level
FROM FROM
order_account a order_account a
LEFT JOIN base_order b ON a.order_id = b.id LEFT JOIN base_order b ON a.order_id = b.id
...@@ -61,7 +67,22 @@ ...@@ -61,7 +67,22 @@
AND a.crt_time &lt;= #{endTime} AND a.crt_time &lt;= #{endTime}
</if> </if>
GROUP BY 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 ) ), date( FROM_UNIXTIME( a.crt_time / 1000 ) ),
d.member_level d.member_level
</select> </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> </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