src/com/yc/api/controller/QrCodeController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/com/yc/open/mutual/controller/MutualController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/com/yc/sdk/WebSocketMessage/api/messagelistener/WebSocketMessageListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/com/yc/sdk/WebSocketMessage/entity/MessageInfo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/com/yc/sdk/WebSocketMessage/service/ApiAuthMessageImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/com/yc/api/controller/QrCodeController.java
@@ -815,7 +815,7 @@ CallBackMessage callBackMessage = new CallBackMessage(); try { SpObserver.setDBtoInstance("_" + request.getSession().getAttribute(SessionKey.DATA_BASE_ID)); T112002 t112002=null; T112002 t112002=new T112002(); if(refPostCartEntity.getQrCode().startsWith("2003")){ //API对接认证二维码 RedisTemplate redisTemplate = (RedisTemplate) FactoryBean.getBean("redisTemplate"); src/com/yc/open/mutual/controller/MutualController.java
@@ -11,6 +11,7 @@ import com.yc.sdk.shopping.action.api.GenerationQrCodeForApp; import com.yc.sdk.shopping.entity.QrCodeForAppEntity; import com.yc.sdk.shopping.service.imagedata.ShoppingImageDataIfc; import com.yc.service.BaseService; import com.yc.utils.SessionKey; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; @@ -67,7 +68,7 @@ map.put("userCode", userCode); map.put("msgType", MessageType.MUTUAL_AUTH); map.put("domain", domain); map.put("logo", domain+"/images/login/"+dbId+"/logo.png"); map.put("logo", domain+getLogo(dbId)); map.put("setup", 0);//第一步 info.put("qrCodeType", MessageType.MUTUAL_AUTH); info.put("qrCodeData", map); @@ -92,7 +93,24 @@ SpObserver.setDBtoInstance(); } } public String getLogo(String dbId){ try{ SpObserver.setDBtoDemo(); String sql = " set nocount on \n declare @dbid int = ? \n"; sql += " select case when isnull(CONVERT(varchar(MAX), CONVERT(varbinary(MAX), LogoIcon)),'')='' then 0 else 1 end from gsystem where id= @dbid "; BaseService baseServer = (BaseService) FactoryBean.getBean("BaseService"); Integer result = baseServer.getJdbcTemplate().queryForObject(sql,Integer.class,dbId); if(result==0){ //表示没有上传Logo,取默认 return "/images/login/logo.png"; }else{ //取上传logo return "/images/login/"+dbId+"/logo.png"; } }finally { SpObserver.setDBtoInstance(); } } /** * 显示二维码图片内容 * src/com/yc/sdk/WebSocketMessage/api/messagelistener/WebSocketMessageListener.java
@@ -37,8 +37,12 @@ RedisSerializer<?> serializer = redisTemplate.getValueSerializer(); Object body = serializer.deserialize(message.getBody()); //String channel = new String(pattern); //取订阅频道 主题 channel MessageInfo msg = MessageInfo.build(String.valueOf(body)); MessageInfo msg=null; if(body instanceof MessageInfo) { msg = (MessageInfo) body; }else { msg = MessageInfo.build(String.valueOf(body)); } //System.out.println("订阅接收到的消息:"+msg.toString()); List<WsMessageUserEntity> wsMessageUserEntityList = WebSocketMessageServer.getOnlineUser(msg.getDbId(), msg.getUserCode()); //只有是存在于当前的用户信息才需要处理,否则不需要处理 src/com/yc/sdk/WebSocketMessage/entity/MessageInfo.java
@@ -2,9 +2,13 @@ import java.io.Serializable; import java.util.Map; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.yc.action.grid.GridUtils; import groovy.transform.EqualsAndHashCode; import lombok.Data; import lombok.NoArgsConstructor; @@ -26,8 +30,10 @@ public static MessageInfo build(String message){ Gson gson=new Gson(); MessageInfo msg= gson.fromJson(message,new com.google.gson.reflect.TypeToken<MessageInfo>() {}.getType()); //该写法报 empty string 错误,改为下面的写法 // Message msg = MessageGsonBuilder.create().fromJson(message, Message.class); //为了解决 empty string 错误,故重新实现取数方法 , Added by Johns Wang, 2018-11-11 // new GsonBuilder() // .registerTypeAdapter(new TypeToken<Map<String, Object>>() { // }.getType(), new GridUtils.MapTypeAdapter()).create(); MessageInfo msg= gson.fromJson(message,new com.google.gson.reflect.TypeToken<MessageInfo>() {}.getType()); return msg; } src/com/yc/sdk/WebSocketMessage/service/ApiAuthMessageImpl.java
@@ -2,9 +2,12 @@ import com.yc.action.grid.GridUtils; import com.yc.exception.ApplicationException; import com.yc.factory.FactoryBean; import com.yc.listener.SessionListener; import com.yc.open.mutual.controller.MutualController; import com.yc.sdk.WebSocketMessage.action.WebSocketMessageServer; import com.yc.sdk.WebSocketMessage.entity.MessageInfo; import com.yc.sdk.WebSocketMessage.entity.MessageType; import com.yc.sdk.WebSocketMessage.entity.WsMessageUserEntity; import com.yc.utils.SessionKey; import org.springframework.stereotype.Service; @@ -25,7 +28,7 @@ try { final Map map = GridUtils.fromJson(message.getMsg()); if (map != null) { switch (Integer.parseInt(map.get("setup") + "")) { switch (((Double)map.get("setup")).intValue()) { case 1: //表示APP点了同意授权接入按钮 //1,向经销商发消息,传递当前扫码用户(总部)的信息(公司名称,用户名称),以便给经销商确认身份 @@ -34,7 +37,7 @@ WebSocketMessageServer.publishMessageToRedis(messageInfo); // 2,返回提示消息内容,确认消息给[公司名称],等待对方确认通过,总部端显示 MessageInfo callback = new MessageInfo(); callback.setMsg("等待["+map.get("comanyName")+"]验证您身份,请稍等!"); callback.setMsg("等待["+map.get("companyName")+"]验证您身份,请稍等!"); userEntity.sendMessage(callback); break; case 2: @@ -45,9 +48,9 @@ //1,表示经销商接收到同意消息, // TODO 把总部传过来的信息(dbid,domain)写入供应商表 //经销商端显示 //经销商自己显示 MessageInfo callback3 = new MessageInfo(); callback3.setMsg("等待["+map.get("comanyName")+"]最终确认通过,请稍等!"); callback3.setMsg("等待["+map.get("companyName")+"]最终确认通过,请稍等!"); userEntity.sendMessage(callback3); //2,通知总部,经销商已确认 MessageInfo messageInfo3 = getMessageInfo(message, userEntity, map,4); @@ -59,7 +62,7 @@ //2,通知经销商已确认 MessageInfo messageInfo4 = getMessageInfo(message, userEntity, map,5); WebSocketMessageServer.publishMessageToRedis(messageInfo4); //3,通知总部 //3,通知总部自己 MessageInfo callback4 = new MessageInfo(); callback4.setMsg("授权接入成功!"); userEntity.sendMessage(callback4); @@ -73,34 +76,39 @@ } } } catch (Exception e) { e.printStackTrace(); WebSocketMessageServer.printError(e, userEntity.getSession()); } } /** * 根据当前用户是总部,还是经销商,取对应的内容返回 * 根据当前用户是总部,还是经销商,取对应的会话内容返回 * @param message * @param userEntity * @param map * @param msg * @return */ public MessageInfo getMessageInfo(MessageInfo message, WsMessageUserEntity userEntity, Map map,int type) { Map msg =new HashMap(); final HttpSession session = SessionListener.getSession(userEntity.getSessionId()); MessageInfo messageInfo = new MessageInfo(); messageInfo.setUserCode(GridUtils.prossRowSetDataType_String(map, "userCode"));//userCode int dbId=new Double(GridUtils.prossRowSetDataType_Double(map, "dbId")).intValue(); messageInfo.setDbId(dbId);//dbid messageInfo.setMsgType(MessageType.MUTUAL_AUTH); if (session != null) { msg.put("comanyName", session.getAttribute(SessionKey.COMPANY_NAME));//公司名称 msg.put("companyName", session.getAttribute(SessionKey.COMPANY_NAME));//公司名称 msg.put("userName", session.getAttribute(SessionKey.USER_NAME)); msg.put("domain", session.getAttribute(SessionKey.DOMAIN)); final MutualController mutualController = (MutualController)FactoryBean.getBean("mutualController"); msg.put("logo", session.getAttribute(SessionKey.DOMAIN)+mutualController.getLogo(messageInfo.getDbId()+"")); }else{ throw new ApplicationException(message.getUserCode()+"查找不到会话信息,请检查sessionId是否有传递"); } msg.put("dbId", message.getDbId());//当前用户的dbid msg.put("userCode", message.getUserCode()); msg.put("setup", type); MessageInfo messageInfo = new MessageInfo(); messageInfo.setUserCode(GridUtils.prossRowSetDataType_String(map, "userCode"));//userCode messageInfo.setDbId(GridUtils.prossRowSetDataType_Int(map, "dbId"));//dbid messageInfo.setMsg(GridUtils.toJson(msg)); return messageInfo; }