admin
2020-02-18 ddf5db7d31af51fcf697eac0cee7dd46ff73bcc1
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java
@@ -5,56 +5,58 @@
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.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.IPUtil;
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.admin.count.CountUserInfo;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum;
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.UserActiveNumHistory;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserRank;
import com.yeshi.fanli.entity.bus.user.vip.UserVIPInfo;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
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.exception.user.vip.UserVIPInfoException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.count.UserInfoCountService;
import com.yeshi.fanli.service.inter.goods.ShareService;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.order.OrderService;
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.UserAccountService;
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
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.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.GsonUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.factory.AccountDetailsFactory;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKey;
import com.yeshi.fanli.vo.user.UserGoldCoinVO;
import com.yeshi.fanli.vo.user.UserInfoVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -66,34 +68,13 @@
   private UserInfoService userInfoService;
   @Resource
   private MoneyRecordService moneyRecordService;
   @Resource
   private OrderService orderService;
   @Resource
   private ScanHistoryService scanHistoryService;
   @Resource
   private ConfigService configService;
   @Resource
   private ExtractService extractService;
   @Resource
   private ThreeSaleSerivce threeSaleService;
   @Resource
   private ShareService shareService;
   @Resource
   private BindingAccountService bindingAccountService;
   @Resource
   private UserInfoCountService userInfoCountService;
   @Resource
   private UserActiveLogService userActiveLogService;
   @Resource
   private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService;
@@ -110,178 +91,21 @@
   @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;
   @Resource
   private UserActiveLogService userActiveLogService;
   @Resource
   private UserVIPInfoService userVIPInfoService;
   /**
    *
    * 方法说明: 三级分销
    *
    * @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));
   }
   /**
    *
    * @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月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));
   }
   /**
    * 查询用户信息列表--相关数据统计
    * 查询用户信息列表 正常用户/异常用户
    * 
    * @param callback
    * @param pageIndex
@@ -300,20 +124,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 userType,
         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)
@@ -336,15 +153,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,userType);
         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,userType);
         int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
         PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage);
@@ -355,7 +192,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));
@@ -453,177 +289,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
@@ -632,52 +297,307 @@
    *            需要解绑的账户类型
    */
   @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 (typeArray == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("没有可更改的内容"));
            return;
         }
         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;
         }
         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;
         }
         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;
            }
         }
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("解绑成功"));
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
      }
   }
   /**
    * 修改用户备注
    * @param callback
    * @param uid
    * @param mark
    * @param out
    */
   @RequestMapping("addUserMark")
   public void addUserMark(String callback, Long uid, String mark, PrintWriter out) {
      try {
         if (uid == null || uid <= 0 || StringUtil.isNullOrEmpty(mark))
            return;
         UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
         if (userInfoExtra == null)
            return;
         UserInfoExtra updateExtra = new UserInfoExtra();
         updateExtra.setId(userInfoExtra.getId());
         updateExtra.setMark(mark);
         userInfoExtraService.saveUserInfoExtra(updateExtra);
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   /**
    * 删除用户-改变其状态
    * @param callback
    * @param idArray
    * @param out
    */
   @RequestMapping(value = "deleteUser")
   public void delete(String callback, String idArray, HttpServletRequest request,  PrintWriter out) {
      try {
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         if (admin == null) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆。")));
            return;
         }
         if (StringUtil.isNullOrEmpty(idArray)) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择操作的数据"));
            return;
         }
         Gson gson = new Gson();
         List<Long> list = gson.fromJson(idArray, new TypeToken<ArrayList<Long>>() {}.getType());
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未检测到删除的数据"));
            return;
         }
         for (Long id: list) {
            UserInfo user = new UserInfo(id);
            user.setState(UserInfo.STATE_DELETE);
            user.setStateDesc(admin.getId()+" " + admin.getName()+ "后台手动删除");
            userInfoService.updateByPrimaryKeySelective(user);
         }
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("成功删除"));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         e.printStackTrace();
      }
   }
   /**
    * 封禁用户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;
         }
         UserInfo currentInfo = userInfoService.selectByPKey(uid);
         if (currentInfo == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户已不存在"));
            return;
         }
         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("不存在该用户!"));
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请传递正确数据"));
            return;
         }
         if (type == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型不可为空!"));
            return;
         }
         int count = threeSaleService.deleteByPrimaryKey(id);
         UserInfo find = userInfoService.getUserById(id);
         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("当前用户未绑定支付宝!"));
               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;
            }
         if (count > 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("删除成功"));
         } else {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("账户类型有误!"));
            return;
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("删除失败"));
         }
         userInfoService.deleteBindInfo(find, type);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("解绑成功"));
      } catch (Exception e) {
         e.printStackTrace();
@@ -807,29 +727,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("操作异常"));
      }
   }
   /**
    * 队员关系
    * 
@@ -951,7 +848,6 @@
      }
      try {
         List<UserMoneyDetail> userMoneyDetailsList = userMoneyDetailService.listByUidWithState(uid, pageIndex,
               pageSize);
         if (userMoneyDetailsList == null || userMoneyDetailsList.size() == 0) {
@@ -959,18 +855,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));
@@ -998,99 +891,117 @@
   @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 {
         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;
         }
         Date beginDate = null;
         Date endDate = null;
         if (dateType == 1) {
            beginDate = TimeUtil.parse(startTime);
            endDate = TimeUtil.parse(endTime);
         } else if (dateType == 2) {
            Calendar calendar=Calendar.getInstance();
            int currentYear = calendar.get(Calendar.YEAR);
            if (!StringUtil.isNullOrEmpty(year)) {
               currentYear = Integer.parseInt(year);
            }
            calendar.clear();
             calendar.set(Calendar.YEAR, currentYear);
             beginDate =calendar.getTime();
            calendar.clear();
            calendar.set(Calendar.YEAR, currentYear);
            calendar.roll(Calendar.DAY_OF_YEAR, -1);
            endDate=calendar.getTime();
         } else if (dateType == 3) {
            beginDate = TimeUtil.parse("2018-01-01");
            endDate = new Date();
         }
         Gson gson = new Gson();
         Object objectDate = null;
         List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
         // 渠道
         List<String> channelList = null;
         if (channelArray != null && channelArray.trim().length() > 0) {
            channelList = gson.fromJson(channelArray, new TypeToken<ArrayList<String>>() {
            }.getType());
         }
         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 = "总计";
         if (channelList != null && channelList.size() > 0) {
            for (String channel : channelList) {
               List<Object> list = getNewUserData(dateList, dateType, beginDate, endDate, channel);
               JSONObject innerList = new JSONObject();
               innerList.put("name", channel);
               innerList.put("data", gson.toJson(list));
               line_list.add(innerList);
            }
         } else {
            List<Object> list = getNewUserData(dateList, dateType, beginDate, endDate, null);
            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")));
            }
            innerList.put("name", "全部");
            innerList.put("data", gson.toJson(list));
            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);
         data.put("xAxis_list", gson.toJson(dateList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常"));
         e.printStackTrace();
      }
   }
   private List<Object> getNewUserData(List<String> dateList, Integer dateType, Date beginDate, Date endDate, String channel) {
      List<Object> list = new ArrayList<>();
      List<CountUserInfo> listHistory = userInfoCountService.getNewUserData(beginDate, endDate, channel);
      for (String date: dateList) {
         int value = 0;
         if (listHistory != null) {
            for (CountUserInfo history: listHistory) {
               if (dateType == 1) {
                  String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
                  if (gernalTime.equalsIgnoreCase(date)) {
                     value += history.getNum();
                     continue;
                  }
               } else if (dateType == 2){
                  String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
                  if(gernalTime.startsWith("0")) {
                     gernalTime = gernalTime.substring(1, 2);
                  }
                  if (gernalTime.equalsIgnoreCase(date)) {
                     value +=  history.getNum();
                     continue;
                  }
               } else if (dateType == 3) {
                  String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
                  if (gernalTime.equalsIgnoreCase(date)) {
                     value +=  history.getNum();
                     continue;
                  }
               }
            }
         }
         list.add(value + "");
      }
      return list;
   }
   /**
@@ -1169,7 +1080,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)) {
@@ -1282,4 +1193,261 @@
      }
   }
   /**
    * 获取金币排行榜
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param type
    * @param out
    */
   @RequestMapping(value = "getGoldTop")
   public void getGoldTop(String callback, Integer pageIndex, Integer pageSize, Integer type, String key,
         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(key);
         list = userInfoCountService.listByHasGoldCoin((pageIndex - 1) * pageSize, pageSize, key);
      } else if (type == 1 || type == 2) {
         count = userInfoCountService.countByUserGoldCoin(type, key);
         list = userInfoCountService.listByUserGoldCoin((pageIndex - 1) * pageSize, pageSize, type, key);
      }
      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));
   }
   /**
    * 计当天活跃用户中有多少个用户是90天前才活跃过,期间从未活跃的用户数量
    * @param callback
    * @param dateType
    * @param year
    * @param startTime
    * @param endTime
    * @param out
    */
   @RequestMapping(value = "getUserActiveCharts")
   public void getUserActiveCharts(String callback, Integer dateType, String year, String startTime,
         String endTime, PrintWriter out){
      try {
         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;
         }
         Date beginDate = null;
         Date endDate = null;
         if (dateType == 1) {
            beginDate = TimeUtil.parse(startTime);
            endDate = TimeUtil.parse(endTime);
         } else if (dateType == 2) {
            Calendar calendar=Calendar.getInstance();
            int currentYear = calendar.get(Calendar.YEAR);
            if (!StringUtil.isNullOrEmpty(year)) {
               currentYear = Integer.parseInt(year);
            }
            calendar.clear();
             calendar.set(Calendar.YEAR, currentYear);
             beginDate =calendar.getTime();
            calendar.clear();
            calendar.set(Calendar.YEAR, currentYear);
            calendar.roll(Calendar.DAY_OF_YEAR, -1);
            endDate=calendar.getTime();
         } else if (dateType == 3) {
            beginDate = TimeUtil.parse("2018-01-01");
            endDate = new Date();
         }
         Gson gson = new Gson();
         List<String> dateList = AdminUtils.getDateList(dateType, startTime, endTime, year);
         List<Object> list = new ArrayList<>();
         List<UserActiveNumHistory> listHistory = userActiveLogService.query(beginDate, endDate);
         for (String date: dateList) {
            ChartTDO chartTDO = new ChartTDO();
            chartTDO.setShowDate(date);
            int value = 0;
            if (listHistory != null) {
               for (UserActiveNumHistory history: listHistory) {
                  if (dateType == 1) {
                     String gernalTime = TimeUtil.getGernalTime(history.getDay().getTime());
                     if (gernalTime.equalsIgnoreCase(date)) {
                        value += history.getNum();
                        continue;
                     }
                  } else if (dateType == 2){
                     String gernalTime = TimeUtil.getMonthOnlyMM(history.getDay());
                     if(gernalTime.startsWith("0")) {
                        gernalTime = gernalTime.substring(1, 2);
                     }
                     if (gernalTime.equalsIgnoreCase(date)) {
                        value += history.getNum();
                        continue;
                     }
                  } else if (dateType == 3) {
                     String gernalTime = TimeUtil.getYearOnlyYYYY(history.getDay());
                     if (gernalTime.equalsIgnoreCase(date)) {
                        value += history.getNum();
                        continue;
                     }
                  }
               }
            }
            chartTDO.setShowValue(value + "");
            list.add(value + "");
         }
         JSONObject innerList = new JSONObject();
         innerList.put("name", "数量");
         innerList.put("data", gson.toJson(list));
         JSONArray line_list = new JSONArray();
         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();
      }
   }
   /**
    *
    * @param callback
    * @param pageIndex
    * @param pageSize
    * @param key 搜索:暂只提供uid
    * @param state 状态:
    * @param out
    */
   @RequestMapping(value = "queryVip")
   public void queryVip(String callback, Integer pageIndex, Integer pageSize, String key, Integer state, PrintWriter out) {
      try {
         List<UserVIPInfo> list = userVIPInfoService.listQuery(pageIndex, pageSize, key, state);
         if (list == null || list.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         long count = userVIPInfoService.countQuery(key, state);
         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.setDateFormat("yyyy/MM/dd HH:mm:ss").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) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常"));
         e.printStackTrace();
      }
   }
   /**
    * 超级会员升级通过
    * @param callback
    * @param id
    * @param out
    * @param request
    */
   @RequestSerializableByKey(key = "'passVIP-' +#id")
   @RequestMapping(value = "passVIP")
   public void passVIP(String callback, Long id,  PrintWriter out, HttpServletRequest request) {
      try {
         /* 检验是否登陆 */
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         if (admin == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆。"));
            return;
         }
         userVIPInfoService.passVIPApply(id);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
         LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "通过了[id=" + id + "]的升级超级会员申请!");
      } catch (UserVIPInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
         return;
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
         return;
      }
   }
   /**
    * 超级会员升级拒绝
    * @param callback
    * @param id
    * @param reason
    * @param out
    * @param request
    */
   @RequestMapping(value = "rejectVIP")
   public void rejectVIP(String callback, Long id, String reason, PrintWriter out,   HttpServletRequest request) {
      try {
         /* 检验是否登陆 */
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         if (admin == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆"));
            return;
         }
         userVIPInfoService.rejectVIPApply(id, reason);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("拒绝成功"));
         LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 拒绝提现id=" + id + "的升级超级会员申请不存在!");
      } catch (UserVIPInfoException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
         return;
      } catch (Exception e) {
         e.printStackTrace();
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
         return;
      }
   }
}