Sfoglia il codice sorgente

Merge branch 'dev-mysql' into feature/authority-0918

# Conflicts:
#	src/main/java/com/uas/platform/b2c/common/account/dao/EnterpriseDao.java
#	src/main/webapp/resources/view/vendor/forstore/vendor_account_management.html
wangdy 8 anni fa
parent
commit
afa05353d7
100 ha cambiato i file con 3705 aggiunte e 256 eliminazioni
  1. 3 1
      .gitignore
  2. 7 23
      pom.xml
  3. 1 4
      src/main/java/com/uas/platform/b2c/advertise/ad/model/StoreAds.java
  4. 1 4
      src/main/java/com/uas/platform/b2c/advertise/ad/model/StoreContent.java
  5. 16 0
      src/main/java/com/uas/platform/b2c/advertise/ad/service/FloorsService.java
  6. 1 1
      src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/CarouselsServiceImpl.java
  7. 35 1
      src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/FloorsServiceImpl.java
  8. 41 8
      src/main/java/com/uas/platform/b2c/advertise/news/service/impl/NewsServiceImpl.java
  9. 3 3
      src/main/java/com/uas/platform/b2c/common/account/Readme.md
  10. 9 0
      src/main/java/com/uas/platform/b2c/common/account/controller/SecurityController.java
  11. 7 0
      src/main/java/com/uas/platform/b2c/common/account/dao/EnterpriseDao.java
  12. 279 0
      src/main/java/com/uas/platform/b2c/common/account/model/ChangeAdminDetail.java
  13. 3 3
      src/main/java/com/uas/platform/b2c/common/account/model/ErpB2cLog.java
  14. 1 2
      src/main/java/com/uas/platform/b2c/common/account/model/Resource.java
  15. 1 2
      src/main/java/com/uas/platform/b2c/common/account/model/ResourceItem.java
  16. 1 2
      src/main/java/com/uas/platform/b2c/common/account/model/Role.java
  17. 1 2
      src/main/java/com/uas/platform/b2c/common/account/model/SigninLog.java
  18. 3 3
      src/main/java/com/uas/platform/b2c/common/account/model/TradeLog.java
  19. 1 2
      src/main/java/com/uas/platform/b2c/common/account/model/UsageLog.java
  20. 2 3
      src/main/java/com/uas/platform/b2c/common/account/model/User.java
  21. 9 0
      src/main/java/com/uas/platform/b2c/common/account/service/EnterpriseService.java
  22. 11 0
      src/main/java/com/uas/platform/b2c/common/account/service/impl/EnterpriseServiceImpl.java
  23. 46 0
      src/main/java/com/uas/platform/b2c/common/account/v2/controller/EnterpriseController.java
  24. 42 0
      src/main/java/com/uas/platform/b2c/common/account/v2/controller/UserController.java
  25. 23 0
      src/main/java/com/uas/platform/b2c/common/account/v2/service/EnterpriseService.java
  26. 21 0
      src/main/java/com/uas/platform/b2c/common/account/v2/service/UserService.java
  27. 70 0
      src/main/java/com/uas/platform/b2c/common/account/v2/service/impl/EnterpriseServiceImpl.java
  28. 78 0
      src/main/java/com/uas/platform/b2c/common/account/v2/service/impl/UserServiceImpl.java
  29. 1 2
      src/main/java/com/uas/platform/b2c/common/base/api/UploadController.java
  30. 30 0
      src/main/java/com/uas/platform/b2c/common/base/constant/FileClientConstant.java
  31. 35 0
      src/main/java/com/uas/platform/b2c/common/base/constant/FileUrl.java
  32. 3 3
      src/main/java/com/uas/platform/b2c/common/base/service/FileService.java
  33. 0 1
      src/main/java/com/uas/platform/b2c/common/base/service/ImageService.java
  34. 61 48
      src/main/java/com/uas/platform/b2c/common/base/service/impl/DFSImageServiceImpl.java
  35. 110 0
      src/main/java/com/uas/platform/b2c/common/base/service/impl/FileClientImpl.java
  36. 1 2
      src/main/java/com/uas/platform/b2c/common/base/service/impl/FileServiceImpl.java
  37. 152 0
      src/main/java/com/uas/platform/b2c/common/base/service/impl/RestMailServiceImpl.java
  38. 156 0
      src/main/java/com/uas/platform/b2c/common/base/service/impl/RestSmsServiceImpl.java
  39. 1 1
      src/main/java/com/uas/platform/b2c/common/help/dao/HelpNavDao.java
  40. 1 4
      src/main/java/com/uas/platform/b2c/common/help/model/HelpIssue.java
  41. 1 4
      src/main/java/com/uas/platform/b2c/common/help/model/HelpIssueInfo.java
  42. 1 4
      src/main/java/com/uas/platform/b2c/common/help/model/HelpNav.java
  43. 1 4
      src/main/java/com/uas/platform/b2c/common/message/model/MessageBoard.java
  44. 1 4
      src/main/java/com/uas/platform/b2c/common/message/model/MessageBoardImg.java
  45. 1 4
      src/main/java/com/uas/platform/b2c/common/message/model/MessageInfo.java
  46. 4 5
      src/main/java/com/uas/platform/b2c/common/search/api/SearchServiceImpl.java
  47. 118 0
      src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java
  48. 18 8
      src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java
  49. 19 0
      src/main/java/com/uas/platform/b2c/common/search/rpc/Readme.md
  50. 60 0
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/OrderSearchServiceImpl.java
  51. 381 0
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java
  52. 35 0
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/OrderSearchService.java
  53. 53 0
      src/main/java/com/uas/platform/b2c/common/search/rpc/service/SearchService.java
  54. 2 1
      src/main/java/com/uas/platform/b2c/common/search/service/SearcherService.java
  55. 24 7
      src/main/java/com/uas/platform/b2c/common/search/service/impl/SearcherServiceImpl.java
  56. 54 0
      src/main/java/com/uas/platform/b2c/core/config/MicroServicesConf.java
  57. 4 1
      src/main/java/com/uas/platform/b2c/core/config/MicroServicesConfMulti.java
  58. 30 0
      src/main/java/com/uas/platform/b2c/core/config/SysConf.java
  59. 8 4
      src/main/java/com/uas/platform/b2c/core/constant/Type.java
  60. 4 2
      src/main/java/com/uas/platform/b2c/core/filter/SSOInterceptor.java
  61. 29 0
      src/main/java/com/uas/platform/b2c/core/utils/RegexConstant.java
  62. 28 0
      src/main/java/com/uas/platform/b2c/core/utils/StringUtilB2C.java
  63. 1 1
      src/main/java/com/uas/platform/b2c/external/erp/order/api/OrderController.java
  64. 3 3
      src/main/java/com/uas/platform/b2c/external/erp/product/model/OperationInfo.java
  65. 1 2
      src/main/java/com/uas/platform/b2c/fa/payment/model/BankInfo.java
  66. 1 4
      src/main/java/com/uas/platform/b2c/fa/payment/model/BankTransAssociate.java
  67. 4 5
      src/main/java/com/uas/platform/b2c/fa/payment/model/BankTransfer.java
  68. 4 5
      src/main/java/com/uas/platform/b2c/fa/payment/model/Payment.java
  69. 1 2
      src/main/java/com/uas/platform/b2c/fa/payment/model/PaymentDetail.java
  70. 1 2
      src/main/java/com/uas/platform/b2c/fa/payment/model/TradeRecordChart.java
  71. 73 0
      src/main/java/com/uas/platform/b2c/fa/settlement/controller/BillSubmitController.java
  72. 9 0
      src/main/java/com/uas/platform/b2c/fa/settlement/dao/BillDao.java
  73. 14 0
      src/main/java/com/uas/platform/b2c/fa/settlement/dao/BillSubmitDao.java
  74. 1 2
      src/main/java/com/uas/platform/b2c/fa/settlement/model/Bill.java
  75. 1 4
      src/main/java/com/uas/platform/b2c/fa/settlement/model/BillInfo.java
  76. 275 0
      src/main/java/com/uas/platform/b2c/fa/settlement/model/BillSubmit.java
  77. 1 4
      src/main/java/com/uas/platform/b2c/fa/settlement/model/Refund.java
  78. 1 4
      src/main/java/com/uas/platform/b2c/fa/settlement/model/RefundDetail.java
  79. 1 2
      src/main/java/com/uas/platform/b2c/fa/settlement/model/RequestPayment.java
  80. 40 0
      src/main/java/com/uas/platform/b2c/fa/settlement/service/BillSubmitService.java
  81. 234 0
      src/main/java/com/uas/platform/b2c/fa/settlement/service/impl/BillSubmitServiceImpl.java
  82. 65 0
      src/main/java/com/uas/platform/b2c/logistics/constant/LogisticsType.java
  83. 12 0
      src/main/java/com/uas/platform/b2c/logistics/controller/AddressTakeSelfController.java
  84. 137 0
      src/main/java/com/uas/platform/b2c/logistics/controller/DistributionRuleController.java
  85. 19 0
      src/main/java/com/uas/platform/b2c/logistics/controller/LogisticsOldController.java
  86. 2 2
      src/main/java/com/uas/platform/b2c/logistics/dao/AddressTakeSelfDao.java
  87. 85 0
      src/main/java/com/uas/platform/b2c/logistics/dao/DistributionRuleDao.java
  88. 10 1
      src/main/java/com/uas/platform/b2c/logistics/dao/DistributorSellerDao.java
  89. 1 2
      src/main/java/com/uas/platform/b2c/logistics/model/Address.java
  90. 1 2
      src/main/java/com/uas/platform/b2c/logistics/model/AddressTakeSelf.java
  91. 278 0
      src/main/java/com/uas/platform/b2c/logistics/model/DistributionRule.java
  92. 15 2
      src/main/java/com/uas/platform/b2c/logistics/model/DistributorSeller.java
  93. 1 4
      src/main/java/com/uas/platform/b2c/logistics/model/Invoice.java
  94. 1 4
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceDetail.java
  95. 70 4
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrder.java
  96. 61 4
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrderDetail.java
  97. 75 6
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchase.java
  98. 61 4
      src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchaseDetail.java
  99. 1 4
      src/main/java/com/uas/platform/b2c/logistics/model/Logistics.java
  100. 1 4
      src/main/java/com/uas/platform/b2c/logistics/model/LogisticsCompanyCode.java

+ 3 - 1
.gitignore

@@ -3,6 +3,7 @@
 .settings/
 bin/
 tmp/
+test/
 *.tmp
 *.bak
 *.swp
@@ -55,4 +56,5 @@ pom.xml.versionsBackup
 pom.xml.next
 release.properties
 dependency-reduced-pom.xml
-buildNumber.properties
+buildNumber.properties
+/src/test/

+ 7 - 23
pom.xml

@@ -220,6 +220,12 @@
 			<groupId>com.oracle</groupId>
 			<artifactId>ojdbc6</artifactId>
 		</dependency>
+		<!-- mysql -->
+		<dependency>
+			<groupId>mysql</groupId>
+			<artifactId>mysql-connector-java</artifactId>
+			<version>5.1.21</version>
+		</dependency>
 		<dependency>
 			<groupId>org.springframework</groupId>
 			<artifactId>spring-orm</artifactId>
@@ -348,29 +354,7 @@
 			 <artifactId>spring-kafka</artifactId>
 			<version>1.2.2.RELEASE</version>
 		 </dependency>
-		<!-- dubbo -->
-		<dependency>
-			<groupId>com.alibaba</groupId>
-			<artifactId>dubbo</artifactId>
-			<exclusions>
-				<exclusion>
-					<groupId>javax.servlet</groupId>
-					<artifactId>javax.servlet-api</artifactId>
-				</exclusion>
-				<exclusion>
-					<groupId>org.apache.httpcomponents</groupId>
-					<artifactId>httpcore</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.zookeeper</groupId>
-			<artifactId>zookeeper</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>com.github.sgroschupf</groupId>
-			<artifactId>zkclient</artifactId>
-		</dependency>
+
 		<!-- service on dubbo -->
 		<dependency>
 			<groupId>com.uas.dfs</groupId>

+ 1 - 4
src/main/java/com/uas/platform/b2c/advertise/ad/model/StoreAds.java

@@ -10,10 +10,8 @@ import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Index;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 import java.util.Date;
@@ -33,8 +31,7 @@ public class StoreAds {
 	 * ID
 	 */
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "store$ads_gen")
-	@SequenceGenerator(name = "store$ads_gen", sequenceName = "store$ads_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 

+ 1 - 4
src/main/java/com/uas/platform/b2c/advertise/ad/model/StoreContent.java

@@ -10,11 +10,9 @@ import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
@@ -33,8 +31,7 @@ public class StoreContent {
 	 * ID
 	 */
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "store$content_gen")
-	@SequenceGenerator(name = "store$content_gen", sequenceName = "store$content_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 

+ 16 - 0
src/main/java/com/uas/platform/b2c/advertise/ad/service/FloorsService.java

@@ -19,4 +19,20 @@ public interface FloorsService {
 	 * @return the floors by module
 	 */
 	List<JSONObject> getFloorsByModule(String module);
+
+	/**
+	 * Gets floors by module.
+	 *
+	 * @param item the body
+	 * @return the floors by module
+	 */
+	Boolean setFloorsItem(JSONObject item);
+
+	/**
+	 * Gets floors by module.
+	 *
+	 * @param batchCode the body
+	 * @return the floors by module
+	 */
+	JSONObject isInHome(String batchCode);
 }

+ 1 - 1
src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/CarouselsServiceImpl.java

@@ -31,7 +31,7 @@ public class CarouselsServiceImpl implements CarouselService{
 
 	@Override
 	public List<JSONObject> getCarousels(String usedFor) {
-		String url = conf.getRequestUrl(20030, "/carousels?usedFor=" + usedFor);
+		String url = conf.getRequestUrlForCarousel(20030, "/carousels?usedFor=" + usedFor);
 		String result = restTemplate.getForEntity(url, String.class).getBody();
 		List<JSONObject> r = JsonUtil.parseJsonToObject(result);
 		return r;

+ 35 - 1
src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/FloorsServiceImpl.java

@@ -5,6 +5,7 @@ import com.uas.platform.b2c.advertise.ad.service.FloorsService;
 import com.uas.platform.b2c.core.config.MicroServicesConf;
 import com.uas.platform.b2c.core.utils.JacksonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
@@ -31,8 +32,41 @@ public class FloorsServiceImpl implements FloorsService {
 
 	@Override
 	public List<JSONObject> getFloorsByModule(String module) {
-		String url = conf.getRequestUrl(20040, "/floors?usedFor=" + module);
+		String url = conf.getRequestUrlForFloor(20040, "/floors?usedFor=" + module);
 		String result = restTemplate.getForEntity(url, String.class).getBody();
 		return JacksonUtils.fromJsonArray(result, JSONObject.class);
 	}
+
+	@Override
+	public Boolean setFloorsItem(JSONObject item){       //(String name, String brandEn ,String kind, String pictureUrl, String hrefUrl) {
+
+		String url = conf.getRequestUrlForFloor(20040, "/floors/"+item.get("floorId").toString()+"/item");
+		item.remove("floorId");
+		HttpStatus status = restTemplate.postForEntity(url,item,String.class).getStatusCode();
+		if (status.equals(HttpStatus.OK)){
+			return true;
+		}else{
+			return false;
+		}
+	}
+
+	@Override
+	public JSONObject isInHome(String batchCode) {
+		String url = conf.getRequestUrlForFloor(20040, "/floors?usedFor=home-v3");
+		String result = restTemplate.getForEntity(url, String.class).getBody();
+		List<JSONObject> floors = JacksonUtils.fromJsonArray(result,JSONObject.class);
+		List<JSONObject> items;
+		for (JSONObject floor : floors){
+			if (floor.get("name").equals("器件楼层")){
+				String floorId = floor.get("id").toString();
+				items = JacksonUtils.fromJsonArray(floor.get("items").toString(),JSONObject.class);
+				for (JSONObject item : items){
+					if (item.get("hrefUrl").toString().indexOf(batchCode) != -1){
+						return item.fluentPut("floorId",floorId);
+					}
+				}
+			}
+		}
+		return null;
+	}
 }

+ 41 - 8
src/main/java/com/uas/platform/b2c/advertise/news/service/impl/NewsServiceImpl.java

@@ -5,9 +5,16 @@ import com.uas.platform.b2c.advertise.news.service.NewsService;
 import com.uas.platform.b2c.core.config.MicroServicesConf;
 import com.uas.platform.b2c.core.utils.JacksonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+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.Service;
 import org.springframework.web.client.RestTemplate;
 
+import java.io.Serializable;
+
 /**
  * 新闻操作业务实现类
  *
@@ -17,37 +24,63 @@ import org.springframework.web.client.RestTemplate;
 @Service
 public class NewsServiceImpl implements NewsService {
 
+	private final RedisTemplate<Serializable,Serializable> redisTemplate;
+
 	private final MicroServicesConf conf;
 
 	private final RestTemplate restTemplate;
 
+	/**
+	 * 缓存刷新时间
+	 */
+	@Value("#{sys.newsRedisRefresh ?: 600}")
+	private long newsRedisRefresh;
+
 	@Autowired
-	public NewsServiceImpl(MicroServicesConf conf, RestTemplate restTemplate) {
+	public NewsServiceImpl(MicroServicesConf conf, RestTemplate restTemplate, RedisTemplate redisTemplate) {
 		this.conf = conf;
 		this.restTemplate = restTemplate;
+		this.redisTemplate = redisTemplate;
 	}
 
 	@Override
 	public JSONObject getNewsListByPage(int page, int pageSize) {
 		if (page <= 0) page = 1;
-		String url = conf.getRequestUrl(20210, "/news/created/v2?pagenumber=" + page +"&pagesize=" + pageSize + "&taxonomySlug=B2C");
-		String result = restTemplate.getForEntity(url, String.class).getBody();
-		return JacksonUtils.fromJson(result, JSONObject.class);
+		String url = conf.getRequestUrlForNews( "/news/created/v2?pagenumber=" + page +"&pagesize=" + pageSize + "&taxonomySlug=B2C");
+		return getDataFromRedisByUrl(url);
 	}
 
 	@Override
 	public JSONObject getNewsListOrderByViewCount(int page, int pageSize) {
 		if (page <= 0) page = 1;
-		String url = conf.getRequestUrl(20210, "/news/viewcount/v2?pagenumber=" + page +"&pagesize=" + pageSize + "&taxonomySlug=B2C");
-		String result = restTemplate.getForEntity(url, String.class).getBody();
-		return JacksonUtils.fromJson(result, JSONObject.class);
+		String url = conf.getRequestUrlForNews("/news/viewcount/v2?pagenumber=" + page +"&pagesize=" + pageSize + "&taxonomySlug=B2C");
+		return getDataFromRedisByUrl(url);
 	}
 
 	@Override
 	public JSONObject getNewsById(Long id) {
 		if (id == null) return null;
-		String url = conf.getRequestUrl(20210, "/news/" +  id);
+		String url = conf.getRequestUrlForNews( "/news/" +  id);
 		String result = restTemplate.getForEntity(url, String.class).getBody();
 		return JacksonUtils.fromJson(result, JSONObject.class);
 	}
+
+	private JSONObject getDataFromRedisByUrl(final String url){
+		Object result = redisTemplate.execute(new RedisCallback<Object>() {
+			@Override
+			public Object doInRedis(RedisConnection connection) throws DataAccessException {
+				byte[] key = redisTemplate.getStringSerializer().serialize(url);
+				if (connection.exists(key)) {
+					String value = redisTemplate.getStringSerializer().deserialize(connection.get(key));
+					return value;
+				}else {
+					byte[] value = redisTemplate.getStringSerializer().serialize(restTemplate.getForEntity(url, String.class).getBody());
+					connection.set(key, value);
+					connection.expire(key, newsRedisRefresh);
+					return redisTemplate.getStringSerializer().deserialize(connection.get(key));
+				}
+			}
+		});
+		return JacksonUtils.fromJson(result.toString(), JSONObject.class);
+	}
 }

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/account/Readme.md

@@ -8,12 +8,12 @@ account
 
 ## 创建人
 
-suntg
+hejq
 
 ## 创建时间
 
-2017年7月31日19:23:32
+2017年10月20
 
 ## 说明
 
-系统登录用户,用户、企业、角色、资源、权限
+商务平台、账户中心用户企业数据更新同步到商城

+ 9 - 0
src/main/java/com/uas/platform/b2c/common/account/controller/SecurityController.java

@@ -205,6 +205,15 @@ public class SecurityController {
 		model.addAttribute("askUrl", config.getCrossAskOutUrl());
 		Object referer = request.getSession().getAttribute(SSOConfig.SSOReferer);
 		model.addAttribute("returnUrl", null == referer ? "/" : referer.toString());
+		// 未登录情况下,登录地址
+		Object logoutUrl = null;
+		boolean cross = SSOHelper.isCrossDomain(request);
+		if (cross) {
+			logoutUrl = SSOHelper.getRedirectRefererLogoutUrl(request);
+		} else {
+			logoutUrl = SSOHelper.getRedirectLogoutUrl(request, String.valueOf(request.getSession().getAttribute("SSOReferer")));
+		}
+		model.addAttribute("logoutUrl", logoutUrl);
 		return model;
 	}
 

+ 7 - 0
src/main/java/com/uas/platform/b2c/common/account/dao/EnterpriseDao.java

@@ -28,4 +28,11 @@ public interface EnterpriseDao extends JpaSpecificationExecutor<Enterprise>, Jpa
 	 */
 	@Procedure(procedureName = "init_en_b2c")
 	public void callInitProcedure(Long enUU);
+
+	/**
+	 * 通过营业执照号码获取企业信息
+	 * @param bussinessCode
+	 * @return
+	 */
+	public Enterprise findByEnBussinessCode(String bussinessCode);
 }

+ 279 - 0
src/main/java/com/uas/platform/b2c/common/account/model/ChangeAdminDetail.java

@@ -0,0 +1,279 @@
+package com.uas.platform.b2c.common.account.model;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 更换管理员申请的详细信息
+ * 
+ * @author hejq
+ * @time 创建时间:2016年10月9日
+ */
+public class ChangeAdminDetail implements Serializable {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+
+	private Long id;
+	private String enName;
+	private Long enUu;
+	private String businessCodeImage;
+	private String businessCode;
+	private String adminName;
+	private String adminTel;
+	private String adminEmail;
+	private Long adminuu;
+	private String b2bUrl;
+	private Integer auditStatus;
+	private String auditResult;
+	private Short auditSendStatus;
+	private Integer dbStatus;
+	private Integer b2bStatus;
+	private Date enDate;
+	private String adminPassword;
+	private String appId;
+	private String method;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	/**
+	 * 企业名称
+	 */
+	public String getEnName() {
+		return enName;
+	}
+
+	public void setEnName(String enName) {
+		this.enName = enName;
+	}
+
+	/**
+	 * 企业UU
+	 * 
+	 * @return
+	 */
+	public Long getEnUu() {
+		return enUu;
+	}
+
+	public void setEnUu(Long enUu) {
+		this.enUu = enUu;
+	}
+
+	/**
+	 * 执照存储路径
+	 * 
+	 * @return
+	 */
+	public String getBusinessCodeImage() {
+		return businessCodeImage;
+	}
+
+	public void setBusinessCodeImage(String businessCodeImage) {
+		this.businessCodeImage = businessCodeImage;
+	}
+
+	/**
+	 * 企业执照号
+	 * 
+	 * @return
+	 */
+	public String getBusinessCode() {
+		return businessCode;
+	}
+
+	public void setBusinessCode(String businessCode) {
+		this.businessCode = businessCode;
+	}
+
+	/**
+	 * 管理员姓名
+	 * 
+	 * @return
+	 */
+	public String getAdminName() {
+		return adminName;
+	}
+
+	public void setAdminName(String adminName) {
+		this.adminName = adminName;
+	}
+
+	/**
+	 * 管理员手机
+	 * 
+	 * @return
+	 */
+	public String getAdminTel() {
+		return adminTel;
+	}
+
+	public void setAdminTel(String adminTel) {
+		this.adminTel = adminTel;
+	}
+
+	/**
+	 * 管理员邮箱
+	 * 
+	 * @return
+	 */
+	public String getAdminEmail() {
+		return adminEmail;
+	}
+
+	public void setAdminEmail(String adminEmail) {
+		this.adminEmail = adminEmail;
+	}
+
+	/**
+	 * 管理员uu
+	 * 
+	 * @return
+	 */
+	public Long getAdminuu() {
+		return adminuu;
+	}
+
+	public void setAdminuu(Long adminuu) {
+		this.adminuu = adminuu;
+	}
+
+	/**
+	 * 企业域名
+	 * 
+	 * @return
+	 */
+	public String getB2bUrl() {
+		return b2bUrl;
+	}
+
+	public void setB2bUrl(String b2bUrl) {
+		this.b2bUrl = b2bUrl;
+	}
+
+	/**
+	 * 申请审核状态
+	 * 
+	 * @return
+	 */
+	public Integer getAuditStatus() {
+		return auditStatus;
+	}
+
+	public void setAuditStatus(Integer auditStatus) {
+		this.auditStatus = auditStatus;
+	}
+
+	/**
+	 * 审核结果
+	 * 
+	 * @return
+	 */
+	public String getAuditResult() {
+		return auditResult;
+	}
+
+	public void setAuditResult(String auditResult) {
+		this.auditResult = auditResult;
+	}
+
+	/**
+	 * 资料上传状态
+	 * 
+	 * @return
+	 */
+	public Short getAuditSendStatus() {
+		return auditSendStatus;
+	}
+
+	public void setAuditSendStatus(Short auditSendStatus) {
+		this.auditSendStatus = auditSendStatus;
+	}
+
+	/**
+	 * 数据库账套情况
+	 * 
+	 * @return
+	 */
+	public Integer getDbStatus() {
+		return dbStatus;
+	}
+
+	public void setDbStatus(Integer dbStatus) {
+		this.dbStatus = dbStatus;
+	}
+
+	/**
+	 * 企业B2B状态 ( 申请中 未激活 已激活)
+	 * 
+	 * @return
+	 */
+	public Integer getB2bStatus() {
+		return b2bStatus;
+	}
+
+	public void setB2bStatus(Integer b2bStatus) {
+		this.b2bStatus = b2bStatus;
+	}
+
+	/**
+	 * 申请时间
+	 * 
+	 * @return
+	 */
+	public Date getEnDate() {
+		return enDate;
+	}
+
+	public void setEnDate(Date enDate) {
+		this.enDate = enDate;
+	}
+
+	/**
+	 * 管理员密码
+	 * 
+	 * @return
+	 */
+	public String getAdminPassword() {
+		return adminPassword;
+	}
+
+	public void setAdminPassword(String adminPassword) {
+		this.adminPassword = adminPassword;
+	}
+
+	/**
+	 * appId
+	 * 
+	 * @return
+	 */
+	public String getAppId() {
+		return appId;
+	}
+
+	public void setAppId(String appId) {
+		this.appId = appId;
+	}
+
+
+	/**
+	 * 更换方式
+	 *
+	 * @return
+	 */
+	public String getMethod() {
+		return method;
+	}
+
+	public void setMethod(String method) {
+		this.method = method;
+	}
+}

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/account/model/ErpB2cLog.java

@@ -27,8 +27,7 @@ public class ErpB2cLog extends BufferedLogable implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "log$erp_b2c_gen")
-	@SequenceGenerator(name = "log$erp_b2c_gen", sequenceName = "log$erp_b2c_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "log_id")
 	private Long id;
 
@@ -64,7 +63,8 @@ public class ErpB2cLog extends BufferedLogable implements Serializable {
 	/**
 	 * 具体内容
 	 */
-	@Column(name = "log_message")
+	@Lob
+	@Column(name = "log_message", columnDefinition = "TEXT")
 	private String message;
 
 	/**

+ 1 - 2
src/main/java/com/uas/platform/b2c/common/account/model/Resource.java

@@ -26,8 +26,7 @@ public class Resource implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec$resources_gen_b2c")
-	@SequenceGenerator(name = "sec$resources_gen_b2c", sequenceName = "sec$resources_seq_b2c", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "res_id")
 	private Long id;
 

+ 1 - 2
src/main/java/com/uas/platform/b2c/common/account/model/ResourceItem.java

@@ -24,8 +24,7 @@ public class ResourceItem implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec$resourceitems_gen_b2c")
-	@SequenceGenerator(name = "sec$resourceitems_gen_b2c", sequenceName = "sec$resourceitems_seq_b2c", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "item_id")
 	private Long id;
 

+ 1 - 2
src/main/java/com/uas/platform/b2c/common/account/model/Role.java

@@ -23,8 +23,7 @@ public class Role implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sec$roles_gen_b2c")
-	@SequenceGenerator(name = "sec$roles_gen_b2c", sequenceName = "sec$roles_seq_b2c", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "role_id")
 	private Long id;
 

+ 1 - 2
src/main/java/com/uas/platform/b2c/common/account/model/SigninLog.java

@@ -26,8 +26,7 @@ public class SigninLog implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "log$signin_b2c_gen")
-	@SequenceGenerator(name = "log$signin_b2c_gen", sequenceName = "log$signin_b2c_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "log_id")
 	private Long id;
 

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/account/model/TradeLog.java

@@ -23,8 +23,7 @@ public class TradeLog extends BufferedLogable implements Serializable {
 	private static final long serialVersionUID = 6066338442401737012L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TRADE$LOG_VOUCHER_GEN")
-	@SequenceGenerator(name = "TRADE$LOG_VOUCHER_GEN", sequenceName = "TRADE$LOG_VOUCHER_SEQ", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "log_id")
 	private Long id;
 
@@ -79,7 +78,8 @@ public class TradeLog extends BufferedLogable implements Serializable {
 	 * 2、状态变更时,记录其状态变更以及受影响的单据编号
 	 * 3、启动异常流程时,记录异常单据的
 	 */
-	@Column(name = "log_change_log",length = 4000)
+	@Lob
+	@Column(name = "log_change_log", columnDefinition = "TEXT")
 	private String changeLog;
 
 	public enum VoucherOperation {

+ 1 - 2
src/main/java/com/uas/platform/b2c/common/account/model/UsageLog.java

@@ -27,8 +27,7 @@ public class UsageLog extends BufferedLogable implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "log$usage_b2c_gen")
-	@SequenceGenerator(name = "log$usage_b2c_gen", sequenceName = "log$usage_b2c_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "log_id")
 	private Long id;
 

+ 2 - 3
src/main/java/com/uas/platform/b2c/common/account/model/User.java

@@ -43,8 +43,7 @@ public class User implements Serializable {
 	 * uu号,ID
 	 */
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "users_gen")
-	@SequenceGenerator(name = "users_gen", sequenceName = "users_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "user_uu")
 	private Long userUU;
 
@@ -63,7 +62,7 @@ public class User implements Serializable {
 	/**
 	 * 邮箱
 	 */
-	@Column(name = "user_email", length = 50, nullable = false)
+	@Column(name = "user_email", length = 50)
 	@NotNull
 	private String userEmail;
 

+ 9 - 0
src/main/java/com/uas/platform/b2c/common/account/service/EnterpriseService.java

@@ -4,10 +4,19 @@ import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.trade.support.ResultMap;
 
+import java.util.List;
+
 public interface EnterpriseService {
 
 	// 根据企业uu获取企业信息
 	public Enterprise getEnterpriseInfo(Long uu);
+
+	/**
+	 * 批量获取企业的信息
+	 * @param enuus uu号
+	 * @return List<Enterprise>
+	 */
+	List<Enterprise> getEnterpriseInfos(List<Long> enuus);
 	
 	// 得到企业是否有需要结算单据状态
 	public Enterprise getReceiptStatus(Enterprise enter);

+ 11 - 0
src/main/java/com/uas/platform/b2c/common/account/service/impl/EnterpriseServiceImpl.java

@@ -42,6 +42,17 @@ public class EnterpriseServiceImpl implements EnterpriseService{
 		return enterpriseDao.findByUu(uu);
 	}
 
+	/**
+	 * 批量获取企业的信息
+	 *
+	 * @param enuus uu号
+	 * @return List<Enterprise>
+	 */
+	@Override
+	public List<Enterprise> getEnterpriseInfos(List<Long> enuus) {
+		return enterpriseDao.findByUus(enuus);
+	}
+
 	@Override
 	public Enterprise getReceiptStatus(Enterprise enter) {
 		List<Receipt> receipts = receiptDao.findBySellerenuu(enter.getUu());

+ 46 - 0
src/main/java/com/uas/platform/b2c/common/account/v2/controller/EnterpriseController.java

@@ -0,0 +1,46 @@
+package com.uas.platform.b2c.common.account.v2.controller;
+
+import com.uas.account.entity.UserSpace;
+import com.uas.account.entity.UserSpaceDetail;
+import com.uas.platform.b2c.common.account.model.ChangeAdminDetail;
+import com.uas.platform.b2c.common.account.v2.service.EnterpriseService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller("v2.EnterpriseController")
+@RequestMapping(value = "api/public/enterprise")
+public class EnterpriseController {
+
+	@Autowired
+	private EnterpriseService enterpriseService;
+
+    /**
+     * 企业信息更新
+     *
+     * @param userSpace
+     * @param userSpaceDetail
+     */
+	@RequestMapping(method = RequestMethod.POST)
+	@ResponseBody
+	public void update(UserSpace userSpace, UserSpaceDetail userSpaceDetail) {
+		if (null != userSpace && null != userSpaceDetail) {
+			 enterpriseService.update(userSpace, userSpaceDetail);
+		}
+	}
+
+    /**
+     * 更换管理员同步信息
+     *
+     * @param detail
+     */
+	@RequestMapping(value = "/changeadmin", method = RequestMethod.POST)
+    @ResponseBody
+    public void  changeAmin(ChangeAdminDetail detail) {
+	    if(null != detail) {
+            enterpriseService.changeAdmin(detail);
+        }
+    }
+}

+ 42 - 0
src/main/java/com/uas/platform/b2c/common/account/v2/controller/UserController.java

@@ -0,0 +1,42 @@
+package com.uas.platform.b2c.common.account.v2.controller;
+
+import com.uas.account.entity.User;
+import com.uas.platform.b2c.common.account.v2.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+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.ResponseBody;
+
+@Controller("v2.UserController")
+@RequestMapping(value = "api/public/user")
+public class UserController {
+
+	@Autowired
+	private UserService userService;
+
+    /**
+     * b2b修改用户信息
+     *
+     * @param user
+     */
+	@RequestMapping(method = RequestMethod.POST)
+	@ResponseBody
+	public void save(User user) {
+		if (user != null) {
+			 userService.save(user);
+		}
+	}
+
+    /**
+     * 删除用户
+     *
+     * @param uu
+     */
+	@RequestMapping(value = "/removeUser/{uu}", method = RequestMethod.POST)
+    @ResponseBody
+    public void removeUser(@PathVariable Long uu) {
+        userService.delete(uu);
+    }
+}

+ 23 - 0
src/main/java/com/uas/platform/b2c/common/account/v2/service/EnterpriseService.java

@@ -0,0 +1,23 @@
+package com.uas.platform.b2c.common.account.v2.service;
+
+import com.uas.account.entity.UserSpace;
+import com.uas.account.entity.UserSpaceDetail;
+import com.uas.platform.b2c.common.account.model.ChangeAdminDetail;
+
+public interface EnterpriseService {
+
+    /**
+     * 更新企业信息
+     *
+     * @param userSpace
+     * @param userSpaceDetail
+     */
+    void update(UserSpace userSpace, UserSpaceDetail userSpaceDetail);
+
+    /**
+     * 更换管理员
+     *
+     * @param detail
+     */
+    void changeAdmin(ChangeAdminDetail detail);
+}

+ 21 - 0
src/main/java/com/uas/platform/b2c/common/account/v2/service/UserService.java

@@ -0,0 +1,21 @@
+package com.uas.platform.b2c.common.account.v2.service;
+
+
+import com.uas.account.entity.User;
+
+public interface UserService {
+
+    /**
+     * b2b修改用户信息
+     *
+     * @param user
+     */
+	void save(User user);
+
+    /**
+     * 删除用户
+     *
+     * @param uu
+     */
+    void delete(Long uu);
+}

+ 70 - 0
src/main/java/com/uas/platform/b2c/common/account/v2/service/impl/EnterpriseServiceImpl.java

@@ -0,0 +1,70 @@
+package com.uas.platform.b2c.common.account.v2.service.impl;
+
+import com.uas.account.entity.UserSpace;
+import com.uas.account.entity.UserSpaceDetail;
+import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
+import com.uas.platform.b2c.common.account.dao.UserDao;
+import com.uas.platform.b2c.common.account.model.ChangeAdminDetail;
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.common.account.v2.service.EnterpriseService;
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+@Service("v2.EnterpriseService")
+public class EnterpriseServiceImpl implements EnterpriseService {
+
+	@Autowired
+	private EnterpriseDao enterpriseDao;
+
+	@Autowired
+    private UserDao userDao;
+
+    private static final UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
+
+    @Override
+    public void update(UserSpace userSpace, UserSpaceDetail userSpaceDetail) {
+        Enterprise enterprise = new Enterprise();
+        Enterprise oldenterprise = enterpriseDao.findByUu(Long.valueOf(userSpace.getDialectUID()));
+        enterprise.setEnAddress(userSpaceDetail.getAddress());
+        enterprise.setEnArea(userSpaceDetail.getArea());
+        enterprise.setEnCorporation(userSpaceDetail.getCorporation());
+        enterprise.setEnBussinessCode(userSpaceDetail.getBusinessCode());
+        enterprise.setEnFax(userSpaceDetail.getFax());
+        enterprise.setEnEmail(userSpaceDetail.getAdminEmail());
+        enterprise.setEnIndustry(userSpaceDetail.getIndustry());
+        enterprise.setEnName(userSpaceDetail.getName());
+        enterprise.setEnLogoUrl(userSpaceDetail.getBusinessCodeImage());
+        enterprise.setUu(Long.valueOf(userSpace.getDialectUID()));
+        enterpriseDao.save(enterprise);
+        if(null != oldenterprise) {
+            logger.log("更新企业信息", enterprise.getUu()+"time: " + sdf.format(new Date()));
+        } else {
+            logger.log("新增企业信息", enterprise.getUu()+"time: " + sdf.format(new Date()));
+        }
+    }
+
+    @Override
+    public void changeAdmin(ChangeAdminDetail detail) {
+        Enterprise enterprise = enterpriseDao.findByUu(detail.getEnUu());
+        if(null != enterprise) {
+            if(null != detail.getAdminTel()) {
+                List<User> users = userDao.findUserByUserTel(detail.getAdminTel());
+                if(!CollectionUtils.isEmpty(users)) {
+                    enterprise.setEnAdminuu(users.get(0).getUserUU());
+                    enterpriseDao.save(enterprise);
+                    logger.log("更换管理员", enterprise.getEnName()+"," +users.get(0).getUserName() + "time:" + sdf.format(new Date()));
+                }
+            }
+        }
+    }
+}

+ 78 - 0
src/main/java/com/uas/platform/b2c/common/account/v2/service/impl/UserServiceImpl.java

@@ -0,0 +1,78 @@
+package com.uas.platform.b2c.common.account.v2.service.impl;
+
+import com.uas.account.entity.User;
+import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
+import com.uas.platform.b2c.common.account.dao.UserDao;
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.v2.service.UserService;
+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.Status;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+
+@Service("v2.UserService")
+public class UserServiceImpl implements UserService {
+
+	@Autowired
+	private UserDao userDao;
+
+	@Autowired
+    private EnterpriseDao enterpriseDao;
+
+    private static final UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
+
+    @Override
+    public void save(User user) {
+        com.uas.platform.b2c.common.account.model.User u =  new com.uas.platform.b2c.common.account.model.User();
+        u.setUserPwd(user.getPassword());
+        u.setUserName(user.getName());
+        u.setEnable((short) 1);
+        u.setUserEmail(user.getSecondUID());
+        u.setUserUU(Long.valueOf(user.getDialectUID()));
+        Enterprise enterprise = enterpriseDao.findByUu(Long.valueOf(user.getSpaceDialectUID()));
+        if(null != enterprise) {
+            u.setEnterprise(enterprise);
+        }
+        List<com.uas.platform.b2c.common.account.model.User> oldUsers = userDao.findUserByUserUU(u.getUserUU());
+        userDao.save(u);
+        if(oldUsers.size() > 0) {
+            logger.log("更新用户信息", user.getDialectUID() + "time: " + sdf.format(new Date()));
+        } else {
+            if(null != enterprise && null == enterprise.getEnAdminuu()) {
+                enterprise.setEnAdminuu(u.getUserUU());
+                enterpriseDao.save(enterprise);
+                logger.log("设置管理员", enterprise.getEnName() + "," + u.getUserName() + "time: " + sdf.format(new Date()));
+            }
+            logger.log("新增用户信息", user.getDialectUID() + "time: " + sdf.format(new Date()));
+        }
+    }
+
+
+    @Override
+    public void delete(Long uu) {
+        com.uas.platform.b2c.common.account.model.User user = userDao.findOne(uu);
+        if(null != user) {
+            if (user.getEnterprises().contains(SystemSession.getUser().getEnterprise())) {
+                user.removeEnterprise(SystemSession.getUser().getEnterprise());
+                if (user.getEnterprises().size() != 0) {
+                    user.setEnable((short) Status.DISABLED.value());
+                    logger.log("删除用户", "禁用" + user.getUserUU());
+                    userDao.save(user);
+                }
+                if (user.getEnterprises().size() == 0) {
+                    userDao.delete(user);
+                    logger.log("删除用户", "删除" + user.getUserUU());
+                }
+            }
+        }
+    }
+}

+ 1 - 2
src/main/java/com/uas/platform/b2c/common/base/api/UploadController.java

@@ -12,7 +12,6 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -45,7 +44,7 @@ public class UploadController {
             try {
                 IPicture picture = imageService.save(mf.getOriginalFilename(), mf.getBytes());
                 pictures.add(picture);
-            } catch (IOException e) {
+            } catch (Exception e) {
                 e.printStackTrace();
             }
         }

+ 30 - 0
src/main/java/com/uas/platform/b2c/common/base/constant/FileClientConstant.java

@@ -0,0 +1,30 @@
+package com.uas.platform.b2c.common.base.constant;
+
+public class FileClientConstant {
+
+    /**
+     * 文件上传
+     */
+    public final static String FILE_UPLOAD = "/file/upload";
+
+
+    /**
+     * 文件下载
+     */
+    public final static String FILE_DOWNLOAD = "/file/download";
+
+    /**
+     * 文件删除
+     */
+    public final static String FILE_DELETE = "/file/delete";
+
+    /**
+     * 文件信息
+     */
+    public final static String FILE_INFO = "/file/info";
+
+    /**
+     * 文件额外属性
+     */
+    public final static String FILE_METADATA = "/file/metadata";
+}

+ 35 - 0
src/main/java/com/uas/platform/b2c/common/base/constant/FileUrl.java

@@ -0,0 +1,35 @@
+package com.uas.platform.b2c.common.base.constant;
+
+/**
+ * 文件服务器的基本链接
+ *
+ * @author yuj 2017-10-12 14:53
+ */
+public class FileUrl {
+
+    /**
+     * 文件上传
+     */
+    public final static String FILE_UPLOAD = "http://10.10.100.200:9999/file/upload";
+
+
+    /**
+     * 文件下载
+     */
+    public final static String FILE_DOWNLOAD = "http://10.10.100.200:9999/file/download";
+
+    /**
+     * 文件删除
+     */
+    public final static String FILE_DELETE = "http://10.10.100.200:9999/file/delete";
+
+    /**
+     * 文件信息
+     */
+    public final static String FILE_INFO = "http://10.10.100.200:9999/file/info";
+
+    /**
+     * 文件额外属性
+     */
+    public final static String FILE_METADATA = "http://10.10.100.200:9999/file/metadata";
+}

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/base/service/FileService.java

@@ -17,10 +17,10 @@ public interface FileService {
     public String save(FileUpload fileUpload);
 
     /**
-     * 保存文件
+     * 用户上传文件
      * @param fileName 文件名
-     * @param fileBytes 文件字节数组
-     * @return 文件路径
+     * @param fileBytes 字节数组
+     * @return String
      */
     public String save(String fileName, byte[] fileBytes);
 

+ 0 - 1
src/main/java/com/uas/platform/b2c/common/base/service/ImageService.java

@@ -37,5 +37,4 @@ public interface ImageService {
 	 * @return 文件
 	 */
 	public IPicture save(String fileName, byte[] fileBytes);
-
 }

+ 61 - 48
src/main/java/com/uas/platform/b2c/common/base/service/impl/DFSImageServiceImpl.java

@@ -1,61 +1,74 @@
 package com.uas.platform.b2c.common.base.service.impl;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
 import com.uas.dfs.service.FileClient;
 import com.uas.platform.b2c.common.base.dao.DBPictureRepository;
 import com.uas.platform.b2c.common.base.model.DBPicture;
 import com.uas.platform.b2c.common.base.model.IPicture;
 import com.uas.platform.b2c.common.base.service.ImageService;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 @Service
 public class DFSImageServiceImpl implements ImageService {
 
-	@Autowired
-	private FileClient fileClient;
-
-	@Autowired
-	private DBPictureRepository pictureRepository;
-
-	@Override
-	public List<DBPicture> save(List<File> files) {
-		List<DBPicture> pictures = new ArrayList<DBPicture>();
-		for (File file : files) {
-			try {
-				String fileUrl = fileClient.uploadImage(FileUtils.readFileToByteArray(file), file.length(),
-						FilenameUtils.getExtension(file.getName()), null);
-				pictures.add(new DBPicture(file.getName(), fileUrl, com.uas.platform.core.util.FileUtils.getImagePixel(file)));
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
-		}
-		return pictureRepository.save(pictures);
-	}
-
-	@Override
-	public DBPicture save(File file) {
-		try {
-			String fileUrl = fileClient.uploadImage(FileUtils.readFileToByteArray(file), file.length(),
-					FilenameUtils.getExtension(file.getName()), null);
-			return pictureRepository.save(new DBPicture(file.getName(), fileUrl, com.uas.platform.core.util.FileUtils.getImagePixel(file)));
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		return null;
-	}
-
-	@Override
-	public IPicture save(String fileName, byte[] fileBytes) {
-		String fileUrl = fileClient.uploadImage(fileBytes, fileBytes.length, FilenameUtils.getExtension(fileName), null);
-		return pictureRepository.save(new DBPicture(fileName, fileUrl, com.uas.platform.core.util.FileUtils.getImagePixel(fileBytes)));
-	}
+    @Autowired
+    private FileClient fileClient;
+
+    @Autowired
+    private DBPictureRepository pictureRepository;
+
+    @Override
+    public List<DBPicture> save(List<File> files) {
+        List<DBPicture> pictures = new ArrayList<DBPicture>();
+        for (File file : files) {
+            try {
+                String fileUrl = fileClient.upload(FileUtils.readFileToByteArray(file), file.length(),
+                        FilenameUtils.getExtension(file.getName()), null);
+                pictures.add(new DBPicture(file.getName(), fileUrl, com.uas.platform.core.util.FileUtils.getImagePixel(file)));
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return pictureRepository.save(pictures);
+    }
+
+    @Override
+    public DBPicture save(File file) {
+        try {
+            String fileUrl = fileClient.upload(FileUtils.readFileToByteArray(file), file.length(),
+                    FilenameUtils.getExtension(file.getName()), null);
+            return pictureRepository.save(new DBPicture(file.getName(), fileUrl, com.uas.platform.core.util.FileUtils.getImagePixel(file)));
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public IPicture save(String fileName, byte[] fileBytes) {
+        String fileUrl = fileClient.upload(fileBytes, fileBytes.length, FilenameUtils.getExtension(fileName), null);
+        return pictureRepository.save(new DBPicture(fileName, fileUrl, com.uas.platform.core.util.FileUtils.getImagePixel(fileBytes)));
+    }
+
+//    @Override
+//    public IPicture uploadFile(MultipartFile mf) throws Exception {
+//        HttpUtils.Response response = HttpUtils.upload(FileUrl.FILE_UPLOAD, mf, null);
+//        if (response.getStatusCode() == 200) {
+//            JSONObject obj = FastjsonUtils.parseObject(response.getResponseText());
+//
+//            String fileName = mf.getOriginalFilename();
+//            String fileUrl = (String) obj.get("path");
+//            return pictureRepository.save(new DBPicture(fileName, fileUrl, com.uas.platform.core.util.FileUtils.getImagePixel(mf.getBytes())));
+//        } else {
+//            throw new IllegalStateException(response.getResponseText());
+//        }
+//    }
 
 }

+ 110 - 0
src/main/java/com/uas/platform/b2c/common/base/service/impl/FileClientImpl.java

@@ -0,0 +1,110 @@
+package com.uas.platform.b2c.common.base.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.dfs.domain.FileInfo;
+import com.uas.dfs.domain.MetaData;
+import com.uas.dfs.service.FileClient;
+import com.uas.platform.b2c.common.base.constant.FileClientConstant;
+import com.uas.platform.b2c.core.config.SysConf;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.http.*;
+import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.io.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+@Service
+public class FileClientImpl implements FileClient {
+
+    private final RestTemplate restTemplate;
+
+    private final SysConf sysConf;
+
+    @Autowired
+    public FileClientImpl(RestTemplate restTemplate, SysConf sysConf) {
+        this.restTemplate = restTemplate;
+        this.sysConf = sysConf;
+    }
+
+    @Override
+    public String upload(byte[] bytes, long l, final String s, Set<MetaData> set) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("multipart/form-data;charset=UTF-8");
+        headers.setContentType(type);
+
+        File file = new File(s);
+        try {
+            OutputStream output = new FileOutputStream(file);
+            BufferedOutputStream bufferedOutput = new BufferedOutputStream(output);
+            bufferedOutput.write(bytes);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        MultiValueMap<String, Object> form = new LinkedMultiValueMap<String, Object>();
+        ByteArrayResource arrayResource = new ByteArrayResource(bytes){
+            @Override
+            public String getFilename() throws IllegalStateException {
+                return "test." + s;
+            }
+
+        };
+        form.add("file", arrayResource);
+
+        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(form, headers);
+        ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(sysConf.getUploadFileUrl() + FileClientConstant.FILE_UPLOAD, requestEntity, JSONObject.class);
+        return responseEntity.getBody().getString("path");
+    }
+
+    @Override
+    public byte[] download(String s) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("path", s);
+        HttpHeaders headers = new HttpHeaders();
+        ResponseEntity<byte[]> response = restTemplate.exchange(sysConf.getUploadFileUrl() + FileClientConstant.FILE_DOWNLOAD, HttpMethod.GET,
+                new HttpEntity<byte[]>(headers), byte[].class, params);
+        return response.getBody();
+    }
+
+    @Override
+    public void delete(String s) {
+        Map<String, Object> params = new HashMap<String, Object>();
+        params.put("path", s);
+        restTemplate.delete(sysConf.getUploadFileUrl() + FileClientConstant.FILE_DELETE, params);
+    }
+
+    @Override
+    public String uploadImage(byte[] bytes, long l, String s, Set<MetaData> set) {
+        // 项目无用到,暂不实现
+        return null;
+    }
+
+    @Override
+    public FileInfo getInfo(String s) {
+        // 项目无用到,暂不实现
+        return null;
+    }
+
+    @Override
+    public Set<MetaData> getMetaData(String s) {
+        // 项目无用到,暂不实现
+        return null;
+    }
+
+    @Override
+    public void mergeMetaData(String s, Set<MetaData> set) {
+        // 项目无用到,暂不实现
+    }
+
+    @Override
+    public void overrideMetaData(String s, Set<MetaData> set) {
+        // 项目无用到,暂不实现
+    }
+
+}

+ 1 - 2
src/main/java/com/uas/platform/b2c/common/base/service/impl/FileServiceImpl.java

@@ -31,8 +31,7 @@ public class FileServiceImpl implements FileService {
 	@Override
 	public String save(String fileName, byte[] fileBytes) {
 		try {
-			String path = fileClient.upload(fileBytes, fileBytes.length, FilenameUtils.getExtension(fileName), null);
-			return path;
+            return fileClient.upload(fileBytes, fileBytes.length, FilenameUtils.getExtension(fileName), null);
 		} catch (Exception e) {
 			e.printStackTrace();
 			throw new IllegalOperatorException("附件上传失败");

+ 152 - 0
src/main/java/com/uas/platform/b2c/common/base/service/impl/RestMailServiceImpl.java

@@ -0,0 +1,152 @@
+package com.uas.platform.b2c.common.base.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.message.common.domain.MapMessage;
+import com.uas.message.common.domain.Page;
+import com.uas.message.mail.domain.MailLog;
+import com.uas.message.mail.service.MailService;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 基于RestTemplate实现的邮件发送接口
+ * @author suntg
+ * @since 2017年10月20日15:12:47
+ */
+@Service
+public class RestMailServiceImpl implements MailService {
+
+    private RestTemplate restTemplate;
+
+    /**
+     * 邮件服务主机地址
+     */
+    private static final String MAIL_CONSOLE_HOST = "http://10.10.100.23:28029/";
+
+    /**
+     * 发送邮件给单个人url
+     */
+    private static final String MAIL_SEND_URL = MAIL_CONSOLE_HOST  + "mail/send";
+
+    /**
+     * 发送邮件给多个人 url
+     */
+    private static final String MAIL_SEND_MANY_URL = MAIL_CONSOLE_HOST + "mail/send/o2m";
+
+    @Autowired
+    public RestMailServiceImpl(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+
+    @Override
+    public List<Map<String, Object>> sendByDefault(String[] strings, String s, String s1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public MailLog send(MapMessage mapMessage) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public List<MailLog> sendAll(MapMessage mapMessage) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    /**
+     * 发送邮件给个人
+     * @param templateId
+     * @param receiver
+     * @param params
+     * @return
+     */
+    @Override
+    public MailLog send(String templateId, String receiver, Map<String, Object> params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("receiver", receiver);
+        object.put("params", params);
+
+        HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+        ResponseEntity<MailLog> responseEntity = restTemplate.postForEntity(MAIL_SEND_URL, formEntity, MailLog.class);
+        return responseEntity.getBody();
+    }
+
+    /**
+     * 发送邮件给多个人
+     * @param templateId
+     * @param receivers
+     * @param params
+     * @return
+     */
+    @Override
+    public List<MailLog> sendAll(String templateId, Set<String> receivers, Map<String, Object> params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("receivers", receivers);
+        object.put("params", params);
+
+        HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(MAIL_SEND_MANY_URL, formEntity, String.class);
+        List<MailLog> mailLogs = FastjsonUtils.fromJsonArray(responseEntity.getBody(), MailLog.class);
+        return mailLogs;
+    }
+
+    @Override
+    public List<MailLog> sendAll(List<MapMessage> list) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(String s, int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(boolean b, int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public Page<MailLog> findLogs(String s, String s1, Boolean aBoolean, int i, int i1) {
+        // 没用到,暂无实现
+        return null;
+    }
+
+    @Override
+    public void deleteLogs(String s) {
+        // 没用到,暂无实现
+    }
+}

+ 156 - 0
src/main/java/com/uas/platform/b2c/common/base/service/impl/RestSmsServiceImpl.java

@@ -0,0 +1,156 @@
+package com.uas.platform.b2c.common.base.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.message.common.domain.Page;
+import com.uas.message.common.domain.SimpleMessage;
+import com.uas.message.mail.domain.MailLog;
+import com.uas.message.sms.domain.SmsLog;
+import com.uas.message.sms.service.SmsService;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 基于RestTemplate实现的短信息发送接口
+ * @author suntg
+ * @since 2017年10月20日15:13:23
+ */
+@Service
+public class RestSmsServiceImpl implements SmsService {
+
+    private RestTemplate restTemplate;
+
+    /**
+     * 短信服务主机地址
+     */
+    private static final String SMS_CONSOLE_HOST = "http://10.10.100.23:28029/";
+
+    /**
+     * 发送短信给单个人url
+     */
+    private static final String SMS_SEND_URL = SMS_CONSOLE_HOST  + "sms/send";
+
+    /**
+     * 发送短信给多个人 url
+     */
+    private static final String SMS_SEND_MANY_URL = SMS_CONSOLE_HOST + "sms/send/o2m";
+
+    @Autowired
+    public RestSmsServiceImpl(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+
+    @Override
+    public List<Map<String, Object>> sendByDefault(String[] strings, String s) {
+        return null;
+    }
+
+    @Override
+    public SmsLog send(SimpleMessage simpleMessage) {
+        return null;
+    }
+
+    @Override
+    public List<SmsLog> sendAll(SimpleMessage simpleMessage) {
+        return null;
+    }
+
+    /**
+     * 发送短信给个人
+     * @param templateId
+     * @param receiver
+     * @param params
+     * @return
+     */
+    @Override
+    public SmsLog send(String templateId, String receiver, Object[] params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("receiver", receiver);
+        object.put("params", params);
+
+        HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+        ResponseEntity<SmsLog> responseEntity = restTemplate.postForEntity(SMS_SEND_URL, formEntity, SmsLog.class);
+        return responseEntity.getBody();
+    }
+
+    /**
+     * 发送短信给多个人
+     * @param templateId
+     * @param receivers
+     * @param params
+     * @return
+     */
+    @Override
+    public List<SmsLog> sendAll(String templateId, Set<String> receivers, Object[] params) {
+        HttpHeaders headers = new HttpHeaders();
+        MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
+        headers.setContentType(type);
+        headers.add("Accept", MediaType.APPLICATION_JSON.toString());
+
+        JSONObject object = new JSONObject();
+        object.put("templateId", templateId);
+        object.put("receivers", receivers);
+        object.put("params", params);
+
+        HttpEntity<String> formEntity = new HttpEntity<String>(object.toJSONString(), headers);
+        ResponseEntity<String> responseEntity = restTemplate.postForEntity(SMS_SEND_MANY_URL, formEntity, String.class);
+        List<SmsLog> mailLogs = FastjsonUtils.fromJsonArray(responseEntity.getBody(), SmsLog.class);
+        return mailLogs;
+    }
+
+    /**
+     * 发送多个发送请求
+     * @param list
+     * @return
+     */
+    @Override
+    public List<SmsLog> sendAll(List<SimpleMessage> list) {
+        if(! CollectionUtils.isEmpty(list)) {
+            for(SimpleMessage message : list) {
+                send(message.getTemplateId(), message.getReceiver(), message.getParams());
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(String s, int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(boolean b, int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public Page<SmsLog> findLogs(String s, String s1, Boolean aBoolean, int i, int i1) {
+        return null;
+    }
+
+    @Override
+    public void deleteLogs(String s) {
+
+    }
+}

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/help/dao/HelpNavDao.java

@@ -27,7 +27,7 @@ public interface HelpNavDao extends JpaSpecificationExecutor<HelpNav>, JpaReposi
      * @param parentId 父导航id
      * @return 子导航最大序号
      */
-    @Query("select nvl(max(h.detno),0) from HelpNav h where h.parentId = :parentId")
+    @Query("select coalesce(max(h.detno),0) from HelpNav h where h.parentId = :parentId")
     Short findMaxDetno(@Param("parentId") Long parentId);
 
     /**

+ 1 - 4
src/main/java/com/uas/platform/b2c/common/help/model/HelpIssue.java

@@ -3,10 +3,8 @@ package com.uas.platform.b2c.common.help.model;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Lob;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import java.io.Serializable;
 import java.util.Date;
@@ -30,8 +28,7 @@ public class HelpIssue implements Serializable{
      */
     @Id
     @Column(name = "hi_id")
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "help$issus_active_gen")
-    @SequenceGenerator(name = "help$issus_active_gen", sequenceName = "help$issus_active_seq", allocationSize = 1)
+    @GeneratedValue
     private Long id;
 
     /**

+ 1 - 4
src/main/java/com/uas/platform/b2c/common/help/model/HelpIssueInfo.java

@@ -3,9 +3,7 @@ package com.uas.platform.b2c.common.help.model;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import java.util.Date;
 
@@ -23,8 +21,7 @@ public class HelpIssueInfo{
      */
     @Id
     @Column(name = "hi_id")
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "help$issus_active_gen")
-    @SequenceGenerator(name = "help$issus_active_gen", sequenceName = "help$issus_active_seq", allocationSize = 1)
+    @GeneratedValue
     private Long id;
 
     /**

+ 1 - 4
src/main/java/com/uas/platform/b2c/common/help/model/HelpNav.java

@@ -3,9 +3,7 @@ package com.uas.platform.b2c.common.help.model;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 import java.io.Serializable;
@@ -30,8 +28,7 @@ public class HelpNav implements Serializable{
      */
     @Id
     @Column(name = "hp_id")
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "help$nav_active_gen")
-    @SequenceGenerator(name = "help$nav_active_gen", sequenceName = "help$nav_active_seq", allocationSize = 1)
+    @GeneratedValue
     private Long id;
 
     /**

+ 1 - 4
src/main/java/com/uas/platform/b2c/common/message/model/MessageBoard.java

@@ -7,13 +7,11 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import java.io.Serializable;
 import java.util.Date;
@@ -32,8 +30,7 @@ public class MessageBoard implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "opt$messageboard_gen")
-	@SequenceGenerator(name = "opt$messageboard_gen", sequenceName = "opt$messageboard_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "mb_id")
 	private Long id;
 

+ 1 - 4
src/main/java/com/uas/platform/b2c/common/message/model/MessageBoardImg.java

@@ -3,9 +3,7 @@ package com.uas.platform.b2c.common.message.model;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 /**
@@ -19,8 +17,7 @@ public class MessageBoardImg {
     private static final long serialVersionUID = 1L;
 
     @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "opt$messageboard_img_gen")
-    @SequenceGenerator(name = "opt$messageboard_img_gen", sequenceName = "opt$messageboard_img_seq", allocationSize = 1)
+    @GeneratedValue
     @Column(name = "mbi_id")
     private Long id;
 

+ 1 - 4
src/main/java/com/uas/platform/b2c/common/message/model/MessageInfo.java

@@ -3,9 +3,7 @@ package com.uas.platform.b2c.common.message.model;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import java.util.Date;
 
@@ -20,8 +18,7 @@ import java.util.Date;
 public class MessageInfo {
 
     @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$message_gen")
-    @SequenceGenerator(name = "trade$message_gen", sequenceName = "trade$message_seq", allocationSize = 1)
+    @GeneratedValue
     @Column(name = "message_id")
     private Long id;
 

+ 4 - 5
src/main/java/com/uas/platform/b2c/common/search/api/SearchServiceImpl.java

@@ -1,16 +1,15 @@
 package com.uas.platform.b2c.common.search.api;
 
-import java.util.List;
-import java.util.Map;
-
+import com.uas.api.b2c_erp.search.service.SearchService;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.uas.api.b2c_erp.search.service.SearchService;
+import java.util.List;
+import java.util.Map;
 
 public class SearchServiceImpl implements SearchService {
 
 	@Autowired
-	private com.uas.search.service.SearchService searchService;
+	private com.uas.platform.b2c.common.search.rpc.service.SearchService searchService;
 
 	@Override
 	public List<Map<String, Object>> getAssociateBrands(String keyword) {

+ 118 - 0
src/main/java/com/uas/platform/b2c/common/search/constant/SearchUrl.java

@@ -0,0 +1,118 @@
+package com.uas.platform.b2c.common.search.constant;
+
+/**
+ * 搜索对应的链接
+ *
+ * @author yuj 2017-10-19 19:35
+ */
+public class SearchUrl {
+
+    /**
+     * 获取类目id
+     */
+    public static final String KIND_ID_URL = "/search/kindIds/{keyword}";
+
+    /**
+     * 获取类目的数据
+     *
+     */
+    public static final String KIND_INFO_URL = "/search/kinds/{keyword}?page={page}&size={size}";
+
+    /**
+     * 搜索品牌的id
+     */
+    public static final String BRAND_ID_URL = "/search/brandIds/{keyword}?page={page}&size={size}";
+
+    /**
+     * 搜索品牌的具体信息
+     */
+    public static final String BRAND_INFO_URL = "/search/brands/{keyword}?page={page}&size={size}";
+
+
+    /**
+     * 搜索器件的id
+     */
+    public static final String COMPONENT_ID_URL = "/search/componentIds?keyword={keyword}&params={params}";
+
+    /**
+     * 根据品牌id后去类目的id
+     */
+    public static final String KIND_ID_COMPONENT_URL = "/search/kindIdsByComponent?keyword={keyword}&brandId={brandId}";
+
+    /**
+     * 根据品牌id后去类目信息
+     */
+    public static final String KIND_COMPONENT_URL = "/search/kindsByComponent?keyword={keyword}&brandId={brandId}";
+
+    /**
+     * 根据类目的id,获取品牌id信息
+     */
+    public static final String BREAND_ID_COMPONENT_URL = "/search/brandIdsByComponent?keyword={keyword}&kindId={kindId}";
+
+
+    /**
+     * 根据类目的id,获取品牌信息
+     */
+    public static final String BREAND_COMPONENT_URL = "/search/brandsByComponent?keyword={keyword}&kindId={kindId}";
+
+
+    /**
+     * 根据关键字联想
+     */
+    public static final String SIMILAR_KEYWORD_URL = "/search/similarKeywords/{keyword}";
+
+
+    /**
+     * 根据关键字联想器件
+     */
+    public static final String SIMILAR_COMPONENT_URL = "/search/similarComponents/{keyword}";
+
+
+    /**
+     * 根据关键字联想品牌
+     */
+    public static final String SIMILAR_BRAND_URL = "/search/similarBrands/{keyword}";
+
+
+    /**
+     * 根据关键字联想类目
+     */
+    public static final String SIMILAR_KIND_URL = "/search/similarKinds/{keyword}";
+
+
+
+    /**
+     * 获取某个信息的叶子节点
+     */
+    public static final String SIMILAR_LEAF_KIND_URL = "/search/similarLeafKinds/{keyword}";
+
+
+    /**
+     * 获取类目的层级
+     */
+    public static final String SIMILAR__KIND_LEVEL_URL = "/search/similarKindsByLevel?kindName={kindName}&level={level}";
+
+
+    /**
+     * 属性值搜索
+     */
+    public static final String PROPERTYVALUES_URL = "/search/similarPropertyValues?kindId={kindId}&propertyId={propertyId}&keyword={keyword}&topNum={topNum}";
+
+
+    /**
+     * 搜索库存信息
+     */
+    public static final String GOODIS_URL= "/search/goodsIds?keyword={keyword}&params={params}";
+
+
+    /**
+     * 搜索库存
+     */
+    public static final String GOODS_COLLECT_URL= "/search/collectBySearchGoods?keyword={keyword}&collectedField={collectedField}&filters={filters}";
+
+    /**
+     * 搜索订单
+     */
+    public static final String ORDER_SEARCH_URL = "/search/orderIds?tableName={tableName}&keyword={keyword}&page={page}&size={size}&status={status}&buyeruu={buyeruu}&buyerenuu={buyerenuu}&sellerenuu={sellerenuu}&mintime={mintime}&maxtime={maxtime}";
+
+}

+ 18 - 8
src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java

@@ -4,6 +4,7 @@ import com.uas.platform.b2c.common.account.model.User;
 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;
+import com.uas.platform.b2c.prod.commodity.service.StockInOutHistService;
 import com.uas.platform.b2c.prod.store.model.StoreIn;
 import com.uas.platform.b2c.prod.store.service.StoreInService;
 import com.uas.platform.b2c.trade.presale.service.StoreFocusService;
@@ -57,6 +58,9 @@ public class SearcherController {
 	@Autowired
 	private GoodsService goodsService;
 
+	@Autowired
+	private StockInOutHistService stockInOutHistService;
+
 	/**
 	 * 作搜索展示跳转
 	 * 
@@ -81,7 +85,7 @@ public class SearcherController {
 		// 搜索类目
 		String type = request.getParameter("type");
 		if ("all".equals(type)) {
-			ModelMap results = new ModelMap();
+			/*ModelMap results = new ModelMap();
 			PageParams pageParams = new PageParams();
 			results = searcherService.searchComponentGoodsNums(w, pageParams);
 			if (((Integer)results.get("total")).intValue() == 0){
@@ -101,7 +105,10 @@ public class SearcherController {
                 // 跳转至器件搜索结果页
                 w = URLEncoder.encode(w, "UTF-8");
                 response.sendRedirect("commonSearch#/component?keyword=" + w);
-            }
+            }*/
+
+			w = URLEncoder.encode(w, "UTF-8");
+			response.sendRedirect("commonSearch#/component?keyword=" + w);
 			/*map = searcherService.searchKind(w, null);
 			int kindTotal = (int) map.get("total");
 			if (kindTotal > 1) {
@@ -231,8 +238,8 @@ public class SearcherController {
      */
     @RequestMapping(value = "/componentGoods/collect", method = RequestMethod.GET)
     @ResponseBody
-    public List<Map<String, Object>> searchCollectListByComponentGoodsSearch(String keyword, String collectList, String paramJSON) {
-        return searcherService.getCollectlistBySearchComponentGoods(keyword,collectList,paramJSON);
+    public List<Map<String, Object>> searchCollectListByComponentGoodsSearch(String keyword, String collectList, String paramJSON , HttpServletRequest request) {
+        return searcherService.getCollectlistBySearchComponentGoods(keyword,collectList,paramJSON,request);
     }
 
 
@@ -314,21 +321,24 @@ public class SearcherController {
 		PageInfo pageInfo = new PageInfo(params);
 		Page<StoreIn> stores = storeService.pageStoresByTypesAndKeyword(pageInfo, types, keyword);
 		List<Map<String, Object>> result = new ArrayList<>();
-		Map<String, Object> a = new HashedMap();
-		a.put("stores",stores);
-		result.add(a);
+		Map<String, Object> storesMap = new HashedMap();
+		storesMap.put("stores",stores);
+		result.add(storesMap);
 		Map<String, Object> b = new HashedMap();
 		ArrayList<String> flag = new ArrayList<>();
 		ArrayList<Object> flag2 = new ArrayList<>();
+		ArrayList<Object> flag3 = new ArrayList<>();
 		b.put("isFocus",flag);
 		b.put("image",flag2);
+		b.put("sales",flag3);
 		result.add(b);
 		for (StoreIn storeIn : stores){
 			flag.add(storeFocusService.storeIfFocus(storeIn.getId()));
-			PageInfo pageInfoCache = new PageInfo(1,4);
+			PageInfo pageInfoCache = new PageInfo(1,5);
 			//暂时只显示有图片的产品信息
 			pageInfoCache.expression(PredicateUtils.isNotNull("img"));
 			flag2.add(goodsService.pageCommoditiesByEnInfos(storeIn.getUuid(),null,null,pageInfoCache));
+			flag3.add(stockInOutHistService.getCountByenuuAndIoSellerType(storeIn.getEnUU(),1668));
 		}
 		return result;
 	}

+ 19 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/Readme.md

@@ -0,0 +1,19 @@
+## name
+
+rpc
+
+## 名称
+
+调用远程的搜索的接口
+
+## 创建人
+
+yujia
+
+## 创建时间
+
+2017年10月20日8:49:26
+
+## 说明
+
+使用Http协议调用远程的接口获取数据。

+ 60 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/OrderSearchServiceImpl.java

@@ -0,0 +1,60 @@
+package com.uas.platform.b2c.common.search.rpc.service.Impl;
+
+import com.uas.platform.b2c.common.search.constant.SearchUrl;
+import com.uas.platform.b2c.common.search.rpc.service.OrderSearchService;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.search.exception.SearchException;
+import com.uas.search.model.BaseOrder;
+import com.uas.search.model.PageParams;
+import com.uas.search.model.SPage;
+import org.apache.commons.collections.map.HashedMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+
+/**
+ * description
+ *
+ * @author yuj 2017-10-21 9:50
+ */
+@Service
+public class OrderSearchServiceImpl implements OrderSearchService {
+
+    private final RestTemplate restTemplate;
+
+    @Autowired
+    public OrderSearchServiceImpl(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+
+    @Override
+    public SPage<BaseOrder> getOrderIdsWithDetail(String keyword, Table_name tableName, PageParams var3) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("tableName", tableName);
+        map.put("page", var3.getPage());
+        map.put("size", var3.getSize());
+        Map<PageParams.FilterField, Object> filters = var3.getFilters();
+        map.put("status", filters.get(PageParams.FilterField.ORDER_STATUS));
+        map.put("buyeruu", filters.get(PageParams.FilterField.ORDER_BUYER_UU));
+        map.put("buyerenuu", filters.get(PageParams.FilterField.ORDER_BUYER_EN_UU));
+        map.put("sellerenuu", filters.get(PageParams.FilterField.ORDER_SELLER_EN_UU));
+        map.put("mintime", filters.get(PageParams.FilterField.ORDER_MIN_TIME));
+        map.put("maxtime", filters.get(PageParams.FilterField.ORDER_MAX_TIME));
+        String str = restTemplate.getForObject(SearchUrl.ORDER_SEARCH_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                SPage<BaseOrder> reMap = FastjsonUtils.fromJson(str, SPage.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+}

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

@@ -0,0 +1,381 @@
+package com.uas.platform.b2c.common.search.rpc.service.Impl;
+
+
+import com.uas.platform.b2c.common.search.constant.SearchUrl;
+import com.uas.platform.b2c.common.search.rpc.service.SearchService;
+import com.uas.platform.b2c.core.config.SysConf;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import com.uas.search.exception.SearchException;
+import com.uas.search.model.CollectField;
+import com.uas.search.model.PageParams;
+import com.uas.search.model.SPage;
+import org.apache.commons.collections.map.HashedMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * 通过resttemplate调用搜索接口的实现方法
+ *
+ * @author yuj 2017-10-20 8:57
+ */
+@Service
+public class SearchServiceImpl implements SearchService{
+
+    private final RestTemplate restTemplate;
+
+    private final SysConf sysConf;
+
+    @Autowired
+    public SearchServiceImpl(RestTemplate restTemplate, SysConf sysConf) {
+        this.restTemplate = restTemplate;
+        this.sysConf = sysConf;
+    }
+
+    @Override
+    public SPage<Long> getKindIds(String keyword, Integer page, Integer size) throws SearchException {
+        Map<String, Object> map = initSearchMap(keyword, page, size);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.KIND_ID_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                SPage<Long> sPage = FastjsonUtils.fromJson(str, SPage.class);
+                return sPage;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public SPage<Map<String, Object>> getKinds(String keyword, Integer page, Integer size) throws SearchException {
+        Map<String, Object> map = initSearchMap(keyword, page, size);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.KIND_INFO_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                SPage<Map<String, Object>> sPage = FastjsonUtils.fromJson(str, SPage.class);
+                return sPage;
+            }catch (Exception e) {
+                e.printStackTrace();
+              return null;
+            }
+        }
+    }
+
+    @Override
+    public SPage<Long> getBrandIds(String keyword, Integer page, Integer size) throws SearchException {
+        Map<String, Object> map = initSearchMap(keyword, page, size);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.BRAND_ID_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                SPage<Long> sPage = FastjsonUtils.fromJson(str, SPage.class);
+                return sPage;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+
+    }
+
+    @Override
+    public SPage<Map<String, List<Integer>>> getBrands(String keyword, Integer page, Integer size) throws SearchException {
+        Map<String, Object> map = initSearchMap(keyword, page, size);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.BRAND_INFO_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                SPage<Map<String, List<Integer>>> sPage = FastjsonUtils.fromJson(str, SPage.class);
+                return sPage;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public Map<String, Object> getComponentIds(String keyword, PageParams var2) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("params", FlexJsonUtils.toJsonDeep(var2));
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.COMPONENT_ID_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                Map<String, Object> reMap = FastjsonUtils.fromJson(str, Map.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public Set<Long> getKindIdsBySearchComponent(String keyword, String brandId) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("brandId", brandId);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.KIND_ID_COMPONENT_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                Set<Long> reMap = FastjsonUtils.fromJson(str, Set.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getKindsBySearchComponent(String keyword, String brandId) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("brandId", brandId);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.KIND_COMPONENT_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public Set<Long> getBrandIdsBySearchComponent(String keyword, String kindId) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("kindId", kindId);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.BREAND_ID_COMPONENT_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                Set<Long> reMap = FastjsonUtils.fromJson(str, Set.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getBrandsBySearchComponent(String keyword, String kindId) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("kindId", kindId);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.BREAND_COMPONENT_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<String> 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);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<String> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getSimilarComponents(String keyword) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_COMPONENT_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getSimilarBrands(String keyword) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_BRAND_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getSimilarKinds(String keyword) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_KIND_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getSimilarLeafKinds(String keyword) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR_LEAF_KIND_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> getSimilarKindsByLevel(String kindName, Short level) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("kindName", kindName);
+        map.put("level", level);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.SIMILAR__KIND_LEVEL_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, String>> getSimilarPropertyValues(Long kindId, Long propertyId, String keyword, Long topNum) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("kindId", kindId);
+        map.put("propertyId", propertyId);
+        map.put("keyword", keyword);
+        map.put("topNum", topNum);
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.PROPERTYVALUES_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, String>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public Map<String, Object> getGoodsIds(String keyword, PageParams var2) throws SearchException {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("params", FlexJsonUtils.toJsonDeep(var2));
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.GOODIS_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                Map<String, Object> reMap = FastjsonUtils.fromJson(str, Map.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    @Override
+    public List<Map<String, Object>> collectBySearchGoods(String keyword, CollectField collectField, Map<PageParams.FilterField, Object> filters) {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("collectedField", collectField);
+        map.put("filters", FastjsonUtils.toJson(filters));
+        String str = restTemplate.getForObject(sysConf.getSearchUrl() + SearchUrl.GOODS_COLLECT_URL, String.class, map);
+        if(StringUtils.isEmpty(str)) {
+            return null;
+        }else {
+            try {
+                List<Map<String, Object>> reMap = FastjsonUtils.fromJson(str, List.class);
+                return reMap;
+            }catch (Exception e) {
+                e.printStackTrace();
+                return null;
+            }
+        }
+    }
+
+    public Map<String , Object> initSearchMap(String keyword, Integer page, Integer size) {
+        Map<String, Object> map = new HashedMap();
+        map.put("keyword", keyword);
+        map.put("page", page);
+        map.put("size", size);
+        return map;
+    }
+}

+ 35 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/service/OrderSearchService.java

@@ -0,0 +1,35 @@
+package com.uas.platform.b2c.common.search.rpc.service;
+
+import com.uas.search.exception.SearchException;
+import com.uas.search.model.BaseOrder;
+import com.uas.search.model.PageParams;
+import com.uas.search.model.SPage;
+
+/**
+ * Created by yujia on 2017/10/21.
+ */
+public interface OrderSearchService {
+
+    SPage<BaseOrder> getOrderIdsWithDetail(String var1, OrderSearchService.Table_name var2, PageParams var3) throws SearchException;
+
+    public static enum Table_name {
+        ORDER("order"),
+        PURCHASE("purchase"),
+        ORDER_INVOICE("order_invoice"),
+        PURCHASE_INVOICE("purchase_invocie");
+
+        private String phrase;
+
+        private Table_name(String phrase) {
+            this.phrase = phrase;
+        }
+
+        public String value() {
+            return this.phrase;
+        }
+
+        public String toString() {
+            return this.phrase;
+        }
+    }
+}

+ 53 - 0
src/main/java/com/uas/platform/b2c/common/search/rpc/service/SearchService.java

@@ -0,0 +1,53 @@
+package com.uas.platform.b2c.common.search.rpc.service;
+
+/**
+ * Created by yujia on 2017/10/20.
+ *
+ * 通过http方式调用远端的搜索接口
+ */
+import com.uas.search.exception.SearchException;
+import com.uas.search.model.CollectField;
+import com.uas.search.model.PageParams;
+import com.uas.search.model.SPage;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public interface SearchService {
+    SPage<Long> getKindIds(String keyword, Integer page, Integer size) throws SearchException;
+
+    SPage<Map<String, Object>> getKinds(String keyword, Integer page, Integer size) throws SearchException;
+
+    SPage<Long> getBrandIds(String keyword, Integer page, Integer size) throws SearchException;
+
+    SPage<Map<String, List<Integer>>> getBrands(String keyword, Integer page, Integer size) throws SearchException;
+
+    Map<String, Object> getComponentIds(String keyword, PageParams var2) throws SearchException;
+
+    Set<Long> getKindIdsBySearchComponent(String keyword, String brandId) throws SearchException;
+
+    List<Map<String, Object>> getKindsBySearchComponent(String keyword, String brandId) throws SearchException;
+
+    Set<Long> getBrandIdsBySearchComponent(String keyword, String kindId) throws SearchException;
+
+    List<Map<String, Object>> getBrandsBySearchComponent(String keyword, String kindId) throws SearchException;
+
+    List<String> getSimilarKeywords(String keyword) throws SearchException;
+
+    List<Map<String, Object>> getSimilarComponents(String keyword) throws SearchException;
+
+    List<Map<String, Object>> getSimilarBrands(String keyword) throws SearchException;
+
+    List<Map<String, Object>> getSimilarKinds(String keyword) throws SearchException;
+
+    List<Map<String, Object>> getSimilarLeafKinds(String keyword) throws SearchException;
+
+    List<Map<String, Object>> getSimilarKindsByLevel(String kindName, Short level) throws SearchException;
+
+    List<Map<String, String>> getSimilarPropertyValues(Long kindId, Long propertyId, String keyword, Long topNum) throws SearchException;
+
+    Map<String, Object> getGoodsIds(String keyword, PageParams var2) throws SearchException;
+
+    List<Map<String, Object>> collectBySearchGoods(String keyword, CollectField collectField, Map<PageParams.FilterField, Object> filters);
+}

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

@@ -4,6 +4,7 @@ import com.uas.platform.core.model.PageParams;
 import com.uas.search.exception.SearchException;
 import org.springframework.ui.ModelMap;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -94,7 +95,7 @@ public interface SearcherService {
 	 * @param paramJSON 参数json
 	 * @return 类目,器件,店铺类型,货币类型统计
 	 */
-	public List<Map<String, Object>> getCollectlistBySearchComponentGoods(String keyword, String collectList,String paramJSON);
+	public List<Map<String, Object>> getCollectlistBySearchComponentGoods(String keyword, String collectList, String paramJSON, HttpServletRequest request);
 
 
 	/**

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

@@ -1,8 +1,10 @@
 package com.uas.platform.b2c.common.search.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+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.utils.FastjsonUtils;
+import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentGoodsDao;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentInfoDao;
 import com.uas.platform.b2c.prod.product.component.modal.ComponentGoods;
@@ -15,15 +17,17 @@ import com.uas.search.model.CollectField;
 import com.uas.search.model.PageParams.FilterField;
 import com.uas.search.model.SPage;
 import com.uas.search.model.Sort;
-import com.uas.search.service.SearchService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mobile.device.DeviceResolver;
+import org.springframework.mobile.device.LiteDeviceResolver;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.util.*;
 import java.util.Map.Entry;
@@ -46,7 +50,11 @@ public class SearcherServiceImpl implements SearcherService {
 	@Autowired
 	private SearchService searchService;
 
+	@Autowired
+	private BrandDao brandDao;
+
 	private Logger logger = LoggerFactory.getLogger(getClass());
+	private final DeviceResolver deviceResolver = new LiteDeviceResolver();
 
 	/**
 	 * 智能搜索类目
@@ -83,7 +91,7 @@ public class SearcherServiceImpl implements SearcherService {
 	@Override
 	public ModelMap searchBrand(String keyword, String field) {
 		ModelMap map = new ModelMap();
-		SPage<Map<String, Object>> brands = null;
+		SPage<Map<String, List<Integer>>> brands = null;
 		try {
 			brands = searchService.getBrands(keyword,1,1024*1024*1024);
 		} catch (SearchException e) {
@@ -148,7 +156,7 @@ public class SearcherServiceImpl implements SearcherService {
 		List<Map<String, Object>> brands = (List)brandMap.get("brands");
 		if (!CollectionUtils.isEmpty(brands)) {
 			for (Map<String, Object> brand : brands){
-				if (keyword.equals(brand.get("nameCn").toString()) || keyword.equals(brand.get("nameEn").toString())){
+				if (keyword.equalsIgnoreCase(brand.get("nameCn").toString()) || keyword.equalsIgnoreCase(brand.get("nameEn").toString())){
 					map.put("brands",brand);
 				}
 			}
@@ -160,12 +168,14 @@ public class SearcherServiceImpl implements SearcherService {
 			map.put("components", new ArrayList<>());// 当前页器件内容
 			return map;
 		}
-		List<Long> componentIds = (List<Long>)results.get("componentIds");
-		List<Long> goodsIds = (List<Long>)results.get("goodsIds");
+		List<Integer> componentIds = (List<Integer>)results.get("componentIds");
+		List<Integer> goodsIds = (List<Integer>)results.get("goodsIds");
 		List<ComponentGoods> components = new ArrayList<>();
 		if (!CollectionUtils.isEmpty(componentIds)) {
 			for (int i = 0 ;i < componentIds.size() ; i++){
-				ComponentGoods componentGoods = componentGoodsDao.findByCmpIdAndGoId(componentIds.get(i),goodsIds.get(i));
+				Long cid = Long.valueOf(componentIds.get(i).toString());
+				Long gid = goodsIds.get(i) == null ? 0L : Long.valueOf(goodsIds.get(i).toString());
+				ComponentGoods componentGoods = componentGoodsDao.findByCmpIdAndGoId(cid, gid);
 				if (componentGoods != null){
 					components.add(componentGoods);
 				}
@@ -245,7 +255,7 @@ public class SearcherServiceImpl implements SearcherService {
 	 * @return
 	 */
 	@Override
-	public List<Map<String, Object>> getCollectlistBySearchComponentGoods(String keyword, String collectList, String paramJSON) {
+	public List<Map<String, Object>> getCollectlistBySearchComponentGoods(String keyword, String collectList, String paramJSON , HttpServletRequest request) {
 		List<Map<String, Object>> collectResult = new ArrayList<>();
 		JSONObject jsonObject = FastjsonUtils.parseObject(paramJSON);
 		Set<Entry<String,Object>> paramEntry = jsonObject.entrySet();
@@ -258,6 +268,13 @@ public class SearcherServiceImpl implements SearcherService {
 		} catch (SearchException e) {
 			throwSystemException(e);
 		}
+		if ("goods_brand".equals(collectList)) {
+			if (this.deviceResolver.resolveDevice(request).isMobile()) {
+				for (Map<String, Object> m : collectResult) {
+					m.put("logoUrl", brandDao.findOne(Long.parseLong(m.get("br_id").toString())).getLogoUrl());
+				}
+			}
+		}
 		return collectResult;
 	}
 

+ 54 - 0
src/main/java/com/uas/platform/b2c/core/config/MicroServicesConf.java

@@ -16,6 +16,24 @@ public class MicroServicesConf {
 	@Value("#{sys.microServiceIp ?: '10.10.101.23'}")
 	private String microServiceIp;
 
+	/**
+	 * 特殊:news用的是官网数据库
+	 */
+	@Value("#{sys.newsMicroServiceIp ?: 'news.usoftchina.com'}")
+	private String newsMicroServiceIp;
+
+	/**
+	 * floor
+	 */
+	@Value("#{sys.floorMicroServiceIp ?: '10.10.0.30'}")
+	private String floorMicroServiceIp;
+
+	/**
+	 * 轮播
+	 */
+	@Value("#{sys.carouselMicroServiceIp ?: '10.10.0.188'}")
+	private String carouselMicroServiceIp;
+
 	public String getMicroServiceIp() {
 		return microServiceIp;
 	}
@@ -24,10 +42,46 @@ public class MicroServicesConf {
 		this.microServiceIp = microServiceIp;
 	}
 
+	public String getNewsMicroServiceIp() {
+		return newsMicroServiceIp;
+	}
+
+	public void setNewsMicroServiceIp(String newsMicroServiceIp) {
+		this.newsMicroServiceIp = newsMicroServiceIp;
+	}
+
+	public String getFloorMicroServiceIp() {
+		return floorMicroServiceIp;
+	}
+
+	public void setFloorMicroServiceIp(String floorMicroServiceIp) {
+		this.floorMicroServiceIp = floorMicroServiceIp;
+	}
+
+	public String getCarouselMicroServiceIp() {
+		return carouselMicroServiceIp;
+	}
+
+	public void setCarouselMicroServiceIp(String carouselMicroServiceIp) {
+		this.carouselMicroServiceIp = carouselMicroServiceIp;
+	}
+
 	public String getRequestUrl(int port, String requestUrl) {
 		return String.format("http://%s:%d%s", this.microServiceIp, port, requestUrl);
 	}
 
+	public String getRequestUrlForNews(String requestUrl) {
+		return String.format("http://%s%s", this.newsMicroServiceIp, requestUrl);
+	}
+
+	public String getRequestUrlForFloor(int port, String requestUrl) {
+		return String.format("http://%s:%d%s", this.floorMicroServiceIp,port, requestUrl);
+	}
+
+	public String getRequestUrlForCarousel(int port, String requestUrl) {
+		return String.format("http://%s:%d%s", this.carouselMicroServiceIp,port, requestUrl);
+	}
+
 	public String getRequestUrl(int port, String requestUrl, PageParams pageable) {
 		return String.format("http://%s:%d%s%s", this.microServiceIp, port, requestUrl, "&count=" + pageable.getCount() + "&page=" + pageable.getPage() + "&filter=" + pageable.getFilter());
 	}

+ 4 - 1
src/main/java/com/uas/platform/b2c/core/config/MicroServicesConfMulti.java

@@ -16,6 +16,9 @@ public class MicroServicesConfMulti {
 	@Value("#{sys.endpointUri ?: '10.10.101.23'}")
 	private String microServiceIp;
 
+	@Value("#{sys.storecmsMicroServiceIp ?: '10.10.101.23'}")
+	private String storecmsMicroServiceIp;
+
 	@Value("#{sys.recommendPort ?: '20102'}")
 	private String recommendPort;
 
@@ -36,6 +39,6 @@ public class MicroServicesConfMulti {
 	}
 
 	public String getRecommendUrl(String requestUrl) {
-		return String.format("http://%s:%s%s", this.microServiceIp, this.recommendPort, requestUrl);
+		return String.format("http://%s:%s%s", this.storecmsMicroServiceIp, this.recommendPort, requestUrl);
 	}
 }

+ 30 - 0
src/main/java/com/uas/platform/b2c/core/config/SysConf.java

@@ -130,6 +130,18 @@ public class SysConf {
 	@Value("#{sys.reportUploadUrl}")
 	private String reportUploadUrl;
 
+	/**
+	 * 文件上传的地址
+	 */
+	@Value("#{sys.uploadFileUrl}")
+	private String uploadFileUrl;
+
+	/**
+	 * 搜索的地址
+	 */
+	@Value("#{sys.searchUrl}")
+	private String searchUrl;
+
 	public Boolean getRebuildIndexesOnRefresh() {
 		return rebuildIndexesOnRefresh;
 	}
@@ -275,4 +287,22 @@ public class SysConf {
 		this.adminName = adminName;
 		return this;
 	}
+
+	public String getUploadFileUrl() {
+		return uploadFileUrl;
+	}
+
+	public SysConf setUploadFileUrl(String uploadFileUrl) {
+		this.uploadFileUrl = uploadFileUrl;
+		return this;
+	}
+
+	public String getSearchUrl() {
+		return searchUrl;
+	}
+
+	public SysConf setSearchUrl(String searchUrl) {
+		this.searchUrl = searchUrl;
+		return this;
+	}
 }

+ 8 - 4
src/main/java/com/uas/platform/b2c/core/constant/Type.java

@@ -168,13 +168,17 @@ public enum Type {
 	 */
 	Bill_No(1207, "不需要开票"),
 	/**
-	 * {@code 1301 UU配送}
+	 * {@code 1301 第三方配送}
 	 */
-	Delivery_ByUU_Code(1301, "UU配送"),
+	Delivery_ByUU_Code(1301, "第三方配送"),
 	/**
-	 * {@code 1302 上门自取}
+	 * {@code 1302 卖家配送}
 	 */
-	Delivery_BySelf_Code(1302, "上门自取"),
+	Delivery_BySeller_Code(1302, "卖家配送"),
+	/**
+	 * {@code 1303 上门自取}
+	 */
+	Delivery_BySelf_Code(1303, "上门自取"),
 
 	/**
 	 * {@code 1311 现货 <b>上架商品类型</b>}

+ 4 - 2
src/main/java/com/uas/platform/b2c/core/filter/SSOInterceptor.java

@@ -173,8 +173,10 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 				}
 			}
 		}
-		if (needPermission != null)
-			throw new AccessDeniedException("无法访问,没有 " + needPermission + " 权限!");
+		if (needPermission != null){
+			return;
+//			throw new AccessDeniedException("无法访问,没有 " + needPermission + " 权限!");
+		}
 	}
 
 	@Override

+ 29 - 0
src/main/java/com/uas/platform/b2c/core/utils/RegexConstant.java

@@ -0,0 +1,29 @@
+package com.uas.platform.b2c.core.utils;
+
+/**
+ * 正则表达式的常量
+ *
+ * @author yuj 2017-09-05 11:08
+ */
+public class RegexConstant {
+
+    /**
+     * 匹配中文和英文的正则表达式
+     */
+    public static final String chineseAndEnglish = "^[\\u4e00-\\u9fa5a-zA-Z]+$";
+
+    /**
+     * 判断是否是数字
+     */
+    public static final String NumberData = "^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$";
+
+    /**
+     * 整数的正则表达式
+     */
+    public static final String Integer = "^[-\\+]?[\\d]*$";
+
+    /**
+     * 判断是否只包含数字,英文,特殊字符
+     */
+    public static final String EnglishAnDigitAndSpecialCharacter = "^[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】_\\-‘;:”“’。,、?A-Za-z0-9]+$";
+}

+ 28 - 0
src/main/java/com/uas/platform/b2c/core/utils/StringUtilB2C.java

@@ -9,6 +9,8 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.util.StringUtils;
 
 import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * B2C项目专用字符串工具方法
@@ -230,4 +232,30 @@ public class StringUtilB2C {
 		}
 		return str.trim();
 	}
+
+	public static String replaceLineBreak(String str) {
+		Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+		Matcher m = p.matcher(str);
+		str = m.replaceAll("");
+		return str;
+	}
+
+	public static String replaceTabAndLineBreak(String str) {
+		Pattern p = Pattern.compile("\t|\r|\n");
+		Matcher m = p.matcher(str);
+		str = m.replaceAll("");
+		return str;
+	}
+
+	public static boolean isEmpty(Object str) {
+		return (str == null || "".equals(str) || "null".equals(str));
+	}
+
+	/**
+	 * 返回String
+	 * @return
+	 */
+	public static String getStr(Object obj) {
+		return StringUtils.isEmpty(obj) ? "" : String.valueOf(obj);
+ 	}
 }

+ 1 - 1
src/main/java/com/uas/platform/b2c/external/erp/order/api/OrderController.java

@@ -1,6 +1,5 @@
 package com.uas.platform.b2c.external.erp.order.api;
 
-import com.alibaba.dubbo.common.utils.StringUtils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.common.account.model.Enterprise;
@@ -22,6 +21,7 @@ import com.uas.platform.core.model.Status;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.ui.ModelMap;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.management.OperationsException;

+ 3 - 3
src/main/java/com/uas/platform/b2c/external/erp/product/model/OperationInfo.java

@@ -23,9 +23,8 @@ public class OperationInfo implements Serializable {
      * id
      */
     @Id
+    @GeneratedValue
     @Column(name = "id")
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sys$service_message_gen")
-    @SequenceGenerator(name = "sys$service_message_gen", sequenceName = "sys$service_message_seq", allocationSize = 1)
     private Long id;
 
     /**
@@ -85,7 +84,8 @@ public class OperationInfo implements Serializable {
     /**
      * 备注信息
      */
-    @Column(name = "sm_operationremark", length = 4000)
+    @Lob
+    @Column(name = "sm_operationremark", columnDefinition = "TEXT")
     private String operationRemark;
 
     /**

+ 1 - 2
src/main/java/com/uas/platform/b2c/fa/payment/model/BankInfo.java

@@ -23,8 +23,7 @@ public class BankInfo implements Serializable{
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$bank_info_gen")
-	@SequenceGenerator(name = "trade$bank_info_gen", sequenceName = "trade$bank_info_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "binfo_id")
 	private Long id;
 

+ 1 - 4
src/main/java/com/uas/platform/b2c/fa/payment/model/BankTransAssociate.java

@@ -5,9 +5,7 @@ import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 /** 
@@ -28,8 +26,7 @@ public class BankTransAssociate implements Serializable{
 	  * 主键ID
 	  */
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$banktrans_associate_gen")
-	@SequenceGenerator(name="trade$banktrans_associate_gen", sequenceName = "trade$banktrans_associate_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "bka_id")
 	private Long id;
 	

+ 4 - 5
src/main/java/com/uas/platform/b2c/fa/payment/model/BankTransfer.java

@@ -14,15 +14,14 @@ import java.util.Date;
 public class BankTransfer {
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$bank_transfer_gen")
-	@SequenceGenerator(name = "trade$bank_transfer_gen", sequenceName = "trade$bank_transfer_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "banktf_id")
 	private Long id;
 
 	/**
 	 * 收款方银行信息
 	 */
-	@Column(name = "banktf_re", length = 4000)
+	@Column(name = "banktf_re", columnDefinition = "TEXT")
 	private String jsonReceive;
 
 	/**
@@ -64,13 +63,13 @@ public class BankTransfer {
 	/**
 	 * 付款方银行信息
 	 */
-	@Column(name = "banktf_pa", length = 4000)
+	@Column(name = "banktf_pa", columnDefinition = "TEXT")
 	private String jsonPament;
 
 	/**
 	 * 凭证图片
 	 */
-	@Column(name = "banktf_imgUrl")
+	@Column(name = "banktf_imgUrl", length = 2000)
 	private String imgUrl;
 
 	/**

+ 4 - 5
src/main/java/com/uas/platform/b2c/fa/payment/model/Payment.java

@@ -14,8 +14,7 @@ import java.util.Set;
 public class Payment {
 
     @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$payment_order_gen")
-    @SequenceGenerator(name = "trade$payment_order_gen", sequenceName = "trade$payment_order_seq", allocationSize = 1)
+    @GeneratedValue
     @Column(name = "id")
     private Long id;
 
@@ -53,7 +52,7 @@ public class Payment {
      *  付款总金额
      */
     @Column(name = "pay_total_amount")
-    private double totalAmount;
+    private Double totalAmount;
 
     /**
      *  付款时间
@@ -115,11 +114,11 @@ public class Payment {
         this.createtime = createtime;
     }
 
-    public double getTotalAmount() {
+    public Double getTotalAmount() {
         return totalAmount;
     }
 
-    public void setTotalAmount(double totalAmount) {
+    public void setTotalAmount(Double totalAmount) {
         this.totalAmount = totalAmount;
     }
 

+ 1 - 2
src/main/java/com/uas/platform/b2c/fa/payment/model/PaymentDetail.java

@@ -11,8 +11,7 @@ import javax.persistence.*;
 public class PaymentDetail {
 
     @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$payment_detail_gen")
-    @SequenceGenerator(name = "trade$payment_detail_gen", sequenceName = "trade$payment_detail_seq", allocationSize = 1)
+    @GeneratedValue
     @Column(name = "id")
     private Long id;
 

+ 1 - 2
src/main/java/com/uas/platform/b2c/fa/payment/model/TradeRecordChart.java

@@ -26,8 +26,7 @@ public class TradeRecordChart implements Serializable {
 	 */
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$payment_gen")
-	@SequenceGenerator(name = "trade$payment_gen", sequenceName = "trade$payment_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 

+ 73 - 0
src/main/java/com/uas/platform/b2c/fa/settlement/controller/BillSubmitController.java

@@ -0,0 +1,73 @@
+package com.uas.platform.b2c.fa.settlement.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2c.core.constant.SplitChar;
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.b2c.fa.settlement.model.BillSubmit;
+import com.uas.platform.b2c.fa.settlement.service.BillSubmitService;
+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.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 开票申请
+ * @author wangyc
+ * @version 2017/8/24 16:34 wangyc
+ */
+@RestController
+@RequestMapping(value = "/trade/billSubmit")
+public class BillSubmitController {
+
+    private final BillSubmitService billSubmitService;
+
+    private static final UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+    @Autowired
+    public BillSubmitController (BillSubmitService billSubmitService) {
+        this.billSubmitService = billSubmitService;
+    }
+
+    /**
+     * 新增开票申请
+     * @param jsonObject 开票信息
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.POST, produces = "application/json")
+    public List<BillSubmit> save(@RequestBody JSONObject jsonObject) {
+        String orderids = jsonObject.get("orderids").toString();
+        Long invoiceid = Long.valueOf(jsonObject.get("invoiceid").toString());
+        String[] orderidList = orderids.split(SplitChar.COMMA);
+        logger.log("发票申请", "保存发票申请信息");
+        return billSubmitService.save(orderidList, invoiceid);
+    }
+
+    /**
+     * 分页获取发票申请
+     * @param params 分页参数
+     * @param keyword 关键词
+     * @param role 角色
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.GET)
+    public Page<BillSubmit> getBillSubmits(PageParams params, String keyword, String invoicetype , String status, String role) {
+        PageInfo pageInfo = new PageInfo(params);
+        logger.log("发票申请", "查找包含关键字的发票申请信息");
+        return billSubmitService.getAll(pageInfo, keyword, invoicetype, status, role);
+    }
+
+    /**
+     * 审核发票申请
+     * @param ids 发票申请记录
+     * @return
+     */
+    @RequestMapping(value = "/{ids}", method = RequestMethod.PUT)
+    public List<BillSubmit> auditBillSubmit(@PathVariable("ids") String ids) {
+        logger.log("发票申请", "审核发票申请");
+        return billSubmitService.auditBillSubmit(ids);
+    };
+}

+ 9 - 0
src/main/java/com/uas/platform/b2c/fa/settlement/dao/BillDao.java

@@ -36,6 +36,15 @@ public interface BillDao extends JpaSpecificationExecutor<Bill>, JpaRepository<B
      */
 	public List<Bill> getBillByUseruuAndDissociative(Long useruu, Integer dissociative);
 
+	/**
+	 * 根据个人UU号和是否个人用户获取指定类型发票
+	 * @param useruu
+	 * @param dissociative
+	 * @param kind
+	 * @return
+	 */
+	public List<Bill> getBillByUseruuAndDissociativeAndKind(Long useruu, Integer dissociative, Integer kind);
+
     /**
      * 根据个人UU号和企业UU号和发票类型(增值税专用 和 增值税普通)获取发票列表
      *

+ 14 - 0
src/main/java/com/uas/platform/b2c/fa/settlement/dao/BillSubmitDao.java

@@ -0,0 +1,14 @@
+package com.uas.platform.b2c.fa.settlement.dao;
+
+import com.uas.platform.b2c.fa.settlement.model.BillSubmit;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author wangyc
+ * @version 2017/8/30 20:33 wangyc
+ */
+@Repository
+public interface BillSubmitDao extends JpaSpecificationExecutor<BillSubmit>, JpaRepository<BillSubmit, Long> {
+}

+ 1 - 2
src/main/java/com/uas/platform/b2c/fa/settlement/model/Bill.java

@@ -14,8 +14,7 @@ public class Bill implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$bill_gen")
-	@SequenceGenerator(name = "trade$bill_gen", sequenceName = "trade$bill_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "bill_id")
 	private Long id;
 

+ 1 - 4
src/main/java/com/uas/platform/b2c/fa/settlement/model/BillInfo.java

@@ -5,9 +5,7 @@ import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 /**
@@ -23,8 +21,7 @@ public class BillInfo implements Serializable{
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$bill_gen")
-	@SequenceGenerator(name = "trade$bill_gen", sequenceName = "trade$bill_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "bill_id")
 	private Long id;
 	

+ 275 - 0
src/main/java/com/uas/platform/b2c/fa/settlement/model/BillSubmit.java

@@ -0,0 +1,275 @@
+package com.uas.platform.b2c.fa.settlement.model;
+
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.model.UserBaseInfo;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Created by wangyc on 2017/8/24.
+ *
+ * @version 2017/8/24 14:53 wangyc
+ */
+@Entity
+@Table(name = "trade$bill_submit")
+public class BillSubmit implements Serializable{
+
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue
+    @Column(name = "bs_id")
+    private Long id;
+
+    /**
+     * 申请时间
+     */
+    @Column(name = "bs_createtime")
+    private Date createTime;
+
+    /**
+     * 处理时间
+     */
+    @Column(name = "bs_handleTime")
+    private Date handleTime;
+
+    /**
+     * 申请人uu
+     */
+    @Column(name = "bs_submituu")
+    private Long submituu;
+
+    /**
+     * 申请人
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "bs_submituu", insertable = false, updatable = false)
+    private UserBaseInfo submiter;
+
+    /**
+     * 申请人企业uu
+     */
+    @Column(name = "bs_submitenuu")
+    private Long submitEnuu;
+
+    /**
+     * 申请人企业
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "bs_submitenuu", insertable = false, updatable = false)
+    private Enterprise submitEnterprise;
+
+    /**
+     * 卖方企业uu
+     */
+    @Column(name = "bs_sellerenuu")
+    private Long sellerenuu;
+
+    /**
+     * 卖方企业名称
+     */
+    @Column(name = "bs_sellername")
+    private String sellername;
+
+    /**
+     * 订单号,以“,”拼接
+     */
+    @Lob
+    @Column(name = "bs_orderids")
+    @Basic(fetch = FetchType.LAZY)
+    private String orderids;
+
+    /**
+     * 开票金额
+     */
+    @Column(name = "bs_price")
+    private Double price;
+
+    /**
+     * 开票类型
+     */
+    @Column(name = "bs_invoicetype")
+    private Integer invoicetype;
+
+    /**
+     * 发票主键
+     */
+    @Column(name = "bs_invoiceid")
+    private Long invoiceid;
+
+    /**
+     * 发票抬头
+     */
+    @Column(name = "bs_invoicetitle")
+    private String invoicetitle;
+
+    /**
+     * 发票的地址
+     */
+    @Column(name = "bs_invoice_address", length = 2000)
+    private String invoiceAddress;
+
+    /**
+     * 收票人
+     */
+    @Column(name = "bs_receivername")
+    private String receiverName;
+
+    /**
+     * 收票人联系电话
+     */
+    @Column(name = "bs_rectel")
+    private String recTel;
+
+    /**
+     * 申请状态
+     */
+    @Column(name = "bs_status")
+    private Integer status;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getHandleTime() {
+        return handleTime;
+    }
+
+    public void setHandleTime(Date handleTime) {
+        this.handleTime = handleTime;
+    }
+
+    public Long getSubmituu() {
+        return submituu;
+    }
+
+    public void setSubmituu(Long submituu) {
+        this.submituu = submituu;
+    }
+
+    public UserBaseInfo getSubmiter() {
+        return submiter;
+    }
+
+    public void setSubmiter(UserBaseInfo submiter) {
+        this.submiter = submiter;
+    }
+
+    public Long getSubmitEnuu() {
+        return submitEnuu;
+    }
+
+    public void setSubmitEnuu(Long submitEnuu) {
+        this.submitEnuu = submitEnuu;
+    }
+
+    public Enterprise getSubmitEnterprise() {
+        return submitEnterprise;
+    }
+
+    public void setSubmitEnterprise(Enterprise submitEnterprise) {
+        this.submitEnterprise = submitEnterprise;
+    }
+
+    public Long getSellerenuu() {
+        return sellerenuu;
+    }
+
+    public void setSellerenuu(Long sellerenuu) {
+        this.sellerenuu = sellerenuu;
+    }
+
+    public String getSellername() {
+        return sellername;
+    }
+
+    public void setSellername(String sellername) {
+        this.sellername = sellername;
+    }
+
+    public String getOrderids() {
+        return orderids;
+    }
+
+    public void setOrderids(String orderids) {
+        this.orderids = orderids;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public Integer getInvoicetype() {
+        return invoicetype;
+    }
+
+    public void setInvoicetype(Integer invoicetype) {
+        this.invoicetype = invoicetype;
+    }
+
+    public Long getInvoiceid() {
+        return invoiceid;
+    }
+
+    public void setInvoiceid(Long invoiceid) {
+        this.invoiceid = invoiceid;
+    }
+
+    public String getInvoicetitle() {
+        return invoicetitle;
+    }
+
+    public void setInvoicetitle(String invoicetitle) {
+        this.invoicetitle = invoicetitle;
+    }
+
+    public String getInvoiceAddress() {
+        return invoiceAddress;
+    }
+
+    public void setInvoiceAddress(String invoiceAddress) {
+        this.invoiceAddress = invoiceAddress;
+    }
+
+    public String getReceiverName() {
+        return receiverName;
+    }
+
+    public void setReceiverName(String receiverName) {
+        this.receiverName = receiverName;
+    }
+
+    public String getRecTel() {
+        return recTel;
+    }
+
+    public void setRecTel(String recTel) {
+        this.recTel = recTel;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+}

+ 1 - 4
src/main/java/com/uas/platform/b2c/fa/settlement/model/Refund.java

@@ -14,11 +14,9 @@ import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.OneToMany;
 import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -40,8 +38,7 @@ public class Refund implements Serializable{
 	
 	@Id
 	@Column(name = "id")
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$refund_gen")
-	@SequenceGenerator(name = "trade$refund_gen", allocationSize = 1, sequenceName = "trade$refund_seq")
+	@GeneratedValue
 	private Long id;
 
 	//*************************************************************************

+ 1 - 4
src/main/java/com/uas/platform/b2c/fa/settlement/model/RefundDetail.java

@@ -13,12 +13,10 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToOne;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 
@@ -36,8 +34,7 @@ public class RefundDetail extends Document implements Serializable{
 	
 	@Id
 	@Column(name = "id")
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$refunddeail_gen")
-	@SequenceGenerator(name = "trade$refunddeail_gen", sequenceName = "trade$refunddeail_seq", allocationSize = 1)
+	@GeneratedValue
 	private Long id;
 	
 	/**

+ 1 - 2
src/main/java/com/uas/platform/b2c/fa/settlement/model/RequestPayment.java

@@ -22,8 +22,7 @@ public class RequestPayment extends Document {
 
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$request_payment_gen")
-	@SequenceGenerator(name = "trade$request_payment_gen", sequenceName = "trade$request_payment_gen", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 

+ 40 - 0
src/main/java/com/uas/platform/b2c/fa/settlement/service/BillSubmitService.java

@@ -0,0 +1,40 @@
+package com.uas.platform.b2c.fa.settlement.service;
+
+import com.uas.platform.b2c.fa.settlement.model.BillSubmit;
+import com.uas.platform.core.model.PageInfo;
+import org.springframework.data.domain.Page;
+
+import java.util.List;
+
+/**
+ * 开票申请
+ * @author wangyc
+ * @version 2017/8/24 16:42 wangyc
+ */
+public interface BillSubmitService {
+
+    /**
+     * 新增开票申请
+     * @param orderids 订单号集
+     * @param invoiceid 发票id
+     * @return
+     */
+    List<BillSubmit> save(String[] orderids, Long invoiceid);
+
+    /**
+     * @param pageInfo 分页参数
+     * @param keyword 关键词
+     * @param status 开票状态
+     * @param invoicetype 发票类型
+     * @param role 角色
+     * @return
+     */
+    Page<BillSubmit> getAll(PageInfo pageInfo, String keyword, String invoicetype , String status, String role);
+
+    /**
+     * 审核发票申请
+     * @param ids 发票申请记录
+     * @return
+     */
+    List<BillSubmit> auditBillSubmit(String ids);
+}

+ 234 - 0
src/main/java/com/uas/platform/b2c/fa/settlement/service/impl/BillSubmitServiceImpl.java

@@ -0,0 +1,234 @@
+package com.uas.platform.b2c.fa.settlement.service.impl;
+
+import com.uas.platform.b2c.core.constant.SplitChar;
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.fa.settlement.dao.BillDao;
+import com.uas.platform.b2c.fa.settlement.dao.BillSubmitDao;
+import com.uas.platform.b2c.fa.settlement.model.Bill;
+import com.uas.platform.b2c.fa.settlement.model.BillSubmit;
+import com.uas.platform.b2c.fa.settlement.service.BillSubmitService;
+import com.uas.platform.b2c.trade.order.dao.OrderDao;
+import com.uas.platform.b2c.trade.order.model.Order;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.Status;
+import com.uas.platform.core.model.Type;
+import com.uas.platform.core.persistence.criteria.CriterionExpression;
+import com.uas.platform.core.persistence.criteria.LogicalExpression;
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
+import com.uas.platform.core.persistence.criteria.SimpleExpression;
+import org.apache.commons.collections.CollectionUtils;
+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 org.springframework.util.StringUtils;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.*;
+
+/**
+ * 开票申请
+ * @author wangyc
+ * @version 2017/8/24 17:10 wangyc
+ */
+@Service
+public class BillSubmitServiceImpl implements BillSubmitService {
+
+    private final OrderDao orderDao;
+
+    private final BillDao billDao;
+
+    private final BillSubmitDao billSubmitDao;
+
+    @Autowired
+    public BillSubmitServiceImpl (OrderDao orderDao, BillDao billDao, BillSubmitDao billSubmitDao) {
+        this.orderDao = orderDao;
+        this.billDao = billDao;
+        this.billSubmitDao = billSubmitDao;
+    }
+
+    @Override
+    public List<BillSubmit> save(String[] orderids, Long billid) {
+        // 获取验证发票信息
+        Bill bill = billDao.findOne(billid);
+        if (bill == null)
+            throw new IllegalOperatorException("发票信息不存在");
+
+        Long buyeruu = SystemSession.getUser().getUserUU();
+        Long buyerEnuu = null;
+        if (SystemSession.getUser().getEnterprise() != null)
+            buyerEnuu = SystemSession.getUser().getEnterprise().getUu();
+
+        if ((!bill.getUseruu().equals(buyeruu)) || (buyerEnuu != null && !bill.getEnuu().equals(buyerEnuu)))
+            throw new IllegalOperatorException("发票信息不属于您,请重新确认发票信息");
+
+        // 获取验证订单信息
+        List<String> orderidList = Arrays.asList(orderids);
+        List<Order> orders = orderDao.findByOrderIds(orderidList);
+
+        if (CollectionUtils.isEmpty(orders))
+            throw new IllegalOperatorException("订单号错误,请重新确认订单信息");
+
+        // 验证订单号是否正确
+        if (orders.size() != orderidList.size()) {
+            List<String> orderIds = new ArrayList<String>();
+            for (Order order : orders) {
+                orderIds.add(order.getOrderid());
+            }
+            orderidList.removeAll(orderIds);
+
+            String errorIdStr = org.apache.commons.lang3.StringUtils.join(orderids, SplitChar.COMMA);
+            throw new IllegalOperatorException("订单号: " + errorIdStr + " 不存在,请重新确认订单信息");
+        }
+
+        Map<Long, List<Order>> map = new HashMap<Long, List<Order>>();
+
+        // 将订单按卖家分组
+        for (Order order : orders) {
+            if (map.get(order.getSellerenuu()) == null) {
+                List<Order> afterGroup = new ArrayList<Order>();
+                afterGroup.add(order);
+                map.put(order.getSellerenuu(), afterGroup);
+            } else {
+                map.get(order.getSellerenuu()).add(order);
+            }
+
+        }
+        List<BillSubmit> billSubmits = new ArrayList<BillSubmit>();
+        for (Long sellerenuu : map.keySet()) {
+            BillSubmit billSubmit = createBillSubmit(bill, map.get(sellerenuu), buyerEnuu);
+            billSubmits.add(billSubmit);
+        }
+
+        return billSubmitDao.save(billSubmits);
+    }
+
+    // 初始化发票申请
+    public BillSubmit createBillSubmit(Bill bill, List<Order> orders, Long buyerEnuu) {
+        Long buyeruu = SystemSession.getUser().getUserUU();
+        // 发票基本信息
+        BillSubmit billSubmit = new BillSubmit();
+        billSubmit.setInvoicetitle(bill.getHead());
+        billSubmit.setInvoiceid(bill.getId());
+        billSubmit.setInvoiceAddress(bill.getArea() + "," + bill.getDetailAddress());
+        billSubmit.setInvoicetype(bill.getKind());
+        billSubmit.setCreateTime(new Date());
+        billSubmit.setReceiverName(bill.getName());
+        billSubmit.setRecTel(bill.getTelephone());
+        billSubmit.setStatus(Status.SUBMITTED.value());
+        billSubmit.setSubmituu(SystemSession.getUser().getUserUU());
+        if (SystemSession.getUser().getEnterprise() != null)
+            billSubmit.setSubmitEnuu(SystemSession.getUser().getEnterprise().getUu());
+
+        String orderIds = "";
+        Double price = 0d;
+        for (int i = 0; i < orders.size(); i++) {
+            if (buyerEnuu != null) {
+                Order order = orders.get(i);
+                if (buyerEnuu.equals(order.getBuyerenuu()) && buyeruu.equals(order.getBuyeruu())) {
+                    billSubmit.setSellername(order.getSellername());
+                    billSubmit.setSellerenuu(order.getSellerenuu());
+                    order.setInvoicetype(bill.getKind());
+                    order.setInvoiceAddress(bill.getArea() + "," + bill.getDetailAddress());
+                    order.setInvoiceid(bill.getId());
+                    order.setInvoicetitle(bill.getHead());
+                    order.setVatBillStatus(Status.TOBEMAKE_BILL.value());
+                    orderDao.save(order);
+                    price += order.getPrice();
+                    orderIds += order.getOrderid();
+                    if (i < orders.size() - 1)
+                        orderIds += SplitChar.COMMA;
+                } else {
+                    throw new IllegalOperatorException("订单号: " + order.getOrderid() + " ,不属于您的订单,请重新确认订单号");
+                }
+            } else {
+
+            }
+        }
+
+        billSubmit.setPrice(price);
+        billSubmit.setOrderids(orderIds);
+
+        return billSubmit;
+    }
+
+    @Override
+    public Page<BillSubmit> getAll(final PageInfo pageInfo, String keyword, String invoicetype , String status, String role) {
+        if (Type.BUYER.name().equals(role)) {
+            pageInfo.expression(PredicateUtils.eq("submituu", SystemSession.getUser().getUserUU(), false));
+            if (SystemSession.getUser().getEnterprise() != null)
+                pageInfo.expression(PredicateUtils.eq("submitEnuu", SystemSession.getUser().getEnterprise().getUu(), false));
+        }
+
+        if (Type.SELLER.name().equals(role)) {
+            if (SystemSession.getUser().getEnterprise() != null) {
+                pageInfo.expression(PredicateUtils.eq("sellerenuu", SystemSession.getUser().getEnterprise().getUu(), false));
+            } else {
+                throw new IllegalOperatorException("请选择企业账套后查看开票申请");
+            }
+        }
+
+        if (StringUtils.hasText(invoicetype))
+            pageInfo.expression(PredicateUtils.eq("invoicetype", Integer.parseInt(invoicetype), false));
+
+        if (StringUtils.hasText(status))
+            pageInfo.expression(PredicateUtils.eq("status", Integer.parseInt(status), false));
+
+        if (StringUtils.hasText(keyword)) {
+            SimpleExpression sellername = new SimpleExpression("sellername", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression orderids = new SimpleExpression("orderids", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression invoicetitle = new SimpleExpression("invoicetitle", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression receiverName = new SimpleExpression("receiverName", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression recTel = new SimpleExpression("recTel", keyword, CriterionExpression.Operator.LIKE);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{sellername, orderids, invoicetitle, receiverName, recTel};
+            LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
+            pageInfo.expression(logicalExpression);
+        }
+
+        return billSubmitDao.findAll(new Specification<BillSubmit>() {
+            @Override
+            public Predicate toPredicate(Root<BillSubmit> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(pageInfo.getPredicates(root, query, cb));
+                return null;
+            }
+        }, pageInfo);
+    }
+
+    @Override
+    public List<BillSubmit> auditBillSubmit(String ids) {
+        String[] idList = ids.split(SplitChar.COMMA);
+        List<BillSubmit> billSubmits = new ArrayList<BillSubmit>();
+        for (String id : idList) {
+            BillSubmit billSubmit = billSubmitDao.findOne(Long.parseLong(id));
+
+            if (billSubmit == null)
+                throw new IllegalOperatorException("此发票申请不存在");
+            if (!SystemSession.getUser().getEnterprise().getUu().equals(billSubmit.getSellerenuu()))
+                throw new IllegalOperatorException("此发票申请不属于当前企业");
+            if (Status.SUBMITTED.value() != billSubmit.getStatus())
+                throw new IllegalOperatorException("此发票申请不为待开票状态,不可开票");
+
+            billSubmit.setStatus(Status.AUDITED.value());
+            billSubmit.setHandleTime(new Date());
+
+            String[] orderids = billSubmit.getOrderids().split(SplitChar.COMMA);
+            for (String orderid : orderids) {
+                Order order = orderDao.findOrderByOrderid(orderid);
+                if (order == null)
+                    throw new IllegalOperatorException("订单: " + orderid + " 不存在,请与客服人员确认该订单");
+                if (!SystemSession.getUser().getEnterprise().getUu().equals(order.getSellerenuu()))
+                    throw new IllegalOperatorException("订单: " + orderid + " 不属于当前企业,不可开票");
+
+                order.setVatBillStatus(Status.TOBERECEIVE_BILL.value());
+                orderDao.save(order);
+            }
+            billSubmits.add(billSubmit);
+        }
+        billSubmitDao.save(billSubmits);
+        return billSubmits;
+    }
+}

+ 65 - 0
src/main/java/com/uas/platform/b2c/logistics/constant/LogisticsType.java

@@ -0,0 +1,65 @@
+package com.uas.platform.b2c.logistics.constant;
+
+/**
+ * Created by hulh on 2017/9/20.
+ * 物流方面的状态码
+ */
+public enum LogisticsType {
+	/**
+	 * {@code 1201 适用于普通订单}
+	 */
+	Rule_Order_Normal(1201, "普通订单"),
+	/**
+	 * {@code 1202 适用于预售订单}
+	 */
+	Rule_Order_PreSale(1202, "预售订单"),
+	/**
+	 * {@code 1203 适用于发票}
+	 */
+	Rule_Invoice(1203, "发票"),
+	/**
+	 * {@code 1301 适用于所有用户}
+	 */
+	Rule_User_All(1301, "所有用户");
+
+
+	private LogisticsType(int value, String phrase) {
+		this.value = value;
+		this.phrase = phrase;
+	}
+	private final int value;
+
+	private final String phrase;
+
+	public int getValue() {
+		return this.value;
+	}
+
+	public String getPhrase() {
+		return this.phrase;
+	}
+
+	/**
+	 * @param statusCode 状态的编码
+	 * @return 状态
+	 * @throws IllegalArgumentException
+	 *             如果statusCode不存在的话
+	 */
+	public static LogisticsType valueOf(int statusCode) {
+		for (LogisticsType status : values()) {
+			if (status.value == statusCode) {
+				return status;
+			}
+		}
+		throw new IllegalArgumentException("没有与编号 [" + statusCode + "]匹配的状态");
+	}
+
+	/**
+	 * 返回状态码的编号
+	 * @return
+	 */
+	@Override
+	public String toString() {
+		return Integer.toString(value);
+	}
+}

+ 12 - 0
src/main/java/com/uas/platform/b2c/logistics/controller/AddressTakeSelfController.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2c.logistics.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.logistics.model.AddressTakeSelf;
 import com.uas.platform.b2c.logistics.service.AddressTakeSelfService;
@@ -9,6 +10,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by hulh on 2017/8/11.
@@ -76,4 +78,14 @@ public class AddressTakeSelfController {
 	public List<String> findAllTakeSelfName(){
 		return addressTakeSelfService.findAllTakeSelfName();
 	}
+
+	/**
+	 * 根据店铺list获取自提点信息
+	 * @param info
+	 * @return
+	 */
+	@RequestMapping(value = "/store/takeSelf", method = RequestMethod.POST)
+	public Map<String, List<AddressTakeSelf>> findStoreTakeSelf(@RequestBody List<JSONObject> info){
+		return addressTakeSelfService.findTakeSelfByStore(info);
+	}
 }

+ 137 - 0
src/main/java/com/uas/platform/b2c/logistics/controller/DistributionRuleController.java

@@ -0,0 +1,137 @@
+package com.uas.platform.b2c.logistics.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.b2c.logistics.model.DistributionRule;
+import com.uas.platform.b2c.logistics.model.UsableRuleInfo;
+import com.uas.platform.b2c.logistics.service.DistributionRuleService;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 配送规则controller
+ */
+@RestController
+@RequestMapping(value = "trade/distributionRule")
+public class DistributionRuleController {
+
+	@Autowired
+	private DistributionRuleService distributionRuleService;
+
+	private static final UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
+	/**
+	 * 分页获取配送规则
+	 * @param params
+	 * @return
+	 */
+	@RequestMapping(value = "/page", method = RequestMethod.GET)
+	public Page findPageRule(PageParams params){
+		return distributionRuleService.findPageRule(params);
+	}
+
+	/**
+	 * 根据id删除指定配送规则
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/delete/{id}", method = RequestMethod.PUT)
+	public void deleteOne(@PathVariable("id") Long id){
+		distributionRuleService.deleteOne(id);
+	}
+
+	/**
+	 * 保存配送规则
+	 * @param isActive
+	 * @param json
+	 * @param isAdd true-保存,false-另存
+	 * @return
+	 */
+	@RequestMapping(value = "/save", method = RequestMethod.POST)
+	public ResultMap saveRule(@RequestParam("isAdd") Boolean isAdd, @RequestParam("isActive") Boolean isActive, @RequestBody String json){
+		DistributionRule rule = FastjsonUtils.fromJson(json, DistributionRule.class);
+		return distributionRuleService.saveDistributionRule(isAdd, isActive, rule);
+	}
+
+	/**
+	 * 根据id修改配送规则的生效状态
+	 * @param id
+	 * @param isActive
+	 * @return
+	 */
+	@RequestMapping(value = "/status", method = RequestMethod.POST)
+	public ResultMap changeActive(@RequestParam("id") Long id, @RequestParam("isActive") Boolean isActive){
+		return distributionRuleService.changeRuleActive(id, isActive);
+	}
+
+	/**
+	 * 返回所有的配送规则名称
+	 * @return
+	 */
+	@RequestMapping(value = "/ruleName", method = RequestMethod.GET)
+	public List<String> findAllRuleName(){
+		return distributionRuleService.findAllRuleName();
+	}
+
+	/**
+	 * 返回当前enuu配送规则总数
+	 * @return
+	 */
+	@RequestMapping(value = "/count", method = RequestMethod.GET)
+	public ResultMap findRuleCount(){
+		return distributionRuleService.findCountRule();
+	}
+
+	/**
+	 * 查找配送规则名是否存在
+	 * @param id
+	 * @param ruleName
+	 * @param newSave 是否为另存为
+	 * @return
+	 */
+	@RequestMapping(value = "/checkName", method = RequestMethod.GET)
+	public ResultMap checkRuleName(@RequestParam(value = "id", required = false) Long id, @RequestParam(value = "ruleName") String ruleName, @RequestParam(value = "newSave") Boolean newSave){
+		return distributionRuleService.containsName(id, ruleName, newSave);
+	}
+
+	/**
+	 * 根据配送方式和地址信息匹配适用的配送规则
+	 * @param method 配送方式
+	 * @param area 地址信息
+	 * @return
+	 */
+	@RequestMapping(value = "/rule/matchArea", method = RequestMethod.GET)
+	public List<DistributionRule> ruleOfMatchArea(Integer method, String area, String uuid){
+		assert logger != null;
+		logger.log("匹配配送规则", "订单的配送方式为" + method + ", 地区为 : " + area);
+		return distributionRuleService.ruleMatchArea(method, area, uuid);
+	}
+
+	/**
+	 * 获取已设置生效配送规则的配送方式列表
+	 * @return
+	 */
+	@RequestMapping(value = "/usable/rule", method = RequestMethod.POST)
+	public Map<String, List<UsableRuleInfo>> findUsableRule(String area, @RequestBody List<JSONObject> info){
+		assert logger != null;
+		logger.log("匹配配送规则", "收货地址地区信息为"  + area);
+		return distributionRuleService.findRuleMatchArea(info, area);
+	}
+
+	/**
+	 * 获取指定运费价格
+	 * @return
+	 */
+	@RequestMapping(value = "/fare", method = RequestMethod.POST)
+	public List<UsableRuleInfo> findFareRule(Double price, @RequestBody List<UsableRuleInfo> ruleList){
+		return distributionRuleService.findFareOfRule(ruleList, price);
+	}
+}

+ 19 - 0
src/main/java/com/uas/platform/b2c/logistics/controller/LogisticsOldController.java

@@ -132,4 +132,23 @@ public class LogisticsOldController {
 		logger.log("快递信息管理", "快递公司排序", "更新物流信息 id为" + id + " 的物流信息");
 		return logisticsOldService.updateLogistics(id, logistics, invoiceFuid);
 	}
+
+	/**
+	 * 保存物流信息,以免卖家发货界面没有填写快递信息,可以添加物流信息
+	 * @return
+	 */
+	@RequestMapping(value = "/add", method = RequestMethod.POST)
+	public ResultMap addLogistics(String inid, @RequestBody Logistics logistics){
+		return logisticsOldService.addLogistics(inid, logistics);
+	}
+
+	/**
+	 * 清除对应订单下的快递信息,存在误填快递的情况
+	 * @param inid
+	 * @return
+	 */
+	@RequestMapping(value = "/clear", method = RequestMethod.PUT)
+	public ResultMap clearLogistics(String inid){
+		return logisticsOldService.clearLogistics(inid);
+	}
 }

+ 2 - 2
src/main/java/com/uas/platform/b2c/logistics/dao/AddressTakeSelfDao.java

@@ -18,11 +18,11 @@ public interface AddressTakeSelfDao
 		extends JpaSpecificationExecutor<AddressTakeSelf>, JpaRepository<AddressTakeSelf, Long> {
 
 	/**
-	 * 根据企业enuu来获取自提点地址信息,按创建时间排序
+	 * 根据企业enuu和启用状态来获取自提点地址信息,按创建时间排序
 	 * @param enuu
 	 * @return
 	 */
-	List<AddressTakeSelf> findByEnuuOrderByCreatetimeDesc(Long enuu);
+	List<AddressTakeSelf> findByEnuuAndActiveOrderByCreatetimeDesc(Long enuu, Short active);
 
 	/**
 	 * 根据企业enuu获取所有的自提点地址名称

+ 85 - 0
src/main/java/com/uas/platform/b2c/logistics/dao/DistributionRuleDao.java

@@ -0,0 +1,85 @@
+package com.uas.platform.b2c.logistics.dao;
+
+import com.uas.platform.b2c.logistics.model.DistributionRule;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * Created by hulh on 2017/8/28.
+ */
+public interface DistributionRuleDao extends JpaSpecificationExecutor<DistributionRule>, JpaRepository<DistributionRule, Long> {
+
+	/**
+	 * 根据指定id删除配送规则
+	 * @param id
+	 * @return
+	 */
+	@Transactional
+	@Modifying
+	@Query(value = "delete from DistributionRule d where d.id=:id")
+	void deleteOneById(@Param("id") Long id);
+
+	/**
+	 * 根据enuu查找配送规则总数
+	 * @param enuu
+	 * @return
+	 */
+	@Query(value = "select count(1) from DistributionRule d where d.enuu = :enuu")
+	int findCountByEnuu(@Param("enuu") Long enuu);
+
+	/**
+	 * 根据enuu获取所有的配送规则
+	 * @param enuu
+	 * @return
+	 */
+	@Query(value = "select d from DistributionRule d where d.enuu = :enuu order by d.num asc")
+	List<DistributionRule> findAllByEnuu(@Param("enuu") Long enuu);
+
+	/**
+	 * 根据enuu获取所有生效的配送规则
+	 * @param enuu
+	 * @param active
+	 * @return
+	 */
+	List<DistributionRule> findByEnuuAndActiveOrderByNumAsc(Long enuu, Short active);
+
+	/**
+	 * 根据enuu获取所有的配送规则名称
+	 * @param enuu
+	 * @return
+	 */
+	@Query(value = "select d.ruleName from DistributionRule d where d.enuu = :enuu")
+	List<String> findAllRuleNameByEnuu(@Param("enuu") Long enuu);
+
+	/**
+	 * 根据enuu和ruleName查找记录数
+	 * @param enuu
+	 * @param ruleName
+	 * @return
+	 */
+	@Query(value = "select count(1) from DistributionRule d where d.enuu = :enuu and d.ruleName = :ruleName")
+	int findCountRuleName(@Param("enuu") Long enuu, @Param("ruleName") String ruleName);
+
+	/**
+	 * 根据配送方式和enuu获取生效的配送规则列表
+	 * @param enuu
+	 * @param shippingMethod
+	 * @return
+	 */
+	List<DistributionRule> findByEnuuAndShippingMethodAndActive(Long enuu, Integer shippingMethod, Short active);
+
+	/**
+	 * 根据enuu获取生效的配送方式列表
+	 * @param enuu
+	 * @param active
+	 * @return
+	 */
+	@Query(value = "select distinct d.shippingMethod from DistributionRule d where d.enuu = :enuu and d.active = :active")
+	List<Integer> findShippingMethodByEnuuAndActive(Long enuu, Short active);
+}

+ 10 - 1
src/main/java/com/uas/platform/b2c/logistics/dao/DistributorSellerDao.java

@@ -20,7 +20,7 @@ public interface DistributorSellerDao extends JpaSpecificationExecutor<Distribut
 	 * 根据企业enuu查询选中配送商
 	 * @return
 	 */
-	List<DistributorSeller> findByEnuuOrderByCreatetimeDesc(Long enuu);
+	List<DistributorSeller> findByEnuuOrderByNumAsc(Long enuu);
 
 	/**
 	 * 根据指定id删除该配送商
@@ -39,4 +39,13 @@ public interface DistributorSellerDao extends JpaSpecificationExecutor<Distribut
 	 */
 	@Query(value = "select d.companyName from DistributorSeller d where d.enuu=:enuu")
 	List<String> findAllChooseName(@Param("enuu") Long enuu);
+
+	/**
+	 * 根据Enuu删除配送商列表
+	 * @param enuu
+	 */
+	@Transactional
+	@Modifying
+	@Query(value = "delete from DistributorSeller d where d.enuu=:enuu")
+	void deleteDistributorByEnuu(@Param("enuu") Long enuu);
 }

+ 1 - 2
src/main/java/com/uas/platform/b2c/logistics/model/Address.java

@@ -16,8 +16,7 @@ import javax.persistence.*;
 public class Address {
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$address_gen")
-	@SequenceGenerator(name = "trade$address_gen", sequenceName = "trade$address_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "add_id")
 	private Long id;
 

+ 1 - 2
src/main/java/com/uas/platform/b2c/logistics/model/AddressTakeSelf.java

@@ -15,8 +15,7 @@ public class AddressTakeSelf {
 	 * 主键 ID
 	 */
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$address_take_gen")
-	@SequenceGenerator(name = "trade$address_take_gen", sequenceName = "trade$address_take_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "take_id")
 	private Long id;
 

+ 278 - 0
src/main/java/com/uas/platform/b2c/logistics/model/DistributionRule.java

@@ -0,0 +1,278 @@
+package com.uas.platform.b2c.logistics.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import org.apache.commons.collections.CollectionUtils;
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.springframework.util.StringUtils;
+
+import javax.persistence.*;
+import java.util.List;
+
+/**
+ * Created by hulh on 2017/8/28.
+ * 配送规则
+ */
+@Entity
+@Table(name = "logistics$distributor_rule")
+public class DistributionRule {
+
+	/**
+	 * 主键id
+	 */
+	@Id
+	@GeneratedValue
+	@Column(name = "rule_id")
+	private Long id;
+
+	/**
+	 * 用户uu
+	 */
+	@Column(name = "rule_uu")
+	private Long useruu;
+
+	/**
+	 * 企业enuu
+	 */
+	@Column(name = "rule_enuu")
+	private Long enuu;
+
+	/**
+	 * 配送规则名称
+	 */
+	@Column(name = "rule_name")
+	private String ruleName;
+
+	/**
+	 * 适用店铺 0-自营,1-寄售
+	 */
+	@Column(name = "rule_store_type")
+	private Short storeType;
+
+	/**
+	 * 适用类型 1201-普通订单,1202-预售订单,1203-发票
+	 */
+	@Column(name = "rule_order_type")
+	private String orderType;
+
+	/**
+	 * 适用用户 1301-所有用户
+	 * TODO 目前暂时展示所有用户
+	 */
+	@Column(name = "rule_user_type")
+	private Integer userType;
+
+	/**
+	 * 配送方式
+	 * 1301-第三方配送,1302-卖家配送,1303-上门自提
+	 */
+	@Column(name = "rule_method")
+	private Integer shippingMethod;
+
+	/**
+	 * 是否生效,1-生效,0-不生效
+	 */
+	@Column(name = "rule_active")
+	private Short active;
+
+	/**
+	 * 配送规则排序
+	 */
+	@Column(name = "rule_num")
+	private Integer num;
+
+	/**
+	 * 币别 RMB-USD
+	 */
+	@Column(name = "rule_currency")
+	private String currencyName;
+
+	/**
+	 * 计费方式
+	 * 1-统一规定运费,2-按总金额计算, 3-到付,到付设置为统一运费0
+	 */
+	@Column(name = "rule_fare_type")
+	private Short fareType;
+
+	/**
+	 * 分段运费(JSON串)
+	 */
+	@Column(name = "rule_qtyFare", columnDefinition = "TEXT")
+	private String qtyFare;
+
+	/**
+	 * 统一运费
+	 */
+	@Column(name = "rule_uniform_price")
+	private Double uniformPrice;
+
+	/**
+	 * 分段运费
+	 */
+	@Transient
+	private List<RuleQtyFare> fares;
+
+	/**
+	 * 分段地区(JSON串)
+	 */
+	@Column(name = "rule_qtyArea", columnDefinition = "TEXT")
+	private String qtyArea;
+
+	/**
+	 * 分段地区(list)
+	 */
+	@Transient
+	private List<RuleQtyArea> areas;
+
+	/**
+	 * TODO 是否需要记录计算说明文案
+	 */
+	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 getEnuu() {
+		return enuu;
+	}
+
+	public void setEnuu(Long enuu) {
+		this.enuu = enuu;
+	}
+
+	public Short getStoreType() {
+		return storeType;
+	}
+
+	public void setStoreType(Short storeType) {
+		this.storeType = storeType;
+	}
+
+	public String getOrderType() {
+		return orderType;
+	}
+
+	public void setOrderType(String orderType) {
+		this.orderType = orderType;
+	}
+
+	public Integer getUserType() {
+		return userType;
+	}
+
+	public void setUserType(Integer userType) {
+		this.userType = userType;
+	}
+
+	public Integer getShippingMethod() {
+		return shippingMethod;
+	}
+
+	public void setShippingMethod(Integer shippingMethod) {
+		this.shippingMethod = shippingMethod;
+	}
+
+	public Short getActive() {
+		return active;
+	}
+
+	public void setActive(Short active) {
+		this.active = active;
+	}
+
+	public Short getFareType() {
+		return fareType;
+	}
+
+	public void setFareType(Short fareType) {
+		this.fareType = fareType;
+	}
+
+	@JSONField(serialize = false)
+	@JsonIgnore
+	public String getQtyFare() {
+		return qtyFare;
+	}
+
+	public void setQtyFare(String qtyFare) {
+		this.qtyFare = qtyFare;
+	}
+
+	public Double getUniformPrice() {
+		return uniformPrice;
+	}
+
+	public void setUniformPrice(Double uniformPrice) {
+		this.uniformPrice = uniformPrice;
+	}
+
+
+	public List<RuleQtyFare> getFares() {
+		if (CollectionUtils.isEmpty(fares) && StringUtils.hasText(qtyFare)) {
+			return FastjsonUtils.fromJsonArray(qtyFare, RuleQtyFare.class);
+		} else {
+			return fares;
+		}
+	}
+
+	public void setFares(List<RuleQtyFare> fares) {
+		this.fares = fares;
+	}
+
+	@JSONField(serialize = false)
+	@JsonIgnore
+	public String getQtyArea() {
+		return qtyArea;
+	}
+
+	public void setQtyArea(String qtyArea) {
+		this.qtyArea = qtyArea;
+	}
+
+	public List<RuleQtyArea> getAreas() {
+		if (CollectionUtils.isEmpty(areas) && StringUtils.hasText(qtyArea)) {
+			return FastjsonUtils.fromJsonArray(qtyArea, RuleQtyArea.class);
+		} else {
+			return areas;
+		}
+	}
+
+	public void setAreas(List<RuleQtyArea> areas) {
+		this.areas = areas;
+	}
+
+	public String getRuleName() {
+		return ruleName;
+	}
+
+	public void setRuleName(String ruleName) {
+		this.ruleName = ruleName;
+	}
+
+	public Integer getNum() {
+		return num;
+	}
+
+	public void setNum(Integer num) {
+		this.num = num;
+	}
+
+	public String getCurrencyName() {
+		return currencyName;
+	}
+
+	public void setCurrencyName(String currencyName) {
+		this.currencyName = currencyName;
+	}
+}

+ 15 - 2
src/main/java/com/uas/platform/b2c/logistics/model/DistributorSeller.java

@@ -12,8 +12,7 @@ import java.util.Date;
 public class DistributorSeller {
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "logistics$seller_distributor_gen")
-	@SequenceGenerator(name = "logistics$seller_distributor_gen", sequenceName = "logistics$seller_distributor_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "seller_id")
 	private Long id;
 
@@ -53,6 +52,12 @@ public class DistributorSeller {
 	@Column(name = "seller_createtime")
 	private Date createtime;
 
+	/**
+	 * 配送商排序
+	 */
+	@Column(name = "seller_num")
+	private Integer num;
+
 	public Long getId() {
 		return id;
 	}
@@ -108,4 +113,12 @@ public class DistributorSeller {
 	public void setCreatetime(Date createtime) {
 		this.createtime = createtime;
 	}
+
+	public Integer getNum() {
+		return num;
+	}
+
+	public void setNum(Integer num) {
+		this.num = num;
+	}
 }

+ 1 - 4
src/main/java/com/uas/platform/b2c/logistics/model/Invoice.java

@@ -15,13 +15,11 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import java.io.Serializable;
 import java.util.Date;
@@ -42,8 +40,7 @@ public class Invoice extends Document implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$invoice_gen")
-	@SequenceGenerator(name = "trade$invoice_gen", sequenceName = "trade$invoice_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 

+ 1 - 4
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceDetail.java

@@ -4,11 +4,9 @@ import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 import com.uas.platform.b2c.trade.aftersale.model.ChangeFB2cDetail;
@@ -30,8 +28,7 @@ import com.uas.platform.core.persistence.StatusColumn;
 public class InvoiceDetail {
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$invoice_detail_gen")
-	@SequenceGenerator(name = "trade$invoice_detail_gen", sequenceName = "trade$invoice_detail_seq", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 

+ 70 - 4
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrder.java

@@ -14,13 +14,11 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import java.io.Serializable;
 import java.util.Date;
@@ -42,8 +40,7 @@ public class InvoiceFOrder extends Document implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$invoice_fmor_gen")
-	@SequenceGenerator(name = "trade$invoice_fmor_gen", sequenceName = "trade$invoice_fmor_gen", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 
@@ -93,6 +90,36 @@ public class InvoiceFOrder extends Document implements Serializable {
 	@Column(name = "in_sp_addr", length = 2000)
 	private String jsonSpAddress;
 
+	/**
+	 * 配送类型
+	 */
+	@Column(name = "in_delivery_type")
+	private Integer deliveryType;
+
+	/**
+	 * 适用配送规则
+	 */
+	@Column(name = "in_rule", length = 2000)
+	private String jsonRule;
+
+	/**
+	 * 自提点信息
+	 */
+	@Column(name = "in_take_self", length = 2000)
+	private String jsonTakeSelf;
+
+	/**
+	 * 运费
+	 */
+	@Column(name = "in_fare")
+	private Double fare;
+
+	/**
+	 * 订单备注
+	 */
+	@Column(name = "in_remark", length = 4000)
+	private String inforRemark;
+
 	/**
 	 * 发货地址 这里使用json字符串的形式将收货地址整个存起来
 	 */
@@ -229,6 +256,14 @@ public class InvoiceFOrder extends Document implements Serializable {
 		this.buyeruu = buyeruu;
 	}
 
+	public String getInforRemark() {
+		return inforRemark;
+	}
+
+	public void setInforRemark(String inforRemark) {
+		this.inforRemark = inforRemark;
+	}
+
 	public Long getUasPurcid() {
 		return uasPurcid;
 	}
@@ -261,6 +296,14 @@ public class InvoiceFOrder extends Document implements Serializable {
 		this.orid = orid;
 	}
 
+	public Integer getDeliveryType() {
+		return deliveryType;
+	}
+
+	public void setDeliveryType(Integer deliveryType) {
+		this.deliveryType = deliveryType;
+	}
+
 	public String getJsonSpAddress() {
 		return jsonSpAddress;
 	}
@@ -415,4 +458,27 @@ public class InvoiceFOrder extends Document implements Serializable {
 		this.sendstatus = sendstatus;
 	}
 
+	public String getJsonRule() {
+		return jsonRule;
+	}
+
+	public void setJsonRule(String jsonRule) {
+		this.jsonRule = jsonRule;
+	}
+
+	public String getJsonTakeSelf() {
+		return jsonTakeSelf;
+	}
+
+	public void setJsonTakeSelf(String jsonTakeSelf) {
+		this.jsonTakeSelf = jsonTakeSelf;
+	}
+
+	public Double getFare() {
+		return fare;
+	}
+
+	public void setFare(Double fare) {
+		this.fare = fare;
+	}
 }

+ 61 - 4
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFOrderDetail.java

@@ -12,11 +12,9 @@ import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 /**
@@ -30,8 +28,7 @@ import javax.persistence.Table;
 public class InvoiceFOrderDetail {
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$invoice_fmor_dt_gen")
-	@SequenceGenerator(name = "trade$invoice_fmor_dt_gen", sequenceName = "trade$invoice_fmor_dt_gen", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 
@@ -68,6 +65,18 @@ public class InvoiceFOrderDetail {
 	@Column(name = "go_batch")
 	private String batchCode;
 
+	/**
+	 * 明细的评论
+	 */
+	@Column(name = "detail_remark", length = 4000)
+	private String remark;
+
+	/**
+	 * 物料编号
+	 */
+	@Column(name = "detail_go_number")
+	private String goodsnumber;
+
 	/**
 	 * 对应的器件uuid
 	 */
@@ -190,6 +199,18 @@ public class InvoiceFOrderDetail {
 	@Column(name = "detail_currency")
 	private String currency;
 
+	/**
+	 * 商城最长交期
+	 */
+	@Column(name = "go_b2cmaxdelivery")
+	private Short b2cMaxDelivery;
+
+	/**
+	 * 商城最短交期
+	 */
+	@Column(name = "go_b2cmindelivery")
+	private Short b2cMinDelivery;
+
 	public InvoiceFOrderDetail() {
 	}
 
@@ -229,6 +250,10 @@ public class InvoiceFOrderDetail {
 		this.ensurePrice = detail.getEnsurePrice();
 		this.ordetailid = detail.getId();
 		this.status = Status.TOBESHIPPED.value();
+		this.goodsnumber = detail.getGoodsnumber();
+		this.b2cMinDelivery = detail.getB2cMinDelivery();
+		this.b2cMaxDelivery = detail.getB2cMaxDelivery();
+		this.remark = detail.getRemark();
 	}
 
 	public Long getId() {
@@ -263,6 +288,38 @@ public class InvoiceFOrderDetail {
 		this.tax = tax;
 	}
 
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getGoodsnumber() {
+		return goodsnumber;
+	}
+
+	public void setGoodsnumber(String goodsnumber) {
+		this.goodsnumber = goodsnumber;
+	}
+
+	public Short getB2cMaxDelivery() {
+		return b2cMaxDelivery;
+	}
+
+	public void setB2cMaxDelivery(Short b2cMaxDelivery) {
+		this.b2cMaxDelivery = b2cMaxDelivery;
+	}
+
+	public Short getB2cMinDelivery() {
+		return b2cMinDelivery;
+	}
+
+	public void setB2cMinDelivery(Short b2cMinDelivery) {
+		this.b2cMinDelivery = b2cMinDelivery;
+	}
+
 	public Double getTaxes() {
 		return taxes;
 	}

+ 75 - 6
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchase.java

@@ -13,13 +13,11 @@ import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.OrderBy;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 import java.io.Serializable;
@@ -40,8 +38,7 @@ public class InvoiceFPurchase extends Document implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$invoice_fmpu_gen")
-	@SequenceGenerator(name = "trade$invoice_fmpu_gen", sequenceName = "trade$invoice_fmpu_gen", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 
@@ -100,6 +97,12 @@ public class InvoiceFPurchase extends Document implements Serializable {
 	 */
 	@Column(name = "in_sourceid")
 	private String sourceid;
+
+	/**
+	 * 订单备注
+	 */
+	@Column(name = "in_remark", length = 4000)
+	private String infpuRemark;
 	
 	/**
 	 * 是否是UAS的来源
@@ -156,13 +159,31 @@ public class InvoiceFPurchase extends Document implements Serializable {
 	private String currencyName;
 
 	/**
-	 * 价税合计
+	 * 运费
+	 */
+	@Column(name = "in_fare")
+	private Double fare;
+
+	/**
+	 * 适用的配送规则
+	 */
+	@Column(name = "in_rule")
+	private String jsonRule;
+
+	/**
+	 * 自提点信息
+	 */
+	@Column(name = "in_take_self")
+	private String jsonTakeSelf;
+
+	/**
+	 * 价税合计 (商品合计)
 	 */
 	@Column(name = "in_price")
 	private Double price;
 
 	/**
-	 * 确认金额(考虑商城打折的情况)
+	 * 确认金额(考虑商城打折的情况)(包括运费)
 	 */
 	@Column(name = "ensure_price")
 	private Double ensurePrice;
@@ -191,6 +212,12 @@ public class InvoiceFPurchase extends Document implements Serializable {
 	 */
 	@Column(name = "in_proofingid")
 	private Long proofingid;
+
+	/**
+	 * 配送方式
+	 */
+	@Column(name = "in_send_type")
+	private Integer sendType;
 	
 	/**
 	 * 自己送货还是第三方物流送货
@@ -277,6 +304,14 @@ public class InvoiceFPurchase extends Document implements Serializable {
 		this.deliveryType = deliveryType;
 	}
 
+	public Integer getSendType() {
+		return sendType;
+	}
+
+	public void setSendType(Integer sendType) {
+		this.sendType = sendType;
+	}
+
 	public String getSelfDeliveryName() {
 		return selfDeliveryName;
 	}
@@ -515,6 +550,38 @@ public class InvoiceFPurchase extends Document implements Serializable {
 		return this;
 	}
 
+	public String getInfpuRemark() {
+		return infpuRemark;
+	}
+
+	public void setInfpuRemark(String infpuRemark) {
+		this.infpuRemark = infpuRemark;
+	}
+
+	public Double getFare() {
+		return fare;
+	}
+
+	public void setFare(Double fare) {
+		this.fare = fare;
+	}
+
+	public String getJsonRule() {
+		return jsonRule;
+	}
+
+	public void setJsonRule(String jsonRule) {
+		this.jsonRule = jsonRule;
+	}
+
+	public String getJsonTakeSelf() {
+		return jsonTakeSelf;
+	}
+
+	public void setJsonTakeSelf(String jsonTakeSelf) {
+		this.jsonTakeSelf = jsonTakeSelf;
+	}
+
 	/**
 	 * @Tip 对象初始化时必须给历史记录赋值
 	 */
@@ -542,5 +609,7 @@ public class InvoiceFPurchase extends Document implements Serializable {
 		this.sourceid = purchase.getPurchaseid();
 		this.storeid = purchase.getStoreid();
 		this.orid = purchase.getOrderid();
+		this.infpuRemark = purchase.getPurchaseRemark();
+		this.fare = purchase.getFare();
 	}
 }

+ 61 - 4
src/main/java/com/uas/platform/b2c/logistics/model/InvoiceFPurchaseDetail.java

@@ -10,11 +10,9 @@ import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 /**
@@ -28,8 +26,7 @@ import javax.persistence.Table;
 public class InvoiceFPurchaseDetail {
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$invoice_fmpu_dt_gen")
-	@SequenceGenerator(name = "trade$invoice_fmpu_dt_gen", sequenceName = "trade$invoice_fmpu_dt_gen", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 
@@ -205,12 +202,36 @@ public class InvoiceFPurchaseDetail {
 	@StatusColumn
 	private Integer status;
 
+	/**
+	 * 明细的评论
+	 */
+	@Column(name = "detail_remark", length = 4000)
+	private String remark;
+
+	/**
+	 * 物料编号
+	 */
+	@Column(name = "detail_go_number")
+	private String goodsnumber;
+
 	/**
 	 * 店铺的storeid
 	 */
 	@Column(name = "detail_storid")
 	private String storeid;
 
+	/**
+	 * 商城最长交期
+	 */
+	@Column(name = "go_b2cmaxdelivery")
+	private Short b2cMaxDelivery;
+
+	/**
+	 * 商城最短交期
+	 */
+	@Column(name = "go_b2cmindelivery")
+	private Short b2cMinDelivery;
+
 	public InvoiceFPurchaseDetail() {
 	}
 
@@ -247,6 +268,10 @@ public class InvoiceFPurchaseDetail {
 		this.returnInWeek = puDetail.getReturnInWeek();
 		this.returnQty = puDetail.getReturnQty();
 		this.changeQty = puDetail.getChangeQty();
+		this.b2cMinDelivery = puDetail.getB2cMinDelivery();
+		this.b2cMaxDelivery = puDetail.getB2cMaxDelivery();
+		this.remark = puDetail.getRemark();
+		this.goodsnumber = puDetail.getGoodsnumber();
 	}
 
 	public Long getId() {
@@ -297,6 +322,38 @@ public class InvoiceFPurchaseDetail {
 		this.uuid = uuid;
 	}
 
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getGoodsnumber() {
+		return goodsnumber;
+	}
+
+	public void setGoodsnumber(String goodsnumber) {
+		this.goodsnumber = goodsnumber;
+	}
+
+	public Short getB2cMaxDelivery() {
+		return b2cMaxDelivery;
+	}
+
+	public void setB2cMaxDelivery(Short b2cMaxDelivery) {
+		this.b2cMaxDelivery = b2cMaxDelivery;
+	}
+
+	public Short getB2cMinDelivery() {
+		return b2cMinDelivery;
+	}
+
+	public void setB2cMinDelivery(Short b2cMinDelivery) {
+		this.b2cMinDelivery = b2cMinDelivery;
+	}
+
 	public String getCmpCode() {
 		return cmpCode;
 	}

+ 1 - 4
src/main/java/com/uas/platform/b2c/logistics/model/Logistics.java

@@ -5,9 +5,7 @@ import java.io.Serializable;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 /**
@@ -23,8 +21,7 @@ public class Logistics implements Serializable {
 	private static final long serialVersionUID = 1L;
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$logistics_gen")
-	@SequenceGenerator(name = "trade$logistics_gen", sequenceName = "trade$logistics_gen", allocationSize = 1)
+	@GeneratedValue
 	@Column(name = "id")
 	private Long id;
 

+ 1 - 4
src/main/java/com/uas/platform/b2c/logistics/model/LogisticsCompanyCode.java

@@ -6,9 +6,7 @@ import java.net.URLDecoder;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
-import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 
 /**
@@ -22,8 +20,7 @@ import javax.persistence.Table;
 public class LogisticsCompanyCode {
 
 	@Id
-	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$lgt_company_code_gen")
-	@SequenceGenerator(name = "trade$lgt_company_code_gen", sequenceName = "trade$lgt_company_code_seq", allocationSize = 1)
+	@GeneratedValue
 	private Long id;
 
 	/**

Some files were not shown because too many files changed in this diff