package project.web.admin.otc; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import kernel.exception.BusinessException; import kernel.util.DateUtils; import kernel.util.JsonUtils; import kernel.util.StringUtils; import kernel.web.PageActionSupport; import kernel.web.ResultObject; import project.Constants; import project.c2c.C2cOrder; import project.c2c.C2cOrderService; import project.onlinechat.otc.OtcMessageUser; import project.onlinechat.otc.OtcOnlineChatMessage; import project.onlinechat.otc.OtcOnlineChatMessageService; import project.user.token.Token; import project.user.token.TokenService; @RestController public class AdminOtcOnlineChatController extends PageActionSupport { private Logger logger = LoggerFactory.getLogger(AdminOtcOnlineChatController.class); @Autowired private OtcOnlineChatMessageService otcOnlineChatMessageService; @Autowired private TokenService tokenService; @Autowired private C2cOrderService c2cOrderService; private final String action = "normal/adminOtcOnlineChatAction!"; @RequestMapping(value = action + "list.action", produces="text/html;charset=UTF-8") public String list(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); resultObject = this.readSecurityContextFromSession(resultObject); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { String messageId = request.getParameter("message_id"); String orderNo = request.getParameter("order_no"); String partyId = request.getParameter("partyid"); // 首页的时候才更新未读数 if (StringUtils.isNullOrEmpty(messageId) && !StringUtils.isNullOrEmpty(partyId)) { OtcMessageUser cacheOtcMessageUser = otcOnlineChatMessageService.cacheMessageUser(orderNo); if (cacheOtcMessageUser != null && cacheOtcMessageUser.getCustomer_unreadmsg() > 0) { otcOnlineChatMessageService.updateUnreadAdmin(partyId, "read", orderNo); } } List> data = new ArrayList>(); List list = otcOnlineChatMessageService.cacheGetList(messageId, 30, orderNo); C2cOrder c2cOrder = c2cOrderService.get(orderNo); // 承兑商ID String c2cUserId = c2cOrder.getC2cUserPartyId(); for(OtcOnlineChatMessage message : list) { Map map = new HashMap(); map.put("id", message.getId()); if (c2cUserId.equals(message.getPartyId())) { map.put("send_receive", "receive"); } else { map.put("send_receive", "send"); } String type = message.getType(); map.put("type", type); String content = message.getContent(); if ("img".equals(type)) { content = Constants.WEB_URL + "/public/showimg!showImg.action?imagePath=" + content; } map.put("content", content); map.put("createtime", DateUtils.format(message.getCreateTime(), "MM-dd HH:mm")); map.put("delete_status", message.getDelete_status()); data.add(map); } resultObject.setData(data); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "send.action", produces="text/html;charset=UTF-8") public String send(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); String token = request.getParameter("token"); if (StringUtils.isNullOrEmpty(token)) { resultObject.setCode("403"); resultObject.setMsg("请重新登录"); return JsonUtils.getJsonString(resultObject); } try { // 后台配置的承兑商用户ID String partyId = request.getParameter("partyid"); String type = request.getParameter("type"); String content = request.getParameter("content"); String orderNo = request.getParameter("order_no"); if (StringUtils.isNullOrEmpty(partyId)) { throw new BusinessException("暂无用户"); } if (StringUtils.isNullOrEmpty(content.trim()) || StringUtils.isNullOrEmpty(type)) { throw new BusinessException("请输入内容"); } if(StringUtils.isEmptyString(orderNo)) { throw new BusinessException("订单号不能未空"); } // 文字内容乱码处理 content = URLDecoder.decode(content.replaceAll("%(?![0-9a-fA-F]{2})", "%25"), "utf-8"); otcOnlineChatMessageService.saveSend(partyId, type, content, this.getUsername_login(), orderNo); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "create.action", produces="text/html;charset=UTF-8") public String create(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); resultObject = this.readSecurityContextFromSession(resultObject); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { String orderNo = request.getParameter("order_no"); otcOnlineChatMessageService.saveCreateByOrderNo(orderNo); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "del.action") public String del(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); resultObject = this.readSecurityContextFromSession(resultObject); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { String partyId = request.getParameter("partyid"); // ip,表示游客 if (partyId.indexOf(".") != -1) { otcOnlineChatMessageService.deleteByIp(partyId); } else { otcOnlineChatMessageService.delete(partyId); } } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "unread.action", produces="text/html;charset=UTF-8") public String unread() { ResultObject resultObject = new ResultObject(); resultObject = this.readSecurityContextFromSession(resultObject); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { int unreadMsg = otcOnlineChatMessageService.unreadMsgAdmin(null); resultObject.setData(unreadMsg); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "unreads.action", produces="text/html;charset=UTF-8") public String unreads(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); resultObject = this.readSecurityContextFromSession(resultObject); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { String orderNos = request.getParameter("order_nos"); if(StringUtils.isNullOrEmpty(orderNos)) { resultObject.setData(new HashMap()); }else { List nos = new ArrayList(Arrays.asList(orderNos.split(","))); List> datas = new ArrayList>(); Map unreadMsgs = otcOnlineChatMessageService.unreadMsgs(nos); for(Entry entry: unreadMsgs.entrySet()) { Map data = new HashMap(); data.put("order_no", entry.getKey()); data.put("unread_msg", entry.getValue()); datas.add(data); } resultObject.setCode("200"); resultObject.setData(datas); } } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "resetRemarks.action", produces="text/html;charset=UTF-8") public String resetRemarks(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); resultObject = this.readSecurityContextFromSession(resultObject); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { String remarks = request.getParameter("remarks"); String orderNo = request.getParameter("order_no"); resultObject.setData(otcOnlineChatMessageService.resetRemarks(orderNo, remarks)); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "saveGetUserInfo.action", produces="text/html;charset=UTF-8") public String saveGetUserInfo(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); resultObject = this.readSecurityContextFromSession(resultObject); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { String partyId = request.getParameter("partyid"); String orderNo = request.getParameter("order_no"); resultObject.setData(otcOnlineChatMessageService.saveGetUserInfo(orderNo, partyId)); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "getChatToken.action") public String getChatToken() { ResultObject resultObject = new ResultObject(); try { Token t = this.tokenService.find(this.getUsername_login()); resultObject.setData(t.getToken()); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("loginuser:{" + this.getUsername_login() + "},error:", e); } return JsonUtils.getJsonString(resultObject); } @RequestMapping(value = action + "deleteOnlineChatMessage.action") public String deleteOnlineChatMessage(HttpServletRequest request) { ResultObject resultObject = new ResultObject(); String token = request.getParameter("token"); resultObject = this.readSecurityContextFromSession(resultObject); logger.error("deleteOnlineChatMessage::"+resultObject.getCode()); if (!"0".equals(resultObject.getCode())) { return JsonUtils.getJsonString(resultObject); } try { String messageId = request.getParameter("message_id"); otcOnlineChatMessageService.updateMessageDelete(messageId, this.tokenService.cacheGet(token)); } catch (BusinessException e) { resultObject.setCode("1"); resultObject.setMsg(e.getMessage()); logger.error("执行异常::"+e.getMessage()); } catch (Exception e) { resultObject.setCode("1"); resultObject.setMsg("Program error!"); logger.error("error:", e); } String str = JsonUtils.getJsonString(resultObject); return str; } public void setTokenService(TokenService tokenService) { this.tokenService = tokenService; } public void setOtcOnlineChatMessageService(OtcOnlineChatMessageService otcOnlineChatMessageService) { this.otcOnlineChatMessageService = otcOnlineChatMessageService; } }