Commit 4a7b0b18 by 罗承锋

首页修改

parent d7bf4c56
package com.winsun.mapper; package com.winsun.mapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.winsun.bean.HhrUser; import com.winsun.bean.HhrUser;
import java.util.List;
import java.util.Map;
/** /**
* 合伙人用户表的Mapper * 合伙人用户表的Mapper
*/ */
@Mapper @Mapper
@Component @Component
public interface HhrUserMapper extends BaseMapper<HhrUser> { public interface HhrUserMapper extends BaseMapper<HhrUser> {
/**
* 统计所有订单数
* @param userIds
* @param today
* @param toWeekStart
* @param toWeekEnd
* @param toMonthStart
* @param toMonthEnd
* @param isComplete
* @return
*/
Map<String, Object> statisticAllOrderNum(@Param("userIds") List<Integer> userIds, @Param("today") String today,
@Param("toWeekStart")String toWeekStart, @Param("toWeekEnd")String toWeekEnd,
@Param("toMonthStart")String toMonthStart, @Param("toMonthEnd")String toMonthEnd,
@Param("isComplete") boolean isComplete);
} }
...@@ -2,6 +2,7 @@ package com.winsun.mapper; ...@@ -2,6 +2,7 @@ package com.winsun.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.winsun.bean.BroadBandOrder; import com.winsun.bean.BroadBandOrder;
import com.winsun.bean.Order; import com.winsun.bean.Order;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.*;
...@@ -92,6 +93,6 @@ public interface OrderMapper extends BaseMapper<Order> { ...@@ -92,6 +93,6 @@ public interface OrderMapper extends BaseMapper<Order> {
" and product_title = #{productTitle} and product_region = #{universityRegion} and product_university = #{universityName} and product_state=0 ") " and product_title = #{productTitle} and product_region = #{universityRegion} and product_university = #{universityName} and product_state=0 ")
List<Map<String,Object>> queProductNameDataToUniversityNameData(String productTitle, String universityRegion, String universityName); List<Map<String,Object>> queProductNameDataToUniversityNameData(String productTitle, String universityRegion, String universityName);
List<BroadBandOrder> selectBroadBandOrderList(BroadBandOrder broadBandOrder); List<BroadBandOrder> selectBroadBandOrderList(Page<BroadBandOrder> page, BroadBandOrder broadBandOrder);
} }
package com.winsun.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
@Slf4j
public class AccessStatisticDataSearchUtils {
public final static String ES_URL = "http://172.18.101.171:9200/";
public final static String SEARCH = "/_search";
public final static String HOSTNAME = "ESC-NETWORK";
public final static String GRAFANA_URL = "http://172.18.101.171:3000/api/datasources/proxy/1/_msearch?max_concurrent_shard_requests=5";
private final static String AUTHORIZATION = "Bearer eyJrIjoiYUQ3QjlPOFVnejVwTVdHNWJrVDJPa2VUenNmajYyN1MiLCJuIjoieXJ5bSIsImlkIjoxfQ==";
/**
* es搜索
* @param query 查询表达式
* filter json数组,搜索条件
* aggs json对象,聚合搜索
* @return
*/
public static String esSearch(String query) {
// String query = "{\"size\":0,\"query\":{\"bool\":{\"filter\":[{\"range\":{\"@timestamp\":{\"gte\":1604795200000,\"lte\":1607895260000,\"format\":\"epoch_millis\"}}},{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"agent.hostname:\\\"ESC-NETWORK\\\" AND request:*.do*\"}}]}},\"aggs\":{\"groupBy\": {\"date_histogram\": {\"field\": \"@timestamp\",\"interval\": \"day\"},\"aggs\":{\"userCount\":{\"cardinality\":{\"field\":\"remote_addr\"}}}}}}";
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httppost = new HttpPost(ES_URL + SEARCH);
// 创建请求内容
StringEntity entity = new StringEntity(query, ContentType.APPLICATION_JSON);
httppost.setEntity(entity);
// 执行http请求
response = httpClient.execute(httppost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
return resultString;
} catch (Exception e) {
log.error("请求es接口异常");
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* grafanaSearch
* @param query
* @return
*/
public static String grafanaSearch(String query) {
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httppost = new HttpPost(AccessStatisticDataSearchUtils.GRAFANA_URL);
httppost.setHeader("Authorization", AccessStatisticDataSearchUtils.AUTHORIZATION);
// 创建请求内容
StringEntity entity = new StringEntity(query, ContentType.APPLICATION_JSON);
httppost.setEntity(entity);
// 执行http请求
response = httpClient.execute(httppost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
return resultString;
} catch (Exception e) {
log.error("请求grafana接口异常");
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
}
package com.winsun.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.winsun.auth.core.annotion.Permission;
import com.winsun.auth.core.base.controller.BaseController;
import com.winsun.auth.core.common.model.ResponseData;
import com.winsun.auth.core.shiro.ShiroUser;
import com.winsun.bean.HhrSupervisorSchool;
import com.winsun.bean.HhrUser;
import com.winsun.bean.UserSchool;
import com.winsun.mapper.HhrSupervisorSchoolMapper;
import com.winsun.mapper.HhrUserMapper;
import com.winsun.mapper.SysUserMapper;
import com.winsun.mapper.UserSchoolMapper;
import com.winsun.service.AccessStatisticService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 首页数据获取
*/
@RequestMapping(("/analysis"))
@RestController
@Slf4j
public class AnalysisController extends BaseController {
private HhrUserMapper hhrUserMapper;
private SysUserMapper sysUserMapper;
private HhrSupervisorSchoolMapper hhrSupervisorSchoolMapper;
private UserSchoolMapper userSchoolMapper;
private AccessStatisticService accessStatisticService;
@Autowired
public AnalysisController(SysUserMapper sysUserMapper, HhrUserMapper hhrUserMapper,
HhrSupervisorSchoolMapper hhrSupervisorSchoolMapper,
UserSchoolMapper userSchoolMapper,
AccessStatisticService accessStatisticService) {
this.sysUserMapper = sysUserMapper;
this.hhrUserMapper = hhrUserMapper;
this.hhrSupervisorSchoolMapper = hhrSupervisorSchoolMapper;
this.userSchoolMapper = userSchoolMapper;
this.accessStatisticService = accessStatisticService;
}
/**
* 获取用户信息
* @return
*/
@Permission(menuname="获取用户信息", value="/getInfo", method = RequestMethod.POST)
public ResponseData<Map<String, Object>> getInfo() {
ShiroUser shiroUser = getShiroUser();
String account = shiroUser.getAccount();
log.info("当前登录用户信息:" + account);
Map<String, Object> result = new HashMap<>();
result.put("name", shiroUser.getName());
result.put("phone", shiroUser.getPhone());
StringBuffer sb = new StringBuffer();
for(String str : shiroUser.getRoleNames()) {
sb.append(str + " ");
}
result.put("roleNames", sb.toString());
result.put("deptName", shiroUser.getDeptName());
return ResponseData.success(result);
}
/**
* 获取业务数据
* @return
*/
@Permission(menuname="获取订单统计", value="/getOrderStatistic", method = RequestMethod.POST)
public ResponseData<Map<String, Object>> getOrderStatistic() {
Map<String, Object> resultMap = new HashMap<>();
ShiroUser shiroUser = getShiroUser();
Integer id = shiroUser.getId();
List<Integer> userIds = getUserIds(shiroUser.getId(), shiroUser.getRoleNames());
String today, toWeekStart, toWeekEnd, toMonthStart, toMonthEnd;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar nowDate = Calendar.getInstance();
Calendar weekDate = Calendar.getInstance();
// 统计已有订单当日、周、月的情况
today = sdf.format(nowDate.getTime());
// 获取本周
int i = weekDate.get(Calendar.DAY_OF_WEEK);
weekDate.add(Calendar.DATE, -8 + i);
toWeekStart = sdf.format(weekDate.getTime());
weekDate.add(Calendar.DATE, 7);
toWeekEnd = sdf.format(weekDate.getTime());
// 获取当月
nowDate.set(Calendar.DATE, 1);
toMonthStart = sdf.format(nowDate.getTime());
nowDate.add(Calendar.MONTH, 1);
toMonthEnd = sdf.format(nowDate.getTime());
Map<String, Object> allOrders = hhrUserMapper.statisticAllOrderNum(userIds, today, toWeekStart, toWeekEnd, toMonthStart, toMonthEnd, false);
resultMap.put("allOrders", allOrders);
// 统计订单完成日、周、月情况
Map<String, Object> completeOrders = hhrUserMapper.statisticAllOrderNum(userIds, today, toWeekStart, toWeekEnd, toMonthStart, toMonthEnd, true);
resultMap.put("completeOrders", completeOrders);
// TODO 查询订单排名
return ResponseData.success(resultMap);
}
// 获取pv
@Permission(menuname="获取pv", value="getPvStatistic", method = RequestMethod.POST)
public ResponseData<Map<String, Object>> getPvStatistic(String startDate, String endDate, String type) {
// 判断身份
ShiroUser shiroUser = getShiroUser();
log.info("获取当前登录信息" + JSON.toJSONString(shiroUser));
List<Integer> userIds = getUserIds(shiroUser.getId(), shiroUser.getRoleNames());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Map<String, Object> pvStatisticsEchartData = null;
try {
// 督导查询合伙人id去匹配
pvStatisticsEchartData = accessStatisticService.getPvStatisticsEchartData(sdf.parse(startDate), sdf.parse(endDate), type, userIds);
}catch(ParseException e) {
return ResponseData.error("日期格式错误");
}
return ResponseData.success(pvStatisticsEchartData);
}
// 获取uv
@Permission(menuname="获取uv", value="getUvStatistic", method = RequestMethod.POST)
public ResponseData<Map<String, Object>> getUvStatistic(String startDate, String endDate, String type) {
// 判断身份
ShiroUser shiroUser = getShiroUser();
log.info("获取当前登录信息" + JSON.toJSONString(shiroUser));
List<Integer> userIds = getUserIds(shiroUser.getId(), shiroUser.getRoleNames());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 督导查询合伙人id去匹配
Map<String, Object> uvStatisticsEchartData = null;
try {
// 督导查询合伙人id去匹配
uvStatisticsEchartData = accessStatisticService.getUvStatisticsEchartData(sdf.parse(startDate), sdf.parse(endDate), type, userIds);
}catch(ParseException e) {
return ResponseData.error("日期格式错误");
}
return ResponseData.success(uvStatisticsEchartData);
}
/**
* 获取管辖内用户id
* @return
*/
public List<Integer> getUserIds (Integer userId, List<String> roles) {
List<Integer> resultList = new ArrayList<>();
StringBuffer sb = new StringBuffer();
for(String role : roles) {
sb.append(role);
}
String rolesStr = sb.toString();
if (rolesStr.indexOf("超级管理员") != -1) {
return resultList;
}else if(rolesStr.indexOf("县分管理员") != -1){
// 县分管理员(查询管辖内的学校用户)
resultList = this.getSubNameUser(userId);
}else if(rolesStr.indexOf("督导") != -1 || rolesStr.indexOf("楼长") != -1) {
// 合伙人(督导、楼长,查询本人及下级信息)
resultList = this.getChildrenUser(userId);
}else{
// 合伙人(成员,查询本人信息)
}
resultList.add(userId);
return resultList;
}
/**
* 获取所有用户
* @param userId
* @return
*/
public List<Integer> getAllUser(Integer userId) {
Wrapper<HhrUser> wrapper = new EntityWrapper<>();
wrapper.setSqlSelect("id");
wrapper.isNotNull("id");
List<HhrUser> hhrUsers = hhrUserMapper.selectList(wrapper);
List<Integer> resultList = new ArrayList<>();
hhrUsers.forEach(hhrUser -> {
resultList.add(Integer.parseInt(hhrUser.getId()));
});
return resultList;
}
/**
* 获取县分用户
* @param userId
* @return
*/
public List<Integer> getSubNameUser(Integer userId) {
Wrapper<HhrSupervisorSchool> wrapper = new EntityWrapper<>();
wrapper.eq("userId", userId);
List<HhrSupervisorSchool> hhrSupervisorSchools = hhrSupervisorSchoolMapper.selectList(wrapper);
if (hhrSupervisorSchools == null || hhrSupervisorSchools.size() == 0) {
return new ArrayList<>();
}
String[] school = new String[hhrSupervisorSchools.size()];
for(int i = 0; i < hhrSupervisorSchools.size(); ++i) {
school[i] = hhrSupervisorSchools.get(i).getSchool();
}
Wrapper<UserSchool> userSchoolWrapper = new EntityWrapper<>();
userSchoolWrapper.in("school_id", school);
List<UserSchool> userSchools = userSchoolMapper.selectList(userSchoolWrapper);
List<Integer> resultList = new ArrayList<>();
userSchools.forEach(userSchool -> {
resultList.add(Integer.parseInt(userSchool.getUserId()));
});
return resultList;
}
/**
* 获取子用户
* @param userId
* @return
*/
public List<Integer> getChildrenUser(Integer userId) {
Wrapper<HhrUser> wrapper = new EntityWrapper<>();
wrapper.like("parent_ids", userId + "");
List<HhrUser> hhrUsers = hhrUserMapper.selectList(wrapper);
List<Integer> resultList = new ArrayList<>();
hhrUsers.forEach(hhrUser -> {
resultList.add(Integer.parseInt(hhrUser.getId()));
});
return resultList;
}
}
...@@ -267,12 +267,10 @@ public class OrderController extends BaseController { ...@@ -267,12 +267,10 @@ public class OrderController extends BaseController {
@Permission(menuname = "查询订单信息", value = "broadBandOrder", method = RequestMethod.POST) @Permission(menuname = "查询订单信息", value = "broadBandOrder", method = RequestMethod.POST)
public ResponseData<Page<BroadBandOrder>> getBroadBandOrder(BroadBandOrder broadBandOrder) { public ResponseData<Page<BroadBandOrder>> getBroadBandOrder(BroadBandOrder broadBandOrder) {
broadBandOrder.setPageStart((broadBandOrder.getPageNo() - 1) * broadBandOrder.getPageSize());
List<BroadBandOrder> broadBandOrders = orderMapper.selectBroadBandOrderList(broadBandOrder);
Page<BroadBandOrder> page = new Page<>(broadBandOrder.getPageNo(), broadBandOrder.getPageSize()); Page<BroadBandOrder> page = new Page<>(broadBandOrder.getPageNo(), broadBandOrder.getPageSize());
broadBandOrder.setPageStart((broadBandOrder.getPageNo() - 1) * broadBandOrder.getPageSize());
List<BroadBandOrder> broadBandOrders = orderMapper.selectBroadBandOrderList(page, broadBandOrder);
page.setRecords(broadBandOrders); page.setRecords(broadBandOrders);
System.out.println(JSONArray.fromObject(broadBandOrders).toString());
return ResponseData.success(page); return ResponseData.success(page);
} }
......
...@@ -71,8 +71,7 @@ public class PartnerController extends BaseController { ...@@ -71,8 +71,7 @@ public class PartnerController extends BaseController {
@RequestParam("schools") Integer[] schools, @RequestParam("subNames") String[] subNames, @RequestParam("schools") Integer[] schools, @RequestParam("subNames") String[] subNames,
@RequestParam(name = "position",required = false) String position, @RequestParam(name = "position",required = false) String position,
@RequestParam(name = "parentId", required = false) String parentId, @RequestParam(name = "parentId", required = false) String parentId,
@RequestParam(name = "parentIds", required = false) String parentIds @RequestParam(name = "parentIds", required = false) String parentIds) {
) {
SysUser user = sysUserMapper.selectById(id); SysUser user = sysUserMapper.selectById(id);
password = StringUtils.isNotBlank(password) ? MD5Utils.md5(password, user.getSalt()) : user.getPassword(); password = StringUtils.isNotBlank(password) ? MD5Utils.md5(password, user.getSalt()) : user.getPassword();
parentId = !"null".equals(parentId) ? parentId : ""; parentId = !"null".equals(parentId) ? parentId : "";
......
package com.winsun.service;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 访问统计量服务
*/
public interface AccessStatisticService {
Map<String, Object> getPvStatisticsEchartData(Date startDate, Date endDate, String type, List<Integer> userIds);
Map<String, Object> getUvStatisticsEchartData(Date startDate, Date endDate, String type, List<Integer> userIds);
}
package com.winsun.service.impl;
import com.winsun.service.AccessStatisticService;
import com.winsun.utils.AccessStatisticDataSearchUtils;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* luochengfeng
*/
@Slf4j
@Service
public class AccessStatisticServiceImpl implements AccessStatisticService {
/**
* 获取pv访问统计量列表
* @return
*/
public Map<String, Object> getPvStatisticsEchartData(Date startDate, Date endDate, String type, List<Integer> userIds) {
SimpleDateFormat sdf = null;
if ("hour".equals(type)) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}else if("month".equals(type)) {
sdf = new SimpleDateFormat("yyyy-MM");
}else {
sdf = new SimpleDateFormat("yyyy-MM-dd");
}
Map<String, Object> result = new HashMap<>();
try {
List<String> xAxisData = new ArrayList<>();
List<Integer> seriesData = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
// 拆除数据
JSONArray buckets = getAccessStatisticListData(startDate, endDate, type, userIds);
JSONObject bucket = new JSONObject();
for(Object jsonObject : buckets) {
bucket = JSONObject.fromObject(jsonObject);
if (bucket.get("key") == null || bucket.get("doc_count") == null) {
log.error("获取pv访问量列表部分数据错误:" + JSONObject.fromObject(bucket).toString());
break;
}
Long timestamp = bucket.getLong("key");
calendar.setTimeInMillis(timestamp);
if (startDate.getTime()/1000 <= calendar.getTimeInMillis()/1000) {
xAxisData.add(sdf.format(calendar.getTime()));
Integer docCount = bucket.getInt("doc_count");
seriesData.add(docCount);
}
}
result.put("xAxisData", xAxisData);
result.put("seriesData", seriesData);
}catch(Exception e) {
log.error("获取pv访问量列表错误" + e.getMessage());
e.printStackTrace();
}
return result;
}
/**
* 获取uv访问统计量列表
* @param startDate
* @param endDate
* @param type
* @return
*/
public Map<String, Object> getUvStatisticsEchartData(Date startDate, Date endDate, String type, List<Integer> userIds) {
SimpleDateFormat sdf = null;
if ("hour".equals(type)) {
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}else if("month".equals(type)) {
sdf = new SimpleDateFormat("yyyy-MM");
}else {
sdf = new SimpleDateFormat("yyyy-MM-dd");
}
Map<String, Object> result = new HashMap<>();
try {
List<String> xAxisData = new ArrayList<>();
List<Integer> seriesData = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
// 拆除数据
JSONArray buckets = getAccessStatisticListData(startDate, endDate, type, userIds);
log.info("uv数据:" + buckets);
JSONObject bucket = new JSONObject();
for(Object jsonObject : buckets) {
bucket = JSONObject.fromObject(jsonObject);
if (bucket.get("key") == null || bucket.get("userCount") == null) {
log.error("获取uv访问量列表部分数据错误:" + JSONObject.fromObject(bucket).toString());
break;
}
Long timestamp = bucket.getLong("key");
calendar.setTimeInMillis(timestamp);
if (startDate.getTime()/1000 <= calendar.getTimeInMillis()/1000) {
xAxisData.add(sdf.format(calendar.getTime()));
JSONObject userCount = JSONObject.fromObject(bucket.get("userCount"));
Integer value = userCount.getInt("value");
seriesData.add(value);
}
}
result.put("xAxisData", xAxisData);
result.put("seriesData", seriesData);
}catch(Exception e) {
log.error("获取uv访问量列表错误" + e.getMessage());
e.printStackTrace();
}
return result;
}
/**
* 获取指定日期的pv、uv访问统计量
* @param startDate
* @param endDate
* @return
*/
public JSONArray getAccessStatisticListData(Date startDate, Date endDate, String type, List<Integer> userIds){
JSONArray buckets = new JSONArray();
// 判断用户id
StringBuilder userIdsDql = new StringBuilder();
if (userIds != null && userIds.size() > 0) {
userIdsDql.append("(");
for(int i = 0; i < userIds.size(); ++i) {
userIdsDql.append("http_referer:*").append(userIds.get(i)).append("* ");
if (userIds.size() != (i+1)) {
userIdsDql.append("OR ");
}
}
userIdsDql.append(")");
}
log.info("统计用户:" + userIdsDql.toString());
String dql = "{\"size\":0,\"query\":{\"bool\":{\"filter\":[{\"range\":{\"@timestamp\":{\"gte\":" + startDate.getTime() + ",\"lte\":" + endDate.getTime() +",\"format\":\"epoch_millis\"}}},{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"agent.hostname:\\\"ESC-NETWORK\\\" AND request:*.do* " + userIdsDql.toString() + "\"}}]}},\"aggs\":{\"groupBy\": {\"date_histogram\": {\"field\": \"@timestamp\",\"interval\": \"" + type + "\"},\"aggs\":{\"userCount\":{\"cardinality\":{\"field\":\"remote_addr\"}}}}}}";
log.info("dql:" + dql);
try {
String esSearch = AccessStatisticDataSearchUtils.esSearch(dql);
log.info(esSearch);
JSONObject json = JSONObject.fromObject(esSearch);
JSONObject aggregations = JSONObject.fromObject(json.get("aggregations"));
JSONObject groupBy = JSONObject.fromObject(aggregations.get("groupBy"));
buckets = JSONArray.fromObject(groupBy.get("buckets"));
}catch(Exception e) {
log.error("处理数据异常,请检查数据格式是否正确");
log.error(e.getMessage());
e.printStackTrace();
}
return buckets;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.winsun.mapper.HhrUserMapper">
<select id="statisticAllOrderNum" resultType="java.util.HashMap">
SELECT
*
FROM
(
SELECT
count( * ) AS today
FROM
hhr_order
<where>
<if test="userIds != null and userIds.size() > 0 ">
hehuoren_id IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
AND create_time &gt;= #{today}
<if test="isComplete == true">
AND order_status = "已完成"
</if>
</where>
) a,
(
SELECT
count( * ) AS toweek
FROM
hhr_order
<where>
<if test="userIds != null and userIds.size() > 0 ">
hehuoren_id IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
AND create_time &gt;= #{toWeekStart}
AND create_time &lt;= #{toWeekEnd}
<if test="isComplete == true">
AND order_status = "已完成"
</if>
</where>
) b,
(
SELECT
count( * ) AS tomonth
FROM
hhr_order
<where>
<if test="userIds != null and userIds.size() > 0 ">
hehuoren_id IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
AND create_time &gt;= #{toMonthStart}
AND create_time &lt;= #{toMonthEnd}
<if test="isComplete == true">
AND order_status = "已完成"
</if>
</where>
) c
</select>
</mapper>
\ No newline at end of file
...@@ -158,7 +158,6 @@ ...@@ -158,7 +158,6 @@
where where
ho.kd_order_id = ov.orderSeq ho.kd_order_id = ov.orderSeq
order by create_time desc order by create_time desc
limit #{pageStart},#{pageSize}
</select> </select>
</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