admin
2019-03-13 33b4ed2bbf28ec16b66e552680f56a691a4e908d
fanli/src/main/java/com/yeshi/fanli/controller/admin/UserInfoAdminController.java
@@ -1,8 +1,5 @@
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;
@@ -13,14 +10,7 @@
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
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;
@@ -30,31 +20,24 @@
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.controller.admin.utils.AdminUtils;
import com.yeshi.fanli.entity.admin.UserInfoAdmin;
import com.yeshi.fanli.entity.bus.user.AccountDetails;
import com.yeshi.fanli.dto.money.AccountDetails;
import com.yeshi.fanli.entity.bus.user.BindingAccount;
import com.yeshi.fanli.entity.bus.user.Extract;
import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode;
import com.yeshi.fanli.entity.bus.user.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.taobao.PidOrder;
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.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.AccountDetailsService;
import com.yeshi.fanli.service.inter.user.BindingAccountService;
import com.yeshi.fanli.service.inter.user.ExtractService;
import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService;
@@ -64,13 +47,14 @@
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
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.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.UserInfoVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -94,25 +78,13 @@
   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 AccountDetailsService accountDetailsService;
   @Resource
   private BindingAccountService bindingAccountService;
@@ -128,12 +100,15 @@
   @Resource
   private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
   @Resource
   private UserInfoExtraService  userInfoExtraService;
   private UserInfoExtraService userInfoExtraService;
   @Resource
   private UserRankService userRankService;
   @Resource
   private UserMoneyDetailService userMoneyDetailService;
   @RequestMapping(value = "getUserList", method = RequestMethod.POST)
   public void getUserList(int pageIndex, String key, PrintWriter out) {
@@ -175,35 +150,6 @@
      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));
   }
@@ -298,145 +244,6 @@
   /**
    * 
    * 方法说明: 查询用户-红包详情列表
    *
    * @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
@@ -474,153 +281,6 @@
   }
   /**
    *
    * 方法说明: 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
@@ -640,22 +300,15 @@
    * @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)
            pageIndex = 1;
@@ -676,15 +329,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);
@@ -695,7 +368,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));
@@ -722,10 +394,7 @@
         long loseUser = userInfoCountService.countLoseUser(180);
         // 累计有购买用户数
         long orderUser = userInfoCountService.countHasOrderUser();
         // 总数-普通用户
         long countNormal = 0;
         // 总数-铜用户
@@ -734,16 +403,16 @@
         long countSilver = 0;
         // 总数-金用户
         long countGold = 0;
         List<UserRank> listRank = userRankService.getAllRank();
         if (listRank != null && listRank.size() > 0) {
            for (UserRank userRank: listRank) {
            for (UserRank userRank : listRank) {
               Long id = userRank.getId();
               String name = userRank.getName();
               if ("青铜".equals(name)) {
                  continue;
               }
                  continue;
               }
               long count = userInfoExtraService.countByRankId(id);
               if ("白银".equals(name)) {
                  countCuprum = count;
@@ -754,11 +423,10 @@
               }
            }
         }
         // 普通用户计算
         countNormal = totalUser - (countCuprum + countSilver + countGold);
         JSONObject data = new JSONObject();
         data.put("totalUser", totalUser);
         data.put("loseUser", loseUser);
@@ -780,8 +448,6 @@
          * data.put("countTotalMoney", countTotalMoney);
          * data.put("countCanAssets", countCanAssets);
          */
         // 今日新增用户数量
         long todayUser = userInfoCountService.countNewUser(1, null);
@@ -1298,20 +964,25 @@
      try {
         List<AccountDetails> detailsList = accountDetailsService.findAccountDetailsList(uid, pageIndex);
         if (detailsList == null || detailsList.size() == 0) {
         List<UserMoneyDetail> userMoneyDetailsList = userMoneyDetailService.listByUidWithState(uid, pageIndex,
               pageSize);
         if (userMoneyDetailsList == null || userMoneyDetailsList.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         int count = accountDetailsService.getCount(uid);
         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);
         JSONObject data = new JSONObject();
         data.put("pe", pe);
         data.put("result_list", GsonUtil.toJsonExpose(detailsList));
         data.put("result_list", GsonUtil.toJsonExpose(detailList));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
@@ -1623,4 +1294,34 @@
      }
   }
   /**
    * 用户账号- 封禁/解封
    * @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) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数不能为空"));
         }
         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("操作异常"));
      }
   }
}