Ver código fonte

修改微信配置,能后前后端分离

wangxiaoming 7 anos atrás
pai
commit
111fa28ad7

+ 110 - 61
iamberry-common-core/src/main/java/com/iamberry/wechat/core/entity/WechatUtils.java

@@ -1,19 +1,19 @@
 package com.iamberry.wechat.core.entity;
-
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.util.Map;
 
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
 
 import com.iamberry.app.tool.des.MD5;
+import com.iamberry.jwt.TokenUtil;
+import com.iamberry.jwt.UserNotLoginException;
+import com.iamberry.jwt.WebJsonTokenUtil;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.tools.NameUtils;
+import org.springframework.stereotype.Component;
 
 /**
  * description : 微信端用户工具类
@@ -23,55 +23,82 @@ import com.iamberry.wechat.tools.NameUtils;
 @Component
 public class WechatUtils {
 
-	@Autowired
-	private AdminUtils adminUtils;
-	public void setAdminUtils(AdminUtils adminUtils) {
-		this.adminUtils = adminUtils;
-	}
-
-	@Autowired
-	private MD5 md5;
-	public void setMd5(MD5 md5) {
-		this.md5 = md5;
-	}
-
 	/**
-	 * 将用户信息保存到session中,并做安全设置
+	 * 将用户信息保存到session中,并做安全设置, 注意,如果了安全,将token写入cookie后,应该在后台保存一份token的签名,前台 保存value,后台保存签名
 	 * @param object
 	 * @param request
 	 * @throws Exception
 	 */
-	public void saveUserToSession(Member object, HttpServletRequest request, HttpServletResponse response) throws Exception {
-		// 一旦登陆成功,就改变sessionID的值,防止发生session fixation
-		request.getSession().invalidate();
-		HttpSession session = request.getSession(true);
-		session.setAttribute("wechat_login_user", object);
-		// 保存cookie,多项验证
-		adminUtils.createCookie(response, "wechat_login_openid", md5.encrypt(object.getUserId()+""));
+	public static void saveUserToSession(Member object, HttpServletRequest request, HttpServletResponse response) throws Exception {
+		// 判断当前是否存在
+		Cookie[] cookies = request.getCookies();
+		if (cookies != null) {
+			for (Cookie cookie : cookies) {
+				if (cookie.getName().equals("WATERO_WEB_PF")) {
+					continue;
+				}
+				// 如果cookie的name以cookie value的前8位口头,那么是用户token保存方式
+				String cookieNmae = cookie.getName();
+				String cookieValue = new String(cookie.getValue().substring(0, 8));
+				if (!cookieNmae.startsWith(cookieValue)) {
+					continue;
+				}
+				// 无法准确获取key的值,只能遍历,所以系统应该尽量减少cookie,最后只是一个
+				Map<String, Object>	userMap = WebJsonTokenUtil.verifier(cookie.getValue(), cookieNmae.substring(8));
+				if ((Integer)userMap.get("status") == 2) {
+					cookie.setMaxAge(0);
+				}
+			}
+		}
+		// 生成原始token
+		String token = TokenUtil.getToken();
+		// 截取8位作为key
+		if (token.length() <= 13) {
+			token = "1234567890ABC";
+		}
+		String secret = new String(token.substring(0, 8));
+		String userToken = WebJsonTokenUtil.getToken(object.getUserId(), object.getUserOpenid(), token.substring(8));
+		// 保存cookie, 多项验证
+		AdminUtils.createCookie(response, token, secret+userToken);
 	}
 
 	/**
-	 * 获取当前用户
+	 * 1、获取当前用户,注意,前端系统完全弃用session,防止后端服务器宕机,导致用户业务异常终止 <br>
+	 * 2、调用此方法,不存在返回为空,所以无需判断,但是此方法在运行时会抛出异常,调用时,不能捕获,让给系统统一处理
 	 * @param request
 	 * @return
 	 * @throws Exception
+	 * @author 献
+	 * @Time   2016年11月24日
 	 */
-	public Member getUserBySession(HttpServletRequest request) throws Exception {
-		Member info = (Member) request.getSession().getAttribute("wechat_login_user");
-		if (info == null || info.getUserId() == null) {
-			return null;
+	public static Member getUserBySession(HttpServletRequest request) {
+		//获取一个cookie数组
+		Cookie[] cookies = request.getCookies();
+		if (cookies == null) {
+			throw new UserNotLoginException();
 		}
-		Cookie[] cookies = request.getCookies();//获取一个cookie数组
-		if (cookies != null && cookies.length >= 1) {
-			for (Cookie cookie : cookies) {
-				if (cookie.getName().equals("wechat_login_openid")) {
-					if ((info.getUserId().toString()).equals(md5.decrypt(cookie.getValue()))) {
-						return info;
-					}
-				}
+
+		for (Cookie cookie : cookies) {
+			if (cookie.getName().equals("WATERO_WEB_PF")) {
+				continue;
+			}
+			// 如果cookie的name以cookie value的前8位口头,那么是用户token保存方式
+			String cookieNmae = cookie.getName();
+			String cookieValue = new String(cookie.getValue().substring(0, 8));
+			if (!cookieNmae.startsWith(cookieValue)) {
+				continue;
+			}
+			// 无法准确获取key的值, 只能遍历,所以系统应该尽量减少cookie数量, 最好只是一个
+			Map<String, Object>	userMap = WebJsonTokenUtil.verifier(cookie.getValue(), cookieNmae.substring(8));
+			if (Integer.parseInt(userMap.get("status").toString()) == 2) {
+				Member member = new Member();
+				member.setUserId(Integer.parseInt(userMap.get("userid").toString()));
+				member.setUserOpenid(userMap.get("WC_OPENID").toString());
+				return member;
 			}
 		}
-		return null;
+		// 凡是没有登录的用户,都抛出异常
+		throw new UserNotLoginException();
 	}
 
 	/**
@@ -82,38 +109,60 @@ public class WechatUtils {
 	public String getOpenIdFunction(String tokenId, boolean flag) {
 		String urlTemp;
 		if (flag) {
-			urlTemp = NameUtils.WECHAT_BACK_URL + "?tokenId=" + tokenId;
+			urlTemp = NameUtils.getConfig("WECHAT_BACK_URL") + "?tokenId=" + tokenId;
 		} else {
 			urlTemp = tokenId;
 		}
-		String url;
 		try {
-			url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="
-					+ NameUtils.appId
-					+ "&redirect_uri="
-					+ URLEncoder.encode(urlTemp, "UTF-8")
-					+ "&response_type=code&scope=snsapi_base&state=iamberry#wechat_redirect";
-			return url;
+			StringBuilder builder = new StringBuilder("https://open.weixin.qq.com/connect/oauth2/authorize?appid=");
+			builder.append(NameUtils.getConfig("appId"))
+					.append("&redirect_uri=")
+					.append(URLEncoder.encode(urlTemp, "UTF-8"))
+					.append("&response_type=code&scope=snsapi_base&state=iamberry#wechat_redirect");
+			return builder.toString();
 		} catch (UnsupportedEncodingException e) {
-			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 		return null;
 	}
 
-	public static String getOpenIdFunction() {
-		String redirect_url = NameUtils.WECHAT_BACK_URL;
-		String url = null;
-		try {
-			url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="
-					+ NameUtils.appId
-					+ "&redirect_uri="
-					+ URLEncoder.encode(redirect_url, "UTF-8")
-					+ "&response_type=code&scope=snsapi_base&state=iamberry#wechat_redirect";
-		} catch (UnsupportedEncodingException e1) {
-			// TODO Auto-generated catch block
-			e1.printStackTrace();
+	public static void main(String[] args) {
+		String token = TokenUtil.getToken();;
+		System.out.println(token);
+		String sec = token.substring(8);
+		System.out.println(sec);
+	}
+
+	private static MD5 md5 = new MD5("callback");
+
+	public static String setCallback(String callback) throws Exception {
+		return md5.encrypt(callback);
+	}
+
+	public static String getCallback(String temp) throws Exception {
+		return md5.decrypt(temp);
+	}
+
+	/**
+	 * 跳转链接
+	 * @param callback		跳转链接
+	 * @return
+	 * @author 献
+	 * @throws Exception
+	 * @Time   2016年11月24日
+	 */
+	public static String getOpenIdFunction(String callback) throws Exception {
+		String redirect_url = NameUtils.getConfig("WECHAT_BACK_URL");
+
+		if (callback != null) {
+			redirect_url = redirect_url + "?callback=" + setCallback(callback);
 		}
-		return url;
+		StringBuilder builder = new StringBuilder("https://open.weixin.qq.com/connect/oauth2/authorize?appid=");
+		builder.append(NameUtils.getConfig("appId"))
+				.append("&redirect_uri=")
+				.append(URLEncoder.encode(redirect_url, "UTF-8"))
+				.append("&response_type=code&scope=snsapi_base&state=iamberry#wechat_redirect");
+
+		return builder.toString();
 	}
 }

+ 64 - 57
iamberry-wechat-web/src/main/java/com/iamberry/wechat/filters/WechatFilter.java

@@ -1,7 +1,6 @@
 package com.iamberry.wechat.filters;
 
 import java.io.IOException;
-
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
@@ -11,23 +10,19 @@ import javax.servlet.ServletResponse;
 import javax.servlet.annotation.WebFilter;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.web.context.WebApplicationContext;
-import org.springframework.web.context.support.WebApplicationContextUtils;
-
+import com.iamberry.jwt.UserNotLoginException;
 import com.iamberry.wechat.core.entity.WechatUtils;
-import com.iamberry.wechat.core.entity.member.Member;
-import com.iamberry.wechat.tools.NameUtils;
 /**
+ * 完成对微信请求中用户的登陆状态的处理,如果没有登陆,转发一次微信服务器
  * @company	深圳爱贝源科技有限公司
  * @website www.iamberry.com
  * @author 	献
  * @tel		18271840547
- * @date	2016年11月3
- * @explain	完成和微信自动登录的过程,如果登录,那么通过,否则自动登录,完成Oauth过程
+ * @date	2016年12月2
+ * @explain
  */
 @WebFilter(value = { "/wechat/*","/pay/goOrderInfo" })
 public class WechatFilter implements Filter {
@@ -35,65 +30,77 @@ public class WechatFilter implements Filter {
 	private static Logger logger = LoggerFactory.getLogger(WechatFilter.class);
 
 	public void doFilter(ServletRequest request, ServletResponse response,
-			FilterChain chain) throws IOException, ServletException {
+						 FilterChain chain) throws IOException, ServletException {
 		// 权限拦截类
 		HttpServletRequest req = (HttpServletRequest) request;
 		HttpServletResponse resp = (HttpServletResponse) response;
-		//获取Spring Ioc 容器
-		WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
-		WechatUtils wechatUtils = context.getBean(WechatUtils.class);
 		try {
-			Member member = wechatUtils.getUserBySession(req);
-			// 用户登录,通过此次过滤
-			if (member != null) {
-				chain.doFilter(req, resp);
-				return;
+			// 已经登录的用户处理逻辑
+			WechatUtils.getUserBySession(req);
+			chain.doFilter(req, resp);
+		} catch (UserNotLoginException e) {
+			// 未登录的用户处理逻辑
+			logger.info(e.getMessage() + " User Not Login!");
+			try {
+				forword(req, resp, chain);
+			} catch (Exception e1) {
+				logger.error("[致命错误 4003]" + e1.getMessage());
 			}
-			
-			// 请求数据URI,并去掉"/" + 项目名称
-			String query = req.getQueryString();
-			String urlstr = req.getRequestURI().toString();
-			String redirectUrl = urlstr.replace(req.getContextPath(), "");
+		}
+	}
 
-			// 如果没有登录,并且来自于微信,请求的链接并且为/wechat/qrcode/xxxx,那么放过,保证可以保持机器信息
-			String ua = req.getHeader("user-agent").toLowerCase();
-			if( ua.indexOf("micromessenger") < 0 && urlstr.indexOf("wechat/qrcode") > 0) {
-				chain.doFilter(req, resp);
-				return;
-			}
+	/**
+	 * 处理没有登录的用户流程
+	 * @param req
+	 * @param resp
+	 * @param chain
+	 * @author 献
+	 * @throws Exception
+	 * @Time   2016年11月24日
+	 */
+	public void forword(HttpServletRequest req, HttpServletResponse resp, FilterChain chain) throws Exception {
+// 如果是扫描机器后面的二维码,那么转发到下层处理
+//		String ua = req.getHeader("user-agent").toLowerCase();
+//		if(ua.indexOf("micromessenger") < 0 && req.getRequestURL().indexOf("wechat/qrcode") > 0 ){
+//			chain.doFilter(req, resp);
+//			return;
+//		}
 
-			// 到此就准备开始授权的流程,并且保证转发后再次定位到当前请求页面
-			if (query != null) redirectUrl = redirectUrl + "?" + query;
-			req.getSession().setAttribute(NameUtils.redirectUrl, redirectUrl);
-			String url = WechatUtils.getOpenIdFunction();
-			
-			// 判断请求,如果来自于Ajax,那么不能直接转发,否则JS前端报错,如果来自Ajax,那么报错请求页面的Referer,此为转发请求回调成功后跳转地址
-			String requestedWith = req.getHeader("x-requested-with");
-			String accept = req.getHeader("accept");
-			if ((StringUtils.isNotEmpty(requestedWith) && requestedWith.indexOf("XMLHttpRequest") != -1) 
-					|| (StringUtils.isNotEmpty(accept) && accept.indexOf("json") != -1)) {
-				// 如果当前用户没有登录,并且浏览器期望的是返回JSON格式的数据,那么进行拼装,并且直接write
-				String redirectURL = req.getHeader("Referer");
-				if (redirectURL != null) {
-					req.getSession().setAttribute(NameUtils.redirectUrl, redirectURL);
-				}
-				resp.getWriter().write("{\"isRedirect\":true, \"redirectURL\":\"" + url + "\"}");
-				return;
-			}
-			req.getSession().setAttribute(NameUtils.redirectUrl, redirectUrl);
-			// 可以直接跳转
-			resp.sendRedirect(url);
-		} catch (Exception e) {
-			// 如果失败,记录日志,然后转发首页
-			logger.error(e.getMessage() + "," + e.getLocalizedMessage());
-			resp.sendRedirect(WechatUtils.getOpenIdFunction());
+		// 如果不是扫描二维码,那么获取后转发微信服务器,完成授权。
+		String query = req.getQueryString();
+		String urlstr = new String(req.getRequestURI().toString().replace(req.getContextPath(), ""));
+		if (query != null) {
+			urlstr = urlstr + "?" + query;
 		}
-	}
+		String url = WechatUtils.getOpenIdFunction(urlstr);
 
-	public void setRequestDispatcherInfo(HttpServletRequest req, HttpServletResponse resp, String url)
-			throws ServletException, IOException {
+		// 判断请求,如果是来自Ajax,那么直接返回302跳转会导致前端报错,所以返回JSON格式数据,状态为200
+		String requestedWith = req.getHeader("x-requested-with");
+		String accept = req.getHeader("accept");
+		if ((requestedWith != null && StringUtils.isNotEmpty(requestedWith) && requestedWith.indexOf("XMLHttpRequest") != -1)
+				|| (accept != null && StringUtils.isNotEmpty(accept) && accept.indexOf("json") != -1)) {
+			// 客户端需要的是json数据
+			String redirectURL = req.getHeader("Referer");
+			resp.getWriter().write("{\"isRedirect\":true, \"redirectURL\":\"" + WechatUtils.getOpenIdFunction(redirectURL) + "\"}");
+			return;
+		}
+
+		// 客户端没有登录的请求不是来自于Ajax,可以执行跳转动作
 		resp.sendRedirect(url);
 	}
+
+	/**
+	 * 转发请求
+	 * @param req
+	 * @param resp
+	 * @param url
+	 * @throws ServletException
+	 * @throws IOException
+	 * @author 献
+	 * @Time   2016年12月2日
+	 */
+	public void setRequestDispatcherInfo(HttpServletRequest req, HttpServletResponse resp, String url)
+			throws ServletException, IOException {resp.sendRedirect(url);}
 	public void init(FilterConfig fConfig) throws ServletException {}
 	public void destroy() {}
 }

+ 0 - 2
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminMemberHandler.java

@@ -55,8 +55,6 @@ public class AdminMemberHandler {
 	// private Map<String, Object> maps = new HashMap<String, Object>();
 
 	@Autowired
-	private WechatUtils wechatUtils;
-	@Autowired
 	private IntegralService integralService;
 	
 	@Autowired

+ 3 - 5
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/agent/AgentHandler.java

@@ -47,8 +47,6 @@ public class AgentHandler {
 	@Autowired
 	private AgentMemberService agentMemberService;	//微代理会员service
 	@Autowired
-	private WechatUtils wechatUtils;
-	@Autowired
 	private QrcodeService qrcodeService;
 	@Autowired
 	private CartService cartService;
@@ -69,7 +67,7 @@ public class AgentHandler {
 		ResultMsg rm = new ResultMsg();
 		Member member = new Member();
 		try {
-			member = wechatUtils.getUserBySession(req);
+			member = WechatUtils.getUserBySession(req);
 			if(member == null){
 				rm.setMessage(ResultInfo.loginOutError);
 				return rm;
@@ -111,7 +109,7 @@ public class AgentHandler {
 		ResultMsg rm = new ResultMsg();
 		Member member = new Member();
 		try {
-			member = wechatUtils.getUserBySession(req);
+			member = WechatUtils.getUserBySession(req);
 			if(member == null){
 				rm.setMessage(ResultInfo.loginOutError);
 				rm.setStatus(false);
@@ -173,7 +171,7 @@ public class AgentHandler {
 		Member member = null;
 		if(StringUtils.isEmpty(openid)){
 			try {
-				member = wechatUtils.getUserBySession(req);
+				member = WechatUtils.getUserBySession(req);
 				if(member == null){
 					rm.setMessage(ResultInfo.loginOutError);
 					rm.setStatus(false);

+ 38 - 47
iamberry-wechat-web/src/main/java/com/iamberry/wechat/handles/pay/WechatBackHandler.java

@@ -3,16 +3,18 @@ package com.iamberry.wechat.handles.pay;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.iamberry.wechat.tools.WeixinUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.servlet.ModelAndView;
 
 import com.iamberry.wechat.core.entity.WechatUtils;
 import com.iamberry.wechat.core.entity.member.Member;
 import com.iamberry.wechat.face.home.HomeService;
 import com.iamberry.wechat.tools.NameUtils;
+import com.iamberry.wechat.tools.WeixinUtil;
 
 /**
  * @author 何秀刚
@@ -22,19 +24,13 @@ import com.iamberry.wechat.tools.NameUtils;
  */
 @Controller
 public class WechatBackHandler {
-	
+
 	@Autowired
 	private HomeService homeService;
 	public void setHomeService(HomeService homeService) {
 		this.homeService = homeService;
 	}
 
-	@Autowired
-	private WechatUtils wechatUtils;
-	public void setWechatUtils(WechatUtils wechatUtils) {
-		this.wechatUtils = wechatUtils;
-	}
-
 	/**
 	 * 微信授权功能
 	 * @param request
@@ -43,52 +39,47 @@ public class WechatBackHandler {
 	 * @throws Exception
 	 */
 	@RequestMapping("/wechatBack")
-	public ModelAndView getOpenId(HttpServletRequest request,
+	public ModelAndView getOpenId(
+			@RequestParam(value = "callback", required = false) String callback,
+			HttpServletRequest request,
 			HttpServletResponse response) throws Exception {
-		ModelAndView mv = new ModelAndView(NameUtils.redirectUrl_index);
+		String callbackURL = NameUtils.getConfig("redirectUrl_index");
+		if (callback != null) {
+			callbackURL = "redirect:" + WechatUtils.getCallback(callback);
+		}
+
+		ModelAndView mv = new ModelAndView(callbackURL);
 		// 获取微信code
 		String code = request.getParameter("code");
-		if (code == null || code.isEmpty()) { // 判断code是否为空
-			mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction());
+		if (StringUtils.isEmpty(code)) {
+			// 判断code是否为空
+			mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction(null));
 			return mv;
 		}
-		try {
-			// 通过code get微信的openid
-			String[] str = WeixinUtil.getOpenId(code, NameUtils.appId, NameUtils.appSecret);
-			String openId = str[0];
-			if (openId == null || openId.isEmpty()) {
-				mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction());
-				return mv;
-			}
-			Member info = homeService.selectMemberInfoByOpenId(openId);
-			if (info == null) {
-				// 创建新的用户
-				info = new Member();
-				info.setUserOpenid(openId);
-				info.setUserSex(0);
-				info.setUserStatus(1);
-				int flag = homeService.insertMemberInfo(info);
-				if (flag < 1) {
-					homeService.insertMemberInfo(info);
-				}
-			}
+		// 通过code get微信的openid
+		String[] str = WeixinUtil.getOpenId(code, NameUtils.getConfig("appId"), NameUtils.getConfig("appSecret"));
+		String openId = str[0];
+		if (StringUtils.isEmpty(openId)) {
+			mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction(null));
+			return mv;
+		}
+		Member info = homeService.selectMemberInfoByOpenId(openId);
+		if (info == null) {
+			// 创建新的用户
+			info = new Member();
 			info.setUserOpenid(openId);
-			// 提前获取session中的地址
-			String redirectUrl = (String) request.getSession().getAttribute(NameUtils.redirectUrl);
-			wechatUtils.saveUserToSession(info, request, response);
-			// 获取成功后转向地址
-			if (redirectUrl != null) {
-				// 重定向到此redirectUrl
-				request.getSession().removeAttribute(NameUtils.redirectUrl);
-				mv.setViewName("redirect:" + redirectUrl);
-				return mv;
-			} else {
-				mv.setViewName(NameUtils.redirectUrl_index);
-				return mv;
+			info.setUserSex(0);
+			info.setUserStatus(1);
+			int flag = homeService.insertMemberInfo(info);
+			if (flag < 1) {
+				homeService.insertMemberInfo(info);
 			}
-		} catch (Exception e) {
-			mv.setViewName("redirect:" + WechatUtils.getOpenIdFunction());
-			return mv;
 		}
+		info.setUserOpenid(openId);
+		// 提前获取session中的地址
+		WechatUtils.saveUserToSession(info, request, response);
+		// 获取成功后转向地址
+		mv.setViewName(callbackURL);
+		return mv;
 	}
 }

+ 1 - 1
iamberry-wechat-web/src/main/resources/jdbc.properties

@@ -17,7 +17,7 @@ jdbc.initialPoolSize=3
 #jdbc.password=iamberry123
 
 ### Development
-jdbc.url=jdbc:mysql://192.168.1.254:3306/iamberry?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
+jdbc.url=jdbc:mysql://192.168.1.254:3306/aiberle?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull
 jdbc.username=root
 jdbc.password=root
 ###  end ######

+ 18 - 18
iamberry-wechat-web/src/main/resources/platform.properties

@@ -1,4 +1,4 @@
-ROOT_PATH=wateroPF
+ROOT_PATH=iamberry
 # Verification code name
 VERIFYCODE_NAME=verifyCode
 # The name of the user login after a successful save 
@@ -14,46 +14,46 @@ PLACE_CODE_PREFIX=PREFIX
 # \u673A\u5668\u6FC0\u6D3B\u7801
 MACHINE_CODE=B
 # wechat auth back url
-WECHAT_BACK_URL=http://test.iamberry.com/wateroPF/wechatBack
+WECHAT_BACK_URL=http://test.iamberry.com/iamberry/wechatBack
 # order details url
-WECHAT_ORDER_BACK=http://test.iamberry.com/wateroPF/callback/orderPayBack
+WECHAT_ORDER_BACK=http://test.iamberry.com/iamberry/callback/orderPayBack
 #rentOrder url
-WECHAT_RENT_ORDER_BACK = http://test.iamberry.com/wateroPF/callback/rentOrderPayBack
+WECHAT_RENT_ORDER_BACK = http://test.iamberry.com/iamberry/callback/rentOrderPayBack
 # \u7EED\u8D39
-WECHAT_RENT_RECHARGE_BACK = http://test.iamberry.com/wateroPF/callback/rent_recharge_order_pay_back
+WECHAT_RENT_RECHARGE_BACK = http://test.iamberry.com/iamberry/callback/rent_recharge_order_pay_back
 # wechat probation order back
-WECHAT_PROBATION_ORDER_BACK=http://test.iamberry.com/wateroPF/callback/probationOrderPayBack
+WECHAT_PROBATION_ORDER_BACK=http://test.iamberry.com/iamberry/callback/probationOrderPayBack
 # wechat agent order back
-WECHAT_AGENT_ORDER_BACK=http://test.iamberry.com/wateroPF/callback/agent_order_pay_back
+WECHAT_AGENT_ORDER_BACK=http://test.iamberry.com/iamberry/callback/agent_order_pay_back
 # wechat agent order back
-WECHAT_AGENT_RENEWAL_BACK=http://test.iamberry.com/wateroPF/callback/agent_renewal_pay_back
+WECHAT_AGENT_RENEWAL_BACK=http://test.iamberry.com/iamberry/callback/agent_renewal_pay_back
 #wechat prodect desc
-WECHAT_PRODUCT_DESC=http://test.iamberry.com/wateroPF/wechat/product/desc
+WECHAT_PRODUCT_DESC=http://test.iamberry.com/iamberry/wechat/product/desc
 # redirect url
 redirectUrl=redirectUrl
 # index redirect url
 redirectUrl_index=redirect:/wechat/index
 # wechat drp wechat pay back
-WECHAT_DRP_BACK=http://test.iamberry.com/wateroPF/callback/drpPayBack
+WECHAT_DRP_BACK=http://test.iamberry.com/iamberry/callback/drpPayBack
 # wechat product share url
 # wechat member share url !!!
-WECHAT_MEMBER_SHARE_URL=http://test.iamberry.com/wateroPF/wechat/member/showQrcode
+WECHAT_MEMBER_SHARE_URL=http://test.iamberry.com/iamberry/wechat/member/showQrcode
 # wechat qrcode share url
-WECHAT_MEMBER_SHARE_QRCODE=http://test.iamberry.com/wateroPF/wechat/member/showQrcode
+WECHAT_MEMBER_SHARE_QRCODE=http://test.iamberry.com/iamberry/wechat/member/showQrcode
 # wechat proxy share url
-WECHAT_MEMBER_PROXY_QRCODE=http://test.iamberry.com/wateroPF/wechat/drp/share2WM
+WECHAT_MEMBER_PROXY_QRCODE=http://test.iamberry.com/iamberry/wechat/drp/share2WM
 # WECHAT_DRP_SHARE_URL !!!
-WECHAT_DRP_SHARE_URL=http://test.iamberry.com/wateroPF/wechat/drp/share2WM
+WECHAT_DRP_SHARE_URL=http://test.iamberry.com/iamberry/wechat/drp/share2WM
 # default qrcode url
-WECHAT_DEFAULT_QRCODE=http://s.iamberry.com/wateroPF/images/system_qrcode.jpg
+WECHAT_DEFAULT_QRCODE=http://s.iamberry.com/iamberry/images/system_qrcode.jpg
 # wechat_default_watermark
 WECHAT_DEFAULT_WATERMARK=/common/images/default_watermark.png
 # order_pay_back_url
-ORDER_PAY_BACK_URL=http://test.iamberry.com/wateroPF/cart/payBack
+ORDER_PAY_BACK_URL=http://test.iamberry.com/iamberry/cart/payBack
 # wechat auth url
-GET_OPENID_DEAL_URL=http://test.iamberry.com/wateroPF/dealOpenId
+GET_OPENID_DEAL_URL=http://test.iamberry.com/iamberry/dealOpenId
 # wechat go personal_information
-WECHAT_GO_PERSONAL_INFORMATION=http://test.iamberry.com/wateroPF/view/update_personal_information.html?id=
+WECHAT_GO_PERSONAL_INFORMATION=http://test.iamberry.com/iamberry/view/update_personal_information.html?id=
 
 # image base url
 IMAGE_BASE_URL=http://test.iamberry.com