yujian
2019-01-15 3120a71838e7cc4e04ea482f3d315e80529117de
后端曲线接口
1个文件已删除
10个文件已修改
746 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/admin/ExtractAdminController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/TaoBaoOrderAdminController.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/ExtractMapper.xml 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/count/CommonOrderCountServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/count/UserInfoCountServiceImpl.java 211 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/count/UserInfoCountService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/ExtractAdminController.java
@@ -364,16 +364,33 @@
        Map<String, Object> totalcount = extractCountService.getTodayCount();
        BigDecimal totalmoney = extractCountService.getTodayTotalSuccessMoney();
        totalcount.put("totalmoney", totalmoney);
        // 今日提现成功金额
        BigDecimal todayextractMoney = extractCountService.getTodayTotalSuccessMoney();
        // 当前用户余额总计:所有用户总余额
        BigDecimal amountMoney = userInfoCountService.countAllMoney(null);
        // 可提现金额限制
        String minMoney = configService.get(Constant.EXTRACT_MIN_MONEY);
        if (minMoney == null){
            minMoney = "0";
        }
        // 当前可提现金额总计: 超过最低提现金额---计入统计
        BigDecimal extractApply = userInfoCountService.countAllMoney(Double.parseDouble(minMoney));
        // 累计已提现金额总计:已提现成功的总额/ 次数
        Map<String, Object> resultData = extractCountService.countTotalSuccess();
        JSONObject data = new JSONObject();
        data.put("todayCount", totalcount);
        data.put("totalount", resultData);
        data.put("todayextractMoney", todayextractMoney);
        data.put("amountMoney", amountMoney); // 所有用户总余额
        data.put("extractApply", extractApply); // 可提现金额总计
        data.put("extractNumber", resultData.get("totalamount")); // 提现成功次数
        data.put("extractMoney", resultData.get("totalmoney")); // 提现成功金额
        out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
    }
@@ -1702,37 +1719,5 @@
            e.printStackTrace();
        }
    }
    /**
     * 统计资金信息
     *
     * @param out
     */
    @RequestMapping(value = "getMoneynfo")
    public void getHistoryInfo(String callback, PrintWriter out) {
        // 累计已提现金额总计:已提现成功的总额
        Map<String, Object> resultData = extractCountService.countTotalSuccess();
        // 当前用户余额总计:所有用户总余额
        BigDecimal amountMoney = userInfoCountService.countAllMoney(null);
        // 可提现金额限制
        String minMoney = configService.get(Constant.EXTRACT_MIN_MONEY);
        if (minMoney == null){
            minMoney = "0";
        }
        // 当前可提现金额总计: 超过最低提现金额---计入统计
        BigDecimal extractApply = userInfoCountService.countAllMoney(Double.parseDouble(minMoney));
        JSONObject data = new JSONObject();
        data.put("amountMoney", amountMoney);
        data.put("extractApply", extractApply);
        data.put("extractMoney", resultData.get("totalmoney"));
        out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
    }
    
}
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java
@@ -6,6 +6,7 @@
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -21,6 +22,7 @@
import com.yeshi.fanli.entity.admin.OrderAdmin;
import com.yeshi.fanli.exception.order.CommonOrderException;
import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.count.TaoBaoOrderCountService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
import com.yeshi.fanli.service.inter.order.CommonOrderService;
@@ -52,8 +54,46 @@
    
    @Resource
    private TaoBaoOrderService taoBaoOrderService;
    @Resource
    private TaoBaoOrderCountService taoBaoOrderCountService;
    
    /**
     * 统计历史订单-淘宝订单
     * @param callback
     * @param request
     * @param out
     */
    @RequestMapping(value = "countTaoBaoOrder")
    public void countTaoBaoOrder(String callback, HttpServletRequest request, PrintWriter out) {
        try {
            Map<String, Object> countByOdrerType = taoBaoOrderCountService.countByOdrerType();
            JSONObject data = new JSONObject();
            data.put("typeOrder", countByOdrerType);
            // 统计今日 未失效订单数量 相同订单号合并为一单
            int todayOrder = taoBaoOrderCountService.countToday();
            // 统计昨日 未失效订单数量 相同订单号合并为一单
            int yesterdayOrder = taoBaoOrderCountService.countYesterday();
            data.put("todayOrder", todayOrder);
            data.put("yesterdayOrder", yesterdayOrder);
            data.put("genzong", yesterdayOrder);
            data.put("yesterdayOrder", yesterdayOrder);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计失败"));
            e.printStackTrace();
        }
    }
    @RequestMapping(value = "getOrderList", method = RequestMethod.POST)
    public void getOrderList(int pageIndex, String key, PrintWriter out) {
fanli/src/main/java/com/yeshi/fanli/controller/admin/TaoBaoOrderAdminController.java
File was deleted
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java
@@ -4,7 +4,6 @@
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
@@ -689,12 +688,8 @@
    @RequestMapping(value = "countInfo")
    public void countInfo(String callback, PrintWriter out) {
        try {
            // 总用户
            long countTotal = userInfoCountService.countNewUser(null, null);
            // 今日新增
            long countToday = userInfoCountService.countNewUser(1, null);
            // 本月新增
            long countMonth = userInfoCountService.countNewUser(null, 1);
            JSONObject data = new JSONObject();
            
            // 总数-普通用户
            long countNormal = userInfoCountService.countRank(0);
@@ -705,27 +700,43 @@
            // 总数-金用户
            long countGold = userInfoCountService.countRank(3);
            
            data.put("countNormal", countNormal);
            data.put("countCuprum", countCuprum);
            data.put("countSilver", countSilver);
            data.put("countGold", countGold);
            /*
            // 统计所有总金额
            BigDecimal countTotalMoney = userInfoCountService.countAllMoney(null);
            
            // 统计所有可提现金额
            String minMoney = configService.get(Constant.EXTRACT_MIN_MONEY);
            if (minMoney == null)
            if (minMoney == null) {
                minMoney = "20";
            }
            double min = Double.parseDouble(minMoney);
            BigDecimal countCanAssets = userInfoCountService.countAllMoney(min);
            JSONObject data = new JSONObject();
            data.put("countTotal", countTotal);
            data.put("countToday", countToday);
            data.put("countMonth", countMonth);
            data.put("countNormal", countNormal);
            data.put("countCuprum", countCuprum);
            data.put("countSilver", countSilver);
            data.put("countGold", countGold);
            data.put("countTotalMoney", countTotalMoney);
            data.put("countCanAssets", countCanAssets);
            */
            // 累计用户数量
            long totalUser = userInfoCountService.countNewUser(null, null);
            // 流失用户数量(180天未使用登录并且无任何资金流动的账号数量)
            long loseUser = userInfoCountService.countLoseUser(180);
            // 累计有购买用户数
            long orderUser = userInfoCountService.countHasOrderUser();
            data.put("totalUser", totalUser);
            data.put("loseUser", loseUser);
            data.put("orderUser", orderUser);
            // 今日新增用户数量
            long todayUser = userInfoCountService.countNewUser(1, null);
            // 本月新增用户数量
            long monthUser = userInfoCountService.countNewUser(null, 1);
            data.put("todayUser", todayUser);
            data.put("monthUser", monthUser);
            
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
            
@@ -1303,44 +1314,106 @@
    public void getTodayBuyRate(String callback, String channelArray, Integer dateType, 
         String year, String startTime, String endTime, Integer orderNum, PrintWriter out) {
        
        String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
        if (validateMsg != null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
            return;
        }
        if (dateType == 2 && StringUtil.isNullOrEmpty(year)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请输入年份"));
            return;
        }
        if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) {
            startTime = null;
            endTime = null;
        }
        
        List<String> channelList = null;
        if (channelArray != null && channelArray.trim().length() > 0) {
            Gson gson = new Gson();
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
        }
        if (channelList == null || channelList.size() == 0) {
            channelList = new ArrayList<String>();
            channelList.add("all");
        }
        if (dateType == 1 && year != null) {
            year = null; // 设置为空
        } else if (dateType == 2) {
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
        } else if (dateType == 3) {
            if (year != null)
                year = null;
            if (startTime != null)
                startTime = null;
            if (endTime != null)
                endTime = null;
        }
        try {
            Gson gson = new Gson();
            List<String> list = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
            if (list == null || list.size() == 0) {
                JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数格式不正确"));
                return;
            }
            Object objectDate = null;
            List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
            
            JSONArray array = new JSONArray();
            for (String channel: list) {
                JSONObject channelData = new JSONObject();
                List<Object> resultList = null;
                        //userActiveLogService.getBuyProportion(channel, dateType, year, startTime, endTime, orderNum);
                if (resultList == null) {
                    resultList = new ArrayList<Object>();
            JSONArray line_list = new JSONArray();
            for (String channel : channelList) {
                List<Map<String, Object>> list = userInfoCountService.getTodayBuyRate(channel, dateType,
                        year, startTime, endTime);
                if ("all".equalsIgnoreCase(channel)) {
                    channel = "总计";
                }
                channelData.put("name", channel);
                channelData.put("data_list", resultList);
                array.add(channelData);
                JSONObject innerList = new JSONObject();
                innerList.put("name", channel);
                if (dateType != 3) {
                    innerList.put("data", gson.toJson(AdminUtils.dayOrMonthDataFactory(dateType, dateList, list)));
                } else {
                    // 年视图
                    Map<String, Object> map = AdminUtils.yearsDataFactory(list);
                    if (objectDate == null) {
                        objectDate = map.get("date");
                    }
                    innerList.put("data", gson.toJson(map.get("value")));
                }
                line_list.add(innerList);
            }
            JSONObject data = new JSONObject();
            if (objectDate != null) {
                data.put("xAxis_list", gson.toJson(objectDate));
            } else {
                data.put("xAxis_list", gson.toJson(dateList));
            }
            
            JSONObject data = new JSONObject();
            data.put("result_list", array);
            data.put("line_list", line_list);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
    
    
@@ -1353,89 +1426,62 @@
     * @param orderNum 订单数量
     * @param out
     */
    @RequestMapping(value = "getWeekProportion")
    public void getWeekProportion(String callback, String channelArray, String startTime, String endTime,
    @RequestMapping(value = "getWeekBuyRate")
    public void getWeekBuyRate(String callback, String channelArray, String startTime, String endTime,
            Integer orderNum, PrintWriter out) {
        
        if (StringUtil.isNullOrEmpty(startTime) || StringUtil.isNullOrEmpty(endTime)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择正确时间区间"));
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当周订单统计对应时间区域不能为空"));
            return;
        }
        List<String> channelList = null;
        if (channelArray != null && channelArray.trim().length() > 0) {
            Gson gson = new Gson();
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
        }
        if (channelList == null || channelList.size() == 0) {
            channelList = new ArrayList<String>();
            channelList.add("all");
        }
        if (orderNum < 1) {
            orderNum = 1;
        }
        
        try {
            if (orderNum == null ) {
                orderNum = 0;
            }
            Gson gson = new Gson();
            List<String> dateList = AdminUtils.getDateList(1, startTime, endTime, null);
            
            List<String> channelList = null;
            if (channelArray != null && channelArray.trim().length() > 0) {
                Gson gson = new Gson();
                channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {}.getType());
            }
            if (channelList == null || channelList.size() == 0) {
                channelList = new ArrayList<String>();
                channelList.add("all");
            }
            JSONArray array = new JSONArray();
            JSONArray line_list = new JSONArray();
            for (String channel : channelList) {
                JSONObject channelData = new JSONObject();
                
                List<Map<String, Object>> resultList = null;
                        //userActiveLogService.countOneWeekUserInfo(channel,     startTime, endTime, orderNum);
                if (resultList == null) {
                    resultList = new ArrayList<Map<String, Object>>();
                }
                List<Object> list = userInfoCountService.getWeekBuyRate(channel, startTime, endTime,
                        orderNum, dateList);
                if ("all".equalsIgnoreCase(channel)) {
                    channel = "总计";
                }
                
                channelData.put("name", channel);
                channelData.put("data_list", resultList);
                array.add(channelData);
                JSONObject innerList = new JSONObject();
                innerList.put("name", channel);
                innerList.put("data", gson.toJson(list));
                line_list.add(innerList);
            }
            JSONObject data = new JSONObject();
            data.put("result_list", array);
            data.put("xAxis_list", gson.toJson(dateList));
            data.put("line_list", line_list);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
            e.printStackTrace();
        }
    }
    /**
     * 用户统计 :总用户、流失用户数量、累计有购买用户数
     * @param callback
     * @param out
     */
    @RequestMapping(value = "countUser")
    public void countUser(String callback, PrintWriter out) {
        try {
            // 总用户
            long totalUser = userInfoCountService.countNewUser(null, null);
            // 流失用户数量(180天未使用登录并且无任何资金流动的账号数量)
            long loseUser = userInfoCountService.countLoseUser(180);
            // 累计有购买用户数
            long orderUser = userInfoCountService.countHasOrderUser();
            JSONObject data = new JSONObject();
            data.put("totalUser", totalUser);
            data.put("loseUser", loseUser);
            data.put("orderUser", orderUser);
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            e.printStackTrace();
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("统计异常"));
        }
    }
    
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/UserInfoMapper.java
@@ -144,10 +144,18 @@
    
    
    /**
     * 统计新增用户
     * 统计新增用户当日产生订单用户数量
     * @return
     */
    List<Map<String, Object>> getTodayHasOrder(@Param("channel")String channel,@Param("type")Integer type, @Param("years") String years, 
            @Param("startTime")String startTime, @Param("endTime")String endTime);
    
    /**
     * 统计新增用户一周产生订单用户数量
     * @return
     */
    Map<String, Object> getWeekHasOrder(@Param("channel")String channel, @Param("startTime")String startTime,
            @Param("endTime")String endTime, @Param("orderNum")Integer orderNum);
}
fanli/src/main/java/com/yeshi/fanli/mapping/ExtractMapper.xml
@@ -259,18 +259,18 @@
        SELECT IFNULL(COUNT(et.id), 0)AS total,IFNULL(SUM(CASE WHEN et.state =
        1 THEN 1 ELSE 0 END),0) AS succeed,IFNULL(SUM(CASE WHEN et.state = 2
        THEN 1 ELSE 0 END),0) AS fails
        FROM yeshi_ec_extract et WHERE (et.state=1 OR et.state= 2) AND
         <![CDATA[
             FROM_UNIXTIME(et.extractTime/1000) >=CURDATE();
         ]]>
        FROM yeshi_ec_extract et
        LEFT JOIN `yeshi_ec_extract_audit_record` ar ON ar.`extractId` = et.`id`
        WHERE  ar.`id` IS NOT NULL
               AND FROM_UNIXTIME(ar.`auditTime`/1000,'%y%m%d') = CURDATE()
    </select>
    <select id="getTodayTotalSuccessMoney" resultType="java.math.BigDecimal">
        SELECT IFNULL(ROUND(SUM(money),2) ,0) AS moneys
        FROM yeshi_ec_extract et WHERE et.state=1 AND
          <![CDATA[
             FROM_UNIXTIME(et.extractTime/1000) >=CURDATE();
         ]]>
        FROM yeshi_ec_extract et
        LEFT JOIN `yeshi_ec_extract_audit_record` ar ON ar.`extractId` = et.`id`
        WHERE et.state=1 AND  ar.`id` IS NOT NULL
            AND FROM_UNIXTIME(ar.`auditTime`/1000,'%y%m%d') = CURDATE()
    </select>
    <select id="countTotalSuccess" resultType="java.util.HashMap">
fanli/src/main/java/com/yeshi/fanli/mapping/UserInfoMapper.xml
@@ -322,14 +322,13 @@
    
    
    <select id="countNewUser" resultType="java.lang.Long">
       <!--  自购订单 -->
           SELECT COALESCE(count(id),0) FROM `yeshi_ec_user` 
            WHERE 1 > 0
           WHERE 1=1
                <if test="isToday != null and isToday == 1">
                AND  TO_DAYS(FROM_UNIXTIME(createtime/1000)) = TO_DAYS(NOW())
                AND TO_DAYS(FROM_UNIXTIME(createtime/1000)) = TO_DAYS(NOW())
            </if>
            <if test="isMonth != null and isMonth == 1">
                AND DATE_FORMAT( FROM_UNIXTIME(createtime/1000), '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
                AND DATE_FORMAT( FROM_UNIXTIME(createtime/1000), '%Y%m' ) = DATE_FORMAT(CURDATE() , '%Y%m' )
            </if>
    </select>
    
@@ -371,18 +370,18 @@
    <select id="countLoseUser" resultType="java.lang.Long">
        SELECT  COUNT(DISTINCT t.`id` ) FROM `yeshi_ec_user` t 
        LEFT JOIN `yeshi_ec_user_money_detail` d ON d.`umd_uid` = t.`id` 
        WHERE DATE_SUB(CURDATE(), INTERVAL ${num} DAY) > DATE(FROM_UNIXTIME( t.`last_logintime`/1000))
               AND DATE_SUB(CURDATE(), INTERVAL ${num} DAY) > DATE(d.`umd_createtime`)
        WHERE DATE_SUB(CURDATE(), INTERVAL ${num} DAY)<![CDATA[> ]]> DATE(FROM_UNIXTIME( t.`last_logintime`/1000))
               AND DATE_SUB(CURDATE(), INTERVAL ${num} DAY) <![CDATA[> ]]> DATE(d.`umd_createtime`)
    </select>
    
    <select id="countHasOrderUser" resultType="java.lang.Long">
        SELECT COUNT(DISTINCT h.`hb_uid`) FROM yeshi_ec_hongbao_v2 h 
        WHERE h.`hb_type`=1 or  h.`hb_type`=2
        WHERE (h.`hb_type`=1 or  h.`hb_type`=2 or h.`hb_type`= 20)
    </select>
    
    
    <select id="countNewUserByDate" resultType="java.util.HashMap">
        SELECT COUNT(h.`id`) AS showValue,
        SELECT COUNT(DISTINCT h.`id`) AS showValue,
            <if test="type == 1">
                 FROM_UNIXTIME(h.`createtime`/1000,'%Y-%m-%d') AS 'showDate'
            </if>
@@ -423,7 +422,7 @@
    </select>
    
    <select id="getTodayHasOrder" resultType="java.util.HashMap">
        SELECT COALESCE(COUNT(u.`id`),0) AS 'showValue',
        SELECT COALESCE(COUNT(DISTINCT u.`id`),0) AS 'showValue',
            <if test="type == 1">
                 FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') AS 'showDate'
            </if>
@@ -445,7 +444,7 @@
                AND a.uid is not null
            </if>
            <!-- 当日下单 -->
            AND FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') = FROM_UNIXTIME(h.hb_create_time/1000,'%Y-%m-%d')
            AND FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') = DATE_FORMAT(h.hb_create_time,'%Y-%m-%d')
            
            <if test="startTime != null and startTime != '' ">
                 AND FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d')<![CDATA[ >= ]]>'${startTime}'
@@ -470,41 +469,24 @@
    
    
    
    <select id="countWeekUserInfo" resultType="java.util.HashMap">
        SELECT COALESCE(SUM(w.total),0) AS totalUser,COALESCE(SUM(w.orderUser),0)AS orderUser FROM
                (
                    <!-- 统计总当日总数量 -->
                    SELECT COUNT(u.`id`)AS total,0 AS orderUser
                    FROM yeshi_ec_user u
                        <if test="channel != null and channel != 'all' ">
                     LEFT JOIN  (SELECT a.`lua_uid` AS uid FROM `yeshi_ec_log_user_active`  a
                            WHERE a.`lua_channel`='${channel}' GROUP BY a.`lua_uid`) a ON u.`id`=a.uid
                    </if>
                 WHERE FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') = '${startTime}'
                    <if test="channel != null and  channel != 'all' ">
                        AND a.uid is not null
                    </if>
            UNION
            SELECT 0 AS total, COUNT(u.`id`) AS orderUser
            FROM yeshi_ec_user u
            <if test="channel != null and channel != 'all' ">
                LEFT JOIN  (SELECT a.`lua_uid` AS uid FROM `yeshi_ec_log_user_active`  a
                    WHERE a.`lua_channel`='${channel}' GROUP BY a.`lua_uid`) a ON u.`id`=a.uid
    <select id="getWeekHasOrder" resultType="java.util.HashMap">
        SELECT COUNT(DISTINCT hb.uid) AS showValue,FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') AS 'showDate'
        FROM (SELECT COUNT(v2.`hb_id`) AS num,v2.hb_uid  AS uid
              FROM yeshi_ec_hongbao_v2 v2
              WHERE   (v2.`hb_type`=1 OR v2.`hb_type`=20)
                  AND DATE_FORMAT(v2.`hb_create_time`,'%Y-%m-%d') <![CDATA[ >= ]]>'${startTime}'
                 AND DATE_FORMAT(v2.`hb_create_time`,'%Y-%m-%d') <![CDATA[ <= ]]>'${endTime}'
              GROUP BY v2.hb_uid HAVING num >= ${orderNum})hb
        LEFT JOIN yeshi_ec_user u  ON u.id = hb.uid
        <if test="channel != null and channel != 'all' ">
            LEFT JOIN  (SELECT a.`lua_uid` AS uid FROM `yeshi_ec_log_user_active`  a
                WHERE a.`lua_channel`='${channel}' GROUP BY a.`lua_uid`) a ON u.`id`=a.uid
        </if>
        WHERE FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') = '${startTime}'
            <if test="channel != null and  channel != 'all' ">
               AND a.uid is not null
            </if>
            WHERE FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d') = '${startTime}'
                    AND u.id = ANY(SELECT hh.hb_uid  FROM (SELECT COUNT(t.`hb_id`) AS num,t.hb_uid
                              FROM yeshi_ec_hongbao_v2 t
                            WHERE  <![CDATA[DATE_FORMAT(t.`hb_create_time`,'%Y-%m-%d') >= '${startTime}']]>
                                AND <![CDATA[DATE_FORMAT(t.`hb_create_time`,'%Y-%m-%d') < '${endTime}']]>
                            GROUP BY t.hb_uid HAVING num >= ${orderNumber}
                        )hh
                    )
                <if test="channel != null and  channel != 'all' ">
                    AND a.uid is not null
                </if>
            )w
            GROUP BY FROM_UNIXTIME(u.`createtime`/1000,'%Y-%m-%d')
        ORDER BY u.`createtime`
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/mapping/taobao/TaoBaoOrderMapper.xml
@@ -329,12 +329,12 @@
    <select id="countToday" resultType="java.lang.Integer">
        SELECT COUNT(DISTINCT(tb.to_order_id)) FROM `yeshi_ec_taobao_order` tb
        WHERE <![CDATA[tb.`to_order_state`  != '订单失效'  AND TO_DAYS(tb.`to_create_time`) = TO_DAYS(NOW())]]>
        WHERE <![CDATA[tb.`to_order_state`<>'订单失效'  AND TO_DAYS(tb.`to_create_time`) = TO_DAYS(NOW())]]>
    </select>
    <select id="countYesterday" resultType="java.lang.Integer">
        SELECT COUNT(DISTINCT(td.to_order_id))FROM `yeshi_ec_taobao_order` td
        WHERE <![CDATA[td.`to_order_state`  != '订单失效'  AND TO_DAYS(NOW()) - TO_DAYS( td.`to_create_time`) = 1 ]]>
        WHERE <![CDATA[td.`to_order_state`<>'订单失效'  AND TO_DAYS(NOW()) - TO_DAYS( td.`to_create_time`) = 1 ]]>
    </select>
fanli/src/main/java/com/yeshi/fanli/service/impl/count/CommonOrderCountServiceImpl.java
@@ -147,12 +147,14 @@
        
        List<Map<String, Object>> result_list = null;
        
        // 用户订单
        List<Map<String, Object>> listTotal = commonOrderCountMapper.countOrderNumber(dateType, year,
                startTime, endTime);
        if (listTotal == null || listTotal.size() == 0) {
            return result_list;
        } 
        
        // 淘宝联盟
        List<Map<String, Object>> type_list = taoBaoOrderMapper.countOrderNumber(dateType, year, 
                startTime, endTime);
        
fanli/src/main/java/com/yeshi/fanli/service/impl/count/UserInfoCountServiceImpl.java
@@ -2,16 +2,14 @@
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import org.yeshi.utils.DateUtil;
@@ -59,132 +57,233 @@
    }
    @Override
    public List<Map<String, Object>> getTodayBuyRate(String channel,Integer type,String years, String startTime,
    public List<Map<String, Object>> getTodayBuyRate(String channel, Integer dateType,String years, String startTime,
            String endTime) throws Exception {
        
        List<Map<String, Object>> todayNum =
                userInfoMapper.getTodayHasOrder(channel, type, years, startTime, endTime);
        List<Map<String, Object>> result_list = null;
        
        List<Map<String, Object>> listToday =
                userInfoMapper.getTodayHasOrder(channel, dateType, years, startTime, endTime);
        
        if (listToday == null || listToday.size() == 0) {
            return result_list;
        }
        
        return todayNum;
        List<Map<String, Object>> listTotal =
                userInfoMapper.countNewUserByDate(channel, dateType, years, startTime, endTime);
        
        if (listTotal == null || listTotal.size() == 0) {
            return result_list;
        }
        
        switch (dateType){
            case 1: // 按天处理
                result_list = dayFactory(startTime, endTime, listTotal);
                break;
            case 2: // 按月处理
                result_list = monthFactory(listTotal);
                break;
            case 3:
                result_list =  yearFactory(listTotal);
                break;
            default:
                break;
        }
        
        DecimalFormat df = new DecimalFormat("#.00");
        
        for (int i = 0; i < result_list.size(); i++) {
            double proportion = 0;
            Map<String, Object> resultMap = result_list.get(i);
            Object showDate = resultMap.get("showDate");
            for (int j = 0; j < listToday.size(); j++) {
                Map<String, Object> innerMap = listToday.get(j);
                Object innerDate = innerMap.get("showDate");
                if (innerDate != null && innerDate.toString().equals(showDate.toString())) {
                    Object innerValue = innerMap.get("showValue");
                    long innerData = Long.parseLong(innerValue.toString());
                    Object showValue = resultMap.get("showValue");
                    long showData = Long.parseLong(showValue.toString());
                    if (showData > 0) {
                        proportion =  innerData/(double)showData;
                    }
                    break; // 结束内部循环
                }
            }
            resultMap.put("showValue", Double.parseDouble(df.format(proportion *100)));
        }
        return result_list;
    }
    
    
    @Override
    public List<Object> getWeekBuyRate(String channel, String startTime, String endTime,
            Integer orderNum, List<String> dateList)
            throws Exception {
        List<Object> resultList = new ArrayList<Object>();
        if (dateList == null || dateList.size() == 0) {
            return resultList;
        }
        List<Map<String, Object>> totalList = userInfoMapper.countNewUserByDate(channel, 1, null, startTime, endTime);
        if (totalList == null || totalList.size() == 0) {
            return resultList;
        }
        DecimalFormat df = new DecimalFormat("#.00");
        for (int i = 0; i < dateList.size(); i++) {
            double proportion = 0;
            String showDate = dateList.get(i);
            String plusDay = DateUtil.plusDay(7, showDate);
            Map<String, Object> map = userInfoMapper.getWeekHasOrder(channel, showDate, plusDay, orderNum);
            Object showValue = null;
            if (map != null) {
                showValue = map.get("showValue");
                if (showValue != null) {
                    for (int j = 0; j < totalList.size(); j++) {
                        Map<String, Object> mapTotal = totalList.get(j);
                        String reslutTime = mapTotal.get("showDate").toString();
                        if (showDate.equalsIgnoreCase(reslutTime)) {
                            Object totalObject = mapTotal.get("showValue");
                            long hasCount = Long.parseLong(showValue.toString());
                            long total = Long.parseLong(totalObject.toString());
                            if (total > 0) {
                                proportion = hasCount / (double) total;
                            }
                            break;
                        }
                    }
                }
            }
            resultList.add(Double.parseDouble(df.format(proportion * 100)));
        }
        return resultList;
    }
    
public List<Object> dayFactory(String startTime, String endTime, List<Map<String, Object>> list) throws Exception {
        List<Object> listObject = new ArrayList<Object>();
    
    public List<Map<String, Object>> dayFactory(String startTime, String endTime, List<Map<String, Object>> list) throws Exception {
        List<Map<String, Object>> listObject = new ArrayList<Map<String, Object>>();
        if (startTime.equals(endTime)) {
            Map<String, Object> map = list.get(0);
            Object total = map.get("total");
            Object total = map.get("showValue");
            if (total == null) {
                map.put("payMoney", 0);
                map.put("showValue", 0);
            }
            listObject.add(map);
            return listObject;
        }
        String plusDay = "";
        for (int i = 0; i < 1000 ; i++) {
        for (int i = 0; i < 1000; i++) {
            if (i == 0) {
                plusDay = startTime;
            } else {
                plusDay = DateUtil.plusDay(i, startTime);
            }
            Map<String, Object> mapObject = new HashMap<String, Object>();
            Object total = null;
            for (int j = 0; j < list.size(); j++) {
                Map<String, Object> map = list.get(j);
                Object createDate = map.get("createDate");
                Object createDate = map.get("showDate");
                String month = createDate.toString();
                if (plusDay.equalsIgnoreCase(month)) {
                    total = map.get("total");
                    total = map.get("showValue");
                    break;
                }
            }
            if (total == null) {
                total = 0;
            }
            mapObject.put("total", total);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
            Date parseDate = sdf.parse(plusDay.toString());
            mapObject.put("createDate", sdf2.format(parseDate));
            mapObject.put("showValue", total);
            mapObject.put("showDate", plusDay);
            listObject.add(mapObject);
            if (plusDay.equals(endTime)) {
                break; // 时间结束
            }
        }
        return listObject;
    }
    public List<Object> monthFactory(List<Map<String, Object>> list) {
        List<Object> listObject = new ArrayList<Object>();
    public List<Map<String, Object>> monthFactory(List<Map<String, Object>> list) {
        List<Map<String, Object>> listObject = new ArrayList<Map<String, Object>>();
        // 12 个月处理
        for (int i = 1; i <= 12; i++) {
            Map<String, Object> mapObject = new HashMap<String, Object>();
            Object total = null;
            for (int j = 0; j < list.size(); j++) {
                Map<String, Object> map = list.get(j);
                Object createDate = map.get("createDate");
                Object createDate = map.get("showDate");
                String month = createDate.toString();
                if ((i+"").equalsIgnoreCase(month) || i == Integer.parseInt(month)) {
                    total = map.get("total");
                if ((i + "").equalsIgnoreCase(month) || i == Integer.parseInt(month)) {
                    total = map.get("showValue");
                    break;
                }
            }
            if (total == null) {
                total = 0;
            }
            mapObject.put("total", total);
            mapObject.put("showValue", total);
            
            mapObject.put("createDate", i + "月");
            if (i <10) {
                mapObject.put("showDate", "0"+ i);
            } else {
                mapObject.put("showDate", i);
            }
            listObject.add(mapObject);
        }
        return listObject;
    }
    public List<Object> yearFactory(List<Map<String, Object>> list) {
        List<Object> listObject = new ArrayList<Object>();
    public List<Map<String, Object>> yearFactory(List<Map<String, Object>> list) {
        List<Map<String, Object>> listObject = new ArrayList<Map<String, Object>>();
        for (int i = 0; i < list.size(); i++) {
            Map<String, Object> map = list.get(i);
            Object total =  map.get("total");
            Object total = map.get("showValue");
            if (total == null) {
                total = 0;
            }
            map.put("total", total);
            map.put("showValue", total);
            listObject.add(map);
        }
        return listObject;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/count/UserInfoCountService.java
@@ -52,6 +52,11 @@
    public List<Map<String, Object>> countNewUserByDate(String channel,Integer type,String years, String startTime, String endTime) throws Exception;
    
    public List<Map<String, Object>> getTodayBuyRate(String channel, Integer type, String years, String startTime,
            String endTime) throws Exception;
    public List<Object>  getWeekBuyRate(String channel, String startTime, String endTime,
            Integer orderNum, List<String> dateList) throws Exception;
}