package com.yeshi.fanli.controller.admin; import java.io.PrintWriter; import java.math.BigDecimal; import java.net.URLDecoder; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.common.AdminUser; import com.yeshi.fanli.entity.redpack.RedPackExchange; import com.yeshi.fanli.exception.redpack.RedPackBalanceException; import com.yeshi.fanli.exception.redpack.RedPackExchangeException; import com.yeshi.fanli.service.AdminUserService; import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService; import com.yeshi.fanli.service.inter.redpack.RedPackExchangeService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; import net.sf.json.JSONObject; @Controller @RequestMapping("admin/new/api/v1/redpack") public class RedPackAdminController { @Resource private RedPackExchangeService redPackExchangeService; @Resource private RedPackBalanceService redPackBalanceService; @Resource private UserInfoService userInfoService; @Resource private AdminUserService adminUserService; /** * * @param callback * @param pageIndex * @param pageSize * @param key 搜索:暂只提供uid * @param state 状态: * @param out */ @RequestMapping(value = "query") public void query(String callback, Integer pageIndex, Integer pageSize, String key, Integer state, PrintWriter out) { if (pageIndex == null || pageIndex < 1) { pageIndex = 1; } if (pageSize == null || pageSize < 1) { pageSize = Constant.PAGE_SIZE; } try { List list = redPackExchangeService.query((pageIndex - 1) * pageSize, pageSize, key, state); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据")); return; } for (RedPackExchange redPackExchange: list) { UserInfo userInfo = userInfoService.selectByPKey(redPackExchange.getUid()); redPackExchange.setPortrait(userInfo.getPortrait()); redPackExchange.setNickName(userInfo.getNickName()); Long auditId = redPackExchange.getAuditId(); if(auditId != null) { AdminUser adminUser = adminUserService.selectByPrimaryKey(auditId); if (adminUser != null) { redPackExchange.setAuditName(adminUser.getName()); } } } long count = redPackExchangeService.count(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 */ @RequestMapping(value = "getApplyInfo") public void getAuditInfo(String callback, Long id, PrintWriter out) { RedPackExchange exchange = redPackExchangeService.selectByPrimaryKey(id); if (exchange == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("申请记录不存在")); return; } Long uid = exchange.getUid(); BigDecimal balance; try { balance = redPackBalanceService.getBalance(uid); } catch (RedPackBalanceException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该用户红包功能已被封禁")); return; } UserInfo userInfo = userInfoService.selectByPKey(uid); JSONObject data = new JSONObject(); data.put("exchange", exchange); data.put("userInfo", userInfo); data.put("countInit", redPackExchangeService.countByUidAndState(uid, RedPackExchange.STATE_INIT)); data.put("countSucceed", redPackExchangeService.countByUidAndState(uid, RedPackExchange.STATE_SUCCESS)); data.put("countReject", redPackExchangeService.countByUidAndState(uid, RedPackExchange.STATE_REJECT)); data.put("balance", balance); data.put("moneyInit", redPackExchangeService.countMoneyByUidAndState(uid,RedPackExchange.STATE_INIT)); data.put("moneySucceed", redPackExchangeService.countMoneyByUidAndState(uid,RedPackExchange.STATE_SUCCESS)); data.put("moneyReject", redPackExchangeService.countMoneyByUidAndState(uid,RedPackExchange.STATE_REJECT)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } /** * 允许提现 * @param callback * @param id * @param code * @param out * @param request */ @RequestMapping(value = "passExchange") public void passExchange(String callback, Long id, String code, PrintWriter out, HttpServletRequest request) { try { /* 检验是否登陆 */ 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; } /* 允许提现 操作 */ redPackExchangeService.passExchange(id, admin); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功")); } catch (RedPackExchangeException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); return; } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败")); return; } } /** * 拒绝提现 * @param callback * @param id * @param code * @param reason * @param out * @param request */ @RequestMapping(value = "rejectExchange") public void rejectExchange(String callback, Long id, String code, 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; } /* 检验是否通过验证 */ String codeType = (String) request.getSession().getAttribute(Constant.SESSION_EXTRACT_VERIFY_RESULT); if (!"1".equals(codeType)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(3, "邮箱验证未通过")); return; } // 编码转换 reason = URLDecoder.decode(reason, "UTF-8"); redPackExchangeService.rejectExchange(id, reason, admin); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("拒绝成功")); } catch (RedPackExchangeException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); return; } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败")); return; } } }