Browse Source

Merge branch 'feature-201816-liusw'

yujia 7 years ago
parent
commit
714d46be2c
33 changed files with 439 additions and 284 deletions
  1. 1 1
      src/main/java/com/uas/platform/b2c/advertise/ad/api/StoreRecommendController.java
  2. 20 0
      src/main/java/com/uas/platform/b2c/advertise/ad/dao/AdvantageCommodityRepository.java
  3. 36 0
      src/main/java/com/uas/platform/b2c/advertise/ad/dao/RecommendProductDao.java
  4. 26 155
      src/main/java/com/uas/platform/b2c/advertise/ad/model/AdvantageCommodity.java
  5. 49 23
      src/main/java/com/uas/platform/b2c/advertise/ad/model/RecommendProduct.java
  6. 8 9
      src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/AdvantageCommodityServiceImpl.java
  7. 40 47
      src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/RecommendProductServiceImpl.java
  8. 17 2
      src/main/java/com/uas/platform/b2c/common/account/controller/EnterpriseController.java
  9. 15 0
      src/main/java/com/uas/platform/b2c/common/account/model/Enterprise.java
  10. 16 3
      src/main/java/com/uas/platform/b2c/common/weixin/contoller/WeChatController.java
  11. 23 0
      src/main/java/com/uas/platform/b2c/common/weixin/model/MessageModel.java
  12. 16 0
      src/main/java/com/uas/platform/b2c/common/weixin/service/impl/WeChatServiceImpl.java
  13. 1 0
      src/main/java/com/uas/platform/b2c/prod/commodity/model/Product.java
  14. 15 0
      src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java
  15. 14 1
      src/main/java/com/uas/platform/b2c/trade/vendor/controller/VendorIntroductionController.java
  16. 9 0
      src/main/java/com/uas/platform/b2c/trade/vendor/service/VendorIntroductionService.java
  17. 20 0
      src/main/java/com/uas/platform/b2c/trade/vendor/service/impl/VendorIntroductionServiceImpl.java
  18. 1 1
      src/main/resources/spring/context.xml
  19. 2 1
      src/main/webapp/resources/js/vendor/controllers/forstore/purchasAttendtion_ctrl.js
  20. 1 0
      src/main/webapp/resources/js/vendor/controllers/forstore/seek_purchase_ctrl.js
  21. 2 5
      src/main/webapp/resources/view/usercenter/forstore/buyer_cart.html
  22. 41 6
      src/main/webapp/resources/view/usercenter/forstore/pay_center.html
  23. 4 4
      src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html
  24. 2 2
      src/main/webapp/resources/view/usercenter/forstore/store_focus.html
  25. 3 3
      src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_person_erp.html
  26. 3 3
      src/main/webapp/resources/view/vendor/forstore/purchasAttendtion.html
  27. 5 1
      src/main/webapp/resources/view/vendor/forstore/seekPurchase.html
  28. 3 1
      src/main/webapp/resources/view/vendor/forstore/vendor_delivery_rule.html
  29. 9 9
      src/main/webapp/resources/view/vendor/forstore/vendor_material.html
  30. 6 6
      src/main/webapp/resources/view/vendor/forstore/vendor_material_person.html
  31. 6 0
      src/main/webapp/resources/view/vendor/forstore/vendor_order.html
  32. 1 1
      src/main/webapp/resources/view/vendor/left_nav.html
  33. 24 0
      src/test/java/com/uas/platform/b2c/WechatTestController.java

+ 1 - 1
src/main/java/com/uas/platform/b2c/advertise/ad/api/StoreRecommendController.java

@@ -47,7 +47,7 @@ public class StoreRecommendController {
 	/**
 	/**
 	 * 当卖家新增或修改产品推荐时,创建或更新产品推荐信息
 	 * 当卖家新增或修改产品推荐时,创建或更新产品推荐信息
 	 */
 	 */
-	@RequestMapping(method = RequestMethod.POST, value = "/products//update_batch")
+	@RequestMapping(method = RequestMethod.POST, value = "/products/update_batch")
 	public List<RecommendProduct> saveProductsWhenSellerUpdate(String uuid,
 	public List<RecommendProduct> saveProductsWhenSellerUpdate(String uuid,
    			@RequestBody List<RecommendProduct> productList) {
    			@RequestBody List<RecommendProduct> productList) {
 		return recommendProductService.saveProductsWhenSellerUpdate(uuid, productList);
 		return recommendProductService.saveProductsWhenSellerUpdate(uuid, productList);

+ 20 - 0
src/main/java/com/uas/platform/b2c/advertise/ad/dao/AdvantageCommodityRepository.java

@@ -0,0 +1,20 @@
+package com.uas.platform.b2c.advertise.ad.dao;
+
+import com.uas.platform.b2c.advertise.ad.model.AdvantageCommodity;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+
+@Repository
+public interface AdvantageCommodityRepository extends JpaSpecificationExecutor<AdvantageCommodity>,JpaRepository<AdvantageCommodity, Long> {
+
+	/**
+	 * 根据店铺UUID获取优势库存信息
+	 *
+	 * @param storeUuid		店铺UUID
+	 */
+	List<AdvantageCommodity> findByStoreUuid(String storeUuid);
+}

+ 36 - 0
src/main/java/com/uas/platform/b2c/advertise/ad/dao/RecommendProductDao.java

@@ -0,0 +1,36 @@
+package com.uas.platform.b2c.advertise.ad.dao;
+
+import com.uas.platform.b2c.advertise.ad.model.RecommendProduct;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Set;
+
+@Repository
+public interface RecommendProductDao extends JpaRepository<RecommendProduct, Long>,JpaSpecificationExecutor<RecommendProduct> {
+
+	/**
+	 * 根据店铺企业UU获取产品推荐信息
+	 *
+	 * @param storeEnUU		店铺企业UU
+	 */
+	List<RecommendProduct> findByStoreEnUUOrderByOrderAsc(Long storeEnUU);
+
+	/**
+	 * 根据店铺UUID获取产品推荐信息
+	 *
+	 * @param storeUuid		店铺UUID
+	 */
+	List<RecommendProduct> findByStoreUuidOrderByOrderAsc(String storeUuid);
+
+	/**
+	 * 根据店铺和商品批次号获取产品推荐信息列表
+	 *
+	 * @param storeUuid		店铺UUID
+	 * @param batchCodes	商品批次号集合
+	 * @return	产品推荐信息列表
+	 */
+	List<RecommendProduct> findByStoreUuidAndBatchCodeIn(String storeUuid, Set<String> batchCodes);
+}

+ 26 - 155
src/main/java/com/uas/platform/b2c/advertise/ad/model/AdvantageCommodity.java

@@ -1,5 +1,7 @@
 package com.uas.platform.b2c.advertise.ad.model;
 package com.uas.platform.b2c.advertise.ad.model;
 
 
+import javax.persistence.*;
+import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
 
 
 /**
 /**
@@ -8,12 +10,16 @@ import java.util.Date;
  * @author huxz
  * @author huxz
  * @version 2017-03-03 10:44:16 创建文件
  * @version 2017-03-03 10:44:16 创建文件
  */
  */
-public class AdvantageCommodity {
+@Entity
+@Table(name = "store$advantagecommodity")
+public class AdvantageCommodity implements Serializable {
 
 
 	/**
 	/**
 	 * 主键UUID
 	 * 主键UUID
 	 */
 	 */
-	private String id;
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private Long id;
 
 
 	/*=========================================================================
 	/*=========================================================================
 	 * 基础信息
 	 * 基础信息
@@ -22,64 +28,77 @@ public class AdvantageCommodity {
 	/**
 	/**
 	 * 创建时间
 	 * 创建时间
 	 */
 	 */
+	@Column(name ="ad_create_time")
 	private Date createTime;
 	private Date createTime;
 
 
 	/**
 	/**
 	 * 修改时间
 	 * 修改时间
 	 */
 	 */
+	@Column(name = "ad_update_time")
 	private Date updateTime;
 	private Date updateTime;
 
 
 	/**
 	/**
 	 * 排序
 	 * 排序
 	 */
 	 */
-	private int order;
+	@Column(name = "ad_order")
+	private Integer order;
 
 
 	/*=========================================================================
 	/*=========================================================================
 	 * 商品基础信息
 	 * 商品基础信息
 	 *=========================================================================*/
 	 *=========================================================================*/
+
 	/**
 	/**
 	 * 商品批次号
 	 * 商品批次号
 	 */
 	 */
+	@Column(name = "ad_com_batchCode")
 	private String batchCode;
 	private String batchCode;
 
 
 	/**
 	/**
 	 * 对应的器件uuid
 	 * 对应的器件uuid
 	 */
 	 */
+	@Column(name = "ad_com_uuid")
 	private String comUuid;
 	private String comUuid;
 
 
 	/**
 	/**
 	 * 原厂型号
 	 * 原厂型号
 	 */
 	 */
+	@Column(name = "ad_com_code")
 	private String comCode;
 	private String comCode;
 
 
 	/**
 	/**
 	 * 图片path
 	 * 图片path
 	 */
 	 */
+	@Column(name = "ad_com_img")
 	private String comImg;
 	private String comImg;
 
 
 	/**
 	/**
 	 * 类名UUID
 	 * 类名UUID
 	 */
 	 */
+	@Column(name = "ad_kind_uuid")
 	private String kindUuid;
 	private String kindUuid;
 
 
 	/**
 	/**
 	 * 类目的名称
 	 * 类目的名称
 	 */
 	 */
+	@Column(name = "ad_kind_name_cn")
 	private String kindNameCn;
 	private String kindNameCn;
 
 
 	/**
 	/**
 	 * 品牌中文名称
 	 * 品牌中文名称
 	 */
 	 */
+	@Column(name = "ad_brand_name_cn")
 	private String brandNameCn;
 	private String brandNameCn;
 
 
 	/**
 	/**
 	 * 本批次的最低人民币价格
 	 * 本批次的最低人民币价格
 	 */
 	 */
+	@Column(name = "ad_min_price_rmb")
 	private Double minPriceRMB;
 	private Double minPriceRMB;
 
 
 	/**
 	/**
 	 * 本批次的最低美元价格
 	 * 本批次的最低美元价格
 	 */
 	 */
+	@Column(name = "ad_min_price_usd")
 	private Double minPriceUSD;
 	private Double minPriceUSD;
 
 
 	/*=========================================================================
 	/*=========================================================================
@@ -89,282 +108,134 @@ public class AdvantageCommodity {
 	/**
 	/**
 	 * 店铺所属公司
 	 * 店铺所属公司
 	 */
 	 */
+	@Column(name = "ad_store_enuu")
 	private Long storeEnUU;
 	private Long storeEnUU;
 
 
 	/**
 	/**
 	 * 店铺UUID
 	 * 店铺UUID
 	 */
 	 */
+	@Column(name = "ad_store_uuid")
 	private String storeUuid;
 	private String storeUuid;
 
 
 	public AdvantageCommodity() {
 	public AdvantageCommodity() {
 	}
 	}
 
 
-	/**
-	 * Gets id.
-	 *
-	 * @return the id
-	 */
-	public String getId() {
+	public Long getId() {
 		return id;
 		return id;
 	}
 	}
 
 
-	/**
-	 * Sets id.
-	 *
-	 * @param id the id
-	 */
-	public void setId(String id) {
+	public void setId(Long id) {
 		this.id = id;
 		this.id = id;
 	}
 	}
 
 
-	/**
-	 * Gets create time.
-	 *
-	 * @return the create time
-	 */
 	public Date getCreateTime() {
 	public Date getCreateTime() {
 		return createTime;
 		return createTime;
 	}
 	}
 
 
-	/**
-	 * Sets create time.
-	 *
-	 * @param createTime the create time
-	 */
 	public void setCreateTime(Date createTime) {
 	public void setCreateTime(Date createTime) {
 		this.createTime = createTime;
 		this.createTime = createTime;
 	}
 	}
 
 
-	/**
-	 * Gets update time.
-	 *
-	 * @return the update time
-	 */
 	public Date getUpdateTime() {
 	public Date getUpdateTime() {
 		return updateTime;
 		return updateTime;
 	}
 	}
 
 
-	/**
-	 * Sets update time.
-	 *
-	 * @param updateTime the update time
-	 */
 	public void setUpdateTime(Date updateTime) {
 	public void setUpdateTime(Date updateTime) {
 		this.updateTime = updateTime;
 		this.updateTime = updateTime;
 	}
 	}
 
 
-	/**
-	 * Gets order.
-	 *
-	 * @return the order
-	 */
 	public int getOrder() {
 	public int getOrder() {
 		return order;
 		return order;
 	}
 	}
 
 
-	/**
-	 * Sets order.
-	 *
-	 * @param order the order
-	 */
 	public void setOrder(int order) {
 	public void setOrder(int order) {
 		this.order = order;
 		this.order = order;
 	}
 	}
 
 
-	/**
-	 * Gets batch code.
-	 *
-	 * @return the batch code
-	 */
 	public String getBatchCode() {
 	public String getBatchCode() {
 		return batchCode;
 		return batchCode;
 	}
 	}
 
 
-	/**
-	 * Sets batch code.
-	 *
-	 * @param batchCode the batch code
-	 */
 	public void setBatchCode(String batchCode) {
 	public void setBatchCode(String batchCode) {
 		this.batchCode = batchCode;
 		this.batchCode = batchCode;
 	}
 	}
 
 
-	/**
-	 * Gets com uuid.
-	 *
-	 * @return the com uuid
-	 */
 	public String getComUuid() {
 	public String getComUuid() {
 		return comUuid;
 		return comUuid;
 	}
 	}
 
 
-	/**
-	 * Sets com uuid.
-	 *
-	 * @param comUuid the com uuid
-	 */
 	public void setComUuid(String comUuid) {
 	public void setComUuid(String comUuid) {
 		this.comUuid = comUuid;
 		this.comUuid = comUuid;
 	}
 	}
 
 
-	/**
-	 * Gets com code.
-	 *
-	 * @return the com code
-	 */
 	public String getComCode() {
 	public String getComCode() {
 		return comCode;
 		return comCode;
 	}
 	}
 
 
-	/**
-	 * Sets com code.
-	 *
-	 * @param comCode the com code
-	 */
 	public void setComCode(String comCode) {
 	public void setComCode(String comCode) {
 		this.comCode = comCode;
 		this.comCode = comCode;
 	}
 	}
 
 
-	/**
-	 * Gets com img.
-	 *
-	 * @return the com img
-	 */
 	public String getComImg() {
 	public String getComImg() {
 		return comImg;
 		return comImg;
 	}
 	}
 
 
-	/**
-	 * Sets com img.
-	 *
-	 * @param comImg the com img
-	 */
 	public void setComImg(String comImg) {
 	public void setComImg(String comImg) {
 		this.comImg = comImg;
 		this.comImg = comImg;
 	}
 	}
 
 
-	/**
-	 * Gets kind uuid.
-	 *
-	 * @return the kind uuid
-	 */
 	public String getKindUuid() {
 	public String getKindUuid() {
 		return kindUuid;
 		return kindUuid;
 	}
 	}
 
 
-	/**
-	 * Sets kind uuid.
-	 *
-	 * @param kindUuid the kind uuid
-	 */
 	public void setKindUuid(String kindUuid) {
 	public void setKindUuid(String kindUuid) {
 		this.kindUuid = kindUuid;
 		this.kindUuid = kindUuid;
 	}
 	}
 
 
-	/**
-	 * Gets kind name cn.
-	 *
-	 * @return the kind name cn
-	 */
 	public String getKindNameCn() {
 	public String getKindNameCn() {
 		return kindNameCn;
 		return kindNameCn;
 	}
 	}
 
 
-	/**
-	 * Sets kind name cn.
-	 *
-	 * @param kindNameCn the kind name cn
-	 */
 	public void setKindNameCn(String kindNameCn) {
 	public void setKindNameCn(String kindNameCn) {
 		this.kindNameCn = kindNameCn;
 		this.kindNameCn = kindNameCn;
 	}
 	}
 
 
-	/**
-	 * Gets brand name cn.
-	 *
-	 * @return the brand name cn
-	 */
 	public String getBrandNameCn() {
 	public String getBrandNameCn() {
 		return brandNameCn;
 		return brandNameCn;
 	}
 	}
 
 
-	/**
-	 * Sets brand name cn.
-	 *
-	 * @param brandNameCn the brand name cn
-	 */
 	public void setBrandNameCn(String brandNameCn) {
 	public void setBrandNameCn(String brandNameCn) {
 		this.brandNameCn = brandNameCn;
 		this.brandNameCn = brandNameCn;
 	}
 	}
 
 
-	/**
-	 * Gets min price rmb.
-	 *
-	 * @return the min price rmb
-	 */
 	public Double getMinPriceRMB() {
 	public Double getMinPriceRMB() {
 		return minPriceRMB;
 		return minPriceRMB;
 	}
 	}
 
 
-	/**
-	 * Sets min price rmb.
-	 *
-	 * @param minPriceRMB the min price rmb
-	 */
 	public void setMinPriceRMB(Double minPriceRMB) {
 	public void setMinPriceRMB(Double minPriceRMB) {
 		this.minPriceRMB = minPriceRMB;
 		this.minPriceRMB = minPriceRMB;
 	}
 	}
 
 
-	/**
-	 * Gets min price usd.
-	 *
-	 * @return the min price usd
-	 */
 	public Double getMinPriceUSD() {
 	public Double getMinPriceUSD() {
 		return minPriceUSD;
 		return minPriceUSD;
 	}
 	}
 
 
-	/**
-	 * Sets min price usd.
-	 *
-	 * @param minPriceUSD the min price usd
-	 */
 	public void setMinPriceUSD(Double minPriceUSD) {
 	public void setMinPriceUSD(Double minPriceUSD) {
 		this.minPriceUSD = minPriceUSD;
 		this.minPriceUSD = minPriceUSD;
 	}
 	}
 
 
-	/**
-	 * Gets store en uu.
-	 *
-	 * @return the store en uu
-	 */
 	public Long getStoreEnUU() {
 	public Long getStoreEnUU() {
 		return storeEnUU;
 		return storeEnUU;
 	}
 	}
 
 
-	/**
-	 * Sets store en uu.
-	 *
-	 * @param storeEnUU the store en uu
-	 */
 	public void setStoreEnUU(Long storeEnUU) {
 	public void setStoreEnUU(Long storeEnUU) {
 		this.storeEnUU = storeEnUU;
 		this.storeEnUU = storeEnUU;
 	}
 	}
 
 
-	/**
-	 * Gets store uuid.
-	 *
-	 * @return the store uuid
-	 */
 	public String getStoreUuid() {
 	public String getStoreUuid() {
 		return storeUuid;
 		return storeUuid;
 	}
 	}
 
 
-	/**
-	 * Sets store uuid.
-	 *
-	 * @param storeUuid the store uuid
-	 */
 	public void setStoreUuid(String storeUuid) {
 	public void setStoreUuid(String storeUuid) {
 		this.storeUuid = storeUuid;
 		this.storeUuid = storeUuid;
 	}
 	}

+ 49 - 23
src/main/java/com/uas/platform/b2c/advertise/ad/model/RecommendProduct.java

@@ -1,5 +1,8 @@
 package com.uas.platform.b2c.advertise.ad.model;
 package com.uas.platform.b2c.advertise.ad.model;
 
 
+
+import javax.persistence.*;
+import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
 
 
 /**
 /**
@@ -8,12 +11,16 @@ import java.util.Date;
  * history:
  * history:
  * Created by huxz on 2017-3-3 10:44:16
  * Created by huxz on 2017-3-3 10:44:16
  */
  */
-public class RecommendProduct {
+@Entity
+@Table(name = "store$recommendproduct")
+public class RecommendProduct implements Serializable {
 
 
 	/**
 	/**
 	 * 主键UUID
 	 * 主键UUID
 	 */
 	 */
-	private String id;
+	@Id
+	@GeneratedValue(strategy = GenerationType.AUTO)
+	private Long id;
 
 
 	/*=========================================================================
 	/*=========================================================================
 	 * 基础信息
 	 * 基础信息
@@ -22,17 +29,20 @@ public class RecommendProduct {
 	/**
 	/**
 	 * 创建时间
 	 * 创建时间
 	 */
 	 */
+	@Column(name = "create_time")
 	private Date createTime;
 	private Date createTime;
 
 
 	/**
 	/**
 	 * 修改时间
 	 * 修改时间
 	 */
 	 */
+	@Column(name = "update_time")
 	private Date updateTime;
 	private Date updateTime;
 
 
 	/**
 	/**
 	 * 排序
 	 * 排序
 	 */
 	 */
-	private int order;
+	@Column(name = "recommend_order")
+	private Integer order = 1;
 
 
 	/*=========================================================================
 	/*=========================================================================
 	 * 商品基础信息
 	 * 商品基础信息
@@ -41,67 +51,80 @@ public class RecommendProduct {
 	/**
 	/**
 	 * 商品批次号
 	 * 商品批次号
 	 */
 	 */
-	private String batchCode;
+	@Column(name = "batch_code")
+	private String batchCode = "";
 
 
 	/**
 	/**
 	 * 对应的器件uuid
 	 * 对应的器件uuid
 	 */
 	 */
-	private String comUuid;
+	@Column(name = "com_uuid")
+	private String comUuid = "";
 
 
 	/**
 	/**
 	 * 原厂型号
 	 * 原厂型号
 	 */
 	 */
-	private String comCode;
+	@Column(name = "com_code")
+	private String comCode = "";
 
 
 	/**
 	/**
 	 * 图片path
 	 * 图片path
 	 */
 	 */
-	private String comImg;
+	@Column(name = "com_img")
+	private String comImg = "";
 
 
 	/**
 	/**
 	 * 类名UUID
 	 * 类名UUID
 	 */
 	 */
-	private String kindUuid;
+	@Column(name = "kind_uuid")
+	private String kindUuid = "";
 
 
 	/**
 	/**
 	 * 类目的名称
 	 * 类目的名称
 	 */
 	 */
-	private String kindNameCn;
+	@Column(name = "kind_name_cn")
+	private String kindNameCn = "";
 
 
 	/**
 	/**
 	 * 品牌中文名称
 	 * 品牌中文名称
 	 */
 	 */
-	private String brandNameCn;
+	@Column(name = "brand_name_cn")
+	private String brandNameCn = "";
 
 
 	/**
 	/**
 	 * 本批次的最低人民币价格
 	 * 本批次的最低人民币价格
 	 */
 	 */
-	private Double minPriceRMB;
+	@Column(name = "min_price_rmb")
+	private Double minPriceRMB = 0.0;
 
 
 	/**
 	/**
 	 * 本批次的最低美元价格
 	 * 本批次的最低美元价格
 	 */
 	 */
-	private Double minPriceUSD;
+	@Column(name = "min_price_usd")
+	private Double minPriceUSD = 0.0;
 
 
 	/**
 	/**
 	 * 商品库存量
 	 * 商品库存量
 	 */
 	 */
-	private Double reserve;
+	@Column(name = "reserve")
+	private Double reserve = 0.0;
 
 
 	/**
 	/**
 	 * 最小起订量
 	 * 最小起订量
 	 */
 	 */
-	private Double minBuyQty;
+	@Column(name = "min_buy_qty")
+	private Double minBuyQty = 0.0;
 
 
 	/**
 	/**
 	 * 币别
 	 * 币别
 	 */
 	 */
-	private String currency;
+	@Column(name = "currency")
+	private String currency = "";
 
 
 	/**
 	/**
 	 * 产品上架的店铺的UUID
 	 * 产品上架的店铺的UUID
 	 */
 	 */
-	private String storeId;
+	@Column(name = "store_second_id")
+	private String storeId = "";
 
 
 	/*=========================================================================
 	/*=========================================================================
 	 * 店铺信息
 	 * 店铺信息
@@ -110,17 +133,20 @@ public class RecommendProduct {
 	/**
 	/**
 	 * 产品推荐拥有者所属公司UU
 	 * 产品推荐拥有者所属公司UU
 	 */
 	 */
-	private Long storeEnUU;
+	@Column(name = "store_enuu")
+	private Long storeEnUU = 0l;
 
 
 	/**
 	/**
 	 * 产品推荐拥有者的店铺UUID
 	 * 产品推荐拥有者的店铺UUID
 	 */
 	 */
-	private String storeUuid;
+	@Column(name = "store_uuid")
+	private String storeUuid = "";
 
 
 	/**
 	/**
 	 * 售罄状态
 	 * 售罄状态
 	 */
 	 */
-	private Integer status;
+	@Column(name = "status")
+	private Integer status = 601;
 
 
 	public RecommendProduct() {
 	public RecommendProduct() {
 	}
 	}
@@ -133,11 +159,11 @@ public class RecommendProduct {
 		this.status = status;
 		this.status = status;
 	}
 	}
 
 
-	public String getId() {
+	public Long getId() {
 		return id;
 		return id;
 	}
 	}
 
 
-	public void setId(String id) {
+	public void setId(Long id) {
 		this.id = id;
 		this.id = id;
 	}
 	}
 
 
@@ -157,11 +183,11 @@ public class RecommendProduct {
 		this.updateTime = updateTime;
 		this.updateTime = updateTime;
 	}
 	}
 
 
-	public int getOrder() {
+	public Integer getOrder() {
 		return order;
 		return order;
 	}
 	}
 
 
-	public void setOrder(int order) {
+	public void setOrder(Integer order) {
 		this.order = order;
 		this.order = order;
 	}
 	}
 
 

+ 8 - 9
src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/AdvantageCommodityServiceImpl.java

@@ -1,11 +1,11 @@
 package com.uas.platform.b2c.advertise.ad.service.impl;
 package com.uas.platform.b2c.advertise.ad.service.impl;
 
 
+import com.uas.platform.b2c.advertise.ad.dao.AdvantageCommodityRepository;
 import com.uas.platform.b2c.advertise.ad.model.AdvantageCommodity;
 import com.uas.platform.b2c.advertise.ad.model.AdvantageCommodity;
 import com.uas.platform.b2c.advertise.ad.service.AdvantageCommodityService;
 import com.uas.platform.b2c.advertise.ad.service.AdvantageCommodityService;
 import com.uas.platform.b2c.core.config.MicroServicesConf;
 import com.uas.platform.b2c.core.config.MicroServicesConf;
 import com.uas.platform.b2c.core.config.MicroServicesConfMulti;
 import com.uas.platform.b2c.core.config.MicroServicesConfMulti;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.config.SysConf;
-import com.uas.platform.b2c.core.utils.JacksonUtils;
 import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,24 +33,23 @@ public class AdvantageCommodityServiceImpl implements AdvantageCommodityService
 
 
 	private final SysConf sysConf;
 	private final SysConf sysConf;
 
 
+	private final AdvantageCommodityRepository advantageCommodityRepository;
+
 	@Autowired
 	@Autowired
-	public AdvantageCommodityServiceImpl(MicroServicesConf conf, RestTemplate restTemplate, SysConf sysConf, MicroServicesConfMulti confMulti) {
+	public AdvantageCommodityServiceImpl(MicroServicesConf conf, RestTemplate restTemplate, SysConf sysConf, MicroServicesConfMulti confMulti, AdvantageCommodityRepository advantageCommodityRepository) {
 		this.conf = conf;
 		this.conf = conf;
 		this.restTemplate = restTemplate;
 		this.restTemplate = restTemplate;
 		this.sysConf = sysConf;
 		this.sysConf = sysConf;
 		this.confMulti = confMulti;
 		this.confMulti = confMulti;
+		this.advantageCommodityRepository = advantageCommodityRepository;
 	}
 	}
 
 
 	@Override
 	@Override
 	public List<AdvantageCommodity> findByStoreUuid(String storeUuid) {
 	public List<AdvantageCommodity> findByStoreUuid(String storeUuid) {
-		if (StringUtils.hasText(storeUuid)) {
-			String url = confMulti.getRecommendUrl( "/store-cms/advantages?storeUuid=" + storeUuid);
-			String result = restTemplate.getForEntity(url, String.class).getBody();
-			if (StringUtils.hasText(result)) {
-				return JacksonUtils.fromJsonArray(result, AdvantageCommodity.class);
-			}
+		if (StringUtils.isEmpty(storeUuid)) {
+			return Collections.emptyList();
 		}
 		}
-		return Collections.emptyList();
+		return advantageCommodityRepository.findByStoreUuid(storeUuid);
 	}
 	}
 
 
 	/**
 	/**

+ 40 - 47
src/main/java/com/uas/platform/b2c/advertise/ad/service/impl/RecommendProductServiceImpl.java

@@ -1,11 +1,10 @@
 package com.uas.platform.b2c.advertise.ad.service.impl;
 package com.uas.platform.b2c.advertise.ad.service.impl;
 
 
-import com.uas.platform.b2c.advertise.ad.model.Message;
+import com.uas.platform.b2c.advertise.ad.dao.RecommendProductDao;
 import com.uas.platform.b2c.advertise.ad.model.RecommendProduct;
 import com.uas.platform.b2c.advertise.ad.model.RecommendProduct;
 import com.uas.platform.b2c.advertise.ad.service.RecommendProductService;
 import com.uas.platform.b2c.advertise.ad.service.RecommendProductService;
 import com.uas.platform.b2c.advertise.ad.utils.RecommendProductsUtils;
 import com.uas.platform.b2c.advertise.ad.utils.RecommendProductsUtils;
 import com.uas.platform.b2c.core.config.MicroServicesConfMulti;
 import com.uas.platform.b2c.core.config.MicroServicesConfMulti;
-import com.uas.platform.b2c.core.utils.JacksonUtils;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,12 +15,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.client.RestTemplate;
 
 
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 
 /**
 /**
  * 产品推荐业务实现类
  * 产品推荐业务实现类
@@ -43,51 +37,39 @@ public class RecommendProductServiceImpl implements RecommendProductService {
 
 
 	private final MicroServicesConfMulti conf;
 	private final MicroServicesConfMulti conf;
 
 
+	private final RecommendProductDao recommendProductDao;
+
 	@Autowired
 	@Autowired
-	public RecommendProductServiceImpl(RestTemplate restTemplate, GoodsDao goodsDao, KafkaTemplate<String, String> kafkaTemplate, MicroServicesConfMulti conf) {
+	public RecommendProductServiceImpl(RestTemplate restTemplate, GoodsDao goodsDao, KafkaTemplate<String, String> kafkaTemplate, MicroServicesConfMulti conf, RecommendProductDao recommendProductDao) {
 		this.restTemplate = restTemplate;
 		this.restTemplate = restTemplate;
 		this.goodsDao = goodsDao;
 		this.goodsDao = goodsDao;
 		this.kafkaTemplate = kafkaTemplate;
 		this.kafkaTemplate = kafkaTemplate;
 		this.conf = conf;
 		this.conf = conf;
+		this.recommendProductDao = recommendProductDao;
 	}
 	}
 
 
 	@Override
 	@Override
 	public void deleteProductsWhenSellerUpdateReserve(String storeUuid, Set<String> batchCodes) {
 	public void deleteProductsWhenSellerUpdateReserve(String storeUuid, Set<String> batchCodes) {
-		if (StringUtils.isEmpty(storeUuid) || CollectionUtils.isEmpty(batchCodes)) {
-			return;
-		}
-
-		if (StringUtils.isEmpty(profile)) {
-			throw new IllegalStateException("无法获取配置文件属性值");
-		}
-
-		Date date = new Date();
-
-		Message message = new Message();
-		message.setId(date.getTime());
-		message.setSendTime(date);
-		message.setUuid(storeUuid);
-		message.setBatchCodes(batchCodes);
-		System.out.println(JacksonUtils.toJson(message));
-
-		/*String topic = "recommend-products-delete" + "-" + ("prod".equals(profile) ? "prod" : "test");
-		kafkaTemplate.send(topic, "batchCode", JacksonUtils.toJson(message));*/
-		String url = conf.getRecommendUrl("/api/recommend/products/delete");
-		restTemplate.postForObject(url, JacksonUtils.toJson(message), String.class);
+        if (StringUtils.isEmpty(storeUuid) || CollectionUtils.isEmpty(batchCodes)) {
+            return ;
+        }
+        List<RecommendProduct> products = recommendProductDao.findByStoreUuidAndBatchCodeIn(storeUuid, batchCodes);
+
+        // 如果查询到了产品推荐信息,则删除对应的推荐产品
+        if (!CollectionUtils.isEmpty(products)) {
+            recommendProductDao.delete(products);
+        }
 	}
 	}
 
 
 	@Override
 	@Override
 	public List<RecommendProduct> findProductsWhenUserVisitStore(String uuid) {
 	public List<RecommendProduct> findProductsWhenUserVisitStore(String uuid) {
-		Map<String, String> map = new HashMap<>();
-		map.put("uuid", uuid);
-		String url = conf.getRecommendUrl("/api/recommend/products?condition=store_uuid&uuid={uuid}");
-		String content = restTemplate.getForObject(url, String.class, map);
-		if (StringUtils.isEmpty(content)) {
+		if (StringUtils.isEmpty(uuid)) {
 			return Collections.emptyList();
 			return Collections.emptyList();
 		}
 		}
-
-		List<RecommendProduct> recommendProducts = JacksonUtils.fromJsonArray(content, RecommendProduct.class);
-
+		List<RecommendProduct> recommendProducts = recommendProductDao.findByStoreUuidOrderByOrderAsc(uuid);
+		if (org.apache.commons.collections.CollectionUtils.isEmpty(recommendProducts)) {
+			recommendProducts = new ArrayList<>();
+		}
 		for (RecommendProduct product : recommendProducts) {
 		for (RecommendProduct product : recommendProducts) {
 			Goods commodity = goodsDao.findByBatchCode(product.getBatchCode());
 			Goods commodity = goodsDao.findByBatchCode(product.getBatchCode());
 			if (commodity != null) {
 			if (commodity != null) {
@@ -107,24 +89,35 @@ public class RecommendProductServiceImpl implements RecommendProductService {
 			productList = Collections.emptyList();
 			productList = Collections.emptyList();
 		}
 		}
 
 
-		String url = conf.getRecommendUrl("/api/recommend/products?uuid=" + uuid);
+		if (StringUtils.isEmpty(uuid)) {
+			return Collections.emptyList();
+		}
 
 
-		String content;
-		try {
-			content = restTemplate.postForObject(url, productList, String.class);
-		} catch (Exception e) {
-			content = "[]";
+		List<RecommendProduct> products = recommendProductDao.findByStoreUuidOrderByOrderAsc(uuid);
+		if (!CollectionUtils.isEmpty(products)) {
+			recommendProductDao.delete(products);
 		}
 		}
 
 
-		List<RecommendProduct> recommendProducts = JacksonUtils.fromJsonArray(content, RecommendProduct.class);
+		if (CollectionUtils.isEmpty(productList)) {
+			return Collections.emptyList();
+		}
 
 
-		for (RecommendProduct product : recommendProducts) {
+		for (RecommendProduct product : productList) {
+			Date nowDate = new Date();
+
+			product.setStoreUuid(uuid);
+			product.setCreateTime(nowDate);
+			product.setUpdateTime(nowDate);
+		}
+		recommendProductDao.save(productList);
+
+		for (RecommendProduct product : productList) {
 			Goods commodity = goodsDao.findByBatchCode(product.getBatchCode());
 			Goods commodity = goodsDao.findByBatchCode(product.getBatchCode());
 			if (commodity != null) {
 			if (commodity != null) {
 				RecommendProductsUtils.fillCommodityInfo(product, commodity);
 				RecommendProductsUtils.fillCommodityInfo(product, commodity);
 			}
 			}
 		}
 		}
-		return recommendProducts;
+		return productList;
 	}
 	}
 
 
 
 

+ 17 - 2
src/main/java/com/uas/platform/b2c/common/account/controller/EnterpriseController.java

@@ -9,9 +9,7 @@ import com.uas.platform.b2c.common.account.service.UserService;
 import com.uas.platform.b2c.common.search.util.PageParams;
 import com.uas.platform.b2c.common.search.util.PageParams;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.fa.payment.utils.StringUtils;
 import com.uas.platform.b2c.fa.payment.utils.StringUtils;
-import com.uas.platform.b2c.prod.store.model.StoreIn;
 import com.uas.platform.b2c.prod.store.service.StoreInService;
 import com.uas.platform.b2c.prod.store.service.StoreInService;
-import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.sso.core.Status;
 import com.uas.sso.core.Status;
 import com.uas.sso.entity.ApplyUserSpaceView;
 import com.uas.sso.entity.ApplyUserSpaceView;
@@ -314,6 +312,15 @@ public class EnterpriseController {
 		return ResultMap.success(count);
 		return ResultMap.success(count);
 	}
 	}
 
 
+	/**
+	 * 查找所有
+	 *
+	 * @param spaceUU 企业UU
+	 * @param params 分页条件
+	 * @param keyword 过滤条件
+	 * @param status 311 申请中
+	 * @return
+	 */
     @RequestMapping(value = "/findApplyToMall", method = RequestMethod.GET)
     @RequestMapping(value = "/findApplyToMall", method = RequestMethod.GET)
     public Page<ApplyUserSpaceView> findApplyToMall(Long spaceUU, PageParams params, String keyword, Integer status) {
     public Page<ApplyUserSpaceView> findApplyToMall(Long spaceUU, PageParams params, String keyword, Integer status) {
         Page<ApplyUserSpaceView> applyAllToMall = null;
         Page<ApplyUserSpaceView> applyAllToMall = null;
@@ -325,6 +332,14 @@ public class EnterpriseController {
         return applyAllToMall;
         return applyAllToMall;
     }
     }
 
 
+	/**
+	 *
+	 *
+	 * @param userUU 被处理人 userUU
+	 * @param id
+	 * @param status 1: 通过
+	 * @return
+	 */
     @RequestMapping(value = "/auditApply", method = RequestMethod.GET)
     @RequestMapping(value = "/auditApply", method = RequestMethod.GET)
     public String auditApply(Long userUU, Long id, Integer status) {
     public String auditApply(Long userUU, Long id, Integer status) {
 	    String auditApply = null;
 	    String auditApply = null;

+ 15 - 0
src/main/java/com/uas/platform/b2c/common/account/model/Enterprise.java

@@ -195,6 +195,12 @@ public class Enterprise implements Serializable {
 	@Column(name = "en_description", length = 2500)
 	@Column(name = "en_description", length = 2500)
 	private String description;
 	private String description;
 
 
+	/**
+	 * 企业物料数量(数据库每日定时更新)
+	 */
+	@Column(name = "en_prodcount")
+	private Long prodCount;
+
 	public String getDescription() {
 	public String getDescription() {
 		return description;
 		return description;
 	}
 	}
@@ -500,4 +506,13 @@ public class Enterprise implements Serializable {
 	public void setEnBusinessScope(String enBusinessScope) {
 	public void setEnBusinessScope(String enBusinessScope) {
 		this.enBusinessScope = enBusinessScope;
 		this.enBusinessScope = enBusinessScope;
 	}
 	}
+
+	public Long getProdCount() {
+		return prodCount;
+	}
+
+	public void setProdCount(Long prodCount) {
+		this.prodCount = prodCount;
+	}
+
 }
 }

+ 16 - 3
src/main/java/com/uas/platform/b2c/common/weixin/contoller/WeChatController.java

@@ -4,6 +4,9 @@ import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.weixin.model.MessageModel;
 import com.uas.platform.b2c.common.weixin.model.MessageModel;
 import com.uas.platform.b2c.common.weixin.service.WeChatService;
 import com.uas.platform.b2c.common.weixin.service.WeChatService;
 import com.uas.platform.b2c.common.weixin.util.CheckoutUtil;
 import com.uas.platform.b2c.common.weixin.util.CheckoutUtil;
+import org.apache.commons.lang3.ArrayUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.Model;
 import org.springframework.ui.Model;
 import org.springframework.ui.ModelMap;
 import org.springframework.ui.ModelMap;
@@ -27,12 +30,15 @@ import java.util.List;
 @RequestMapping("/wx")
 @RequestMapping("/wx")
 public class WeChatController {
 public class WeChatController {
 
 
+    private Logger logger = LoggerFactory.getLogger(WeChatController.class);
+
 
 
     @Autowired
     @Autowired
     private WeChatService weChatService;
     private WeChatService weChatService;
 
 
     /**
     /**
      * 与微信服务器接口配置
      * 与微信服务器接口配置
+     *
      * @param model
      * @param model
      * @param request
      * @param request
      * @param response
      * @param response
@@ -47,6 +53,7 @@ public class WeChatController {
         String nonce = request.getParameter("nonce");
         String nonce = request.getParameter("nonce");
         // 随机字符串
         // 随机字符串
         String echostr = request.getParameter("echostr");
         String echostr = request.getParameter("echostr");
+        logger.info("与微信服务器接口配置 with signature: {} and timestamp: {} and nonce: {} and echostr: {}", signature, timestamp, nonce, echostr);
         PrintWriter print;
         PrintWriter print;
         // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
         // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
         if (signature != null && CheckoutUtil.checkSignature(signature, timestamp, nonce)) {
         if (signature != null && CheckoutUtil.checkSignature(signature, timestamp, nonce)) {
@@ -62,31 +69,37 @@ public class WeChatController {
 
 
     /**
     /**
      * 用户微信授权成功返回接口
      * 用户微信授权成功返回接口
-     * @param code 用于获取AccessToken
+     *
+     * @param code  用于获取AccessToken
      * @param state 获取code的state参数
      * @param state 获取code的state参数
      * @return 微信用户信息
      * @return 微信用户信息
      */
      */
     @RequestMapping(value = "/getWxUserInfo", method = RequestMethod.GET)
     @RequestMapping(value = "/getWxUserInfo", method = RequestMethod.GET)
     public ModelMap getWxUserInfo(String code, String state, String openId) {
     public ModelMap getWxUserInfo(String code, String state, String openId) {
+        logger.info("用户微信授权 code: {}, state: {}, openId: {}", code, state, openId);
         return weChatService.getWxUserInfo(code, state, openId);
         return weChatService.getWxUserInfo(code, state, openId);
     }
     }
 
 
     /**
     /**
      * 发送模板消息
      * 发送模板消息
+     *
      * @return
      * @return
      */
      */
     @RequestMapping(value = "/sendTemplateMessage", method = RequestMethod.POST)
     @RequestMapping(value = "/sendTemplateMessage", method = RequestMethod.POST)
-    public ModelMap sendTemplateMessage(@RequestBody List<MessageModel> messages){
+    public ModelMap sendTemplateMessage(@RequestBody List<MessageModel> messages) {
+        logger.info("发送模板消息 message: {}", ArrayUtils.toString(messages));
         return weChatService.sendTemplateMessage(messages);
         return weChatService.sendTemplateMessage(messages);
     }
     }
 
 
     /**
     /**
      * 绑定用户
      * 绑定用户
+     *
      * @param user
      * @param user
      * @return
      * @return
      */
      */
     @RequestMapping(value = "/bindUser", method = RequestMethod.POST)
     @RequestMapping(value = "/bindUser", method = RequestMethod.POST)
-    public ModelMap bindUser(@RequestBody User user){
+    public ModelMap bindUser(@RequestBody User user) {
+        logger.info("绑定用户 userUU: {}", user.getUserUU());
         return weChatService.bindUser(user);
         return weChatService.bindUser(user);
     }
     }
 }
 }

+ 23 - 0
src/main/java/com/uas/platform/b2c/common/weixin/model/MessageModel.java

@@ -219,4 +219,27 @@ public class MessageModel {
     public void setSourceId(Long sourceId) {
     public void setSourceId(Long sourceId) {
         this.sourceId = sourceId;
         this.sourceId = sourceId;
     }
     }
+
+    @Override
+    public String toString() {
+        return "MessageModel{" +
+                "type='" + type + '\'' +
+                ", content='" + content + '\'' +
+                ", remark='" + remark + '\'' +
+                ", sourceId=" + sourceId +
+                ", receiverUu=" + receiverUu +
+                ", receiverEnuu=" + receiverEnuu +
+                ", senderUu=" + senderUu +
+                ", senderEnuu=" + senderEnuu +
+                ", producerApp='" + producerApp + '\'' +
+                ", consumerType='" + consumerType + '\'' +
+                ", smsType='" + smsType + '\'' +
+                ", mailTemplate='" + mailTemplate + '\'' +
+                ", smTemplate='" + smTemplate + '\'' +
+                ", consumerApp='" + consumerApp + '\'' +
+                ", buyerName='" + buyerName + '\'' +
+                ", vendName='" + vendName + '\'' +
+                ", cmpCode='" + cmpCode + '\'' +
+                '}';
+    }
 }
 }

+ 16 - 0
src/main/java/com/uas/platform/b2c/common/weixin/service/impl/WeChatServiceImpl.java

@@ -20,6 +20,8 @@ import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.sso.entity.UserAccount;
 import com.uas.sso.entity.UserAccount;
 import com.uas.sso.entity.UserView;
 import com.uas.sso.entity.UserView;
 import com.uas.sso.util.AccountUtils;
 import com.uas.sso.util.AccountUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -46,6 +48,8 @@ public class WeChatServiceImpl implements WeChatService{
     @Autowired
     @Autowired
     private RedisTemplate redisTemplate;
     private RedisTemplate redisTemplate;
 
 
+    private Logger logger = LoggerFactory.getLogger(WeChatServiceImpl.class);
+
     /**
     /**
      * 保存到 redis 里的过期时间(second)
      * 保存到 redis 里的过期时间(second)
      */
      */
@@ -53,6 +57,7 @@ public class WeChatServiceImpl implements WeChatService{
 
 
     @Override
     @Override
     public ModelMap getWxUserInfo(String code, String state, String openId) {
     public ModelMap getWxUserInfo(String code, String state, String openId) {
+        logger.info("得到用户信息 code: {}, state: {}, openId: {}", code, state, openId);
         ModelMap result = new ModelMap();
         ModelMap result = new ModelMap();
         if (!StringUtils.isEmpty(code)) {
         if (!StringUtils.isEmpty(code)) {
             AuthUserInfo userInfo = null;
             AuthUserInfo userInfo = null;
@@ -140,8 +145,15 @@ public class WeChatServiceImpl implements WeChatService{
         return result;
         return result;
     }
     }
 
 
+    /**
+     * 微信绑定用户
+     *
+     * @param user
+     * @return
+     */
     @Override
     @Override
     public ModelMap bindUser(User user) {
     public ModelMap bindUser(User user) {
+        logger.info("微信绑定用户 userUU: {}", user.getUserUU());
         ModelMap result = new ModelMap();
         ModelMap result = new ModelMap();
         // 账户中心校验手机号和密码是否正确
         // 账户中心校验手机号和密码是否正确
         if (StringUtils.isEmpty(user) || StringUtils.isEmpty(user.getUserTel()) || StringUtils.isEmpty(user.getUserPwd()) || StringUtils.isEmpty(user.getOpenId())) {
         if (StringUtils.isEmpty(user) || StringUtils.isEmpty(user.getUserTel()) || StringUtils.isEmpty(user.getUserPwd()) || StringUtils.isEmpty(user.getOpenId())) {
@@ -192,6 +204,7 @@ public class WeChatServiceImpl implements WeChatService{
      * @param code
      * @param code
      */
      */
     private AuthUserInfo getAccessTokenByCode(String code) throws Exception {
     private AuthUserInfo getAccessTokenByCode(String code) throws Exception {
+        logger.info("通过code获取用户openId, code: {}", code);
         AuthTokenParams authTokenParams = new AuthTokenParams(WeChatUtil.APPID, WeChatUtil.APPSECRET, code, "authorization_code");
         AuthTokenParams authTokenParams = new AuthTokenParams(WeChatUtil.APPID, WeChatUtil.APPSECRET, code, "authorization_code");
         String json = HttpReqUtil.doGet(WeChatUtil.GET_OAUTH_TOKEN_URL, authTokenParams.getParams());
         String json = HttpReqUtil.doGet(WeChatUtil.GET_OAUTH_TOKEN_URL, authTokenParams.getParams());
         AuthAccessToken authAccessToken = FlexJsonUtils.fromJson(json, AuthAccessToken.class);
         AuthAccessToken authAccessToken = FlexJsonUtils.fromJson(json, AuthAccessToken.class);
@@ -212,6 +225,7 @@ public class WeChatServiceImpl implements WeChatService{
      * @return
      * @return
      */
      */
     private AuthUserInfo getUserInfo(String accessToken, String openId) throws Exception {
     private AuthUserInfo getUserInfo(String accessToken, String openId) throws Exception {
+        logger.info("获取用户信息 accessToken: {}, openId: {}", accessToken, openId);
         // 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
         // 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
         AuthUserParams authUserParams = new AuthUserParams(accessToken, openId, "zh_CN");
         AuthUserParams authUserParams = new AuthUserParams(accessToken, openId, "zh_CN");
         String json = HttpReqUtil.doGet(WeChatUtil.SNS_USERINFO_URL, authUserParams.getParams());
         String json = HttpReqUtil.doGet(WeChatUtil.SNS_USERINFO_URL, authUserParams.getParams());
@@ -229,12 +243,14 @@ public class WeChatServiceImpl implements WeChatService{
     private String getAccessToken (boolean force) {
     private String getAccessToken (boolean force) {
         String access_token = (String) redisTemplate.opsForValue().get("WX_ACCESS_TOKEN");
         String access_token = (String) redisTemplate.opsForValue().get("WX_ACCESS_TOKEN");
         if (!StringUtils.isEmpty(access_token) && !force) {
         if (!StringUtils.isEmpty(access_token) && !force) {
+            logger.info("从缓存中得到 access_token: {}", access_token);
             return access_token;
             return access_token;
         }
         }
         AuthTokenParams authTokenParams = new AuthTokenParams(WeChatUtil.APPID, WeChatUtil.APPSECRET,"client_credential");
         AuthTokenParams authTokenParams = new AuthTokenParams(WeChatUtil.APPID, WeChatUtil.APPSECRET,"client_credential");
         String json = HttpReqUtil.doGet(WeChatUtil.GET_ACCESS_TOKEN, authTokenParams.getParams());
         String json = HttpReqUtil.doGet(WeChatUtil.GET_ACCESS_TOKEN, authTokenParams.getParams());
         AccessToken accessToken = FlexJsonUtils.fromJson(json, AccessToken.class);
         AccessToken accessToken = FlexJsonUtils.fromJson(json, AccessToken.class);
         access_token = accessToken.getAccess_token();
         access_token = accessToken.getAccess_token();
+        logger.info("请求微信接口,得到 access_token: {}", access_token);
         redisTemplate.opsForValue().set("WX_ACCESS_TOKEN", access_token, ACCESS_TOKEN_EXPIRES_IN, TimeUnit.SECONDS);
         redisTemplate.opsForValue().set("WX_ACCESS_TOKEN", access_token, ACCESS_TOKEN_EXPIRES_IN, TimeUnit.SECONDS);
         return access_token;
         return access_token;
     }
     }

+ 1 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/model/Product.java

@@ -20,6 +20,7 @@ import java.util.Set;
 	@Index(name = "products_cmpcode_index", columnList = "pr_cmpcode"),
 	@Index(name = "products_cmpcode_index", columnList = "pr_cmpcode"),
 	@Index(name = "products_brand_index", columnList = "pr_brand"),
 	@Index(name = "products_brand_index", columnList = "pr_brand"),
 	@Index(name = "products_enuu_code_index", columnList = "pr_code, pr_enuu", unique = true),
 	@Index(name = "products_enuu_code_index", columnList = "pr_code, pr_enuu", unique = true),
+	@Index(name = "products_enuu_standard_index", columnList = "pr_enuu, pr_standard"),
 	@Index(name = "products_erpdown_index", columnList = "pr_erpdown")})
 	@Index(name = "products_erpdown_index", columnList = "pr_erpdown")})
 @Logger
 @Logger
 //@Cacheable
 //@Cacheable

+ 15 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java

@@ -548,6 +548,12 @@ public class ReleaseProductByBatch implements Serializable {
 	@Column(name = "rel_attach")
 	@Column(name = "rel_attach")
 	private String attach;
 	private String attach;
 
 
+	/***
+	 * 在售的数量
+	 */
+	@Column(name = "rel_goods_count")
+	private Integer goodsCount = 0;
+
 //	private Short repeat;
 //	private Short repeat;
 
 
 	@Override
 	@Override
@@ -1808,4 +1814,13 @@ public class ReleaseProductByBatch implements Serializable {
 		this.attach = attach;
 		this.attach = attach;
 		return this;
 		return this;
 	}
 	}
+
+	public Integer getGoodsCount() {
+		return goodsCount;
+	}
+
+	public ReleaseProductByBatch setGoodsCount(Integer goodsCount) {
+		this.goodsCount = goodsCount;
+		return this;
+	}
 }
 }

+ 14 - 1
src/main/java/com/uas/platform/b2c/trade/vendor/controller/VendorIntroductionController.java

@@ -1,5 +1,6 @@
 package com.uas.platform.b2c.trade.vendor.controller;
 package com.uas.platform.b2c.trade.vendor.controller;
 
 
+import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
 import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.trade.vendor.model.InviteVendorHistory;
 import com.uas.platform.b2c.trade.vendor.model.InviteVendorHistory;
@@ -9,6 +10,9 @@ import com.uas.platform.b2c.trade.vendor.service.VendorIntroductionService;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.sso.support.Page;
 import com.uas.sso.support.Page;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.web.PageableDefault;
 import org.springframework.ui.ModelMap;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -16,7 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 
 /**
 /**
  * 供应商资源引进模块
  * 供应商资源引进模块
- *
+ *  /product  和 /vendor 均加入了登录拦截排除,之后有不需要登陆拦截的,都是用这两个作为方法url前缀
  * @author dongbw
  * @author dongbw
  * @time 创建时间 :2018年4月25日 15:20:53
  * @time 创建时间 :2018年4月25日 15:20:53
  */
  */
@@ -122,4 +126,13 @@ public class VendorIntroductionController {
 		return map;
 		return map;
 	}
 	}
 
 
+	/**
+	 * 获取推荐供应商数据
+	 * @return 企业信息
+	 */
+	@RequestMapping(value = "/vendor/recommend", method = RequestMethod.GET)
+	public org.springframework.data.domain.Page<Enterprise> getRecommendVendor(@PageableDefault(value = 10, sort = { "prodCount" }, direction = Sort.Direction.DESC) Pageable pageable) {
+		return vendorIntroductionService.getRecommendVendor(pageable);
+	}
+
 }
 }

+ 9 - 0
src/main/java/com/uas/platform/b2c/trade/vendor/service/VendorIntroductionService.java

@@ -1,8 +1,10 @@
 package com.uas.platform.b2c.trade.vendor.service;
 package com.uas.platform.b2c.trade.vendor.service;
 
 
+import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.trade.vendor.model.VendorIntroduction;
 import com.uas.platform.b2c.trade.vendor.model.VendorIntroduction;
 import com.uas.sso.support.Page;
 import com.uas.sso.support.Page;
+import org.springframework.data.domain.Pageable;
 
 
 /**
 /**
  * The interface VendorIntroduction service.
  * The interface VendorIntroduction service.
@@ -45,4 +47,11 @@ public interface VendorIntroductionService {
      * @return
      * @return
      */
      */
     Integer getVendorProductCount(Long vendUU);
     Integer getVendorProductCount(Long vendUU);
+
+    /**
+     * 获取推荐供应商
+     * @param pageable  默认参数
+     * @return
+     */
+    org.springframework.data.domain.Page<Enterprise> getRecommendVendor(Pageable pageable);
 }
 }

+ 20 - 0
src/main/java/com/uas/platform/b2c/trade/vendor/service/impl/VendorIntroductionServiceImpl.java

@@ -1,5 +1,7 @@
 package com.uas.platform.b2c.trade.vendor.service.impl;
 package com.uas.platform.b2c.trade.vendor.service.impl;
 
 
+import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
+import com.uas.platform.b2c.common.account.model.Enterprise;
 import com.uas.platform.b2c.common.base.dao.CommonDao;
 import com.uas.platform.b2c.common.base.dao.CommonDao;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
 import com.uas.platform.b2c.common.search.util.SPage;
 import com.uas.platform.b2c.common.search.util.SPage;
@@ -12,6 +14,7 @@ import com.uas.platform.b2c.trade.vendor.service.VendorIntroductionService;
 import com.uas.ps.core.util.CollectionUtils;
 import com.uas.ps.core.util.CollectionUtils;
 import com.uas.sso.support.Page;
 import com.uas.sso.support.Page;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 
 
@@ -33,6 +36,9 @@ public class VendorIntroductionServiceImpl implements VendorIntroductionService
 	@Autowired
 	@Autowired
 	private SearchService searchService;
 	private SearchService searchService;
 
 
+	@Autowired
+	private EnterpriseDao enterpriseDao;
+
 	/**
 	/**
 	 * 类目
 	 * 类目
 	 */
 	 */
@@ -142,6 +148,20 @@ public class VendorIntroductionServiceImpl implements VendorIntroductionService
 		return v_productPrivateDao.getCountByEnuuAndEnabled(vendUU, IntegerConstant.YES_SHORT);
 		return v_productPrivateDao.getCountByEnuuAndEnabled(vendUU, IntegerConstant.YES_SHORT);
 	}
 	}
 
 
+	/**
+	 * 获取推荐供应商
+	 *
+	 * @param pageable 默认参数
+	 * @return
+	 */
+	@Override
+	public org.springframework.data.domain.Page<Enterprise> getRecommendVendor(Pageable pageable) {
+		if (pageable == null) {
+			return null;
+		}
+		return enterpriseDao.findAll(pageable);
+	}
+
 	/**
 	/**
 	 * 获取供应商资源信息
 	 * 获取供应商资源信息
 	 * @param enUU 本企业UU
 	 * @param enUU 本企业UU

+ 1 - 1
src/main/resources/spring/context.xml

@@ -112,7 +112,7 @@
 
 
 	<bean id="entityManagerFactory"
 	<bean id="entityManagerFactory"
 		  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
 		  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
-		<property name="persistenceUnitName" value="persistenceUnit" />
+		<!--<property name="persistenceUnitName" value="persistenceUnit" />-->
 		<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml"/>
 		<property name="persistenceXmlLocation" value="classpath*:META-INF/persistence.xml"/>
 		<property name="packagesToScan" value="com.uas.platform" />
 		<property name="packagesToScan" value="com.uas.platform" />
 		<property name="dataSource" ref="dataSource" />
 		<property name="dataSource" ref="dataSource" />

+ 2 - 1
src/main/webapp/resources/js/vendor/controllers/forstore/purchasAttendtion_ctrl.js

@@ -33,7 +33,8 @@ define(['app/app'], function (app) {
               Attendtion.getList(param, function(data) {
               Attendtion.getList(param, function(data) {
                 console.log(data.content)
                 console.log(data.content)
                 params.total(data.totalElements);
                 params.total(data.totalElements);
-                $scope.totalElements = data.totalElements
+                $scope.totalElements = data.totalElements;
+                $scope.seekListAll = data;
                 $scope.endNumber = data.numberOfElements;
                 $scope.endNumber = data.numberOfElements;
                 $defer.resolve(data.content);
                 $defer.resolve(data.content);
                 $scope.AttendListData = data.content;
                 $scope.AttendListData = data.content;

+ 1 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/seek_purchase_ctrl.js

@@ -98,6 +98,7 @@ define(['app/app'], function (app) {
                 params.total(data.totalElements);
                 params.total(data.totalElements);
                 $defer.resolve(data.content);
                 $defer.resolve(data.content);
                 $scope.seekListData = data.content;
                 $scope.seekListData = data.content;
+                $scope.seekListAll = data
               }).error(function (response) {
               }).error(function (response) {
                 toaster.pop('error', response);
                 toaster.pop('error', response);
               });
               });

+ 2 - 5
src/main/webapp/resources/view/usercenter/forstore/buyer_cart.html

@@ -136,9 +136,6 @@
 		font-size: 12px;
 		font-size: 12px;
 		color: #5078cb;
 		color: #5078cb;
 	}
 	}
-	#buyer_cart .shopCar .text-center .col-xs-5 p{
-		font-size: 12px;
-	}
 	#buyer_cart .shopCar .text-center .col-xs-5 i{
 	#buyer_cart .shopCar .text-center .col-xs-5 i{
 		color: #5078cb;
 		color: #5078cb;
 		font-size: 12px;
 		font-size: 12px;
@@ -786,8 +783,8 @@
 					<div class="col-xs-offset-3 col-xs-2">
 					<div class="col-xs-offset-3 col-xs-2">
 						<img src="static/img/all/empty-cart.png">
 						<img src="static/img/all/empty-cart.png">
 					</div>
 					</div>
-					<div class="col-xs-5">
-						<p class="grey f16">您的购物车空空如也,请先挑选您想要购买的产品吧!</p>
+					<div class="col-xs-5" style="text-align:left">
+						<p class="grey f14">您的购物车空空如也,请先挑选您想要购买的产品吧!</p>
 						<a href=".">马上去逛一逛</a>&nbsp;<i class="fa fa-arrow-right"></i>
 						<a href=".">马上去逛一逛</a>&nbsp;<i class="fa fa-arrow-right"></i>
 					</div>
 					</div>
 				</div>
 				</div>

+ 41 - 6
src/main/webapp/resources/view/usercenter/forstore/pay_center.html

@@ -61,9 +61,9 @@
 		margin: 20px;
 		margin: 20px;
 	}
 	}
 	#pay_center .tab .tab-dd .col-xs-4{
 	#pay_center .tab .tab-dd .col-xs-4{
-		margin: 42px 0;
+		margin: 42px -25px;
 		line-height: 25px;
 		line-height: 25px;
-		text-align: center;
+		text-align: left;
 		vertical-align: middle;
 		vertical-align: middle;
 	}
 	}
 	#pay_center .tab .tab-dd .col-xs-4 a{
 	#pay_center .tab .tab-dd .col-xs-4 a{
@@ -408,6 +408,33 @@
 	.oder01 ul li.active:after{
 	.oder01 ul li.active:after{
 		display: block
 		display: block
 	}
 	}
+
+	.empty{
+		width:100%;
+		overflow: hidden;
+		height:100px;
+		margin: 0!important;
+		display:inline-flex;
+		justify-content: center;
+		align-items: center;
+	}
+	.empty-info{
+		line-height: 28px;
+		padding-top:10px;
+		margin-left:10px;
+		text-align: left;
+	}
+	.empty-info .grey{
+		color: #999;
+		font-size: 14px;
+	}
+	.empty .empty-info>a{
+		font-size: 14px;
+		color: #5078cb;
+	}
+	.empty .empty-info i{
+		margin-right:5px;
+	}
 </style>
 </style>
 <!--右侧主体部分-->
 <!--右侧主体部分-->
 <div class="user_right fr" id="pay_center">
 <div class="user_right fr" id="pay_center">
@@ -452,7 +479,15 @@
 						</tr>
 						</tr>
 					</tbody>
 					</tbody>
 				</table>
 				</table>
-				<div style="text-align: right;margin-right:25px;margin-top:-30px;">
+				<div class="empty" ng-if="accounts.length == 0">
+					<p class="empty-img">
+						<img src="static/img/all/empty-cart.png">
+					</p>
+					<div class="empty-info">
+						<p class="grey f14">暂无账户信息</p>
+					</div>
+				</div>
+				<div style="text-align: right;margin-right:25px;margin-top:-30px;" ng-if="accounts.length !== 0">
 					<span class="count-tip">显示 {{$$bankInfo.start}}-{{$$bankInfo.end}} 条,共 <em ng-bind="$$bankInfo.totalElements" style="color: #5078cb">2506</em> 条</span>
 					<span class="count-tip">显示 {{$$bankInfo.start}}-{{$$bankInfo.end}} 条,共 <em ng-bind="$$bankInfo.totalElements" style="color: #5078cb">2506</em> 条</span>
 				</div>
 				</div>
 				<div class="com-mall-del-box" ng-if="showDelete">
 				<div class="com-mall-del-box" ng-if="showDelete">
@@ -558,17 +593,17 @@
 						<span><em>退款成功</em></span>
 						<span><em>退款成功</em></span>
 					</dd>-->
 					</dd>-->
 					<dd ng-if="!tradeRecordPage || tradeRecordPage.length == 0" class="tab-dd" style="height: 125px; padding: 30px;">
 					<dd ng-if="!tradeRecordPage || tradeRecordPage.length == 0" class="tab-dd" style="height: 125px; padding: 30px;">
-						<div class="col-xs-offset-3 col-xs-2">
+						<div class="col-xs-offset-3 col-xs-3">
 							<img src="static/img/all/empty-cart.png">
 							<img src="static/img/all/empty-cart.png">
 						</div>
 						</div>
 						<div class="col-xs-4">
 						<div class="col-xs-4">
-							<p class="grey" style="font-size: 12px">暂无支付记录,请下单购买商品吧!</p>
+							<p class="grey" style="font-size:14px">暂无支付记录,请下单购买商品吧!</p>
 							<a href=".">马上去逛一逛</a>&nbsp;<i class="fa fa-arrow-right"></i>
 							<a href=".">马上去逛一逛</a>&nbsp;<i class="fa fa-arrow-right"></i>
 						</div>
 						</div>
 					</dd>
 					</dd>
 
 
 				</dl>
 				</dl>
-				<div style="text-align: right;margin-right:20px;margin-top:10px;">
+				<div style="text-align: right;margin-right:20px;margin-top:10px;" ng-if="tradeRecordPage.length != 0">
 					<span class="count-tip">显示 {{$$record.start}}-{{$$record.end}} 条,共 <em ng-bind="$$record.totalElements" style="color: #5078cb">2506</em> 条</span>
 					<span class="count-tip">显示 {{$$record.start}}-{{$$record.end}} 条,共 <em ng-bind="$$record.totalElements" style="color: #5078cb">2506</em> 条</span>
 				</div>
 				</div>
                 <!--<p class="height16">&nbsp</p>-->
                 <!--<p class="height16">&nbsp</p>-->

+ 4 - 4
src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html

@@ -1052,7 +1052,7 @@
                     </div>
                     </div>
                 </div>
                 </div>
                 <div class="sreach-input fr">
                 <div class="sreach-input fr">
-                    <input type="search" placeholder="品牌/型号" class="form-control" ng-model="keyWord" ng-search="onSearch()"/>
+                    <input type="search" placeholder="品牌/类目/型号" class="form-control" ng-model="keyWord" ng-search="onSearch()"/>
                     <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
                     <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
                 </div>
                 </div>
             </div>
             </div>
@@ -1338,7 +1338,7 @@
                 <tr class="pager-row" ng-if="seekListData.totalElements > 0">
                 <tr class="pager-row" ng-if="seekListData.totalElements > 0">
                 <td colspan="10">
                 <td colspan="10">
                     <div>
                     <div>
-                        显示&nbsp;{{(seekListData.number - 1 ) * seekListData.size + 1}}-{{seekListData.number * seekListData.size}}&nbsp;条,共&nbsp;{{seekListData.totalElements}}&nbsp;条
+                        显示&nbsp;{{(seekListData.number - 1 ) * seekListData.size + 1}}-{{seekListData.totalElements >= 10 ? seekListData.number * seekListData.size : seekListData.totalElements}}&nbsp;条,共&nbsp;{{seekListData.totalElements}}&nbsp;条
                     </div>
                     </div>
                 </td>
                 </td>
             </tr>
             </tr>
@@ -1346,7 +1346,7 @@
                 <td colspan="10">
                 <td colspan="10">
                     <div>
                     <div>
                         <img src="static/img/all/empty-cart.png">
                         <img src="static/img/all/empty-cart.png">
-                        <span>暂无求购信息</span>
+                        <span class="f14">暂无求购信息</span>
                     </div>
                     </div>
                 </td>
                 </td>
             </tr>
             </tr>
@@ -1418,7 +1418,7 @@
                 <td>
                 <td>
                     <div>
                     <div>
                         <img src="static/img/all/empty-cart.png">
                         <img src="static/img/all/empty-cart.png">
-                        <span>暂无求购信息</span>
+                        <span class="f14">暂无求购信息</span>
                     </div>
                     </div>
                 </td>
                 </td>
             </tr>
             </tr>

+ 2 - 2
src/main/webapp/resources/view/usercenter/forstore/store_focus.html

@@ -376,13 +376,13 @@
 			<ul>
 			<ul>
 				<li ng-repeat="item in store" class="store-item">
 				<li ng-repeat="item in store" class="store-item">
 					<div class="img-div" ng-click="setActive(item)" ng-class="{'isSelected-background': isBatch &&item.active}">
 					<div class="img-div" ng-click="setActive(item)" ng-class="{'isSelected-background': isBatch &&item.active}">
-						<a name="imgDetail" href="store/{{item.storeInfo.uuid}}">
+						<a name="imgDetail" href="store/{{item.storeInfo.uuid}}" target="_blank">
 							<img src="{{item.storeInfo.logoUrl}}" class="store-img"/>
 							<img src="{{item.storeInfo.logoUrl}}" class="store-img"/>
 						</a>
 						</a>
 						<div class="img-background-div" ng-class="{'notSelected': isBatch && !item.active, 'isSelected':  isBatch &&item.active}"></div>
 						<div class="img-background-div" ng-class="{'notSelected': isBatch && !item.active, 'isSelected':  isBatch &&item.active}"></div>
 					</div>
 					</div>
 					<div style="width:760px;">
 					<div style="width:760px;">
-						<a name="nameDetail" href="store/{{item.storeInfo.uuid}}">
+						<a name="nameDetail" href="store/{{item.storeInfo.uuid}}" target="_blank">
 							<div ng-bind=item.storeName class="item-storeName"></div>
 							<div ng-bind=item.storeName class="item-storeName"></div>
 						</a>
 						</a>
 						<i class="fa fa-trash fa-2x item-delete" ng-click="deleteById(item.id)" ng-hide="isBatch" title="取消关注" style="cursor: pointer"></i>
 						<i class="fa fa-trash fa-2x item-delete" ng-click="deleteById(item.id)" ng-hide="isBatch" title="取消关注" style="cursor: pointer"></i>

+ 3 - 3
src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_person_erp.html

@@ -1881,7 +1881,7 @@
 								<!--<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>-->
 								<!--<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>-->
 								<!--收起-->
 								<!--收起-->
 								<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
 								<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
-								<span ng-click="setActiveIndex($index,material)"><span>编辑可替代型号</span></span>
+								<span ng-click="setActiveIndex($index,material)"><span>编辑替代物料</span></span>
 								<!--<a ng-show="!isBatch" ng-click="showShelfArea(material)"><span ng-if="!isBatch">编辑</span></a>-->
 								<!--<a ng-show="!isBatch" ng-click="showShelfArea(material)"><span ng-if="!isBatch">编辑</span></a>-->
 								<!--<span ng-show="!isBatch && (material.sold == 0 && material.canSell == 1)" ng-click="publishGoods(material)"><span ng-if="!isBatch">上架</span></span>-->
 								<!--<span ng-show="!isBatch && (material.sold == 0 && material.canSell == 1)" ng-click="publishGoods(material)"><span ng-if="!isBatch">上架</span></span>-->
 							</td>
 							</td>
@@ -2231,7 +2231,7 @@
 						<tr class="replace-row" ng-if="material.productReplaceList.length > 0">
 						<tr class="replace-row" ng-if="material.productReplaceList.length > 0">
 							<td colspan="7">
 							<td colspan="7">
 								<div>
 								<div>
-									<p>可替代型号:</p>
+									<p>替代物料:</p>
 									<div class="replace-list">
 									<div class="replace-list">
 										<div class="replace-item" ng-repeat="replace in material.productReplaceList" ng-if="material.showMoreReplace || (!material.showMoreReplace && replace.detno < 5) ">
 										<div class="replace-item" ng-repeat="replace in material.productReplaceList" ng-if="material.showMoreReplace || (!material.showMoreReplace && replace.detno < 5) ">
 											<i>{{replace.detno}}</i>
 											<i>{{replace.detno}}</i>
@@ -2485,7 +2485,7 @@
 		</div>
 		</div>
 		<div class="content">
 		<div class="content">
 			<div class="content-line">
 			<div class="content-line">
-				<p>可替代型号:</p>
+				<p>替代物料:</p>
 			</div>
 			</div>
 			<div class="content-line" ng-repeat="(key, mate) in replaceMaterialList">
 			<div class="content-line" ng-repeat="(key, mate) in replaceMaterialList">
 				<div class="form-item form-left">
 				<div class="form-item form-left">

+ 3 - 3
src/main/webapp/resources/view/vendor/forstore/purchasAttendtion.html

@@ -195,7 +195,7 @@
       <tbody ng-if="totalElements > 0">
       <tbody ng-if="totalElements > 0">
         <tr ng-repeat="item in AttendListData">
         <tr ng-repeat="item in AttendListData">
           <th ng-click="onCheckBoxOnce(item, $index)"><input type="checkbox" class="checkbox" ng-checked="item.checkBox === true"></th>
           <th ng-click="onCheckBoxOnce(item, $index)"><input type="checkbox" class="checkbox" ng-checked="item.checkBox === true"></th>
-          <th>{{$index + 1}}</th>
+          <th>{{$index + 1 + (seekListAll.number - 1) * seekListAll.size}}</th>
           <th>{{item.nameCn}}</th>
           <th>{{item.nameCn}}</th>
           <th class="Attend_btn"><a ng-click="addAttendTionmodify(item)">{{item.status === 1 ? '取消关注' : '关注'}}</a></th>
           <th class="Attend_btn"><a ng-click="addAttendTionmodify(item)">{{item.status === 1 ? '取消关注' : '关注'}}</a></th>
         </tr>
         </tr>
@@ -209,8 +209,8 @@
         <a ng-click="toggleAttend('isAttend')" >马上去逛一逛</a>
         <a ng-click="toggleAttend('isAttend')" >马上去逛一逛</a>
       </p>
       </p>
     </div>
     </div>
-    <div class="record-line text-right ng-binding ng-scope" ng-if="totalElements > 0">显示 1-
-      <span ng-bind="endNumber" class="ng-binding">10</span>, 共: <span style="color: #5078cb;" class="ng-binding">{{totalElements}}</span> 个
+    <div class="record-line text-right ng-binding ng-scope" ng-if="totalElements > 0">
+      显示&nbsp;{{(seekListAll.number - 1 ) * seekListAll.size + 1}}-{{seekListAll.totalElements >=10 ? seekListAll.number * seekListAll.size : seekListAll.totalElements}}&nbsp;条,共&nbsp;{{seekListAll.totalElements}}&nbsp;条
     </div>
     </div>
   </div>
   </div>
 </div>
 </div>

+ 5 - 1
src/main/webapp/resources/view/vendor/forstore/seekPurchase.html

@@ -3,7 +3,7 @@
         margin: 10px 0 0 0;
         margin: 10px 0 0 0;
         padding: 20px 0;
         padding: 20px 0;
         background: #fff;
         background: #fff;
-        padding-bottom:50px;
+        padding-bottom:100px;
     }
     }
     /*搜索时间筛选 start*/
     /*搜索时间筛选 start*/
     .seek-purchase .seek-purchase-content .screen {
     .seek-purchase .seek-purchase-content .screen {
@@ -85,6 +85,7 @@
     }
     }
     .seek-purchase .seek-purchase-content >table {
     .seek-purchase .seek-purchase-content >table {
         width: 1000px;
         width: 1000px;
+        margin-bottom:40px;
     }
     }
     /*搜索时间筛选 end*/
     /*搜索时间筛选 end*/
     .seek-purchase .seek-purchase-content >table thead {
     .seek-purchase .seek-purchase-content >table thead {
@@ -950,6 +951,9 @@
                 </tr>
                 </tr>
             </tbody>
             </tbody>
         </table>
         </table>
+        <div style="text-align: right;margin-right: 20px;margin-top: -25px;" ng-if="seekListData.length != 0">
+            显示&nbsp;{{(seekListAll.number - 1 ) * seekListAll.size + 1}}-{{seekListAll.totalElements >=10 ? seekListAll.number * seekListAll.size : seekListAll.totalElements}}&nbsp;条,共&nbsp;{{seekListAll.totalElements}}&nbsp;条
+        </div>
     </div>
     </div>
     <div class="com-modal-wrap" ng-show="isShowSayPriceBox">
     <div class="com-modal-wrap" ng-show="isShowSayPriceBox">
         <div class="say-price-box">
         <div class="say-price-box">

+ 3 - 1
src/main/webapp/resources/view/vendor/forstore/vendor_delivery_rule.html

@@ -555,7 +555,9 @@
 
 
 				<tr class="record-num" ng-if="$data">
 				<tr class="record-num" ng-if="$data">
 					<td colspan="5">
 					<td colspan="5">
-						<span class="count-tip">显示 1-10 条,共 <em ng-bind="$data.length" style="color: #5078cb">2506</em> 条</span>
+						<span class="count-tip">
+							显示&nbsp;{{$$rule.start}}-{{$$rule.end}}&nbsp;条,共&nbsp;{{$$rule.totalElements}}&nbsp;条
+						</span>
 					</td>
 					</td>
 				</tr>
 				</tr>
 				</tbody>
 				</tbody>

+ 9 - 9
src/main/webapp/resources/view/vendor/forstore/vendor_material.html

@@ -2121,11 +2121,6 @@
 							<!--<span ng-bind="material.encapsulation || '-'" title="{{material.encapsulation || '-'}}"></span>-->
 							<!--<span ng-bind="material.encapsulation || '-'" title="{{material.encapsulation || '-'}}"></span>-->
 						<!--</td>-->
 						<!--</td>-->
 						<td class="edit">
 						<td class="edit">
-							<span ng-click="lookActiveIndex($index, material)">
-								<span>可替代型号</span>
-								<!--<span>查看</span></span>/<span ng-click="setActiveIndex($index,material)"><span>编辑可替代型号</span>-->
-						  </span>
-							<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
 							<span ng-click="editRegulPicture(material.productAttachSubmit.uploadAttach || material.attach || 'static/img/vendor/images/upload_file_icon.png', material)">
 							<span ng-click="editRegulPicture(material.productAttachSubmit.uploadAttach || material.attach || 'static/img/vendor/images/upload_file_icon.png', material)">
 								<span>编辑物料</span>
 								<span>编辑物料</span>
 							</span>
 							</span>
@@ -2134,6 +2129,11 @@
 								<span ng-if="material.batchCount">添加产品</span>
 								<span ng-if="material.batchCount">添加产品</span>
 								<span ng-if="!material.batchCount">编辑上架</span>
 								<span ng-if="!material.batchCount">编辑上架</span>
 							</span>
 							</span>
+							<span ng-click="lookActiveIndex($index, material)">
+								<span>替代物料</span>
+								<!--<span>查看</span></span>/<span ng-click="setActiveIndex($index,material)"><span>编辑替代物料</span>-->
+						  	</span>
+							<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
 							<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>
 							<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>
 							<!--收起-->
 							<!--收起-->
 							<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
 							<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
@@ -2696,10 +2696,10 @@
     <div class="content content3">
     <div class="content content3">
       <div class="content-line content-line2">
       <div class="content-line content-line2">
         <div class="leftline"></div>
         <div class="leftline"></div>
-        <p class="toptitle">可替代型号:</p>
+        <p class="toptitle">替代物料:</p>
         <div class="rightline"></div>
         <div class="rightline"></div>
       </div>
       </div>
-			<div class="no-resulte" ng-if="resultDatalist.length == 0">暂无可替代型号,赶快去<a ng-click="updateIndex()">编辑</a>吧</div>
+			<div class="no-resulte" ng-if="resultDatalist.length == 0">暂无替代物料,赶快去<a ng-click="updateIndex()">编辑</a>吧</div>
       <div class="content_top" ng-if="resultDatalist.length > 0">
       <div class="content_top" ng-if="resultDatalist.length > 0">
         <div class="content_toptitle">型号</div>
         <div class="content_toptitle">型号</div>
         <div class="content_toptitle">品牌</div>
         <div class="content_toptitle">品牌</div>
@@ -2714,7 +2714,7 @@
       </ul>
       </ul>
     </div>
     </div>
 
 
-		<div class="reminfo" style="background: #fff;text-align: right;margin: 0px;padding-right: 20px;padding-top:5px;padding-bottom: 10px" ng-if="resultDatalist.length > 0">共<span style="color: #5078cb">{{resultDatalist.length}}</span>个可替代型号</div>
+		<div class="reminfo" style="background: #fff;text-align: right;margin: 0px;padding-right: 20px;padding-top:5px;padding-bottom: 10px" ng-if="resultDatalist.length > 0">共<span style="color: #5078cb">{{resultDatalist.length}}</span>个替代物料</div>
     <div class="operate">
     <div class="operate">
 			<span ng-if="resultDatalist.length >= 0" ng-click="setActiveIndex(setShowActive, _material)">编辑</span>
 			<span ng-if="resultDatalist.length >= 0" ng-click="setActiveIndex(setShowActive, _material)">编辑</span>
       <span ng-click="lookActiveIndex(-1)" style="background: #5078cb">关闭</span>
       <span ng-click="lookActiveIndex(-1)" style="background: #5078cb">关闭</span>
@@ -2730,7 +2730,7 @@
 		</div>
 		</div>
 		<div class="content content2">
 		<div class="content content2">
 			<div class="content-line">
 			<div class="content-line">
-				<p>可替代型号:</p>
+				<p>替代物料:</p>
 			</div>
 			</div>
 			<div class="content-line" ng-repeat="(key, mate) in replaceMaterialList" on-finish-render="ngRepeatFinished">
 			<div class="content-line" ng-repeat="(key, mate) in replaceMaterialList" on-finish-render="ngRepeatFinished">
 				<div class="form-item form-left">
 				<div class="form-item form-left">

+ 6 - 6
src/main/webapp/resources/view/vendor/forstore/vendor_material_person.html

@@ -1933,15 +1933,15 @@
 						</td>
 						</td>
 						<!-- /end 新增规格书字段 -->
 						<!-- /end 新增规格书字段 -->
 						<td class="edit">
 						<td class="edit">
+							<span  ng-click="editRegulPicture(material.productAttachSubmit.uploadAttach || 'static/img/vendor/images/upload_file_icon.png', material)">
+								<span>编辑物料</span>
+							</span>
+							<span ng-click="setActiveIndex($index,material)"><span>编辑替代物料</span></span>
 							<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
 							<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>
 							<!--<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)"><span>添加产品</span></span>-->
 							<!--<span ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="showShelfArea(material)"><span>添加产品</span></span>-->
 							<!--<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>-->
 							<!--<span ng-if="material.batchCount" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="expandGoods(material)"><span>展开<i class="fa fa-angle-down" style="margin-left:2px;"></i></span></span>-->
 							<!--收起-->
 							<!--收起-->
 							<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
 							<span ng-show="!isBatch && material.exPandOper" ng-click="disExpandGoods(material)" class="packUp"><span>收起<i class="fa fa-angle-up" style="margin-left:2px;"></i></span></span>
-							<span ng-click="setActiveIndex($index,material)"><span>编辑可替代型号</span></span>
-							<span  ng-click="editRegulPicture(material.productAttachSubmit.uploadAttach || 'static/img/vendor/images/upload_file_icon.png', material)">
-								<span>编辑物料</span>
-							</span>
 							<!--<a ng-show="!isBatch" ng-click="showShelfArea(material)"><span ng-if="!isBatch">编辑</span></a>-->
 							<!--<a ng-show="!isBatch" ng-click="showShelfArea(material)"><span ng-if="!isBatch">编辑</span></a>-->
 							<!--<span ng-show="!isBatch && (material.sold == 0 && material.canSell == 1)" ng-click="publishGoods(material)"><span ng-if="!isBatch">上架</span></span>-->
 							<!--<span ng-show="!isBatch && (material.sold == 0 && material.canSell == 1)" ng-click="publishGoods(material)"><span ng-if="!isBatch">上架</span></span>-->
 						</td>
 						</td>
@@ -2291,7 +2291,7 @@
 					<tr class="replace-row" ng-if="material.productReplaceList.length > 0">
 					<tr class="replace-row" ng-if="material.productReplaceList.length > 0">
 						<td colspan="7">
 						<td colspan="7">
 							<div>
 							<div>
-								<p>可替代型号:</p>
+								<p>替代物料:</p>
 								<div class="replace-list"  ng-class="{'Scrollactive': material.showMoreReplace} ">
 								<div class="replace-list"  ng-class="{'Scrollactive': material.showMoreReplace} ">
 									<div class="replace-item" ng-repeat="replace in material.productReplaceList" ng-if="material.showMoreReplace || (!material.showMoreReplace && replace.detno < 5) ">
 									<div class="replace-item" ng-repeat="replace in material.productReplaceList" ng-if="material.showMoreReplace || (!material.showMoreReplace && replace.detno < 5) ">
 										<i>{{replace.detno}}</i>
 										<i>{{replace.detno}}</i>
@@ -2545,7 +2545,7 @@
 		</div>
 		</div>
 		<div class="content">
 		<div class="content">
 			<div class="content-line">
 			<div class="content-line">
-				<p>可替代型号:</p>
+				<p>替代物料:</p>
 			</div>
 			</div>
 			<div class="content-line" ng-repeat="(key, mate) in replaceMaterialList" on-finish-render="ngRepeatFinished">
 			<div class="content-line" ng-repeat="(key, mate) in replaceMaterialList" on-finish-render="ngRepeatFinished">
 				<div class="form-item form-left">
 				<div class="form-item form-left">

+ 6 - 0
src/main/webapp/resources/view/vendor/forstore/vendor_order.html

@@ -630,7 +630,13 @@
 	.operate-height{
 	.operate-height{
 		position: relative;
 		position: relative;
 		color: #333 !important;
 		color: #333 !important;
+		cursor:auto;
 	}
 	}
+
+	.operate-height .ship-btn{
+		cursor:pointer;
+	}
+
 	.operate-height .ship-btn:hover + .ship-content,.operate-height .ship-btn:hover + .pay{
 	.operate-height .ship-btn:hover + .ship-content,.operate-height .ship-btn:hover + .pay{
 		display: inline-block !important;
 		display: inline-block !important;
 	}
 	}

+ 1 - 1
src/main/webapp/resources/view/vendor/left_nav.html

@@ -64,7 +64,7 @@
 				<!-- 我的店铺申述 store -->
 				<!-- 我的店铺申述 store -->
 				<span  ui-sref="vendor_store_maintain" ng-if="store && store.status && store.status !== 'OPENED'">我的店铺</span>
 				<span  ui-sref="vendor_store_maintain" ng-if="store && store.status && store.status !== 'OPENED'">我的店铺</span>
 			</li>
 			</li>
-			<li ng-class="{'active' : active == 'vendor_material'}"><span  ui-sref="vendor_material" ng-bind="isPcbStore ? 'PCB产品管理' : '产品管理'">产品管理</span></li>
+			<li ng-class="{'active' : active == 'vendor_material'}"><span  ui-sref="vendor_material" ng-bind="isPcbStore ? 'PCB库存管理' : '库存管理'">库存管理</span></li>
 			<!--	<li ng-class="{'active' : active == 'vendor_productOn'}"><span  ui-sref="vendor_productOn">产品导入</span></li>-->
 			<!--	<li ng-class="{'active' : active == 'vendor_productOn'}"><span  ui-sref="vendor_productOn">产品导入</span></li>-->
 			<li ng-class="{'active' : active == 'vendor_productOn'}" ng-if="!isPcbStore"><span  ui-sref="vendor_upload">产品导入</span></li>
 			<li ng-class="{'active' : active == 'vendor_productOn'}" ng-if="!isPcbStore"><span  ui-sref="vendor_upload">产品导入</span></li>
 
 

+ 24 - 0
src/test/java/com/uas/platform/b2c/WechatTestController.java

@@ -0,0 +1,24 @@
+package com.uas.platform.b2c;
+
+import org.junit.Test;
+import org.springframework.test.web.servlet.RequestBuilder;
+
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+/**
+ * @author liuam
+ * @since 2018/7/4 0004 下午 16:42
+ */
+public class WechatTestController extends BaseJunitTest {
+
+    @Test
+    public void testWenxinCheck() throws Exception {
+        RequestBuilder request = null;
+        request = get("/wx/check")
+                .param("signature", "signature")
+                .param("timestamp", "timestamp")
+                .param("nonce", "nonce")
+                .param("echostr", "echostr");
+        mockMvc.perform(request);
+    }
+
+}