Эх сурвалжийг харах

创建商务平台后台管理

hejq 8 жил өмнө
parent
commit
30f882fcc8
92 өөрчлөгдсөн 4303 нэмэгдсэн , 3931 устгасан
  1. 105 11
      pom.xml
  2. 63 0
      src/main/java/com/uas/platform/b2bManage/controller/AccountController.java
  3. 1 1
      src/main/java/com/uas/platform/b2bManage/controller/CommonController.java
  4. 87 0
      src/main/java/com/uas/platform/b2bManage/controller/EnterpriseCotroller.java
  5. 2 2
      src/main/java/com/uas/platform/b2bManage/core/support/ApplicationContextRegister.java
  6. 2 3
      src/main/java/com/uas/platform/b2bManage/core/support/SystemSession.java
  7. 1 1
      src/main/java/com/uas/platform/b2bManage/core/util/ContextUtils.java
  8. 1 1
      src/main/java/com/uas/platform/b2bManage/core/util/FastjsonUtils.java
  9. 1 3
      src/main/java/com/uas/platform/b2bManage/core/util/HttpUtil.java
  10. 1 1
      src/main/java/com/uas/platform/b2bManage/core/util/PathUtils.java
  11. 106 0
      src/main/java/com/uas/platform/b2bManage/core/util/StringUtils.java
  12. 27 0
      src/main/java/com/uas/platform/b2bManage/dao/AccessTokenDao.java
  13. 15 0
      src/main/java/com/uas/platform/b2bManage/dao/EnterpriseBaseInfoDao.java
  14. 15 0
      src/main/java/com/uas/platform/b2bManage/dao/UseLogDao.java
  15. 41 0
      src/main/java/com/uas/platform/b2bManage/dao/UserDao.java
  16. 64 0
      src/main/java/com/uas/platform/b2bManage/dao/impl/AccessTokenDaoImpl.java
  17. 112 0
      src/main/java/com/uas/platform/b2bManage/model/AccessToken.java
  18. 105 0
      src/main/java/com/uas/platform/b2bManage/model/EnterpriseBaseInfo.java
  19. 157 0
      src/main/java/com/uas/platform/b2bManage/model/UseLog.java
  20. 56 0
      src/main/java/com/uas/platform/b2bManage/model/UseType.java
  21. 147 0
      src/main/java/com/uas/platform/b2bManage/model/User.java
  22. 70 0
      src/main/java/com/uas/platform/b2bManage/page/IPage.java
  23. 447 0
      src/main/java/com/uas/platform/b2bManage/page/PageInfo.java
  24. 61 0
      src/main/java/com/uas/platform/b2bManage/page/PageParams.java
  25. 141 0
      src/main/java/com/uas/platform/b2bManage/page/SearchFilter.java
  26. 65 0
      src/main/java/com/uas/platform/b2bManage/page/criteria/CriterionExpression.java
  27. 49 0
      src/main/java/com/uas/platform/b2bManage/page/criteria/LogicalExpression.java
  28. 49 0
      src/main/java/com/uas/platform/b2bManage/page/criteria/PredicateFactory.java
  29. 231 0
      src/main/java/com/uas/platform/b2bManage/page/criteria/PredicateUtils.java
  30. 106 0
      src/main/java/com/uas/platform/b2bManage/page/criteria/SimpleExpression.java
  31. 32 0
      src/main/java/com/uas/platform/b2bManage/page/exception/IllegalOperatorException.java
  32. 44 0
      src/main/java/com/uas/platform/b2bManage/service/AccessTokenService.java
  33. 23 0
      src/main/java/com/uas/platform/b2bManage/service/EnterpriseBaseInfoService.java
  34. 18 0
      src/main/java/com/uas/platform/b2bManage/service/UseLogService.java
  35. 45 0
      src/main/java/com/uas/platform/b2bManage/service/UserService.java
  36. 41 0
      src/main/java/com/uas/platform/b2bManage/service/impl/AccessTokenServiceImpl.java
  37. 68 0
      src/main/java/com/uas/platform/b2bManage/service/impl/EnterpriseBaseInfoServiceImpl.java
  38. 32 0
      src/main/java/com/uas/platform/b2bManage/service/impl/UseLogServiceImpl.java
  39. 88 0
      src/main/java/com/uas/platform/b2bManage/service/impl/UserServiceImpl.java
  40. 71 0
      src/main/java/com/uas/platform/b2bManage/support/DS.java
  41. 88 0
      src/main/java/com/uas/platform/b2bManage/support/DSUtils.java
  42. 92 0
      src/main/java/com/uas/platform/b2bManage/support/MultiDataSource.java
  43. 17 0
      src/main/java/com/uas/platform/b2bManage/support/SecurityConstant.java
  44. 23 0
      src/main/java/com/uas/platform/b2bManage/support/SpObserver.java
  45. 1 5
      src/main/java/com/uas/platform/b2bManage/web/BaseController.java
  46. 153 0
      src/main/java/com/uas/platform/b2bManage/web/filter/SSOInterceptor.java
  47. 0 64
      src/main/java/com/uas/platform/home/controller/AccountController.java
  48. 0 50
      src/main/java/com/uas/platform/home/controller/FinanceController.java
  49. 0 34
      src/main/java/com/uas/platform/home/controller/SaasController.java
  50. 0 26
      src/main/java/com/uas/platform/home/controller/SecurityController.java
  51. 0 155
      src/main/java/com/uas/platform/home/controller/UuzcController.java
  52. 0 33
      src/main/java/com/uas/platform/home/model/HttpAddress.java
  53. 0 160
      src/main/java/com/uas/platform/home/model/Loan.java
  54. 0 74
      src/main/java/com/uas/platform/home/model/ResultData.java
  55. 0 86
      src/main/java/com/uas/platform/home/model/ResultInfo.java
  56. 0 135
      src/main/java/com/uas/platform/home/model/User.java
  57. 0 83
      src/main/java/com/uas/platform/home/model/UserSpaceDetailInfo.java
  58. 0 191
      src/main/java/com/uas/platform/home/model/UuzcUserInfo.java
  59. 0 152
      src/main/java/com/uas/platform/home/model/UuzcUserSpaceDetail.java
  60. 0 41
      src/main/java/com/uas/platform/home/web/filter/SSOInterceptor.java
  61. 21 0
      src/main/resources/META-INF/persistence.xml
  62. 0 1
      src/main/resources/conf/httpAddress.properties
  63. 22 0
      src/main/resources/conf/jdbc.properties
  64. 2 0
      src/main/resources/conf/redis.properties
  65. 88 14
      src/main/resources/spring/applicationContext.xml
  66. 24 0
      src/main/resources/spring/redis.xml
  67. 0 1
      src/main/webapp/WEB-INF/views/normal/baidu_verify_R20eMUl3BB.html
  68. 0 203
      src/main/webapp/WEB-INF/views/normal/contact.html
  69. 6 39
      src/main/webapp/WEB-INF/views/normal/default/404.html
  70. 83 0
      src/main/webapp/WEB-INF/views/normal/enterprise.html
  71. 0 408
      src/main/webapp/WEB-INF/views/normal/finance.html
  72. 0 206
      src/main/webapp/WEB-INF/views/normal/saas_about.html
  73. 0 116
      src/main/webapp/WEB-INF/views/normal/setHrAccount.html
  74. 67 0
      src/main/webapp/WEB-INF/views/normal/signIn.html
  75. 8 44
      src/main/webapp/WEB-INF/web.xml
  76. 12 11
      src/main/webapp/WEB-INF/webmvc.xml
  77. 0 165
      src/main/webapp/resources/css/agreement.css
  78. 0 187
      src/main/webapp/resources/css/contact.css
  79. 217 0
      src/main/webapp/resources/css/enterprise.css
  80. 89 0
      src/main/webapp/resources/css/pagination.css
  81. 0 175
      src/main/webapp/resources/css/saas_about.css
  82. 18 1
      src/main/webapp/resources/css/setHrAccount.css
  83. 170 0
      src/main/webapp/resources/js/account/enterprise.js
  84. 48 0
      src/main/webapp/resources/js/account/signIn.js
  85. 8 531
      src/main/webapp/resources/js/common/common.js
  86. 0 308
      src/main/webapp/resources/js/contact/app.js
  87. 0 59
      src/main/webapp/resources/js/finance/base.js
  88. 0 120
      src/main/webapp/resources/js/finance/finance.js
  89. 0 4
      src/main/webapp/resources/js/help/agreement.js
  90. 0 23
      src/main/webapp/resources/js/saas_about/app.js
  91. 0 3
      src/main/webapp/resources/js/uuzcc/app.js
  92. 256 0
      src/main/webapp/resources/lib/jquery/jquery.pagination.js

+ 105 - 11
pom.xml

@@ -6,7 +6,7 @@
 		<artifactId>platform</artifactId>
 		<version>0.0.1-SNAPSHOT</version>
 	</parent>
-	<artifactId>platform-home</artifactId>
+	<artifactId>b2bManage</artifactId>
 	<packaging>war</packaging>
 	<version>0.0.1</version>
 	<name>platform-home Maven Webapp</name>
@@ -57,25 +57,119 @@
 			<artifactId>servlet-api</artifactId>
 		</dependency>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.1.6</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+        </dependency>
+
+        <!-- jpa -->
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-jpa</artifactId>
+        </dependency>
+
+        <!-- hibernate -->
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-entitymanager</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>cglib</groupId>
+                    <artifactId>cglib</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>dom4j</groupId>
+                    <artifactId>dom4j</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-collections</groupId>
+            <artifactId>commons-collections</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-validator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjrt</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.transaction</groupId>
+            <artifactId>jta</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-ehcache</artifactId>
+        </dependency>
+        <!-- hibernate end -->
+
+		<!-- mysql -->
 		<dependency>
-			<groupId>com.uas.sso</groupId>
-			<artifactId>sso-common</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-			<exclusions>
-				<exclusion>
-					<artifactId>tomcat-embed-core</artifactId>
-					<groupId>org.apache.tomcat.embed</groupId>
-				</exclusion>
-			</exclusions>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>5.1.21</version>
 		</dependency>
+
+        <!--oracle-->
+        <dependency>
+            <groupId>com.oracle</groupId>
+            <artifactId>ojdbc6</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient</artifactId>
             <version>4.5.2</version>
         </dependency>
+        <dependency>
+            <groupId>com.uas.platform</groupId>
+            <artifactId>platform-core</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.uas.account</groupId>
+            <artifactId>sso-core</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+
+        <!-- redis -->
+        <dependency>
+            <groupId>redis.clients</groupId>
+            <artifactId>jedis</artifactId>
+            <version>2.7.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-redis</artifactId>
+            <version>1.6.0.RELEASE</version>
+        </dependency>
     </dependencies>
 	<build>
-		<finalName>home</finalName>
+		<finalName>b2bManage</finalName>
 		<plugins>
 			<plugin>
 				<groupId>org.codehaus.mojo</groupId>

+ 63 - 0
src/main/java/com/uas/platform/b2bManage/controller/AccountController.java

@@ -0,0 +1,63 @@
+package com.uas.platform.b2bManage.controller;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.model.UseType;
+import com.uas.platform.b2bManage.service.UseLogService;
+import com.uas.platform.b2bManage.service.UserService;
+import com.uas.platform.b2bManage.web.BaseController;
+import com.uas.platform.core.util.AgentUtils;
+import com.uas.platform.core.util.encry.Md5Utils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * 账户信息
+ */
+@RestController
+public class AccountController extends BaseController {
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private UseLogService useLogService;
+
+	/**
+	 * 账户信息
+	 * 
+	 * @return
+	 */
+	@RequestMapping(value = "/account", method = RequestMethod.GET)
+	public ModelMap getAccountInfo() throws Exception {
+	    return success(SystemSession.getUser());
+	}
+
+	/**
+	 * 登录
+	 *
+	 */
+	@RequestMapping(value = "/login", method = RequestMethod.POST)
+	public void login(String userName, String passWord, HttpServletRequest request) throws IllegalAccessException {
+        userService.login(userName, passWord, request);
+        useLogService.appendLog(UseType.LOGIN.code(), null, AgentUtils.getIp(request));
+	}
+
+	/**
+	 * 退出
+	 *
+	 * @throws IOException
+	 */
+	@RequestMapping(value = "/logout", method = RequestMethod.POST)
+	public ModelMap logout(HttpServletRequest request) throws IOException {
+		SystemSession.clear();
+		request.getSession().removeAttribute("user");
+		return success();
+	}
+
+}

+ 1 - 1
src/main/java/com/uas/platform/home/controller/CommonController.java → src/main/java/com/uas/platform/b2bManage/controller/CommonController.java

@@ -1,4 +1,4 @@
-package com.uas.platform.home.controller;
+package com.uas.platform.b2bManage.controller;
 
 import com.alibaba.fastjson.JSON;
 import org.springframework.beans.factory.annotation.Autowired;

+ 87 - 0
src/main/java/com/uas/platform/b2bManage/controller/EnterpriseCotroller.java

@@ -0,0 +1,87 @@
+package com.uas.platform.b2bManage.controller;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.model.AccessToken;
+import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
+import com.uas.platform.b2bManage.model.UseType;
+import com.uas.platform.b2bManage.model.User;
+import com.uas.platform.b2bManage.page.PageInfo;
+import com.uas.platform.b2bManage.page.PageParams;
+import com.uas.platform.b2bManage.service.AccessTokenService;
+import com.uas.platform.b2bManage.service.EnterpriseBaseInfoService;
+import com.uas.platform.b2bManage.service.UseLogService;
+import com.uas.platform.core.util.AgentUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.rmi.AccessException;
+import java.util.Arrays;
+
+/**
+ * 企业数据查询接口
+ *
+ * Created by hejq on 2018-04-23.
+ */
+@RequestMapping("/enterprise")
+@RestController
+public class EnterpriseCotroller {
+
+    @Autowired
+    private EnterpriseBaseInfoService baseInfoService;
+
+    @Autowired
+    private AccessTokenService accessTokenService;
+
+    @Autowired
+    private UseLogService useLogService;
+
+    /**
+     * b2b域名
+     */
+    private static final String B2B_DOMAIN = "uas.ubtob.com";
+
+    /**
+     * 分页查询企业列表
+     *
+     * @param params 分页参数
+     * @param keyword 搜索词
+     * @return
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    public Page<EnterpriseBaseInfo> findByPageInfo(PageParams params, String keyword, HttpServletRequest request) {
+        PageInfo info = new PageInfo(params);
+        useLogService.appendLog(UseType.SEARCH.code(), keyword, AgentUtils.getIp(request));
+        return baseInfoService.findEnterPageByKeyword(info, keyword);
+    }
+
+    /**
+     * 通过UU号进行跳转到平台
+     *
+     * @param response HttpServletResponse
+     * @param enUU uu号
+     * @throws IOException
+     */
+    @RequestMapping("/authed/redirect/{enUU}")
+    public void redirect(HttpServletResponse response, HttpServletRequest request, @PathVariable("enUU") long enUU)
+            throws IOException {
+        Object bindObj = enUU;
+        if (null == SystemSession.getUser()) {
+            throw new AccessException("请先登录");
+        }
+        AccessToken token = accessTokenService.createNew(bindObj);
+        request.getSession().setAttribute("user", SystemSession.getUser());
+        StringBuffer redirectUrl = new StringBuffer();
+        redirectUrl.append("http://").append(enUU).append(".").append(B2B_DOMAIN);
+        redirectUrl.append("?client_type=manage&access_token=").append(token.getId());
+        useLogService.appendLog(UseType.REDIRECT.code(), redirectUrl.toString(), AgentUtils.getIp(request));
+        response.sendRedirect(redirectUrl.toString());
+    }
+}

+ 2 - 2
src/main/java/com/uas/platform/home/core/support/ApplicationContextRegister.java → src/main/java/com/uas/platform/b2bManage/core/support/ApplicationContextRegister.java

@@ -1,10 +1,10 @@
-package com.uas.platform.home.core.support;
+package com.uas.platform.b2bManage.core.support;
 
 import org.apache.log4j.Logger;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 
-import com.uas.platform.home.core.util.ContextUtils;
+import com.uas.platform.b2bManage.core.util.ContextUtils;
 
 public class ApplicationContextRegister {
 	private static Logger logger = Logger.getLogger(ApplicationContextRegister.class);

+ 2 - 3
src/main/java/com/uas/platform/home/core/support/SystemSession.java → src/main/java/com/uas/platform/b2bManage/core/support/SystemSession.java

@@ -1,7 +1,6 @@
-package com.uas.platform.home.core.support;
+package com.uas.platform.b2bManage.core.support;
 
-import com.uas.platform.home.model.User;
-import com.uas.sso.entity.UserView;
+import com.uas.platform.b2bManage.model.User;
 
 /**
  * 每次请求服务器时,用户信息存放在本次线程中

+ 1 - 1
src/main/java/com/uas/platform/home/core/util/ContextUtils.java → src/main/java/com/uas/platform/b2bManage/core/util/ContextUtils.java

@@ -1,4 +1,4 @@
-package com.uas.platform.home.core.util;
+package com.uas.platform.b2bManage.core.util;
 
 import org.apache.log4j.Logger;
 import org.springframework.context.ApplicationContext;

+ 1 - 1
src/main/java/com/uas/platform/home/core/util/FastjsonUtils.java → src/main/java/com/uas/platform/b2bManage/core/util/FastjsonUtils.java

@@ -1,4 +1,4 @@
-package com.uas.platform.home.core.util;
+package com.uas.platform.b2bManage.core.util;
 
 import java.util.List;
 

+ 1 - 3
src/main/java/com/uas/platform/home/core/util/HttpUtil.java → src/main/java/com/uas/platform/b2bManage/core/util/HttpUtil.java

@@ -1,4 +1,4 @@
-package com.uas.platform.home.core.util;
+package com.uas.platform.b2bManage.core.util;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -9,8 +9,6 @@ import org.apache.http.impl.client.HttpClients;
 import org.apache.http.protocol.HTTP;
 
 import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
 
 /**
  * created by shicr on 2017/11/24

+ 1 - 1
src/main/java/com/uas/platform/home/core/util/PathUtils.java → src/main/java/com/uas/platform/b2bManage/core/util/PathUtils.java

@@ -1,4 +1,4 @@
-package com.uas.platform.home.core.util;
+package com.uas.platform.b2bManage.core.util;
 
 import java.io.File;
 import java.io.UnsupportedEncodingException;

+ 106 - 0
src/main/java/com/uas/platform/b2bManage/core/util/StringUtils.java

@@ -0,0 +1,106 @@
+package com.uas.platform.b2bManage.core.util;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 字符串检测等
+ *
+ */
+public class StringUtils {
+	/**
+	 * 判断字符数组是否为空
+	 */
+	public static boolean areNotEmpty(String... values) {
+		boolean result = true;
+		if (values == null || values.length == 0) {
+			result = false;
+		} else {
+			for (String value : values) {
+				result &= !isEmpty(value);
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串
+	 * 
+	 * @param params
+	 *            需要排序并参与字符拼接的参数组
+	 * @return 拼接后字符串
+	 */
+	public static String createLinkString(Map<String, String> params) {
+
+		List<String> keys = new ArrayList<String>(params.keySet());
+		Collections.sort(keys);
+
+		String prestr = "";
+
+		for (int i = 0; i < keys.size(); i++) {
+			String key = keys.get(i);
+			String value = params.get(key);
+
+			if (i == keys.size() - 1) {// ƴ��ʱ�����������һ��&�ַ�
+				prestr = prestr + key + "=" + value;
+			} else {
+				prestr = prestr + key + "=" + value + "&";
+			}
+		}
+
+		return prestr;
+	}
+
+	/**
+	 * 判断字符串是否为空
+	 * <ul>
+	 * <li>isEmpty(null) = true</li>
+	 * <li>isEmpty("") = true</li>
+	 * <li>isEmpty("   ") = true</li>
+	 * <li>isEmpty("abc") = false</li>
+	 * </ul>
+	 * 
+	 * @param value
+	 *            目标字符串
+	 * @return true/false
+	 */
+	public static boolean isEmpty(String value) {
+		int strLen;
+		if (value == null || (strLen = value.length()) == 0) {
+			return true;
+		}
+		for (int i = 0; i < strLen; i++) {
+			if ((Character.isWhitespace(value.charAt(i)) == false)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 *	截取指定字节长度的字符串
+	 *
+	 * @param original 截取的字符串
+	 * @param length 截取的字节长度
+	 * @return
+	 */
+	public static String cutOutString(String original, int length) throws UnsupportedEncodingException {
+		if (length >= original.length()) {
+			return original;
+		}
+		StringBuilder builder = new StringBuilder(original.length());
+		String result = null;
+		for (int i = 0; i < original.length(); i++) {
+			builder.append(original.charAt(i));
+			result = builder.toString();
+			if (result.getBytes("GBK").length > length) {
+				break;
+			}
+		}
+		builder.deleteCharAt(builder.length() - 1);
+		return builder.toString();
+	}
+}

+ 27 - 0
src/main/java/com/uas/platform/b2bManage/dao/AccessTokenDao.java

@@ -0,0 +1,27 @@
+package com.uas.platform.b2bManage.dao;
+
+
+import com.uas.platform.b2bManage.model.AccessToken;
+
+public interface AccessTokenDao {
+
+	/**
+	 * 保存
+	 * @param token
+	 */
+	public void save(AccessToken token);
+
+	/**
+	 * 获取指定token
+	 * @param id
+	 * @return
+	 */
+	public AccessToken findOne(String id);
+
+	/**
+	 * 删除token
+	 * @param id
+	 */
+	public void delete(String id);
+
+}

+ 15 - 0
src/main/java/com/uas/platform/b2bManage/dao/EnterpriseBaseInfoDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2bManage.dao;
+
+import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 企业信息
+ *
+ * Created by hejq on 2018-04-23.
+ */
+@Repository
+public interface EnterpriseBaseInfoDao extends JpaRepository<EnterpriseBaseInfo, Long>, JpaSpecificationExecutor<EnterpriseBaseInfo> {
+}

+ 15 - 0
src/main/java/com/uas/platform/b2bManage/dao/UseLogDao.java

@@ -0,0 +1,15 @@
+package com.uas.platform.b2bManage.dao;
+
+import com.uas.platform.b2bManage.model.UseLog;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 日志
+ *
+ * Created by hejq on 2018-04-26.
+ */
+@Repository
+public interface UseLogDao extends JpaSpecificationExecutor<UseLog>, JpaRepository<UseLog, Long> {
+}

+ 41 - 0
src/main/java/com/uas/platform/b2bManage/dao/UserDao.java

@@ -0,0 +1,41 @@
+package com.uas.platform.b2bManage.dao;
+
+import com.uas.platform.b2bManage.model.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 用户数据库层
+ *
+ * Created by hejq on 2018-04-23.
+ */
+@Repository
+public interface UserDao extends JpaSpecificationExecutor<User>, JpaRepository<User, Long> {
+
+    /**
+     * 通过电话号码查询用户信息
+     *
+     * @param tel 电话
+     * @return
+     */
+    List<User> findByTel(String tel);
+
+    /**
+     * 通过邮箱查询用户信息
+     *
+     * @param email
+     * @return
+     */
+    List<User> findByEmail(String email);
+
+    /**
+     * 通过用户名查询用户信息
+     *
+     * @param name
+     * @return
+     */
+    List<User> findUserByName(String name);
+}

+ 64 - 0
src/main/java/com/uas/platform/b2bManage/dao/impl/AccessTokenDaoImpl.java

@@ -0,0 +1,64 @@
+package com.uas.platform.b2bManage.dao.impl;
+
+import com.uas.platform.b2bManage.core.util.FastjsonUtils;
+import com.uas.platform.b2bManage.dao.AccessTokenDao;
+import com.uas.platform.b2bManage.model.AccessToken;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.core.RedisCallback;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Repository;
+
+import java.io.Serializable;
+
+@Repository
+public class AccessTokenDaoImpl implements AccessTokenDao {
+
+	@Autowired
+	private RedisTemplate<Serializable, Serializable> redisTemplate;
+
+	@Override
+	public void save(final AccessToken token) {
+		redisTemplate.execute(new RedisCallback<Object>() {
+
+			@Override
+			public Object doInRedis(RedisConnection connection) throws DataAccessException {
+				byte[] key = redisTemplate.getStringSerializer().serialize("AccessToken.id." + token.getId());
+				byte[] value = redisTemplate.getStringSerializer().serialize(FastjsonUtils.toJson(token));
+				connection.set(key, value);
+				connection.expire(key, token.getExpires_in());
+				return null;
+			}
+		});
+	}
+
+	@Override
+	public AccessToken findOne(final String id) {
+		return redisTemplate.execute(new RedisCallback<AccessToken>() {
+			@Override
+			public AccessToken doInRedis(RedisConnection connection) throws DataAccessException {
+				byte[] key = redisTemplate.getStringSerializer().serialize("AccessToken.id." + id);
+				if (connection.exists(key)) {
+					String value = redisTemplate.getStringSerializer().deserialize(connection.get(key));
+					return FastjsonUtils.fromJson(value, AccessToken.class);
+				}
+				return null;
+			}
+		});
+	}
+
+	@Override
+	public void delete(final String id) {
+		redisTemplate.execute(new RedisCallback<Object>() {
+
+			@Override
+			public Object doInRedis(RedisConnection connection) throws DataAccessException {
+				byte[] key = redisTemplate.getStringSerializer().serialize("AccessToken.id." + id);
+				connection.del(key);
+				return null;
+			}
+		});
+	}
+
+}

+ 112 - 0
src/main/java/com/uas/platform/b2bManage/model/AccessToken.java

@@ -0,0 +1,112 @@
+package com.uas.platform.b2bManage.model;
+
+import com.uas.platform.core.util.StringUtil;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * token登录,用于存放token信息
+ * @author yingp
+ * @version 2017年8月2日14:30:38 wangyc 完善类的注释
+ *
+ */
+public class AccessToken implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private String id;
+
+	/**
+	 * 用户名
+	 */
+	private String user;
+
+	/**
+	 * 可以在token绑定任意数据
+	 */
+	private String bind;
+
+	/**
+	 * 生成时间
+	 */
+	private Date time;
+
+	/**
+	 * 超时时间
+	 */
+	private int expires_in;
+	
+	/**
+	 * 临时token,默认为60秒过期
+	 */
+	public final static int default_expires_in = 60;
+
+	public AccessToken() {
+	}
+
+	public AccessToken(User user, Object bindObject) {
+		this(user, bindObject, default_expires_in);
+	}
+
+	public AccessToken(User user, Object bindObject, int expires_in) {
+		this.id = StringUtil.uuid();
+		this.user = user.getName();
+		this.bind = String.valueOf(bindObject);
+		this.time = new Date();
+		this.expires_in = expires_in;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getUser() {
+		return user;
+	}
+
+	public void setUser(String user) {
+		this.user = user;
+	}
+
+	public Object getBind() {
+		return bind;
+	}
+
+	public void setBind(String bind) {
+		this.bind = bind;
+	}
+
+	public Date getTime() {
+		return time;
+	}
+
+	public void setTime(Date time) {
+		this.time = time;
+	}
+
+	public int getExpires_in() {
+		return expires_in;
+	}
+
+	public void setExpires_in(int expires_in) {
+		this.expires_in = expires_in;
+	}
+
+	/**
+	 * 是否过期
+	 * 
+	 * @return
+	 */
+	public boolean isExpired() {
+		return System.currentTimeMillis() - this.time.getTime() > expires_in * 1000;
+	}
+
+}

+ 105 - 0
src/main/java/com/uas/platform/b2bManage/model/EnterpriseBaseInfo.java

@@ -0,0 +1,105 @@
+package com.uas.platform.b2bManage.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 企业信息基本信息
+ *
+ * Created by hejq on 2018-04-20.
+ */
+@Entity
+@Table(name = "sec$enterprises")
+public class EnterpriseBaseInfo implements Serializable {
+
+    /**
+     * 序列号
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 企业UU号
+     */
+    @Id
+    @Column(name = "en_uu")
+    private Long uu;
+
+    /**
+     * 公司名称
+     */
+    @Column(name = "en_name")
+    private String enName;
+
+    /**
+     * 注册地址
+     */
+    @Column(name = "en_address")
+    private String enAddress;
+
+    /**
+     * 商业登记证号
+     */
+    @Column(name = "en_businesscode")
+    private String enBussinessCode;
+
+    /**
+     * 注册时间
+     */
+    @Column(name = "en_time")
+    private Date enDate;
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public String getEnAddress() {
+        return enAddress;
+    }
+
+    public void setEnAddress(String enAddress) {
+        this.enAddress = enAddress;
+    }
+
+    public String getEnBussinessCode() {
+        return enBussinessCode;
+    }
+
+    public void setEnBussinessCode(String enBussinessCode) {
+        this.enBussinessCode = enBussinessCode;
+    }
+
+    public Date getEnDate() {
+        return enDate;
+    }
+
+    public void setEnDate(Date enDate) {
+        this.enDate = enDate;
+    }
+
+    @Override
+    public String toString() {
+        return "EnterpriseBaseInfo{" +
+                "uu=" + uu +
+                ", enName='" + enName + '\'' +
+                ", enAddress='" + enAddress + '\'' +
+                ", enBussinessCode='" + enBussinessCode + '\'' +
+                ", enDate=" + enDate +
+                '}';
+    }
+}

+ 157 - 0
src/main/java/com/uas/platform/b2bManage/model/UseLog.java

@@ -0,0 +1,157 @@
+package com.uas.platform.b2bManage.model;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import org.hibernate.validator.constraints.Length;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 使用日志
+ *
+ * Created by hejq on 2018-04-26.
+ */
+@Table(name = "log$manage")
+@Entity
+public class UseLog implements Serializable {
+
+    /**
+     * 序列
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @Column(name = "log_id")
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "log$manage_gen")
+    @SequenceGenerator(name = "log$manage_gen", sequenceName = "log$manage_seq", allocationSize = 1)
+    private Long id;
+
+    /**
+     * 姓名
+     */
+    @Column(name = "log_name")
+    private String name;
+
+    /**
+     * 手机
+     */
+    @Column(name = "log_tel")
+    private String tel;
+
+    /**
+     * 时间
+     */
+    @Column(name = "log_time")
+    private Date time;
+
+    /**
+     * 标题
+     */
+    @Column(name = "log_title")
+    private String title;
+
+    /**
+     * 详情
+     */
+    @Column(name = "log_message")
+    @Length(max = 1000)
+    private String message;
+
+    /**
+     * ip
+     */
+    @Column(name = "log_ip")
+    private String ip;
+
+    /**
+     * 含参定义日志
+     *
+     * @param title 标题
+     * @param message 详情
+     * @param ip ip
+     */
+    public UseLog(String title, String message, String ip) {
+        this.title = title;
+        this.ip = ip;
+        this.message = message;
+        this.name = SystemSession.getUser().getName();
+        this.tel = SystemSession.getUser().getTel();
+        this.time = new Date(System.currentTimeMillis());
+    }
+
+    public UseLog() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String getIp() {
+        return ip;
+    }
+
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+
+    @Override
+    public String toString() {
+        return "UseLog{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", tel='" + tel + '\'' +
+                ", time=" + time +
+                ", title='" + title + '\'' +
+                ", message='" + message + '\'' +
+                ", ip='" + ip + '\'' +
+                '}';
+    }
+}

+ 56 - 0
src/main/java/com/uas/platform/b2bManage/model/UseType.java

@@ -0,0 +1,56 @@
+package com.uas.platform.b2bManage.model;
+
+/**
+ * 操作类型
+ *
+ * Created by hejq on 2018-04-26.
+ */
+public enum UseType {
+
+    /**
+     * 登录
+     */
+    LOGIN("登录"),
+
+    /**
+     * 搜索
+     */
+    SEARCH("搜索"),
+
+    /**
+     * 查询
+     */
+    QUERY("查询"),
+
+    /**
+     * 重定向
+     */
+    REDIRECT("重定向"),
+
+    /**
+     * 空状态
+     */
+    NONE("");
+
+    private final String code;
+    private final String display;
+
+    private UseType(String display) {
+        this.code = this.toString();
+        this.display = display;
+    }
+
+    /**
+     * @return 状态的编码
+     */
+    public String code() {
+        if (this == NONE)
+            return "";
+        return this.code;
+    }
+
+    public String display() {
+        return this.display;
+    }
+
+}

+ 147 - 0
src/main/java/com/uas/platform/b2bManage/model/User.java

@@ -0,0 +1,147 @@
+package com.uas.platform.b2bManage.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 管理平台用户信息
+ */
+@Table(name = "users")
+@Entity
+public class User implements Serializable {
+
+    /**
+     * 序列号
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @Id
+    @Column(name = "id")
+    private Long id;
+
+    /**
+     * 邮箱
+     */
+    @Column(name = "email")
+    private String email;
+
+    /**
+     * 是否可用 1.yes 0.no
+     */
+    @Column(name = "enable")
+    private Short enable;
+
+    /**
+     * 用户姓名
+     */
+    @Column(name = "name")
+    private String name;
+
+    /**
+     * 密码
+     */
+    @Column(name = "password")
+    private String password;
+
+    /**
+     * 电话
+     */
+    @Column(name = "tel")
+    private String tel;
+
+    /**
+     * 中文姓名
+     */
+    @Column(name = "full_name")
+    private String fullName;
+
+    /**
+     * 用户角色
+     */
+    @Column(name = "roles")
+    private String role;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public Short getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Short enable) {
+        this.enable = enable;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getFullName() {
+        return fullName;
+    }
+
+    public void setFullName(String fullName) {
+        this.fullName = fullName;
+    }
+
+    public String getRole() {
+        return role;
+    }
+
+    public void setRole(String role) {
+        this.role = role;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "id=" + id +
+                ", email='" + email + '\'' +
+                ", enable=" + enable +
+                ", name='" + name + '\'' +
+                ", password='" + password + '\'' +
+                ", tel='" + tel + '\'' +
+                ", fullName='" + fullName + '\'' +
+                ", role='" + role + '\'' +
+                '}';
+    }
+}

+ 70 - 0
src/main/java/com/uas/platform/b2bManage/page/IPage.java

@@ -0,0 +1,70 @@
+package com.uas.platform.b2bManage.page;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 分页信息配置
+ * 
+ * @author hejq
+ * @date 2018-04-23 11:22
+ * @param <T>
+ */
+public class IPage<T> implements Serializable {
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -6338331260909724178L;
+	private int number;
+	private int size;
+	private int numberOfElements;
+	private List<T> content;
+	private boolean first;
+	private boolean last;
+	private long totalElements;
+	
+	public long getTotalElements() {
+		return totalElements;
+	}
+	public void setTotalElements(long totalElements) {
+		this.totalElements = totalElements;
+	}
+	public int getNumber() {
+		return number;
+	}
+	public void setNumber(int number) {
+		this.number = number;
+	}
+	public int getSize() {
+		return size;
+	}
+	public void setSize(int size) {
+		this.size = size;
+	}
+	public int getNumberOfElements() {
+		return numberOfElements;
+	}
+	public void setNumberOfElements(int numberOfElements) {
+		this.numberOfElements = numberOfElements;
+	}
+	public List<T> getContent() {
+		return content;
+	}
+	public void setContent(List<T> content) {
+		this.content = content;
+	}
+	public boolean isFirst() {
+		return first;
+	}
+	public void setFirst(boolean first) {
+		this.first = first;
+	}
+	public boolean isLast() {
+		return last;
+	}
+	public void setLast(boolean last) {
+		this.last = last;
+	}
+
+}

+ 447 - 0
src/main/java/com/uas/platform/b2bManage/page/PageInfo.java

@@ -0,0 +1,447 @@
+package com.uas.platform.b2bManage.page;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2bManage.page.criteria.CriterionExpression;
+import com.uas.platform.b2bManage.page.criteria.PredicateUtils;
+import com.uas.platform.b2bManage.page.exception.IllegalOperatorException;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
+
+import javax.persistence.criteria.*;
+import java.util.*;
+
+/**
+ * 分页信息
+ * 
+ * @author yingp
+ * 
+ */
+public class PageInfo implements Pageable {
+
+	public PageInfo() {
+	}
+
+	/**
+	 * 分页信息
+	 * 
+	 * @param jsonPageParams
+	 */
+	public PageInfo(String jsonPageParams) {
+		PageParams params = JSONObject.parseObject(jsonPageParams,
+				PageParams.class);
+		getPageInfo(params);
+	}
+
+	public PageInfo(PageParams params) {
+		getPageInfo(params);
+	}
+
+	private void getPageInfo(PageParams params) {
+		this.pageSize = params.getCount();
+		if (this.pageSize == 0) {// 不传入页面大小,默认页面大小为5
+			this.pageSize = 5;
+		}
+		if (this.pageSize > 1000) {// 页面大小最大不可超过1000,防止服务器崩溃
+			throw new IllegalOperatorException("页面大小不可超过1000");
+		}
+		this.pageNumber = params.getPage();
+		if (this.pageNumber == 0) {
+			this.pageNumber = 1;// 不传入页码,默认为第一页
+		}
+		this.offset = this.pageSize * (this.pageNumber - 1);
+		if (params.getFilter() != null)
+			this.filters = JSONObject.parseObject(params.getFilter());
+		if (params.getSorting() != null) {
+			JSONObject sorting = JSONObject.parseObject(params.getSorting());
+			LinkedList<Sort.Order> orders = new LinkedList<Sort.Order>();
+			for (Object property : sorting.keySet()) {
+				orders.add(new Sort.Order(Direction.fromString(sorting.get(
+						property).toString()), property.toString()));
+			}
+			sort = new Sort(orders);
+		}
+	}
+
+	/**
+	 * 分页信息
+	 * 
+	 * @param pageNumber
+	 *            页码
+	 * @param pageSize
+	 *            单页条数
+	 */
+	public PageInfo(int pageNumber, int pageSize) {
+		this.pageNumber = pageNumber;
+		this.pageSize = pageSize;
+		this.offset = this.pageSize * (this.pageNumber - 1);
+	}
+
+	/**
+	 * 分页信息
+	 * 
+	 * @param pageNumber
+	 *            页码
+	 * @param pageSize
+	 *            单页条数
+	 */
+	public PageInfo(int pageNumber, int pageSize, int offset) {
+		this.pageNumber = pageNumber;
+		this.pageSize = pageSize;
+		this.offset = offset;
+	}
+
+	public void filter(String key, Object value) {
+		if (filters == null)
+			filters = new HashMap<String, Object>();
+		filters.put(key, value);
+	}
+
+	public void filter(String key, Object value, Boolean ignoreCase) {
+		if (filters == null)
+			filters = new HashMap<String, Object>();
+		filters.put(key, value);
+		if (ignoreCaseMap == null) {
+			ignoreCaseMap = new HashMap<String, Boolean>();
+		}
+		if (ignoreCase) {
+			ignoreCaseMap.put(key, ignoreCase);
+		}
+	}
+
+	public void filterAll(Map<String, Object> filters) {
+		if (this.filters == null)
+			this.filters = new HashMap<String, Object>();
+		this.filters.putAll(filters);
+	}
+
+	/**
+	 * 表达式
+	 * 
+	 * @param expression
+	 */
+	public void expression(CriterionExpression expression) {
+		if (expression != null) {
+			if (expressions == null)
+				expressions = new HashSet<CriterionExpression>();
+			expressions.add(expression);
+		}
+	}
+
+	/**
+	 * 添加orExpression
+	 * 
+	 * @param expression
+	 */
+	public void orExpression(CriterionExpression expression) {
+		if (expression != null) {
+			if (orExpressions == null)
+				orExpressions = new HashSet<CriterionExpression>();
+			orExpressions.add(expression);
+		}
+	}
+
+	/**
+	 * 排序
+	 * 
+	 * @param property
+	 *            需要排序的字段
+	 * @param direction
+	 *            方向
+	 */
+	public void sorting(String property, Direction direction) {
+		sort = new Sort(direction, property);
+	}
+
+	/**
+	 * 排序
+	 * 
+	 * @param direction
+	 *            方向
+	 * @param properties
+	 *            需要排序的字段
+	 */
+	public void sorting(Direction direction, String... properties) {
+		sort = new Sort(direction, properties);
+	}
+
+	private int pageNumber;
+
+	private int pageSize;
+
+	private int offset;
+
+	private Sort sort;
+
+	private Map<String, Object> filters;
+
+	private Set<CriterionExpression> expressions; // 这个里面的条件,全部都用and连接
+
+	private Set<CriterionExpression> orExpressions; // 这个里面的条件,全部都用or连接
+
+	private Map<String, Boolean> ignoreCaseMap; // 是否对这个字段 进行忽略大小写的查询
+
+	public Set<CriterionExpression> getOrExpressions() {
+		return orExpressions;
+	}
+
+	public void setOrExpressions(Set<CriterionExpression> orExpressions) {
+		this.orExpressions = orExpressions;
+	}
+
+	public int getPageNumber() {
+		return pageNumber;
+	}
+
+	public int getPageSize() {
+		return pageSize;
+	}
+
+	public int getOffset() {
+		return offset;
+	}
+
+	public Sort getSort() {
+		return sort;
+	}
+
+	public void setPageNumber(int pageNumber) {
+		this.pageNumber = pageNumber;
+	}
+
+	public void setPageSize(int pageSize) {
+		this.pageSize = pageSize;
+	}
+
+	public void setOffset(int offset) {
+		this.offset = offset;
+	}
+
+	public void setSort(Sort sort) {
+		this.sort = sort;
+	}
+
+	public Map<String, Object> getFilters() {
+		return filters;
+	}
+
+	public void setFilters(Map<String, Object> filters) {
+		this.filters = filters;
+	}
+
+	public Set<CriterionExpression> getExpressions() {
+		return expressions;
+	}
+
+	public void setExpressions(Set<CriterionExpression> expressions) {
+		this.expressions = expressions;
+	}
+
+	@SuppressWarnings("unchecked")
+	public Predicate[] getPredicates(Root<?> root, CriteriaQuery<?> query,
+			CriteriaBuilder builder) {
+		Predicate[] predicates = new Predicate[] {};
+		int i = 0;
+		if (filters != null && filters.size() > 0) {
+			Set<String> keys = filters.keySet();
+			predicates = new Predicate[keys.size()];
+			Object value = null;
+			for (String key : keys) {
+				value = filters.get(key);
+				if (value instanceof Number) {
+					Path<Number> param = PredicateUtils.getPath(root, key,
+							Number.class);
+					predicates[i++] = builder.equal(param, value);
+				} else if (value instanceof Map) {
+					predicates[i++] = getPredicate(root, query, builder, key,
+							(Map<String, Object>) value);
+				} else {
+					Path<String> param = PredicateUtils.getPath(root, key,
+							String.class);
+					if ((ignoreCaseMap == null)
+							|| (ignoreCaseMap.get(key) == null)
+							|| (!ignoreCaseMap.get(key))) {
+						predicates[i++] = builder.like(param,
+								"%" + value.toString() + "%");
+					} else { // 对数据的大小写忽略
+						predicates[i++] = builder.like(builder.upper(param),
+								"%" + value.toString().toUpperCase() + "%");
+					}
+				}
+			}
+		}
+		if (expressions != null && expressions.size() > 0) {
+			predicates = Arrays.copyOf(predicates, predicates.length
+					+ expressions.size());
+			for (CriterionExpression expression : expressions) {
+				predicates[i++] = expression.toPredicate(root, query, builder);
+			}
+		}
+
+		if (orExpressions != null && orExpressions.size() > 0) {
+			predicates = Arrays.copyOf(predicates, predicates.length + 1);
+			Predicate[] orPredicates = new Predicate[] {};
+			orPredicates = new Predicate[orExpressions.size()];
+			int j = 0;
+			for (CriterionExpression expression : orExpressions) {
+				orPredicates[j++] = expression
+						.toPredicate(root, query, builder);
+			}
+			if (orPredicates.length == 1) {
+				predicates[i++] = orPredicates[0];
+			} else {
+				predicates[i++] = builder.or(orPredicates);
+			}
+		}
+		return predicates;
+	}
+
+	/**
+	 * 传入单个字段的多个过滤条件<br>
+	 * 
+	 * @example {"filters":{"status":
+	 *          200,"date":{"gted":1441269176697,"lted":1441269176698}}}
+	 * 
+	 * @param root
+	 * @param query
+	 * @param builder
+	 * @param field
+	 *            字段名
+	 * @param valueMap
+	 *            条件map
+	 * @return
+	 */
+	private Predicate getPredicate(Root<?> root, CriteriaQuery<?> query,
+                                   CriteriaBuilder builder, String field, Map<String, Object> valueMap) {
+		Set<String> keys = valueMap.keySet();
+		Object val = null;
+		Predicate[] predicates = new Predicate[keys.size()];
+		int i = 0;
+		for (String valKey : keys) {
+			val = valueMap.get(valKey);
+			if (valKey.equals("ne")) {// 不等于 {"ne": "something"}
+				Path<String> path = PredicateUtils.getPath(root, field,
+						String.class);
+				if (val != null)
+					predicates[i++] = builder.notEqual(path,
+							String.valueOf(val));
+				else
+					predicates[i++] = builder.isNotNull(path);
+			} else if (valKey.equals("eq")) {// 等于 {"eq": "something"}
+				Path<String> path = PredicateUtils.getPath(root, field,
+						String.class);
+				if (val != null)
+					predicates[i++] = builder.equal(path, String.valueOf(val));
+				else
+					predicates[i++] = builder.isNull(path);
+			} else if (valKey.equals("gt")) {// 大于 {"gt": "something"}
+				Path<String> path = PredicateUtils.getPath(root, field,
+						String.class);
+				predicates[i++] = builder
+						.greaterThan(path, String.valueOf(val));
+			} else if (valKey.equals("lt")) {// 小于 {"lt": "something"}
+				Path<String> path = PredicateUtils.getPath(root, field,
+						String.class);
+				predicates[i++] = builder.lessThan(path, String.valueOf(val));
+			} else if (valKey.equals("gte")) {// 大于等于 {"gte": "something"}
+				Path<String> path = PredicateUtils.getPath(root, field,
+						String.class);
+				predicates[i++] = builder.greaterThanOrEqualTo(path,
+						String.valueOf(val));
+			} else if (valKey.equals("lte")) {// 小于等于 {"lte": "something"}
+				Path<String> path = PredicateUtils.getPath(root, field,
+						String.class);
+				predicates[i++] = builder.lessThanOrEqualTo(path,
+						String.valueOf(val));
+			} else if (valKey.equals("gtd")) {// 日期大于 {"gtd": 1441269176697}
+				Path<Date> path = PredicateUtils.getPath(root, field,
+						Date.class);
+				predicates[i++] = builder.greaterThan(path,
+						new Date(Long.parseLong(String.valueOf(val))));
+			} else if (valKey.equals("ltd")) {// 日期小于 {"ltd": 1441269176697}
+				Path<Date> path = PredicateUtils.getPath(root, field,
+						Date.class);
+				predicates[i++] = builder.lessThan(path,
+						new Date(Long.parseLong(String.valueOf(val))));
+			} else if (valKey.equals("gted")) {// 日期大于等于 {"gted": 1441269176697}
+				Path<Date> path = PredicateUtils.getPath(root, field,
+						Date.class);
+				predicates[i++] = builder.greaterThanOrEqualTo(path, new Date(
+						Long.parseLong(String.valueOf(val))));
+			} else if (valKey.equals("lted")) {// 日期小于等于 {"lted": 1441269176697}
+				Path<Date> path = PredicateUtils.getPath(root, field,
+						Date.class);
+				predicates[i++] = builder.lessThanOrEqualTo(path,
+						new Date(Long.parseLong(String.valueOf(val))));
+			} else {
+				Path<String> path = PredicateUtils.getPath(root, field,
+						String.class);
+				predicates[i++] = builder.equal(path, String.valueOf(val));
+			}
+		}
+		return builder.and(predicates);
+	}
+
+	public Pageable next() {
+		return null;
+	}
+
+	public Pageable previousOrFirst() {
+		return null;
+	}
+
+	public Pageable first() {
+		return null;
+	}
+
+	public boolean hasPrevious() {
+		return false;
+	}
+
+	public Pageable getPageable() {
+		final Pageable scope = this;
+		return new Pageable() {
+
+			@Override
+			public Pageable previousOrFirst() {
+				return scope.previousOrFirst();
+			}
+
+			@Override
+			public Pageable next() {
+				return scope.next();
+			}
+
+			@Override
+			public boolean hasPrevious() {
+				return scope.hasPrevious();
+			}
+
+			@Override
+			public Sort getSort() {
+				return scope.getSort();
+			}
+
+			@Override
+			public int getPageSize() {
+				return scope.getPageSize();
+			}
+
+			@Override
+			public int getPageNumber() {
+				return scope.getPageNumber();
+			}
+
+			@Override
+			public int getOffset() {
+				return scope.getOffset();
+			}
+
+			@Override
+			public Pageable first() {
+				return scope.first();
+			}
+		};
+	}
+
+}

+ 61 - 0
src/main/java/com/uas/platform/b2bManage/page/PageParams.java

@@ -0,0 +1,61 @@
+package com.uas.platform.b2bManage.page;
+
+import java.io.Serializable;
+
+public class PageParams implements Serializable {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private int count;
+	private int page;
+	private String filter;
+	private String sorting;
+
+	public int getCount() {
+		return count;
+	}
+
+	public void setCount(int count) {
+		this.count = count;
+	}
+
+	public int getPage() {
+		return page;
+	}
+
+	public void setPage(int page) {
+		this.page = page;
+	}
+
+	public String getFilter() {
+		return filter;
+	}
+
+	public void setFilter(String filter) {
+		this.filter = filter;
+	}
+
+	public String getSorting() {
+		return sorting;
+	}
+
+	public void setSorting(String sorting) {
+		this.sorting = sorting;
+	}
+
+	public PageParams(int count, int page, String filter, String sorting) {
+		super();
+		this.count = count;
+		this.page = page;
+		this.filter = filter;
+		this.sorting = sorting;
+	}
+
+	public PageParams() {
+		super();
+	}
+
+
+}

+ 141 - 0
src/main/java/com/uas/platform/b2bManage/page/SearchFilter.java

@@ -0,0 +1,141 @@
+package com.uas.platform.b2bManage.page;
+
+import java.util.Collection;
+
+/**
+ * 单据查询搜索条件
+ * @author suntg
+ * @since 2015年8月20日下午2:37:22
+ */
+public class SearchFilter {
+
+	/**
+	 * 关键词
+	 */
+	private String keyword;
+
+	/**
+	 * 开始日期
+	 */
+	private Long fromDate;
+
+	/**
+	 * 结束日期
+	 */
+	private Long endDate;
+
+	/**
+	 * 开始交货日期
+	 */
+	private Long fromDelivery;
+
+	/**
+	 * 结束交货日期
+	 */
+	private Long endDelivery;
+
+	/**
+	 * 开始价格
+	 */
+	private Double fromPrice;
+
+	/**
+	 * 结束价格
+	 */
+	private Double endPrice;
+
+	/**
+	 * 供应商UU
+	 */
+	private Long vendUU;
+
+	/**
+	 * 客户UU
+	 */
+	private Long enUU;
+
+	/**
+	 * 用户UU
+	 */
+	private Long userUU;
+
+	/**
+	 * 客户分配条件
+	 */
+	private Collection<?> distribute;
+
+	public String getKeyword() {
+		return keyword;
+	}
+	public void setKeyword(String keyword) {
+		this.keyword = keyword;
+	}
+	public Long getFromDate() {
+		return fromDate;
+	}
+	public void setFromDate(Long fromDate) {
+		this.fromDate = fromDate;
+	}
+	public Long getEndDate() {
+		return endDate;
+	}
+	public void setEndDate(Long endDate) {
+		this.endDate = endDate;
+	}
+	public Long getFromDelivery() {
+		return fromDelivery;
+	}
+	public void setFromDelivery(Long fromDelivery) {
+		this.fromDelivery = fromDelivery;
+	}
+	public Long getEndDelivery() {
+		return endDelivery;
+	}
+	public void setEndDelivery(Long endDelivery) {
+		this.endDelivery = endDelivery;
+	}
+	public Double getFromPrice() {
+		return fromPrice;
+	}
+	public void setFromPrice(Double fromPrice) {
+		this.fromPrice = fromPrice;
+	}
+	public Double getEndPrice() {
+		return endPrice;
+	}
+	public void setEndPrice(Double endPrice) {
+		this.endPrice = endPrice;
+	}
+
+	public Long getVendUU() {
+		return vendUU;
+	}
+
+	public void setVendUU(Long vendUU) {
+		this.vendUU = vendUU;
+	}
+
+	public Long getEnUU() {
+		return enUU;
+	}
+
+	public void setEnUU(Long enUU) {
+		this.enUU = enUU;
+	}
+
+	public Long getUserUU() {
+		return userUU;
+	}
+
+	public void setUserUU(Long userUU) {
+		this.userUU = userUU;
+	}
+
+	public Collection<?> getDistribute() {
+		return distribute;
+	}
+
+	public void setDistribute(Collection<?> distribute) {
+		this.distribute = distribute;
+	}
+}

+ 65 - 0
src/main/java/com/uas/platform/b2bManage/page/criteria/CriterionExpression.java

@@ -0,0 +1,65 @@
+package com.uas.platform.b2bManage.page.criteria;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+/**
+ * 条件表达式接口
+ * 
+ * @author yingp
+ * 
+ */
+public interface CriterionExpression {
+
+	public enum Operator {
+		/**
+		 * 等于
+		 */
+		EQ,
+		/**
+		 * 不等于
+		 */
+		NE,
+		/**
+		 * like
+		 */
+		LIKE,
+		/**
+		 * 大于
+		 */
+		GT,
+		/**
+		 * 小于
+		 */
+		LT,
+		/**
+		 * 大于等于
+		 */
+		GTE,
+		/**
+		 * 小于等于
+		 */
+		LTE,
+		/**
+		 * and
+		 */
+		AND,
+		/**
+		 * or
+		 */
+		OR,
+		/**
+		 * is null
+		 */
+		IS_NULL,
+		/**
+		 * is not null
+		 */
+		IS_NOT_NULL
+	}
+
+	public Predicate toPredicate(Root<?> root, CriteriaQuery<?> query, CriteriaBuilder builder);
+
+}

+ 49 - 0
src/main/java/com/uas/platform/b2bManage/page/criteria/LogicalExpression.java

@@ -0,0 +1,49 @@
+package com.uas.platform.b2bManage.page.criteria;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 逻辑条件表达式 用于复杂条件时使用
+ * 
+ * @author yingp
+ * 
+ */
+public class LogicalExpression implements CriterionExpression {
+
+	/**
+	 * 逻辑表达式中包含的表达式
+	 */
+	private CriterionExpression[] expressions;
+
+	/**
+	 * 运算符
+	 */
+	private Operator operator;
+
+	public LogicalExpression(CriterionExpression[] expressions, Operator operator) {
+		this.expressions = expressions;
+		this.operator = operator;
+	}
+
+	public Predicate toPredicate(Root<?> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+		List<Predicate> predicates = new ArrayList<Predicate>();
+		for (int i = 0, len = this.expressions.length; i < len; i++) {
+			predicates.add(this.expressions[i].toPredicate(root, query, builder));
+		}
+		switch (operator) {
+		case OR:
+			return builder.or(predicates.toArray(new Predicate[predicates.size()]));
+		case AND:
+			return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+		default:
+			return null;
+		}
+
+	}
+
+}

+ 49 - 0
src/main/java/com/uas/platform/b2bManage/page/criteria/PredicateFactory.java

@@ -0,0 +1,49 @@
+package com.uas.platform.b2bManage.page.criteria;
+
+import org.springframework.data.jpa.domain.Specification;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 特殊查询条件的容器
+ * 
+ * @author yingp
+ * 
+ * @param <T>
+ */
+public class PredicateFactory<T> implements Specification<T> {
+
+	private List<CriterionExpression> expressions = new ArrayList<CriterionExpression>();
+
+	public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query,
+			CriteriaBuilder builder) {
+		if (!expressions.isEmpty()) {
+			List<Predicate> predicates = new ArrayList<Predicate>();
+			for (CriterionExpression c : expressions) {
+				predicates.add(c.toPredicate(root, query, builder));
+			}
+			// 将所有条件用 and 联合起来
+			if (predicates.size() > 0) {
+				return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+			}
+		}
+		return builder.conjunction();
+	}
+
+	/**
+	 * 增加简单条件表达式
+	 * 
+	 */
+	public PredicateFactory<T> add(CriterionExpression expression) {
+		if (expression != null) {
+			expressions.add(expression);
+		}
+		return this;
+	}
+
+}

+ 231 - 0
src/main/java/com/uas/platform/b2bManage/page/criteria/PredicateUtils.java

@@ -0,0 +1,231 @@
+package com.uas.platform.b2bManage.page.criteria;
+
+import org.hibernate.criterion.MatchMode;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.Path;
+import java.util.Collection;
+
+/**
+ * 条件构造器 用于创建条件表达式
+ * 
+ */
+public class PredicateUtils {
+
+	/**
+	 * 等于
+	 * 
+	 * @param param
+	 * @param value 注意和modul对应字段的数据类型对应
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression eq(String param, Object value, boolean ignoreNull) {
+		if (StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.EQ);
+	}
+
+	/**
+	 * 不等于
+	 * 
+	 * @param param
+	 * @param value 注意和modul对应字段的数据类型对应
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression ne(String param, Object value, boolean ignoreNull) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.NE);
+	}
+
+	/**
+	 * 模糊匹配
+	 * 
+	 * @param param
+	 * @param value
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression like(String param, String value, boolean ignoreNull) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.LIKE);
+	}
+	
+	/**
+	 * 模糊匹配
+	 * 
+	 * @param param
+	 * @param value
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression like(String param, String value, boolean ignoreNull, boolean ignoreCase) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.LIKE, ignoreCase);
+	}
+
+	/**
+	 * 
+	 * @param param
+	 * @param value 注意和modul对应字段的数据类型对应
+	 * @param matchMode
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression like(String param, String value, MatchMode matchMode, boolean ignoreNull) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.LIKE);
+	}
+
+	/**
+	 * 大于
+	 * 
+	 * @param param
+	 * @param value 注意和modul对应字段的数据类型对应
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression gt(String param, Object value, boolean ignoreNull) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.GT);
+	}
+
+	/**
+	 * 小于
+	 * 
+	 * @param param
+	 * @param value 注意和modul对应字段的数据类型对应
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression lt(String param, Object value, boolean ignoreNull) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.LT);
+	}
+
+	/**
+	 * 大于等于
+	 * 
+	 * @param param
+	 * @param value 注意和modul对应字段的数据类型对应
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression gte(String param, Object value, boolean ignoreNull) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.GTE);
+	}
+
+	/**
+	 * 小于等于
+	 * 
+	 * @param param
+	 * @param value 注意和modul对应字段的数据类型对应
+	 * @param ignoreNull
+	 * @return
+	 */
+	public static SimpleExpression lte(String param, Object value, boolean ignoreNull) {
+		if (ignoreNull && StringUtils.isEmpty(value))
+			return null;
+		return new SimpleExpression(param, value, CriterionExpression.Operator.LTE);
+	}
+
+	/**
+	 * 为空
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public static SimpleExpression isNull(String param) {
+		return new SimpleExpression(param, CriterionExpression.Operator.IS_NULL);
+	}
+
+	/**
+	 * 不为空
+	 * 
+	 * @param param
+	 * @return
+	 */
+	public static SimpleExpression isNotNull(String param) {
+		return new SimpleExpression(param, CriterionExpression.Operator.IS_NOT_NULL);
+	}
+
+	/**
+	 * 并且
+	 * 
+	 * @param expressions
+	 * @return
+	 */
+	public static LogicalExpression and(CriterionExpression... expressions) {
+		return new LogicalExpression(expressions, CriterionExpression.Operator.AND);
+	}
+
+	/**
+	 * 或者
+	 * 
+	 * @param expressions
+	 * @return
+	 */
+	public static LogicalExpression or(CriterionExpression... expressions) {
+		return new LogicalExpression(expressions, CriterionExpression.Operator.OR);
+	}
+
+	/**
+	 * 包含于
+	 * 
+	 * @param param
+	 * @param value
+	 * @return
+	 */
+	@SuppressWarnings("rawtypes")
+	public static LogicalExpression in(String param, Collection value, boolean ignoreNull) {
+		if (ignoreNull && (value == null || value.isEmpty())) {
+			return null;
+		}
+		SimpleExpression[] ses = new SimpleExpression[value.size()];
+		int i = 0;
+		for (Object obj : value) {
+			ses[i] = new SimpleExpression(param, obj, CriterionExpression.Operator.EQ);
+			i++;
+		}
+		return new LogicalExpression(ses, CriterionExpression.Operator.OR);
+	}
+
+	/**
+	 * 包含于
+	 * 
+	 * @param param
+	 * @param values
+	 * @return
+	 */
+	public static LogicalExpression in(String param, Object[] values, boolean ignoreNull) {
+		if (ignoreNull && (values == null || values.length == 0)) {
+			return null;
+		}
+		SimpleExpression[] ses = new SimpleExpression[values.length];
+		int i = 0;
+		for (Object obj : values) {
+			ses[i] = new SimpleExpression(param, obj, CriterionExpression.Operator.EQ);
+			i++;
+		}
+		return new LogicalExpression(ses, CriterionExpression.Operator.OR);
+	}
+
+	@SuppressWarnings("unchecked")
+	public static <T, R> Path<R> getPath(Path<T> root, String path, Class<R> resultType) {
+		String[] pathElements = path.split("\\.");
+		Path<?> retVal = root;
+		for (String pathEl : pathElements) {
+			retVal = (Path<R>) retVal.get(pathEl);
+		}
+		return (Path<R>) retVal;
+	}
+}

+ 106 - 0
src/main/java/com/uas/platform/b2bManage/page/criteria/SimpleExpression.java

@@ -0,0 +1,106 @@
+package com.uas.platform.b2bManage.page.criteria;
+
+import org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.*;
+
+/**
+ * 条件表达式
+ * 
+ * @author yingp
+ * 
+ */
+public class SimpleExpression implements CriterionExpression {
+
+	/**
+	 * 属性
+	 */
+	private String param;
+	/**
+	 * 值
+	 */
+	private Object value;
+	
+	/*
+	 * 是否忽略大小写
+	 */
+	private boolean ignoreCase;
+	/**
+	 * 运算符
+	 */
+	private Operator operator;
+	
+	public SimpleExpression(String param, Object value, Operator operator) {
+		this.param = param;
+		this.value = value;
+		this.operator = operator;
+		this.ignoreCase = false;
+	}
+
+	public SimpleExpression(String param, Object value, Operator operator, boolean ignoreCase) {
+		this.param = param;
+		this.value = value;
+		this.operator = operator;
+		this.ignoreCase = ignoreCase;
+	}
+
+	protected SimpleExpression(String param, Operator operator) {
+		this.param = param;
+		this.operator = operator;
+	}
+
+	public String getParam() {
+		return param;
+	}
+
+	public Object getValue() {
+		return value;
+	}
+
+	public Operator getOperator() {
+		return operator;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public Predicate toPredicate(Root<?> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+		Path expression = null;
+		if (param.contains(".")) {
+			String[] names = StringUtils.split(param, ".");
+			expression = root.get(names[0]);
+			for (int i = 1; i < names.length; i++) {
+				expression = expression.get(names[i]);
+			}
+		} else {
+			expression = root.get(param);
+		}
+
+		switch (operator) {
+		case EQ:
+			return builder.equal(expression, value);
+		case NE:
+			return builder.notEqual(expression, value);
+		case LIKE:
+				if(ignoreCase) {
+					return builder.like(builder.upper((Expression<String>) expression), "%" + value.toString().toUpperCase() + "%");
+				}else {
+					return builder.like((Expression<String>) expression, "%" + value + "%");
+				}
+			
+		case LT:
+			return builder.lessThan(expression, (Comparable) value);
+		case GT:
+			return builder.greaterThan(expression, (Comparable) value);
+		case LTE:
+			return builder.lessThanOrEqualTo(expression, (Comparable) value);
+		case GTE:
+			return builder.greaterThanOrEqualTo(expression, (Comparable) value);
+		case IS_NULL:
+			return builder.isNull(expression);
+		case IS_NOT_NULL:
+			return builder.isNotNull(expression);
+		default:
+			return null;
+		}
+	}
+
+}

+ 32 - 0
src/main/java/com/uas/platform/b2bManage/page/exception/IllegalOperatorException.java

@@ -0,0 +1,32 @@
+package com.uas.platform.b2bManage.page.exception;
+
+/**
+ * 非法操作
+ * 
+ * @author yingp
+ * 
+ */
+public class IllegalOperatorException extends RuntimeException {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 3958657497510022539L;
+
+	public IllegalOperatorException() {
+		super("非法操作");
+	}
+
+	public IllegalOperatorException(String paramString) {
+		super(paramString);
+	}
+
+	public IllegalOperatorException(String paramString, Throwable paramThrowable) {
+		super(paramString, paramThrowable);
+	}
+
+	public IllegalOperatorException(Throwable paramThrowable) {
+		super(paramThrowable);
+	}
+
+}

+ 44 - 0
src/main/java/com/uas/platform/b2bManage/service/AccessTokenService.java

@@ -0,0 +1,44 @@
+package com.uas.platform.b2bManage.service;
+
+
+import com.uas.platform.b2bManage.model.AccessToken;
+
+/**
+ * token相关功能
+ * @author yingp
+ * @version 2017年8月2日14:51:43 wangyc 完善类的注释
+ */
+public interface AccessTokenService {
+
+	/**
+	 * 绑定任意对象
+	 * 
+	 * @param bindObject
+	 * @return token
+	 */
+	public AccessToken createNew(Object bindObject);
+
+	/**
+	 * 绑定任意对象
+	 * 
+	 * @param bindObject
+	 * @param expires_in
+	 *            有效时间(秒)
+	 * @return token
+	 */
+	public AccessToken createNew(Object bindObject, int expires_in);
+
+	/**
+	 * 获取token
+	 * @param id
+	 * @return token
+	 */
+	public AccessToken findOne(String id);
+
+	/**
+	 * 删除token
+	 * @param id
+	 */
+	public void delete(String id);
+
+}

+ 23 - 0
src/main/java/com/uas/platform/b2bManage/service/EnterpriseBaseInfoService.java

@@ -0,0 +1,23 @@
+package com.uas.platform.b2bManage.service;
+
+
+import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
+import com.uas.platform.b2bManage.page.PageInfo;
+import org.springframework.data.domain.Page;
+
+/**
+ * 企业基本信息操作接口
+ *
+ * Created by hejq on 2018-04-20.
+ */
+public interface EnterpriseBaseInfoService {
+
+    /**
+     * 分页查询企业信息
+     *
+     * @param info 分页参数
+     * @param keyword 关键字
+     * @return
+     */
+    Page<EnterpriseBaseInfo> findEnterPageByKeyword(PageInfo info, String keyword);
+}

+ 18 - 0
src/main/java/com/uas/platform/b2bManage/service/UseLogService.java

@@ -0,0 +1,18 @@
+package com.uas.platform.b2bManage.service;
+
+/**
+ * 日志接口
+ *
+ * Created by hejq on 2018-04-26.
+ */
+public interface UseLogService {
+
+    /**
+     * 增加日志
+     *
+     * @param title 标题
+     * @param message 详情
+     * @param ip ip
+     */
+    void appendLog(String title, String message, String ip);
+}

+ 45 - 0
src/main/java/com/uas/platform/b2bManage/service/UserService.java

@@ -0,0 +1,45 @@
+package com.uas.platform.b2bManage.service;
+
+import com.uas.platform.b2bManage.model.User;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 用户接口
+ *
+ * Created by hejq on 2018-04-23.
+ */
+public interface UserService {
+
+    /**
+     * 通过电话号码查询用户信息
+     *
+     * @param tel 电话
+     * @return
+     */
+    User findByTel(String tel);
+
+    /**
+     * 通过邮箱查询用户信息
+     *
+     * @param email 邮箱
+     * @return
+     */
+    User findUserByUserEmail(String email);
+
+    /**
+     * 通过用户名查询用户信息
+     *
+     * @param name
+     * @return
+     */
+    User findUserByName(String name);
+
+    /**
+     * 通过账号密码登录
+     *
+     * @param userName 账号
+     * @param passWord 密码
+     */
+    void login(String userName, String passWord, HttpServletRequest request) throws IllegalAccessException;
+}

+ 41 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/AccessTokenServiceImpl.java

@@ -0,0 +1,41 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.dao.AccessTokenDao;
+import com.uas.platform.b2bManage.model.AccessToken;
+import com.uas.platform.b2bManage.model.User;
+import com.uas.platform.b2bManage.service.AccessTokenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service("AccessTokenServiceImpl")
+public class AccessTokenServiceImpl implements AccessTokenService {
+
+	@Autowired
+	private AccessTokenDao accessTokenDao;
+
+	@Override
+	public AccessToken createNew(Object bindObject) {
+		AccessToken token = new AccessToken(SystemSession.getUser(), bindObject);
+		accessTokenDao.save(token);
+		return token;
+	}
+
+	@Override
+	public AccessToken createNew(Object bindObject, int expires_in) {
+		AccessToken token = new AccessToken(SystemSession.getUser(), bindObject, expires_in);
+		accessTokenDao.save(token);
+		return token;
+	}
+
+	@Override
+	public AccessToken findOne(String id) {
+		return accessTokenDao.findOne(id);
+	}
+
+	@Override
+	public void delete(String id) {
+		accessTokenDao.delete(id);
+	}
+
+}

+ 68 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/EnterpriseBaseInfoServiceImpl.java

@@ -0,0 +1,68 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import com.uas.platform.b2bManage.core.util.StringUtils;
+import com.uas.platform.b2bManage.dao.EnterpriseBaseInfoDao;
+import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
+import com.uas.platform.b2bManage.page.PageInfo;
+import com.uas.platform.b2bManage.page.criteria.CriterionExpression;
+import com.uas.platform.b2bManage.page.criteria.LogicalExpression;
+import com.uas.platform.b2bManage.page.criteria.SimpleExpression;
+import com.uas.platform.b2bManage.service.EnterpriseBaseInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+/**
+ * 企业基本信息操作实现
+ *
+ * Created by hejq on 2018-04-20.
+ */
+@Service
+public class EnterpriseBaseInfoServiceImpl implements EnterpriseBaseInfoService {
+
+    @Autowired
+    private EnterpriseBaseInfoDao baseInfoDao;
+
+    /**
+     * UU号正则表达式
+     */
+    static final String UU_REGEXP = "^\\d{4,}$";
+
+    /**
+     * 分页查询企业信息
+     *
+     * @param info    分页参数
+     * @param keyword 关键字
+     * @return
+     */
+    @Override
+    public Page<EnterpriseBaseInfo> findEnterPageByKeyword(final PageInfo info, final String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            SimpleExpression name = new SimpleExpression("enName", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression address = new SimpleExpression("enAddress", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression enBussinessCode = new SimpleExpression("enBussinessCode", keyword, CriterionExpression.Operator.LIKE, true);
+            if (keyword.matches(UU_REGEXP)) {
+                SimpleExpression enUU = new SimpleExpression("uu", keyword, CriterionExpression.Operator.EQ, true);
+                SimpleExpression[] expressions = new SimpleExpression[]{name, enUU, address, enBussinessCode};
+                LogicalExpression logical = new LogicalExpression(expressions, CriterionExpression.Operator.OR);
+                info.expression(logical);
+            } else {
+                SimpleExpression[] expressions = new SimpleExpression[]{name, address, enBussinessCode};
+                LogicalExpression logical = new LogicalExpression(expressions, CriterionExpression.Operator.OR);
+                info.expression(logical);
+            }
+        }
+        return baseInfoDao.findAll(new Specification<EnterpriseBaseInfo>() {
+            public Predicate toPredicate(Root<EnterpriseBaseInfo> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+                query.where(info.getPredicates(root, query, builder));
+                return null;
+            }
+        }, info);
+    }
+}

+ 32 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/UseLogServiceImpl.java

@@ -0,0 +1,32 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import com.uas.platform.b2bManage.dao.UseLogDao;
+import com.uas.platform.b2bManage.model.UseLog;
+import com.uas.platform.b2bManage.service.UseLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 日志记录
+ *
+ * Created by hejq on 2018-04-26.
+ */
+@Service
+public class UseLogServiceImpl implements UseLogService {
+
+    @Autowired
+    private UseLogDao useLogDao;
+
+    /**
+     * 增加日志
+     *
+     * @param title   标题
+     * @param message 详情
+     * @param ip      ip
+     */
+    @Override
+    public void appendLog(String title, String message, String ip) {
+        UseLog log = new UseLog(title, message, ip);
+        useLogDao.save(log);
+    }
+}

+ 88 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/UserServiceImpl.java

@@ -0,0 +1,88 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.dao.UserDao;
+import com.uas.platform.b2bManage.model.User;
+import com.uas.platform.b2bManage.service.UserService;
+import com.uas.platform.core.util.encry.Md5Utils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * 用户数据接口
+ *
+ * Created by hejq on 2018-04-23.
+ */
+@Service
+public class UserServiceImpl implements UserService {
+
+    @Autowired
+    private UserDao userDao;
+    /**
+     * 通过电话号码查询用户信息
+     *
+     * @param tel 电话
+     * @return
+     */
+    @Override
+    public User findByTel(String tel) {
+        List<User> userList = userDao.findByTel(tel);
+        return userList.size() > 0 ? userList.get(0) : null;
+    }
+
+    /**
+     * 通过邮箱查询用户信息
+     *
+     * @param email 邮箱
+     * @return
+     */
+    @Override
+    public User findUserByUserEmail(String email) {
+        List<User> userList = userDao.findByEmail(email);
+        return userList.size() > 0 ? userList.get(0) : null;
+    }
+
+    /**
+     * 通过用户名查询用户信息
+     *
+     * @param name
+     * @return
+     */
+    @Override
+    public User findUserByName(String name) {
+        List<User> users = userDao.findUserByName(name);
+        if (users.size() == 0) {
+            throw new UsernameNotFoundException("没有找到您的账号 " + name);
+        }
+        return users.get(0);
+    }
+
+    /**
+     * 通过账号密码登录
+     *
+     * @param userName 账号
+     * @param passWord 密码
+     */
+    @Override
+    public void login(String userName, String passWord, HttpServletRequest request) throws IllegalAccessException {
+        List<User> users = userDao.findByTel(userName);
+        if (CollectionUtils.isEmpty(users)) {
+            users = userDao.findByEmail(userName);
+            if (CollectionUtils.isEmpty(users)) {
+                throw new IllegalAccessException("未找到账号信息");
+            }
+        }
+        User user = users.get(0);
+        if (Md5Utils.encode(passWord, user.getName()).equals(user.getPassword())) {
+            SystemSession.setUser(user);
+            request.getSession().setAttribute("user", user);
+        } else {
+            throw new IllegalAccessException("账号或密码错误");
+        }
+    }
+}

+ 71 - 0
src/main/java/com/uas/platform/b2bManage/support/DS.java

@@ -0,0 +1,71 @@
+package com.uas.platform.b2bManage.support;
+
+public class DS {
+
+	private static final String defaultDriver = "oracle.jdbc.driver.OracleDriver";
+
+	private String id;
+	private String driverClassName;
+	private String url;
+	private String host;
+	private Integer port;
+	private String username;
+	private String password;
+
+	public String getDriverClassName() {
+		return driverClassName == null ? defaultDriver : driverClassName;
+	}
+
+	public void setDriverClassName(String driverClassName) {
+		this.driverClassName = driverClassName;
+	}
+
+	public String getUrl() {
+		return url == null ? String.format("jdbc:oracle:thin:@//%s:%s/orcl", getHost(), getPort()) : url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+	public String getHost() {
+		return host;
+	}
+
+	public void setHost(String host) {
+		this.host = host;
+	}
+
+	public Integer getPort() {
+		return port;
+	}
+
+	public void setPort(Integer port) {
+		this.port = port;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+}

+ 88 - 0
src/main/java/com/uas/platform/b2bManage/support/DSUtils.java

@@ -0,0 +1,88 @@
+package com.uas.platform.b2bManage.support;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.uas.platform.b2bManage.core.util.ContextUtils;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import java.util.concurrent.*;
+
+public class DSUtils {
+
+	/**
+	 * 校验连接
+	 * 
+	 * <pre>
+	 * 如果连接不存在,会先创建
+	 * </pre>
+	 * 
+	 * @param jdbcTemplate
+	 * @return
+	 */
+	public static boolean isConnectable(JdbcTemplate jdbcTemplate, DS ds) {
+		if (!ContextUtils.getApplicationContext().containsBean(ds.getId())) {
+			createDataSource(ds);
+		}
+		return testConnection(jdbcTemplate, ds);
+	}
+
+	/**
+	 * 创建bean
+	 * 
+	 * @param beanName
+	 */
+	private static void createDataSource(DS ds) {
+		ConfigurableApplicationContext context = (ConfigurableApplicationContext) ContextUtils.getApplicationContext();
+		DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) context.getBeanFactory();
+		BeanDefinitionBuilder bdb = BeanDefinitionBuilder.rootBeanDefinition(DruidDataSource.class);
+		bdb.getBeanDefinition().setAttribute("id", ds.getId());
+		// bdb.getBeanDefinition().setAttribute("destroy-method", "close");
+		bdb.addPropertyValue("driverClassName", ds.getDriverClassName());
+		bdb.addPropertyValue("url", ds.getUrl());
+		bdb.addPropertyValue("username", ds.getUsername());
+		bdb.addPropertyValue("password", ds.getPassword());
+		bdb.addPropertyValue("initialSize", 1);
+		bdb.addPropertyValue("maxActive", 20);
+		bdb.addPropertyValue("maxWait", 5000);
+		bdb.addPropertyValue("poolPreparedStatements", true);
+		bdb.addPropertyValue("defaultAutoCommit", true);
+		bdb.addPropertyValue("removeAbandoned", true);
+		bdb.addPropertyValue("testWhileIdle", true);
+		bdb.addPropertyValue("validationQuery", "select 1 from dual");
+		bdb.addPropertyValue("timeBetweenEvictionRunsMillis", 300000);
+		bdb.addPropertyValue("minEvictableIdleTimeMillis", 60000);
+		beanFactory.registerBeanDefinition(ds.getId(), bdb.getBeanDefinition());
+	}
+
+	/**
+	 * 测试连接,未防止数据库连接登录超时 <b> oracle不支持loginTimeOut </b>
+	 * 
+	 * @param jdbcTemplate
+	 * @return
+	 */
+	private static boolean testConnection(final JdbcTemplate jdbcTemplate, final DS ds) {
+		boolean isValid = false;
+		String currSrc = SpObserver.getSp();
+		ExecutorService executor = Executors.newSingleThreadExecutor();
+		FutureTask<Boolean> future = new FutureTask<Boolean>(new Callable<Boolean>() {
+			public Boolean call() {
+				SpObserver.putSp(ds.getId());
+				jdbcTemplate.execute("select 1 from dual");
+				return true;
+			}
+		});
+		executor.execute(future);
+		try {
+			isValid = future.get(6000, TimeUnit.MILLISECONDS);
+		} catch (Exception e) {
+			future.cancel(true);
+		} finally {
+			executor.shutdown();
+			SpObserver.putSp(currSrc);
+		}
+		return isValid;
+	}
+
+}

+ 92 - 0
src/main/java/com/uas/platform/b2bManage/support/MultiDataSource.java

@@ -0,0 +1,92 @@
+package com.uas.platform.b2bManage.support;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.pool.DruidPooledConnection;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+
+import javax.sql.DataSource;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Properties;
+import java.util.logging.Logger;
+
+public class MultiDataSource extends DruidDataSource implements DataSource, ApplicationContextAware {
+
+	private static final long serialVersionUID = 1L;
+
+	private ApplicationContext applicationContext = null;
+	private DruidDataSource dataSource = null;
+	private Properties connectionProperties = null;
+
+	public DruidPooledConnection getConnection() throws SQLException {
+		return getDataSource().getConnection();
+	}
+
+	public Connection getConnection(String arg0, String arg1) throws SQLException {
+		return getDataSource().getConnection(arg0, arg1);
+	}
+
+	public PrintWriter getLogWriter() {
+		return getDataSource().getLogWriter();
+	}
+
+	public Properties getConnectionProperties() {
+		return connectionProperties;
+	}
+
+	public void setConnectionProperties(Properties connectionProperties) {
+		this.connectionProperties = connectionProperties;
+	}
+
+	public int getLoginTimeout() {
+		return getDataSource().getLoginTimeout();
+	}
+
+	public void setLogWriter(PrintWriter arg0) throws SQLException {
+		getDataSource().setLogWriter(arg0);
+	}
+
+	public void setLoginTimeout(int arg0) {
+		getDataSource().setLoginTimeout(arg0);
+	}
+
+	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+		this.applicationContext = applicationContext;
+	}
+
+	public DruidDataSource getDataSource(String dataSourceName) {
+		if (dataSourceName == null || dataSourceName.equals("")) {
+			return this.dataSource;
+		}
+		return this.applicationContext.getBean(dataSourceName, DruidDataSource.class);
+	}
+
+	public void setDataSource(DruidDataSource dataSource) {
+		this.dataSource = dataSource;
+	}
+
+	public DruidDataSource getDataSource() {
+		String sp = SpObserver.getSp();
+		return getDataSource(sp);
+	}
+
+	@Override
+	public <T> T unwrap(Class<T> iface) {
+		return null;
+	}
+
+	@Override
+	public boolean isWrapperFor(Class<?> iface) {
+		return false;
+	}
+
+	@Override
+	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+		return null;
+	}
+
+}

+ 17 - 0
src/main/java/com/uas/platform/b2bManage/support/SecurityConstant.java

@@ -0,0 +1,17 @@
+package com.uas.platform.b2bManage.support;
+
+/**
+ * Created by hejq on 2018-04-23.
+ */
+public class SecurityConstant {
+
+    /**
+     * 跳转登录url
+     */
+    public static final String LOGIN_URL = "/signIn";
+
+    /**
+     * 认证信息
+     */
+    public static final String AUTHENTICATION_URL = "/authentication";
+}

+ 23 - 0
src/main/java/com/uas/platform/b2bManage/support/SpObserver.java

@@ -0,0 +1,23 @@
+package com.uas.platform.b2bManage.support;
+
+/**
+ * 
+ */
+public class SpObserver {
+	
+	private static ThreadLocal<String> local = new ThreadLocal<String>();
+
+	/**
+	 * 切换数据源
+	 * 
+	 * @param sp
+	 *            dbsource name
+	 */
+	public static void putSp(String sp) {
+		local.set(sp);
+	}
+
+	public static String getSp() {
+		return (String) local.get();
+	}
+}

+ 1 - 5
src/main/java/com/uas/platform/home/web/BaseController.java → src/main/java/com/uas/platform/b2bManage/web/BaseController.java

@@ -1,9 +1,8 @@
-package com.uas.platform.home.web;
+package com.uas.platform.b2bManage.web;
 
 import java.io.IOException;
 import java.io.PrintWriter;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,9 +24,6 @@ public class BaseController {
 
 	protected static final String defultCharset = "UTF-8";
 
-	@Autowired
-	protected HttpServletRequest request;
-
 	@Autowired
 	protected HttpServletResponse response;
 

+ 153 - 0
src/main/java/com/uas/platform/b2bManage/web/filter/SSOInterceptor.java

@@ -0,0 +1,153 @@
+package com.uas.platform.b2bManage.web.filter;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.model.User;
+import com.uas.platform.b2bManage.service.UserService;
+import com.uas.platform.b2bManage.support.SecurityConstant;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.sso.SSOHelper;
+import com.uas.sso.SSOToken;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.web.FilterInvocation;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+import org.springframework.util.StringUtils;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+
+/**
+ * 访问拦截
+ *
+ * @author hejq
+ * @date 2018-04-23 15:48
+ */
+public class SSOInterceptor extends HandlerInterceptorAdapter {
+
+    private static final Logger log = Logger.getLogger(SSOInterceptor.class);
+
+    @Autowired
+    private UserService userService;
+
+    /**
+     * This implementation always returns {@code true}.
+     */
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
+            throws Exception {
+        return super.preHandle(request, response, handler) ? this.authenticate(request, response) : false;
+    }
+
+    private final boolean authenticate(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        HttpServletRequest httpRequest = (HttpServletRequest) request;
+        logSession(httpRequest);
+        User user = SystemSession.getUser();
+        if (user == null) {// 未登录则要求登录
+            logoutSession();
+            if(!this.onAuthenticateFailed(request, response)) {
+                return false;
+            } else {
+                return true;
+            }
+        } else {
+            onAuthenticateSuccess(request, response);
+        }
+        return true;
+    }
+
+    /**
+     * 将user信息放在当前线程里面
+     *
+     * @param request
+     */
+    private void logSession(HttpServletRequest request) {
+        Object user = request.getSession().getAttribute("user");
+        if (user != null) {
+            SystemSession.setUser((User) user);
+        }
+    }
+
+    /**
+     * 线程池策略下,不会频繁删除线程,置于线程内的对象须手动删除
+     */
+    private void logoutSession() {
+        SystemSession.clear();
+    }
+
+    protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
+        User user = (User) request.getSession().getAttribute("user");
+        SSOToken token = SSOHelper.attrToken(request);
+        // cookie变化的情况下,session可能还未变化
+        if (user == null) {
+            user = getUserByToken(token);
+            if (user != null) {
+                request.getSession().setAttribute("user", user);
+            }
+        }
+        if (user != null) {
+            SystemSession.setUser(user);
+        }
+    }
+
+    private User getUserByToken(SSOToken token) {
+        User authedUser = null;
+        if (token.getData() != null) {
+            User tokenUser = FlexJsonUtils.fromJson(token.getData(), User.class);
+            if (!StringUtils.isEmpty(tokenUser.getTel())) {
+                // UID表示所有系统公认的唯一标识,这里统一使用手机号
+                authedUser = userService.findByTel(tokenUser.getTel());
+            } else if (!StringUtils.isEmpty(tokenUser.getEmail())) {
+                // UID表示所有系统公认的唯一标识,这里统一使用手机号
+                authedUser = userService.findUserByUserEmail(tokenUser.getEmail());
+            } else {
+                log.error(String.format("invalid user %s, please set uid or dialectUID", tokenUser.getName()));
+            }
+        }
+        return authedUser;
+    }
+
+    private boolean onAuthenticateFailed(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        SystemSession.clear();
+        User user = (User) request.getSession().getAttribute("user");
+        if (user != null) {
+            SystemSession.setUser(user);
+            return true;
+        } else {
+            if (SecurityConstant.AUTHENTICATION_URL.equals(request.getRequestURI())) {
+                return true;
+            }
+            AntPathRequestMatcher matcher = new AntPathRequestMatcher("/account/enterprise/info/**");
+            if (matcher.matches(request)) {
+                return true;
+            }
+            response.setStatus(HttpStatus.UNAUTHORIZED.value());
+            response.sendRedirect(SecurityConstant.LOGIN_URL);
+            return false;
+        }
+    }
+
+    /**
+     * This implementation is empty.
+     */
+    @Override
+    public void postHandle(HttpServletRequest request,
+                           HttpServletResponse response, Object handler,
+                           ModelAndView modelAndView) throws Exception {
+    }
+
+    /**
+     * This implementation is empty.
+     */
+    @Override
+    public void afterCompletion(HttpServletRequest request,
+                                HttpServletResponse response, Object handler, Exception ex)
+            throws Exception {
+    }
+}

+ 0 - 64
src/main/java/com/uas/platform/home/controller/AccountController.java

@@ -1,64 +0,0 @@
-package com.uas.platform.home.controller;
-
-import com.uas.platform.home.model.UuzcUserSpaceDetail;
-import com.uas.sso.entity.UserSpaceView;
-import com.uas.sso.util.AccountUtils;
-import com.uas.platform.home.core.support.SystemSession;
-import com.uas.platform.home.web.BaseController;
-import com.uas.sso.SSOHelper;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import java.io.IOException;
-
-@Controller
-public class AccountController extends BaseController {
-
-	/**
-	 * 账户信息、SSO配置
-	 * 
-	 * @return
-	 */
-	@RequestMapping(value = "/account", method = RequestMethod.GET)
-	@ResponseBody
-	public ModelMap getAccountInfo() throws Exception {
-	    if(null != SystemSession.getUser()) {
-            ModelMap map = new ModelMap();
-	        UserSpaceView detail = AccountUtils.findByBusinessCode(SystemSession.getUser().getBusinessCode());
-            map.put("content", SystemSession.getUser());
-            if(null != detail) {
-                map.put("space", detail);
-            }
-            return map;
-        }
-	    return success();
-	}
-
-	/**
-	 * 跳转登录
-	 *
-	 * @throws IOException
-	 */
-	@RequestMapping(value = "/account/login", method = RequestMethod.GET)
-	@ResponseBody
-	public ModelMap getLoginPage() throws IOException {
-		SSOHelper.clearLogin(request, response);
-		return success(SSOHelper.getRedirectRefererLoginUrl(request));
-	}
-
-	/**
-	 * 跳转登录
-	 *
-	 * @throws IOException
-	 */
-	@RequestMapping(value = "/account/logout", method = RequestMethod.GET)
-	@ResponseBody
-	public ModelMap logout() throws IOException {
-		SSOHelper.clearLogin(request, response);
-		return success();
-	}
-    
-}

+ 0 - 50
src/main/java/com/uas/platform/home/controller/FinanceController.java

@@ -1,50 +0,0 @@
-package com.uas.platform.home.controller;
-
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.home.core.support.SystemSession;
-import com.uas.platform.home.model.HttpAddress;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.ModelAndView;
-
-/**
- * created by shicr on 2017/11/23
- **/
-@RestController
-@RequestMapping("/finance")
-public class FinanceController {
-
-    @Autowired
-    private HttpAddress httpAddress;
-
-    @RequestMapping
-    public ModelAndView getFinancePage(){
-        return new ModelAndView("finance");
-    }
-
-    @RequestMapping(value = "/loan")
-    public String loan(String jsonStr) {
-        JSONObject jsonObject = JSON.parseObject(jsonStr);
-        String url = httpAddress.getLoanAddress();
-        if (null != SystemSession.getUser() && null != SystemSession.getUser().getUserUU()) {
-            jsonObject.putAll(JSON.parseObject(JSON.toJSONString(SystemSession.getUser())));
-            url = url + "?UID=" + SystemSession.getUser().getUserUU();
-        }
-        com.uas.sso.common.util.HttpUtil.ResponseWrap res = null;
-        try {
-            res = com.uas.sso.common.util.HttpUtil.doPost(url, jsonObject);
-            if(res.isSuccess()) {
-                return "申请成功";
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return "申请失败";
-    }
-
-
-
-}

+ 0 - 34
src/main/java/com/uas/platform/home/controller/SaasController.java

@@ -1,34 +0,0 @@
-package com.uas.platform.home.controller;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-
-import com.uas.platform.home.model.User;
-import com.uas.platform.home.core.support.SystemSession;
-
-@Controller
-@RequestMapping("/saas")
-public class SaasController {
-
-	@RequestMapping("/about")
-	public ModelAndView getSaasPage() {
-		User user = SystemSession.getUser();
-		if (null == user || StringUtils.isEmpty(user.getSpaceDomain())) {
-			// TODO:考虑场景:
-			// 张三绑定了企业A、B和C,A、B企业开通了saas、b2b,C企业只开通了b2b
-			// 张三如果先登录并选择了企业C,此时spaceDomain无值表示企业C还没开通saas,就会跳转为企业C开通saas的页面
-			// 如果先登录并选择了企业B,此时就直接跳转B的saas账套
-			// 是否允许张三在saas里面直接切换到企业A?
-
-			// 未登录或未注册saas,saas简介页面
-			return new ModelAndView("saas_about");
-		} else {
-			// TODO:可能情况:企业虽然开了saas,但个人账号并没开(历史数据问题),要调账户中心接口先判断?
-
-			// 直接跳转saas主页
-			return new ModelAndView(String.format("redirect:http://%s.saas.ubtob.com", user.getSpaceDomain()));
-		}
-	}
-}

+ 0 - 26
src/main/java/com/uas/platform/home/controller/SecurityController.java

@@ -1,26 +0,0 @@
-package com.uas.platform.home.controller;
-
-
-import com.uas.platform.home.core.support.SystemSession;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * 账号登录配置
- *
- * Created by hejq on 2017-11-15.
- */
-@RequestMapping(value = "/sso")
-@RestController
-public class SecurityController extends CommonController {
-    /**
-     * 账户信息、SSO配置
-     *
-     * @return
-     */
-    @RequestMapping(value = "/account", method = RequestMethod.GET)
-    public ModelMap getAccountInfo() {
-        return success(SystemSession.getUser());
-    }
-
-}

+ 0 - 155
src/main/java/com/uas/platform/home/controller/UuzcController.java

@@ -1,155 +0,0 @@
-package com.uas.platform.home.controller;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.home.model.User;
-import com.uas.platform.home.model.UuzcUserSpaceDetail;
-import com.uas.sso.entity.UserSpaceView;
-import com.uas.sso.entity.UserView;
-import com.uas.sso.support.Page;
-import com.uas.sso.util.AccountUtils;
-import com.uas.platform.home.core.support.SystemSession;
-import com.uas.platform.home.model.ResultInfo;
-import com.uas.platform.home.model.UuzcUserInfo;
-import com.uas.platform.home.web.BaseController;
-import com.uas.sso.SSOHelper;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 关于优软众创的一些接口
- * <p>
- * Created by hejq on 2017-11-02.
- */
-@RestController
-@RequestMapping(value = "/uuzc")
-public class UuzcController extends BaseController {
-
-    /**
-     * uu众创url
-     */
-    private static final String URL = "http://job.uutest.com";
-
-    /**
-     * 对当前登录账号进行检验
-     *
-     * @return
-     */
-    @RequestMapping(value = "/account/check", method = RequestMethod.GET)
-    public ModelMap checkAccount() throws Exception {
-        User user = SystemSession.getUser();
-        ModelMap map = new ModelMap();
-        if (user == null) {
-            SSOHelper.clearLogin(request, response);
-            return success(SSOHelper.getRedirectRefererLoginUrl(request));
-        }
-
-//        UserSpaceView detail = AccountUtils.findByBusinessCode(user.getBusinessCode());
-//        if (null != user.getHr() && 1 == user.getHr()) {// hr账户
-//            UuzcUserInfo info = getUserInfo(user, detail, true);
-//            map.put("ishr", true);
-//            map.put("user", info);
-//            map.put("usertype", "hr");
-//        } else if (null != detail) {// 先通过登录的信息判断是否是企业用户
-//            map.put("usertype", "company");
-//            UuzcUserInfo info = getUserInfo(user, detail, true);
-//            //判断是否设置了hr
-//            String result = AccountUtils.getHrAccount(info.getLicense());
-//            ResultInfo resInfo = JSONObject.parseObject(result, ResultInfo.class);
-//            map.put("hr", resInfo.getExistHr() ? true : false);
-//            if (user.getUid().equals(detail.getAdminTel())) {
-//                map.put("manager", true);
-//            } else {
-//                map.put("managerName", detail.getAdminName());
-//            }
-//            map.put("user", info);
-//        } else if (null == detail) {// 个人用户
-//            UuzcUserInfo info = getUserInfo(user, detail, false);
-//            JSONObject formData = JSON.parseObject(JSON.toJSONString(info));
-//            map.put("user", formData);
-//            map.put("usertype", "personal");
-//        }
-        return map;
-    }
-
-    /**
-     * 将账户中心信息转成众创需要的信息
-     *
-     * @param user
-     * @param company
-     * @return
-     */
-    private UuzcUserInfo getUserInfo(User user, UuzcUserSpaceDetail detail, boolean company) {
-        UuzcUserInfo info = new UuzcUserInfo();
-        info.setEmail(user.getEmail());
-        info.setMobile(user.getMobile());
-        info.setUc_uid(user.getUserUU().toString());
-        info.setUsername(user.getName());
-        if (null != detail && company) {
-            info.setCompanyname(user.getSpaceName());
-            info.setLicense(user.getSpaceUU().toString());
-            info.setContact(detail.getContactMan() != null ?
-                    detail.getContactMan() : detail.getAdminName());
-            info.setWebsite(detail.getUrl());
-            info.setTelephone(detail.getTel() != null ?
-                    detail.getTel() : detail.getAdminTel());
-            info.setLandine_tel(detail.getContactTel() != null ?
-                    detail.getContactTel() : detail.getAdminTel());
-        }
-        return info;
-    }
-
-    /**
-     * 设置hr账号
-     *
-     * @param user
-     * @return
-     */
-    @RequestMapping(value = "/setHrAccount", method = RequestMethod.POST)
-    public ModelMap setHrAccount(UuzcUserInfo user) throws Exception {
-        UserView userView = new UserView();
-        userView.setMobile(user.getMobile());
-        userView.setVipName(user.getUsername());
-        userView.setEmail(user.getEmail());
-        userView = AccountUtils.addUser(SystemSession.getUser().getSpaceUU(), userView);
-        return success(userView);
-    }
-
-    /**
-     * 获取当前企业的用户信息
-     *
-     * @return
-     * @throws Exception
-     */
-    @RequestMapping(value = "/existusers", method = RequestMethod.GET)
-    public ModelMap getExistUsers() throws Exception {
-        List<UserView> users = new ArrayList<>();
-        int pageNumber = 1;
-        int pageSize = 20;
-        Page<UserView> pUser;
-        do {
-            pUser = AccountUtils.findUsersByBusinessCode(SystemSession.getUser().getSpaceUU(), pageNumber++, pageSize);
-            users.addAll(pUser.getContent());
-        } while (!pUser.isLast());
-        return success(users);
-    }
-
-    /**
-     * 获取当前企业的hr账号信息
-     *
-     * @return
-     * @throws Exception
-     */
-    @RequestMapping(value = "/hrInfo", method = RequestMethod.GET)
-    public ModelMap getHrInfo() throws Exception {
-//        if(null != SystemSession.getUser()) {
-//            return new ModelMap("user", AccountUtils.getHrInfo(SystemSession.getUser().getSpaceUID()));
-//        }
-        return null;
-    }
-}

+ 0 - 33
src/main/java/com/uas/platform/home/model/HttpAddress.java

@@ -1,33 +0,0 @@
-package com.uas.platform.home.model;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-/**
- * created by shicr on 2017/11/27
- **/
-@Component
-public class HttpAddress {
-    private static final long serialVersionUID = 1L;
-
-    private String sys;
-
-    @Value("#{url.loanAddress}")
-    private String loanAddress;
-
-    public String getLoanAddress() {
-        return loanAddress;
-    }
-
-    public void setLoanAddress(String loanAddress) {
-        this.loanAddress = loanAddress;
-    }
-
-    public String getSys() {
-        return sys;
-    }
-
-    public void setSys(String sys) {
-        this.sys = sys;
-    }
-}

+ 0 - 160
src/main/java/com/uas/platform/home/model/Loan.java

@@ -1,160 +0,0 @@
-package com.uas.platform.home.model;
-
-import java.io.Serializable;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * 贷款申请信息表
- */
-
-public class Loan implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * ID
-     */
-    private Long id;
-
-    /**
-     * 产品名
-     */
-    private String product;
-
-    /**
-     * uuid
-     */
-    private Long userId;
-
-    /**
-     * 姓名
-     */
-    private String name;
-
-    /**
-     * 手机号
-     */
-    private Long telphone;
-
-    /**
-     * 公司名
-     */
-    private String companyName;
-
-    /**
-     * 借款金额
-     */
-    private Long amount;
-
-    /**
-     * 审核状态
-     */
-    private String status;
-
-    /**
-     * 单据创建时间
-     */
-    private Date createTime;
-
-    /**
-     * erp下载状态
-     */
-    private Integer sendStatus;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getProduct() {
-        return product;
-    }
-
-    public void setProduct(String product) {
-        this.product = product;
-    }
-
-    public Long getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Long userId) {
-        this.userId = userId;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Long getTelphone() {
-        return telphone;
-    }
-
-    public void setTelphone(Long telphone) {
-        this.telphone = telphone;
-    }
-
-    public String getCompanyName() {
-        return companyName;
-    }
-
-    public void setCompanyName(String companyName) {
-        this.companyName = companyName;
-    }
-
-    public Long getAmount() {
-        return amount;
-    }
-
-    public void setAmount(Long amount) {
-        this.amount = amount;
-    }
-
-    public String getStatus() {
-
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public Date getCreateTime() {
-      return this.createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Integer getSendStatus() {
-        return sendStatus;
-    }
-
-    public void setSendStatus(Integer sendStatus) {
-        this.sendStatus = sendStatus;
-    }
-
-    @Override
-    public String toString() {
-        return "Loan{" +
-                "id=" + id +
-                ", product='" + product + '\'' +
-                ", userId=" + userId +
-                ", name='" + name + '\'' +
-                ", telphone=" + telphone +
-                ", companyName='" + companyName + '\'' +
-                ", amount=" + amount +
-                ", status='" + status + '\'' +
-                ", createTime=" + createTime +
-                '}';
-    }
-}

+ 0 - 74
src/main/java/com/uas/platform/home/model/ResultData.java

@@ -1,74 +0,0 @@
-package com.uas.platform.home.model;
-
-/**
- * 众创接口请求返回结果
- *
- * Created by hejq on 2017-11-02.
- */
-public class ResultData {
-
-    /**
-     * 众创uid
-     */
-    private String uid;
-
-    /**
-     * 企业名称
-     */
-    private String companyname;
-
-    /**
-     * 电话
-     */
-    private String mobile;
-
-    /**
-     * 优软云维一编号
-     */
-    private String uc_uid;
-
-    /**
-     * 编号
-     */
-    private String code;
-
-    public String getUid() {
-        return uid;
-    }
-
-    public void setUid(String uid) {
-        this.uid = uid;
-    }
-
-    public String getCompanyname() {
-        return companyname;
-    }
-
-    public void setCompanyname(String companyname) {
-        this.companyname = companyname;
-    }
-
-    public String getMobile() {
-        return mobile;
-    }
-
-    public void setMobile(String mobile) {
-        this.mobile = mobile;
-    }
-
-    public String getUc_uid() {
-        return uc_uid;
-    }
-
-    public void setUc_uid(String uc_uid) {
-        this.uc_uid = uc_uid;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-}

+ 0 - 86
src/main/java/com/uas/platform/home/model/ResultInfo.java

@@ -1,86 +0,0 @@
-package com.uas.platform.home.model;
-
-/**
- * 众创接口请求返回结果
- *
- * Created by hejq on 2017-11-02.
- */
-public class ResultInfo {
-    /**
-     * 状态码
-     */
-    private Short status;
-
-    /**
-     * 消息
-     */
-    private String msg;
-
-    /**
-     * 提示
-     */
-    private String dialog;
-
-    /**
-     * 返回data数据
-     */
-    private ResultData data;
-
-    /**
-     * 是否存在hr账户
-     */
-    private boolean existHr;
-
-    /**
-     * hr数量
-     */
-    private Integer count;
-
-    public Short getStatus() {
-        return status;
-    }
-
-    public void setStatus(Short status) {
-        this.status = status;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public String getDialog() {
-        return dialog;
-    }
-
-    public void setDialog(String dialog) {
-        this.dialog = dialog;
-    }
-
-    public ResultData getData() {
-        return data;
-    }
-
-    public void setData(ResultData data) {
-        this.data = data;
-    }
-
-    public Integer getCount() {
-        return count;
-    }
-
-    public void setCount(Integer count) {
-        this.count = count;
-    }
-
-    public boolean getExistHr() {
-        return this.count > 0 ? true : false;
-    }
-
-    public void setExistHr(boolean existHr) {
-        this.existHr = existHr;
-    }
-}

+ 0 - 135
src/main/java/com/uas/platform/home/model/User.java

@@ -1,135 +0,0 @@
-package com.uas.platform.home.model;
-
-import com.uas.sso.entity.UserAccount;
-
-import java.io.Serializable;
-
-/**
- * @author wangmh
- * @create 2018-03-16 10:28
- * @desc 登录用户信息
- **/
-public class User implements Serializable {
-
-    /**
-     *
-     */
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 用户名称
-     */
-    private String name;
-
-    /**
-     * 用户uu号
-     */
-    private Long userUU;
-
-    /**
-     * 用户手机号
-     */
-    private String mobile;
-
-    /**
-     * 用户邮箱
-     */
-    private String email;
-
-    /**
-     * 企业uu号
-     */
-    private Long spaceUU;
-
-    /**
-     * 企业名称
-     */
-    private String spaceName;
-
-    /**
-     * 企业域名
-     */
-    private String spaceDomain;
-
-    /**
-     * 企业营业执照号
-     */
-    private String businessCode;
-
-    public User() {
-    }
-
-    public User(UserAccount userAccount) {
-        this.setUserUU(userAccount.getUserUU());
-        this.setName(userAccount.getVipName());
-        this.setMobile(userAccount.getMobile());
-        this.setEmail(userAccount.getEmail());
-        this.setSpaceUU(userAccount.getSpaceUU());
-        this.setSpaceName(userAccount.getSpaceName());
-        this.setBusinessCode(userAccount.getBusinessCode());
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Long getUserUU() {
-        return userUU;
-    }
-
-    public void setUserUU(Long userUU) {
-        this.userUU = userUU;
-    }
-
-    public String getMobile() {
-        return mobile;
-    }
-
-    public void setMobile(String mobile) {
-        this.mobile = mobile;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public Long getSpaceUU() {
-        return spaceUU;
-    }
-
-    public void setSpaceUU(Long spaceUU) {
-        this.spaceUU = spaceUU;
-    }
-
-    public String getSpaceName() {
-        return spaceName;
-    }
-
-    public void setSpaceName(String spaceName) {
-        this.spaceName = spaceName;
-    }
-
-    public String getBusinessCode() {
-        return businessCode;
-    }
-
-    public void setBusinessCode(String businessCode) {
-        this.businessCode = businessCode;
-    }
-
-    public String getSpaceDomain() {
-        return spaceDomain;
-    }
-
-    public void setSpaceDomain(String spaceDomain) {
-        this.spaceDomain = spaceDomain;
-    }
-}

+ 0 - 83
src/main/java/com/uas/platform/home/model/UserSpaceDetailInfo.java

@@ -1,83 +0,0 @@
-package com.uas.platform.home.model;
-
-public class UserSpaceDetailInfo {
-
-	/**
-	 * 企业名称
-	 */
-	private String company;
-
-	/**
-	 * 地址
-	 */
-	private String address;
-
-	/**
-	 * 管理员姓名
-	 */
-	private String username;
-
-	/**
-	 * 管理员电话
-	 */
-	private String usertel;
-
-	/**
-	 * 管理员imid
-	 */
-	private String imid;
-
-	/**
-	 * 管理员邮箱
-	 */
-	private String email;
-
-	public String getCompany() {
-		return company;
-	}
-
-	public void setCompany(String company) {
-		this.company = company;
-	}
-
-	public String getAddress() {
-		return address;
-	}
-
-	public void setAddress(String address) {
-		this.address = address;
-	}
-
-	public String getUsername() {
-		return username;
-	}
-
-	public void setUsername(String username) {
-		this.username = username;
-	}
-
-	public String getUsertel() {
-		return usertel;
-	}
-
-	public void setUsertel(String usertel) {
-		this.usertel = usertel;
-	}
-
-	public String getImid() {
-		return imid;
-	}
-
-	public void setImid(String imid) {
-		this.imid = imid;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-}

+ 0 - 191
src/main/java/com/uas/platform/home/model/UuzcUserInfo.java

@@ -1,191 +0,0 @@
-package com.uas.platform.home.model;
-
-/**
- * 众创传输数据需要的参数
- *
- * Created by hejq on 2017-11-02.
- */
-public class UuzcUserInfo {
-
-    /**
-     * 用户名
-     */
-    private String username;
-
-    /**
-     * 密码
-     */
-    private String password;
-
-    /**
-     * 邮箱
-     */
-    private String email;
-
-    /**
-     * 电话
-     */
-    private String mobile;
-
-    /**
-     * 优软云uid
-     */
-    private String uc_uid;
-
-    /**
-     * 盐值
-     */
-    private String salt;
-
-    /**
-     * 公司名称(企业需要)
-     */
-    private String companyname;
-
-    /**
-     * 公司联系人(企业需要)
-     */
-    private String contact;
-
-    /**
-     * 手机(企业需要)
-     */
-    private String telephone;
-
-    /**
-     * 公司400电话(企业需要)
-     */
-    private String landine_tel;
-
-    /**
-     * 营业执照号(企业需要)
-     */
-    private String license;
-
-    /**
-     * 注册资金(企业需要)
-     */
-    private Double registered;
-
-    /**
-     * 资金单位(企业需要)
-     */
-    private String currency;
-
-    /**
-     * 公司网址(企业需要)
-     */
-    private String website;
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getMobile() {
-        return mobile;
-    }
-
-    public void setMobile(String mobile) {
-        this.mobile = mobile;
-    }
-
-    public String getUc_uid() {
-        return uc_uid;
-    }
-
-    public void setUc_uid(String uc_uid) {
-        this.uc_uid = uc_uid;
-    }
-
-    public String getSalt() {
-        return salt;
-    }
-
-    public void setSalt(String salt) {
-        this.salt = salt;
-    }
-
-    public String getCompanyname() {
-        return companyname;
-    }
-
-    public void setCompanyname(String companyname) {
-        this.companyname = companyname;
-    }
-
-    public String getContact() {
-        return contact;
-    }
-
-    public void setContact(String contact) {
-        this.contact = contact;
-    }
-
-    public String getTelephone() {
-        return telephone;
-    }
-
-    public void setTelephone(String telephone) {
-        this.telephone = telephone;
-    }
-
-    public String getLandine_tel() {
-        return landine_tel;
-    }
-
-    public void setLandine_tel(String landine_tel) {
-        this.landine_tel = landine_tel;
-    }
-
-    public String getLicense() {
-        return license;
-    }
-
-    public void setLicense(String license) {
-        this.license = license;
-    }
-
-    public Double getRegistered() {
-        return registered;
-    }
-
-    public void setRegistered(Double registered) {
-        this.registered = registered;
-    }
-
-    public String getCurrency() {
-        return currency;
-    }
-
-    public void setCurrency(String currency) {
-        this.currency = currency;
-    }
-
-    public String getWebsite() {
-        return website;
-    }
-
-    public void setWebsite(String website) {
-        this.website = website;
-    }
-}

+ 0 - 152
src/main/java/com/uas/platform/home/model/UuzcUserSpaceDetail.java

@@ -1,152 +0,0 @@
-package com.uas.platform.home.model;
-
-/**
- * 优软众创企业信息需要的资料
- *
- * Created by hejq on 2017-11-09.
- */
-public class UuzcUserSpaceDetail {
-
-    /**
-     * 企业名称
-     */
-    private String name;
-
-    /**
-     * 企业营业执照号
-     */
-    private String businessCode;
-
-    /**
-     * 法人名
-     */
-    private String corporation;
-
-    /**
-     * 企业电话
-     */
-    private String tel;
-
-    /**
-     * 企业官网
-     */
-    private String url;
-
-    /**
-     * 管理员姓名
-     */
-    private String adminName;
-
-    /**
-     * 管理员联系方式
-     */
-    private String adminTel;
-
-    /**
-     * 管理员邮箱
-     */
-    private String adminEmail;
-
-    /**
-     * 联系人
-     */
-    private String contactMan;
-
-    /**
-     * 联系人电话
-     */
-    private String contactTel;
-
-    /**
-     * 联系人邮箱
-     */
-    private String contactEmail;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getBusinessCode() {
-        return businessCode;
-    }
-
-    public void setBusinessCode(String businessCode) {
-        this.businessCode = businessCode;
-    }
-
-    public String getCorporation() {
-        return corporation;
-    }
-
-    public void setCorporation(String corporation) {
-        this.corporation = corporation;
-    }
-
-    public String getTel() {
-        return tel;
-    }
-
-    public void setTel(String tel) {
-        this.tel = tel;
-    }
-
-    public String getUrl() {
-        return url;
-    }
-
-    public void setUrl(String url) {
-        this.url = url;
-    }
-
-    public String getAdminName() {
-        return adminName;
-    }
-
-    public void setAdminName(String adminName) {
-        this.adminName = adminName;
-    }
-
-    public String getAdminTel() {
-        return adminTel;
-    }
-
-    public void setAdminTel(String adminTel) {
-        this.adminTel = adminTel;
-    }
-
-    public String getAdminEmail() {
-        return adminEmail;
-    }
-
-    public void setAdminEmail(String adminEmail) {
-        this.adminEmail = adminEmail;
-    }
-
-    public String getContactMan() {
-        return contactMan;
-    }
-
-    public void setContactMan(String contactMan) {
-        this.contactMan = contactMan;
-    }
-
-    public String getContactTel() {
-        return contactTel;
-    }
-
-    public void setContactTel(String contactTel) {
-        this.contactTel = contactTel;
-    }
-
-    public String getContactEmail() {
-        return contactEmail;
-    }
-
-    public void setContactEmail(String contactEmail) {
-        this.contactEmail = contactEmail;
-    }
-}

+ 0 - 41
src/main/java/com/uas/platform/home/web/filter/SSOInterceptor.java

@@ -1,41 +0,0 @@
-package com.uas.platform.home.web.filter;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.fastjson.JSON;
-import com.uas.platform.home.model.User;
-import com.uas.sso.entity.UserAccount;
-import com.uas.sso.entity.UserView;
-import com.uas.platform.home.core.support.SystemSession;
-import com.uas.platform.home.core.util.FastjsonUtils;
-import com.uas.sso.SSOHelper;
-import com.uas.sso.SSOToken;
-import com.uas.sso.web.spring.AbstractSSOInterceptor;
-
-public class SSOInterceptor extends AbstractSSOInterceptor {
-
-	@Override
-	protected boolean onAuthenticateFailed(HttpServletRequest request, HttpServletResponse response) {
-		// 没登录也继续
-		return true;
-	}
-
-	@Override
-	protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
-		SSOToken token = SSOHelper.attrToken(request);
-		if (token.getData() != null) {
-			UserAccount userAccount = JSON.parseObject(token.getData(), UserAccount.class);
-			SystemSession.setUser(new User(userAccount));
-		} else {
-			SystemSession.clear();
-		}
-	}
-
-	@Override
-	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
-		super.afterCompletion(request, response, handler, ex);
-		SystemSession.clear();
-	}
-
-}

+ 21 - 0
src/main/resources/META-INF/persistence.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
+	<persistence-unit name="persistenceUnit"
+		transaction-type="RESOURCE_LOCAL">
+		<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+		<properties>
+			<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" />
+			<property name="hibernate.cache.use_second_level_cache"
+				value="true" />
+			<property name="hibernate.cache.region.factory_class"
+				value="org.hibernate.cache.ehcache.EhCacheRegionFactory" />
+			<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
+			<property name="hibernate.hbm2ddl.auto" value="update" />
+			<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />
+			<property name="hibernate.connection.charSet" value="UTF-8" />
+			<property name="jboss.as.jpa.managed" value="false" />
+		</properties>
+	</persistence-unit>
+</persistence>

+ 0 - 1
src/main/resources/conf/httpAddress.properties

@@ -1 +0,0 @@
-loanAddress=http://10.10.100.178:23000/loan/saveInfo

+ 22 - 0
src/main/resources/conf/jdbc.properties

@@ -0,0 +1,22 @@
+jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
+jdbc.url=jdbc:oracle:thin:@10.10.100.200:1521:orcl
+jdbc.username=platform$b2b
+jdbc.password=select*fromuu
+jdbc.initialSize=5
+jdbc.maxActive=100
+jdbc.minIdle=5
+jdbc.suspectTimeout=60
+jdbc.timeBetweenEvictionRunsMillis=30000
+jdbc.minEvictableIdleTimeMillis=60000
+jdbc.validationQuery=SELECT 1 FROM DUAL
+jdbc.testWhileIdle=true
+jdbc.testOnBorrow=true
+jdbc.testOmReturn=false
+jdbc.removeAbandoned=true
+jdbc.removeAbandonedTimeout=1800
+
+#manage.ubtob.com
+manage.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
+manage.jdbc.url=jdbc:oracle:thin:@192.168.253.6:1521:orcl
+manage.jdbc.username=platformmanager$test
+manage.jdbc.password=select!#%*(

+ 2 - 0
src/main/resources/conf/redis.properties

@@ -0,0 +1,2 @@
+redis.host=10.10.100.200
+redis.port=6379

+ 88 - 14
src/main/resources/spring/applicationContext.xml

@@ -1,26 +1,100 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
-	xmlns:context="http://www.springframework.org/schema/context"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
-	xmlns:cache="http://www.springframework.org/schema/cache" xmlns:util="http://www.springframework.org/schema/util"
-	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd   
-	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
-	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
+	   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
 
 	<!-- 注册spring上下文对象 -->
-	<bean class="com.uas.platform.home.core.support.ApplicationContextRegister" />
+	<bean class="com.uas.platform.b2bManage.core.support.ApplicationContextRegister" />
 
 	<!-- 扫描注解 -->
 	<context:annotation-config />
 	<!-- 扫描的包 -->
-	<context:component-scan base-package="com.uas.platform.home" />
+	<context:component-scan base-package="com.uas.platform.b2bManage" />
 
-	<!-- 账户中心配置 -->
-	<bean id="accountConfigurer" class="com.uas.sso.web.AccountConfigurer"
-		init-method="init">
-		<property name="configPath" value="classpath:conf/account.properties" />
+    <context:property-placeholder location="classpath*:conf/*.properties" />
+
+    <jpa:repositories base-package="com.uas.platform.b2bManage.dao"/>
+
+    <bean id="dataSource" class="com.uas.platform.b2bManage.support.MultiDataSource">
+		<property name="dataSource">
+			<ref bean="defaultDataSource" />
+		</property>
+		<property name="connectionProperties" >
+			<props>
+				<prop key="oracle.net.CONNECT_TIMEOUT">6000</prop>
+				<prop key="oracle.jdbc.ReadTimeout">6000</prop>
+				<prop key="oracle.net.READ_TIMEOUT">6000</prop>
+			</props>
+		</property>
+	</bean>
+	<bean id="defaultDataSource" class="com.alibaba.druid.pool.DruidDataSource"
+		  destroy-method="close">
+		<property name="driverClassName" value="${jdbc.driverClassName}" />
+		<property name="url" value="${jdbc.url}" />
+		<property name="username" value="${jdbc.username}" />
+		<property name="password" value="${jdbc.password}" />
+		<!-- 连接初始值,连接池启动时创建的连接数量的初始值 -->
+		<property name="initialSize" value="${jdbc.initialSize}" />
+		<!-- 连接池的最大值,同一时间可以从池分配的最多连接数量,0时无限制 -->
+		<property name="maxActive" value="${jdbc.maxActive}" />
+		<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
+		<property name="minIdle" value="${jdbc.minIdle}" />
+		<!-- 是否对已备语句进行池管理(布尔值),是否对PreparedStatement进行缓存 -->
+		<property name="poolPreparedStatements" value="true" />
+		<!-- 是否对sql进行自动提交 -->
+		<property name="defaultAutoCommit" value="true" />
+		<!-- 回收超时连接 -->
+		<property name="removeAbandoned" value="true" />
+		<!--延长超时时间-->
+		<property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
+		<!-- 连接空闲时校验连接有效性 -->
+		<property name="testWhileIdle" value="true" />
+		<!-- 校验连接有效性的sql -->
+		<property name="validationQuery" value="select 1 from dual" />
+		<!-- 每过timeBetweenEvictionRunsMillis 时间,就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象 -->
+		<property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
+		<property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
+	</bean>
+
+	<bean class="org.springframework.orm.jpa.JpaTransactionManager"
+		  id="transactionManager">
+		<property name="entityManagerFactory" ref="entityManagerFactory" />
 	</bean>
+    <bean id="entityManagerFactory"
+          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
+        <!--<property name="persistenceUnitName" value="persistenceUnit" />-->
+        <property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml" />
+        <property name="packagesToScan" value="com.uas.platform.b2bManage" />
+        <property name="dataSource" ref="dataSource" />
+        <property name="jpaVendorAdapter">
+            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
+                <property name="generateDdl" value="false" />
+                <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
+                <property name="showSql" value="false" />
+            </bean>
+        </property>
+        <property name="jpaDialect">
+            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
+        </property>
+        <property name="jpaProperties">
+            <props>
+                <prop key="hibernate.cache.provider_configuration_file_resource_path">classpath:spring/ehcache.xml</prop>
+                <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
+                </prop>
+                <prop key="hibernate.cache.use_query_cache">true</prop>
+                <prop key="hibernate.cache.use_second_level_cache">true</prop>
+                <prop key="hibernate.generate_statistics">true</prop>
+                <prop key="hibernate.use_sql_comments">true</prop>
+                <prop key="hibernate.format_sql">true</prop>
+                <prop key="hibernate.generate_statistics">true</prop>
+            </props>
+        </property>
+    </bean>
 
-	<util:properties id="url"
-					 location="classpath:conf/httpAddress.properties" />
+    <!-- jdbctemplate -->
+    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
+        <property name="dataSource" ref="dataSource" />
+    </bean>
 </beans>

+ 24 - 0
src/main/resources/spring/redis.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans  
+           http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"
+	default-autowire="byName">
+
+	<!-- redis 相关配置 -->
+	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
+		<property name="maxIdle" value="300" />
+		<property name="maxWaitMillis" value="3000" />
+		<property name="testOnBorrow" value="true" />
+	</bean>
+
+	<bean id="jedisConnectionFactory"
+		class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
+		p:host-name="${redis.host}" p:port="${redis.port}" p:pool-config-ref="jedisPoolConfig"
+		p:database="0" />
+
+	<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
+		<property name="connectionFactory" ref="jedisConnectionFactory" />
+	</bean>
+
+</beans>

+ 0 - 1
src/main/webapp/WEB-INF/views/normal/baidu_verify_R20eMUl3BB.html

@@ -1 +0,0 @@
-R20eMUl3BB

+ 0 - 203
src/main/webapp/WEB-INF/views/normal/contact.html

@@ -1,203 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="renderer" content="webkit"> 
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<meta name="author" content="优软科技">
-<meta name="Keywords" content="优软,UAS,ERP,企业管理">
-<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
-<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
-<link rel="stylesheet"
-	href="static/lib/fontawesome/css/font-awesome.min.css" />
-<link rel="stylesheet" href="static/css/common.css" />
-<link rel="stylesheet" href="static/css/contact.css" />
-<title>联系我们-优软云</title>
-</head>
-<body>
-	<!-- nav start -->
-	<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
-		<div class="container">
-			<div class="navbar-header">
-				<a href="http://www.ubtob.com" id="logo"><img src="static/img/logo.png" alt=""
-					height="25px" /></a>
-			</div>
-			<div class="collapse navbar-collapse">
-				<ul class="nav navbar-nav navbar-left">
-					<li><a href="http://uas.ubtob.com" class="link-b2b">B2B商务</a></li>
-					<li><a href="http://www.usoftmall.com" class="link-mall">优软商城</a></li>
-					<li><a href="saas/about" class="link-saas">优企云服</a></li>
-					<li><a href="/finance" class="link-finance">金融服务</a></li><!-- http://finance.ubtob.com -->
-					<li><a href="http://job.uuzcc.com/" class="">人才招聘</a></li><!-- http://public.ubtob.com -->
-					<li>
-						<a href="http://www.uuzcc.com/" class="">英唐众创</a>
-						<ul>
-							<li><a href="http://zb.uuzcc.com/">任务外包</a></li>
-							<li><a href="http://fangan.uuzcc.com/">方案商城</a></li>
-							<li><a href="http://bbs.uuzcc.com/forum.php">技术论坛</a></li>
-						</ul>
-					</li>
-					<li>
-						<a href="./#/help" class="link-help">服务专区</a>
-						<ul>
-							<li><a href="./#/public" class="link-public">公共服务</a></li><!-- http://public.ubtob.com -->
-							<li><a href="./#/member" class="link-member">会员中心</a></li><!-- http://member.ubtob.com -->
-						</ul>
-					</li><!-- http://help.ubtob.com -->
-                    <li>
-                        <a href="http://diymall.ubtob.com/" class="link-diymall">定制商城</a></li><!-- http://diymall.ubtob.com -->
-                    </li>
-				</ul>
-				<ul class="nav navbar-nav navbar-right x-nologin">
-					<li><a href="#" class="link-login">登录</a></li>
-					<li><a href="https://sso.ubtob.com/register/enterpriseRegistration?appId=home">注册</a></li>
-				</ul>
-				<ul class="nav navbar-nav navbar-right x-login">
-					<li class="dropdown">
-						<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
-					</li>
-					<li><a href="#" class="link-logout">退出</a></li>
-				</ul>
-			</div>
-		</div>
-	</nav>
-	<!-- nav end -->
-
-	<!-- section start -->
-	<section>
-		<div class="container">
-			<div class="row">
-				<div class="col-xs-1">
-					
-				</div>
-				<div class="col-xs-10">
-					<div id="sidebar">
-						<div class="contact-content clearfix">
-							<div class="contact-para">
-								<div class="para-title">
-									<em class="title-main">联系方式</em><span>(服务时间:工作日 <b>8:30~18:00</b>)
-									</span>
-								</div>
-								<div class="para-content">
-									<div class="para-content-left">
-										<div class="box"></div>
-										总机:
-									</div>
-									<div class="para-content-right">
-										<div class="last">0755-26994749</div>
-									</div>
-								</div>
-								<div class="para-content">
-									<div class="para-content-left">
-										<div class="box"></div>
-										传真:
-									</div>
-									<div class="para-content-right">
-										<div class="last">0755-26996928</div>
-									</div>
-								</div>
-								<div class="para-content">
-									<div class="para-content-left">
-										<div class="box"></div>
-										售前:
-									</div>
-									<div class="para-content-right">
-										<div class="last">800-830-1818</div>
-									</div>
-								</div>
-								<div class="para-content">
-									<div class="para-content-left">
-										<div class="box"></div>
-										售后:
-									</div>
-									<div class="para-content-right">
-										<div class="last">400-830-1818</div>
-									</div>
-								</div>
-								<div class="para-content">
-									<div class="para-content-left">
-										<div class="box"></div>
-										邮箱:
-									</div>
-									<div class="para-content-right">
-										<div class="last">yrsc@usoftchina.com</div>
-									</div>
-								</div>
-							</div>
-							<div class="contact-para last" id="ContactAddr">
-								<div class="para-title">
-									<em class="title-main">联系地址</em>
-								</div>
-								<div class="para-content">
-									<div class="para-content-left">
-										<div class="box"></div>
-										地址:
-									</div>
-									<div class="para-content-right">
-										<div class="last">深圳市南山区高新技术产业园科技南5路英唐大厦6楼</div>
-									</div>
-								</div>
-								<div class="para-content">
-									<div id="dituContent" style="height: 360px; width: 760px;"></div>
-								</div>
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-	</section>
-	<!-- section end -->
-	
-	<!-- footer start -->
-	<footer>
-		<div class="container">
-			<div class="row">
-				<div class="col-sm-3 col-sm-offset-2">
-					<div class="qrcode qrcode-uu">
-						<div class="qrcode-img pull-left">
-							<img src="static/img/qrcode/uu.png" width="100px" height="100px"
-								alt="UU互联" />
-						</div>
-						<div class="qrcode-text pull-left">
-							<div>手机UU</div>
-							<div>快人一步</div>
-						</div>
-						<div class="clearfix"></div>
-					</div>
-				</div>
-				<div class="col-sm-3">
-					<div class="qrcode qrcode-uas">
-						<div class="qrcode-img pull-left">
-							<img src="static/img/qrcode/uas.png" width="100px" height="100px"
-								alt="优软公众号" />
-						</div>
-						<div class="qrcode-text pull-left">
-							<div>微信扫描</div>
-							<div>关注公众号</div>
-						</div>
-						<div class="clearfix"></div>
-					</div>
-				</div>
-				<div class="col-sm-4">
-					<p>
-						<a href="">关于优软</a>
-						<a href="contact">联系我们</a>
-						<a href="help/agreement">帮助</a>
-					</p>
-					<p>©2016 深圳市优软科技有限公司</p>
-					<p>粤ICP备15112126号-2</p>
-				</div>
-			</div>
-		</div>
-	</footer>
-	<!-- footer end -->
-</body>
-<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
-<script type="text/javascript" src="static/lib/bootstrap/js/bootstrap.min.js"></script>
-<script type="text/javascript" src="static/lib/bootstrap-tour/js/bootstrap-tour.min.js"></script>
-<script type="text/javascript" src="static/js/common/common.js"></script>
-<script type="text/javascript" src="static/js/contact/app.js"></script>
-<script type="text/javascript" src="http://api.map.baidu.com/api?key=&v=1.1&services=true"></script>
-</html>

+ 6 - 39
src/main/webapp/WEB-INF/views/normal/default/404.html

@@ -12,7 +12,8 @@
 <link rel="stylesheet"
 	href="static/lib/fontawesome/css/font-awesome.min.css" />
 <link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
-<link rel="stylesheet" href="static/css/common.css" />
+<link rel="stylesheet" href="static/css/setHrAccount.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
 <link rel="stylesheet" href="static/css/404.css" />
 <title>页面未找到-优软云</title>
 </head>
@@ -21,46 +22,12 @@
 	<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
 		<div class="container">
 			<div class="navbar-header">
-				<a href="index" id="logo"><img src="static/img/logo.png" alt=""
-					height="25px" /></a>
+				<a href="http://www.ubtob.com" id="logo"><img src="static/img/logo.png" alt="" height="25px" /></a>
 			</div>
 			<div class="collapse navbar-collapse">
-				<ul class="nav navbar-nav navbar-left">
-					<li><a href="http://uas.ubtob.com" class="link-b2b">B2B商务</a></li>
-					<li><a href="http://www.usoftmall.com" class="link-mall">优软商城</a></li>
-					<li><a href="saas/about" class="link-saas">优企云服</a></li>
-					<li><a href="./#/finance" class="link-finance">金融服务</a></li><!-- http://finance.ubtob.com -->
-					<!-- http://finance.ubtob.com -->
-					<li><a href="http://job.uuzcc.com/" class="">人才招聘</a></li><!-- http://public.ubtob.com -->
-					<li>
-						<a href="http://www.uuzcc.com/" class="">英唐众创</a>
-						<ul>
-							<li><a href="http://zb.uuzcc.com/">任务外包</a></li>
-							<li><a href="http://fangan.uuzcc.com/">方案商城</a></li>
-							<li><a href="http://bbs.uuzcc.com/forum.php">工程师交流圈</a></li>
-						</ul>
-					</li>
-					<li>
-						<a href="#/help" class="link-help">服务专区</a>
-						<ul>
-							<li><a href="./#/public" class="link-public">公共服务</a></li><!-- http://public.ubtob.com -->
-							<li><a href="./#/member" class="link-member">会员中心</a></li><!-- http://member.ubtob.com -->
-						</ul>
-					</li><!-- http://help.ubtob.com -->
-                    <li>
-                        <a href="http://diymall.ubtob.com/" class="link-diymall">定制商城</a></li><!-- http://diymall.ubtob.com -->
-                    </li>
-				</ul>
-				<ul class="nav navbar-nav navbar-right x-nologin">
-					<li><a href="#" class="link-login">登录</a></li>
-					<li><a href="https://sso.ubtob.com/register/enterpriseRegistration?appId=home">注册</a></li>
-				</ul>
-				<ul class="nav navbar-nav navbar-right x-login">
-					<li class="dropdown">
-						<a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
-					</li>
-					<li><a href="#" class="link-logout">退出</a></li>
-				</ul>
+				<div class="nav navbar-nav navbar-left">
+					<span>B2B商务平台后台管理</span>
+				</div>
 			</div>
 		</div>
 	</nav>

+ 83 - 0
src/main/webapp/WEB-INF/views/normal/enterprise.html

@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="Content-Language" Content="zh-CN">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软科技">
+	<meta name="Keywords" content="优软,优软云,优企云服,SAAS,UAS,ERP,企业管理">
+	<meta name="baidu-site-verification" content="tamBdrxeYx" />
+	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet"
+		  href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/enterprise.css" />
+    <link rel="stylesheet" href="static/css/pagination.css">
+	<title>企业列表</title>
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="http://www.ubtob.com" id="logo"><img src="static/img/logo.png" alt="" height="25px" /></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<div class="nav navbar-nav navbar-left">
+				<span>B2B商务平台后台管理</span>
+			</div>
+            <ul class="nav navbar-nav navbar-right x-login">
+                <li class="dropdown">
+                    <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+                </li>
+                <li><a href="#" class="link-logout">退出</a></li>
+            </ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- section start -->
+<section>
+	<div class="container">
+		<div class="section-title">
+			<h3>企业列表</h3>
+		</div>
+	</div>
+    <div class="search">
+        <div class="search-title" style="float: right">
+			<input id="enterprise-total" style="width: 100px; border:0;outline:0;background: #F7F7F8" readonly>
+		</div>
+        <div class="input-group">
+            <input type="text" id="keyword" class="form-control" placeholder="请输入名称、地址、UU号或营业执照搜索"><span class="input-group-addon" id="p_search">搜索</span>
+        </div>
+    </div>
+	<table class="table table-striped table-hover">
+		<thead id="enterprise-head">
+            <th class="text-center" width="60">序号</th>
+            <th class="text-center" width="100">UU</th>
+            <th class="text-center" width="200">企业名称</th>
+            <th class="text-center" width="300">企业地址</th>
+            <th class="text-center" width="150">营业执照</th>
+            <th class="text-center" width="120">注册时间</th>
+		</thead>
+        <tbody id="enterprise-body">
+        </tbody>
+        <div id="page"></div>
+    </table>
+    <div id="m-page" class="m-style"></div>
+</section>
+<!-- section end -->
+
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap-tour/js/bootstrap-tour.min.js"></script>
+<script type="text/javascript" src="static/js/account/enterprise.js"></script>
+<script type="text/javascript" src="static/js/index/app.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

+ 0 - 408
src/main/webapp/WEB-INF/views/normal/finance.html

@@ -1,408 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns="http://www.w3.org/1999/html">
-<head>
-    <meta charset="UTF-8">
-    <title>金融服务</title>
-    <meta name="keywords" content="">
-    <meta name="description" content="">
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <meta name="renderer" content="webkit">
-    <base href="../">
-    <link href="static/images/icon.png" rel="icon" type="image/x-icon"/>
-    <link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css"/>
-    <link rel="stylesheet" href="static/css/common.css"/>
-    <link rel="stylesheet" href="static/css/index.css"/>
-    <link rel="stylesheet" href="static/css/toastr.css">
-</head>
-<style>
-    .finance {
-        width: 100%;
-        margin: 0 auto;
-        z-index: 1;
-    }
-
-    .width1170 {
-        width: 1170px;
-        margin: 0 auto;
-    }
-
-    .finance .banner {
-        width: 100%;
-        margin: 0 auto;
-        max-height: 600px;
-    }
-
-    .finance .banner img {
-        width: 100%;
-        margin-top: 20px;
-    }
-
-    .finance-content a{
-        padding:15px 70px;
-        font-size: 20px;
-        font-weight: bold;
-        color:#000;
-        border:1px solid #000;
-    }
-    .finance-content a:hover{
-        text-decoration: none;
-        cursor:pointer;
-        color:#3c8cd7;
-        background: #e6e6e6;
-    }
-    .finance-content h5{
-        font-size: 16px;
-        color:#4f4f4f;
-        margin:35px 0 50px 0;
-    }
-    .finance-content .thumbnail{
-        width:320px;
-        height:215px;
-        padding-top:30px;
-        box-shadow: 0 0 3px rgba(0,0,0,.3);
-    }
-    .finance-content .thumbnail:hover{
-        cursor:pointer;
-        transform:scale(1.1)
-    }
-    .finance-content .thumbnail p:nth-child(1){
-        font-size: 22px;
-        font-weight: bold;
-        color:#3c8cd7;
-        margin-bottom:15px;
-    }
-    .finance-content .thumbnail p:nth-child(2){
-        font-size: 16px;
-        color:#6e6e6e;
-        margin-bottom:30px;
-    }
-
-    .finance-tel{
-        background: #2f2f2f;
-        text-align: center;
-        padding:55px 0 45px 0;
-    }
-
-    .finance-tel .title p{
-        color:#fff;
-        font-size: 15px;
-        margin-bottom:15px;
-    }
-
-    #note {
-        padding-bottom: 12px;
-    }
-
-    #span2 {
-        padding-left: 150px;
-    }
-
-    #span4 {
-        padding-left: 95px;
-    }
-
-    #span6 {
-        padding-left: 25px;
-    }
-
-    #span11 {
-        padding-left: 145px;
-    }
-    #check2{
-        color:cornflowerblue;
-        margin-left:30px;
-        cursor: pointer;
-    }
-    #note{
-        display: none;
-        padding-left: 30px;
-    }
-    .p2{
-        text-indent:30px
-    }
-    .modal-dialog {
-        position: absolute;
-        top: 0;
-        bottom: 0;
-        left: 0;
-        right: 0;
-    }
-
-    .modal-content {
-        /*overflow-y: scroll; */
-        position: absolute;
-        top: 0;
-        bottom: 0;
-        width: 100%;
-    }
-
-    .modal-body {
-        overflow-y: scroll;
-        position: absolute;
-        top: 55px;
-        bottom: 65px;
-        width: 100%;
-    }
-
-    .modal-header .close {margin-right: 15px;}
-
-    .modal-footer {
-        position: absolute;
-        width: 100%;
-        bottom: 0;
-    }
-</style>
-<body>
-<!--企业征信查询及系统数据获取授权书-->
-<div class="modal fade" id="applyModal1" tabindex="-1" role="dialog" aria-labelledby="applyModalLabel">
-    <div class="modal-dialog modal-lg" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
-                </button>
-                <h4 class="modal-title" >企业征信查询及系统数据获取授权书</h4>
-            </div>
-            <div class="modal-body">
-                <br>重要提示:</br>
-                <p class="p2">为了保障贵司的合法权益,贵司应当阅读并遵守本授权书,请贵司务必审慎阅读、充分理解本授权书条款内容,特别是免除或减轻我公司责任,或限制贵公司权力的条款,其中免除或者减轻责任条款可能以加粗形式提示贵司注意。贵公司的使用、登录、发起申请等行为即视为贵公司已阅读并同意本授权书条款的约束。</p>
-                <p class="p2"> 致深圳市英唐金控科技有限公司:</p>
-                <p>   一、本公司同意并不可撤销地授权:贵公司按照国家相关规定采集符合法律法规规定的公司信息及包括信贷信息在内的信用信息;</p>
-                <p>   二、本公司同意并不可撤销地授权:贵公司可以根据国家有关规定,通过中国人民银行金融信用信息基础数据库、其他依法设立的征信机构查询打印、保存符合法律法规的企业信息和包括信贷信息在内的信用信息。</p>
-                <p>   三、本公司同意并不可撤销地授权:贵公司在本公司使用的深圳市优软科技有限公司ERP系统、B2B平台、优软商城等上自动获取包括但不限于我公司的基本企业信息、财务数据数据信息、采购数据信息、销售数据信息、交易数据信息、生产加工信息、产品信息等。</p>
-                <p class="p2">    以上相关信息和数据的采集及使用期限为与贵公司的业务存续期用途如下:</p>
-                <p>  (一)审核本公司相关金融业务申请;
-                <p>   (二)处理贷后管理事务;
-                <p>  (三)处理企业征信异议;
-                <p>  (四)依法或经有权部门要求;
-                <p>   (五)其他本公司向贵公司申请或办理的业务。
-                <p class="p2">  我司已知悉本授权书全部内容(特别是加粗字体内容)的含义及因此产生的法律效力,自愿作出以上授权。本授权书是我司真实意思表示,我司同意承担由此带来的一切法律后果。
-            </div>
-            <div class="modal-footer">
-                <button class="btn btn-default" data-dismiss="modal">取消</button>
-                <button class="btn btn-primary" id="agree">同意</button>
-            </div>
-        </div>
-    </div>
-</div>
-<!-- Modal -->
-<div class="modal fade" id="applyModal" tabindex="-1" role="dialog" aria-labelledby="applyModalLabel">
-    <div class="modal-dialog modal-lg" role="document">
-        <div class="modal-content">
-            <div class="modal-header">
-                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
-                </button>
-                <h4 class="modal-title" id="applyModalLabel">立即申请</h4>
-            </div>
-            <div class="modal-body">
-                <div class="form-horizontal">
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">企业名称</label>
-                        <div class="col-sm-6">
-                            <input type="text" placeholder="请输入企业名称" class="form-control" id="loanCommpanyName">
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">拟融资金额</label>
-                        <div class="col-sm-4">
-                            <div class="input-group">
-                                <input type="text" placeholder="请输入融资金额" class="form-control" id="loanAmount"
-                                       onkeyup="if(isNaN(value))execCommand('undo')"
-                                       onafterpaste="if(isNaN(value))execCommand('undo')">
-                                <div class="input-group-addon">元</div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">联系人</label>
-                        <div class="col-sm-4">
-                            <input type="text" placeholder="请输入您的姓名" class="form-control" id="loanName">
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">联系方式</label>
-                        <div class="col-sm-4">
-                            <input type="text" placeholder="请输入您的手机号" class="form-control" id="loanTelphone">
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <div class="col-sm-10 col-sm-offset-2">
-                            <input type="checkbox" id="check">同意因开展应收账款保理业务而查询相关数据
-                        </div>
-                        <div class="col-sm-10 col-sm-offset-2">
-                            <input type="checkbox" id="check1">同意因开展应收账款保理业务提供相关材料
-                        </div>
-                        <p id="check2">需提供资料清单</p>
-                    </div>
-                    <div id="note">
-                        需提供以下资料清单(加盖公章)<br>
-                        <span>1、营业执照复印件</span> <span id="span2"> 2、组织机构代码证复印件</span><br>
-                        <span>3、国税、地税登记证复印件</span> <span id="span4"> 4、开户许可证复印件</span><br>
-                        <span>5、法人代表及实际控制人身份证复印件</span> <span id="span6">6、法人代表证明书</span><br>
-                        <span>7、公司近三年审计报告及最近一期的财务报表及科目明细(前五大)</span><br>
-                        <span>8、近1年主要结算银行流水对账单和用于公司账务结算的个人账户结算单复印件</span><br>
-                        <span>9、前五大上下游客户近一年贸易合同,货运证明或其他表明货物确已发运的单据;交易发票;提货单、质检证明(凭证)、预付款(定金)凭证复印件</span><br>
-                        <span>10、公司基本情况表</span><span id="span11">11、拟融资应收账款发票清单、采购合同明细</span><br>
-                        <span>12、拟融资应收账款客户近一年的付款凭证(银行回单)</span><br>
-                        <span>13、拟融资应收账款相关贸易合同,货运证明或其他表明货物确已发运的单据;交易发票;提货单、质检证明(凭证)、预付款(定金)凭证</span><br>
-                        <span>14、近两年缴税完税凭证、水电费单、员工工资单等证明文件</span><br>
-                        <span>15、我公司要求的其他资料</span><br>
-                    </div>
-                </div>
-            </div>
-            <div class="modal-footer">
-                <button class="btn btn-default" data-dismiss="modal">取消</button>
-                <button class="btn btn-primary" id="loanSubmit">提交申请</button>
-            </div>
-        </div>
-    </div>
-</div>
-
-
-<!-- nav start -->
-<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
-    <div class="container">
-        <div class="navbar-header">
-            <a href="" id="logo"><img src="static/img/logo.png" alt="" height="25px"/></a>
-        </div>
-        <div class="collapse navbar-collapse">
-            <ul class="nav navbar-nav navbar-left">
-                <li><a href="http://uas.ubtob.com" class="link-b2b">B2B商务</a></li>
-                <li><a href="http://www.usoftmall.com" class="link-mall">优软商城</a></li>
-                <li><a href="saas/about" class="link-saas">优企云服</a></li>
-                <li><a href="finance" class="link-finance">金融服务</a></li>
-                <!-- http://finance.ubtob.com -->
-                <li><a href="http://job.uuzcc.com/" class="">人才招聘</a></li><!-- http://public.ubtob.com -->
-                <li>
-                    <a href="http://www.uuzcc.com/">英唐众创</a>
-                    <ul>
-                        <li><a href="http://zb.uuzcc.com/">任务外包</a></li>
-                        <li><a href="http://fangan.uuzcc.com/">方案商城</a></li>
-                        <li><a href="http://bbs.uuzcc.com/forum.php">技术论坛</a></li>
-                    </ul>
-                </li>
-                <!-- http://member.ubtob.com -->
-                <li>
-                    <a href="http://diymall.ubtob.com/" class="link-diymall">定制商城</a></li><!-- http://diymall.ubtob.com -->
-                </li>
-                <li>
-                    <a href="#/help" class="link-help">服务专区</a>
-                    <ul>
-                        <li><a href="#/public" class="link-public">公共服务</a></li><!-- http://public.ubtob.com -->
-                        <li><a href="#/member" class="link-member">会员中心</a></li><!-- http://member.ubtob.com -->
-                    </ul>
-                </li><!-- http://help.ubtob.com -->
-            </ul>
-            <ul class="nav navbar-nav navbar-right x-nologin">
-                <li><a href="#" class="link-login">登录</a></li>
-                <li><a href="https://sso.ubtob.com/register/enterpriseRegistration?appId=home">注册</a></li>
-            </ul>
-            <ul class="nav navbar-nav navbar-right x-login">
-                <li class="dropdown"><a href="#" class="dropdown-toggle"><i
-                        class="fa fa-user"></i> <span class="title"></span></a></li>
-                <li><a href="#" class="link-logout">退出</a></li>
-            </ul>
-        </div>
-    </div>
-</nav>
-<header class="finance">
-    <div class="banner"><img src="static/images/banner.png" /></div>
-</header>
-<!-- nav end -->
-<section class="finance-content" style="text-align: center;">
-    <div class="container">
-        <a onclick="applyLoan()">立即申请</a>
-        <h5>基于客户与优软云平台贸易产生的所有应收账款提供的融资服务</h5>
-        <div class="row">
-            <div class="col-xs-4">
-                <div class="thumbnail">
-                    <div class="caption">
-                        <p>额度充足</p>
-                        <p>融资额高,放款速度快</p>
-                        <img src="static/images/redu.png">
-                    </div>
-                </div>
-            </div>
-            <div class="col-xs-4">
-                <div class="thumbnail">
-                    <div class="caption">
-                        <p>门槛极低</p>
-                        <p>即时申请,手续简单</p>
-                        <img src="static/images/minkan.png">
-                    </div>
-                </div>
-
-            </div>
-            <div class="col-xs-4">
-                <div class="thumbnail">
-                    <div class="caption">
-                        <p>期限灵活</p>
-                        <p>账期可控,随借随还</p>
-                        <img src="static/images/qixian.png">
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</section>
-<section class="finance-tel">
-    <div class="container">
-        <div class="title">
-            <p>联系电话:0755-26657231</p>
-            <p>传真:0755-86140331</p>
-            <p>邮箱:ytft@yitoa.com </p>
-            <p>地址:深圳市南山科技园科技南五路英唐大厦五楼</p>
-        </div>
-    </div>
-</section>
-<!-- footer start -->
-<footer>
-    <div class="container">
-        <div class="row">
-            <div class="col-sm-3 col-sm-offset-2">
-                <div class="qrcode qrcode-uu">
-                    <div class="qrcode-img pull-left">
-                        <img src="static/img/qrcode/uu.png" width="100px" height="100px"
-                             alt="UU互联"/>
-                    </div>
-                    <div class="qrcode-text pull-left">
-                        <div>手机UU</div>
-                        <div>快人一步</div>
-                    </div>
-                    <div class="clearfix"></div>
-                </div>
-            </div>
-            <div class="col-sm-3">
-                <div class="qrcode qrcode-uas">
-                    <div class="qrcode-img pull-left">
-                        <img src="static/img/qrcode/uas.png" width="100px" height="100px"
-                             alt="优软公众号"/>
-                    </div>
-                    <div class="qrcode-text pull-left">
-                        <div>微信扫描</div>
-                        <div>关注公众号</div>
-                    </div>
-                    <div class="clearfix"></div>
-                </div>
-            </div>
-            <div class="col-sm-4">
-                <p>
-                    <a href="">关于优软</a>
-                    <a href="contact">联系我们</a>
-                    <a href="help/agreement">帮助</a>
-                </p>
-                <p>©2016 深圳市优软科技有限公司</p>
-                <p>粤ICP备15112126号-2</p>
-            </div>
-        </div>
-    </div>
-</footer>
-</body>
-
-<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
-<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
-<script type="text/javascript" src="static/js/common/common.js"></script>
-<script type="text/javascript" src='static/js/common/toastr.js'></script>
-<script type="text/javascript" src="static/js/finance/finance.js"></script>
-</html>

+ 0 - 206
src/main/webapp/WEB-INF/views/normal/saas_about.html

@@ -1,206 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="renderer" content="webkit"> 
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<meta name="author" content="优软科技">
-<meta name="Keywords" content="优软,UAS,ERP,企业管理">
-<base href="../" />
-<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
-<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
-<link rel="stylesheet"
-	href="static/lib/fontawesome/css/font-awesome.min.css" />
-<link rel="stylesheet" href="static/css/common.css" />
-<link rel="stylesheet" href="static/css/saas_about.css" />
-<title>优企云服</title>
-</head>
-<body>
-	<!-- nav start -->
-	<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
-		<div class="container">
-			<div class="navbar-header">
-				<a href="" id="logo"><img src="static/img/logo.png" alt=""
-					height="25px" /></a>
-			</div>
-			<div class="collapse navbar-collapse">
-				<ul class="nav navbar-nav navbar-left">
-					<li><a href="http://uas.ubtob.com" class="link-b2b">B2B商务</a></li>
-					<li><a href="http://www.usoftmall.com" class="link-mall">优软商城</a></li>
-					<li><a href="saas/about" class="link-saas">优企云服</a></li>
-					<li><a href="finance" class="link-finance">金融服务</a></li>
-					<!-- http://finance.ubtob.com -->
-					<li><a href="http://job.uuzcc.com/" class="">人才招聘</a></li><!-- http://public.ubtob.com -->
-					<li>
-						<a href="http://www.uuzcc.com/">英唐众创</a>
-						<ul>
-							<li><a href="http://zb.uuzcc.com/">任务外包</a></li>
-							<li><a href="http://fangan.uuzcc.com/">方案商城</a></li>
-							<li><a href="http://bbs.uuzcc.com/forum.php">技术论坛</a></li>
-						</ul>
-					</li>
-					<li>
-						<a href="http://diymall.ubtob.com/" class="link-diymall">定制商城</a></li><!-- http://diymall.ubtob.com -->
-					</li>
-					<!-- http://member.ubtob.com -->
-					<li>
-						<a href="#/help" class="link-help">服务专区</a>
-						<ul>
-							<li><a href="#/public" class="link-public">公共服务</a></li><!-- http://public.ubtob.com -->
-							<li><a href="#/member" class="link-member">会员中心</a></li><!-- http://member.ubtob.com -->
-						</ul>
-					</li><!-- http://help.ubtob.com -->
-				</ul>
-				<ul class="nav navbar-nav navbar-right x-nologin">
-					<li><a href="#" class="link-login">登录</a></li>
-					<li><a href="https://sso.ubtob.com/register/enterpriseRegistration?appId=home">注册</a></li>
-				</ul>
-				<ul class="nav navbar-nav navbar-right x-login">
-					<li class="dropdown"><a href="#" class="dropdown-toggle"><i
-							class="fa fa-user"></i> <span class="title"></span></a></li>
-					<li><a href="#" class="link-logout">退出</a></li>
-				</ul>
-			</div>
-		</div>
-	</nav>
-	<!-- nav end -->
-
-	<!-- header start -->
-	<header>
-		<div class="hd-background">
-			<img src="static/img/about_saas/header_bg_new.jpg" alt=""
-				style="height:685px;" width="100%" />
-		</div>
-		<div class="hd-content">
-			<div class="container" style="width:1320px!important;">
-				<div class="row">
-					<div class="col-md-12 text-center">
-						<div class="header-text">
-							<h2>优企云服</h2>
-							<p>零成本投入 免费使用 / 全流程管理 简单易用 / 优软服务连接企业与企业 / 跨地域 移动办公</p>
-						</div>
-					</div>
-				</div>
-				<div class="text-center">
-					<a class="btn btn-experience"
-						href="http://make-guest.saas.ubtob.com/" target="_blank"
-						style="margin-right: 20px;font-size: 24px;width:156px;height:49px;font-weight:bold;"> 立即体验 </a>
-					<a class="btn btn-experience btn-apply" href="javascript:void(0);" style="font-size: 24px;font-weight:bold;width:156px;height:49px;"> 免费开通 </a>
-				</div>
-				<div class="row">
-					<div class="col-md-12">
-						<div class="uas-snapshot">
-							<img src="static/img/about_saas/snapshot_new.png" alt="" style="height:337px;"/>
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-	</header>
-	<!-- header end -->
-
-	<!-- advantage start -->
-	<section class="advantage">
-		<div class="container">
-			<div class="section-title text-center">
-				<h2>【五大优势】</h2>
-				<hr />
-			</div>
-			<div class="section-content text-center">
-				<div class="row">
-					<div class="col-md-10 col-md-offset-1">
-						<div class="advantage-wrap">
-							<div class="advantage-item advantage-item-1">
-								<img src="static/img/about_saas/ad_01.jpg" alt="" />
-								<div class="advantage-text">
-									<h4>联合应用</h4>
-									<p>打造全流程管理系统</p>
-								</div>
-							</div>
-							<div class="advantage-item advantage-item-2">
-								<img src="static/img/about_saas/ad_02.jpg" alt="" />
-								<div class="advantage-text">
-									<h4>免费使用 简单易用</h4>
-									<p>化繁为简的操作流程与界面</p>
-								</div>
-							</div>
-							<div class="advantage-item advantage-item-3">
-								<img src="static/img/about_saas/ad_03.jpg" alt="" />
-								<div class="advantage-text">
-									<h4>独立账套 数据安全性高</h4>
-									<p>使用Oracle数据库,数据定时备份</p>
-								</div>
-							</div>
-							<div class="advantage-item advantage-item-4">
-								<img src="static/img/about_saas/ad_04.jpg" alt="" />
-								<div class="advantage-text">
-									<h4>移动办公</h4>
-									<p>跨地域实时协同</p>
-								</div>
-							</div>
-							<div class="advantage-item advantage-item-5">
-								<img src="static/img/about_saas/ad_05.jpg" alt="" />
-								<div class="advantage-text">
-									<h4>企业无缝链接企业</h4>
-									<p>开放、聚合的SAAS系统</p>
-								</div>
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-		</div>
-	</section>
-	<!-- advantage end -->
-
-	<!-- footer start -->
-	<footer>
-		<div class="container">
-			<div class="row">
-				<div class="col-sm-3 col-sm-offset-2">
-					<div class="qrcode qrcode-uu">
-						<div class="qrcode-img pull-left">
-							<img src="static/img/qrcode/uu.png" width="100px" height="100px"
-								alt="UU互联" />
-						</div>
-						<div class="qrcode-text pull-left">
-							<div>手机UU</div>
-							<div>快人一步</div>
-						</div>
-						<div class="clearfix"></div>
-					</div>
-				</div>
-				<div class="col-sm-3">
-					<div class="qrcode qrcode-uas">
-						<div class="qrcode-img pull-left">
-							<img src="static/img/qrcode/uas.png" width="100px" height="100px"
-								alt="优软公众号" />
-						</div>
-						<div class="qrcode-text pull-left">
-							<div>微信扫描</div>
-							<div>关注公众号</div>
-						</div>
-						<div class="clearfix"></div>
-					</div>
-				</div>
-				<div class="col-sm-4">
-					<p>
-						<a href="">关于优软</a> <a href="contact">联系我们</a> <a
-							href="help/agreement">帮助</a>
-					</p>
-					<p>©2016 深圳市优软科技有限公司</p>
-					<p>粤ICP备15112126号-2</p>
-				</div>
-			</div>
-		</div>
-	</footer>
-	<!-- footer end -->
-</body>
-<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
-<script type="text/javascript"
-	src="static/lib/bootstrap/js/bootstrap.min.js"></script>
-<script type="text/javascript" src="static/js/common/common.js"></script>
-<script type="text/javascript" src="static/js/saas_about/app.js"></script>
-<script type="text/javascript" src="static/js/common/toastr.js"></script>
-</html>

+ 0 - 116
src/main/webapp/WEB-INF/views/normal/setHrAccount.html

@@ -1,116 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="renderer" content="webkit"> 
-<meta http-equiv="Content-Language" Content="zh-CN">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<meta name="author" content="优软科技">
-<meta name="Keywords" content="优软,优软云,优企云服,SAAS,UAS,ERP,企业管理">
-<meta name="baidu-site-verification" content="tamBdrxeYx" />
-<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
-<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
-<link rel="stylesheet"
-	href="static/lib/fontawesome/css/font-awesome.min.css" />
-<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
-<link rel="stylesheet" href="static/css/common.css" />
-<link rel="stylesheet" href="static/css/setHrAccount.css" />
-<title>设置hr账号</title>
-</head>
-<body>
-	<!-- nav start -->
-	<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
-		<div class="container">
-			<div class="navbar-header">
-				<a href="http://www.ubtob.com" id="logo"><img src="static/img/logo.png" alt=""
-					height="25px" /></a>
-			</div>
-			<div class="collapse navbar-collapse">
-				<div class="nav navbar-nav navbar-left">
-					<span>人才招聘</span>
-				</div>
-                <ul class="nav navbar-nav navbar-right x-nologin">
-                    <li><a href="#" class="link-login">登录</a></li>
-                    <li><a href="https://sso.ubtob.com/register/enterpriseRegistration?appId=home">注册</a></li>
-                </ul>
-                <ul class="nav navbar-nav navbar-right x-login">
-                    <li class="dropdown">
-                        <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
-                    </li>
-                    <li><a href="#" class="link-logout">退出</a></li>
-                </ul>
-			</div>
-		</div>
-	</nav>
-	<!-- nav end -->
-
-	<!-- section start -->
-	<section>
-		<div class="container">
-			<div class="section-title">
-				<h3>设置HR账号</h3>
-			</div>
-			<div class="section-nav">
-				<span class="active">添加新的HR账号</span>
-				<span id="existUsers">选择现有人员账号</span>
-			</div>
-			<!--添加新的hr账号-->
-			<div class="section-choose show">
-				<form action="">
-					<div class="form-group">
-						<input id="hrname" type="text" class="form-control" placeholder="姓名" />
-					</div>
-					<div class="form-group">
-						<input id="hrtel" type="text" class="form-control" placeholder="电话号码" />
-					</div>
-					<div class="form-group">
-						<input id="hremail" type="text" class="form-control" placeholder="邮箱" />
-					</div>
-					<div class="form-group">
-						<a class="btn" id="addHrAccount" type="submit">添加并设置为HR账号</a>
-					</div>
-				</form>
-			</div>
-			<!--选择现有人员账号-->
-			<div class="section-choose" >
-				<form action="">
-					<div class="form-group">
-						<input type="text" id="username" class="form-control" placeholder="姓名" autocomplete="off" />
-						<ul id="userList" style="max-height: 200px; overflow-y: auto;">
-						</ul>
-					</div>
-					<div class="form-group">
-						<input type="text" id="usertel" class="form-control" placeholder="电话号码" autocomplete="off"/>
-					</div>
-					<div class="form-group">
-						<input type="text" id="useremail" class="form-control" placeholder="邮箱" autocomplete="off"/>
-					</div>
-					<div class="form-group">
-						<input type="text" id="useruu" class="form-control" placeholder="UU号" autocomplete="off"/>
-					</div>
-					<div class="form-group">
-						<a class="btn" id="setHrAccount" type="submit">添加并设置为HR账号</a>
-					</div>
-				</form>
-			</div>
-		</div>
-	</section>
-	<!-- section end -->
-
-</body>
-<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
-<script type="text/javascript" src="static/lib/bootstrap/js/bootstrap.min.js"></script>
-<script type="text/javascript" src="static/lib/bootstrap-tour/js/bootstrap-tour.min.js"></script>
-<script type="text/javascript" src="static/js/common/common.js"></script>
-<script type="text/javascript" src="static/js/index/app.js"></script>
-<script>
-	$(function(){
-		$('.section-nav').on('click','span',function() {
-			$(this).addClass('active').siblings().removeClass('active');
-			var $index = $(this).index();
-			$('.section-choose').eq($index).addClass('show').siblings().removeClass('show');
-		})
-	});
-</script>
-</html>

+ 67 - 0
src/main/webapp/WEB-INF/views/normal/signIn.html

@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="Content-Language" Content="zh-CN">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软科技">
+	<meta name="Keywords" content="优软,优软云,优企云服,SAAS,UAS,ERP,企业管理">
+	<meta name="baidu-site-verification" content="tamBdrxeYx" />
+	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet"
+		  href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/setHrAccount.css" />
+	<title>登录界面</title>
+</head>
+<body>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="http://www.ubtob.com" id="logo"><img src="static/img/logo.png" alt="" height="25px" /></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<div class="nav navbar-nav navbar-left">
+				<span>B2B商务平台后台管理</span>
+			</div>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- section start -->
+<section>
+	<div class="container">
+		<div class="section-title">
+			<h3>账号登录</h3>
+		</div>
+		<div class="section-choose show">
+			<form action="">
+				<div class="form-group">
+					<input id="p_username" type="text" class="form-control" placeholder="手机号或邮箱" />
+				</div>
+				<div class="form-group">
+					<input id="p_pwd" type="password" class="form-control" placeholder="密码" />
+				</div>
+				<div class="form-group">
+                    <a class="reg" id="signUp">快速注册</a> <a class="forget" id="restPwd">忘记密码?</a>
+					<a class="btn" id="link-login" type="submit">登录</a>
+				</div>
+			</form>
+		</div>
+	</div>
+</section>
+<!-- section end -->
+
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap-tour/js/bootstrap-tour.min.js"></script>
+<script type="text/javascript" src="static/js/account/signIn.js"></script>
+<script type="text/javascript" src="static/js/index/app.js"></script>
+</html>

+ 8 - 44
src/main/webapp/WEB-INF/web.xml

@@ -2,12 +2,12 @@
 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 	version="3.0"
 	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/web-app_3_0.xsd">
-  <display-name>platform-home</display-name>
+  <display-name>b2bManage</display-name>
   <description>The home page project of the platform.</description>
   
   <context-param>
 		<param-name>webAppRootKey</param-name>
-		<param-value>spring.webapp.platform.home</param-value>
+		<param-value>spring.webapp.platform.b2bManage</param-value>
 	</context-param>
 	<context-param>
 		<param-name>spring.profiles.active</param-name>
@@ -23,50 +23,9 @@
 	</context-param>
 	<context-param>
 		<param-name>contextConfigLocation</param-name>
-		<param-value>classpath*:spring/applicationContext.xml</param-value>
+		<param-value>classpath*:spring/*.xml</param-value>
 	</context-param>
-	
-	<!-- filters -->
-	<filter>
-		<filter-name>CharacterEncodingFilter</filter-name>
-		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
-		<async-supported>true</async-supported>
-		<init-param>
-			<param-name>encoding</param-name>
-			<param-value>UTF-8</param-value>
-		</init-param>
-		<init-param>
-			<param-name>forceEncoding</param-name>
-			<param-value>true</param-value>
-		</init-param>
-	</filter>
-	<filter-mapping>
-		<filter-name>CharacterEncodingFilter</filter-name>
-		<url-pattern>/*</url-pattern>
-	</filter-mapping>
 
-	<filter>
-		<filter-name>HttpMethodFilter</filter-name>
-		<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
-		<async-supported>true</async-supported>
-	</filter>
-	<filter-mapping>
-		<filter-name>HttpMethodFilter</filter-name>
-		<url-pattern>/*</url-pattern>
-	</filter-mapping>
-	
-	<!-- Spring device resolver -->
-	<filter>
-		<filter-name>deviceResolverRequestFilter</filter-name>
-		<filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>
-		<async-supported>true</async-supported>
-	</filter>
-	
-	<filter-mapping>
-		<filter-name>deviceResolverRequestFilter</filter-name>
-		<url-pattern>/*</url-pattern>
-	</filter-mapping>
-	
 	<!-- Handles Spring requests -->
 	<servlet>
 		<servlet-name>spring-mvc-dispatcher</servlet-name>
@@ -82,6 +41,11 @@
 		<servlet-name>spring-mvc-dispatcher</servlet-name>
 		<url-pattern>/</url-pattern>
 	</servlet-mapping>
+
+	<servlet-mapping>
+		<servlet-name>default</servlet-name>
+		<url-pattern>/WEB-INF/views/*</url-pattern>
+	</servlet-mapping>
 	
 	<!-- Creates the Spring Container shared by all Servlets and Filters -->
 	<listener>

+ 12 - 11
src/main/webapp/WEB-INF/webmvc.xml

@@ -27,7 +27,7 @@
 
 	<mvc:resources mapping="/static/**" location="/resources/" />
 
-	<context:component-scan base-package="com.uas.platform.home.controller" />
+	<context:component-scan base-package="com.uas.platform.b2bManage" />
 
 	<bean
 		class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">
@@ -46,19 +46,20 @@
 
 	<mvc:view-controller path="/" view-name="index" />
 	<mvc:view-controller path="/index" view-name="index" />
-	<mvc:view-controller path="/signin" view-name="index" />
-	<mvc:view-controller path="/contact" view-name="contact" />
-	<mvc:view-controller path="/help/agreement" view-name="help/agreement" />
-	<mvc:view-controller path="/help/index" view-name="help/index" />
-	<mvc:view-controller path="/hiring" view-name="hiring" />
-	<mvc:view-controller path="/setHrAccount" view-name="setHrAccount" />
-	<mvc:view-controller path="/baidu_verify_R20eMUl3BB.html" view-name="baidu_verify_R20eMUl3BB" />
-
+	<mvc:view-controller path="/signIn" view-name="signIn" />
+	<mvc:view-controller path="/enterprise" view-name="enterprise" />
+    <mvc:view-controller path="/**#" view-name="signIn" />
 	<mvc:interceptors>
 		<!-- SSO过滤 -->
 		<mvc:interceptor>
-			<mvc:mapping path="/**"></mvc:mapping>
-			<bean class="com.uas.platform.home.web.filter.SSOInterceptor"></bean>
+			<mvc:mapping path="/**/**"></mvc:mapping>
+			<mvc:exclude-mapping path="/**/*.css"/>
+			<mvc:exclude-mapping path="/**/*.js"/>
+			<mvc:exclude-mapping path="/**/*signIn*"/>
+            <mvc:exclude-mapping path="/**/login"/>
+            <mvc:exclude-mapping path="/**/logout"/>
+            <mvc:exclude-mapping path="/**/img/**"/>
+			<bean class="com.uas.platform.b2bManage.web.filter.SSOInterceptor"></bean>
 		</mvc:interceptor>
 	</mvc:interceptors>
 

+ 0 - 165
src/main/webapp/resources/css/agreement.css

@@ -1,165 +0,0 @@
-/* sections */
-#agreement section {
-	padding: 20px 0;
-    background: rgb(255,255,255);
-    background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeefef', GradientType=0 );
-	font-family: '微软雅黑';
-}
-
-.section-title h2{
-	font-size: 36px;
-    margin-bottom: 20px;
-    color: #636b72;
-    font-family: '微软雅黑';
-}
-
-.section-title hr {
-	height: 4px;
-    width: 60px;
-    background: #19B5FE;
-    position: relative;
-    border: 0;
-    margin-top: 30px;
-    margin-bottom: 60px;
-}
-
-.iw_poi_title {
-	color: #CC5522;
-	font-size: 14px;
-	font-weight: bold;
-	overflow: hidden;
-	padding-right: 13px;
-	white-space: nowrap
-}
-
-/* main */
-.contact-title a {
-	color: #fff;
-	text-decoration: underline;
-	margin: 0 4px
-}
-
-.contact-content {
-	padding-left: 25px;
-}
-
-.contact-para {
-	padding: 30px 0;
-	border-bottom: 1px dashed #e8e8e8
-}
-
-.contact-para.first {
-	border: 0
-}
-
-.contact-para.last {
-	border: 0
-}
-
-.contact-para .para-title {
-	color: #666;
-	font-size: 24px;
-	line-height: 24px;
-	vertical-align: bottom
-}
-
-.contact-para .para-title span {
-	color: #bbb;
-	font-size: 12px
-}
-
-.contact-para .para-title em {
-	font-style: normal
-}
-
-.contact-para .para-content {
-	margin-top: 20px;
-	font-size: 0
-}
-
-.contact-para .para-content-left {
-	display: inline-block;
-	color: #00aeff;
-	font-size: 16px;
-	line-height: 16px;
-	padding-right: 4px;
-	vertical-align: top
-}
-
-.contact-para .para-content-left .box {
-	display: inline-block;
-	position: relative;
-	top: -2px;
-	height: 4px;
-	width: 4px;
-	margin-right: 10px;
-	background: #00aeff
-}
-
-.contact-para .para-content-right {
-	display: inline-block;
-	color: #666;
-	font-size: 16px;
-	line-height: 16px;
-	vertical-align: top
-}
-
-.contact-para .para-content-right div {
-	margin-bottom: 14px
-}
-
-.contact-para .para-content-right div.last {
-	margin-bottom: 0
-}
-
-.contact-para .para-content-right p {
-	font-size: 12px;
-	color: #bbb;
-	margin-bottom: 14px
-}
-
-#sidebar {
-	position: relative
-}
-
-.section p:last-child {
-	margin-bottom: 0;
-}
-
-/* agreement*/
-#itemModal {
-  padding: 15px 20px;
-  margin-bottom: 20px;
-  background: #f3f6fa;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 0px;
-  -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.5);
-  -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.5);
-  box-shadow: 0 1px 5px rgba(0, 0, 0, 0.5);
-}
-
-#modal-head {
-	padding: 20px 0;
-}
-
-#modal-head h1 {
-	font-size: 20px;
-	font-weight: bold;
-}
-
-#modal-body {
-	padding-bottom: 80px;
-}
-
-#modal-body h1 {
-	font-weight: bold;
-	font-size: 14px;
-}
-
-#modal-foot {
-		
-}

+ 0 - 187
src/main/webapp/resources/css/contact.css

@@ -1,187 +0,0 @@
-/* sections */
-section {
-	padding: 50px 0;
-    background: rgb(255,255,255);
-    background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeefef', GradientType=0 );
-	font-family: '微软雅黑';
-}
-
-.section-title h2{
-	font-size: 36px;
-    margin-bottom: 20px;
-    color: #636b72;
-    font-family: '微软雅黑';
-}
-
-.section-title hr {
-	height: 4px;
-    width: 60px;
-    background: #19B5FE;
-    position: relative;
-    border: 0;
-    margin-top: 30px;
-    margin-bottom: 60px;
-}
-
-.iw_poi_title {
-	color: #CC5522;
-	font-size: 14px;
-	font-weight: bold;
-	overflow: hidden;
-	padding-right: 13px;
-	white-space: nowrap
-}
-
-/* map */
-.iw_poi_content {
-	font: 12px arial, sans-serif;
-	overflow: visible;
-	padding-top: 4px;
-	white-space: -moz-pre-wrap;
-	word-wrap: break-word
-}
-
-.para-content #dituContent {
-	width: 950px;
-	height: 250px;
-	border: #ccc solid 1px;	
-}
-
-/* main */
-.contact-title a {
-	color: #fff;
-	text-decoration: underline;
-	margin: 0 4px
-}
-
-.contact-content {
-	padding-left: 25px;
-	/* 减小内容的上间距 */
-	margin-top: -20px;
-}
-
-.contact-para {
-	padding: 26px 0;
-	border-bottom: 1px dashed #e8e8e8
-}
-
-.contact-para.first {
-	border: 0
-}
-
-.contact-para.last {
-	border: 0
-}
-
-.contact-para .para-title {
-	color: #666;
-	font-size: 24px;
-	line-height: 24px;
-	vertical-align: bottom
-}
-
-.contact-para .para-title span {
-	color: #bbb;
-	font-size: 12px
-}
-
-.contact-para .para-title em {
-	font-style: normal
-}
-
-.contact-para .para-content {
-	margin-top: 20px;
-	font-size: 0
-}
-
-.contact-para .para-content-left {
-	display: inline-block;
-	color: #00aeff;
-	font-size: 16px;
-	line-height: 16px;
-	padding-right: 4px;
-	vertical-align: top
-}
-
-.contact-para .para-content-left .box {
-	display: inline-block;
-	position: relative;
-	top: -2px;
-	height: 4px;
-	width: 4px;
-	margin-right: 10px;
-	background: #00aeff
-}
-
-.contact-para .para-content-right {
-	display: inline-block;
-	color: #666;
-	font-size: 16px;
-	line-height: 16px;
-	vertical-align: top
-}
-
-.contact-para .para-content-right div {
-	margin-bottom: 14px
-}
-
-.contact-para .para-content-right div.last {
-	margin-bottom: 0
-}
-
-.contact-para .para-content-right p {
-	font-size: 12px;
-	color: #bbb;
-	margin-bottom: 14px
-}
-
-#sidebar {
-	position: relative
-}
-
-/* vertical-nav */
-#vertical-nav {
-	list-style: none;
-	margin: 0;
-}
-
-#vertical-nav li {
-	margin-bottom: 2px;
-}
-
-#vertical-nav a {
-	background: #ededed;
-	color: #666;
-	display: block;
-	font-size: 14px;
-	padding: 5px 10px;
-	text-decoration: none;
-	text-transform: uppercase;
-}
-
-#vertical-nav a:hover {
-	background: #dedede;
-}
-
-#vertical-nav .current a {
-	background: #666;
-	color: #ededed;
-}
-
-#section-main {
-	margin: 0 auto;
-	width: 1000px;
-}
-
-.section {
-	border-bottom: 5px solid #ccc;
-	min-height: 60vh;
-	padding: 50px 20px;
-}
-
-.section p:last-child {
-	margin-bottom: 0;
-}

+ 217 - 0
src/main/webapp/resources/css/enterprise.css

@@ -0,0 +1,217 @@
+/*nav begin*/
+div.navbar-nav{
+    position: relative;
+    height: 50px;
+    line-height: 50px;
+    font-size: 16px;
+    color: #fff;
+}
+div.navbar-nav span {
+    margin-left: 20px;
+}
+div.navbar-nav span:before{
+    content: '';
+    position: absolute;
+    top: 19px;
+    left: 0;
+    width: 1px;
+    height: 14px;
+    background: #dcdcdc;
+}
+.navbar-inverse .navbar-nav>li>a {
+    padding: 15px;
+    font-size: 14px;
+    color: #d3d3d3;
+}
+.navbar-inverse .navbar-nav>li>a.return{
+    font-size: 12px;
+}
+/*nav end*/
+
+/*section begin*/
+section {
+    margin: 0 auto;
+    width: 100%;
+}
+section .container{
+    margin: 0 auto;
+    width: 1140px;
+    text-align: center;
+}
+.section-title{
+    margin: 50px 0 25px;
+}
+.section-title h3{
+    font-size: 24px;
+    color: #1f1f1f;
+}
+.section-nav{
+    position: relative;
+    margin-bottom: 34px;
+}
+.section-nav span{
+    font-size: 16px;
+    color: #b5b5b5;
+    cursor: pointer;
+}
+.section-nav span:first-child{
+    margin-right: 56px;
+}
+.section-nav span:first-child:after{
+    position: absolute;
+    top: 4px;
+    right: 558px;
+    content: '';
+    width: 1px;
+    height: 16px;
+    background: #dcdcdc;
+}
+.section-nav span.active{
+    padding-bottom: 6px;
+    color: #e91c20;
+    border-bottom: 2px solid #f85659;
+}
+.section-choose .form-group {
+    margin: 0 auto;
+    position: relative;
+    margin-bottom: 12px;
+    width: 300px;
+}
+.section-choose .form-group input{
+    padding-left: 20px;
+    width: 300px;
+    height: 44px;
+    font-size: 16px;
+    color: #323232;
+    border-radius: 0;
+}
+.section-choose .form-group .btn{
+    margin-top: 17px;
+    width: 300px;
+    height: 44px;
+    line-height: 30px;
+    font-size: 16px;
+    color: #fff;
+    background: #f85659;
+    border-radius: 3px;
+}
+
+.section-choose .form-group a {
+    cursor: pointer;
+}
+
+.section-choose .form-group .reg{
+    margin-top: 17px;
+    line-height: 30px;
+    font-size: 14px;
+}
+
+.section-choose .form-group .forget{
+    margin-top: 17px;
+    line-height: 30px;
+    font-size: 14px;
+}
+
+.section-choose .form-group ul{
+    position: absolute;
+    top: 44px;
+    left: 30px;
+    padding-left: 0;
+    margin: 0 auto;
+    width: 440px;
+    /*height: 300px;*/
+    background: #fff;
+    overflow-y: auto;
+    text-align:  left;
+    box-shadow: 0 0 2px 5px rgba(220,220,220,0.5);
+    -moz-box-shadow:  0 0 2px 5px rgba(220,220,220,0.5);
+    -webkit-box-shadow:  0 0 2px 5px rgba(220,220,220,0.5);
+    -o-box-shadow: 0 0 2px 5px rgba(220,220,220,0.5);
+    z-index: 1000;
+}
+.section-choose .form-group ul li{
+    width: 100%;
+    height: 34px;
+    line-height: 34px;
+    list-style: none;
+    cursor: pointer;
+}
+.section-choose .form-group ul li:hover,.section-choose .form-group ul li.active{
+    background: #e5e5e5;
+}
+.section-choose .form-group ul li b{
+    padding-left: 26px;
+    font-size: 14px;
+    font-weight: normal;
+    color: #323232;
+}
+.section-choose .form-group ul li span{
+    font-size: 14px;
+    color: #b4b4b4;
+}
+.section-choose .form-group ul li span.phone{
+    margin: 0 20px;
+}
+/*点击切换*/
+.section-choose{
+    display: none;
+}
+.show{
+    display: block;
+}
+/*section end*/
+
+
+#toast-container {
+    margin: 0 auto;
+    text-align: center;
+    position: fixed;
+    top: 20px !important ;
+    left: 50%!important ;
+    margin-left: -10%!important ;
+    z-index: 999999;
+}
+#toast-container .toast-message {
+    font-size: 16px;
+    color: #fff;
+}
+
+.table {
+    /*border: ;*/
+}
+.section tr{
+    font-size: 20px;
+}
+
+tr:hover {
+    cursor: pointer;
+}
+.table-hover {
+    background-color: #ddd;
+}
+
+.input-group {
+    width: 400px;
+    height: 38px;
+    margin-bottom: 10px;
+    float: right;
+}
+
+.input-group input {
+    height: 38px;
+}
+
+.input-group .input-group-addon {
+    width: 80px;
+}
+
+#p_search:hover {
+    cursor: pointer;
+}
+#enterprise-head {
+    border: 2px solid #ddd;
+    background-color: #e6e6e6;
+}
+#m-page {
+    float: right;
+}

+ 89 - 0
src/main/webapp/resources/css/pagination.css

@@ -0,0 +1,89 @@
+@charset "UTF-8";
+.m-style {
+    position: relative;
+    text-align: center;
+    zoom: 1;
+}
+
+.m-style:before,
+.m-style:after {
+    content: "";
+    display: table;
+}
+
+.m-style:after {
+    clear: both;
+    overflow: hidden;
+}
+
+.m-style span {
+    float: left;
+    margin: 0 5px;
+    width: 38px;
+    height: 38px;
+    line-height: 38px;
+    color: #bdbdbd;
+    font-size: 14px;
+}
+
+.m-style .active {
+    float: left;
+    margin: 0 5px;
+    width: 38px;
+    height: 38px;
+    line-height: 38px;
+    background: #f85659;
+    color: #fff;
+    font-size: 14px;
+    border: 1px solid #f85659;
+}
+
+.m-style a {
+    float: left;
+    margin: 0 5px;
+    width: 38px;
+    height: 38px;
+    line-height: 38px;
+    background: #fff;
+    border: 1px solid #ebebeb;
+    color: #bdbdbd;
+    font-size: 14px;
+}
+
+.m-style a:hover {
+    color: #fff;
+    background: #f85659;
+    text-decoration: none;
+}
+
+.m-style .next,
+.m-style .prev {
+    font-family: "Simsun";
+    font-size: 16px;
+    font-weight: bold;
+}
+
+.now,
+.count {
+    padding: 0 5px;
+    color: #f00;
+}
+
+.eg img {
+    max-width: 800px;
+    min-height: 500px;
+}
+
+input {
+    float: left;
+    margin: 0 5px;
+    width: 38px;
+    height: 38px;
+    line-height: 38px;
+    text-align: center;
+    background: #fff;
+    border: 1px solid #ebebeb;
+    outline: none;
+    color: #bdbdbd;
+    font-size: 14px;
+}

+ 0 - 175
src/main/webapp/resources/css/saas_about.css

@@ -1,175 +0,0 @@
-/* header */
-header {
-	position: relative;
-    color: #ffffff;
-    font-family: '微软雅黑';
-    overflow: hidden;
-	height:685px;
-}
-
-.hd-content {
-	position: absolute;
-	bottom: 0;
-	left: 0;
-	right: 0;
-}
-
-.header-text {
-	padding: 10px 0;
-}
-
-.header-text h2 {
-	font-size: 50px;
-	font-weight: bold;
-	letter-spacing: .1em;
-	text-shadow: 3px 3px 3px #666666;
-	margin-bottom: 20px;
-}
-
-.header-text p {
-	font-size: 30px;
-	text-shadow: 3px 3px 3px #666666;
-}
-
-.btn-experience {
-	background: #f68820;
-	font-size: 20px;
-	font-weight: 600;
-	border-radius: 0;
-	color: #ffffff;
-	letter-spacing: 3px;
-	margin-bottom: 45px;
-}
-
-.btn-experience:HOVER, .btn-experience:VISITED, .btn-experience:FOCUS, .btn-experience:ACTIVE {
-	color: #ffffff;
-}
-
-.btn-experience:HOVER {
-	background: #f16321;
-	color: #ffffff;
-}
-
-.hd-content .uas-snapshot img{
-	position: relative;
-	width:100%;
-	animation: animation-upslide .5s linear
-}
-
-@keyframes animation-upslide{
-	0%{
-		top:200px;
-		opacity: .6;
-	}
-	100%{
-		top: 0;
-		opacity: 1;
-	}
-}
-
-
-/* main */
-
-/* sections */
-section {
-	padding: 80px 0;
-    background: rgb(255,255,255);
-    background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(238,239,239,1) 100%);
-    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeefef', GradientType=0 );
-	font-family: '微软雅黑';
-}
-
-.section-title h2{
-	font-size: 36px;
-    margin-bottom: 20px;
-    color: #636b72;
-    font-family: '微软雅黑';
-}
-
-.section-title hr {
-	height: 4px;
-    width: 60px;
-    background: #19B5FE;
-    position: relative;
-    border: 0;
-    margin-top: 30px;
-    margin-bottom: 60px;
-}
-
-/* service */
-.advantage .advantage-wrap {
-	width: 100%;
-}
-
-.advantage .advantage-wrap .advantage-item {
-	float: left;
-	position: relative;
-	padding-right: 10px;
-	margin-bottom: 10px;
-	overflow: hidden;
-	cursor: pointer;
-}
-
-.advantage .advantage-wrap .advantage-item img {
-	position: relative;
-	top: -5px;
-	width: 100%;
-	opacity: 0.7;
-	transition: all 0.5s ease;
-	-moz-transition: all 0.5s ease;	/* Firefox 4 */
-	-webkit-transition: all 0.5s ease;	/* Safari 和 Chrome */
-	-o-transition: all 0.5s ease;	/* Opera */
-}
-
-.advantage .advantage-wrap .advantage-item:HOVER img {
-	top: 0px;
-	opacity: 1;
-}
-
-.advantage .advantage-wrap .advantage-item .advantage-text {
-	position: absolute;
-	left: 0;
-	right: 10px;
-	top: 40%;
-	margin-top: -21px;
-	color: #ffffff;
-}
-
-.advantage-text h4 {
-	font-size: 20px;
-	line-height: 22px;
-	font-weight: 600;
-} 
-
-.advantage-text p {
-	font-size: 16px;
-	line-height: 20px;
-} 
-
-.advantage .advantage-wrap .advantage-item-1 {
-	width: 32%;
-	height: 480px;
-}
-
-.advantage .advantage-wrap .advantage-item-2, .advantage .advantage-wrap .advantage-item-4 {
-	width: 30%;
-	height: 235px;
-}
-
-.advantage .advantage-wrap .advantage-item-3, .advantage .advantage-wrap .advantage-item-5 {
-	width: 37%;
-	height: 235px;
-}
-
-.advantage .advantage-wrap .advantage-item-1 img {
-	height: 485px;
-}
-
-.advantage .advantage-wrap .advantage-item-2 img,
-.advantage .advantage-wrap .advantage-item-3 img,
-.advantage .advantage-wrap .advantage-item-4 img,
-.advantage .advantage-wrap .advantage-item-5 img {
-	height: 240px;
-}

+ 18 - 1
src/main/webapp/resources/css/setHrAccount.css

@@ -86,7 +86,7 @@ section .container{
 	border-radius: 0;
 }
 .section-choose .form-group .btn{
-	margin-top: 40px;
+	margin-top: 17px;
 	width: 300px;
 	height: 44px;
     line-height: 30px;
@@ -95,6 +95,23 @@ section .container{
 	background: #f85659;
 	border-radius: 3px;
 }
+
+.section-choose .form-group a {
+    cursor: pointer;
+}
+
+.section-choose .form-group .reg{
+	margin-top: 17px;
+	line-height: 30px;
+	font-size: 14px;
+}
+
+.section-choose .form-group .forget{
+	margin-top: 17px;
+	line-height: 30px;
+	font-size: 14px;
+}
+
 .section-choose .form-group ul{
 	position: absolute;
 	top: 44px;

+ 170 - 0
src/main/webapp/resources/js/account/enterprise.js

@@ -0,0 +1,170 @@
+/**
+ * 引入toaster方法
+ */
+document.write("<script language=javascript src='static/js/common/toastr.js'></script>");
+
+/**
+ * 引入分页
+ */
+document.write("<script language=javascript src='static/lib/jquery/jquery.pagination.js'></script>");
+
+var enterpriseList = [];
+
+/**
+ * 获取企业列表
+ */
+function getEnterpriseList(count, page, keyword) {
+    enterpriseList = [];
+    $.get('enterprise/list', {
+        count: count,
+        page: page,
+        keyword: keyword
+    }, function (data) {
+        enterpriseList = data.content;
+        var pageNumber = data.number;
+        var pageSzie = data.size;
+        var total = data.totalElements;
+        var totalPage = data.totalPages;
+        var tbody = document.getElementById("enterprise-body");
+        var page = document.getElementById("page");
+        //noinspection JSAnnotator
+        $('#enterprise-total').val('共 ' + total + ' 条');
+        if (enterpriseList.length > 0) {
+            for (var i = 0; i < enterpriseList.length; i++) {
+                var trow = getDataRow(enterpriseList[i], i); //定义一个方法,返回tr数据
+                tbody.appendChild(trow);
+                (function(i) {
+                    $("#link_b2b_" + i ).click(function(url) {
+                        window.open('enterprise/authed/redirect/' + enterpriseList[i].uu + (url ? ('?url=' + encodeURI(url)) : ''));
+                    });
+                })(i)
+            }
+            $('#m-page').pagination({
+                pageCount: totalPage,
+                totalData: total,
+                current: pageNumber,
+                showData: pageSzie,
+                coping: true,
+                homePage: '首页',
+                endPage: '末页',
+                prevContent: '<<',
+                nextContent: '>>',
+                jump: true,
+                jumpBtn: '跳转',
+                callback: function (api) {
+                    $('.now').text(api.getCurrent());
+                    $("#enterprise-body").load(location.href + " #enterprise-body");
+                    getEnterpriseList(count, api.getCurrent(), $('#keyword').val());
+                },
+            }, function (api) {
+                $('.now').text(api.getCurrent());
+            });
+
+            // 点击搜索
+            $('#p_search').unbind('click').click(function () {// 每次先解除上次绑定的事件,防止重复发送请求
+                $("#enterprise-body").load(location.href + " #enterprise-body");
+                getEnterpriseList(count, 1, $('#keyword').val());
+            });
+
+            // 键盘确认按钮搜索
+            document.onkeydown = function(event) {
+                var e = event || window.event;
+                if (e && e.keyCode == 13) { // enter 键
+                    $("#enterprise-body").load(location.href + " #enterprise-body");
+                    getEnterpriseList(count, 1, $('#keyword').val());
+                }
+            };
+        }
+    })
+}
+
+/**
+ * 建立表格数据
+ *
+ * @param en 企业信息
+ * @param i 行号
+ * @returns {Element}
+ */
+function getDataRow(en, i) {
+    var row = document.createElement('tr'); //创建行
+    row.id = "link_b2b_" + i;
+    row.class = "redirect_b2b";
+
+    var indexCell = document.createElement('td'); //序号
+    indexCell.setAttribute("class", "text-center");
+    indexCell.innerHTML = i + 1; //填充数据
+    row.appendChild(indexCell);
+
+    var uuCell = document.createElement('td'); //UU
+    uuCell.setAttribute("class", "text-center");
+    uuCell.innerHTML = en.uu; //填充数据
+    row.appendChild(uuCell);
+
+    var nameCell = document.createElement('td'); //企业名称
+    nameCell.setAttribute("class", "text-center");
+    nameCell.innerHTML = en.enName; //填充数据
+    row.appendChild(nameCell);
+
+    var addressCell = document.createElement('td'); //企业地址
+    addressCell.setAttribute("class", "text-center");
+    if (en.enAddress != null) {
+        addressCell.innerHTML = en.enAddress; //填充数据
+    } else {
+        addressCell.innerHTML = '-';
+    }
+    row.appendChild(addressCell);
+
+    var busiCodeCell = document.createElement('td'); //营业执照
+    busiCodeCell.setAttribute("class", "text-center");
+    busiCodeCell.innerHTML = en.enBussinessCode; //填充数据
+    row.appendChild(busiCodeCell);
+
+    var dateCell = document.createElement('td'); //注册日期
+    dateCell.setAttribute("class", "text-center");
+    if (en.enDate != null) {
+        dateCell.innerHTML = formatDateTime(en.enDate); //填充数据
+    } else {
+        dateCell.innerHTML = '-';
+    }
+    row.appendChild(dateCell);
+    return row;
+}
+
+/**
+ * 时间转换
+ *
+ * @param inputTime
+ * @returns {string}
+ */
+function formatDateTime(inputTime) {
+    var date = new Date(inputTime);
+    var y = date.getFullYear();
+    var m = date.getMonth() + 1;
+    m = m < 10 ? ('0' + m) : m;
+    var d = date.getDate();
+    d = d < 10 ? ('0' + d) : d;
+    var h = date.getHours();
+    h = h < 10 ? ('0' + h) : h;
+    var minute = date.getMinutes();
+    var second = date.getSeconds();
+    minute = minute < 10 ? ('0' + minute) : minute;
+    second = second < 10 ? ('0' + second) : second;
+    return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;
+};
+
+$(function() {
+    'use strict';
+
+    // 监听页面滚动
+    $(window).scroll(function() {
+        if($(window).scrollTop() >= 400) {
+            $('#nav').addClass('on');
+        } else {
+            $('#nav').removeClass('on');
+        }
+    });
+
+    // 设置分页大小
+    var count = 20;
+    getEnterpriseList(count, 1, null);
+});

+ 48 - 0
src/main/webapp/resources/js/account/signIn.js

@@ -0,0 +1,48 @@
+/**
+ * 引入toaster方法
+ */
+document.write("<script language=javascript src='static/js/common/toastr.js'></script>");
+
+// 登录点击
+function login() {
+    var userName = $('#p_username').val();
+    var passWord = $('#p_pwd').val();
+    if (null == userName || null == passWord) {
+        toastr.error('账号或密码不能为空');
+    }
+    var user = {userName: userName, passWord: passWord};
+    $.ajax('login', {
+        data: user,
+        method: 'POST',
+        async: false,
+        success: function() {
+            window.location.href = "/enterprise";
+        },
+        error: function (error) {
+            alert('账号或密码错误');
+        }
+    });
+}
+
+// 键盘确认按钮
+document.onkeydown = function(event) {
+    var e = event || window.event;
+    if (e && e.keyCode == 13) { // enter 键
+        login();
+    }
+};
+
+$(function() {
+    'use strict';
+
+    // 监听页面滚动
+    $(window).scroll(function() {
+        if($(window).scrollTop() >= 400) {
+            $('#nav').addClass('on');
+        } else {
+            $('#nav').removeClass('on');
+        }
+    });
+
+    $('#link-login').click(login);
+});

+ 8 - 531
src/main/webapp/resources/js/common/common.js

@@ -1,24 +1,3 @@
-function isLogin() {
-	return window._hasAccountInfo;
-}
-
-/**
- * 引入piwik脚本,详情见http://piwik.ubtob.com
- */
-function piwik() {
-    var _paq = _paq || [];
-    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
-    _paq.push(['trackPageView']);
-    _paq.push(['enableLinkTracking']);
-    (function() {
-        var u="//piwik.ubtob.com/";
-        _paq.push(['setTrackerUrl', u+'piwik.php']);
-        _paq.push(['setSiteId', '2']);
-        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
-        g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
-    })();
-}; piwik();
-
 /**
  * 引入toaster方法
  */
@@ -28,389 +7,26 @@ document.write("<script language=javascript src='static/js/common/toastr.js'></s
  *  获取用户信息
  */
 function getAccountInfo() {
-	$.get('/account', function(data){
+	$.get('/account', function(data) {
 		if (data.content) {
             window.loginInfo = data;
 			$('.x-nologin').hide();
 			$('.x-login').show();
 
-			if(null != data.content.spaceName) {
-                $('.x-login').find('.title').text(data.content.name + ',' + data.content.spaceName);
-            } else {
-                $('.x-login').find('.title').text(data.content.name);
-            }
-			window._hasAccountInfo = true;
-			var user = data.content;
-			if(null != data.space) {
-                // 管理员
-                if(user.uid == data.space.adminTel) {
-                    // 如果是hr
-                    if(user.hr == 1) {
-                        $('.link-job-get').show();
-                        $('.link-hr-set').hide();
-                    } else {
-                        $('.link-hr-set').show();
-                        $('.link-job-get').hide();
-                    }
-                } else {// 非管理员
-                    $('.link-job-get').show();
-                    $('.link-hr-set').hide();
-                    var location = window.location.pathname;
-                    if(location.indexOf('setHrAccount') > -1) {// 如果是在设置hr页面,非管理员跳转到首页
-                        window.location.href = 'http://www.ubtob.com/#/uuzcJob';
-                    }
-                }
-            }
-		} else {
-		    var location = window.location.pathname;
-		    if(location.indexOf('setHrAccount') > -1) {// 如果是在设置hr页面,没有登录的话跳转到登录页面
-               login(event);
-            }
-        }
-	});
-}
-
-/**
- * 登录
- * @param event
- */
-function login(event) {
-	event.preventDefault();
-	$.get('account/login', function(data) {
-		data.content && (window.location.href = data.content);
-	});
-}
-
-/**
- * 退出
- */
-function logout() {
-	$.get('account/logout', function(data) {
-		if(data.success) {
-			logoutUuzc();
-            logoutUuzcJob();
-            logoutMall();
-			setTimeout("window.location.reload()", 200);
-		}
-	});
-}
-
-function logoutMall() {
-    var url = 'https://www.usoftmall.com/logout';
-    $.ajax(url, {
-        dataType: 'jsonp',
-        crossDomain: true,
-        success: function(data) {
-            if(data && data.resultcode == '200'){
-                console.log(data.result.today);
-            }
-        }
-    });
-}
-
-/**
- * 通知众创登出
- */
-function logoutUuzc() {
-	var url = 'http://login.uuzcc.com/index/ubtob/logout';
-	$.ajax(url, {
-		dataType: 'jsonp',
-		crossDomain: true,
-		success: function(data) {
-			if(data && data.resultcode == '200'){
-				console.log(data.result.today);
-			}
+            $('.x-login').find('.title').text(data.content.name);
 		}
 	});
 }
 
 /**
- * 通知众创人才招聘退出
- */
-function logoutUuzcJob() {
-    var url = 'https://job.uuzcc.com/index.php?m=&c=ubtob&a=logout';
-    $.ajax(url, {
-        dataType: 'jsonp',
-        crossDomain: true,
-        success: function(data) {
-            if(data && data.resultcode == '200'){
-                console.log(data.result.today);
-            }
-        }
-    });
-}
-
-
-/**
- * 点击顶部导航栏跳转到人才招聘
- */
-function jobUuzc() {
-    var url = 'https://job.uuzcc.com/';
-    var loginUrl = 'https://job.uuzcc.com/index.php?m=&c=ubtob&a=login';
-    if (!window.loginInfo) {
-        // 未登录,跳转人才招聘首页
-        window.location.href = url;
-    }
-
-    if (!window.loginInfo.space) {
-        // 个人账号也跳转人才招聘首页
-        loginJobUuzc(window.loginInfo.content.userUU, loginUrl);
-        setTimeout(window.location.href = url, 200);
-    }
-
-    $.get("https://job.uuzcc.com/index.php?m=&c=ubtob&a=check_space_uu", {
-        "spaceUU": window.loginInfo.space.spaceUU
-    }, function (data) {
-        // 企业有HR则跳转人才招聘
-        if (data.data.code == 1) {
-            loginJobUuzc(window.loginInfo.content.userUU, loginUrl);
-            setTimeout(window.location.href = url, 200);
-        }
-    })
-    // // 判断当前登录账号是否已注册
-    // $.get("https://job.uuzcc.com/index.php", {
-    //     "c": "ubtob",
-    //     "a": "check_user",
-    //     "uc_uid": window.loginInfo.content.userUU
-    // }, function (data) {
-    //     if (data.data && data.data.code == 0 && window.loginInfo.space) {
-    //         // 在人才招聘未注册并且为企业账号,则判断是否有hr
-    //         $.get("https://job.uuzcc.com/index.php", {
-    //             "c": "ubtob",
-    //             "a": "company_hr",
-    //             "company_name": window.loginInfo.space.spaceName
-    //         }, function (data) {
-    //             if (data.data.code == 1) {
-    //                 // 有hr则跳转人才招聘登录
-    //                 loginJobUuzc(window.loginInfo.content.userUU, loginUrl);
-    //                 setTimeout(window.location.href = url, 200);
-    //             } else if (window.loginInfo.content.userUU == window.loginInfo.space.adminUU) {
-    //                 // 管理员则不操作
-    //                 return;
-    //             }
-    //         })
-    //     } else {
-    //         // 否则跳转人才招聘登录
-    //         loginJobUuzc(window.loginInfo.content.userUU, loginUrl);
-    //         setTimeout(window.location.href = url, 200);
-    //     }
-    //
-    // })
-}
-
-/**
- * 存储hrInfo,不用重新加载
- *
- * @type {null}
- */
-var hrInfo = null;
-
-function getHrInfo() {
-    if(hrInfo == null) {
-        $.get('uuzc/hrInfo', function(userInfo) {
-            if(null != userInfo.user) {
-                hrInfo = userInfo.user;
-                // 默认给相关字段赋值
-                $('#hrname').val(hrInfo.name);
-                $('#hremail').val(hrInfo.secondUID);
-                $('#hrtel').val(hrInfo.uid);
-                $('#username').val(hrInfo.name);
-                $('#usertel').val(hrInfo.uid);
-                $('#useruu').val(hrInfo.dialectUID);
-                $('#useremail').val(hrInfo.secondUID);
-                $('#userList').css('display','none');
-            }
-        });
-    }
-}
-
-/**
- * 链接到优软众创人才招聘(招聘入口)
- */
-function jobUuzcGet() {
-    var url = 'https://job.uuzcc.com/';
-    var loginUrl = 'https://job.uuzcc.com/index.php?m=&c=ubtob&a=login';
-    if (!window.loginInfo) {
-        // 未登录,跳转登录页面
-        $.get('/uuzc/account/check', function(data) {
-            data.content && (window.location.href = data.content);
-        })
-    }
-
-    if (!window.loginInfo.space) {
-        // 个人账号
-        toastr.error("您的账号为个人账号,不可进行此操作");
-    }
-
-    $.get("https://job.uuzcc.com/index.php?m=&c=ubtob&a=check_space_uu", {
-        "spaceUU": window.loginInfo.space.spaceUU
-    }, function (data) {
-        // 企业有HR则跳转人才招聘
-        if (data.data.code == 1) {
-            // 企业有hr
-            // TODO 判断是否为当前用户是否为本企业hr
-            if (false) {
-                toastr.error("您的账号为非HR账号,不可进行此操作");
-            } else {
-                loginJobUuzc(window.loginInfo.content.userUU, loginUrl);
-                setTimeout(window.location.href = url, 200);
-            }
-        } else if (window.loginInfo.content.userUU == window.loginInfo.space.adminUU) {
-            // 是管理员则跳转设置HR页面
-            window.location.href = window.location.origin + window.location.pathname + "setHrAccount";
-        } else {
-            // 提示通知管理员设置HR
-            toastr.error('请通知管理员' + window.loginInfo.space.admin.vipName + '设置HR账号');
-        }
-    })
-    //
-    // $.get("https://job.uuzcc.com/index.php", {
-    //     "c": "ubtob",
-    //     "a": "check_user",
-    //     "uc_uid": window.loginInfo.content.userUU
-    // }, function (data) {
-    //     switch (data.data.code) {
-    //         case 0:
-    //             $.get("https://job.uuzcc.com/index.php?c=ubtob&a=company_hr", {
-    //                 "company_name": window.loginInfo.space.spaceName
-    //             }, function (data) {
-    //                 if (data.data.code == 1) {
-    //                     toastr.error("您的账号为非HR账号,不可进行此操作");
-    //                 } else if (window.loginInfo.content.userUU == window.loginInfo.space.adminUU) {
-    //                     // 管理员账号,跳转设置HR页面
-    //                     window.location.href = window.location.origin + window.location.pathname + "setHrAccount";
-    //                 } else {
-    //                     toastr.error('请通知管理员' + window.loginInfo.space.admin.vipName + '设置HR账号');
-    //                 }
-    //             })
-    //             break;
-    //         case 1:
-    //             toastr.error("您的账号为非HR账号,不可进行此操作");
-    //             break;
-    //         case 2:
-    //             loginJobUuzc(window.loginInfo.content.userUU, loginUrl);
-    //             setTimeout(window.location.href = url, 200);
-    //             break;
-    //         default:
-    //             break;
-    //     }
-    // });
-}
-
-/**
- * 人才招聘求职入口
- */
-function jobUuzcPost() {
-    var url = 'https://job.uuzcc.com/';
-    var loginUrl = 'https://job.uuzcc.com/index.php?m=&c=ubtob&a=login';
-    if(window.loginInfo) {
-        $.get("https://job.uuzcc.com/index.php", {
-            "c": "ubtob",
-            "a": "check_user",
-            "uc_uid": window.loginInfo.content.userUU
-        }, function (data) {
-            if (data.data.code == 1) {
-                toastr.error('您的账号为HR账号,不能进行此操作');
-            } else {
-                loginJobUuzc(window.loginInfo.content.userUU, loginUrl);
-                setTimeout(window.location.href = url, 200);
-            }
-        });
-    } else {// 求职时可以未登录
-       window.location.href = url;
-    }
-}
-
-/**
- * 通知众创人才招聘登录
- * @param user
- * @param userLoginUrl
- */
-function loginJobUuzc(uc_uid, url) {
-    $('#J_commenting').attr("action", url);
-    $('#uc_uid').val(uc_uid);
-    $('#J_commenting').submit();
-}
-
-/**
- * 添加hr账号
- */
-function addHrAccount() {
-    var user = {
-        username: $('#hrname').val(),
-        password: null,
-        email: $('#hremail').val(),
-        mobile: $('#hrtel').val(),
-        uc_uid: '',
-        salt: null,
-        companyname: window.loginInfo.space.spaceName,
-        contact: $('#hrname').val(),
-        telephone: $('#hrtel').val(),
-        landline_tel: null,
-        license: window.loginInfo.space.businessCode,
-        spaceUU: window.loginInfo.space.spaceUU,
-        registered: null,
-        currency: null,
-        website: null
-    };
-    $.ajax({
-        url: 'uuzc/setHrAccount',
-        data: user,
-        method: 'POST',
-        async: false,
-        success: function(data) {
-           if(data.success) {
-               var result = data.content;
-               user.uc_uid = result.userUU;
-               user.password = result.userUU;
-               uuzcSetHr(user);
-           }
-        },
-        error: function (error) {
-            toastr.error(error);
-        }
-    });
-}
-
-/**
- * 设置hr账号
+ * 退出登录
  */
-function setHrAccount() {
-    var user = {
-        username: $('#username').val(),
-        password: $('#useruu').val(),
-        email: $('#useremail').val(),
-        mobile: $('#usertel').val(),
-        uc_uid: $('#useruu').val(),
-        salt: null,
-        companyname: window.loginInfo.space.spaceName,
-        contact: $('#username').val(),
-        telephone: $('#usertel').val(),
-        landline_tel: null,
-        license: window.loginInfo.space.businessCode,
-        spaceUU: window.loginInfo.space.spaceUU,
-        registered: null,
-        currency: null,
-        website: null
-    };
-    uuzcSetHr(user);
-}
-
-function uuzcSetHr(user) {
-    $.ajax({
-        url: 'https://job.uuzcc.com/index.php?m=&c=ubtob&a=reg_hr',
-        data: user,
+function Logout() {
+    $.ajax('logout', {
         method: 'POST',
         async: false,
-        success: function(data) {
-            if(data) {
-                if (!data.code || data.code == 0) {
-                    // 设置失败
-                    toastr.error(data.msg);
-                } else {
-                    toastr.info("hr设置成功");
-                }
-            }
+        success: function() {
+            window.location.href = "/signIn";
         },
         error: function (error) {
             toastr.error(error);
@@ -418,114 +34,6 @@ function uuzcSetHr(user) {
     });
 }
 
-/**
- * 获取的用户信息存放,全局调用,不用多次发生请求
- *
- * @type {Array}
- */
-var users = [];
-
-/**
- * 获取当前企业已存在的用户的信息
- */
-function getExistUser() {
-    if(users.length == 0) {
-        $.ajax('uuzc/existusers', {
-            dataType: 'json',
-            method: 'GET',
-            async: false,
-            success: function(data) {
-                users = data.content;
-                if(users.length == 0) {
-                    $('#userList').css('display','none');
-                }
-                var ul = document.getElementById("userList");
-                for(var i = 0; i < users.length; i++) {
-                    var li = document.createElement('li');
-                    var b = document.createElement('b');
-                    b.innerHTML = users[i].vipName;
-                    li.appendChild(b);
-                    var span = document.createElement('span');
-                    span.class = "phone"
-                    span.innerHTML = users[i].mobile;
-                    li.appendChild(span);
-                    var span2 = document.createElement('span');
-                    span2.innerHTML = users[i].email;
-                    li.appendChild(span2);
-                    li.id = 'btn_' + i;
-                    ul.appendChild(li);
-                    (function(i) {
-                        $("#btn_" + i ).click(function() {
-                            setAccount(users[i]);
-                            $('#userList').css('display','none');
-                        });
-                    })(i)
-                }
-            }
-        });
-    }
-}
-
-
-/**
- * 选择现有的人员赋值
- *
- * @param user
- */
-function setAccount(user) {
-    $('#username').val(user.vipName);
-    $('#useremail').val(user.email);
-    $('#usertel').val(user.mobile);
-    $('#useruu').val(user.userUU);
-}
-
-/**
- * 相关提示信息
- */
-function suspendMessage() {
-    toastr.error('网站正在升级中,敬请期待!');
-}
-
-/**
- * 监听输入框值的变化设置联想
- */
-$('#username').bind('input propertychange', function() {
-    var nameList = [];
-    $("#userList").find("li").remove();// 先清除以前的样式
-    for(var i = 0; i < users.length; i++) {
-        if(users[i].name.indexOf($('#username').val()) > -1) {
-            nameList.push(users[i]);
-        }
-    }
-    if(nameList.length == 0) {
-        $('#userList').css('display','none');
-    } else {
-        $('#userList').css('display','show');
-    }
-    var ul = document.getElementById("userList");
-    for(var i = 0; i < nameList.length; i++) {
-        var li = document.createElement('li');
-        var b = document.createElement('b');
-        b.innerHTML = nameList[i].name;
-        li.appendChild(b);
-        var span = document.createElement('span');
-        span.class = "phone"
-        span.innerHTML = nameList[i].uid;
-        li.appendChild(span);
-        var span2 = document.createElement('span');
-        span2.innerHTML = nameList[i].secondUID;
-        li.appendChild(span2);
-        li.id = 'btn_' + i;
-        ul.appendChild(li);
-        (function(i) {
-            $("#btn_" + i ).click(function() {
-                setAccount(nameList[i]);
-                $('#userList').css('display','none');
-            });
-        })(i)
-    }
-});
-
 $(function() {
 	'use strict';
 	
@@ -541,36 +49,5 @@ $(function() {
 	// 查询登录信息
 	getAccountInfo();
 
-	// 获取当前企业HR信息
-    getHrInfo();
-	
-	// 登录点击
-	$('.link-login').click(login);
-	
-	// 退出点击
-	$('.link-logout').click(logout);
-
-	// 点击链接到众创人才招聘(招聘)
-    $('.link-job-get').click(jobUuzcGet);
-
-    // 连接到众创招聘
-    $('.link-job').click(jobUuzc);
-
-    // 点击链接到众创人才招聘(求职)
-    $('.link-job-post').click(jobUuzcPost);
-
-    // 点击链接到众创人才招聘(设置hr)
-    $('.link-hr-set').click(jobUuzcGet);
-
-    // 添加hr账号(新增)
-    $('#addHrAccount').click(addHrAccount);
-
-    // 添加hr账户(现有)
-    $('#setHrAccount').click(setHrAccount);
-
-    // 获取当前企业用户信息
-    $('#existUsers').click(getExistUser);
-
-    // 点击众创链接给出提示
-    $('.x-link-info').click(suspendMessage);
+	$('.link-logout').click(Logout);
 });

+ 0 - 308
src/main/webapp/resources/js/contact/app.js

@@ -1,308 +0,0 @@
-$(function() {
-	'use strict';
-	
-	//创建和初始化地图函数:
-	function initMap(){
-	    createMap();//创建地图
-	    setMapEvent();//设置地图事件
-	    addMapControl();//向地图添加控件
-	    addMarker();//向地图中添加marker
-	}
-
-	//创建地图函数:
-	function createMap(){
-	    var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图
-	    var point = new BMap.Point(113.953184,22.540662);//定义一个中心点坐标
-	    map.centerAndZoom(point,18);//设定地图的中心点和坐标并将地图显示在地图容器中
-	    window.map = map;//将map变量存储在全局
-	}
-
-	//地图事件设置函数:
-	function setMapEvent(){
-	    map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
-	    map.enableScrollWheelZoom();//启用地图滚轮放大缩小
-	    map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
-	    map.enableKeyboard();//启用键盘上下左右键移动地图
-	}
-
-	//地图控件添加函数:
-	function addMapControl(){
-	    //向地图中添加缩放控件
-	    var ctrl_nav = new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_LEFT,type:BMAP_NAVIGATION_CONTROL_LARGE});
-	    map.addControl(ctrl_nav);
-//	    //向地图中添加缩略图控件
-//	    var ctrl_ove = new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});
-//	    map.addControl(ctrl_ove);
-//	    //向地图中添加比例尺控件
-//	    var ctrl_sca = new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});
-//	    map.addControl(ctrl_sca);
-	}
-
-	//标注点数组
-	var markerArr = [{title:"优软科技",content:"深圳市南山区高新技术产业园科技南5路英唐大厦6楼",point:"113.953126|22.540737",isOpen:0,icon:{w:21,h:21,l:0,t:0,x:6,lb:5}}
-	];
-	//创建marker
-	function addMarker(){
-	    for(var i=0;i<markerArr.length;i++){
-	        var json = markerArr[i];
-	        var p0 = json.point.split("|")[0];
-	        var p1 = json.point.split("|")[1];
-	        var point = new BMap.Point(p0,p1);
-	        var iconImg = createIcon(json.icon);
-	        var marker = new BMap.Marker(point,{icon:iconImg});
-	        var iw = createInfoWindow(i);
-	        var label = new BMap.Label(json.title,{"offset":new BMap.Size(json.icon.lb-json.icon.x+10,-20)});
-	        marker.setLabel(label);
-	        map.addOverlay(marker);
-	        label.setStyle({
-	            borderColor:"#808080",
-	            color:"#333",
-	            cursor:"pointer"
-	        });
-
-	        (function(){
-	            var index = i;
-	            var _iw = createInfoWindow(i);
-	            var _marker = marker;
-	            _marker.addEventListener("click",function(){
-	                this.openInfoWindow(_iw);
-	            });
-	            _iw.addEventListener("open",function(){
-	                _marker.getLabel().hide();
-	            })
-	            _iw.addEventListener("close",function(){
-	                _marker.getLabel().show();
-	            })
-	            label.addEventListener("click",function(){
-	                _marker.openInfoWindow(_iw);
-	            })
-	            if(!!json.isOpen){
-	                label.hide();
-	                _marker.openInfoWindow(_iw);
-	            }
-	        })()
-	    }
-	}
-	//创建InfoWindow
-	function createInfoWindow(i){
-	    var json = markerArr[i];
-	    var iw = new BMap.InfoWindow("<b class='iw_poi_title' title='" + json.title + "'>" + json.title + "</b><div class='iw_poi_content'>"+json.content+"</div>");
-	    return iw;
-	}
-	//创建一个Icon
-	function createIcon(json){
-	    var icon = new BMap.Icon("http://app.baidu.com/map/images/us_mk_icon.png", new BMap.Size(json.w,json.h),{imageOffset: new BMap.Size(-json.l,-json.t),infoWindowOffset:new BMap.Size(json.lb+5,1),offset:new BMap.Size(json.x,json.h)})
-	    return icon;
-	}
-
-	initMap();//创建和初始化地图
-	
-	
-	//竖导航栏
-	$(function(){
-		$('#vertical-nav').onePageNav();
-	});
-	(function($, window, document, undefined) {
-
-		// our plugin constructor
-		var OnePageNav = function(elem, options) {
-			this.elem = elem;
-			this.$elem = $(elem);
-			this.options = options;
-			this.metadata = this.$elem.data('plugin-options');
-			this.$win = $(window);
-			this.sections = {};
-			this.didScroll = false;
-			this.$doc = $(document);
-			this.docHeight = this.$doc.height();
-		};
-
-		// the plugin prototype
-		OnePageNav.prototype = {
-			defaults: {
-				navItems: 'a',
-				currentClass: 'current',
-				changeHash: false,
-				easing: 'swing',
-				filter: '',
-				scrollSpeed: 750,
-				scrollThreshold: 0.5,
-				begin: false,
-				end: false,
-				scrollChange: false
-			},
-
-			init: function() {
-				// Introduce defaults that can be extended either
-				// globally or using an object literal.
-				this.config = $.extend({}, this.defaults, this.options, this.metadata);
-
-				this.$nav = this.$elem.find(this.config.navItems);
-
-				//Filter any links out of the nav
-				if(this.config.filter !== '') {
-					this.$nav = this.$nav.filter(this.config.filter);
-				}
-
-				//Handle clicks on the nav
-				this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this));
-
-				//Get the section positions
-				this.getPositions();
-
-				//Handle scroll changes
-				this.bindInterval();
-
-				//Update the positions on resize too
-				this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this));
-
-				return this;
-			},
-
-			adjustNav: function(self, $parent) {
-				self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass);
-				$parent.addClass(self.config.currentClass);
-			},
-
-			bindInterval: function() {
-				var self = this;
-				var docHeight;
-
-				self.$win.on('scroll.onePageNav', function() {
-					self.didScroll = true;
-				});
-
-				self.t = setInterval(function() {
-					docHeight = self.$doc.height();
-
-					//If it was scrolled
-					if(self.didScroll) {
-						self.didScroll = false;
-						self.scrollChange();
-					}
-
-					//If the document height changes
-					if(docHeight !== self.docHeight) {
-						self.docHeight = docHeight;
-						self.getPositions();
-					}
-				}, 250);
-			},
-
-			getHash: function($link) {
-				return $link.attr('href').split('#')[1];
-			},
-
-			getPositions: function() {
-				var self = this;
-				var linkHref;
-				var topPos;
-				var $target;
-
-				self.$nav.each(function() {
-					linkHref = self.getHash($(this));
-					$target = $('#' + linkHref);
-
-					if($target.length) {
-						topPos = $target.offset().top;
-						self.sections[linkHref] = Math.round(topPos);
-					}
-				});
-			},
-
-			getSection: function(windowPos) {
-				var returnValue = null;
-				var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold);
-
-				for(var section in this.sections) {
-					if((this.sections[section] - windowHeight) < windowPos) {
-						returnValue = section;
-					}
-				}
-
-				return returnValue;
-			},
-
-			handleClick: function(e) {
-				var self = this;
-				var $link = $(e.currentTarget);
-				var $parent = $link.parent();
-				var newLoc = '#' + self.getHash($link);
-
-				if(!$parent.hasClass(self.config.currentClass)) {
-					//Start callback
-					if(self.config.begin) {
-						self.config.begin();
-					}
-
-					//Change the highlighted nav item
-					self.adjustNav(self, $parent);
-
-					//Removing the auto-adjust on scroll
-					self.unbindInterval();
-
-					//Scroll to the correct position
-					self.scrollTo(newLoc, function() {
-						//Do we need to change the hash?
-						if(self.config.changeHash) {
-							window.location.hash = newLoc;
-						}
-
-						//Add the auto-adjust on scroll back in
-						self.bindInterval();
-
-						//End callback
-						if(self.config.end) {
-							self.config.end();
-						}
-					});
-				}
-
-				e.preventDefault();
-			},
-
-			scrollChange: function() {
-				var windowTop = this.$win.scrollTop();
-				var position = this.getSection(windowTop);
-				var $parent;
-
-				//If the position is set
-				if(position !== null) {
-					$parent = this.$elem.find('a[href$="#' + position + '"]').parent();
-
-					//If it's not already the current section
-					if(!$parent.hasClass(this.config.currentClass)) {
-						//Change the highlighted nav item
-						this.adjustNav(this, $parent);
-
-						//If there is a scrollChange callback
-						if(this.config.scrollChange) {
-							this.config.scrollChange($parent);
-						}
-					}
-				}
-			},
-
-			scrollTo: function(target, callback) {
-				var offset = $(target).offset().top;
-
-				$('html, body').animate({
-					scrollTop: offset
-				}, this.config.scrollSpeed, this.config.easing, callback);
-			},
-
-			unbindInterval: function() {
-				clearInterval(this.t);
-				this.$win.unbind('scroll.onePageNav');
-			}
-		};
-
-		OnePageNav.defaults = OnePageNav.prototype.defaults;
-
-		$.fn.onePageNav = function(options) {
-			return this.each(function() {
-				new OnePageNav(this, options).init();
-			});
-		};
-	})( jQuery, window , document );
-});

+ 0 - 59
src/main/webapp/resources/js/finance/base.js

@@ -1,59 +0,0 @@
-$(function(){
-    $("#applyLoan").click(function () {
-        $('#applyModal').modal('toggle');
-        $("#loanAmount").val('');
-    })
-
-    $("#loanSubmit").click(function () {
-        var product = $("#applyLoan").siblings('h2').text();
-        var loanName = $("#loanName").val();//姓名
-        var loanTelphone = $("#loanTelphone").val();//手机号
-        var loanCommpanyName = $("#loanCommpanyName").val();//公司名
-        var loanAmount = $("#loanAmount").val();//借款金额
-        var check = $("#check").is(":checked");//是否同意查询银行记录
-        var flag = false;
-        var message = "";
-        if (loanCommpanyName == '') {
-            message = '企业全称不能为空'
-        } else if (loanAmount == '') {
-            message = '借贷金额不能为空';
-        } else if (loanName == '') {
-            message = "联系人不能为空";
-        } else if (loanTelphone == '') {
-            message = "联系方式不能为空!";
-        } else if (loanTelphone.length != 11) {
-            message = "请输入有效的手机号码!";
-        } else if (check != true) {
-            message = '请同意查询人民银行征信记录';
-        } else {
-            flag = true;
-        }
-        if (!flag) {
-            alert(message);
-        } else {
-            var jsonStr = {
-                product: product,
-                name: loanName,
-                telphone: loanTelphone,
-                companyName: loanCommpanyName,
-                amount: loanAmount
-            }
-            $.ajax({
-                url: "/finance/loan",
-                type: "post",
-                dataType: "json",
-                data: {jsonStr: JSON.stringify(jsonStr)},
-                success: function () {
-                    alert('已申请 ');
-                    $('#applyModal').modal('toggle');
-
-                },
-                error: function (XMLHttpRequest) {
-                    alert('申请失败');
-                    $('#applyModal').modal('toggle');
-                }
-            })
-        }
-    })
-})
-

+ 0 - 120
src/main/webapp/resources/js/finance/finance.js

@@ -1,120 +0,0 @@
-
-/**
- * 引入toaster方法
- */
-document.write("<script language=javascript src='static/js/common/toastr.js'></script>");
-
-function applyModal1() {
-    $('#applyModal1').modal('toggle');
-}
-
-function agreeEvent() {
-    $('#applyModal1').modal('toggle');
-    $('#applyModal').modal('toggle');
-    $("#loanAmount").val('');
-}
-
-/**
- * 相关提示信息
- */
-function suspendMessage() {
-    toastr.error('网站正在升级中,敬请期待!');
-}
-
-function submitApply() {
-    var product = $("#applyLoan").siblings('h2').text();
-    var loanName = $("#loanName").val();//姓名
-    var loanTelphone = $("#loanTelphone").val();//手机号
-    var loanCommpanyName = $("#loanCommpanyName").val();//公司名
-    var loanAmount = $("#loanAmount").val();//借款金额
-    var check = $("#check").is(":checked");//是否同意查询相关数据
-    var check1 = $("#check1").is(":checked");//是否同意查询相关材料
-    var flag = false;
-    var message = "";
-    if (loanCommpanyName == '') {
-        message = '企业全称不能为空'
-    } else if (loanAmount == '') {
-        message = '借贷金额不能为空';
-    } else if (loanName == '') {
-        message = "联系人不能为空";
-    } else if (loanTelphone == '') {
-        message = "联系方式不能为空!";
-    } else if (loanTelphone.length != 11) {
-        message = "请输入有效的手机号码!";
-    } else if (check != true) {
-        message = '请同意因开展应收账款保理业务而查询相关数据';
-    } else if (check1 != true) {
-        message = '请同意因开展应收账款保理业务提供相关材料';
-    } else {
-        flag = true;
-    }
-    if (!flag) {
-        //alert(message);
-        toastr.info(message);
-    } else {
-        var jsonStr = {
-            product: product,
-            name: loanName,
-            telphone: loanTelphone,
-            companyName: loanCommpanyName,
-            amount: loanAmount
-        }
-        $.ajax({
-            url: "/finance/loan",
-            type: "post",
-            dataType: "json",
-            data: {jsonStr: JSON.stringify(jsonStr)},
-            success: function (data) {
-                toastr.info(data);
-                setTimeout( $('#applyModal').modal('toggle'), 800);
-            },
-            error: function (XMLHttpRequest) {
-                toastr.error("申请失败");
-                $('#applyModal').modal('toggle');
-            }
-        })
-    }
-}
-
-function checkEvent() {
-    if ($("#note").css("display") == "none") {
-        $("#note").css("display", "block");
-    } else {
-        $("#note").css("display", "none");
-    }
-}
-
-$(function() {
-    'use strict';
-    //applyLoan:理解立即申请的id
-    // 打开申请页面
-    $('#applyLoan').click(applyModal1);
-
-    // 同意申请
-    $('#agree').click(agreeEvent);
-
-    // 提交申请
-    $('#loanSubmit').click(submitApply);
-
-    // 判断是否已同意
-    $("#check2").click(checkEvent);
-
-    $('.x-link-info').click(function () {
-        alert('网站正在升级中,敬请期待!');
-    });
-});function applyLoan() {
-    $.ajax({
-        url:'/sso/account',
-        type:'GET',
-        success:function (data) {
-            if(data.content!=null){
-                window.location.href='http://finance.ubtob.com';
-            }else{
-                toastr.warning('请先登录');
-            }
-        },
-        error:function(){
-            toastr.error('系统错误');
-        }
-    })
-}

+ 0 - 4
src/main/webapp/resources/js/help/agreement.js

@@ -1,4 +0,0 @@
-$(function() {
-	'use strict';
-	
-});

+ 0 - 23
src/main/webapp/resources/js/saas_about/app.js

@@ -1,23 +0,0 @@
-
-/**
- * 引入toaster方法
- */
-document.write("<script language=javascript src='static/js/common/toastr.js></script>");
-
-$(function() {
-	'use strict';
-
-    
-	$('.btn-apply').click(function(){
-		// https://account.ubtob.com/userspace/applyApp?appId=saas有登录拦截判断,未登录会跳转到登录界面
-		// var url = isLogin() ? 'https://account.ubtob.com/userspace/applyApp?appId=saas' : 'https://account.ubtob.com/sso/register';
-		// 未登录直接跳转到登录界面
-		var url = 'https://saas-admin.ubtob.com/apply';
-		window.location.href = url;
-	});
-
-    $('.x-link-info').click(function () {
-        toastr.error('网站正在升级中,敬请期待!');
-        alert('网站正在升级中,敬请期待!');
-    });
-});

+ 0 - 3
src/main/webapp/resources/js/uuzcc/app.js

@@ -1,3 +0,0 @@
-/**
- * Created by uas on 2018/3/16.
- */

+ 256 - 0
src/main/webapp/resources/lib/jquery/jquery.pagination.js

@@ -0,0 +1,256 @@
+/**
+ * pagination.js 1.5.1
+ * A jQuery plugin to provide simple yet fully customisable pagination.
+ * @version 1.5.1
+ * @author mss
+ * @url https://github.com/Maxiaoxiang/jQuery-plugins
+ *
+ * @调用方法
+ * $(selector).pagination(option, callback);
+ * -此处callback是初始化调用,option里的callback是点击页码后调用
+ * 
+ * -- example --
+ * $(selector).pagination({
+ *     ... // 配置参数
+ *     callback: function(api) {
+ *         console.log('点击页码调用该回调'); //切换页码时执行一次回调
+ *     }
+ * }, function(){
+ *     console.log('初始化'); //插件初始化时调用该方法,比如请求第一次接口来初始化分页配置
+ * });
+ */
+;
+(function (factory) {
+    if (typeof define === "function" && (define.amd || define.cmd) && !jQuery) {
+        // AMD或CMD
+        define(["jquery"], factory);
+    } else if (typeof module === 'object' && module.exports) {
+        // Node/CommonJS
+        module.exports = function (root, jQuery) {
+            if (jQuery === undefined) {
+                if (typeof window !== 'undefined') {
+                    jQuery = require('jquery');
+                } else {
+                    jQuery = require('jquery')(root);
+                }
+            }
+            factory(jQuery);
+            return jQuery;
+        };
+    } else {
+        //Browser globals
+        factory(jQuery);
+    }
+}(function ($) {
+
+    //配置参数
+    var defaults = {
+        totalData: 0, //数据总条数
+        showData: 0, //每页显示的条数
+        pageCount: 9, //总页数,默认为9
+        current: 1, //当前第几页
+        prevCls: 'prev', //上一页class
+        nextCls: 'next', //下一页class
+        prevContent: '<', //上一页内容
+        nextContent: '>', //下一页内容
+        activeCls: 'active', //当前页选中状态
+        coping: false, //首页和尾页
+        isHide: false, //当前页数为0页或者1页时不显示分页
+        homePage: '', //首页节点内容
+        endPage: '', //尾页节点内容
+        keepShowPN: false, //是否一直显示上一页下一页
+        mode: 'unfixed', //分页模式,unfixed:不固定页码数量,fixed:固定页码数量
+        count: 4, //mode为unfixed时显示当前选中页前后页数,mode为fixed显示页码总数
+        jump: false, //跳转到指定页数
+        jumpIptCls: 'jump-ipt', //文本框内容
+        jumpBtnCls: 'jump-btn', //跳转按钮
+        jumpBtn: '跳转', //跳转按钮文本
+        callback: function () {} //回调
+    };
+
+    var Pagination = function (element, options) {
+        //全局变量
+        var opts = options, //配置
+            current, //当前页
+            $document = $(document),
+            $obj = $(element); //容器
+
+        /**
+         * 设置总页数
+         * @param {int} page 页码
+         * @return opts.pageCount 总页数配置
+         */
+        this.setPageCount = function (page) {
+            return opts.pageCount = page;
+        };
+
+        /**
+         * 获取总页数
+         * 如果配置了总条数和每页显示条数,将会自动计算总页数并略过总页数配置,反之
+         * @return {int} 总页数
+         */
+        this.getPageCount = function () {
+            return opts.totalData && opts.showData ? Math.ceil(parseInt(opts.totalData) / opts.showData) : opts.pageCount;
+        };
+
+        /**
+         * 获取当前页
+         * @return {int} 当前页码
+         */
+        this.getCurrent = function () {
+            return current;
+        };
+
+        /**
+         * 填充数据
+         * @param {int} 页码
+         */
+        this.filling = function (index) {
+            var html = '';
+            current = parseInt(index) || parseInt(opts.current); //当前页码
+            var pageCount = this.getPageCount(); //获取的总页数
+            switch (opts.mode) { //配置模式
+                case 'fixed': //固定按钮模式
+                    html += '<a href="javascript:;" class="' + opts.prevCls + '">' + opts.prevContent + '</a>';
+                    if (opts.coping) {
+                        var home = opts.coping && opts.homePage ? opts.homePage : '1';
+                        html += '<a href="javascript:;" data-page="1">' + home + '</a>';
+                    }
+                    var start = current > opts.count - 1 ? current + opts.count - 1 > pageCount ? current - (opts.count - (pageCount - current)) : current - 2 : 1;
+                    var end = current + opts.count - 1 > pageCount ? pageCount : start + opts.count;
+                    for (; start <= end; start++) {
+                        if (start != current) {
+                            html += '<a href="javascript:;" data-page="' + start + '">' + start + '</a>';
+                        } else {
+                            html += '<span class="' + opts.activeCls + '">' + start + '</span>';
+                        }
+                    }
+                    if (opts.coping) {
+                        var _end = opts.coping && opts.endPage ? opts.endPage : pageCount;
+                        html += '<a href="javascript:;" data-page="' + pageCount + '">' + _end + '</a>';
+                    }
+                    html += '<a href="javascript:;" class="' + opts.nextCls + '">' + opts.nextContent + '</a>';
+                    break;
+                case 'unfixed': //不固定按钮模式
+                    if (opts.keepShowPN || current > 1) { //上一页
+                        html += '<a href="javascript:;" class="' + opts.prevCls + '">' + opts.prevContent + '</a>';
+                    } else {
+                        if (opts.keepShowPN == false) {
+                            $obj.find('.' + opts.prevCls) && $obj.find('.' + opts.prevCls).remove();
+                        }
+                    }
+                    if (current >= opts.count + 2 && current != 1 && pageCount != opts.count) {
+                        var home = opts.coping && opts.homePage ? opts.homePage : '1';
+                        html += opts.coping ? '<a href="javascript:;" data-page="1">' + home + '</a><span>...</span>' : '';
+                    }
+                    var start = (current - opts.count) <= 1 ? 1 : (current - opts.count);
+                    var end = (current + opts.count) >= pageCount ? pageCount : (current + opts.count);
+                    for (; start <= end; start++) {
+                        if (start <= pageCount && start >= 1) {
+                            if (start != current) {
+                                html += '<a href="javascript:;" data-page="' + start + '">' + start + '</a>';
+                            } else {
+                                html += '<span class="' + opts.activeCls + '">' + start + '</span>';
+                            }
+                        }
+                    }
+                    if (current + opts.count < pageCount && current >= 1 && pageCount > opts.count) {
+                        var end = opts.coping && opts.endPage ? opts.endPage : pageCount;
+                        html += opts.coping ? '<span>...</span><a href="javascript:;" data-page="' + pageCount + '">' + end + '</a>' : '';
+                    }
+                    if (opts.keepShowPN || current < pageCount) { //下一页
+                        html += '<a href="javascript:;" class="' + opts.nextCls + '">' + opts.nextContent + '</a>';
+                    } else {
+                        if (opts.keepShowPN == false) {
+                            $obj.find('.' + opts.nextCls) && $obj.find('.' + opts.nextCls).remove();
+                        }
+                    }
+                    break;
+                case 'easy': //简单模式
+                    break;
+                default:
+            }
+            html += opts.jump ? '<input type="text" class="' + opts.jumpIptCls + '"><a href="javascript:;" class="' + opts.jumpBtnCls + '">' + opts.jumpBtn + '</a>' : '';
+            $obj.empty().html(html);
+        };
+
+        //绑定事件
+        this.eventBind = function () {
+            var that = this;
+            var pageCount = that.getPageCount(); //总页数
+            var index = 1;
+            $obj.off().on('click', 'a', function () {
+                if ($(this).hasClass(opts.nextCls)) {
+                    if ($obj.find('.' + opts.activeCls).text() >= pageCount) {
+                        $(this).addClass('disabled');
+                        return false;
+                    } else {
+                        index = parseInt($obj.find('.' + opts.activeCls).text()) + 1;
+                    }
+                } else if ($(this).hasClass(opts.prevCls)) {
+                    if ($obj.find('.' + opts.activeCls).text() <= 1) {
+                        $(this).addClass('disabled');
+                        return false;
+                    } else {
+                        index = parseInt($obj.find('.' + opts.activeCls).text()) - 1;
+                    }
+                } else if ($(this).hasClass(opts.jumpBtnCls)) {
+                    if ($obj.find('.' + opts.jumpIptCls).val() !== '') {
+                        index = parseInt($obj.find('.' + opts.jumpIptCls).val());
+                    } else {
+                        return;
+                    }
+                } else {
+                    index = parseInt($(this).data('page'));
+                }
+                that.filling(index);
+                typeof opts.callback === 'function' && opts.callback(that);
+            });
+            //输入跳转的页码
+            $obj.on('input propertychange', '.' + opts.jumpIptCls, function () {
+                var $this = $(this);
+                var val = $this.val();
+                var reg = /[^\d]/g;
+                if (reg.test(val)) $this.val(val.replace(reg, ''));
+                (parseInt(val) > pageCount) && $this.val(pageCount);
+                if (parseInt(val) === 0) $this.val(1); //最小值为1
+            });
+            //回车跳转指定页码
+            $document.keydown(function (e) {
+                if (e.keyCode == 13 && $obj.find('.' + opts.jumpIptCls).val()) {
+                    var index = parseInt($obj.find('.' + opts.jumpIptCls).val());
+                    that.filling(index);
+                    typeof opts.callback === 'function' && opts.callback(that);
+                }
+            });
+        };
+
+        //初始化
+        this.init = function () {
+            this.filling(opts.current);
+            this.eventBind();
+            if (opts.isHide && this.getPageCount() == '1' || this.getPageCount() == '0') {
+                $obj.hide();
+            } else {
+                $obj.show();
+            }
+        };
+        this.init();
+    };
+
+    $.fn.pagination = function (parameter, callback) {
+        if (typeof parameter == 'function') { //重载
+            callback = parameter;
+            parameter = {};
+        } else {
+            parameter = parameter || {};
+            callback = callback || function () {};
+        }
+        var options = $.extend({}, defaults, parameter);
+        return this.each(function () {
+            var pagination = new Pagination(this, options);
+            callback(pagination);
+        });
+    };
+
+}));