admin
2019-02-26 2f50d551c02d5d62360d63fc40169fd14ef75114
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java
@@ -5,6 +5,7 @@
import java.io.InputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
@@ -14,6 +15,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -25,18 +27,27 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.controller.admin.utils.AdminUtils;
import com.yeshi.fanli.entity.admin.UserInfoAdmin;
import com.yeshi.fanli.entity.bus.user.AccountDetails;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.HongBao;
import com.yeshi.fanli.entity.bus.user.MoneyRecord;
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
import com.yeshi.fanli.entity.taobao.PidOrder;
import com.yeshi.fanli.entity.taobao.ScanHistory;
import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.count.UserInfoCountService;
import com.yeshi.fanli.service.inter.goods.ShareService;
@@ -48,8 +59,11 @@
import com.yeshi.fanli.service.inter.user.AccountDetailsService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
import com.yeshi.fanli.service.inter.user.MoneyRecordService;
import com.yeshi.fanli.service.inter.user.ScanHistoryService;
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
@@ -57,7 +71,6 @@
import com.yeshi.fanli.util.HongBaoUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import org.yeshi.utils.JsonUtil;
@Controller
@RequestMapping("admin/new/api/v1/user")
@@ -97,13 +110,21 @@
   @Resource
   private AccountDetailsService accountDetailsService;
   @Resource
   private BindingAccountService bindingAccountService;
   @Resource
   private UserInfoCountService userInfoCountService;
   @Resource
   private UserActiveLogService userActiveLogService;
   @Resource
   private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
   @Resource
   private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
   @RequestMapping(value = "getUserList", method = RequestMethod.POST)
   public void getUserList(int pageIndex, String key, PrintWriter out) {
@@ -590,22 +611,28 @@
      }
   }
   /**
    * 查询用户信息列表--相关数据统计
    *
    * @param callback
    * @param pageIndex
    * @param key   查询条件
    * @param userType   用户类型:金冠、银冠、铜冠
    * @param days    查询天数
    * @param startTime  注册时间
    * @param endTime      注册时间
    * @param orderMode  排序方式  订单数量 今日订单  累计队员
    * @param key
    *            查询条件
    * @param userType
    *            用户类型:金冠、银冠、铜冠
    * @param days
    *            查询天数
    * @param startTime
    *            注册时间
    * @param endTime
    *            注册时间
    * @param orderMode
    *            排序方式 订单数量 今日订单 累计队员
    * @param out
    */
   @RequestMapping(value = "query")
   public void query(String callback, Integer pageIndex, Integer pageSize, String key, Integer userType,
         Integer days, String startTime,   String endTime, Integer orderMode, PrintWriter out) {
   public void query(String callback, Integer pageIndex, Integer pageSize, String key, Integer userType, Integer days,
         String startTime, String endTime, Integer orderMode, PrintWriter out) {
      try {
@@ -625,32 +652,29 @@
         if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
         Integer orderField = null;
         if (orderMode != null) {
            if (orderMode == 1 || orderMode == 2){
            if (orderMode == 1 || orderMode == 2) {
               orderField = orderMode;
               orderMode = 1;
            } else if (orderMode == 3 || orderMode == 4){
            } else if (orderMode == 3 || orderMode == 4) {
               orderField = orderMode;
               orderMode = 2;
            } else if (orderMode == 5 || orderMode == 6){
            } else if (orderMode == 5 || orderMode == 6) {
               orderField = orderMode;
               orderMode = 3;
            }
         }
         List<UserInfoAdmin> userList = userInfoService.query((pageIndex - 1) * pageSize, pageSize,
               key, userType, days, startTime, endTime,orderField, orderMode);
         List<UserInfoAdmin> userList = userInfoService.query((pageIndex - 1) * pageSize, pageSize, key, userType,
               days, startTime, endTime, orderField, orderMode);
         if (userList == null || userList.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
            return;
         }
         //double sumMoney = userInfoService.querySumMoney(key, userType, days, startTime, endTime);
         long count = userInfoService.queryCount(key, userType, days, startTime, endTime);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
@@ -662,9 +686,9 @@
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         //data.put("sumMoney", sumMoney);
         // data.put("sumMoney", sumMoney);
         data.put("resultList", gson.toJson(userList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
@@ -672,22 +696,19 @@
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 统计今日用户总情况
    *
    * @param callback
    * @param out
    */
   @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);
         // 总数-铜用户
@@ -696,40 +717,54 @@
         long countSilver = userInfoCountService.countRank(2);
         // 总数-金用户
         long countGold = userInfoCountService.countRank(3);
         // 统计所有总金额
         double countTotalMoney = userInfoCountService.countAllMoney(null);
         // 统计所有可提现金额
         String minMoney = configService.get(Constant.EXTRACT_MIN_MONEY);
         if (minMoney == null)
            minMoney = "20";
         double min = Double.parseDouble(minMoney);
         double 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);
         /*
          * // 统计所有总金额 BigDecimal countTotalMoney =
          * userInfoCountService.countAllMoney(null);
          *
          * // 统计所有可提现金额 String minMoney =
          * configService.get(Constant.EXTRACT_MIN_MONEY); if (minMoney ==
          * null) { minMoney = "20"; } double min =
          * Double.parseDouble(minMoney); BigDecimal countCanAssets =
          * userInfoCountService.countAllMoney(min);
          * 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));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 修改用户的状态、等级信息
    *
    * @param callback
    * @param userInfo
    * @param out
@@ -737,51 +772,140 @@
   @RequestMapping(value = "setInfo")
   public void setInfo(String callback, UserInfo userInfo, PrintWriter out) {
      try {
         Long id = userInfo.getId();
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         UserInfo currentInfo = userInfoService.selectByPKey(id);
         if (currentInfo == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已不存在"));
            return;
         }
         currentInfo = new UserInfo(id);
         boolean hasChange = false;
         // 等级修改
         Integer rank = userInfo.getRank();
         if (rank != null) {
            hasChange = true;
            currentInfo.setRank(rank);
         }
         // 状态修改
         Integer state = userInfo.getState();
         if (state != null) {
            hasChange = true;
            currentInfo.setState(state);
            if (state != null && state == UserInfo.STATE_FORBIDDEN)
               currentInfo.setStateDesc("管理员封禁");
         }
         if (hasChange) {
            userInfoService.updateByPrimaryKeySelective(currentInfo);
            UserInfo nowUser = userInfoService.selectByPKey(id);
            if (state != null && state == UserInfo.STATE_FORBIDDEN) {
               // 加入封禁的账号列表
               ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
               forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId);
               forbiddenUserIdentifyCode.setIdentifyCode(nowUser.getWxUnionId());
               forbiddenUserIdentifyCode.setBeiZhu(nowUser.getWxName());
               try {
                  forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
               } catch (ForbiddenUserIdentifyCodeException e) {
                  e.printStackTrace();
               }
               // 电话号码
               forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
               forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.phone);
               forbiddenUserIdentifyCode.setIdentifyCode(nowUser.getPhone());
               try {
                  forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
               } catch (ForbiddenUserIdentifyCodeException e) {
                  e.printStackTrace();
               }
               // 淘宝
               UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(nowUser.getId());
               if (taoBao != null && !StringUtil.isNullOrEmpty(taoBao.getTaoBaoUid())) {
                  forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
                  forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.taobaoUid);
                  forbiddenUserIdentifyCode.setIdentifyCode(taoBao.getTaoBaoUid());
                  try {
                     forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
                  } catch (ForbiddenUserIdentifyCodeException e) {
                     e.printStackTrace();
                  }
               }
               // 查询支付宝绑定
               List<BindingAccount> list = bindingAccountService.getBindingAccountByUid(nowUser.getId());
               if (list != null)
                  for (BindingAccount ba : list) {
                     forbiddenUserIdentifyCode = new ForbiddenUserIdentifyCode();
                     forbiddenUserIdentifyCode.setType(ForbiddenUserIdentifyCodeTypeEnum.alipayAccount);
                     forbiddenUserIdentifyCode.setIdentifyCode(ba.getAccount());
                     forbiddenUserIdentifyCode.setBeiZhu(ba.getName());
                     try {
                        forbiddenUserIdentifyCodeService.addIdentifyCode(forbiddenUserIdentifyCode);
                     } catch (ForbiddenUserIdentifyCodeException e) {
                        e.printStackTrace();
                     }
                  }
            } else if (state != null && state == UserInfo.STATE_NORMAL) {
               // 解封微信
               ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
                     .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId,
                           nowUser.getWxUnionId());
               if (forbiddenUserIdentifyCode != null)
                  forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
               // 解封手机
               forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
                     .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, nowUser.getPhone());
               if (forbiddenUserIdentifyCode != null)
                  forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
               // 解封淘宝
               UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(nowUser.getId());
               if (taoBao != null && !StringUtil.isNullOrEmpty(taoBao.getTaoBaoUid())) {
                  forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
                        ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, taoBao.getTaoBaoUid());
                  if (forbiddenUserIdentifyCode != null)
                     forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
               }
               // 解封支付宝
               List<BindingAccount> list = bindingAccountService.getBindingAccountByUid(nowUser.getId());
               if (list != null)
                  for (BindingAccount ba : list) {
                     forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode(
                           ForbiddenUserIdentifyCodeTypeEnum.alipayAccount, ba.getAccount());
                     if (forbiddenUserIdentifyCode != null)
                        forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
                  }
            }
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
         } else {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("无可修改内容"));
         }
      } catch (Exception e) {
      } catch (
      Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
      }
   }
   /**
    * 删除绑定的账户信息: 支付宝  微信
    * 删除绑定的账户信息: 支付宝 微信
    *
    * @param callback
    * @param bindId
    * @param out
@@ -808,7 +932,7 @@
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 
    * @param data
@@ -820,19 +944,17 @@
   @RequestMapping("unBindUserInfo")
   public void unBindUserInfo(String callback, Long id, Integer type, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该用户!"));
            return;
         }
         if (type == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型不可为空!"));
            return;
         }
         UserInfo find = userInfoService.getUserById(id);
         if (find == null) {
@@ -866,48 +988,45 @@
         userInfoService.deleteBindInfo(find, type);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("解绑成功"));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   @RequestMapping(value = "queryMyFirstTeams")
   public void queryMyFirstTeams(String callback, Integer pageIndex, Integer pageSize, String key,
         Long bossId, PrintWriter out) {
   public void queryMyFirstTeams(String callback, Integer pageIndex, Integer pageSize, String key, Long bossId,
         PrintWriter out) {
      try {
         if (bossId == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         if (pageIndex == null)
            pageIndex = 1;
         if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
         List<ThreeSale> firstTeamList =
               threeSaleService.queryMyFirstTeamList((pageIndex - 1) * pageSize, pageSize, key, bossId);
         List<ThreeSale> firstTeamList = threeSaleService.queryMyFirstTeamList((pageIndex - 1) * pageSize, pageSize,
               key, bossId);
         if (firstTeamList == null || firstTeamList.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无一度队员"));
            return;
         }
         /* 获取邀请用户头像 、昵称 */
         for (ThreeSale threeSale: firstTeamList) {
         for (ThreeSale threeSale : firstTeamList) {
            UserInfo worker = threeSale.getWorker();
            if (worker == null) {
               worker = new UserInfo();
               threeSale.setWorker(worker);
            } else{
            } else {
               Long id = worker.getId();
               UserInfo currentInfo = userInfoService.selectByPKey(id);
               if (currentInfo != null) {
                  worker.setNickName(currentInfo.getNickName());
@@ -915,7 +1034,7 @@
               }
            }
         }
         long count = threeSaleService.queryCountMyFirstTeamList(key, bossId);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
@@ -928,49 +1047,47 @@
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("list", gson.toJson(firstTeamList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   @RequestMapping(value = "queryMySecondTeams")
   public void queryMySecondTeams(String callback, Integer pageIndex, Integer pageSize, String key,
         Long bossId, PrintWriter out) {
   public void queryMySecondTeams(String callback, Integer pageIndex, Integer pageSize, String key, Long bossId,
         PrintWriter out) {
      try {
         if (bossId == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         if (pageIndex == null)
            pageIndex = 1;
         if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
         List<ThreeSale> firstTeamList =
               threeSaleService.queryMySecondTeamList((pageIndex - 1) * pageSize, pageSize, key, bossId);
         List<ThreeSale> firstTeamList = threeSaleService.queryMySecondTeamList((pageIndex - 1) * pageSize, pageSize,
               key, bossId);
         if (firstTeamList == null || firstTeamList.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无二度队员"));
            return;
         }
         /* 获取邀请用户头像 、昵称 */
         for (ThreeSale threeSale: firstTeamList) {
         for (ThreeSale threeSale : firstTeamList) {
            UserInfo worker = threeSale.getWorker();
            if (worker == null) {
               worker = new UserInfo();
               threeSale.setWorker(worker);
            } else{
            } else {
               Long id = worker.getId();
               UserInfo currentInfo = userInfoService.selectByPKey(id);
               if (currentInfo != null) {
                  worker.setNickName(currentInfo.getNickName());
@@ -978,7 +1095,7 @@
               }
            }
         }
         long count = threeSaleService.queryCountMySecondTeamList(key, bossId);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
@@ -991,43 +1108,483 @@
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("list", gson.toJson(firstTeamList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   @RequestMapping(value = "deleteThreeSale")
   public void deleteThreeSale(String callback, Long id, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         int count = threeSaleService.deleteByPrimaryKey(id);
         if (count > 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
         } else{
         } else {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         }
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   public static void main(String[] args) {
      java.lang.System.out.println(java.lang.System.currentTimeMillis());
   /**
    * 队员关系
    *
    * @param pageIndex
    * @param key
    * @param state
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getRelationList")
   public void getRelationList(String callback, Integer pageIndex, Integer pageSize, Long uid, Integer type,
         Integer state, String startTime, String endTime, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
      if (pageSize == null || pageSize < 1) {
         pageSize = Constant.PAGE_SIZE;
      }
      try {
         if (!StringUtil.isNullOrEmpty(endTime)) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date enddate = sdf.parse(endTime);
            Calendar c = Calendar.getInstance();
            c.setTime(enddate);
            c.add(Calendar.DAY_OF_MONTH, 1);// 今天+1天
            endTime = sdf.format(c.getTime());
         }
         List<ThreeSale> listQuery = null;
         if (type == 0) {
            // 上级用户
            if (uid == null) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询上级需输入用户id"));
               return;
            }
            listQuery = threeSaleService.listSuperiorQuery((pageIndex - 1) * pageSize, pageSize, state, uid);
         } else if (type == 1) {
            // 一级用户
            listQuery = threeSaleService.listFirstTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, state,
                  startTime, endTime);
         } else if (type == 2) {
            // 二级用户
            listQuery = threeSaleService.listSecondTeamQuery((pageIndex - 1) * pageSize, pageSize, uid, state,
                  startTime, endTime);
         }
         if (listQuery == null || listQuery.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         for (ThreeSale threeSale : listQuery) {
            Integer expire = threeSale.getExpire();
            if (threeSale.getState()) {
               threeSale.setExpire(1); // 邀请成功
            } else {
               if (expire != null && expire == 1) {
                  threeSale.setExpire(2); // 邀请失效
               } else {
                  threeSale.setExpire(0);// 已邀请
               }
            }
         }
         long count = 0;
         if (type == 0) {
            // 上级用户
            count = threeSaleService.countSuperiorQuery(state, uid);
         } else if (type == 1) {
            // 一级用户
            count = threeSaleService.countFirstTeamQuery(uid, state, startTime, endTime);
         } else if (type == 2) {
            // 二级用户
            count = threeSaleService.countSecondTeamQuery(uid, state, startTime, endTime);
         }
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", listQuery);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
         e.printStackTrace();
      }
   }
}
   /**
    * 用户账户明细
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param id
    * @param out
    */
   @RequestMapping(value = "getAccountDetails")
   public void getAccountDetails(String callback, Integer pageIndex, Integer pageSize, Long uid, PrintWriter out) {
      if (pageIndex == null || pageIndex < 1) {
         pageIndex = 1;
      }
      if (pageSize == null || pageSize < 1) {
         pageSize = Constant.PAGE_SIZE;
      }
      if (uid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
         return;
      }
      try {
         List<AccountDetails> detailsList = accountDetailsService.findAccountDetailsList(uid, pageIndex);
         if (detailsList == null || detailsList.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         int count = accountDetailsService.getCount(uid);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", GsonUtil.toJsonExpose(detailsList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
      }
   }
   /**
    * 根据渠道 统计当日新增用户数量
    *
    * @param channelArray
    *            名字数组
    * @param dateType
    *            类型 1日 2月 3年
    * @param year
    *            2018
    * @param startTime
    *            2018-12-01
    * @param endTime
    *            2018-12-01
    * @param out
    */
   @RequestMapping(value = "getNewUserCharts")
   public void getNewUserCharts(String callback, String channelArray, Integer dateType, String year, String startTime,
         String endTime, PrintWriter out) {
      String validateMsg = AdminUtils.validateParams(dateType, startTime, endTime);
      if (validateMsg != null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg));
         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();
         Object objectDate = null;
         List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
         JSONArray line_list = new JSONArray();
         for (String channel : channelList) {
            List<Map<String, Object>> list = userInfoCountService.countNewUserByDate(channel, dateType, year,
                  startTime, endTime);
            if ("all".equalsIgnoreCase(channel)) {
               channel = "总计";
            }
            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));
         }
         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 channelArray
    *            名字数组
    * @param dateType
    *            类型 1日 2月 3年
    * @param year
    *            2018
    * @param startTime
    *            2018-12-01
    * @param endTime
    *            2018-12-01
    * @param out
    */
   @RequestMapping(value = "getTodayBuyRate")
   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();
         Object objectDate = null;
         List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
         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 = "总计";
            }
            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));
         }
         data.put("line_list", line_list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 当周产生3单的新增用户概率
    *
    * @param callback
    * @param channelArray
    *            渠道名称
    * @param startTime
    * @param endTime
    * @param orderNum
    *            订单数量
    * @param out
    */
   @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("当周订单统计对应时间区域不能为空"));
         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 {
         Gson gson = new Gson();
         List<String> dateList = AdminUtils.getDateList(1, startTime, endTime, null);
         JSONArray line_list = new JSONArray();
         for (String channel : channelList) {
            List<Object> list = userInfoCountService.getWeekBuyRate(channel, startTime, endTime, orderNum,
                  dateList);
            if ("all".equalsIgnoreCase(channel)) {
               channel = "总计";
            }
            JSONObject innerList = new JSONObject();
            innerList.put("name", channel);
            innerList.put("data", gson.toJson(list));
            line_list.add(innerList);
         }
         JSONObject data = new JSONObject();
         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();
      }
   }
}