package com.yeshi.fanli.controller.admin; import java.io.PrintWriter; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yeshi.fanli.entity.bus.user.Extract; import com.yeshi.fanli.entity.bus.user.ExtractAuditRecord; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.Order; import com.yeshi.fanli.entity.bus.user.OrderItem; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.taobao.PidOrder; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; import com.yeshi.fanli.exception.NotExistObjectException; import com.yeshi.fanli.exception.ObjectStateException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.AdminUserService; import com.yeshi.fanli.service.inter.count.ExtractCountService; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; import com.yeshi.fanli.service.inter.order.OrderItemServcie; import com.yeshi.fanli.service.inter.order.PidOrderService; import com.yeshi.fanli.service.inter.push.PushRecordService; import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService; import com.yeshi.fanli.service.inter.user.AccountMessageService; import com.yeshi.fanli.service.inter.user.ExtractAuditRecordService; import com.yeshi.fanli.service.inter.user.ExtractService; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import org.yeshi.utils.DateUtil; import org.yeshi.utils.IPUtil; import org.yeshi.utils.JsonUtil; @Controller @RequestMapping("admin/new/api/v1/extract") public class ExtractAdminController { @Resource private ExtractService extractService; @Resource private ExtractCountService extractCountService; @Resource private AccountMessageService accountMessageService; @Resource private PushRecordService pushRecordService; @Resource private PushController xingePushController; @Resource private ExtractAuditRecordService extractAuditRecordService; @Resource private HongBaoService hongBaoService; @Resource private AdminUserService adminUserService; @Resource private OrderItemServcie orderItemServcie; @Resource private PidOrderService pidOrderService; @Resource private RedisManager redisManager; @Resource private TaoBaoOrderService taoBaoOrderService; @Resource private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService; private final static String TODAY = "1"; private final static String THREE = "2"; private final static String AWEEK = "3"; @RequestMapping(value = "getExtractList", method = RequestMethod.POST) public void getExtractList(int pageIndex, PrintWriter out) { List extractList = extractService .getExtractList(pageIndex - 1); int count = extractService.getCount(); 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("extractList", extractList); out.print(JsonUtil.loadTrueResult(data)); } /** * * 方法说明: 通过提现请求 * * @author mawurui createTime 2018年3月14日 下午3:15:42 * @param id * @param out * @param request */ @RequestMapping(value = "passExtract", method = RequestMethod.POST) public void passExtract(String callback, long id, PrintWriter out, HttpServletRequest request) { //TODO 需要邮箱发送短信验证 AdminUser admin = (AdminUser) request.getSession().getAttribute( Constant.SESSION_ADMIN); Integer integer = extractService.passExtract(id, admin); Extract extract = extractService.getExtractById(id); long uid = extract.getUserInfo().getId(); if (integer == null) { out.print(JsonUtil.loadTrueResult("通过")); LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "通过了[id=" + id + "]的提现申请!"); // 同意之后成功 } else if (integer == 1) { out.print(JsonUtil.loadFalseResult("不存在该对象")); // 同意之后失败 LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请不存在"); String title = "你的提现申请被驳回"; String content = "非常遗憾,你的提现申请被驳回。我们通过核对发现你的账目明细有误,我们会在审计完成之后给你发通知消息。如有疑问请联系客服。"; // xingePushController.pushSystemZnx(uid, title, content, out); } else { LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请状态异常"); out.print(JsonUtil.loadFalseResult("该状态不等于不为初始状态")); String title = "你的提现申请不成功"; String content = "请确保你的提现账户的隐私设置为 允许邮箱、手机号、会员名找到我。否则无法成功完成转账。如有疑问请联系客服。"; // xingePushController.pushSystemZnx(uid, title, content, out); } } /** * * 方法说明: 通过提现请求 可jsonP方式 * * @param id * @param code 验证码 * @param out * @param request */ @RequestMapping(value = "passExtractJP") public void passExtractJP(String callback, Long id, String code,PrintWriter out, HttpServletRequest request) { /* 检验是否登陆 */ AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN); if (admin == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆。")); return; } /* 检验是否通过验证 */ String codeType = (String)request.getSession().getAttribute(Constant.SESSION_EXTRACT_VERIFY_RESULT); if (!"1".equals(codeType)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(3,"邮箱验证未通过")); return; } /* 允许提现 操作 */ Integer integer = extractService.passExtract(id, admin); Extract extract = extractService.getExtractById(id); long uid = extract.getUserInfo().getId(); if (integer == null) { JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("通过")); LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "通过了[id=" + id + "]的提现申请!"); // 同意之后成功 } else if (integer == 1) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该对象")); LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请不存在"); String title = "你的提现申请被驳回"; String content = "非常遗憾,你的提现申请被驳回。我们通过核对发现你的账目明细有误,我们会在审计完成之后给你发通知消息。如有疑问请联系客服。"; // xingePushController.pushSystemZnx(uid, title, content, out); } else { JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("该状态不等于不为初始状态")); LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 同意提现id=" + id + "的提现申请状态异常"); String title = "你的提现申请不成功"; String content = "请确保你的提现账户的隐私设置为 允许邮箱、手机号、会员名找到我。否则无法成功完成转账。如有疑问请联系客服。"; // xingePushController.pushSystemZnx(uid, title, content, out); } } /** * * 方法说明: 拒绝提现请求 * * @author mawurui createTime 2018年3月14日 下午3:15:55 * @param id * @param reason * @param out * @param request */ @RequestMapping(value = "rejectExtract", method = RequestMethod.POST) public void rejectExtract(String callback ,long id, String reason, PrintWriter out, HttpServletRequest request) { AdminUser admin = (AdminUser) request.getSession().getAttribute( Constant.SESSION_ADMIN); Extract extract = extractService.getExtractById(id); long uid = extract.getUserInfo().getId(); long extractTime = extract.getExtractTime(); try { extractService.rejectExtract(id, reason, extractTime, admin);// 提现失败 // 调用推送站内信给用户 out.print(JsonUtil.loadTrueResult("拒绝")); LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "]" + admin.getName() + "拒绝了[id=" + id + "]的提现申请!拒绝原因是" + reason); String title = "你的提现申请被驳回"; String content = "非常遗憾,你的提现申请被驳回。我们通过核对发现你的账目明细有误,我们会在审计完成之后给你发通知消息。如有疑问请联系客服。"; // xingePushController.pushSystemZnx(uid, title, content, out); } catch (ObjectStateException e) { LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 拒绝提现id=" + id + "的提现申请状态异常!"); // out.print(JsonUtil.loadFalseResult(e.getMessage())); } catch (NotExistObjectException e) { LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 拒绝提现id=" + id + "的提现申请不存在!"); out.print(JsonUtil.loadFalseResult(e.getMessage())); } } /** * * 方法说明: 拒绝提现请求jsonP * * @author mawurui createTime 2018年3月14日 下午3:15:55 * @param id * @param reason * @param out * @param request */ @RequestMapping(value = "rejectExtractJP") public void rejectExtractJP(String callback ,Long id,String code, String reason, PrintWriter out, HttpServletRequest request) { /* 检验是否登陆 */ AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN); if (admin == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆")); return; } /* 检验是否通过验证 */ String codeType = (String)request.getSession().getAttribute(Constant.SESSION_EXTRACT_VERIFY_RESULT); if (!"1".equals(codeType)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(3,"邮箱验证未通过")); return; } /* 拒绝提现 操作 */ try { Extract extract = extractService.getExtractById(id); long extractTime = extract.getExtractTime(); extractService.rejectExtract(id, reason, extractTime, admin);// 提现失败 JsonUtil.printMode(out, callback,JsonUtil.loadTrueResult("拒绝")); // 调用推送站内信给用户 //out.print(JsonUtil.loadTrueResult("拒绝")); LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "]"+ admin.getName() + "拒绝了[id=" + id + "]的提现申请!拒绝原因是" + reason); String title = "你的提现申请被驳回"; String content = "非常遗憾,你的提现申请被驳回。我们通过核对发现你的账目明细有误,我们会在审计完成之后给你发通知消息。如有疑问请联系客服。"; // xingePushController.pushSystemZnx(uid, title, content, out); } catch (ObjectStateException e) { LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 拒绝提现id=" + id + "的提现申请状态异常!"); // JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMessage())); } catch (NotExistObjectException e) { LogHelper.userInfo("[ip:" + IPUtil.getRemotIP(request) + "][管理员:" + admin.getName() + "] 拒绝提现id=" + id + "的提现申请不存在!"); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMessage())); } } /** * 资金校验是否异常 * * @param uid * @param out */ @RequestMapping(value = "checkExtract", method = RequestMethod.POST) public void checkExtract(String uid, PrintWriter out) { JSONObject data = new JSONObject(); List checked = extractService.checkExtract(uid); if (checked != null && checked.size() > 0) { Integer diversity = checked.get(0); if (diversity == 0) { data.put("code", "0"); } else { data.put("code", "1"); } } else { data.put("code", "1"); } out.print(data); } /** * 获取今日提现记录:今日总额、总次数、成功次数、失败次数 获取系统提现记录:总额、总次数 * * @param out */ @RequestMapping(value = "countExtract") public void countExtract(String callback, PrintWriter out) { Map totalcount = extractCountService.getTodayCount(); BigDecimal totalmoney = extractCountService.getTodayTotalSuccessMoney(); totalcount.put("totalmoney", totalmoney); Map resultData = extractCountService.countTotalSuccess(); JSONObject data = new JSONObject(); data.put("todayCount", totalcount); data.put("totalount", resultData); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } /** * 查询所有审核记录信息 * * @param callback * @param pageIndex * @param key * @param startTime * @param endTime * @param out */ @RequestMapping(value = "getFinishRecordList") public void getFinishRecordList(String callback, Integer pageIndex, String key, String startTime, String endTime, PrintWriter out) { try { // 起始时间 为空设置默认值: if (StringUtil.isNullOrEmpty(startTime)) { startTime = "1970-01-01"; } // 结束时间 为空设置默认值当前日期 if (StringUtil.isNullOrEmpty(endTime)) { Date curDate = new Date(); endTime = TimeUtil.getSimpleDate(curDate); } 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 (pageIndex == null) pageIndex = 1; int pageSize = Constant.PAGE_SIZE; List auditList = extractAuditRecordService.getList(pageIndex, pageSize, key, startTime, endTime); int count = extractAuditRecordService.getCount(key, startTime, endTime); int totalPage = count % pageSize == 0 ? count / pageSize : count / pageSize + 1; PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); if (auditList == null || auditList.size() == 0) { out.print(JsonUtil.loadJSONP(callback,JsonUtil.loadFalseResult("暂无数据"))); } else { for (ExtractAuditRecord extractAuditRecord: auditList) { int countByUid = 0; int countCancel = 0; Extract extract = extractAuditRecord.getExtract(); if (extract != null) { UserInfo userInfo = extract.getUserInfo(); Long id = userInfo.getId(); countByUid = hongBaoService.getCountByUid(id); countCancel = hongBaoService.getCountCancelByUid(id); } extractAuditRecord.setCancelOrderNum((long)countCancel); extractAuditRecord.setOrderNum((long)countByUid); } JSONObject data = new JSONObject(); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); //重点 Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create(); data.put("pe", pe); data.put("auditList", gson.toJson(auditList)); out.print(JsonUtil.loadJSONP(callback,JsonUtil.loadTrueResult(data))); } } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadJSONP(callback,JsonUtil.loadFalseResult("操作异常"))); } } /** * 查询客服个人提现审批记录信息 * * @param callback * @param pageIndex * 页码 * @param key * 筛选条件 * @param timeSlot * 查询时间段 * @param state * 查看审核状态 * @param out * @param request */ @RequestMapping(value = "getMyAuditedList") public void getMyAuditedList(String callback, Integer pageIndex,String key, String timeSlot, Integer state, PrintWriter out,HttpServletRequest request) { try { //AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN); //if (admin == null) { // JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆")); // return; //} int pageSize = Constant.PAGE_SIZE; Integer days = null; if (TODAY.equals(timeSlot)) { days = 0; // 今日 } else if (THREE.equals(timeSlot)) { days = 3; // 前3天 }else if (AWEEK.equals(timeSlot)) { days = 7; // 前7天 } if (state != null && state != 0 && state != 1 && state != 2 ) { state = null; } // 查询当前人员的审核列表信息 //Long adminId = admin.getId(); //auditList = extractAuditRecordService.getMyAuditedTimeSlotList(pageIndex, pageSize, key,state, adminId, days); //count = extractAuditRecordService.getMyAuditedTimeSlotCount(key, state, adminId,days); // 暂不区分账号,默认所有 List auditList = extractAuditRecordService.getMyAuditedTimeSlotList(pageIndex, pageSize, key,state, null, days); if (auditList == null || auditList.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据")); return; } for (ExtractAuditRecord record : auditList) { AdminUser adminUser = record.getAdminUser(); if (adminUser == null) { record.setAdminUser(new AdminUser()); } } int count = extractAuditRecordService.getMyAuditedTimeSlotCount(key, state, null, days); int totalPage = 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("list", gson.toJson(auditList)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult(e.getMessage())); } } /** * 获取今日提现记录:今日总额、总次数、成功次数、失败次数 获取系统提现记录:总额、总次数 * * @param out */ @RequestMapping(value = "getMyAuditedCount") public void getMyAuditedCount(String callback, HttpServletRequest request, PrintWriter out) { AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN); if (admin == null) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆。"))); } else { Long adminId = admin.getId(); int taskToday = extractCountService.countTodayApply(); //int countTodayComplete = extractService.countTodayComplete(); // 今日累计处理数据 int countToday = extractAuditRecordService.getMyAuditedCountToday(adminId); // 本周累计处理数据 int countWeek = extractAuditRecordService.getMyAuditedCountWeek(adminId); // 本月累计处理数据 int countMonth = extractAuditRecordService.getMyAuditedCountMonth(adminId); JSONObject data = new JSONObject(); data.put("adminUser", admin); data.put("taskToday", taskToday); data.put("countToday", countToday); data.put("countWeek", countWeek); data.put("countMonth", countMonth); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } } /** * 客服任务页面展示数据:传入提现申请id 则显示当前申请,若无id则显示客服任务下第一个申请数据 * @param callback * @param extractId 提现id * @param request * @param out */ @RequestMapping(value = "getIaskInfo") public void getIaskInfo(String callback, Long extractId, HttpServletRequest request, PrintWriter out) { try { String surplusTime = ""; JSONObject data = new JSONObject(); Extract extract = new Extract(); AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN); if (admin == null) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("当前账户失效,请重新登陆。"))); return; } if (extractId != null) { /* 传入提现申请id 查询前客服任务数据 */ extract = extractService.selectByPrimaryKey(extractId); if (extract == null) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("当前申请已不存在"))); return; } // 当前任务指定为该账户处理 /*extract.setAdminId(admin.getId()); extractService.updateByPrimaryKeySelective(extract);*/ BigDecimal beforeMoney = null; List records = extractAuditRecordService.getbyExtractId(extract.getId()); if (records != null && records.size() > 0) { ExtractAuditRecord extractAuditRecord = records.get(0); if (extractAuditRecord != null) { beforeMoney = extractAuditRecord.getBeforeMoney(); } } Long extractTime = extract.getExtractTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(extractTime); Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DAY_OF_MONTH, 3);// 今天+3天 Date todayTime = new Date(); String formattodayTime = sdf.format(todayTime); String formatTime = sdf.format(c.getTime()); long diff = sdf.parse(formatTime).getTime() - sdf.parse(formattodayTime).getTime(); if (diff <= 0) { surplusTime = "已超时"; } else { surplusTime = DateUtil.dateDiff(formattodayTime,formatTime); } data.put("extract", extract); data.put("beforeMoney", beforeMoney); data.put("surplusTime", surplusTime); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } else { /* 未传入提现申请id 查询当前客服任务 中的第一个 数据 */ boolean newTask = false; // 查询之前未处理完的任务 extract = extractService.getMyTaskInfo(admin.getId()); if (extract == null) { // 新任务 extract = extractService.getNewTaskInfo(); if (extract != null) newTask = true; } if (extract == null) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("暂无用户提现申请"))); } else { if (newTask) { // 当前任务指定为该账户处理 /*extract.setAdminId(admin.getId()); extractService.updateByPrimaryKeySelective(extract);*/ } BigDecimal beforeMoney = null; List records = extractAuditRecordService.getbyExtractId(extract.getId()); if (records != null && records.size() > 0) { ExtractAuditRecord extractAuditRecord = records.get(0); if (extractAuditRecord != null) { beforeMoney = extractAuditRecord.getBeforeMoney(); } } Long extractTime = extract.getExtractTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(extractTime); Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DAY_OF_MONTH, 3);// 今天+3天 Date todayTime = new Date(); String formattodayTime = sdf.format(todayTime); String formatTime = sdf.format(c.getTime()); long diff = sdf.parse(formatTime).getTime() - sdf.parse(formattodayTime).getTime(); if (diff <= 0) { surplusTime = "已超时"; } else { surplusTime = DateUtil.dateDiff(formattodayTime,formatTime); } data.put("extract", extract); data.put("beforeMoney", beforeMoney); data.put("surplusTime", surplusTime); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 查询用户历史提现记录 * @param callback * @param pageIndex 页码 * @param key 用户id * @param request * @param out */ @RequestMapping(value = "getByUidList") public void getByUidList(String callback, Integer pageIndex, Long uid, HttpServletRequest request, PrintWriter out) { try { if (uid == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("用户不存在")); return; } if (pageIndex == null) pageIndex = 1; int pageSize = Constant.PAGE_SIZE; List list = extractAuditRecordService.getByUidList(pageIndex, pageSize, uid); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无提现记录")); return; } int count = extractAuditRecordService.getByUidCount(uid); int totalPage = 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("list", gson.toJson(list)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { // TODO: handle exception JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); e.printStackTrace(); } } /** * 数量统计 * @param callback * @param uid 用户id * @param request * @param out */ @RequestMapping(value = "countByUid") public void countByUid(String callback, Long uid, HttpServletRequest request, PrintWriter out) { try { // 统计已领取金额 账户历史总收益 double receiveMoneys = hongBaoService.countReceiveMoneysByUid(uid); // 历史提现成功金额 double successMoneys = extractCountService.countSuccessMoneysByUid(uid); // 历史提现总次数、成功次数、失败次数 Map map = extractCountService.countRecordsByUid(uid); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("map", gson.toJson(map)); data.put("successMoneys", gson.toJson(successMoneys)); data.put("receiveMoneys", gson.toJson(receiveMoneys)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { // TODO: handle exception JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); e.printStackTrace(); } } /** * 根据用户id查询相应订单列表 * * @param callback * @param pageIndex * @param key 用户id * @param out */ @RequestMapping(value = "getOrderRecordList") public void getOrderRecordList(String callback, Integer pageIndex, Integer pageSize, Long key, String startTime, String endTime, PrintWriter out) { try { if (key == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到用户id")); return; } 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(pageIndex == null) pageIndex = 1; if(pageSize == null) pageSize = Constant.PAGE_SIZE; List list = hongBaoService.selectOrderByUid(pageIndex, pageSize, key, startTime, endTime); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户无订单记录")); return; } Map> wq = new HashMap>(); for (HongBao hongBao :list) { String orderId = hongBao.getOrderId(); List weiQuanList = taoBaoWeiQuanOrderService.getWeiQuanSuccessOrders(orderId); if (weiQuanList != null && weiQuanList.size() > 0) { wq.put(orderId, weiQuanList); } } /* 验证网络: */ StringBuffer auctionIdBuf = new StringBuffer(); List> listmap = new ArrayList>(); for (HongBao hongBao : list) { Map map = new HashMap(); Long preGettime = hongBao.getPreGettime(); Long getTime = hongBao.getGetTime(); Integer state = hongBao.getState(); Integer type = hongBao.getType(); String orderId = hongBao.getOrderId(); // 单笔收益金额 BigDecimal money = hongBao.getMoney(); BigDecimal payMoney = hongBao.getPayMoney(); map.put("getTime",getTime); // 子订单号 String orderItemId = ""; map.put("orderItemId",orderItemId); /* 订单状态判断:1 订单已付款 2、订单已结算 4、订单失效 */ if (state == HongBao.STATE_SHIXIAO) { map.put("orderState",4); // 订单失效 } else if (state == HongBao.STATE_BUKELINGQU || state == HongBao.STATE_KELINGQU) { if (preGettime != null && preGettime > 0) { map.put("orderState",2); // 订单结算 } else { map.put("orderState",1); // 订单已付款 } } else { map.put("orderState",2); // 订单结算 } /* 订单返利状态: 2未到账 3已到账 4已失效 */ if (HongBao.STATE_YILINGQU == state ) { map.put("moneyState",3); //已到账 } else if (HongBao.STATE_BUKELINGQU == state || HongBao.STATE_KELINGQU == state) { map.put("moneyState",2); // 未到账 } else { map.put("moneyState",4); // 已失效 } /* 订单类型:1系统红包 2、自购订单 3、邀请订单 4 分享订单 */ int rebateSource = 0; if (type == HongBao.TYPE_HUODONG || type == HongBao.TYPE_XINREN ) { // 3-活动红包 4-新人红包 rebateSource = 1; } else if(type == HongBao.TYPE_JINGDONG ||type == HongBao.TYPE_TAOBAO) { // 自购订单 rebateSource = 2; } else if (type == HongBao.TYPE_YAOQING || type == HongBao.TYPE_YIJI || type == HongBao.TYPE_ERJI || type == HongBao.TYPE_SHARE_ERJI || type == HongBao.TYPE_SHARE_YIJI) { // 邀请人自购订单+邀请人分享订单 rebateSource = 3; } else if (type == HongBao.TYPE_SHARE_GOODS) { // 分享订单 rebateSource = 4; } map.put("rebateSource",rebateSource); // 获取订单信息 Map inMap = getOrderItem(hongBao); OrderItem orderItem = (OrderItem) inMap.get("orderItem"); Long endtime = (Long) inMap.get("endtime"); Long thirdCreateTime = (Long) inMap.get("thirdCreateTime"); /* 初始化 空值*/ if (orderItem == null) { orderItem = new OrderItem(); map.put("goodsStae","-1"); } // 订单来源 0 无 1淘宝 2 京东 map.put("orderSource",1); // 当前实际返利金额 orderItem.setFanMoney(money); String itemOrderId = orderItem.getOrderId(); // 红包对应订单号 if (StringUtil.isNullOrEmpty(itemOrderId)) orderItem.setOrderId(orderId); Long auctionId = orderItem.getAuctionId(); if (auctionId != null) { auctionIdBuf.append(auctionId + ","); } else { if (!StringUtil.isNullOrEmpty(orderId)) { List taoBaoOrders = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId); if (taoBaoOrders != null && taoBaoOrders.size() > 0) { TaoBaoOrder taoBaoOrder = taoBaoOrders.get(0); Long auctionId2 = taoBaoOrder.getAuctionId(); orderItem.setAuctionId(auctionId2); auctionIdBuf.append(auctionId + ","); orderItem.setPayMoney(taoBaoOrder.getPayment()); orderItem.setTitle(taoBaoOrder.getTitle()); String settlementTime = taoBaoOrder.getSettlementTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (!StringUtil.isNullOrEmpty(settlementTime)){ Date settleDate = sdf.parse(settlementTime); endtime =settleDate.getTime(); } String createTime = taoBaoOrder.getCreateTime(); if (!StringUtil.isNullOrEmpty(createTime)){ Date createDate = sdf.parse(createTime); thirdCreateTime =createDate.getTime(); } } } } map.put("orderItem",orderItem); // 收货时间 map.put("endtime",endtime); // 下单时间 map.put("thirdCreateTime",thirdCreateTime); listmap.add(map); } /* 验证网络: 获取商品链接 图片链接 */ List goodsBriefList = null; if (auctionIdBuf != null && auctionIdBuf.length() > 0) { String auctionIds = auctionIdBuf.toString(); String ids = auctionIds.substring(0, auctionIds.length() -1); goodsBriefList = TaoKeApiUtil.getBatchGoodsInfos(ids); } List> listResult = new ArrayList>(); Iterator> iterator = listmap.iterator(); while (iterator.hasNext()) { Map map = iterator.next(); int goodsStae = 1; String auctionUrl = ""; // 商品链接 OrderItem orderItem = (OrderItem) map.get("orderItem"); Long auctionId = orderItem.getAuctionId(); if (auctionId != null){ if (goodsBriefList != null && goodsBriefList.size() > 0) { for (TaoBaoGoodsBrief taoBaoGoodsBrief :goodsBriefList) { Long auctionIdTB = taoBaoGoodsBrief.getAuctionId(); if (auctionId.equals(auctionIdTB)) { goodsStae=0;// 在售 auctionUrl = taoBaoGoodsBrief.getAuctionUrl(); String pictUrl = taoBaoGoodsBrief.getPictUrl(); orderItem.setPicture(pictUrl); } } } } map.put("goodsStae",goodsStae); // map.put("auctionUrl",auctionUrl); // 商品链接 listResult.add(map); } int count = hongBaoService.countOrderByUid(key, startTime, endTime); int totalPage = count % pageSize == 0 ? count / pageSize : count / pageSize + 1; PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); // 该期间的总收益 double countProfit = hongBaoService.countProfitByUid(key, startTime, endTime); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("countProfit", countProfit); data.put("listmap", listResult); out.print(JsonUtil.loadJSONP(callback,JsonUtil.loadTrueResult(data))); } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult(e.getMessage())); } } /** * 根据用户id查询相应订单列表 * * @param callback * @param pageIndex * @param key 用户id * @param out */ @RequestMapping(value = "getOrderList") public void getOrderList(String callback, Integer pageIndex, Integer pageSize, Long key, String startTime, String endTime, PrintWriter out) { try { if (key == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到用户id")); return; } 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(pageIndex == null) pageIndex = 1; if(pageSize == null) pageSize = Constant.PAGE_SIZE; List list = hongBaoService.selectOrderByUid(pageIndex, pageSize, key, startTime, endTime); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户无订单记录")); return; } /* 验证网络: */ StringBuffer auctionIdBuf = new StringBuffer(); List> listmap = new ArrayList>(); for (HongBao hongBao : list) { Map map = new HashMap(); Long preGettime = hongBao.getPreGettime(); Long getTime = hongBao.getGetTime(); Integer state = hongBao.getState(); Integer type = hongBao.getType(); String orderId = hongBao.getOrderId(); Date balanceTime = hongBao.getBalanceTime(); // 自购订单id Long orderItemId = hongBao.getOrderItemId(); // 单笔收益金额 BigDecimal money = hongBao.getMoney(); map.put("getTime",getTime); map.put("orderItemId",orderItemId); if (state == HongBao.STATE_SHIXIAO) { if (balanceTime != null) { map.put("orderState",1); //维权成功 } else { map.put("orderState",2); //订单失效 } } else if (state == HongBao.STATE_BUKELINGQU || state == HongBao.STATE_KELINGQU) { if (preGettime != null && preGettime > 0) { map.put("orderState",0); //订单结算 } else { map.put("orderState",3); //订单付款中 未结算 } } else { map.put("orderState",0); //订单已付款-已结算 } if (HongBao.STATE_YILINGQU == state ) { map.put("moneyState",3); //已到账 } else if (HongBao.STATE_BUKELINGQU == state || HongBao.STATE_KELINGQU == state) { map.put("moneyState",2); // 未到账 } else { map.put("moneyState",4); // 已失效 } /* 1-淘宝订单 2-京东订单 3-活动红包 4-新人红包 5.邀请好友红包(布心街的) 6.一级分销红包 7.二级分销红包 20-分享商品订单 */ int rebateSource = 0; if (type == HongBao.TYPE_HUODONG || type == HongBao.TYPE_XINREN ) { /* 3-活动红包 4-新人红包 */ rebateSource = 1; } else if(type == HongBao.TYPE_JINGDONG ||type == HongBao.TYPE_TAOBAO) { /* 自购订单 */ rebateSource = 2; } else if (type == HongBao.TYPE_YIJI || type == HongBao.TYPE_ERJI || type == HongBao.TYPE_YAOQING || type == HongBao.TYPE_SHARE_ERJI || type == HongBao.TYPE_SHARE_YIJI) { /* 邀请订单 分销红包对应的最上级红包 */ rebateSource = 3; } else if (type == HongBao.TYPE_SHARE_GOODS) { /* 分享订单 */ rebateSource = 4; } map.put("rebateSource",rebateSource); // 获取订单信息 Map inMap = getOrderItem(hongBao); OrderItem orderItem = (OrderItem) inMap.get("orderItem"); Long endtime = (Long) inMap.get("endtime"); Long thirdCreateTime = (Long) inMap.get("thirdCreateTime"); /* 初始化 空值*/ if (orderItem == null) { orderItem = new OrderItem(); map.put("goodsStae","-1"); } // 订单来源 0 无 1淘宝 2 京东 map.put("orderSource",1); // 当前实际返利金额 orderItem.setFanMoney(money); String itemOrderId = orderItem.getOrderId(); // 红包对应订单号 if (StringUtil.isNullOrEmpty(itemOrderId)) orderItem.setOrderId(orderId); Long auctionId = orderItem.getAuctionId(); if (auctionId == null) { if (!StringUtil.isNullOrEmpty(orderId)) { List taoBaoOrders = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId); if (taoBaoOrders != null && taoBaoOrders.size() > 0) { TaoBaoOrder taoBaoOrder = taoBaoOrders.get(0); Long auctionId2 = taoBaoOrder.getAuctionId(); orderItem.setAuctionId(auctionId2); auctionIdBuf.append(auctionId + ","); orderItem.setPayMoney(taoBaoOrder.getPayment()); orderItem.setTitle(taoBaoOrder.getTitle()); String settlementTime = taoBaoOrder.getSettlementTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (!StringUtil.isNullOrEmpty(settlementTime)){ Date settleDate = sdf.parse(settlementTime); endtime =settleDate.getTime(); } String createTime = taoBaoOrder.getCreateTime(); if (!StringUtil.isNullOrEmpty(createTime)){ Date createDate = sdf.parse(createTime); thirdCreateTime =createDate.getTime(); } } } } map.put("orderItem",orderItem); // 收货时间 map.put("endtime",endtime); // 下单时间 map.put("thirdCreateTime",thirdCreateTime); listmap.add(map); } int count = hongBaoService.countOrderByUid(key, startTime, endTime); int totalPage = count % pageSize == 0 ? count / pageSize : count / pageSize + 1; PageEntity pe = new PageEntity(pageIndex, pageSize, count, totalPage); // 该期间的总收益 double countProfit = hongBaoService.countProfitByUid(key, startTime, endTime); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("countProfit", countProfit); data.put("listmap", listmap); out.print(JsonUtil.loadJSONP(callback,JsonUtil.loadTrueResult(data))); } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult(e.getMessage())); } } public Map getOrderItem(HongBao hongBao) { OrderItem orderItem = null; Long endtime = new Long(0); Long thirdCreateTime = new Long(0); Map map = new HashMap(); Integer type = hongBao.getType(); if (type == null) { return map; } if (type == HongBao.TYPE_HUODONG || type == HongBao.TYPE_XINREN ) { /* 3-活动红包 4-新人红包 */ } else if(type == HongBao.TYPE_JINGDONG ||type == HongBao.TYPE_TAOBAO) { /* 自购订单 */ Long orderItemId = hongBao.getOrderItemId(); orderItem = orderItemServcie.selectByPrimaryKey(orderItemId); // 下单时间 Order order = hongBao.getOrder(); if (order != null) { Date thirdCreateTime2 = order.getThirdCreateTime(); if (thirdCreateTime2 != null) { thirdCreateTime = thirdCreateTime2.getTime(); } } if (orderItem != null){ // 结束时间 Long settlementTime = orderItem.getSettlementTime(); if (settlementTime != 0) { endtime = settlementTime; } // 退款时间不为空 则已退款时间为结束时间 Long refundTime = orderItem.getRefundTime(); if (refundTime != 0) { endtime = refundTime; } } } else if (type == HongBao.TYPE_YIJI || type == HongBao.TYPE_ERJI || type == HongBao.TYPE_YAOQING || type == HongBao.TYPE_SHARE_ERJI || type == HongBao.TYPE_SHARE_YIJI) { /* 邀请订单 分销红包对应的最上级红包 */ HongBao parent = hongBao.getParent(); if (parent != null) { Long pid = parent.getId(); HongBao phongbao = hongBaoService.selectByPrimaryKey(pid); Map map2 = getOrderItem(phongbao); return map2; } } else if (type == HongBao.TYPE_SHARE_GOODS) { /* 分享订单 */ Long hongbaoId = hongBao.getId(); PidOrder pidOrder = pidOrderService.getPidOrderByHongBaoId(hongbaoId); if (pidOrder != null) { orderItem = new OrderItem(); orderItem.setOrderId(pidOrder.getOrderId()); orderItem.setTitle(pidOrder.getGoodsTitle()); orderItem.setPayMoney(pidOrder.getPayMoney()); orderItem.setAuctionId(pidOrder.getAuctionId()); // 下单时间 Date createTime = pidOrder.getCreateTime(); if (createTime != null ) { thirdCreateTime = createTime.getTime(); } // 结算时间 Date balanceTime = pidOrder.getBalanceTime(); if (balanceTime != null ) { endtime = balanceTime.getTime(); } String param = hongBao.getParam(); if (!StringUtil.isNullOrEmpty(param)) { String picture = param.substring(11,param.length()); if (!StringUtil.isNullOrEmpty(picture)) { orderItem.setPicture(picture.substring(0, picture.length()-1)); } } } } map.put("orderItem", orderItem); map.put("endtime", endtime); map.put("thirdCreateTime", thirdCreateTime); return map; } }