yujian
2019-10-08 0c78c7aaeaa5a427bc8a5c5faf3cd6bbb589c2da
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java
@@ -1,79 +1,51 @@
package com.yeshi.fanli.controller.admin;
import java.io.File;
import java.io.FileInputStream;
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;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
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.dto.money.AccountDetails;
import com.yeshi.fanli.entity.admin.UserInfoAdmin;
import com.yeshi.fanli.dto.ChartTDO;
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.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
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.UserRank;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
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;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.order.OrderItemServcie;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.PidOrderService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
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.UserAccountService;
import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyDetailService;
import com.yeshi.fanli.service.inter.user.UserRankService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.GsonUtil;
import com.yeshi.fanli.util.HongBaoUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.AccountDetailsFactory;
import com.yeshi.fanli.vo.user.ForbiddenUserIdentifyCodeVO;
import com.yeshi.fanli.vo.user.UserGoldCoinVO;
import com.yeshi.fanli.vo.user.UserInfoVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -85,43 +57,13 @@
   private UserInfoService userInfoService;
   @Resource
   private MoneyRecordService moneyRecordService;
   @Resource
   private OrderService orderService;
   @Resource
   private ScanHistoryService scanHistoryService;
   @Resource
   private ConfigService configService;
   @Resource
   private HongBaoService hongBaoService;
   @Resource
   private ExtractService extractService;
   @Resource
   private ThreeSaleSerivce threeSaleService;
   @Resource
   private OrderItemServcie orderItemService;
   @Resource
   private ShareService shareService;
   @Resource
   private PidOrderService pidOrderService;
   @Resource
   private BindingAccountService bindingAccountService;
   @Resource
   private UserInfoCountService userInfoCountService;
   @Resource
   private UserActiveLogService userActiveLogService;
   @Resource
   private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
@@ -134,497 +76,18 @@
   @Resource
   private UserRankService userRankService;
   @Resource
   private UserMoneyDetailService userMoneyDetailService;
   @RequestMapping(value = "getUserList", method = RequestMethod.POST)
   public void getUserList(int pageIndex, String key, PrintWriter out) {
   @Resource
   private UserInfoDeleteRecordService userInfoDeleteRecordService;
      List<UserInfo> userList = userInfoService.getUserList(pageIndex - 1, key);
      int count = userInfoService.getUserCount(key);
      int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
      PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
      Map<String, String> map = new HashMap<String, String>();
      map.put("key", key);
      pe.setParams(map);
      JSONObject data = new JSONObject();
      data.put("pe", pe);
      data.put("userList", userList);
      out.print(JsonUtil.loadTrueResult(data));
   }
   @Resource
   private UserAccountService userAccountService;
   /**
    *
    * 方法说明: 三级分销
    *
    * @author mawurui createTime 2018年5月21日 下午4:55:07
    * @param pageIndex
    * @param key
    * @param out
    */
   @RequestMapping(value = "getThreeSaleList", method = RequestMethod.POST)
   public void getThreeSaleList(int pageIndex, String key, PrintWriter out) {
      List<ThreeSale> list = threeSaleService.getLastestThreeSaleList(pageIndex, key);
      int count = threeSaleService.getLastestThreeSaleCount(key);
      int totalPage = (int) (count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE
            : count / Constant.PAGE_SIZE + 1);
      PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
      Map<String, String> map = new HashMap<String, String>();
      map.put("key", key);
      pe.setParams(map);
      JSONObject data = new JSONObject();
      data.put("pe", pe);
      data.put("threeSaleList", list);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * 方法说明: 查询所有用户分享赚列表
    *
    * @author mawurui createTime 2018年4月24日 下午3:37:13
    * @param pageIndex
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getShareMoneyList", method = RequestMethod.POST)
   public void getShareList(int pageIndex, PrintWriter out, String key) {
      // int totalCount = shareService.getShareMoneyCount();
      // PageEntity pageEntity = new PageEntity();
      // pageEntity.setPageIndex(pageIndex);
      // pageEntity.setPageSize(Constant.PAGE_SIZE);
      // pageEntity.setTotalCount(totalCount);
      int count = shareService.getCountByKey(key);
      int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
      PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
      List<PidOrder> shareMoneyList = shareService.getShareMoneyList(pageIndex, key);
      JSONObject data = new JSONObject();
      data.put("pageEntity", pe);
      data.put("shareMoneyList", JsonUtil.getSimpleGsonWithDate().toJson(shareMoneyList));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * @param pageIndex
    * @param type
    *            1- 1级分销 2-2级分销
    * @param uid
    * @param key
    * @param out
    */
   @RequestMapping(value = "getThreeSaleDetailList", method = RequestMethod.POST)
   public void getThreeSaleDetailList(int pageIndex, int type, long uid, String key, PrintWriter out) {
      List<UserInfo> userList = null;
      long count = 0;
      if (type == 1) {
         userList = threeSaleService.getFirstUsers(uid, pageIndex);
         count = threeSaleService.getFirstUsersCount(uid);
      } else if (type == 2) {
         userList = threeSaleService.getSecondUsers(uid, pageIndex);
         count = threeSaleService.getSecondUsersCount(uid);
      }
      int totalPage = (int) (count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE
            : count / Constant.PAGE_SIZE + 1);
      PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
      Map<String, String> map = new HashMap<String, String>();
      map.put("key", key);
      pe.setParams(map);
      JSONObject data = new JSONObject();
      data.put("pe", pe);
      data.put("userList", userList);
      out.print(JsonUtil.loadTrueResult(data));
   }
   @RequestMapping(value = "getUserListByUid", method = RequestMethod.POST)
   public void getUserListByUid(long uid, PrintWriter out) {
      List<UserInfo> userList = userInfoService.getUserListByUid(uid);
      int count = userList.size();
      int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
      PageEntity pe = new PageEntity(1, Constant.PAGE_SIZE, count, totalPage);
      Map<String, String> map = new HashMap<String, String>();
      pe.setParams(map);
      JSONObject data = new JSONObject();
      data.put("pe", pe);
      data.put("userList", userList);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * 方法说明: 查询用户订单状态
    *
    * @author mawurui createTime 2018年5月17日 上午10:55:41
    * @param pageIndex
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getUserOrderList", method = RequestMethod.POST)
   public void getUserOrderList(int pageIndex, long uid, PrintWriter out) {
      List<Order> orderList = orderService.getOrderByUid(pageIndex - 1, uid);
      int count = orderService.getCount(uid);
      int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
      PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
      JSONObject data = new JSONObject();
      data.put("pe", pe);
      data.put("orderList", JsonUtil.getSimpleGsonWithDateAndSerialization().toJson(orderList));
      out.print(JsonUtil.loadTrueResult(data));
   }
   @RequestMapping(value = "getMoneyRecordList", method = RequestMethod.POST)
   public void getMoneyRecordList(int pageIndex, long uid, PrintWriter out) {
      List<MoneyRecord> moneyRecordList = moneyRecordService.getMoneyRecord(uid, pageIndex - 1);
      if (moneyRecordList != null)
         for (MoneyRecord mr : moneyRecordList) {
            mr.setExtract(null);
            mr.setUserInfo(null);
            mr.setHongBao(null);
         }
      int count = moneyRecordService.getCount(uid);
      int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
      PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
      JSONObject data = new JSONObject();
      data.put("pe", pe);
      data.put("moneyRecordList", GsonUtil.toJsonExpose(moneyRecordList));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * 方法说明: 查询用户-红包详情列表
    *
    * @author mawurui createTime 2018年5月10日 上午11:48:58
    * @param pageIndex
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getHongBaoList", method = RequestMethod.POST)
   public void getHongBaoList(int pageIndex, long uid, PrintWriter out) {
      JSONObject data = new JSONObject();
      List<HongBao> list = hongBaoService.getHongBaoList(pageIndex, uid);
      if (list.size() != 0 || list != null) {
         for (HongBao hb : list) {
            int hbType = hb.getType();
            if (hbType == HongBao.TYPE_SHARE_GOODS) { // type == 20
               Long hongbaoId = hb.getId();
               PidOrder pidOrder = pidOrderService.getPidOrderByHongBaoId(hongbaoId);
               Order order = new Order();
               order.setThirdCreateTime(pidOrder.getOrderCreateTime());
               order.setOrderId(pidOrder.getOrderId());
               order.setThirdState(pidOrder.getState());
               order.setMoney(pidOrder.getPayMoney());
               hb.setOrder(order);
            } else if (hbType == HongBao.TYPE_SHARE_YIJI || hbType == HongBao.TYPE_SHARE_ERJI) {
               Long hongbaoId = hb.getParent().getId();
               PidOrder pidOrder = pidOrderService.getPidOrderByHongBaoId(hongbaoId);
               Order order = new Order();
               order.setThirdCreateTime(pidOrder.getOrderCreateTime());
               order.setOrderId(pidOrder.getOrderId());
               order.setThirdState(pidOrder.getState());
               order.setMoney(pidOrder.getPayMoney());
               hb.setOrder(order);
            } else if (hbType == HongBao.TYPE_XINREN) {
               Order order = new Order();
               Long createtime = hb.getCreatetime();
               if (createtime != null) {
                  Date ThirdCreateTime = new Date(createtime);
                  order.setThirdCreateTime(ThirdCreateTime);
               }
               hb.setOrder(order);
            } else if (hb.getParent() != null) {
               hb.setOrder(hb.getParent().getOrder());
            }
         }
      }
      int count = hongBaoService.getCount(uid);
      PageEntity pe = new PageEntity();
      pe.setPageIndex(pageIndex);
      pe.setPageSize(Constant.PAGE_SIZE);
      pe.setTotalCount(count);
      data.put("pe", pe);
      data.put("list", JsonUtil.getSimpleGsonWithDateAndSerialization().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * 方法说明: 查询 分享赚页面列表
    *
    * @author mawurui createTime 2018年4月16日 上午9:54:39
    * @param pageIndex
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getShareList", method = RequestMethod.POST)
   public void getShareList(int pageIndex, long uid, PrintWriter out) {
      int totalCount = shareService.getCount(uid);
      PageEntity pageEntity = new PageEntity();
      pageEntity.setPageIndex(pageIndex);
      pageEntity.setPageSize(Constant.PAGE_SIZE);
      pageEntity.setTotalCount(totalCount);
      List<HongBao> shareList = shareService.getShareList(pageIndex, uid);
      if (shareList.size() != 0 || shareList != null) {
         for (HongBao hb : shareList) {
            int hbType = hb.getType();
            if (hbType == HongBao.TYPE_SHARE_GOODS) { // type == 20
               Long hongbaoId = hb.getId();
               PidOrder pidOrder = pidOrderService.getPidOrderByHongBaoId(hongbaoId);
               Order order = new Order();
               order.setThirdCreateTime(pidOrder.getCreateTime());
               order.setThirdState(pidOrder.getState());
               hb.setOrder(order);
            } else if (hb.getParent() != null) {
               hb.setOrder(hb.getParent().getOrder());
            }
         }
      }
      JSONObject data = new JSONObject();
      data.put("pageEntity", pageEntity);
      data.put("shareList", GsonUtil.toJsonExpose(shareList));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * 方法说明: 查询 邀请赚页面列表
    *
    * @author mawurui createTime 2018年4月16日 上午9:54:39
    * @param pageIndex
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getInviteList", method = RequestMethod.POST)
   public void getInviteList(int pageIndex, long uid, PrintWriter out) {
      int totalCount = shareService.getInviteCount(uid);
      PageEntity pageEntity = new PageEntity();
      pageEntity.setPageIndex(pageIndex);
      pageEntity.setPageSize(Constant.PAGE_SIZE);
      pageEntity.setTotalCount(totalCount);
      List<HongBao> inviteList = shareService.getInviteList(pageIndex, uid);
      if (inviteList.size() != 0 || inviteList != null) {
         for (HongBao hb : inviteList) {
            int hbType = hb.getType();
            if (hbType == HongBao.TYPE_SHARE_GOODS) { // type == 20
               Long hongbaoId = hb.getId();
               PidOrder pidOrder = pidOrderService.getPidOrderByHongBaoId(hongbaoId);
               Order order = new Order();
               order.setThirdCreateTime(pidOrder.getCreateTime());
               order.setThirdState(pidOrder.getState());
               hb.setOrder(order);
            } else if (hb.getParent() != null) {
               hb.setOrder(hb.getParent().getOrder());
            }
         }
      }
      JSONObject data = new JSONObject();
      data.put("pageEntity", pageEntity);
      data.put("inviteList", JsonUtil.getSimpleGsonWithDateAndSerialization().toJson(inviteList));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * 方法说明: 清除用户手势密码
    *
    * @author mawurui createTime 2018年5月4日 下午4:47:29
    * @param uid
    * @param out
    */
   @RequestMapping(value = "cleanPassword", method = RequestMethod.POST)
   public void cleanPassword(long id, PrintWriter out) {
      userInfoService.cleanPassword(id);
      out.print(JsonUtil.loadTrueResult("清除成功"));
   }
   @RequestMapping(value = "getScanHistoryList", method = RequestMethod.POST)
   public void getScanHistoryList(int pageIndex, long uid, PrintWriter out) {
      List<ScanHistory> scanHistoryList = scanHistoryService.getScanHistoryByUid(pageIndex - 1, uid);
      int count = scanHistoryService.getCountByUid(uid);
      int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1;
      PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage);
      JSONObject data = new JSONObject();
      data.put("pe", pe);
      data.put("scanHistoryList", GsonUtil.toDFJson(scanHistoryList));
      out.print(JsonUtil.loadTrueResult(data));
   }
   @RequestMapping(value = "getAssets", method = RequestMethod.POST)
   public void getAssets(PrintWriter out) {
      String minMoney = configService.get(Constant.EXTRACT_MIN_MONEY);
      double min = Double.parseDouble(minMoney);
      double freeze = userInfoService.getFreezeAssets(min);
      double canAssets = userInfoService.getCanAssets(min);
      JSONObject data = new JSONObject();
      data.put("freeze", freeze);
      data.put("can", canAssets);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    *
    * 方法说明: Excel表格下载
    *
    * @author mawurui createTime 2018年5月21日 下午2:14:44
    * @param uid
    * @param response
    */
   @SuppressWarnings("unused")
   @RequestMapping(value = "downDetailedExcel", produces = { "application/vnd.ms-excel;charset=UTF-8" })
   public void downDetailedExcel(long uid, HttpServletResponse response) {
      try {
         List<HongBao> list = hongBaoService.getHongBaoListAll(uid);
         if (list.size() != 0 || list != null) {
            for (HongBao hb : list) {
               int hbType = hb.getType();
               if (hbType == HongBao.TYPE_SHARE_GOODS) { // type == 20
                  Long hongbaoId = hb.getId();
                  PidOrder pidOrder = pidOrderService.getPidOrderByHongBaoId(hongbaoId);
                  Order order = new Order();
                  order.setOrderId(pidOrder.getOrderId());
                  order.setMoney(pidOrder.getPayMoney());
                  order.setThirdCreateTime(pidOrder.getCreateTime());
                  order.setThirdState(pidOrder.getState());
                  hb.setOrder(order);
               } else if (hbType == HongBao.TYPE_SHARE_ERJI || hbType == HongBao.TYPE_SHARE_YIJI) { // type
                                                                                 // ==
                  Long hongbaoId = hb.getParent().getId();
                  PidOrder pidOrder = pidOrderService.getPidOrderByHongBaoId(hongbaoId);
                  Order order = new Order();
                  order.setOrderId(pidOrder.getOrderId());
                  order.setMoney(pidOrder.getPayMoney());
                  order.setThirdCreateTime(pidOrder.getCreateTime());
                  order.setThirdState(pidOrder.getState());
                  hb.setOrder(order);
               } else if (hb.getParent() != null) {
                  hb.setOrder(hb.getParent().getOrder());
               }
            }
         }
         File desc = new File(this.getClass().getResource("/muban.xls").toURI());
         InputStream inStream = new FileInputStream(desc);
         Workbook wb = new HSSFWorkbook(inStream);
         Sheet sheet = wb.getSheetAt(0);
         int i = 1;
         for (; i <= list.size(); i++) {
            Row row = sheet.createRow(i);
            for (int c = 1; c < 10; c++) {
               row.createCell(c);
            }
            Cell cell = row.createCell(1);
            HongBao hongBao = list.get(i - 1);
            long createtime = hongBao.getCreatetime();
            String create = TimeUtil.getWholeTime(createtime);
            cell.setCellValue(create);
            Cell cell2 = row.getCell(2);
            String title = HongBaoUtil.getHongBaoTitle(hongBao.getType());
            cell2.setCellValue(title);
            Order order = hongBao.getOrder();
            if (order != null) {
               Cell cell3 = row.getCell(3);
               Integer orderType = order.getOrderType();
               if (orderType == null) {
                  orderType = 1;
               }
               cell3.setCellValue(orderType == 1 ? "淘宝" : "其他");
               String orderId = order.getOrderId();
               if (orderId == null) {
                  orderId = "";
               }
               Cell cell4 = row.getCell(4);
               cell4.setCellValue(orderId);
               Cell cell5 = row.getCell(5);
               // List<Order>
               // orderItemService.findByOrderId(order.getId());
               cell5.setCellValue(order.getMoney().doubleValue());
               Cell cell6 = row.getCell(6);
               String stateStr = order.getThirdState();
               cell6.setCellValue(stateStr);
               /*
                * Cell cell11 = row.getCell(11); //下单时间 long orderTime =
                * order.getCreatetime(); String oTime =
                * TimeUtil.getWholeTime(orderTime);
                * cell11.setCellValue(oTime);
                */
            } else if (order == null) {
               Cell cell3 = row.getCell(3);
               cell3.setCellValue("淘宝");
               Cell cell4 = row.getCell(4);
               cell4.setCellValue("");
               Cell cell5 = row.getCell(5);
               cell5.setCellValue("");
               Cell cell6 = row.getCell(6);
               cell6.setCellValue("");
            } else if (hongBao.getParent() != null) {// 属于分销红包
               String orderId = "";
               if (hongBao.getParent().getParent() != null) {
                  orderId = hongBao.getParent().getParent().getOrder().getOrderId();
               } else {
                  orderId = hongBao.getParent().getOrder().getOrderId();
               }
               Cell cell4 = row.getCell(4);
               cell4.setCellValue(orderId);
            }
            Cell cell7 = row.getCell(7);
            cell7.setCellValue(hongBao.getMoney().doubleValue());
            Cell cell8 = row.getCell(8);
            cell8.setCellValue(HongBaoUtil.convertState(hongBao.getState()));
            Cell cell9 = row.getCell(9);
            if (hongBao.getGetTime() != 0) {
               cell9.setCellValue(TimeUtil.getWholeTime(hongBao.getGetTime()));
            }
         }
         List<Extract> extractList = extractService.getExtractInfoByUid(uid);
         int ii = i;
         for (int m = 0; m < extractList.size(); m++, ii++) {
            Row row = sheet.createRow(ii);
            for (int c = 1; c < 10; c++) {
               row.createCell(c);
            }
            Cell cell = row.getCell(1);
            Extract extract = extractList.get(m);
            cell.setCellValue(TimeUtil.getWholeTime(extract.getExtractTime()));
            Cell cell2 = row.getCell(2);
            cell2.setCellValue("提现");
            Cell cell7 = row.getCell(7);
            cell7.setCellValue(-extract.getMoney().doubleValue());
         }
         CellRangeAddress cellRangeAddress = new CellRangeAddress(0, sheet.getLastRowNum(), 1, 9);
         sheet.setAutoFilter(cellRangeAddress);
         wb.write(response.getOutputStream());
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   /**
    * 查询用户信息列表--相关数据统计
    * 查询用户信息列表 正常用户/异常用户
    * 
    * @param callback
    * @param pageIndex
@@ -643,20 +106,13 @@
    * @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 keyType, Integer rank,
         Integer days, String startTime, String endTime, Integer orderMode, Integer type, PrintWriter out) {
      try {
         // 结束时间 2018-06-06 00:00:00 加上一天
         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());
         if (type == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户类型type不能为空"));
            return;
         }
         if (pageIndex == null)
@@ -679,15 +135,35 @@
            }
         }
         List<UserInfoAdmin> userList = userInfoService.query((pageIndex - 1) * pageSize, pageSize, key, userType,
               days, startTime, endTime, orderField, orderMode);
         String userRank = null;
         if (rank != null) {
            switch (rank) {
            case 1:
               userRank = "青铜";
               break;
            case 2:
               userRank = "白银";
               break;
            case 3:
               userRank = "黄金";
               break;
            case 4:
               userRank = "铂金";
               break;
            default:
               break;
            }
         }
         List<UserInfoVO> userList = userInfoService.query((pageIndex - 1) * pageSize, pageSize, type, key, keyType,
               userRank, days, startTime, endTime, orderField, orderMode);
         if (userList == null || userList.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
            return;
         }
         long count = userInfoService.queryCount(key, userType, days, startTime, endTime);
         long count = userInfoService.queryCount(type, key, keyType, userRank, days, startTime, endTime);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
@@ -698,7 +174,6 @@
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         // data.put("sumMoney", sumMoney);
         data.put("resultList", gson.toJson(userList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
@@ -796,177 +271,6 @@
   }
   /**
    * 修改用户的状态、等级信息
    *
    * @param callback
    * @param userInfo
    * @param out
    */
   @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) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("修改失败"));
      }
   }
   /**
    * 删除绑定的账户信息: 支付宝 微信
    *
    * @param callback
    * @param bindId
    * @param out
    */
   @RequestMapping(value = "deleteBindingAccount")
   public void deleteBindingAccount(String callback, Long bindId, PrintWriter out) {
      try {
         if (bindId == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         int count = bindingAccountService.deleteByPrimaryKey(bindId);
         if (count > 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
         } else {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         }
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 
    * @param data
    * @param uid
@@ -975,52 +279,239 @@
    *            需要解绑的账户类型
    */
   @RequestMapping("unBindUserInfo")
   public void unBindUserInfo(String callback, Long id, Integer type, PrintWriter out) {
   public void unBindUserInfo(String callback, Long uid, String typeArray, PrintWriter out) {
      try {
         if (id == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该用户!"));
         if (typeArray == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("没有可更改的内容"));
            return;
         }
         if (type == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型不可为空!"));
         Gson gson = new Gson();
         List<Integer> list = gson.fromJson(typeArray, new TypeToken<ArrayList<Integer>>() {
         }.getType());
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("没有可更改的内容"));
            return;
         }
         UserInfo find = userInfoService.getUserById(id);
         if (uid == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户id不能为空"));
            return;
         }
         UserInfo find = userInfoService.getUserById(uid);
         if (find == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该用户!"));
            return;
         }
         String openid = find.getOpenid();
         String wxUnionId = find.getWxUnionId();
         String phone = find.getPhone();
         if (1 == type) {
            if (StringUtil.isNullOrEmpty(openid)) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定支付宝!"));
         for (Integer type : list) {
            String openid = find.getOpenid();
            String wxUnionId = find.getWxUnionId();
            String phone = find.getPhone();
            if (1 == type) {
               if (StringUtil.isNullOrEmpty(openid)) {
                  JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定淘宝!"));
                  return;
               } else {
                  userInfoService.deleteBindInfo(find, type);
               }
            } else if (2 == type) {
               if (StringUtil.isNullOrEmpty(wxUnionId)) {
                  JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定微信!"));
                  return;
               } else {
                  userInfoService.deleteBindInfo(find, type);
               }
            } else if (3 == type) {
               if (StringUtil.isNullOrEmpty(phone)) {
                  JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定手机号!"));
                  return;
               } else {
                  userInfoService.deleteBindInfo(find, type);
               }
            } else if (4 == type) {
               // 查询支付宝绑定
               BindingAccount account = bindingAccountService.getBindingAccountByUidAndType(uid,
                     BindingAccount.TYPE_ALIPAY);
               if (account == null) {
                  JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定支付宝!"));
                  return;
               } else {
                  bindingAccountService.deleteBindingAccount(account);
               }
            } else {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型不匹配!"));
               return;
            }
         } else if (2 == type) {
            if (StringUtil.isNullOrEmpty(wxUnionId)) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定微信!"));
               return;
            }
         } else if (3 == type) {
            if (StringUtil.isNullOrEmpty(phone)) {
               JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前用户未绑定手机号!"));
               return;
            }
         } else {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型有误!"));
         }
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("解绑成功"));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 封禁用户ID
    *
    * @param callback
    * @param uid
    * @param out
    */
   @RequestMapping(value = "forbiddenUser")
   public void forbiddenUser(String callback, Long uid, HttpServletRequest request, PrintWriter out) {
      try {
         if (uid == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         userInfoService.deleteBindInfo(find, type);
         UserInfo currentInfo = userInfoService.selectByPKey(uid);
         if (currentInfo == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已不存在"));
            return;
         }
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("解绑成功"));
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         if (admin == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("登录失效,请登录"));
            return;
         }
         String reason = "后台封禁,操作人:" + admin.getId() + "-" + admin.getName();
         userAccountService.forbiddenUserAll(uid, reason);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("用户封禁成功"));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
      }
   }
   /**
    * 解除封禁用户ID
    *
    * @param callback
    * @param uid
    * @param out
    */
   @RequestMapping(value = "relieveForbiddenUser")
   public void relieveForbiddenUser(String callback, Long uid, PrintWriter out) {
      try {
         if (uid == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         UserInfo currentInfo = userInfoService.selectByPKey(uid);
         if (currentInfo == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已不存在"));
            return;
         }
         currentInfo.setState(UserInfo.STATE_NORMAL);
         currentInfo.setStateDesc("管理员已解封");
         userInfoService.updateByPrimaryKeySelective(currentInfo);
         // 解封微信
         ForbiddenUserIdentifyCode forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
               .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.wxUnionId, currentInfo.getWxUnionId());
         if (forbiddenUserIdentifyCode != null)
            forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
         // 解封手机
         forbiddenUserIdentifyCode = forbiddenUserIdentifyCodeService
               .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, currentInfo.getPhone());
         if (forbiddenUserIdentifyCode != null)
            forbiddenUserIdentifyCodeService.delete(forbiddenUserIdentifyCode);
         // 解封淘宝
         UserExtraTaoBaoInfo taoBao = userExtraTaoBaoInfoService.getByUid(uid);
         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(uid);
         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("用户解封成功"));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
      }
   }
   /**
    * 用户账号- 封禁/解封
    *
    * @param callback
    * @param code
    * @param type
    *            1("微信unionId"), 2("淘宝ID"), 3("手机号"), 4("支付宝账号");
    * @param out
    */
   @RequestMapping(value = "saveForbiddenInfo")
   public void saveForbiddenInfo(String callback, String code, Integer type, PrintWriter out) {
      try {
         if (code == null || code.trim().length() == 0 || type == null || "NULL".equalsIgnoreCase(code)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不能为空"));
            return;
         }
         forbiddenUserIdentifyCodeService.saveForbiddenInfo(code, type);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
      } catch (ForbiddenUserIdentifyCodeException e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 删除队员关系
    *
    * @param callback
    * @param id
    * @param out
    */
   @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 {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         }
      } catch (Exception e) {
         e.printStackTrace();
@@ -1150,29 +641,6 @@
      }
   }
   @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 {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         }
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 队员关系
    * 
@@ -1294,7 +762,6 @@
      }
      try {
         List<UserMoneyDetail> userMoneyDetailsList = userMoneyDetailService.listByUidWithState(uid, pageIndex,
               pageSize);
         if (userMoneyDetailsList == null || userMoneyDetailsList.size() == 0) {
@@ -1302,18 +769,15 @@
            return;
         }
         List<AccountDetails> detailList = new ArrayList<>();
         for (UserMoneyDetail detail : userMoneyDetailsList)
            detailList.add(AccountDetailsFactory.create(detail));
         long count = userMoneyDetailService.countByUidWithState(uid);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", GsonUtil.toJsonExpose(detailList));
         data.put("result_list", gson.toJson(userMoneyDetailsList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
@@ -1394,7 +858,7 @@
         JSONArray line_list = new JSONArray();
         for (String channel : channelList) {
            List<Map<String, Object>> list = userInfoCountService.countNewUserByDate(channel, dateType, year,
            List<ChartTDO> list = userInfoCountService.countNewUserByDate(channel, dateType, year,
                  startTime, endTime);
            if ("all".equalsIgnoreCase(channel)) {
@@ -1512,7 +976,7 @@
         JSONArray line_list = new JSONArray();
         for (String channel : channelList) {
            List<Map<String, Object>> list = userInfoCountService.getTodayBuyRate(channel, dateType, year,
            List<ChartTDO> list = userInfoCountService.getTodayBuyRate(channel, dateType, year,
                  startTime, endTime);
            if ("all".equalsIgnoreCase(channel)) {
@@ -1627,82 +1091,48 @@
   
   /**
    * 查询封禁
    * 获取金币排行榜
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param key
    * @param type
    * @param out
    */
   @RequestMapping(value = "forbiddenQuery")
   public void forbiddenQuery(String callback, Integer pageIndex, Integer pageSize, String key, Integer type, PrintWriter out) {
      try {
         if (pageIndex == null)
            pageIndex = 1;
         if (pageSize == null)
            pageSize = Constant.PAGE_SIZE;
         List<ForbiddenUserIdentifyCodeVO> list = forbiddenUserIdentifyCodeService.listQuery((pageIndex - 1) * pageSize,
               pageSize, key, type);
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
            return;
         }
         long count = forbiddenUserIdentifyCodeService.countQuery(key, type);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
         GsonBuilder gsonBuilder = new GsonBuilder();
         gsonBuilder.serializeNulls();
         Gson gson = gsonBuilder.create();
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", gson.toJson(list));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 用户账号- 封禁/解封
    * @param callback
    * @param code
    * @param type 1("微信unionId"), 2("淘宝ID"), 3("手机号"), 4("支付宝账号");
    * @param out
    */
   @RequestMapping(value = "saveForbiddenInfo")
   public void saveForbiddenInfo(String callback, String code, Integer type, boolean state, PrintWriter out) {
      try {
         if (code == null || code.trim().length() == 0 || type == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不能为空"));
         }
         forbiddenUserIdentifyCodeService.saveForbiddenInfo(code, type, state);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功"));
      } catch (ForbiddenUserIdentifyCodeException e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
   @RequestMapping(value = "getGoldTop")
   public void getGoldTop(String callback, Integer pageIndex, Integer pageSize, Integer type,
         PrintWriter out) {
      if (type == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("type不能为空"));
         return;
      }
      
      if (pageIndex == null)
         pageIndex = 1;
      if (pageSize == null)
         pageSize = 50;
      long count = 0;
      List<UserGoldCoinVO> list = null;
      if (type == 0) {
         count = userInfoCountService.countByHasGoldCoin();
         list = userInfoCountService.listByHasGoldCoin((pageIndex - 1) * pageSize, pageSize);
      } else if (type == 1 || type == 2) {
         count = userInfoCountService.countByUserGoldCoin(type);
         list = userInfoCountService.listByUserGoldCoin((pageIndex - 1) * pageSize, pageSize, type);
      }
      if(list == null)
         list = new ArrayList<>();
      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("list", list);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
   
}