提交 | 用户 | age
|
a6a76f
|
1 |
package com.yc.filter; |
F |
2 |
|
|
3 |
import com.yc.api.schedule.AppVersion; |
|
4 |
import com.yc.api.utils.VersionUtils; |
|
5 |
import com.yc.currentThreadInfo.CurrentLocal; |
|
6 |
import com.yc.entity.DataSourceEntity; |
|
7 |
import com.yc.exception.CallBackMessage; |
|
8 |
import com.yc.factory.FactoryBean; |
|
9 |
import com.yc.listener.SessionListener; |
|
10 |
import com.yc.multiData.MultiDataSource; |
|
11 |
import com.yc.multiData.SpObserver; |
|
12 |
import com.yc.sdk.jedis.KryoUtils; |
|
13 |
import com.yc.sdk.shopping.action.Maintaince; |
|
14 |
import com.yc.sdk.shopping.util.SettingKey; |
|
15 |
import com.yc.sdk.weixincp.action.WxAuthSessionIfc; |
|
16 |
import com.yc.sdk.weixincp.entity.MyWxCpUser; |
|
17 |
import com.yc.sdk.weixincp.service.ERPUserIfc; |
|
18 |
import com.yc.sdk.weixinmp.entity.WxSessionEntity; |
10aef8
|
19 |
import com.yc.service.BaseService; |
a6a76f
|
20 |
import com.yc.service.build.FilterBuildFuncIfc; |
F |
21 |
import com.yc.service.build.FilterBuildFuncImpl; |
|
22 |
import com.yc.service.impl.DBHelper; |
|
23 |
import com.yc.service.impl.EnvHelper; |
|
24 |
import com.yc.servlet.BuildFormat; |
|
25 |
import com.yc.utils.EncodeUtil; |
|
26 |
import com.yc.utils.SessionKey; |
bff6b6
|
27 |
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo; |
a6a76f
|
28 |
import me.chanjar.weixin.common.util.http.URIUtil; |
F |
29 |
import me.chanjar.weixin.cp.bean.WxCpUser; |
|
30 |
import me.chanjar.weixin.mp.bean.result.WxMpUser; |
|
31 |
import org.apache.commons.lang.StringUtils; |
|
32 |
import org.slf4j.Logger; |
|
33 |
import org.slf4j.LoggerFactory; |
|
34 |
import org.springframework.data.redis.core.RedisTemplate; |
|
35 |
import redis.clients.jedis.Jedis; |
|
36 |
import redis.clients.jedis.JedisPool; |
|
37 |
|
|
38 |
import javax.servlet.*; |
|
39 |
import javax.servlet.http.HttpServletRequest; |
|
40 |
import javax.servlet.http.HttpServletResponse; |
|
41 |
import javax.servlet.http.HttpSession; |
|
42 |
import java.io.IOException; |
|
43 |
import java.io.PrintWriter; |
|
44 |
import java.util.Map; |
|
45 |
|
|
46 |
public class LoginFilter implements Filter { |
|
47 |
protected final Logger log = LoggerFactory.getLogger(this.getClass()); |
|
48 |
|
|
49 |
@SuppressWarnings("unchecked") |
|
50 |
@Override |
|
51 |
public void doFilter(ServletRequest rep, ServletResponse resp, |
|
52 |
FilterChain chain) throws IOException, ServletException { |
|
53 |
HttpServletRequest request = (HttpServletRequest) rep; |
|
54 |
HttpServletResponse response = (HttpServletResponse) resp; |
|
55 |
HttpSession session = request.getSession(); |
|
56 |
CallBackMessage callBackMessage=new CallBackMessage(); |
|
57 |
request.setCharacterEncoding("utf-8"); |
|
58 |
//**** start *******检测是否存在加密锁 |
|
59 |
|
|
60 |
// if(!InitLicense.getInstance().checkInfo(request, response)){ |
|
61 |
// return; |
|
62 |
// } |
|
63 |
|
|
64 |
//******end ******* |
|
65 |
if("".equals(EnvHelper.getPath())){//掉线后的访问 |
|
66 |
String path = request.getServletContext().getRealPath("/"); |
|
67 |
EnvHelper.setPath(path);//得到项目的地址,方便后面使用 |
|
68 |
} |
|
69 |
String user = (String) session.getAttribute(SessionKey.HRCODE); |
10aef8
|
70 |
String isSuperUser = (String) session.getAttribute(SessionKey.USERTYPE); |
a6a76f
|
71 |
String queryString = request.getQueryString(); |
F |
72 |
String hostUrl = SettingKey.getHostUrl(request) ; |
|
73 |
|
|
74 |
String reqUri = request.getRequestURI(); |
|
75 |
//System.out.println(this.getClass() +" 0 URL:"+ reqUri+"?"+queryString+ " session CorpId=" + session.getAttribute(SessionKey.WEIXIN_CORPID)); |
|
76 |
//System.out.println(reqUri); |
|
77 |
|
|
78 |
//如果demo datasource 为空,则必须先设置它 added by Johns Wang, 2019-09-24 dataSourceMap.put(dataSourceEntity.getDbId()+"", dataSourceEntity); |
|
79 |
boolean hasDemoDataSource = MultiDataSource.hasDemoDataSource(); |
|
80 |
if (! hasDemoDataSource ) { |
|
81 |
if (reqUri.startsWith("/newsetXml.do")||reqUri.startsWith("/demo/update1.jsp")) { |
|
82 |
chain.doFilter(request, response); |
|
83 |
return ; |
|
84 |
} |
|
85 |
if (!reqUri.startsWith("/demo/update.jsp") ) { |
|
86 |
session.setAttribute(SessionKey.DEMO_REF,SessionKey.DEMO_REF); |
|
87 |
request.getRequestDispatcher("/demo/update.jsp?demoConfig=demo").forward(request, response); |
|
88 |
return ; |
|
89 |
}else { |
|
90 |
chain.doFilter(request, response); |
|
91 |
return ; |
|
92 |
} |
|
93 |
} |
|
94 |
|
|
95 |
//检测APP版本号,如果小于指定版本号,强制用户升级 |
|
96 |
|
7786e3
|
97 |
if(VersionUtils.getAPPTypeName(request)!=null&&(reqUri.contains("/login.do")||reqUri.contains("/autoLoginV2.do"))){//处理登录 |
a6a76f
|
98 |
try { |
F |
99 |
RedisTemplate redisTemplate = (RedisTemplate) FactoryBean.getBean("redisTemplate"); |
|
100 |
Object object = redisTemplate.opsForValue().get("APP_Upgrade_Version"); |
|
101 |
if (object != null) { |
|
102 |
AppVersion appVersion = (AppVersion) object; |
|
103 |
if (!VersionUtils.loginIfcVersoinV2(request, appVersion.getAndroid(), appVersion.getIos())) { |
7786e3
|
104 |
//---当前版本小于强制更新版本,需要提示更新版本 |
a6a76f
|
105 |
CallBackMessage message = new CallBackMessage(); |
7786e3
|
106 |
message.sendErrorMessage("您的APP版本["+request.getHeader("x-app-version")+"]太低,请到应用商店下载最新版本"); |
a6a76f
|
107 |
message.setState(-1000); |
F |
108 |
printJson(response, VersionUtils.isAndroid(request) ? message.toString() : message.print()); |
|
109 |
return; |
|
110 |
} |
|
111 |
|
|
112 |
} |
|
113 |
}catch (Exception ex){ |
|
114 |
CallBackMessage message = new CallBackMessage(); |
|
115 |
message.sendErrorMessage(ex.getMessage()); |
|
116 |
message.setState(-1); |
|
117 |
printJson(response, VersionUtils.isAndroid(request) ? message.toString() : message.print()); |
|
118 |
return; |
|
119 |
} |
|
120 |
} |
|
121 |
|
|
122 |
|
|
123 |
if(reqUri.contains("/getdb.do")||reqUri.contains("/weixin/") |
|
124 |
||reqUri.contains("/wx/")||reqUri.contains("/cgi-bin/") |
|
125 |
||reqUri.contains("/logout.do") |
|
126 |
|| "/getDateDemo.do".equals(reqUri) //登录页面获取数据源 |
|
127 |
||reqUri.contains("/getImageedit.do") //微信需要用 |
|
128 |
||reqUri.contains("/getImage.do") //微信需要用 |
|
129 |
||reqUri.contains("/ShoppingImageRefresh.do") //清除网店缓存图片(磁盘文件) |
|
130 |
||reqUri.contains("/SyncDataSource.do") //同步demo数据源到本地服务器map |
|
131 |
||reqUri.contains("/build.do") //重新生成页面 |
|
132 |
||reqUri.contains("/buildv2.do") //重新生成页面 |
|
133 |
||reqUri.contains("/buildPersonlizedTemplate.do") //重新生成页面 |
|
134 |
||reqUri.contains("/shopping/maintaince/maintaince.do") //停止或启用某个数据源action |
|
135 |
||reqUri.contains("/shopping/maintaince/maintaince.jsp") //停止或启用某个数据源页面 |
|
136 |
||reqUri.contains("/shopping/maintaince/systemconfig.jsp") //维护系统设置 |
|
137 |
||reqUri.contains("/shopping/maintaince/messagelist.jsp") //系统级消息发送列表 |
|
138 |
||reqUri.contains("/shopping/maintaince/messageedit.jsp") //发送系统级消息 |
83d963
|
139 |
||reqUri.contains("/general/pdf/web/viewer.jsp") //pdf插件 |
a6a76f
|
140 |
|
F |
141 |
/** |
|
142 |
* 微信支付(退款)通知,包括通知: |
|
143 |
* 商城订单通知120230,图片订单通知120236,成为会员订单通知120234(使用 .../wxordernotice.do) |
|
144 |
* 充值通知 (.../wxrechargenotice.do) , 提现通知(.../wxwithdrawalsnotice.do),退款通知(.../wxrefundnotice.do) |
|
145 |
*/ |
|
146 |
||reqUri.startsWith("/shopping/pay/notice/") |
|
147 |
||reqUri.startsWith("/shopping/pay/refundMoney.do") //微信退款,在ERP系统使用外部URL方式调用 |
|
148 |
|
|
149 |
||reqUri.contains("/shopping/pay/getSalesOrderWxPayConfig.do") //获取微信支付参数接口 |
|
150 |
||reqUri.contains("/404.jsp") |
|
151 |
||reqUri.contains("/oauth2/") //第三方登录 |
|
152 |
||reqUri.contains("/CheckInvitationCode.do") //验证【注册验证码】 |
|
153 |
||reqUri.contains("/regUser.do") //注册接口 |
|
154 |
||reqUri.contains("/api/myCompany.do") //企业列表接口 |
|
155 |
||reqUri.contains("/api/sendSms.do") //发手机短信验证码 |
|
156 |
||reqUri.contains("/api/forgotPwd.do") //忘记密码 |
|
157 |
||reqUri.contains("/links.do") |
|
158 |
||reqUri.contains("/app/getZip.do") |
|
159 |
||reqUri.contains("/ws/") //websocket 接口 |
|
160 |
||reqUri.contains("/open/") //开放接口 |
|
161 |
||reqUri.contains("/shopping/generationMatCodeQrCode.do") //更新商品资料二维码,使微信扫码可以直接打开页面 |
|
162 |
||reqUri.contains("/shopping/websocket/index.jsp") //web socket |
|
163 |
||reqUri.contains("/shopping/websocket/index1.jsp") |
|
164 |
||reqUri.contains("/wx/CpAuthSession.do") |
|
165 |
||reqUri.contains("/wx/MpAuthSession.do") |
|
166 |
||reqUri.contains("/buildPersonlizedTemplateForAll.do") //生成所有数据库的浮动窗体页面,使其打开时保持最新 ,Added by Johns Wang, 20190-96-04 |
|
167 |
||reqUri.contains("/demo/update1.jsp") //设置用户的实体数据源 |
|
168 |
||reqUri.contains("/getInvitationCode.do") |
|
169 |
||reqUri.startsWith("/changepwd.do") //改密码 |
|
170 |
||reqUri.startsWith("/autoLogin.do") |
|
171 |
||reqUri.startsWith("/autoLoginV2.do") |
|
172 |
|| reqUri.startsWith("/getLogoIcon.do")//Logo图片 |
|
173 |
|| reqUri.startsWith("/attachment/downLoadAttachment.do")//附件下载 |
|
174 |
|| reqUri.startsWith("/attachment/uploadAttachment.do")//附件上传 |
|
175 |
|| reqUri.startsWith("/attachment/deleteAttachment.do")//附件删除 |
|
176 |
|| reqUri.startsWith("/attachment/uploadAttachmentV2.do")//附件上传 |
|
177 |
|| reqUri.startsWith("/attachment/deleteAttachmentV2.do")//附件删除 |
|
178 |
|| reqUri.startsWith("/api/upPortraitV2.do")//上传头像 |
|
179 |
|| reqUri.startsWith("/attachment/deleteAttachmentByGrid.do") |
|
180 |
|| reqUri.startsWith("/shopping/live/") //小程序直播 |
|
181 |
//---卤江南 |
|
182 |
|| reqUri.startsWith("/lujn/orderPayCallback.do") //农行支付通知回调 |
|
183 |
// || reqUri.startsWith("/shopping/updateMatCodeQrCode.do") //生成物料主数据二维码 |
245bbd
|
184 |
|| reqUri.startsWith("/shopping/export/getExportFile.do") //新版小程序导出文件excel下载 |
59319a
|
185 |
|| reqUri.startsWith("/mutual/unbind110203.do") //解绑客户 |
F |
186 |
|| reqUri.startsWith("/mutual/unbind110302.do") //解绑供应商 |
81ff30
|
187 |
|| reqUri.endsWith("/orderPayCallback.do") //农行通用聚合支付回调接口 |
108577
|
188 |
|| reqUri.endsWith("/orderPayCallbackByEpay.do") //农行农行e收款回调接口 |
067ccf
|
189 |
|| reqUri.startsWith("/batchUpload/uploadImage.do") //批量上传物料主数据图片 |
d3ae0a
|
190 |
|
X |
191 |
|| reqUri.startsWith("/payment/pay") //维护费回调 |
c054bc
|
192 |
|| reqUri.startsWith("/api/loginByCode.do") //限制多设备登录的短信验证 |
2335cc
|
193 |
|| reqUri.startsWith("/multilogin.do") //多账号登录 |
ff4ac3
|
194 |
|| reqUri.startsWith("/wyn/auth.do") //Wyn认证 |
8c3a7d
|
195 |
|| reqUri.startsWith("/app/v2/get9686.do") //颜色列表 |
2f071f
|
196 |
|| reqUri.startsWith("/WxExternalContact/")//企业微信客户管理 |
X |
197 |
|| reqUri.startsWith("/afterSales/")//售后 |
|
198 |
|
d3ae0a
|
199 |
|
a6a76f
|
200 |
){ |
F |
201 |
chain.doFilter(request, response); |
|
202 |
return; |
|
203 |
} |
|
204 |
//解决导购(网店)没有登录的问题,主要是微信访问时,必须要带微信AppId或CorpId参数,例如从巴士软件公众号点击过来,则设为: wx=2&CorpId=wx258ad4bfa5a9d263 |
|
205 |
//Added by Johns Wang, 2016-03-06 |
|
206 |
String corpId = request.getParameter(SessionKey.WEIXIN_CORPID) ; |
|
207 |
if (corpId == null || "".equals(corpId)) { |
|
208 |
corpId = request.getParameter(SessionKey.WEIXIN_APPID) ; |
|
209 |
} |
|
210 |
|
|
211 |
String wx = request.getParameter(SessionKey.WEIXIN_FROM) ; |
|
212 |
//if (corpId!= null&&!"".equals(corpId)) System.out.println("reqUri="+reqUri + " queryString=" + queryString); |
|
213 |
String radarWarningPage = "/shopping/weixinby3rd/ai/home/warning.jsp" ; |
|
214 |
|
|
215 |
JedisPool jedisPool = (JedisPool) FactoryBean.getBean("jedisPool"); |
|
216 |
try (Jedis jedis = jedisPool.getResource()){ |
|
217 |
//检查系统是否停用,如果被停用,则要删除会话 session ,然后重定向到 login.jsp 页面,Added by Johns Wang , 2017-05-26 |
|
218 |
if (! reqUri.startsWith("/login.jsp") && !reqUri.endsWith("/") && !reqUri.startsWith("/newsetXml.do") && Maintaince.isSystemStop( request) ) {//,处理一个域名有多系统,其中一些系统过期的情况,by danaus 2020/4/10 16:11 |
|
219 |
//session.invalidate(); //删除会话 |
8c3a7d
|
220 |
if(VersionUtils.getAPPTypeName(request)!=null){//增加对app的处理 by danaus 2019/12/19 16:15 |
a6a76f
|
221 |
callBackMessage.sendErrorMessage("会话失效"); |
F |
222 |
this.printJson(response,callBackMessage.toString()); |
|
223 |
}else { |
|
224 |
if(reqUri.contains("/login.do")) { |
3e30bf
|
225 |
callBackMessage.sendErrorMessage("系统出现异常,请联络服务提供商!"); |
a6a76f
|
226 |
this.printJson(response, callBackMessage.toString()); |
F |
227 |
}else{ |
|
228 |
response.sendRedirect("/login.jsp"); |
|
229 |
} |
|
230 |
} |
|
231 |
return ; |
|
232 |
} |
|
233 |
if ( corpId != null && ! "".equals(corpId) |
|
234 |
&& wx != null && !"".equals(wx)) { |
|
235 |
if ( "3".equals(wx)) { //3 是小程序 |
|
236 |
session.setAttribute(SessionKey.WEIXIN_APPID,corpId) ; |
|
237 |
session.setAttribute(SessionKey.WEIXIN_FROM,wx) ; |
|
238 |
|
|
239 |
Object dbId = session.getAttribute(SessionKey.SHOPPING_DBID); |
|
240 |
if (dbId != null && ! "".equals(dbId) ) { |
|
241 |
chain.doFilter(request, response); |
|
242 |
return ; |
|
243 |
} |
|
244 |
DataSourceEntity dataSourceEntity = null ; |
|
245 |
|
|
246 |
dataSourceEntity = MultiDataSource.getDataSourceMapByMaAppId(corpId) ; |
|
247 |
if (dataSourceEntity != null) { |
|
248 |
//SpObserver.setDBtoInstance("_"+corpEntity.getDbId()) ; 这里不需要切换数据源,因为每次在访问数据库时,都自带数据源参数 |
|
249 |
session.setAttribute(SessionKey.SHOPPING_DBID,dataSourceEntity.getDbId() + "") ; |
|
250 |
chain.doFilter(request, response); |
|
251 |
return ; |
|
252 |
}else { |
|
253 |
request.getRequestDispatcher("/10001.jsp").forward(request, response); |
|
254 |
return ; |
|
255 |
} |
|
256 |
}else { // wx: "1" 企业号 , “2” 公众号 |
|
257 |
|
|
258 |
WxAuthSessionIfc wxAuthSessionIfc = null ; |
|
259 |
if (wx!=null && "1".equals(wx)) { |
|
260 |
wxAuthSessionIfc = (WxAuthSessionIfc)FactoryBean.getBean("CpAuthSession") ; |
|
261 |
}else { |
|
262 |
wxAuthSessionIfc = (WxAuthSessionIfc)FactoryBean.getBean("MpAuthSession") ; |
|
263 |
} |
|
264 |
|
|
265 |
//System.out.println(this.getClass()+" " + (new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new java.util.Date()) + " sessionid:" + session.getId() + " url:" + hostUrl+ reqUri + "?" + queryString); |
|
266 |
|
|
267 |
//解决多个公众号使用同一个域名的问题(因为同一个域名,在tomcat上只有一个会话 session,不同公众号切换时, |
|
268 |
//必须要重建(reset) 会话 session,避免数据库混用 ) ,Added by Johns Wang, 2018-11-09 |
|
269 |
String corpIdSessionValue = (String) session.getAttribute(SessionKey.WEIXIN_CORPID); |
|
270 |
if (corpIdSessionValue != null && !corpId.equals(corpIdSessionValue)) { |
|
271 |
// String openId = request.getParameter(SettingKey.FROMOPENID) ; |
|
272 |
// if (openId == null) { |
|
273 |
// WxSessionEntity.updateValueToSession(session, new WxSessionEntity()); //清空 session 值 |
|
274 |
// response.sendRedirect(wxAuthSessionIfc.getAuthorizationUrl(request)); |
|
275 |
// return ; |
|
276 |
// } |
|
277 |
|
|
278 |
//从redis 取 session 对象 |
|
279 |
|
|
280 |
String newSession = jedis.get("wxSession:"+corpId+":"+session.getId()) ; |
|
281 |
if (newSession != null) { |
|
282 |
//System.out.println(this.getClass()+" 将 wxSessionEntity 对象反序列化... " ); |
|
283 |
WxSessionEntity wxSessionEntity = KryoUtils.deserializationObject(newSession,WxSessionEntity.class) ; |
|
284 |
WxSessionEntity.updateValueToSession(session, wxSessionEntity); |
|
285 |
//System.out.println(this.getClass()+" 将 wxSessionEntity 对象反序列化...成功 " ); |
|
286 |
corpIdSessionValue = (String) session.getAttribute(SessionKey.WEIXIN_CORPID); |
|
287 |
}else { |
|
288 |
WxSessionEntity.updateValueToSession(session, new WxSessionEntity()); //清空会话 session |
|
289 |
} |
|
290 |
} |
|
291 |
|
|
292 |
String userCode = (String)session.getAttribute(SessionKey.USERCODE); |
|
293 |
if (userCode == null || "".equals(userCode)) { |
|
294 |
userCode = (String)session.getAttribute(SettingKey.CLTCODE); |
|
295 |
} |
|
296 |
if (userCode == null || "".equals(userCode)) { |
|
297 |
userCode = (String)session.getAttribute(SessionKey.HRCODE); |
|
298 |
} |
|
299 |
if (userCode == null || "".equals(userCode)) { |
|
300 |
userCode = (String)session.getAttribute(SessionKey.WEIXIN_OPENID); |
|
301 |
} |
|
302 |
if (corpIdSessionValue == null || "".equals(corpIdSessionValue) || userCode == null || "".equals(userCode)) { |
|
303 |
String code = request.getParameter("code"); //由微信传过来的 userid |
|
304 |
if (code == null||"".equals(code)) { |
|
305 |
response.sendRedirect(wxAuthSessionIfc.getAuthorizationUrl(request)); |
|
306 |
return ; |
|
307 |
}else { |
|
308 |
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap( request) ; |
|
309 |
//System.out.println(this.getClass() +" 1 URL:"+ reqUri+"?"+queryString+ " session CorpId=" + session.getAttribute(SessionKey.WEIXIN_CORPID)); |
|
310 |
if (wx!=null && "1".equals(wx) ) { |
|
311 |
WxCpUser wxCpUser = wxAuthSessionIfc.getAuthorizationCpUser( request, code); |
|
312 |
wxAuthSessionIfc.loginFromWxCpUser( request, response, wxCpUser); |
|
313 |
|
|
314 |
//检查是否启用 ai 雷达 功能 |
|
315 |
if (reqUri.startsWith("/shopping/weixinby3rd/ai") && !reqUri.startsWith(radarWarningPage) && wxCpUser != null) { |
|
316 |
if (!isAiRadarUser(request,wxCpUser.getUserId())) { |
|
317 |
request.getRequestDispatcher(radarWarningPage+"?"+queryString).forward(request, response); |
|
318 |
return; |
|
319 |
} |
|
320 |
} |
|
321 |
|
|
322 |
//检查是否启用 boss 雷达 功能 |
|
323 |
if (reqUri.startsWith("/shopping/weixinby3rd/boss") && !reqUri.startsWith(radarWarningPage) && wxCpUser != null) { |
|
324 |
if (!isBossRadarUser(request,wxCpUser.getUserId())) { |
|
325 |
request.getRequestDispatcher(radarWarningPage+"?"+queryString).forward(request, response); |
|
326 |
return; |
|
327 |
} |
|
328 |
} |
|
329 |
|
|
330 |
SpObserver.setDBtoInstance("_"+dataSourceEntity.getDbId()) ; //切换数据源 |
|
331 |
chain.doFilter(request, response); |
|
332 |
return ; |
|
333 |
}else { |
bff6b6
|
334 |
WxOAuth2UserInfo wxOAuth2UserInfo = wxAuthSessionIfc.getAuthorizationMpUser( request, code); |
J |
335 |
WxMpUser wxMpUser = new WxMpUser(); |
|
336 |
wxMpUser.setOpenId(wxOAuth2UserInfo.getOpenid()) ; |
|
337 |
wxMpUser.setNickname(wxOAuth2UserInfo.getNickname()) ; |
a8d792
|
338 |
//wxMpUser.setCountry(wxOAuth2UserInfo.getCountry()) ; |
bff6b6
|
339 |
wxMpUser.setHeadImgUrl(wxOAuth2UserInfo.getHeadImgUrl()) ; |
a8d792
|
340 |
//wxMpUser.setSex(wxOAuth2UserInfo.getSex()); |
J |
341 |
//wxMpUser.setCity(wxOAuth2UserInfo.getCity()); |
|
342 |
//wxMpUser.setProvince(wxOAuth2UserInfo.getProvince()); |
bff6b6
|
343 |
wxMpUser.setUnionId(wxOAuth2UserInfo.getUnionId()); |
J |
344 |
wxMpUser.setPrivileges(wxOAuth2UserInfo.getPrivileges()); |
a6a76f
|
345 |
wxAuthSessionIfc.loginFromWxMpUser( request, response, wxMpUser); |
F |
346 |
|
|
347 |
//TODO |
|
348 |
//在 URL 后追加 fromOpenId 参数 |
|
349 |
//url = StringURL.inputURL(url, SettingKey.FROMOPENID, wxMpUser.getOpenId()) ; |
|
350 |
|
|
351 |
SpObserver.setDBtoInstance("_"+dataSourceEntity.getDbId()) ; //切换数据源 |
|
352 |
chain.doFilter(request, response); |
|
353 |
return ; |
|
354 |
} |
|
355 |
|
|
356 |
} |
|
357 |
}else { |
|
358 |
String userId = (String)session.getAttribute(SessionKey.WEIXIN_OPENID); |
|
359 |
//检查是否启用 ai 雷达 功能 |
|
360 |
if (reqUri.startsWith("/shopping/weixinby3rd/ai") && !reqUri.startsWith(radarWarningPage) && userId != null) { |
|
361 |
if (!isAiRadarUser(request,userId)) { |
|
362 |
request.getRequestDispatcher(radarWarningPage+"?"+queryString).forward(request, response); |
|
363 |
return; |
|
364 |
} |
|
365 |
} |
|
366 |
|
|
367 |
//检查是否启用 boss 雷达 功能 |
|
368 |
if (reqUri.startsWith("/shopping/weixinby3rd/boss") && !reqUri.startsWith(radarWarningPage) && userId!= null) { |
|
369 |
if (!isBossRadarUser(request,userId)) { |
|
370 |
request.getRequestDispatcher(radarWarningPage+"?"+queryString).forward(request, response); |
|
371 |
return; |
|
372 |
} |
|
373 |
} |
|
374 |
|
|
375 |
//System.out.println(this.getClass() +" 2 URL:"+ reqUri+"?"+queryString+ " session CorpId=" + session.getAttribute(SessionKey.WEIXIN_CORPID)); |
|
376 |
chain.doFilter(request, response); |
|
377 |
return ; |
|
378 |
} |
|
379 |
|
|
380 |
} |
|
381 |
} |
|
382 |
|
|
383 |
|
|
384 |
if (reqUri.contains("/shopping/")) { //2.如果不是微信过来的链接,有可能是网页直接访问或 ipad 访问 /shopping/ 目录,则使用 主机名 (或叫 域名) 取数据源 |
|
385 |
//非微信入口,则需要按主机名来访问数据源,如: mp.onbus.cn (不包括http 和端口号) |
|
386 |
Object dbId = session.getAttribute(SessionKey.SHOPPING_DBID); |
|
387 |
if (dbId != null && ! "".equals(dbId) ) { |
|
388 |
chain.doFilter(request, response); |
|
389 |
return ; |
|
390 |
} |
|
391 |
DataSourceEntity dataSourceEntity = null ; |
|
392 |
|
|
393 |
dataSourceEntity = MultiDataSource.getDataSourceMapByCorpURL(hostUrl) ; |
|
394 |
if (dataSourceEntity != null) { |
|
395 |
//SpObserver.setDBtoInstance("_"+corpEntity.getDbId()) ; 这里不需要切换数据源,因为每次在访问数据库时,都自带数据源参数 |
|
396 |
session.setAttribute(SessionKey.SHOPPING_DBID,dataSourceEntity.getDbId() + "") ; |
|
397 |
chain.doFilter(request, response); |
|
398 |
return ; |
|
399 |
}else { |
|
400 |
//request.getRequestDispatcher("/10001.jsp").forward(request, response); //Commented By Johns Wang,2020-07-27 |
|
401 |
chain.doFilter(request, response); //Added by Johns Wang,2020-07-27 |
|
402 |
return ; |
|
403 |
} |
|
404 |
} |
|
405 |
|
|
406 |
}catch (Exception e){ |
|
407 |
|
|
408 |
String msssage="执行url:" +hostUrl+ reqUri + "分析时出错" + this.getClass()+" URL:" +reqUri + "?" + queryString +";" + (e.getCause()!=null?e.getCause().getMessage(): e.getMessage()); |
|
409 |
System.out.println(msssage); |
|
410 |
e.printStackTrace(); |
|
411 |
this.log.debug(msssage); |
|
412 |
request.setAttribute("errormsg", msssage); |
|
413 |
if(request.getHeader("x-app-type")!=null) { |
|
414 |
this.printJson(response,callBackMessage.sendErrorMessage(e.getMessage())); |
|
415 |
}if (reqUri.startsWith("/shopping/")) { |
|
416 |
chain.doFilter(request, response); //Added by Johns Wang,2020-07-27 |
|
417 |
return ; |
|
418 |
}else { |
|
419 |
request.getRequestDispatcher("/500.jsp").forward(request, response); |
|
420 |
return ; |
|
421 |
} |
|
422 |
} |
|
423 |
|
|
424 |
if (StringUtils.isBlank(user)) {// 没有登录 |
|
425 |
notLoggedInProcc(chain, request, response, session, reqUri,queryString); |
|
426 |
return ; |
|
427 |
} |
|
428 |
|
|
429 |
try { |
|
430 |
//已经登录了 |
|
431 |
SpObserver.setDBtoInstance("_"+session.getAttribute(SessionKey.DATA_BASE_ID)); //全局切换数据源 |
|
432 |
}catch(Exception e) { |
|
433 |
String message="执行url:" +hostUrl+ reqUri + "分析时出错" + this.getClass()+" URL:" +reqUri + "?" + queryString +";" + (e.getCause()!=null?e.getCause().getMessage(): e.getMessage()); |
|
434 |
System.out.println(message); |
|
435 |
e.printStackTrace(); |
|
436 |
|
|
437 |
request.setAttribute("errormsg", message); |
|
438 |
this.log.debug(message); |
|
439 |
if (reqUri.startsWith("/shopping/")) { |
|
440 |
chain.doFilter(request, response); //Added by Johns Wang,2020-07-27 |
|
441 |
return ; |
|
442 |
}else { |
|
443 |
request.getRequestDispatcher("/500.jsp").forward(request, response); |
|
444 |
return ; |
|
445 |
} |
|
446 |
|
|
447 |
} |
|
448 |
int dbid_formid[] = getFormid(reqUri);// 除了所有上面放行的特殊页面外所有页面的请求格式应该为 // 功能号_*.jsp |
|
449 |
setCurrentThreadInfo(dbid_formid==null?-1:dbid_formid[1],user,reqUri,queryString); |
|
450 |
|
|
451 |
//---------------- 生成功能号页面, Added by johns Wang , 2016-07-31 ----------------------- |
|
452 |
boolean isPrinter = FilterBuildFuncImpl.isPrinter(reqUri); |
|
453 |
//生成 /app目录下的主功能号和 /WEB-INF/report 目录下的打印页面 |
|
454 |
try { |
|
455 |
//DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap( request); |
|
456 |
if ( |
|
457 |
//暂时去掉禁止自动生成 by danaus 2020/12/7 10:45 |
|
458 |
//dataSourceEntity.isAutoGenerateFormId()&& |
|
459 |
((dbid_formid != null |
|
460 |
&& dbid_formid.length == 2 |
|
461 |
&& dbid_formid[1] != 0 |
|
462 |
&& reqUri.contains("/app/"+dbid_formid[0]+"/") |
|
463 |
&& reqUri.endsWith("/index.jsp")) |
|
464 |
|| (reqUri.contains("/personalized/") && reqUri.endsWith("/index.jsp")) |
|
465 |
|| isPrinter )){ |
|
466 |
int formId = 0; |
|
467 |
if (isPrinter) { |
|
468 |
queryString=EncodeUtil.base64Decode(queryString);//base64解密所有请求参数 |
|
469 |
queryString = queryString.replace("FormID=", ""); //去掉 FormID= 开头的部分 |
|
470 |
Map<String, String> mapParm = BuildFormat.getParamMap(queryString); |
|
471 |
formId = Integer.parseInt(DBHelper.isNull(mapParm.get("FormID"), 0)); |
|
472 |
request.setAttribute("isPrinter",true); |
|
473 |
} else if (reqUri.contains("/gtGrid.do")){ |
|
474 |
formId = (request.getParameter("formID")==null?null: Integer.parseInt( request.getParameter("formID"))) ; |
|
475 |
} |
|
476 |
else { |
|
477 |
formId = dbid_formid[1] ; |
|
478 |
} |
|
479 |
if (formId != 0) { |
|
480 |
request.setAttribute("formID",formId+""); |
|
481 |
FilterBuildFuncIfc bc = (FilterBuildFuncIfc)FactoryBean.getBean("FilterBuildFuncImpl"); |
|
482 |
boolean result = bc.rebuildFormid(request, response); |
|
483 |
if (result) { |
|
484 |
chain.doFilter(request, response);// by danaus 处理url的参数被清空的问题 |
|
485 |
return ; |
|
486 |
} |
|
487 |
} |
|
488 |
} |
|
489 |
} catch (Exception e) { |
|
490 |
e.printStackTrace(); |
|
491 |
} |
|
492 |
// --------------- 生成功能号结束 ------------------------------------ |
|
493 |
|
|
494 |
// if (session.getAttribute("notTo") != null) { |
|
495 |
// String topath = session.getAttribute("notTo").toString(); |
|
496 |
// session.setAttribute("notTo", null); |
|
497 |
// response.sendRedirect(topath); |
|
498 |
// return; |
|
499 |
// } |
|
500 |
// |
|
501 |
try { |
|
502 |
//复制链接需要到 2018-9-5 15:12:54 xin |
|
503 |
if(reqUri.equals("/copyurl.do") && queryString !=null){ |
f67fb2
|
504 |
String redirect ="/home.jsp?redirect="+queryString; |
a6a76f
|
505 |
request.getRequestDispatcher(redirect).forward(request, response); |
F |
506 |
return ; |
|
507 |
} |
|
508 |
} catch (Exception e) { |
|
509 |
String message="执行url:" +hostUrl+ reqUri + "分析时出错" + this.getClass()+" URL:" +reqUri + "?" + queryString +";" + (e.getCause()!=null?e.getCause().getMessage(): e.getMessage()); |
|
510 |
System.out.println(message); |
|
511 |
e.printStackTrace(); |
|
512 |
this.log.debug(message); |
|
513 |
if (reqUri.startsWith("/shopping/")) { |
|
514 |
chain.doFilter(request, response); //Added by Johns Wang,2020-07-27 |
|
515 |
return ; |
|
516 |
}else { |
|
517 |
request.getRequestDispatcher("/home.jsp").forward(request, response); |
|
518 |
return; |
|
519 |
} |
|
520 |
} |
|
521 |
if (reqUri.equals("/")||reqUri.equals("/login.jsp") || reqUri.equals("/index.jsp")) {// 添加重定项 |
|
522 |
//DBHelper.getXml(reqUri, session);// 这个后加解决这个页面出错问题 |
|
523 |
if(wx!=null&&"1".equalsIgnoreCase(wx)){ |
|
524 |
request.setAttribute("wxUrl", request.getParameter("wx_parm")); |
|
525 |
request.setAttribute(SettingKey.REDIRECT, request.getParameter(SettingKey.REDIRECT)); |
|
526 |
} |
|
527 |
request.getRequestDispatcher("/home.jsp").forward(request, response); |
|
528 |
return ; |
|
529 |
}else { |
|
530 |
String dbid = (String)session.getAttribute(SessionKey.DATA_BASE_ID); |
|
531 |
|
|
532 |
//如果页面不存在,则给 404.jsp 页面使用这个变量,用来显示“尝试重新加载页面”的按钮,点击点生成功能号,Added by Johns Wang,2019-12-18 |
|
533 |
if (dbid_formid!=null&&dbid_formid.length>0&&!"".equals(dbid_formid[1]+"")) { |
|
534 |
request.setAttribute("formid",dbid_formid[1]+"") ; |
|
535 |
} |
|
536 |
|
10aef8
|
537 |
if ("DeveloperUser".equalsIgnoreCase(isSuperUser) || reqUri.contains("/personalized/")||reqUri.equals("/savePanelUserLayout.do") ) {// 系统管理员有所有权限 |
a6a76f
|
538 |
if(dbid_formid==null||dbid.equals(dbid_formid[0]+"")){//确保管理员访问的是当前数据库的页面 |
F |
539 |
chain.doFilter(rep, resp); |
|
540 |
return ; |
|
541 |
} else {// 没权限 |
|
542 |
request.getRequestDispatcher("/10000.jsp").forward(rep,resp); |
|
543 |
return ; |
|
544 |
} |
10aef8
|
545 |
}else if("SuperUser".equalsIgnoreCase(isSuperUser)){ |
F |
546 |
try{ |
|
547 |
if(dbid_formid==null){ |
|
548 |
chain.doFilter(rep, resp); |
|
549 |
return; |
|
550 |
}else {//是功能号页面 |
|
551 |
SpObserver.setDBtoInstance("_" + dbid); |
|
552 |
BaseService baseService = (BaseService) FactoryBean.getBean("BaseService"); |
|
553 |
final Integer result = baseService.getJdbcTemplate().queryForObject("set nocount on \n declare @formid int \n select @formid=formid from gform where formid = " + dbid_formid[1] + " and isnull(isAuthorizedForDeveloperUser, 0) = 0 \n select @formid", Integer.class); |
|
554 |
if (result != null) {//确保管理员访问的是当前数据库的页面 |
|
555 |
chain.doFilter(rep, resp); |
|
556 |
return; |
|
557 |
} else {// 没权限 |
|
558 |
request.getRequestDispatcher("/10000.jsp").forward(rep, resp); |
|
559 |
return; |
|
560 |
} |
|
561 |
} |
|
562 |
}catch(Exception ex){ |
|
563 |
ex.printStackTrace(); |
|
564 |
}finally { |
|
565 |
SpObserver.setDBtoInstance(); |
|
566 |
} |
|
567 |
|
a6a76f
|
568 |
} else { |
F |
569 |
if (reqUri.endsWith(".jsp")) { |
|
570 |
/******************* 普通用户权限、没有功能号情况start *********************/ |
|
571 |
if (dbid_formid == null) {// uri中没有功能号信息 |
|
572 |
if (reqUri.indexOf("/general/") != -1 |
|
573 |
|| reqUri.endsWith("/home.jsp") |
|
574 |
||reqUri.endsWith("showFlowChart.jsp") |
|
575 |
|| reqUri.endsWith("dibang/InstallDiBangCert.jsp") |
|
576 |
|| reqUri.endsWith("dibang/InstallDiBangCert2.jsp") |
|
577 |
|| reqUri.endsWith("/personalized/template/0/fullcalendarte.jsp") |
|
578 |
|| reqUri.endsWith("swf.jsp") |
|
579 |
|| reqUri.contains("mail")) { |
|
580 |
chain.doFilter(rep, resp); |
|
581 |
return; |
|
582 |
} |
|
583 |
chain.doFilter(rep, resp); //必须加上这句,要不然导致其它jsp页页请求会失败,Added by Johns wang ,2016-03-02 |
|
584 |
return; |
|
585 |
} |
|
586 |
/******************** 普通用户权限、没有功能号情况end ********************/ |
|
587 |
|
|
588 |
/******************* 普通用户权限、有功能号情况start *********************/ |
|
589 |
|
|
590 |
Map<String,Map<String,Object>> perssion=(Map<String,Map<String,Object>>)session.getAttribute(SessionKey.PERSSION); |
|
591 |
if (perssion.containsKey(dbid_formid[1]+"")&&dbid.equals(dbid_formid[0]+"")) {// 有权限 |
|
592 |
chain.doFilter(rep, resp); |
|
593 |
return; |
|
594 |
} else {// 没权限 |
|
595 |
request.getRequestDispatcher("/10000.jsp").forward(rep,resp); |
|
596 |
return ; |
|
597 |
} |
|
598 |
/******************* 普通用户权限、有功能号情况end *********************/ |
|
599 |
} else { |
|
600 |
chain.doFilter(rep, resp); |
|
601 |
return ; |
|
602 |
} |
|
603 |
} |
|
604 |
} |
|
605 |
|
|
606 |
} |
|
607 |
|
|
608 |
|
|
609 |
private boolean isAiRadarUser(HttpServletRequest request,String userId) throws Exception { |
|
610 |
DataSourceEntity dataSourceEntity = null ; |
|
611 |
try { |
|
612 |
dataSourceEntity = MultiDataSource.getDataSourceMap( request) ; |
|
613 |
}catch(Exception e) { |
|
614 |
throw e ; |
|
615 |
} |
|
616 |
try { |
|
617 |
SpObserver.setDBtoInstance("_"+dataSourceEntity.getDbId()) ; //切换数据源 |
|
618 |
//检查是否启用 ai 雷达 功能 |
|
619 |
if (userId != null ) { |
|
620 |
ERPUserIfc erpUserIfc = (ERPUserIfc)FactoryBean.getBean("ERPUserImpl"); |
|
621 |
MyWxCpUser myWxCpUser = null ; |
|
622 |
myWxCpUser = erpUserIfc.getWorkAppUser( userId) ; |
|
623 |
return (myWxCpUser != null && ( myWxCpUser.isAiRadarUser() ) ?true:false) ; |
|
624 |
} |
|
625 |
return false ; |
|
626 |
}finally { |
|
627 |
SpObserver.setDBtoInstance(); |
|
628 |
} |
|
629 |
} |
|
630 |
|
|
631 |
private boolean isBossRadarUser(HttpServletRequest request,String userId) throws Exception { |
|
632 |
DataSourceEntity dataSourceEntity = null ; |
|
633 |
try { |
|
634 |
dataSourceEntity = MultiDataSource.getDataSourceMap( request) ; |
|
635 |
}catch(Exception e) { |
|
636 |
throw e ; |
|
637 |
} |
|
638 |
try { |
|
639 |
SpObserver.setDBtoInstance("_"+dataSourceEntity.getDbId()) ; //切换数据源 |
|
640 |
//检查是否启用 boss 雷达 功能 |
|
641 |
if (userId != null ) { |
|
642 |
ERPUserIfc erpUserIfc = (ERPUserIfc)FactoryBean.getBean("ERPUserImpl"); |
|
643 |
MyWxCpUser myWxCpUser = null ; |
|
644 |
myWxCpUser = erpUserIfc.getWorkAppUser( userId) ; |
|
645 |
return (myWxCpUser != null && myWxCpUser.isBossRadarUser() ?true:false) ; |
|
646 |
} |
|
647 |
return false ; |
|
648 |
}finally { |
|
649 |
SpObserver.setDBtoInstance(); |
|
650 |
} |
|
651 |
} |
|
652 |
|
|
653 |
protected void printJson(HttpServletResponse resp, String s) { |
|
654 |
try { |
|
655 |
resp.setCharacterEncoding("utf-8"); |
|
656 |
resp.setContentType("application/json;charset=utf-8"); |
|
657 |
PrintWriter out = resp.getWriter(); |
|
658 |
out.print(s); |
|
659 |
out.flush(); |
|
660 |
out.close(); |
|
661 |
} catch (IOException e) { |
|
662 |
e.printStackTrace(); |
|
663 |
} |
|
664 |
} |
|
665 |
/** |
|
666 |
* 没有登录的处理 |
|
667 |
* |
|
668 |
* @param chain |
|
669 |
* @param request |
|
670 |
* @param response |
|
671 |
* @param session |
|
672 |
* @param reqUri |
|
673 |
* @param queryString |
|
674 |
* @throws IOException |
|
675 |
* @throws ServletException |
|
676 |
*/ |
|
677 |
private void notLoggedInProcc(FilterChain chain, |
|
678 |
HttpServletRequest request, HttpServletResponse response, |
|
679 |
HttpSession session, String reqUri, String queryString) |
|
680 |
throws IOException, ServletException { |
|
681 |
session=request.getSession(); |
|
682 |
String hostUrl = SettingKey.getHostUrl(request) ; |
|
683 |
if(reqUri.endsWith("downBo.do")){ |
|
684 |
chain.doFilter(request, response); |
|
685 |
return; |
|
686 |
} |
|
687 |
if(session.getAttribute(SessionKey.DEMO_REF)!=null&&session.getAttribute(SessionKey.DEMO_REF).equals(SessionKey.DEMO_REF)&&(reqUri.equals("/newsetXml.do")||reqUri.indexOf("/demo/")!=-1)||reqUri.endsWith("/doDelDemo.do")){ |
|
688 |
chain.doFilter(request, response); |
|
689 |
return; |
|
690 |
} |
|
691 |
if ((reqUri.endsWith((request.getContextPath() + "/login.jsp")) |
|
692 |
||reqUri.endsWith("login.do") |
|
693 |
||reqUri.endsWith("getDateDemo.do") |
|
694 |
||reqUri.endsWith("reg.jsp") |
|
695 |
||reqUri.endsWith("registra.do") |
|
696 |
||reqUri.endsWith("image.jsp") |
|
697 |
||reqUri.endsWith("checkSession.do") |
|
698 |
||reqUri.endsWith("sessionFail.jsp") |
44407f
|
699 |
||reqUri.endsWith("reloadsession.jsp") |
a6a76f
|
700 |
||reqUri.endsWith("againLogin.do") |
F |
701 |
||reqUri.endsWith("default.jsp") |
|
702 |
||reqUri.endsWith("/")) |
|
703 |
||reqUri.contains("/regUser.do") //注册接口 |
|
704 |
||reqUri.contains("/api/myCompany.do") //企业列表接口 |
|
705 |
||reqUri.contains("/api/sendSms.do") //发手机短信验证码 |
|
706 |
||reqUri.contains("/api/forgotPwd.do") //忘记密码 |
|
707 |
||reqUri.contains("/links.do") |
|
708 |
||reqUri.startsWith("/autoLogin.do") |
|
709 |
&& ! reqUri.startsWith("/shopping") ) { |
|
710 |
//这里要出来sessionId的问题 |
|
711 |
chain.doFilter(request, response);// 登录页面和登录处理允许请求 |
|
712 |
return; |
|
713 |
}else if(reqUri.endsWith("uploadAtta.do") |
|
714 |
|| reqUri.endsWith("updateAtta.do") |
|
715 |
|| reqUri.endsWith("picUpload.do") |
|
716 |
|| reqUri.endsWith("picUpdate.do") |
|
717 |
|| reqUri.endsWith("imageWaterMarkUpload.do") |
|
718 |
|| reqUri.endsWith("mailAttaUpload.do")){ |
|
719 |
String sid = request.getParameter("sid"); |
|
720 |
if(StringUtils.isBlank(sid)){ |
|
721 |
return; |
|
722 |
} |
|
723 |
session = SessionListener.getSession(request,sid); |
|
724 |
if(null == session){ |
|
725 |
return; |
|
726 |
} |
|
727 |
SpObserver.setDBtoInstance("_"+session.getAttribute(SessionKey.DATA_BASE_ID)); |
|
728 |
chain.doFilter(request, response);// 登录页面和登录处理允许请求 |
|
729 |
return; |
|
730 |
}else { |
|
731 |
if(request.getHeader("x-app-type")!=null) { |
|
732 |
response.setStatus(405);//表示会话过期或没会话 |
|
733 |
this.printJson(response,"{\"error\":\"会话已过期\",\"statusCode\":405}"); |
f67fb2
|
734 |
}else if (reqUri.startsWith("/shopping")) { //shopping ,added by Johns Wang , 2016-02-17 |
a6a76f
|
735 |
String redirectUri = URIUtil.encodeURIComponent(hostUrl+reqUri+(queryString!=null?"?"+queryString:"")); |
F |
736 |
//request.setAttribute("redirect", redirectUri); |
|
737 |
response.sendRedirect("/login.jsp"+"?redirect="+redirectUri); |
f67fb2
|
738 |
}else if(reqUri.startsWith("/copyurl.do")){//复制链接执行 |
X |
739 |
response.sendRedirect("/login.jsp"+"?redirect="+queryString); |
a6a76f
|
740 |
}else { |
F |
741 |
response.sendRedirect("/login.jsp"); |
|
742 |
} |
|
743 |
return; |
|
744 |
} |
|
745 |
} |
|
746 |
|
|
747 |
|
|
748 |
//获得数据库id和功能号[12,9801] |
|
749 |
// http://shenzhenlanshe.onbus.cn:9001/personalized/177/0/cnzh/219001/index.jsp?r=5773 |
|
750 |
public int [] getFormid(String uri) { |
|
751 |
String [] strs = null; |
|
752 |
try { |
|
753 |
strs = uri.split("/"); |
|
754 |
/*********第三个是数据库id第六个是功能号*********/ |
|
755 |
return new int[]{Integer.parseInt(strs[2]),Integer.parseInt(strs[5])}; |
|
756 |
} catch (Exception e) { |
|
757 |
return null; |
|
758 |
} |
|
759 |
} |
|
760 |
|
|
761 |
|
|
762 |
|
|
763 |
|
|
764 |
//设置当前线程的信息 用于记录日志 |
|
765 |
public void setCurrentThreadInfo(int formId,String userCode,String uri,String queryString){ |
|
766 |
CurrentLocal.setCurrentFormid(String.valueOf(formId)); |
|
767 |
CurrentLocal.setCurrentUser(userCode); |
|
768 |
if(queryString!=null && queryString.length()>1500){ |
|
769 |
queryString = queryString.substring(0, 1500); |
|
770 |
} |
|
771 |
CurrentLocal.setURI(uri + "?" + queryString); |
|
772 |
} |
|
773 |
|
|
774 |
@Override |
|
775 |
public void init(FilterConfig arg0) throws ServletException { |
|
776 |
System.out.println("----------页面访问服务已启动----------"); |
|
777 |
} |
|
778 |
@Override |
|
779 |
public void destroy() { |
|
780 |
System.out.println("----------页面访问服务已停止----------"); |
|
781 |
} |
|
782 |
|
|
783 |
} |