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

Merge branch 'dev-mysql' of ssh://10.10.101.21/source/platform-b2c into dev-mysql

yujia 8 жил өмнө
parent
commit
3a6cea9173
21 өөрчлөгдсөн 455 нэмэгдсэн , 85 устгасан
  1. 3 0
      .gitignore
  2. 33 6
      src/main/java/com/uas/platform/b2c/common/account/controller/SecurityController.java
  3. 56 0
      src/main/java/com/uas/platform/b2c/common/account/controller/UsageLogController.java
  4. 15 0
      src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java
  5. 19 0
      src/main/java/com/uas/platform/b2c/common/search/dao/SearchHistoryDao.java
  6. 86 0
      src/main/java/com/uas/platform/b2c/common/search/model/SearchHistory.java
  7. 3 1
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java
  8. 1 1
      src/main/java/com/uas/platform/b2c/common/search/service/SearcherService.java
  9. 29 1
      src/main/java/com/uas/platform/b2c/common/search/service/impl/SearcherServiceImpl.java
  10. 2 2
      src/main/java/com/uas/platform/b2c/prod/product/component/api/ComponentController.java
  11. 14 0
      src/main/java/com/uas/platform/b2c/prod/product/component/modal/ComponentCrawl.java
  12. 2 1
      src/main/java/com/uas/platform/b2c/prod/product/component/service/ComponentService.java
  13. 3 2
      src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentServiceImpl.java
  14. 16 5
      src/main/webapp/resources/js/common/controllers/commonCtrls.js
  15. 8 1
      src/main/webapp/resources/js/common/services.js
  16. 33 30
      src/main/webapp/resources/view/common/modal/messageBoard.html
  17. 39 0
      src/test/java/com/uas/platform/b2c/BaseJunitTest.java
  18. 0 35
      src/test/java/com/uas/platform/b2c/RegistForMall.java
  19. 27 0
      src/test/java/com/uas/platform/b2c/common/account/UsageLogController.java
  20. 28 0
      src/test/java/com/uas/platform/b2c/common/base/RestMailService.java
  21. 38 0
      src/test/java/com/uas/platform/b2c/common/base/RestSmsService.java

+ 3 - 0
.gitignore

@@ -3,6 +3,7 @@
 .settings/
 bin/
 tmp/
+# test/
 *.tmp
 *.bak
 *.swp
@@ -33,6 +34,7 @@ tmp/
 # Java
 ## Compiled class file
 *.class
+#test/
 
 ## Log file
 *.log
@@ -55,6 +57,7 @@ pom.xml.next
 release.properties
 dependency-reduced-pom.xml
 buildNumber.properties
+# /src/test/
 /src/test/java/com/uas/platform/b2c/RegistForMall.java
 /src/test/java/com/uas/platform/b2c/testForRestTemplate.java
 /.gitignore

+ 33 - 6
src/main/java/com/uas/platform/b2c/common/account/controller/SecurityController.java

@@ -68,12 +68,12 @@ public class SecurityController {
 		if (StringUtils.isEmpty(returnUrl)) {
 			returnUrl = request.getHeader("Referer");
 		}
-		boolean cross = SSOHelper.isCrossDomain(request);
+		/*boolean cross = SSOHelper.isCrossDomain(request);
 		if (cross) {
 			request.getSession().setAttribute(SSOConfig.SSOReferer, returnUrl);
 			// 跨域情况,需要再次询问账户中心
-			returnUrl = "/logout/proxy";
-		}
+			returnUrl = request.getContextPath() + "/logout/proxy";
+		}*/
 		return new ModelMap("content", returnUrl);
 	}
 
@@ -96,11 +96,11 @@ public class SecurityController {
 		} else {
 			redirectUrl = SSOHelper.getRedirectLoginUrl(request, returnUrl);
 		}
-		boolean cross = SSOHelper.isCrossDomain(request);
+		/*boolean cross = SSOHelper.isCrossDomain(request);
 		if (cross) {
 			// 跨域代理界面
 			redirectUrl = request.getContextPath() + "/login/proxy";
-		}
+		}*/
 		return new ModelMap("content", redirectUrl);
 	}
 	/**
@@ -167,7 +167,7 @@ public class SecurityController {
 	public ModelMap afterCrossLogin(HttpServletRequest request, HttpServletResponse response, String replyTxt) {
 		if (!StringUtils.isEmpty(replyTxt)) {
 			Object returnUrl = request.getSession().getAttribute(SSOConfig.SSOReferer);
-			returnUrl = returnUrl.toString().replaceAll("login/proxy","auth/login");
+//			returnUrl = returnUrl.toString().replaceAll("platform-b2c/","").replaceAll("login/proxy","SSRProxy/loginProxy");
 			SSOConfig config = SSOHelper.getSSOService().getConfig();
 			AuthToken token = SSOHelper.ok(request, response, replyTxt, config.getClientPublicKey(), config.getCenterPublicKey());
 			if (token != null) {
@@ -183,12 +183,39 @@ public class SecurityController {
 					SystemSession.setUser(user);
 					log(request, user);
 				}
+				returnUrl = returnUrl.toString().contains("10.10.0.10") ? "/" : returnUrl;
 				return new ModelMap("returnUrl", returnUrl);
 			}
 		}
 		return null;
 	}
 
+	/**
+	 * 其他地点登录后 同步登录状态
+	 * @param request
+	 * @param response
+	 */
+	@RequestMapping(value = "/login/other")
+	@ResponseBody
+	public ModelMap afterCrossLogin(HttpServletRequest request, HttpServletResponse response, String uid, long time , String data) {
+		if (uid != null && data != null) {
+ 				SSOToken tk = new SSOToken();
+				tk.setUid(uid);
+				tk.setTime(time);
+				tk.setData(data);
+				SSOHelper.setSSOCookie(request, response, tk, true);
+				User user = getUserByToken(tk);
+				if (user != null) {
+					user.setIp(AgentUtils.getIp(request));
+					request.getSession().setAttribute("user", user);
+					SystemSession.setUser(user);
+					log(request, user);
+				}
+				return new ModelMap("success", 1);
+		}
+		return new ModelMap("success", 0);
+	}
+
 	/**
 	 * 获取跨域登录的参数
 	 * 

+ 56 - 0
src/main/java/com/uas/platform/b2c/common/account/controller/UsageLogController.java

@@ -0,0 +1,56 @@
+package com.uas.platform.b2c.common.account.controller;
+
+import com.uas.platform.b2c.common.account.model.UsageLog;
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.common.account.service.UsageLogService;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * 用户操作日志请求
+ * @author suntg
+ * @version 2017年11月8日16:38:52 初始化建立
+ */
+@RestController
+@RequestMapping(value = "/log/usage")
+public class UsageLogController {
+
+	@Autowired
+	private UsageLogService usageLogService;
+
+	private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	/**
+	 * 根据分页信息获取
+	 * @return
+	 */
+	@RequestMapping(method = RequestMethod.GET)
+	public Page<UsageLog> getAllByPage(PageParams params) {
+		PageInfo info = new PageInfo(params);
+		if(info.getSort() == null)
+			info.sorting("time", Sort.Direction.DESC);
+		return usageLogService.findAllByPageInfo(info);
+	}
+
+	/**
+	 * 根据用户UU号分页获取
+	 * @return
+	 */
+	@RequestMapping(value = "/{uu}",method = RequestMethod.GET)
+	public Page<UsageLog> getByUserUuByPage(PageParams params, @PathVariable("uu") Long userUu) {
+		PageInfo info = new PageInfo(params);
+		info.filter("userUU", userUu);
+		if(info.getSort() == null)
+			info.sorting("time", Sort.Direction.DESC);
+		return usageLogService.findAllByPageInfo(info);
+	}
+
+}

+ 15 - 0
src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java

@@ -1,6 +1,8 @@
 package com.uas.platform.b2c.common.search.controller;
 
 import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.common.search.dao.SearchHistoryDao;
+import com.uas.platform.b2c.common.search.model.SearchHistory;
 import com.uas.platform.b2c.common.search.service.SearcherService;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.prod.commodity.service.GoodsService;
@@ -61,6 +63,9 @@ public class SearcherController {
 	@Autowired
 	private StockInOutHistService stockInOutHistService;
 
+	@Autowired
+	private SearchHistoryDao searchHistoryDao;
+
 	/**
 	 * 作搜索展示跳转
 	 * 
@@ -343,4 +348,14 @@ public class SearcherController {
 		return result;
 	}
 
+	@RequestMapping(value = "/searchHistory", method = RequestMethod.GET)
+	@ResponseBody
+	public List<SearchHistory> getSearchHistory(HttpServletRequest request){
+		SystemSession.setUser((User)request.getSession().getAttribute("user"));
+		if (null == SystemSession.getUser()){
+			return null;
+		}else{
+			return searchHistoryDao.findByUserUUAndUserEnuuOrderBySearchTimeDesc(SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
+		}
+	}
 }

+ 19 - 0
src/main/java/com/uas/platform/b2c/common/search/dao/SearchHistoryDao.java

@@ -0,0 +1,19 @@
+package com.uas.platform.b2c.common.search.dao;
+
+import com.uas.platform.b2c.common.search.model.SearchHistory;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface SearchHistoryDao extends JpaSpecificationExecutor<SearchHistory>,JpaRepository<SearchHistory,Long>{
+    /**
+     * 通过uuid和enuu查找记录
+     * @return
+     */
+    List<SearchHistory> findByUserUUAndUserEnuuOrderBySearchTimeDesc(Long userUU,Long userEnuu);
+
+    List<SearchHistory> findByKeywordAndUserUUAndUserEnuu(String keyword,Long userUU,Long userEnuu);
+}

+ 86 - 0
src/main/java/com/uas/platform/b2c/common/search/model/SearchHistory.java

@@ -0,0 +1,86 @@
+package com.uas.platform.b2c.common.search.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 搜索记录
+ */
+@Entity
+@Table(name = "sec$searchHis")
+public class SearchHistory implements Serializable{
+
+    /**
+     * ID
+     */
+    @Id
+    @GeneratedValue
+    @Column(name = "id")
+    private Long id;
+
+    /**
+     * 个人uu
+     */
+    @Column(name = "user_uu")
+    private Long userUU;
+
+    /**
+     * 企业uu
+     */
+    @Column(name = "user_enuu")
+    private Long userEnuu;
+
+    /**
+     * 关键词
+     */
+    @Column(name = "keyword")
+    private String keyword;
+
+    /**
+     * 搜索时间
+     */
+    @Column(name = "searchtime")
+    private Date searchTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+    public Long getUserEnuu() {
+        return userEnuu;
+    }
+
+    public void setUserEnuu(Long userEnuu) {
+        this.userEnuu = userEnuu;
+    }
+
+    public String getKeyword() {
+        return keyword;
+    }
+
+    public void setKeyword(String keyword) {
+        this.keyword = keyword;
+    }
+
+    public Date getSearchTime() {
+        return searchTime;
+    }
+
+    public void setSearchTime(Date searchTime) {
+        this.searchTime = searchTime;
+    }
+}

+ 3 - 1
src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java

@@ -206,7 +206,7 @@ public class SearchServiceImpl implements SearchService{
     public Map<String,Object> getSimilarKeywords(String keyword) throws SearchException {
         Map<String, Object> map = new HashedMap();
         map.put("keyword", keyword);
-        //String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_KEYWORD_URL, String.class, map);
+        String strA = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_KEYWORD_URL, String.class, map);
         String strC = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_COMPONENT_URL, String.class, map);
         String strB = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_BRAND_URL, String.class, map);
         String strK = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_KIND_URL, String.class, map);
@@ -214,10 +214,12 @@ public class SearchServiceImpl implements SearchService{
             return null;
         }else {
             try {
+                List<String> reMapA = FastjsonUtils.fromJson(strC, List.class);
                 List<String> reMapC = FastjsonUtils.fromJson(strC, List.class);
                 List<String> reMapB = FastjsonUtils.fromJson(strB, List.class);
                 List<String> reMapK = FastjsonUtils.fromJson(strK, List.class);
                 map.clear();
+                map.put("all",reMapA);
                 map.put("kind",reMapK);
                 map.put("componet",reMapC);
                 map.put("brand",reMapB);

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/search/service/SearcherService.java

@@ -58,7 +58,7 @@ public interface SearcherService {
 	 * @throws InterruptedException
 	 * @throws IOException
 	 */
-	public ModelMap searchComponentGoods(String keyword, PageParams page);
+	public ModelMap searchComponentGoods(String keyword, PageParams page , HttpServletRequest request);
     /**
      * 批次搜索数量统计
      *

+ 29 - 1
src/main/java/com/uas/platform/b2c/common/search/service/impl/SearcherServiceImpl.java

@@ -1,8 +1,12 @@
 package com.uas.platform.b2c.common.search.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.common.search.dao.SearchHistoryDao;
+import com.uas.platform.b2c.common.search.model.SearchHistory;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
 import com.uas.platform.b2c.common.search.service.SearcherService;
+import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentGoodsDao;
@@ -53,6 +57,9 @@ public class SearcherServiceImpl implements SearcherService {
 	@Autowired
 	private BrandDao brandDao;
 
+	@Autowired
+	private SearchHistoryDao searchHistoryDao;
+
 	private Logger logger = LoggerFactory.getLogger(getClass());
 	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 
@@ -142,7 +149,28 @@ public class SearcherServiceImpl implements SearcherService {
 	 */
 	@SuppressWarnings("unchecked")
 	@Override
-	public ModelMap searchComponentGoods(String keyword, PageParams page) {
+	public ModelMap searchComponentGoods(String keyword, PageParams page , HttpServletRequest request) {
+		if (this.deviceResolver.resolveDevice(request).isMobile()) {
+			SystemSession.setUser((User)request.getSession().getAttribute("user"));
+			if (null != SystemSession.getUser() && null!= SystemSession.getUser().getUserUU()){
+				SearchHistory searchHistory = null;
+				List<SearchHistory> searchHistories = searchHistoryDao.findByKeywordAndUserUUAndUserEnuu(keyword,SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
+				if (searchHistories.size()>0){
+					searchHistory = searchHistories.get(0);
+				}else {
+					searchHistory = new SearchHistory();
+				}
+				searchHistory.setKeyword(keyword);
+				searchHistory.setSearchTime(new Date(System.currentTimeMillis()));
+				searchHistory.setUserUU(SystemSession.getUser().getUserUU());
+				searchHistory.setUserEnuu(SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
+				searchHistoryDao.save(searchHistory);
+				searchHistories = searchHistoryDao.findByUserUUAndUserEnuuOrderBySearchTimeDesc(SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
+				if (searchHistories.size()>10){
+					searchHistoryDao.delete(searchHistories.subList(10,searchHistories.size()));
+				}
+			}
+		}
 		ModelMap map = new ModelMap();
 		Map<String,Object> results = null;
 		//Map<String, Object> results = new HashMap<>();

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/product/component/api/ComponentController.java

@@ -247,8 +247,8 @@ public class ComponentController {
 	 * 搜索关键字的型号,插入库存
 	 */
 	@RequestMapping(value = "/search/compGoods", method = RequestMethod.GET)
-	public ModelMap getCompGoodsBySearch(PageParams params, String keyword) {
-		return componentService.getCompGoodsBySearch(params, keyword);
+	public ModelMap getCompGoodsBySearch(PageParams params, String keyword, HttpServletRequest request) {
+		return componentService.getCompGoodsBySearch(params, keyword, request);
 	}
 
 	/**

+ 14 - 0
src/main/java/com/uas/platform/b2c/prod/product/component/modal/ComponentCrawl.java

@@ -59,6 +59,12 @@ public class ComponentCrawl implements Serializable {
 	@Column(name = "cc_uuid")
 	private String uuid;
 
+	/**
+	 * 器件描述
+	 */
+	@Column(name = "cc_description", length = 4000)
+	private String description;
+
 	/**
 	 * 正式入库后版本号
 	 */
@@ -182,6 +188,14 @@ public class ComponentCrawl implements Serializable {
 		this.uuid = uuid;
 	}
 
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
 	public Short getVersion() {
 		return version;
 	}

+ 2 - 1
src/main/java/com/uas/platform/b2c/prod/product/component/service/ComponentService.java

@@ -10,6 +10,7 @@ import com.uas.platform.core.model.PageParams;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.Map;
 
@@ -186,7 +187,7 @@ public interface ComponentService {
 	 * @param keyword 关键词
 	 * @return 器件信息
 	 */
-	public ModelMap getCompGoodsBySearch(PageParams params, String keyword);
+	public ModelMap getCompGoodsBySearch(PageParams params, String keyword, HttpServletRequest request);
 
 	/**
 	 * 批量修改器件类目

+ 3 - 2
src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentServiceImpl.java

@@ -48,6 +48,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 
 @Service
@@ -447,14 +448,14 @@ public class ComponentServiceImpl implements ComponentService {
 	}
 
 	@Override
-	public ModelMap getCompGoodsBySearch(com.uas.platform.core.model.PageParams params, String keyword) {
+	public ModelMap getCompGoodsBySearch(com.uas.platform.core.model.PageParams params, String keyword , HttpServletRequest request) {
 		int page = params.getPage();
 		if (page > 100) {
 			page = 100;
 		}
 		params.setPage(page);
 
-		ModelMap map = searchServiceMap.searchComponentGoods(keyword, params);//.searchComponent(keyword, params);
+		ModelMap map = searchServiceMap.searchComponentGoods(keyword, params, request);//.searchComponent(keyword, params);
 		// 能让用户查看的只能是Constant.PAGEMAX * params.getCount(),防止爬虫
 		int total = ((Integer)map.get("total")).intValue();
 		int expose = total;

+ 16 - 5
src/main/webapp/resources/js/common/controllers/commonCtrls.js

@@ -78,9 +78,10 @@ define([ 'app/app' ], function(app) {
 
 			// 退出
 			$scope.logout = function() {
-				AuthenticationService.logout().success(function() {
+				/*AuthenticationService.logout().success(function() {
 					SessionService.removeCookie($rootScope.userInfo.userUU);
-				});
+				});*/
+                AuthenticationService.logoutWithoutProxy();
 			};
 
 			// 企业换企业开关
@@ -1200,7 +1201,12 @@ define([ 'app/app' ], function(app) {
 		//输入框监听Enter事件
 		$scope.listenEnter = function () {
 			if(event.keyCode == 13) {
-				$scope.setPage("page", $scope.params.currentPage);
+				var rnum = /^\d*$/;
+				if (rnum.test($scope.params.currentPage)) {
+					$scope.setPage("page", $scope.params.currentPage);
+				} else {
+					toaster.pop('info', '请输入合法数字');
+				}
 			}
 		};
 
@@ -1244,8 +1250,13 @@ define([ 'app/app' ], function(app) {
 				$scope.params.currentPage = $scope.params.page;
 				return ;
 			}
-			$scope.params.page = page;
-			loadData();
+			var rnum = /^\d*$/;
+			if (rnum.test(page)) {
+				$scope.params.page = page;
+				loadData();
+			} else {
+				toaster.pop('info', '请输入合法数字');
+			}
 		};
 
 		//计算页数的方式。

+ 8 - 1
src/main/webapp/resources/js/common/services.js

@@ -161,6 +161,12 @@ define([ 'angular', 'common/utils', 'big'], function(angular, utils, Big) {
 				login.success(cacheSession);
 				return login;
 			},*/
+			logoutWithoutProxy : function(){
+                var logout = $http.get(rootPath+'/logout/crossBefore');
+                logout.success(function(data){
+                    window.location.href =  data.logoutUrl;
+                });
+			},
 			logout : function() {
 				var config = {
 					cache: false,
@@ -203,7 +209,8 @@ define([ 'angular', 'common/utils', 'big'], function(angular, utils, Big) {
 				return logout;
 			},
             redirectSignin: function() {
-            	// 获取跳转登录的url
+				// window.location.href = '/SSRProxy/loginProxy';
+                // 获取跳转登录的url
             	$http.get(rootPath + '/login/page', {
             		params: {
             			returnUrl: window.location.href

+ 33 - 30
src/main/webapp/resources/view/common/modal/messageBoard.html

@@ -92,15 +92,12 @@
 		color: #333;
 	}
     .messageBoard .modal-body .ng-table-pager{
+        padding: 0 85px;
         position: absolute;
         bottom: 0;
-        text-align: center;
-        left: 55%;
-        margin-left: -279px;
-    }
-    .messageBoard .modal-body .page-go-block{
-        margin-left: 140px;
-        margin-right: 0;
+        left: 0;
+        right: 0;
+        margin: auto;
     }
     .messageBoard .modal-body p.radioCheck{
         padding-left: 65px;
@@ -210,9 +207,11 @@
         border-bottom: 1px dashed #c5c5c5;
 	}
     .messageBoard .modal-body .msg-table{
+        position: relative;
         overflow: auto;
         height: 372px;
-        width: 670px;
+        /* width: 670px; */
+        width: 100%;
         margin-top: 10px;
     }
     .messageBoard .modal-body .msg-table .form-group{
@@ -396,11 +395,10 @@
     }
 
     .messageBoard div.ng-table-pager  input.page-number {
-        vertical-align: inherit;
         display: inline-block;
+        margin-bottom: 10px;
         width: 37px;
-        height: 28px;
-        padding: 6px 6px;
+        height: 30px;
         font-size: 12px;
         line-height: 1.42857143;
         color: #9B9792;
@@ -419,22 +417,20 @@
         cursor: pointer;
         background-color: #4574E8;
         border-color: #4574E8;
-        padding: 5.55px 6px;
         font-size: 12px;
         border-top-right-radius: 4px;
         border-bottom-right-radius: 4px;
         text-decoration: none;
-        height: 31px;
     }
 
     .messageBoard div.ng-table-pager div.page-go-block {
         float: right;
-        font-size: 0px;
+        font-size: 0;
         height: 31px;
-        margin-top: 20px;
         line-height: 31px;
     }
     .messageBoard .ng-table-pager .ng-table-pagination{
+        float: left;
         text-align: center;
         max-width: 460px;
     }
@@ -454,6 +450,12 @@
     .messageBoard .modal-body .history:nth-of-type(3){
         border-bottom: none;
     }
+    .modal.in .modal-dialog{
+        width: 680px;
+    }
+    .modal.in .modal-dialog .modal-content{
+        width: 100%;
+    }
 </style>
 <!--游客状态-->
 <div class="messageBoard">
@@ -559,24 +561,25 @@
             <div ng-if="messageBoardCurrent.length == 0" class="text-center">
                 <div>无留言记录</div>
             </div>
+        </div>
 
-            <div class="ng-cloak ng-table-pager text-center" ng-if="pages.length">
-                <ul class="pagination ng-table-pagination">
-                    <li ng-class="{'disabled': !page.active && !page.current, 'active': page.current}" ng-repeat="page in pages" ng-switch="page.type">
-                        <a ng-switch-when="prev" ng-click="setPage(page.type, -1)">&laquo;</a>
-                        <a ng-switch-when="first" ng-click="setPage(page.type, page.number)"><span ng-bind="page.number"></span></a>
-                        <a ng-switch-when="page" ng-click="setPage(page.type, page.number)"><span ng-bind="page.number"></span></a>
-                        <a ng-switch-when="more" ng-click="setPage(page.type, -1)">&#8230;</a>
-                        <a ng-switch-when="last" ng-click="setPage(page.type, page.number)"><span ng-bind="page.number"></span></a>
-                        <a ng-switch-when="next" ng-click="setPage(page.type, -1)">&raquo;</a>
-                    </li>
-                </ul>
-                <div class="page-go-block">
-                    <input class="page-number" type="text" ng-model="params.currentPage" ng-keydown="listenEnter()"/>
-                    <a class="page-a" ng-click="setPage('page', params.currentPage)">GO</a>
-                </div>
+        <div class="ng-cloak ng-table-pager text-center" ng-show="user.userUU && showHistory" ng-if="pages.length">
+            <ul class="pagination ng-table-pagination">
+                <li ng-class="{'disabled': !page.active && !page.current, 'active': page.current}" ng-repeat="page in pages" ng-switch="page.type">
+                    <a ng-switch-when="prev" ng-click="setPage(page.type, -1)">&laquo;</a>
+                    <a ng-switch-when="first" ng-click="setPage(page.type, page.number)"><span ng-bind="page.number"></span></a>
+                    <a ng-switch-when="page" ng-click="setPage(page.type, page.number)"><span ng-bind="page.number"></span></a>
+                    <a ng-switch-when="more" ng-click="setPage(page.type, -1)">&#8230;</a>
+                    <a ng-switch-when="last" ng-click="setPage(page.type, page.number)"><span ng-bind="page.number"></span></a>
+                    <a ng-switch-when="next" ng-click="setPage(page.type, -1)">&raquo;</a>
+                </li>
+            </ul>
+            <div class="page-go-block">
+                <input class="page-number" type="text" ng-model="params.currentPage" ng-keydown="listenEnter()"/>
+                <a class="page-a" ng-click="setPage('page', params.currentPage)">GO</a>
             </div>
         </div>
+
         <div ng-if="user.userUU && !showHistory" class="msg-slide1" ng-click="openHistory()">
             <i class="fa fa-angle-left"></i><span>留言记录</span>
         </div>

+ 39 - 0
src/test/java/com/uas/platform/b2c/BaseJunitTest.java

@@ -0,0 +1,39 @@
+package com.uas.platform.b2c;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.transaction.TransactionConfiguration;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.WebApplicationContext;
+
+/**
+ * Spring MVC 测试基类,所有测试类继承自这个类就可以直接写单元测试
+ * @author stg
+ * @date 2017年11月8日16:48:18
+ */
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration("classpath:spring/context.xml")
+@WebAppConfiguration("")
+@Transactional
+@TransactionConfiguration(defaultRollback = true)
+public class BaseJunitTest {
+
+    @Autowired
+    protected WebApplicationContext wac;
+
+    protected MockMvc mockMvc;
+
+    /**
+     * 前置防范,配置MVCMock
+     */
+    @Before
+    public void setup() {
+        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
+    }
+}

+ 0 - 35
src/test/java/com/uas/platform/b2c/RegistForMall.java

@@ -1,35 +0,0 @@
-package com.uas.platform.b2c;
-
-import com.uas.platform.b2c.core.utils.FastjsonUtils;
-import org.apache.commons.collections.map.HashedMap;
-
-import java.util.ArrayList;
-import java.util.Map;
-
-public class RegistForMall {
-
-	public static void main(String args[]) throws Exception {
-//		UserSpaceDetail detail = new UserSpaceDetail();
-//		detail.setName("B2B公司研发测试数据-不要购买-wangyuchao");
-//		detail.setShortName("B2B公司");
-//		detail.setAdminName("余佳");
-//		detail.setAdminTel("15989329613");
-//		detail.setAdminEmail("yuj@usoftchina.com");
-//		detail.setBusinessCode("11122233344456789");
-//		detail.setRegisterDate(new Date().getTime());
-//		detail.setTel("15989329613");
-//		detail.setFax("11-2222222");
-//		String url = "http://113.105.74.135:8001/api/userspace";
-//		if (!StringUtils.isEmpty(url)) {
-//			ResponseWrap res = HttpUtil.doPost(url,
-//					new ModelMap("_operate", "registForMall").addAttribute("detail", JSON.toJSON(detail)));
-//			System.out.println(res.getContent());
-//			if (!res.isSuccess())
-//				throw new Exception(res.getContent());
-//		}
-		Map<String ,Object> map = new HashedMap();
-		map.put("OK", new Object());
-		System.out.println(FastjsonUtils.toJson(map));
-		System.out.println(new ArrayList<>());
-	}
-}

+ 27 - 0
src/test/java/com/uas/platform/b2c/common/account/UsageLogController.java

@@ -0,0 +1,27 @@
+package com.uas.platform.b2c.common.account;
+
+import com.uas.platform.b2c.BaseJunitTest;
+import org.junit.Test;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+public class UsageLogController extends BaseJunitTest {
+
+
+    @Test
+    public void testGetByPage() throws Exception {
+        String result = mockMvc.perform((get("/log/usage"))).andExpect(status().isOk())
+                .andDo(print()).andReturn().getResponse().getContentAsString();
+        System.out.println("result: " + result);
+    }
+
+    @Test
+    public void testGetByUUAndPage() throws Exception {
+        String result = mockMvc.perform((get("/log/usage/1000001202"))).andExpect(status().isOk())
+                .andDo(print()).andReturn().getResponse().getContentAsString();
+        System.out.println("result: " + result);
+    }
+
+}

+ 28 - 0
src/test/java/com/uas/platform/b2c/common/base/RestMailService.java

@@ -0,0 +1,28 @@
+package com.uas.platform.b2c.common.base;
+
+import com.uas.message.mail.service.MailService;
+import com.uas.platform.b2c.BaseJunitTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.transaction.TransactionConfiguration;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class RestMailService extends BaseJunitTest {
+
+    @Autowired
+    private MailService restMailService;
+
+    @Test
+    public void testSend() {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("serviceName", "测试邮件发送");
+        restMailService.send("774296f3-a260-4bb5-b4eb-6f01090dadf3", "suntg@usoftchina.com", params);
+    }
+
+}

+ 38 - 0
src/test/java/com/uas/platform/b2c/common/base/RestSmsService.java

@@ -0,0 +1,38 @@
+package com.uas.platform.b2c.common.base;
+
+import com.uas.message.mail.service.MailService;
+import com.uas.message.sms.service.SmsService;
+import com.uas.platform.b2c.BaseJunitTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.transaction.TransactionConfiguration;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class RestSmsService extends BaseJunitTest {
+
+    @Autowired
+    private SmsService smsService;
+
+    @Test
+    public void testSend() {
+        Object[] params = {"123456"};
+        smsService.send("c39973e7-e931-4a81-964a-e8fa52b7b2c9", "13266703535", params);
+    }
+
+    @Test
+    public void testSendAll() {
+        Object[] params = {"123456"};
+        Set<String> receivers = new HashSet<String>();
+        receivers.add("13266703535");
+        receivers.add("17688562777");
+        smsService.sendAll("c39973e7-e931-4a81-964a-e8fa52b7b2c9", receivers, params);
+    }
+}