Commit bb132a37 authored by hanfeng's avatar hanfeng

修改订单统计

parent 3cb8c1a8
package com.xxfc.platform.order.contant.enumerate;
import lombok.NoArgsConstructor;
@NoArgsConstructor
public enum OrderInquiryType {
DAY(1,"按天分类"),WEEK(2,"按周分类"),MONTH(3,"按月分类");
/**
* 编码
*/
private Integer code;
/**
* 类型描述
*/
private String desc;
OrderInquiryType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
package com.xxfc.platform.order.entity;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MembersOrder {
private String oneDay;
private BigDecimal amount;
private Integer number;
private Integer level;
}
package com.xxfc.platform.order.pojo;
import lombok.Data;
/**
* 每日、每周或每月不同会员的总数据
* @author Administrator
*/
@Data
public class Member {
/**
* 金额
*/
private Integer amount;
/**
* 会员等级
*/
private Integer level;
/**
* 会员名
*/
private String memberName;
}
package com.xxfc.platform.order.pojo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 每日、每周、每月会员购买数据
* @author Administrator
*/
@Data
public class MembersOrderDto {
/**
* 时间段
*/
private String timeSlot;
/**
* 时间段总数据
*
*/
private BigDecimal totalPayment;
/**
* 时间段内不同会员数据
*/
private List<Member> members;
}
package com.xxfc.platform.order.pojo;
import lombok.Data;
/**
* 会员订单统计条件
* @author Administrator
*/
@Data
public class OrderQuery {
private Integer page;
private Integer limit;
/**
* 查询开始时间
*/
private Long startTime;
/**
* 查询结束时间
*/
private Long endTime;
/**
* 1.按每日统计,2.按每周统计,3.按每月统计
*/
private Integer type=1;
}
......@@ -2,17 +2,17 @@ package com.xxfc.platform.order.biz;
import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.DailyMembersOrderStatistics;
import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper;
import com.xxfc.platform.order.pojo.OrderQuery;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -20,13 +20,11 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 每日购买会员订单统计
......@@ -120,4 +118,13 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
public OrderStatistics findAll(Integer companyId) {
return mapper.monthOrderTotal(companyId);
}
/**
* 根据时间按年月日分组
* @param query
* @return
*/
public List<MembersOrder> getMemberOrderStatistics(OrderQuery query) {
return mapper.getMemberOrderStatistics(query);
}
}
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.msg.ObjectRestResponse;
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.MembersOrderDto;
import com.xxfc.platform.order.pojo.OrderQuery;
import org.assertj.core.util.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -74,4 +82,13 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
return result;
}
public List<MembersOrderDto> getMemberOrderStatistics(List<BaseUserMemberLevel> memberLevels, OrderQuery query) {
List<MembersOrder> membersOrderList = membersBiz.getMemberOrderStatistics(query);
//按每天分类
if (CollectionUtil.isEmpty(membersOrderList)) {
return Lists.newArrayList();
}
getlist
}
}
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.DailyMembersOrderStatistics;
import com.xxfc.platform.order.entity.MembersOrder;
import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.pojo.OrderQuery;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
......@@ -18,4 +20,7 @@ public interface DailyMembersOrderStatisticsMapper extends Mapper<DailyMembersOr
OrderStatistics monthOrderTotal(@Param("companyId") Integer companyId);
List<MembersOrder> getMemberOrderStatistics(OrderQuery query);
}
package com.xxfc.platform.order.rest.background;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.biz.DailyMembersOrderStatisticsBiz;
import com.xxfc.platform.order.biz.DailyTravelOrderStatisticsBiz;
......@@ -13,13 +15,17 @@ import com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz;
import com.xxfc.platform.order.biz.OrderStatisticsBiz;
import com.xxfc.platform.order.entity.OrderStatistics;
import com.xxfc.platform.order.pojo.HomePageOrderData;
import com.xxfc.platform.order.pojo.OrderQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Administrator
......@@ -39,7 +45,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
private final Integer TYPE_VEHICLE = 1;
/**
* 旅游订单
* 旅游订单
*/
private final Integer TYPE_TOUR = 2;
......@@ -56,7 +62,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
/**
* 数据权限
*/
private final Integer DATA_AUTHORITY=1;
private final Integer DATA_AUTHORITY = 1;
@Autowired
private DailyVehicleOrderStatisticsBiz vehicleBiz;
......@@ -68,6 +74,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
@Autowired
private DailyMembersOrderStatisticsBiz membersBiz;
@ApiOperation("获取订单统计数据")
@GetMapping("/findAll/{type}")
public ObjectRestResponse findAll(@PathVariable Integer type) {
......@@ -83,13 +90,13 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
UserDTO user = userDTOObjectRestResponse.getData();
Integer companyId = user.getCompanyId();
if (DATA_AUTHORITY.equals(user.getDataAll())){
companyId=null;
if (DATA_AUTHORITY.equals(user.getDataAll())) {
companyId = null;
}
if (TYPE_VEHICLE.equals(type)) {
OrderStatistics vehicle = vehicleBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData(){{
return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv()));
setAdditionalIndemnity(vehicle.getTotalCompensation()
.add(vehicle.getTotalForfeit())
......@@ -100,14 +107,14 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
}
if (TYPE_TOUR.equals(type)) {
OrderStatistics tour = TravelBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData(){{
return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv()));
setAdditionalIndemnity(tour.getTotalDefaultMoney());
}});
}
if (TYPE_MEMBER.equals(type)) {
OrderStatistics member = membersBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData(){{
return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(member.getTotalGmv());
}});
......@@ -125,5 +132,17 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
}
@GetMapping("/order")
public ObjectRestResponse getMemberOrderStatisticsData(@RequestBody OrderQuery query) {
//获取会员等级信息
List<BaseUserMemberLevel> memberLevels = userFeign.levels();
//获取会员订单统计信息
baseBiz.getMemberOrderStatistics(memberLevels,query);
return ObjectRestResponse.succ();
}
}
......@@ -38,4 +38,30 @@
<!-- DATE_FORMAT(one_day,'%Y-%c')=DATE_FORMAT(DATE_SUB(NOW(),interval 1 day),'%Y-%c')-->
<!-- </select>-->
<select id="getMemberOrderStatistics" parameterType="com.xxfc.platform.order.pojo.OrderQuery"
resultType="com.xxfc.platform.order.entity.MembersOrder">
SELECT
date( FROM_UNIXTIME( a.crt_time / 1000 ) ) AS oneDay,
count( a.id ) AS number,
SUM( a.account_amount ) AS amount,
d.member_level AS LEVEL
FROM
order_account a
LEFT JOIN base_order b ON a.order_id = b.id
LEFT JOIN order_member_detail d ON d.order_id = b.id
WHERE
a.account_status = 1
AND a.account_type = 101
AND b.type = 3
<if test="startTime != null">
AND a.crt_time &gt;= #{startTime}
</if>
<if test="endTime != null">
AND a.crt_time &lt;= #{endTime}
</if>
GROUP BY
date( FROM_UNIXTIME( a.crt_time / 1000 ) ),
d.member_level
</select>
</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