Przeglądaj źródła

求购-买家中心 我的求购

liusw 8 lat temu
rodzic
commit
3a5a05e3d1
24 zmienionych plików z 1314 dodań i 716 usunięć
  1. 2 2
      src/main/java/com/uas/platform/b2c/prod/commodity/dao/GoodsDao.java
  2. 66 18
      src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseController.java
  3. 18 4
      src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseOfferController.java
  4. 0 31
      src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekMallGoodsDao.java
  5. 19 0
      src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchaseGoodsDao.java
  6. 17 0
      src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchaseOfferDao.java
  7. 19 0
      src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchasePushGoodsDao.java
  8. 0 128
      src/main/java/com/uas/platform/b2c/trade/seek/model/SeekMallGoods.java
  9. 66 33
      src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchase.java
  10. 0 192
      src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseByBatch.java
  11. 287 0
      src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseGoods.java
  12. 22 23
      src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseOffer.java
  13. 305 0
      src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchasePushGoods.java
  14. 15 1
      src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseOfferService.java
  15. 37 10
      src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseService.java
  16. 86 24
      src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseOfferServiceImpl.java
  17. 120 117
      src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseServiceImpl.java
  18. 4 0
      src/main/resources/spring/context.xml
  19. 22 2
      src/main/webapp/resources/js/common/query/seekPurchase.js
  20. 2 2
      src/main/webapp/resources/js/usercenter/app.js
  21. 47 2
      src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js
  22. 45 6
      src/main/webapp/resources/js/vendor/controllers/forstore/seek_purchase_ctrl.js
  23. 24 24
      src/main/webapp/resources/view/usercenter/forstore/seekPurchase.html
  24. 91 97
      src/main/webapp/resources/view/vendor/forstore/seekPurchase.html

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/dao/GoodsDao.java

@@ -538,8 +538,8 @@ public interface GoodsDao extends JpaSpecificationExecutor<Goods>, JpaRepository
      * @param brand
      * @return
      */
-    @Query(value = "select g.id from Goods g where g.code = :code and (g.brandNameCn = :brand or g.brandNameEn = :brand)")
-    List<Long> getGoodsByCodeAndName(@Param("code")String code, @Param("brand")String brand);
+    @Query(value = "select g from Goods g where g.code = :code and (g.brandNameCn = :brand or g.brandNameEn = :brand)")
+    List<Goods> getGoodsByCodeAndName(@Param("code")String code, @Param("brand")String brand);
 
     /**
      * 判断是否用户存在相同产品

+ 66 - 18
src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseController.java

@@ -1,16 +1,17 @@
 package com.uas.platform.b2c.trade.seek.controller;
 
 import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
-import com.uas.platform.b2c.trade.seek.model.SeekMallGoods;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
 import com.uas.platform.b2c.trade.seek.service.SeekPurchaseService;
 import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import java.util.List;
 import java.util.Map;
-import javax.servlet.http.HttpSession;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -38,23 +39,40 @@ public class SeekPurchaseController {
     /**
      * 日志
      */
-    private static final  UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+    private static final UsageBufferedLogger logger = BufferedLoggerManager
+            .getLogger(UsageBufferedLogger.class);
 
     /**
-     * 分页获取采购列表
+     * 分页获取求购列表
+     *
      * @param params 分页参数
+     * @param keyWord 型号或品牌
      * @param deadline 截止日期
-     * @return 采购列表
+     * @param status 报价状态
+     * @param minReleaseDate 最小发布时间
+     * @param maxReleaseDate 最大发布时间
+     * @param releaseDateSort 发布时间排序
+     * @param deadlineSort 截止日期排序
+     * @param offerAmountSort 报价次数排序
+     * @return 分页数据
      */
     @RequestMapping(value = "/getSeekPageInfo", method = RequestMethod.GET)
-    public Page<SeekPurchase> getSeekPageInfo(PageParams params, String keyWord, String deadline, Long uu, Integer status, String minReleaseDate, String maxReleaseDate) {
+    public Page<SeekPurchase> getSeekPageInfo(PageParams params, String keyWord, String deadline,
+            Integer status, String minReleaseDate, String maxReleaseDate,
+            String releaseDateSort, String deadlineSort, String offerAmountSort) {
         logger.log("求购", "分页获取采购列表,参数为" + params);
+        User user = SystemSession.getUser();
         PageInfo info = new PageInfo(params);
-        return seekPurchaseService.getSeekPageInfo(info, keyWord, deadline, uu, status, minReleaseDate, maxReleaseDate);
+        return seekPurchaseService
+                .getSeekPageInfo(info, keyWord, deadline, user == null ? null : user.getUserUU(),
+                        status, minReleaseDate,
+                        maxReleaseDate, releaseDateSort, deadlineSort,
+                        offerAmountSort);
     }
 
     /**
      * 求购排行榜
+     *
      * @return 排行榜
      */
     @RequestMapping(value = "/getSeekRanking", method = RequestMethod.GET)
@@ -65,29 +83,59 @@ public class SeekPurchaseController {
 
     /**
      * 单个求购发布
+     *
      * @param seekPurchase 求购信息
-     * @param session
-     * @return
+     * @return 保存后的求购数据
      */
     @RequestMapping(value = "/saveOneSeekPurchase", method = RequestMethod.POST)
     @ResponseBody
-    public SeekPurchase saveOneSeekPurchase(@RequestBody SeekPurchase seekPurchase, HttpSession session) {
-        User user = (User) session.getAttribute("user");
+    public SeekPurchase saveOneSeekPurchase(@RequestBody SeekPurchase seekPurchase) {
+        User user = SystemSession.getUser();
         logger.log("求购", "发布采购,uu为:" + user.getUserUU());
         return seekPurchaseService.saveOneSeekPurchase(seekPurchase, user);
     }
 
     /**
-     * 分页获取卖家求购列表
+     * 采纳报价
+     *
+     * @param spId 求购id
+     * @param ofId 报价id
+     * @return 更新后的求购信息
+     */
+    @RequestMapping(value = "/updateSeekPurchaseStatus", method = RequestMethod.PUT)
+    public SeekPurchase updateSeekPurchaseStatus(Long spId, Long ofId) {
+        logger.log("求购", "采纳报价,求购id:" + spId + ",报价id为" + ofId);
+        return seekPurchaseService.updateSeekPurchaseStatus(spId, ofId);
+    }
+
+    /**
+     * 获取买家求购列表
      * @param params
-     * @param session
+     * @param keyWord
+     * @param deadline
+     * @param status
+     * @param minReleaseDate
+     * @param maxReleaseDate
+     * @param isMallGoods
      * @return
      */
-    @RequestMapping(value = "/getVendorSeekPageInfo", method = RequestMethod.GET)
-    public Page<SeekMallGoods> getVendorSeekPageInfo(PageParams params, HttpSession session, Integer status, String minReleaseDate, String maxReleaseDate, String keyWord, String deadline) {
-        logger.log("求购", "分页获取卖家采购列表,参数为" + params);
+    @RequestMapping(value = "/getUserSeekPageInfo", method = RequestMethod.GET)
+    public Page<SeekPurchaseGoods> getUserSeekPageInfo(PageParams params, String keyWord, String deadline,
+            Integer status, String minReleaseDate, String maxReleaseDate, boolean  isMallGoods) {
+        logger.log("求购", "分页获取采购列表,参数为" + params);
+        User user = SystemSession.getUser();
         PageInfo info = new PageInfo(params);
-        User user = (User) session.getAttribute("user");
-        return seekPurchaseService.getVendorSeekPageInfo(info, user.getUserUU(), status, minReleaseDate, maxReleaseDate, keyWord, deadline);
+        return seekPurchaseService
+                .getUserSeekPageInfo(info, keyWord, deadline, status, minReleaseDate, maxReleaseDate, isMallGoods, user);
+    }
+
+    /**
+     * 获取求购商城现货
+     * @param spId 求购id
+     * @return
+     */
+    @RequestMapping(value = "/getMallGoodsList", method = RequestMethod.GET)
+    public List<Goods> getMallGoodsList(Long spId) {
+        return seekPurchaseService.getMallGoodsList(spId);
     }
 }

+ 18 - 4
src/main/java/com/uas/platform/b2c/trade/seek/controller/SeekPurchaseOfferController.java

@@ -1,7 +1,9 @@
 package com.uas.platform.b2c.trade.seek.controller;
 
 import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.log.UsageBufferedLogger;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchasePushGoods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseOffer;
 import com.uas.platform.b2c.trade.seek.service.SeekPurchaseOfferService;
 import com.uas.platform.core.logging.BufferedLoggerManager;
@@ -40,17 +42,17 @@ public class SeekPurchaseOfferController {
     /**
      * 保存卖家报价
      * @param seekPurchaseOffer 求购信息
-     * @param session session对象
      * @return
      */
     @RequestMapping(value = "/saveOffer", method = RequestMethod.POST)
     @ResponseBody
-    public SeekPurchaseOffer saveOffer(@RequestBody SeekPurchaseOffer seekPurchaseOffer, HttpSession session) {
-        User user = (User) session.getAttribute("user");
-        logger.log("求购", "卖家报价,uu为:" + user.getUserUU());
+    public SeekPurchaseOffer saveOffer(@RequestBody SeekPurchaseOffer seekPurchaseOffer) {
+        User user = SystemSession.getUser();
+        logger.log("求购", "卖家报价,企业uu为:" + user.getUserUU());
         return seekPurchaseOfferService.saveOffer(seekPurchaseOffer, user);
     }
 
+
     /**
      * 获取求购成交率
      * @param session 获取session
@@ -77,4 +79,16 @@ public class SeekPurchaseOfferController {
         PageInfo info = new PageInfo(params);
         return seekPurchaseOfferService.getSeekPurchaseOfferPageInfo(info, spId, user.getUserUU());
     }
+
+    /**
+     * 卖家获取求购询价
+     * @param params
+     * @return
+     */
+    @RequestMapping(value = "/getSeekPushGoodsPageInfo", method = RequestMethod.GET)
+    public Page<SeekPurchasePushGoods> getSeekPushGoodsPageInfo(PageParams params, String minReleaseDate, String maxReleaseDate, String keyWord, String deadline) {
+        User user = SystemSession.getUser();
+        PageInfo info = new PageInfo(params);
+        return seekPurchaseOfferService.getSeekPushGoodsPageInfo(info, user, minReleaseDate, maxReleaseDate, keyWord, deadline);
+    }
 }

+ 0 - 31
src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekMallGoodsDao.java

@@ -1,31 +0,0 @@
-package com.uas.platform.b2c.trade.seek.dao;
-
-import com.uas.platform.b2c.trade.seek.model.SeekMallGoods;
-import java.util.List;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-
-/**
- * 求购批量发布业务Dao
- *
- * @author liusw
- * @version 2017/12/12 16:48
- */
-@Repository
-public interface SeekMallGoodsDao extends JpaSpecificationExecutor<SeekMallGoods>,
-        JpaRepository<SeekMallGoods, Long> {
-
-    /**
-     * 判断该求购 用户是否有现货
-     * @param code
-     * @param brand
-     * @param uu
-     * @return
-     */
-    @Query(value = "select s.id from trade.seekMallGoods s where s.goods.code = ?1 and s.goods.publisherUU = ?3 and (s.goods.brandNameCn = ?2 or s.goods.brandNameEn = ?2)")
-    Long isSeekMallGoods(String code, String brand, Long uu);
-}
-

+ 19 - 0
src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchaseGoodsDao.java

@@ -0,0 +1,19 @@
+package com.uas.platform.b2c.trade.seek.dao;
+
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 求购业务Dao
+ *
+ * @author liusw
+ * @version 2017/12/12 16:48
+ */
+@Repository
+public interface SeekPurchaseGoodsDao extends JpaSpecificationExecutor<SeekPurchaseGoods>,
+        JpaRepository<SeekPurchaseGoods, Long> {
+
+}
+

+ 17 - 0
src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchaseOfferDao.java

@@ -1,8 +1,11 @@
 package com.uas.platform.b2c.trade.seek.dao;
 
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseOffer;
+import java.util.List;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 /**
@@ -15,4 +18,18 @@ import org.springframework.stereotype.Repository;
 public interface SeekPurchaseOfferDao extends JpaSpecificationExecutor<SeekPurchaseOffer>,
         JpaRepository<SeekPurchaseOffer, Long> {
 
+    /**
+     * 通过uu和spId查询求购信息
+     * @param spId 求购id
+     * @return
+     */
+    SeekPurchaseOffer findByEnUuAndSpId(Long enUu, Long spId);
+
+    /**
+     * 通过企业uu号找到已报价的spIds
+     * @param enUu
+     * @return
+     */
+    @Query(value = "select s.sp_Id from trade$seek_purchase_offer s where of_enuu == :enUu", nativeQuery = true)
+    List<Long> findIdsByEnUu(@Param("enUu") Long enUu);
 }

+ 19 - 0
src/main/java/com/uas/platform/b2c/trade/seek/dao/SeekPurchasePushGoodsDao.java

@@ -0,0 +1,19 @@
+package com.uas.platform.b2c.trade.seek.dao;
+
+import com.uas.platform.b2c.trade.seek.model.SeekPurchasePushGoods;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 求购业务Dao
+ *
+ * @author liusw
+ * @version 2017/12/12 16:48
+ */
+@Repository
+public interface SeekPurchasePushGoodsDao extends JpaSpecificationExecutor<SeekPurchasePushGoods>,
+        JpaRepository<SeekPurchasePushGoods, Long> {
+
+}
+

+ 0 - 128
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekMallGoods.java

@@ -1,128 +0,0 @@
-package com.uas.platform.b2c.trade.seek.model;
-
-import com.uas.platform.b2c.prod.commodity.model.Goods;
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-
-/**
- * 求购商城现货表
- *
- * @author liusw
- * @version 2017/12/22 11:44
- */
-@Entity(name = "trade.seekMallGoods")
-@Table(name = "trade$seekMallGoods")
-public class SeekMallGoods {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * ID
-     */
-    @Id
-    @GeneratedValue
-    @Column(name = "sm_id")
-    private Long id;
-
-    /**
-     * 求购id
-     */
-    @Column(name = "sp_id")
-    private Long spId;
-
-    /**
-     * 求购详细信息
-     */
-    @OneToOne(cascade = { CascadeType.REFRESH })
-    @JoinColumn(name = "sp_id", insertable = false, updatable = false)
-    private SeekPurchase seekPurchase;
-
-    /**
-     * 商品id
-     */
-    @Column(name = "go_id")
-    private Long goodsId;
-
-    /**
-     * 商品详细信息
-     */
-    @OneToOne(cascade = { CascadeType.REFRESH })
-    @JoinColumn(name = "go_id", insertable = false, updatable = false)
-    private Goods goods;
-
-    /**
-     * 报价id
-     */
-    @Column(name = "of_id")
-    private Long offerId;
-
-    /**
-     * 求购报价详情信息
-     */
-    @OneToOne(cascade = { CascadeType.REFRESH })
-    @JoinColumn(name = "of_id", insertable = false, updatable = false)
-    private SeekPurchaseOffer seekPurchaseOffer;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getSpId() {
-        return spId;
-    }
-
-    public void setSpId(Long spId) {
-        this.spId = spId;
-    }
-
-    public SeekPurchase getSeekPurchase() {
-        return seekPurchase;
-    }
-
-    public void setSeekPurchase(SeekPurchase seekPurchase) {
-        this.seekPurchase = seekPurchase;
-    }
-
-    public Long getGoodsId() {
-        return goodsId;
-    }
-
-    public void setGoodsId(Long goodsId) {
-        this.goodsId = goodsId;
-    }
-
-    public Goods getGoods() {
-        return goods;
-    }
-
-    public void setGoods(Goods goods) {
-        this.goods = goods;
-    }
-
-    public Long getOfferId() {
-        return offerId;
-    }
-
-    public void setOfferId(Long offerId) {
-        this.offerId = offerId;
-    }
-
-    public SeekPurchaseOffer getSeekPurchaseOffer() {
-        return seekPurchaseOffer;
-    }
-
-    public void setSeekPurchaseOffer(
-            SeekPurchaseOffer seekPurchaseOffer) {
-        this.seekPurchaseOffer = seekPurchaseOffer;
-    }
-}

+ 66 - 33
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchase.java

@@ -1,11 +1,17 @@
 package com.uas.platform.b2c.trade.seek.model;
 
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.model.User;
 import java.util.Date;
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
+import javax.persistence.Transient;
 
 /**
  * 求购实体类
@@ -34,10 +40,30 @@ public class SeekPurchase {
     private Long uu;
 
     /**
-     * 求购手机号
+     * 求购详细信息
      */
-    @Column(name = "sp_tel")
-    private String tel;
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "sp_uu", insertable = false, updatable = false)
+    private User user;
+
+    /**
+     * 求购企业uu号
+     */
+    @Column(name = "sp_enUu")
+    private Long enUu;
+
+    /**
+     * 企业的详细信息
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "sp_enUu", insertable = false, updatable = false)
+    private Enterprise enterprise;
+
+    /**
+     * 买家姓名
+     */
+    @Transient
+    private String userName;
 
     /**
      * 求购型号
@@ -117,12 +143,6 @@ public class SeekPurchase {
     @Column(name = "sp_boughtAmount")
     private Integer boughtAmount;
 
-    /**
-     * 买家姓名
-     */
-    @Column(name = "sp_userName")
-    private String userName;
-
     public Long getId() {
         return id;
     }
@@ -139,12 +159,37 @@ public class SeekPurchase {
         this.uu = uu;
     }
 
-    public String getTel() {
-        return tel;
+    public User getUser() {
+        return user;
+    }
+
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    public Long getEnUu() {
+        return enUu;
+    }
+
+    public void setEnUu(Long enUu) {
+        this.enUu = enUu;
+    }
+
+    public Enterprise getEnterprise() {
+        return enterprise;
+    }
+
+    public void setEnterprise(Enterprise enterprise) {
+        this.enterprise = enterprise;
     }
 
-    public void setTel(String tel) {
-        this.tel = tel;
+    public String getUserName() {
+        if (enterprise != null) {
+            userName = enterprise.getEnName();
+        } else {
+            userName = user.getUserName();
+        }
+        return userName;
     }
 
     public String getCode() {
@@ -219,6 +264,14 @@ public class SeekPurchase {
         this.unitPrice = unitPrice;
     }
 
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
     public String getKind() {
         return kind;
     }
@@ -242,24 +295,4 @@ public class SeekPurchase {
     public void setBoughtAmount(Integer boughtAmount) {
         this.boughtAmount = boughtAmount;
     }
-
-    public String getCurrency() {
-        return currency;
-    }
-
-    public void setCurrency(String currency) {
-        this.currency = currency;
-    }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
 }

+ 0 - 192
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseByBatch.java

@@ -1,192 +0,0 @@
-package com.uas.platform.b2c.trade.seek.model;
-
-import java.util.Date;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-/**
- * 求购临时表
- *
- * @author liusw
- * @version 2017/12/12 16:45
- */
-@Entity(name = "trade.seekPurchaseByBatch")
-@Table(name = "trade$seekPurchaseByBatch")
-public class SeekPurchaseByBatch {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * ID
-     */
-    @Id
-    @GeneratedValue
-    @Column(name = "sb_id")
-    private Long id;
-
-    /**
-     * 求购型号
-     */
-    @Column(name = "sb_code")
-    private String code;
-
-    /**
-     * 求购品牌
-     */
-    @Column(name = "sb_brand")
-    private String brand;
-
-    /**
-     * 求购截止时间
-     */
-    @Column(name = "sb_deadline")
-    private Date deadline;
-
-    /**
-     * 求购产品生产日期
-     */
-    @Column(name = "sb_producedate")
-    private String produceDate;
-
-    /**
-     * 求购 封装类型
-     */
-    @Column(name = "sb_encapsulation")
-    private String encapsulation;
-
-    /**
-     * 求购数量
-     */
-    @Column(name = "sb_amount")
-    private Long amount;
-
-
-    /**
-     * 求购单价预算
-     */
-    @Column(name = "sb_unitPrice")
-    private Double unitPrice;
-
-    /**
-     * 求购币别
-     */
-    @Column(name = "sb_currency")
-    private String currency;
-
-    /**
-     * 求购产品类目
-     */
-    @Column(name = "sb_kind")
-    private String kind;
-
-    /**
-     * 求购发布时间
-     */
-    @Column(name = "sb_releaseDate")
-    private Date releaseDate;
-
-    /**
-     * 批量导入excel唯一标识
-     */
-    @Column(name = "sb_excelId")
-    private String excelId;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getBrand() {
-        return brand;
-    }
-
-    public void setBrand(String brand) {
-        this.brand = brand;
-    }
-
-    public Date getDeadline() {
-        return deadline;
-    }
-
-    public void setDeadline(Date deadline) {
-        this.deadline = deadline;
-    }
-
-    public String getProduceDate() {
-        return produceDate;
-    }
-
-    public void setProduceDate(String produceDate) {
-        this.produceDate = produceDate;
-    }
-
-    public String getEncapsulation() {
-        return encapsulation;
-    }
-
-    public void setEncapsulation(String encapsulation) {
-        this.encapsulation = encapsulation;
-    }
-
-    public Long getAmount() {
-        return amount;
-    }
-
-    public void setAmount(Long amount) {
-        this.amount = amount;
-    }
-
-    public Double getUnitPrice() {
-        return unitPrice;
-    }
-
-    public void setUnitPrice(Double unitPrice) {
-        this.unitPrice = unitPrice;
-    }
-
-    public String getCurrency() {
-        return currency;
-    }
-
-    public void setCurrency(String currency) {
-        this.currency = currency;
-    }
-
-    public String getKind() {
-        return kind;
-    }
-
-    public void setKind(String kind) {
-        this.kind = kind;
-    }
-
-    public Date getReleaseDate() {
-        return releaseDate;
-    }
-
-    public void setReleaseDate(Date releaseDate) {
-        this.releaseDate = releaseDate;
-    }
-
-    public String getExcelId() {
-        return excelId;
-    }
-
-    public void setExcelId(String excelId) {
-        this.excelId = excelId;
-    }
-}

+ 287 - 0
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseGoods.java

@@ -0,0 +1,287 @@
+package com.uas.platform.b2c.trade.seek.model;
+
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.model.User;
+import java.util.Date;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+/**
+ * @author liusw
+ * @version 2017/12/30 16:41
+ */
+@Entity
+@Table(name = "v$seek$seekpurchasegoods")
+public class SeekPurchaseGoods {
+    /**
+     * ID
+     */
+    @Id
+    @Column(name = "sp_id")
+    private Long spId;
+
+    @Column(name = "goods_amount")
+    private Long goodsAmount;
+
+    /**
+     * 求购uu号
+     */
+    @Column(name = "sp_uu")
+    private Long uu;
+
+    /**
+     * 求购详细信息
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "sp_uu", insertable = false, updatable = false)
+    private User user;
+
+    /**
+     * 求购企业uu号
+     */
+    @Column(name = "sp_enUu")
+    private Long enUu;
+
+    /**
+     * 企业的详细信息
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "sp_enUu", insertable = false, updatable = false)
+    private Enterprise enterprise;
+
+    /**
+     * 买家姓名
+     */
+    @Transient
+    private String userName;
+
+    /**
+     * 求购型号
+     */
+    @Column(name = "sp_code")
+    private String code;
+
+    /**
+     * 求购品牌
+     */
+    @Column(name = "sp_brand")
+    private String brand;
+
+    /**
+     * 求购截止时间
+     */
+    @Column(name = "sp_deadline")
+    private Date deadline;
+
+    /**
+     * 报价次数
+     */
+    @Column(name = "sp_offeramount")
+    private Integer offerAmount;
+
+    /**
+     * 求购产品生产日期
+     */
+    @Column(name = "sp_producedate")
+    private String produceDate;
+
+    /**
+     * 求购 封装类型
+     */
+    @Column(name = "sp_encapsulation")
+    private String encapsulation;
+
+    /**
+     * 求购数量
+     */
+    @Column(name = "sp_amount")
+    private Long amount;
+
+    /**
+     * 求购状态
+     */
+    @Column(name = "sp_status")
+    private Integer status;
+
+    /**
+     * 求购单价预算
+     */
+    @Column(name = "sp_unitPrice")
+    private Double unitPrice;
+
+    /**
+     * 求购币别
+     */
+    @Column(name = "sp_currency")
+    private String currency;
+
+    /**
+     * 求购产品类目
+     */
+    @Column(name = "sp_kind")
+    private String kind;
+
+    /**
+     * 求购发布时间
+     */
+    @Column(name = "sp_releaseDate")
+    private Date releaseDate;
+
+    public Long getSpId() {
+        return spId;
+    }
+
+    public void setSpId(Long spId) {
+        this.spId = spId;
+    }
+
+    public Long getGoodsAmount() {
+        return goodsAmount;
+    }
+
+    public void setGoodsAmount(Long goodsAmount) {
+        this.goodsAmount = goodsAmount;
+    }
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
+    public User getUser() {
+        return user;
+    }
+
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    public Long getEnUu() {
+        return enUu;
+    }
+
+    public void setEnUu(Long enUu) {
+        this.enUu = enUu;
+    }
+
+    public Enterprise getEnterprise() {
+        return enterprise;
+    }
+
+    public void setEnterprise(Enterprise enterprise) {
+        this.enterprise = enterprise;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getBrand() {
+        return brand;
+    }
+
+    public void setBrand(String brand) {
+        this.brand = brand;
+    }
+
+    public Date getDeadline() {
+        return deadline;
+    }
+
+    public void setDeadline(Date deadline) {
+        this.deadline = deadline;
+    }
+
+    public Integer getOfferAmount() {
+        return offerAmount;
+    }
+
+    public void setOfferAmount(Integer offerAmount) {
+        this.offerAmount = offerAmount;
+    }
+
+    public String getProduceDate() {
+        return produceDate;
+    }
+
+    public void setProduceDate(String produceDate) {
+        this.produceDate = produceDate;
+    }
+
+    public String getEncapsulation() {
+        return encapsulation;
+    }
+
+    public void setEncapsulation(String encapsulation) {
+        this.encapsulation = encapsulation;
+    }
+
+    public Long getAmount() {
+        return amount;
+    }
+
+    public void setAmount(Long amount) {
+        this.amount = amount;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Double getUnitPrice() {
+        return unitPrice;
+    }
+
+    public void setUnitPrice(Double unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
+    public String getKind() {
+        return kind;
+    }
+
+    public void setKind(String kind) {
+        this.kind = kind;
+    }
+
+    public Date getReleaseDate() {
+        return releaseDate;
+    }
+
+    public void setReleaseDate(Date releaseDate) {
+        this.releaseDate = releaseDate;
+    }
+}

+ 22 - 23
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchaseOffer.java

@@ -64,17 +64,16 @@ public class SeekPurchaseOffer {
     private Date produceDate;
 
     /**
-     * 卖家uu号
+     * 卖家企业uu号
      */
-    @Column(name = "of_uu")
-    private Long uu;
+    @Column(name = "of_enuu")
+    private Long enUu;
 
     /**
-     * 卖家名称
+     * 卖家uu号
      */
-    @Column(name = "of_userName")
-    private String userName;
-
+    @Column(name = "of_uu")
+    private Long uu;
     /**
      * 报价状态
      */
@@ -111,6 +110,14 @@ public class SeekPurchaseOffer {
         this.unitPrice = unitPrice;
     }
 
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
     public Integer getMinDay() {
         return minDay;
     }
@@ -135,20 +142,20 @@ public class SeekPurchaseOffer {
         this.produceDate = produceDate;
     }
 
-    public Long getUu() {
-        return uu;
+    public Long getEnUu() {
+        return enUu;
     }
 
-    public void setUu(Long uu) {
-        this.uu = uu;
+    public void setEnUu(Long enUu) {
+        this.enUu = enUu;
     }
 
-    public String getUserName() {
-        return userName;
+    public Long getUu() {
+        return uu;
     }
 
-    public void setUserName(String userName) {
-        this.userName = userName;
+    public void setUu(Long uu) {
+        this.uu = uu;
     }
 
     public Integer getStatus() {
@@ -159,14 +166,6 @@ public class SeekPurchaseOffer {
         this.status = status;
     }
 
-    public String getCurrency() {
-        return currency;
-    }
-
-    public void setCurrency(String currency) {
-        this.currency = currency;
-    }
-
     public Date getOfferTime() {
         return offerTime;
     }

+ 305 - 0
src/main/java/com/uas/platform/b2c/trade/seek/model/SeekPurchasePushGoods.java

@@ -0,0 +1,305 @@
+package com.uas.platform.b2c.trade.seek.model;
+
+import com.uas.platform.b2c.common.account.model.Enterprise;
+import com.uas.platform.b2c.common.account.model.User;
+import java.util.Date;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+/**
+ * @author liusw
+ * @version 2017/12/30 11:25
+ */
+@Entity
+@Table(name = "v$seek$seekpurchasepushgoods")
+public class SeekPurchasePushGoods {
+    /**
+     * ID
+     */
+    @Id
+    @Column(name = "sp_id")
+    private Long spId;
+
+    /**
+     * 求购uu号
+     */
+    @Column(name = "sp_uu")
+    private Long uu;
+
+    /**
+     * 求购详细信息
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "sp_uu", insertable = false, updatable = false)
+    private User user;
+
+    /**
+     * 求购企业uu号
+     */
+    @Column(name = "sp_enUu")
+    private Long enUu;
+
+    /**
+     * 企业的详细信息
+     */
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "sp_enUu", insertable = false, updatable = false)
+    private Enterprise enterprise;
+
+    /**
+     * 买家姓名
+     */
+    @Transient
+    private String userName;
+
+    /**
+     * 求购型号
+     */
+    @Column(name = "sp_code")
+    private String code;
+
+    /**
+     * 求购品牌
+     */
+    @Column(name = "sp_brand")
+    private String brand;
+
+    /**
+     * 求购截止时间
+     */
+    @Column(name = "sp_deadline")
+    private Date deadline;
+
+    /**
+     * 报价次数
+     */
+    @Column(name = "sp_offeramount")
+    private Integer offerAmount;
+
+    /**
+     * 求购产品生产日期
+     */
+    @Column(name = "sp_producedate")
+    private String produceDate;
+
+    /**
+     * 求购 封装类型
+     */
+    @Column(name = "sp_encapsulation")
+    private String encapsulation;
+
+    /**
+     * 求购数量
+     */
+    @Column(name = "sp_amount")
+    private Long amount;
+
+    /**
+     * 求购状态
+     */
+    @Column(name = "sp_status")
+    private Integer status;
+
+    /**
+     * 求购单价预算
+     */
+    @Column(name = "sp_unitPrice")
+    private Double unitPrice;
+
+    /**
+     * 求购币别
+     */
+    @Column(name = "sp_currency")
+    private String currency;
+
+    /**
+     * 求购产品类目
+     */
+    @Column(name = "sp_kind")
+    private String kind;
+
+    /**
+     * 求购发布时间
+     */
+    @Column(name = "sp_releaseDate")
+    private Date releaseDate;
+
+    /**
+     * 已购数量
+     */
+    @Column(name = "sp_boughtAmount")
+    private Integer boughtAmount;
+
+    /**
+     * 企业uu号
+     */
+    @Column(name = "go_enuu")
+    private Long goEnUu;
+
+    public Long getSpId() {
+        return spId;
+    }
+
+    public void setSpId(Long spId) {
+        this.spId = spId;
+    }
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
+    public User getUser() {
+        return user;
+    }
+
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    public Long getEnUu() {
+        return enUu;
+    }
+
+    public void setEnUu(Long enUu) {
+        this.enUu = enUu;
+    }
+
+    public Enterprise getEnterprise() {
+        return enterprise;
+    }
+
+    public void setEnterprise(Enterprise enterprise) {
+        this.enterprise = enterprise;
+    }
+
+    public String getUserName() {
+        if (enterprise != null) {
+            userName = enterprise.getEnName();
+        } else {
+            userName = user.getUserName();
+        }
+        return userName;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getBrand() {
+        return brand;
+    }
+
+    public void setBrand(String brand) {
+        this.brand = brand;
+    }
+
+    public Date getDeadline() {
+        return deadline;
+    }
+
+    public void setDeadline(Date deadline) {
+        this.deadline = deadline;
+    }
+
+    public Integer getOfferAmount() {
+        return offerAmount;
+    }
+
+    public void setOfferAmount(Integer offerAmount) {
+        this.offerAmount = offerAmount;
+    }
+
+    public String getProduceDate() {
+        return produceDate;
+    }
+
+    public void setProduceDate(String produceDate) {
+        this.produceDate = produceDate;
+    }
+
+    public String getEncapsulation() {
+        return encapsulation;
+    }
+
+    public void setEncapsulation(String encapsulation) {
+        this.encapsulation = encapsulation;
+    }
+
+    public Long getAmount() {
+        return amount;
+    }
+
+    public void setAmount(Long amount) {
+        this.amount = amount;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public Double getUnitPrice() {
+        return unitPrice;
+    }
+
+    public void setUnitPrice(Double unitPrice) {
+        this.unitPrice = unitPrice;
+    }
+
+    public String getCurrency() {
+        return currency;
+    }
+
+    public void setCurrency(String currency) {
+        this.currency = currency;
+    }
+
+    public String getKind() {
+        return kind;
+    }
+
+    public void setKind(String kind) {
+        this.kind = kind;
+    }
+
+    public Date getReleaseDate() {
+        return releaseDate;
+    }
+
+    public void setReleaseDate(Date releaseDate) {
+        this.releaseDate = releaseDate;
+    }
+
+    public Integer getBoughtAmount() {
+        return boughtAmount;
+    }
+
+    public void setBoughtAmount(Integer boughtAmount) {
+        this.boughtAmount = boughtAmount;
+    }
+
+    public Long getGoEnUu() {
+        return goEnUu;
+    }
+
+    public void setGoEnUu(Long goEnUu) {
+        this.goEnUu = goEnUu;
+    }
+}

+ 15 - 1
src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseOfferService.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2c.trade.seek.service;
 
 import com.uas.platform.b2c.common.account.model.User;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchasePushGoods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseOffer;
 import com.uas.platform.core.model.PageInfo;
 import java.util.Map;
@@ -17,7 +18,6 @@ public interface SeekPurchaseOfferService {
     /**
      * 保存卖家报价
      * @param seekPurchaseOffer 报价信息
-     * @param user 用户信息
      * @return
      */
     SeekPurchaseOffer saveOffer(SeekPurchaseOffer seekPurchaseOffer, User user);
@@ -29,6 +29,19 @@ public interface SeekPurchaseOfferService {
      */
     Map<String, Object> getSeekPurchaseRate(Long uu);
 
+    /**
+     * 获取商城推送给卖家的求购信息
+     * @param info
+     * @param user
+     * @param minReleaseDate
+     * @param maxReleaseDate
+     * @param keyWord
+     * @param deadline
+     * @return
+     */
+    Page<SeekPurchasePushGoods> getSeekPushGoodsPageInfo(PageInfo info, User user, String minReleaseDate, String maxReleaseDate, String keyWord, String deadline);
+
+
     /**
      * 获取某个求购的报价列表
      * @param info
@@ -36,4 +49,5 @@ public interface SeekPurchaseOfferService {
      * @return
      */
     Page<SeekPurchaseOffer> getSeekPurchaseOfferPageInfo(PageInfo info, Long spId, Long uu);
+
 }

+ 37 - 10
src/main/java/com/uas/platform/b2c/trade/seek/service/SeekPurchaseService.java

@@ -1,10 +1,10 @@
 package com.uas.platform.b2c.trade.seek.service;
 
 import com.uas.platform.b2c.common.account.model.User;
-import com.uas.platform.b2c.trade.seek.model.SeekMallGoods;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
 import com.uas.platform.core.model.PageInfo;
-import com.uas.platform.core.model.PageParams;
 import java.util.List;
 import java.util.Map;
 import org.springframework.data.domain.Page;
@@ -18,31 +18,58 @@ import org.springframework.data.domain.Page;
 public interface SeekPurchaseService {
 
     /**
-     * 分页获取采购列表
+     * 分页获取求购频道中求购列表
+     *
      * @param pageInfo 分页信息
      * @return 采购列表
      */
-    Page<SeekPurchase> getSeekPageInfo(PageInfo pageInfo, String keyWord, String deadline, Long uu, Integer status, String minReleaseDate, String maxReleaseDate);
+    Page<SeekPurchase> getSeekPageInfo(PageInfo pageInfo, String keyWord, String deadline, Long uu,
+            Integer status, String minReleaseDate, String maxReleaseDate, String releaseDateSort,
+            String deadlineSort, String offerAmountSort);
 
     /**
-     * 获取采购排行榜
+     * 获取求购排行榜
+     *
      * @return 排行榜
      */
     List<Map<String, Object>> getSeekRanking();
 
     /**
      * 单个求购发布
+     *
      * @param seekPurchase 求购信息
      * @param user 用户信息
-     * @return
      */
     SeekPurchase saveOneSeekPurchase(SeekPurchase seekPurchase, User user);
 
     /**
-     * 分页获取卖家求购列表
-     * @param info
-     * @param uu
+     * 采纳报价
+     * @param spId
+     * @param ofId
+     * @return
+     */
+    SeekPurchase updateSeekPurchaseStatus(Long spId, Long ofId);
+
+
+    /**
+     * 获取买家求购列表
+     * @param pageInfo
+     * @param keyWord
+     * @param deadline
+     * @param status
+     * @param minReleaseDate
+     * @param maxReleaseDate
+     * @param isMallGoods
+     * @param user
+     * @return
+     */
+    Page<SeekPurchaseGoods> getUserSeekPageInfo(PageInfo pageInfo, String keyWord, String deadline,
+            Integer status, String minReleaseDate, String maxReleaseDate, boolean  isMallGoods, User user);
+
+    /**
+     * 获取商城现货
+     * @param spId
      * @return
      */
-    Page<SeekMallGoods> getVendorSeekPageInfo(PageInfo info, Long uu, Integer status, String minReleaseDate, String maxReleaseDate, String keyWord, String deadline);
+    List<Goods> getMallGoodsList(Long spId);
 }

+ 86 - 24
src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseOfferServiceImpl.java

@@ -2,17 +2,22 @@ package com.uas.platform.b2c.trade.seek.service.impl;
 
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
-import com.uas.platform.b2c.trade.seek.dao.SeekMallGoodsDao;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchasePushGoodsDao;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseOfferDao;
-import com.uas.platform.b2c.trade.seek.model.SeekMallGoods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchasePushGoods;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchaseOffer;
 import com.uas.platform.b2c.trade.seek.service.SeekPurchaseOfferService;
 import com.uas.platform.b2c.trade.seek.status.Status;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
+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 java.util.Date;
+import java.util.List;
 import java.util.Map;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
@@ -59,14 +64,29 @@ public class SeekPurchaseOfferServiceImpl implements SeekPurchaseOfferService {
     @Autowired
     private GoodsDao goodsDao;
 
-    /**
-     * 求购商城现货dao
-     */
     @Autowired
-    private SeekMallGoodsDao seekMallGoodsDao;
+    private SeekPurchasePushGoodsDao seekPurchaseGoodsDao;
+
+    @Autowired
+    private SeekPurchasePushGoodsDao seekPurchasePushGoodsDao;
 
     @Override
     public SeekPurchaseOffer saveOffer(SeekPurchaseOffer seekPurchaseOffer, User user) {
+        if (user.getEnterprise() == null || !user.getEnterprise().isMallVendor()) {
+            throw new IllegalOperatorException("请开通卖家中心后再报价...");
+        }
+        // 不允许多次报价
+        SeekPurchaseOffer oldOffer = seekPurchaseOfferDao.findByEnUuAndSpId(user.getEnterprise().getUu(), seekPurchaseOffer.getSpId());
+        if (oldOffer != null) {
+            throw new IllegalOperatorException("请不要重复报价...");
+        }
+
+        // 不允许报价自己的求购
+        SeekPurchase seekPurchase = seekPurchaseDao.getOne(seekPurchaseOffer.getSpId());
+        if (seekPurchase.getUu().equals(user.getUserUU())) {
+            throw new IllegalOperatorException("请不要报价自己的求购...");
+        }
+
         // 检查信息是否填写完整
         if (seekPurchaseOffer == null
                 || StringUtils.isEmpty(seekPurchaseOffer.getUnitPrice()) || StringUtils
@@ -81,32 +101,19 @@ public class SeekPurchaseOfferServiceImpl implements SeekPurchaseOfferService {
             throw new IllegalOperatorException("交期填写有误...");
         }
         // 设置报价时间
-        seekPurchaseOffer.setOfferTime(new Date());
+        seekPurchaseOffer.setOfferTime(new Date(System.currentTimeMillis()));
         // 设置报价状态
         seekPurchaseOffer.setStatus(Status.OFFER.getValue());
         // 设置卖家信息
+        seekPurchaseOffer.setEnUu(user.getEnterprise().getUu());
         seekPurchaseOffer.setUu(user.getUserUU());
-        if (user.getEnterprise() != null) {
-            seekPurchaseOffer.setUserName(user.getEnterprise().getEnName());
-        } else {
-            seekPurchaseOffer.setUserName(user.getUserName());
-        }
+
         // 修改求购信息
-        SeekPurchase seekPurchase = seekPurchaseDao.getOne(seekPurchaseOffer.getSpId());
         seekPurchase.setOfferAmount(seekPurchase.getOfferAmount() + 1);
         seekPurchase.setStatus(Status.OFFER.getValue());
         seekPurchaseDao.save(seekPurchase);
 
         seekPurchaseOffer = seekPurchaseOfferDao.save(seekPurchaseOffer);
-        // 查询当前中间表是否有该用户的产品
-        Long smId = seekMallGoodsDao.isSeekMallGoods(seekPurchase.getCode(), seekPurchase.getBrand(), user.getUserUU());
-        SeekMallGoods seekMallGoods = new SeekMallGoods();
-        if (smId != null) {
-            seekMallGoods = seekMallGoodsDao.findOne(smId);
-        }
-        seekMallGoods.setSpId(seekPurchase.getId());
-        seekMallGoods.setOfferId(seekPurchaseOffer.getId());
-        seekMallGoodsDao.save(seekMallGoods);
         return seekPurchaseOffer;
     }
 
@@ -120,12 +127,67 @@ public class SeekPurchaseOfferServiceImpl implements SeekPurchaseOfferService {
         return jdbcTemplate.queryForMap(sql, new Object[]{Status.ACCEPTED.getValue(), uu});
     }
 
+    @Override
+    public Page<SeekPurchasePushGoods> getSeekPushGoodsPageInfo(final PageInfo pageInfo, User user,
+            String minReleaseDate, String maxReleaseDate, String keyWord, String deadline) {
+        // 发布时间
+        if (!StringUtils.isEmpty(minReleaseDate)) {
+            pageInfo.expression(PredicateUtils.gte("releaseDate", new Date(Long.valueOf(minReleaseDate)), false));
+        }
+        if (!StringUtils.isEmpty(maxReleaseDate)) {
+            pageInfo.expression(PredicateUtils.lte("releaseDate", new Date(Long.valueOf(maxReleaseDate)), false));
+        }
+        // 关键字
+        if (!StringUtils.isEmpty(keyWord)) {
+            SimpleExpression code = new SimpleExpression("code", keyWord, Operator.LIKE);
+            SimpleExpression brand = new SimpleExpression("brand", keyWord, Operator.LIKE);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{code, brand};
+            LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
+            pageInfo.expression(logicalExpression);
+        }
+        // 截止时间查询
+        if (!StringUtils.isEmpty(deadline)) {
+            switch (deadline) {
+                case "全部":
+                    break;
+                case "已截止":
+                    pageInfo.expression(PredicateUtils.lte("deadline", new Date(), false));
+                    break;
+                default:
+                    pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
+                    break;
+            }
+        } else {
+            pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
+        }
+        // 按发布时间降序排序
+        pageInfo.sorting("releaseDate", Direction.DESC);
+        pageInfo.filter("goEnUu", user.getEnterprise().getUu());
+        // 通过uu号找到当前用户已报价的sp_id
+        List<Long> spIds = seekPurchaseOfferDao.findIdsByEnUu(user.getEnterprise().getUu());
+        if (spIds != null && spIds.size() > 0) {
+            pageInfo.expression(PredicateUtils.in("spId", spIds, false));
+        }
+
+        Page<SeekPurchasePushGoods> pages = seekPurchasePushGoodsDao
+                .findAll(new Specification<SeekPurchasePushGoods>() {
+                    public Predicate toPredicate(Root<SeekPurchasePushGoods> root, CriteriaQuery<?> query,
+                            CriteriaBuilder builder) {
+                        query.where(pageInfo.getPredicates(root, query, builder));
+                        return null;
+                    }
+                }, pageInfo);
+        return pages;
+    }
+
     @Override
     public Page<SeekPurchaseOffer> getSeekPurchaseOfferPageInfo(final PageInfo pageInfo, Long spId, Long uu) {
-        if (spId == null || uu == null) {
+        if (uu == null) {
             throw new IllegalOperatorException("请求参数有误...");
         }
-        pageInfo.filter("spId", spId);
+        if (spId != null) {
+            pageInfo.filter("spId", spId);
+        }
         pageInfo.filter("uu", uu);
         pageInfo.sorting("offerTime", Direction.DESC);
         Page<SeekPurchaseOffer> pages = seekPurchaseOfferDao

+ 120 - 117
src/main/java/com/uas/platform/b2c/trade/seek/service/impl/SeekPurchaseServiceImpl.java

@@ -2,14 +2,17 @@ package com.uas.platform.b2c.trade.seek.service.impl;
 
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
 import com.uas.platform.b2c.prod.product.brand.modal.Brand;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
 import com.uas.platform.b2c.prod.product.component.modal.Component;
-import com.uas.platform.b2c.trade.seek.dao.SeekMallGoodsDao;
 import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseDao;
-import com.uas.platform.b2c.trade.seek.model.SeekMallGoods;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseGoodsDao;
+import com.uas.platform.b2c.trade.seek.dao.SeekPurchaseOfferDao;
 import com.uas.platform.b2c.trade.seek.model.SeekPurchase;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseGoods;
+import com.uas.platform.b2c.trade.seek.model.SeekPurchaseOffer;
 import com.uas.platform.b2c.trade.seek.service.SeekPurchaseService;
 import com.uas.platform.b2c.trade.seek.status.Status;
 import com.uas.platform.core.exception.IllegalOperatorException;
@@ -18,7 +21,6 @@ import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 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 java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -44,88 +46,87 @@ import org.springframework.util.StringUtils;
 @Service
 public class SeekPurchaseServiceImpl implements SeekPurchaseService {
 
-    /**
-     * 求购dao
-     */
     @Autowired
     private SeekPurchaseDao seekPurchasedao;
 
-    /**
-     * 品牌dao
-     */
     @Autowired
     private BrandDao brandDao;
 
-    /**
-     * 器件dao
-     */
     @Autowired
     private ComponentDao componentDao;
 
-    /**
-     * 数据库操作
-     */
     @Autowired
     private JdbcTemplate jdbcTemplate;
 
-    /**
-     * 库存dao
-     */
     @Autowired
     private GoodsDao goodsDao;
 
-    /**
-     * 求购商城现货dao
-     */
     @Autowired
-    private SeekMallGoodsDao seekMallGoodsDao;
+    private SeekPurchaseOfferDao seekPurchaseOfferDao;
+
+    @Autowired
+    private SeekPurchaseGoodsDao seekPurchaseGoodsDao;
 
     @Override
     public Page<SeekPurchase> getSeekPageInfo(final PageInfo pageInfo, String keyWord,
             String deadline, Long uu, Integer status, String minReleaseDate,
-            String maxReleaseDate) {
-        // 关键词查询 品牌或者是型号
-        if (!StringUtils.isEmpty(keyWord)) {
-            SimpleExpression code = new SimpleExpression("code", keyWord, Operator.LIKE);
-            SimpleExpression brand = new SimpleExpression("brand", keyWord, Operator.LIKE);
-            SimpleExpression[] simpleExpressions = new SimpleExpression[]{code, brand};
-            LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
-            pageInfo.expression(logicalExpression);
-        }
-        // 截止时间查询
-        if (!StringUtils.isEmpty(deadline)) {
-            switch (deadline) {
-                case "全部":
-                    break;
-                case "已截止":
-                    pageInfo.expression(PredicateUtils.lte("deadline", new Date(), false));
-                    break;
-                default:
-                    pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
-                    break;
-            }
+            String maxReleaseDate, String releaseDateSort, String deadlineSort,
+            String offerAmountSort) {
+//        // 关键词查询 品牌或者是型号
+//        if (!StringUtils.isEmpty(keyWord)) {
+//            SimpleExpression code = new SimpleExpression("code", keyWord, Operator.LIKE);
+//            SimpleExpression brand = new SimpleExpression("brand", keyWord, Operator.LIKE);
+//            SimpleExpression[] simpleExpressions = new SimpleExpression[]{code, brand};
+//            LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
+//            pageInfo.expression(logicalExpression);
+//        }
+//        // 截止时间查询
+//        if (!StringUtils.isEmpty(deadline)) {
+//            switch (deadline) {
+//                case "全部":
+//                    break;
+//                case "已截止":
+//                    pageInfo.expression(PredicateUtils.lte("deadline", new Date(), false));
+//                    break;
+//                default:
+//                    pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
+//                    break;
+//            }
+//        } else {
+//            pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
+//        }
+//        // 发布时间
+//        if (!StringUtils.isEmpty(minReleaseDate)) {
+//            pageInfo.expression(PredicateUtils.gte("releaseDate", minReleaseDate, false));
+//        }
+//        if (!StringUtils.isEmpty(maxReleaseDate)) {
+//            pageInfo.expression(PredicateUtils.lte("releaseDate", maxReleaseDate, false));
+//        }
+//
+//        // 求购状态
+//        if (status != null) {
+//            pageInfo.filter("status", status);
+//        }
+//
+//        // 买家中心
+//        if (uu != null) {
+//            pageInfo.filter("uu", uu);
+//        }
+//
+//        // 排序
+        if (!StringUtils.isEmpty(releaseDateSort)) {
+            pageInfo.sorting("releaseDate", Direction.fromString(releaseDateSort));
         } else {
-            pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
-        }
-        // 发布时间
-        if (!StringUtils.isEmpty(minReleaseDate)) {
-            pageInfo.expression(PredicateUtils.gte("releaseDate", minReleaseDate, false));
+            pageInfo.sorting("releaseDate", Direction.DESC);
         }
-        if (!StringUtils.isEmpty(maxReleaseDate)) {
-            pageInfo.expression(PredicateUtils.lte("releaseDate", maxReleaseDate, false));
-        }
-
-        // 求购状态
-        if (status != null) {
-            pageInfo.filter("status", status);
-        }
-
-        // 买家中心
-        if (uu != null) {
-            pageInfo.filter("uu", uu);
-        }
-
-        pageInfo.sorting("releaseDate", Direction.DESC);
+//
+//        if (!StringUtils.isEmpty(deadlineSort)) {
+//            pageInfo.sorting("deadline", Direction.fromString(deadlineSort));
+//        }
+//
+//        if (!StringUtils.isEmpty(offerAmountSort)) {
+//            pageInfo.sorting("offerAmount", Direction.fromString(offerAmountSort));
+//        }
         Page<SeekPurchase> pageSeeks = seekPurchasedao.findAll(new Specification<SeekPurchase>() {
             public Predicate toPredicate(Root<SeekPurchase> root, CriteriaQuery<?> query,
                     CriteriaBuilder builder) {
@@ -139,8 +140,8 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
 
     @Override
     public List<Map<String, Object>> getSeekRanking() {
-        String sql = "SELECT spCode,spAmount,uuAmount FROM "
-                + "(SELECT sp_code AS spCode,sum(sp_amount) AS spAmount,count(DISTINCT(sp_uu)) AS uuAmount FROM"
+        String sql = "SELECT spCode,spAmount, uuAmount FROM "
+                + "(SELECT sp_code AS spCode,COALESCE(sum(sp_bought_amount), 0) AS spAmount,COALESCE (count(DISTINCT(sp_uu)), 0) AS uuAmount FROM"
                 + " trade$seek_purchase GROUP BY sp_code) a order by spAmount desc limit 0,5";
         return jdbcTemplate.queryForList(sql);
     }
@@ -177,47 +178,62 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
             }
         }
         seekPurchase.setKind(kind);
-        // 设置发布时间
-        seekPurchase.setReleaseDate(new Date());
-        // 设置求购状态
+        seekPurchase.setReleaseDate(new Date(System.currentTimeMillis()));
         seekPurchase.setStatus(Status.NO_OFFER.getValue());
-        // 设置求购次数
         seekPurchase.setOfferAmount(0);
         // 设置求购人信息
         seekPurchase.setUu(user.getUserUU());
-        seekPurchase.setTel(user.getUserTel());
         if (user.getEnterprise() != null) {
-            seekPurchase.setUserName(user.getEnterprise().getEnName());
-        } else {
-            seekPurchase.setUserName(user.getUserName());
+            seekPurchase.setEnUu(user.getEnterprise().getUu());
+            seekPurchase.setEnterprise(user.getEnterprise());
         }
+        seekPurchase.setUser(user);
         seekPurchase = seekPurchasedao.save(seekPurchase);
 
-        //匹配商城现货
-        List<Long> goods = goodsDao.getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
-        List<SeekMallGoods> seekMallGoodsList = new ArrayList<>();
-        SeekMallGoods seekMallGoods = new SeekMallGoods();
-        seekMallGoods.setSpId(seekPurchase.getId());
-        for (Long good : goods) {
-            seekMallGoods.setGoodsId(good);
-            seekMallGoodsList.add(seekMallGoods);
-        }
-        seekMallGoodsDao.save(seekMallGoodsList);
+        // 匹配商城现货
+        List<Goods> goods = goodsDao
+                .getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
         return seekPurchase;
     }
 
     @Override
-    public Page<SeekMallGoods> getVendorSeekPageInfo(final PageInfo pageInfo, Long uu, Integer status, String minReleaseDate, String maxReleaseDate, String keyWord, String deadline) {
-        /**
-        if (uu != null) {
-            pageInfo.filter("goods.publisherUU", uu);
-        } else {
-            throw new IllegalOperatorException("请求参数错误...");
-        }**/
-        // 关键词查询 品牌或者是型号
+    public SeekPurchase updateSeekPurchaseStatus(Long spId, Long ofId) {
+        // 修改求购表的报价状态
+        SeekPurchase seekPurchase = seekPurchasedao.findOne(spId);
+        seekPurchase.setStatus(Status.ACCEPTED.getValue());
+        seekPurchase = seekPurchasedao.save(seekPurchase);
+        // 修改报价表的状态
+        SeekPurchaseOffer seekPurchaseOffer = seekPurchaseOfferDao.findOne(ofId);
+        seekPurchaseOffer.setStatus(Status.ACCEPTED.getValue());
+        seekPurchaseOfferDao.save(seekPurchaseOffer);
+        // 修改中间表的状态
+        return seekPurchase;
+    }
+
+    @Override
+    public List<Goods> getMallGoodsList(Long spId) {
+        SeekPurchase seekPurchase = seekPurchasedao.findOne(spId);
+        return goodsDao.getGoodsByCodeAndName(seekPurchase.getCode(), seekPurchase.getBrand());
+    }
+
+    @Override
+    public Page<SeekPurchaseGoods> getUserSeekPageInfo(final PageInfo pageInfo, String keyWord,
+            String deadline, Integer status, String minReleaseDate, String maxReleaseDate,
+            boolean isMallGoods, User user) {
+        if (isMallGoods) {
+            pageInfo.expression(PredicateUtils.gt("goodsAmount", 0, false));
+        }
+        // 发布时间
+        if (!StringUtils.isEmpty(minReleaseDate)) {
+            pageInfo.expression(PredicateUtils.gte("releaseDate", new Date(Long.valueOf(minReleaseDate)), false));
+        }
+        if (!StringUtils.isEmpty(maxReleaseDate)) {
+            pageInfo.expression(PredicateUtils.lte("releaseDate", new Date(Long.valueOf(maxReleaseDate)), false));
+        }
+        // 关键字
         if (!StringUtils.isEmpty(keyWord)) {
-            SimpleExpression code = new SimpleExpression("seekPurchase.code", keyWord, Operator.LIKE);
-            SimpleExpression brand = new SimpleExpression("seekPurchase.brand", keyWord, Operator.LIKE);
+            SimpleExpression code = new SimpleExpression("code", keyWord, Operator.LIKE);
+            SimpleExpression brand = new SimpleExpression("brand", keyWord, Operator.LIKE);
             SimpleExpression[] simpleExpressions = new SimpleExpression[]{code, brand};
             LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
             pageInfo.expression(logicalExpression);
@@ -228,36 +244,23 @@ public class SeekPurchaseServiceImpl implements SeekPurchaseService {
                 case "全部":
                     break;
                 case "已截止":
-                    pageInfo.expression(PredicateUtils.lte("seekPurchase.deadline", new Date(), false));
+                    pageInfo.expression(PredicateUtils.lte("deadline", new Date(), false));
                     break;
                 default:
-                    pageInfo.expression(PredicateUtils.gt("seekPurchase.deadline", new Date(), false));
+                    pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
                     break;
             }
         } else {
-            pageInfo.expression(PredicateUtils.gt("seekPurchase.deadline", new Date(), false));
-        }
-        // 发布时间
-        if (!StringUtils.isEmpty(minReleaseDate)) {
-            pageInfo.expression(PredicateUtils.gte("seekPurchase.releaseDate", minReleaseDate, false));
-        }
-        if (!StringUtils.isEmpty(maxReleaseDate)) {
-            pageInfo.expression(PredicateUtils.lte("seekPurchase.releaseDate", maxReleaseDate, false));
-        }
-
-        // 求购状态
-        if (status != null) {
-            pageInfo.filter("seekPurchase.status", status);
+            pageInfo.expression(PredicateUtils.gt("deadline", new Date(), false));
         }
-        pageInfo.sorting("seekPurchase.releaseDate", Direction.DESC);
-        Page<SeekMallGoods> pageSeeks = seekMallGoodsDao
-                .findAll(new Specification<SeekMallGoods>() {
-                    public Predicate toPredicate(Root<SeekMallGoods> root, CriteriaQuery<?> query,
-                            CriteriaBuilder builder) {
-                        query.where(pageInfo.getPredicates(root, query, builder));
-                        return null;
-                    }
-                }, pageInfo);
+        pageInfo.filter("uu", user.getUserUU());
+        Page<SeekPurchaseGoods> pageSeeks = seekPurchaseGoodsDao.findAll(new Specification<SeekPurchaseGoods>() {
+            public Predicate toPredicate(Root<SeekPurchaseGoods> root, CriteriaQuery<?> query,
+                    CriteriaBuilder builder) {
+                query.where(pageInfo.getPredicates(root, query, builder));
+                return null;
+            }
+        }, pageInfo);
         return pageSeeks;
     }
 }

+ 4 - 0
src/main/resources/spring/context.xml

@@ -145,6 +145,10 @@
 	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 		<property name="dataSource" ref="dataSource" />
 	</bean>
+	<bean id="namedParameterJdbcTemplate"
+		class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
+		<constructor-arg ref="dataSource" />
+	</bean>
 	<!-- 使用ehcache对象缓存 -->
 	<cache:annotation-driven />
 	<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">

+ 22 - 2
src/main/webapp/resources/js/common/query/seekPurchase.js

@@ -6,8 +6,28 @@ define([ 'ngResource' ], function() {
         url: 'seek/offer/getSeekPurchaseRate',
         method: 'GET'
       },
-      getVendorSeekPageInfo: {
-        url: 'seek/getVendorSeekPageInfo',
+      getSeekPushGoodsPageInfo: {
+        url: 'seek/offer/getSeekPushGoodsPageInfo',
+        method: 'GET',
+      },
+      saveOneSeekPurchase: {
+        url: 'seek/saveOneSeekPurchase',
+        method: 'POST'
+      },
+      saveOffer: {
+        url: 'seek/offer/saveOffer',
+        method: 'POST'
+      },
+      getUserSeekPageInfo: {
+        url: 'seek/getUserSeekPageInfo',
+        method: 'GET'
+      },
+      getMallGoodsList: {
+        url: 'seek/getMallGoodsList',
+        method: 'GET'
+      },
+      getSeekPurchaseOfferPageInfo: {
+        url: 'seek/offer/getSeekPurchaseOfferPageInfo',
         method: 'GET'
       }
 		});

+ 2 - 2
src/main/webapp/resources/js/usercenter/app.js

@@ -1,7 +1,7 @@
 
-define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'common/services', 'common/directives','common/query/kind', 'common/query/brand', 'common/query/component', 'common/query/order', 'common/query/cart', 'common/query/goods', 'common/query/return' ,'angular-toaster', 'common/query/urlencryption', 'ui-jquery', 'common/query/bankTransfer', 'common/query/bankInfo', 'common/query/change', 'common/query/rate', 'common/query/logistics', 'common/query/address' ,'angular-toaster','common/query/collection', 'common/query/proofing', 'common/query/bill', 'common/query/user','file-upload', 'file-upload-shim', 'common/query/bankInfo' , 'common/query/responseLogistics', 'common/query/payment', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/importDeclaration', 'common/query/enterprise', 'common/query/invoice', 'common/query/refund', 'common/query/recommendation', 'common/query/logisticsPort', 'common/query/storeInfo', 'common/query/tradeMessageNotice', 'common/query/tradeBasicProperties', 'common/query/browsingHistory', 'common/query/internalMessage', 'common/module/chat_web_module', 'angular-filter', 'common/query/vendor'], function(angularAMD) {
+define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'common/services', 'common/directives','common/query/kind', 'common/query/brand', 'common/query/component', 'common/query/order', 'common/query/cart', 'common/query/goods', 'common/query/return' ,'angular-toaster', 'common/query/urlencryption', 'ui-jquery', 'common/query/bankTransfer', 'common/query/bankInfo', 'common/query/change', 'common/query/rate', 'common/query/logistics', 'common/query/address' ,'angular-toaster','common/query/collection', 'common/query/proofing', 'common/query/bill', 'common/query/user','file-upload', 'file-upload-shim', 'common/query/bankInfo' , 'common/query/responseLogistics', 'common/query/payment', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/importDeclaration', 'common/query/enterprise', 'common/query/invoice', 'common/query/refund', 'common/query/recommendation', 'common/query/logisticsPort', 'common/query/storeInfo', 'common/query/tradeMessageNotice', 'common/query/tradeBasicProperties', 'common/query/browsingHistory', 'common/query/internalMessage', 'common/module/chat_web_module', 'angular-filter', 'common/query/vendor','common/query/seekPurchase'], function(angularAMD) {
 	'use strict';
-	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ngTable', 'common.services', 'common.directives', 'tool.directives', 'common.query.kind', 'brandServices', 'componentServices', 'orderServices', 'cartServices', 'goodsServices', 'returnServices' , 'toaster', 'urlencryptionServices', 'ui.jquery', 'bankTransfer', 'bankInfo', 'changeServices','rateServices', 'logisticsServices', 'addressServices', 'toaster','collection','proofingServices', 'billServices', 'common.query.user', 'angularFileUpload', 'bankInfo', 'responseLogisticsService', 'PaymentService', 'afterSaleService', 'messageBoardServices', 'table.directives', 'importDeclaration', 'common.query.enterprise', 'invoiceServices', 'refundModule', 'recommendation','logisticsPortService', 'storeInfoServices', 'tradeMessageNoticeModule', 'tradeBasicPropertiesServices', 'BrowsingHistory', 'internalMessageServices', 'WebChatModule', 'angular.filter', 'vendorServices']);
+	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ngTable', 'common.services', 'common.directives', 'tool.directives', 'common.query.kind', 'brandServices', 'componentServices', 'orderServices', 'cartServices', 'goodsServices', 'returnServices' , 'toaster', 'urlencryptionServices', 'ui.jquery', 'bankTransfer', 'bankInfo', 'changeServices','rateServices', 'logisticsServices', 'addressServices', 'toaster','collection','proofingServices', 'billServices', 'common.query.user', 'angularFileUpload', 'bankInfo', 'responseLogisticsService', 'PaymentService', 'afterSaleService', 'messageBoardServices', 'table.directives', 'importDeclaration', 'common.query.enterprise', 'invoiceServices', 'refundModule', 'recommendation','logisticsPortService', 'storeInfoServices', 'tradeMessageNoticeModule', 'tradeBasicPropertiesServices', 'BrowsingHistory', 'internalMessageServices', 'WebChatModule', 'angular.filter', 'vendorServices','seekPurchaseServices']);
 	app.init = function() {
 		angularAMD.bootstrap(app);
 	};

+ 47 - 2
src/main/webapp/resources/js/usercenter/controllers/forstore/seek_purchase_ctrl.js

@@ -4,8 +4,53 @@
  */
 define(['app/app'], function(app) {
     'use strict';
-    app.register.controller('seekPurchaseCtrl', ['$scope', '$rootScope', function($scope, $rootScope) {
+    app.register.controller('seekPurchaseCtrl', ['$scope', '$rootScope','seekPurchase','toaster','BaseService','ngTableParams', function($scope, $rootScope, seekPurchase, toaster, BaseService, ngTableParams) {
         $rootScope.active = 'seek_purchase';
-        console.log('seekPurchaseCtrl');
+        document.title = '我的求购-优软商城';
+
+        // 发布求购
+        $scope.release = function() {
+            // 校验
+          $scope.seek.deadline = new Date();
+          seekPurchase.saveOneSeekPurchase($scope.seek,function(data){
+            $scope.seek = null;
+            toaster.pop('success', '求购发布成功');
+          }, function (res) {
+            toaster.pop('error', res.data);
+          });
+        }
+
+        // 买家求购列表
+      // 获取当前卖家求购推送列表
+      $scope.seekPurchaseTableParams = new ngTableParams({
+        page : 1,
+        count : 5
+      }, {
+        total : 0,
+        getData : function ($defer, params) {
+          const param = BaseService.parseParams(params.url());
+          param.deadline = $scope.deadline;
+          // param.status = $scope.status;
+          param.keyWord = $scope.keyWord;
+          // param.minReleaseDate = $scope.startDate ? $scope.startDate.getTime() : null;
+          // param.maxReleaseDate = $scope.endDate ? $scope.endDate.getTime() : null;
+          seekPurchase.getUserSeekPageInfo(param, function (data) {
+            params.total(data.totalElements);
+            $defer.resolve(data.content);
+            console.info(data.content);
+          }, function (response) {
+            toaster.pop('error', '获取求购列表失败');
+          });
+        }
+      });
+
+      // 搜索
+      $scope.onSearch = function(){
+        $scope.seekPurchaseTableParams.reload();
+      }
+
+      // 获取商品现货 getMallGoodsList 参数 spId
+
+      // 获取报价列表 getSeekPurchaseOfferPageInfo 参数:分页参数,spId
     }]);
 });

+ 45 - 6
src/main/webapp/resources/js/vendor/controllers/forstore/seek_purchase_ctrl.js

@@ -1,8 +1,9 @@
 define(['app/app'], function(app) {
     app.register.controller('seekPurchaseCtrl', ['$scope', '$rootScope', '$stateParams', '$state', 'toaster', 'seekPurchase', 'BaseService', 'ngTableParams', '$modal', function ($scope, $rootScope, $stateParams, $state, toaster, seekPurchase, BaseService, ngTableParams, $modal) {
-        $scope.title = '求购询价';
+        document.title = '求购询价-优软商城';
         $rootScope.active = 'vendor_seek_purchase';
         $scope.seekPurchaseRate = {};
+        $scope.offer = {};
 
         // 获取当前卖家求购成交率
         seekPurchase.getSeekPurchaseRate(function(data) {
@@ -11,13 +12,46 @@ define(['app/app'], function(app) {
           toaster.pop('error', '错误', response.data);
         });
 
-        // 获取当前卖家的求购列表
-        seekPurchase.getVendorSeekPageInfo(function(data) {
-          $scope.seekPurchases = data.content ;
-        }, function(response) {
-          toaster.pop('error', '错误', response.data);
+        // 获取当前卖家求购推送列表
+        $scope.seekPurchaseTableParams = new ngTableParams({
+          page : 1,
+          count : 5
+        }, {
+          total : 0,
+          getData : function ($defer, params) {
+            const param = BaseService.parseParams(params.url());
+            param.deadline = $scope.deadline;
+            param.status = $scope.status;
+            param.keyWord = $scope.keyWord;
+            param.minReleaseDate = $scope.startDate ? $scope.startDate.getTime() : null;
+            param.maxReleaseDate = $scope.endDate ? $scope.endDate.getTime() : null;
+            seekPurchase.getSeekPushGoodsPageInfo(param, function (data) {
+              params.total(data.totalElements);
+              $defer.resolve(data.content);
+            }, function (response) {
+              toaster.pop('error', '获取求购列表失败');
+            });
+          }
         });
 
+        // 搜索
+        $scope.onSearch = function(){
+          $scope.seekPurchaseTableParams.reload();
+        }
+
+        // 保存报价
+        $scope.saveOffer = function (){
+          $scope.offer.currency = "RMB";
+          seekPurchase.saveOffer($scope.offer, function(data) {
+            $scope.setSeekActive(null, false);
+            toaster.pop('success', '报价成功');
+          }, function (res) {
+            toaster.pop('error', '报价失败');
+          });
+        }
+
+        $scope.condition = {endDateOpen:false, startDateOpen: false};
+
       // 打开日期选择框
       $scope.openDatePicker = function ($event, item, openParam,status) {
         if (status != null) {
@@ -94,6 +128,11 @@ define(['app/app'], function(app) {
       /*设置列表状态*/
       $scope.setSeekActive = function (seek, flag) {
         seek.$active = flag;
+        console.info(seek);
+        if (flag) {
+          $scope.offer.currency = seek.currency ? "RMB" : seek.currency;
+          $scope.offer.spId = seek.spId;
+        }
       }
 
       /*上架模态框*/

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

@@ -368,37 +368,37 @@
                 <p>单个发布</p>
                 <div class="form-block">
                     <span><i>*</i>型号</span>
-                    <input type="text" class="form-group">
+                    <input type="text" class="form-group" ng-model="seek.code">
                 </div>
                 <div class="form-block">
                     <span><i>*</i>品牌</span>
-                    <input type="text" class="form-group">
+                    <input type="text" class="form-group" ng-model="seek.brand">
                 </div>
                 <div class="form-block">
                     <span><i>*</i>截止日期</span>
-                    <input type="text" class="form-group">
+                    <input type="text" class="form-group"  ng-model="seek.deadline">
                 </div>
                 <div class="form-block">
                     <span>采购数量</span>
-                    <input type="text" class="form-group">
+                    <input type="text" class="form-group"  ng-model="seek.amount">
                 </div>
                 <div class="form-block single-price">
                     <span>单价预算</span>
-                    <select>
+                    <select  ng-model="seek.currency">
                         <option value="RMB">¥</option>
                         <option value="USD">$</option>
                     </select>
-                    <input type="text" class="form-group">
+                    <input type="text" class="form-group" ng-model="seek.unitPrice">
                 </div>
                 <div class="form-block">
                     <span>封装</span>
-                    <input type="text" class="form-group">
+                    <input type="text" class="form-group" ng-model="seek.encapsulation">
                 </div>
                 <div class="form-block">
                     <span>生产日期</span>
-                    <input type="text" class="form-group">
+                    <input type="text" class="form-group" ng-model="seek.produceDate">
                 </div>
-                <a href="javascript:void(0)">发布求购</a>
+                <a href="javascript:void(0)" ng-click="release()">发布求购</a>
             </div>
         </div>
         <!--搜索时间筛选-->
@@ -406,10 +406,10 @@
             <div class="fl">
                 <input type="checkbox">&nbsp;有现货&nbsp;&nbsp;
                 截止时间&nbsp;
-                <select class="form-control select-adder">
-                    <option>全部</option>
-                    <option value="1">已截止</option>
-                    <option value="2">正在生效</option>
+                <select class="form-control select-adder" ng-model="deadline" ng-change="onSearch()" ng-init="deadline='全部'">
+                    <option value="全部">全部</option>
+                    <option value="已截止">已截止</option>
+                    <option value="正在生效">正在生效</option>
                 </select>
             </div>
             <div class="sreach fr">
@@ -443,12 +443,12 @@
                     </div>
                 </div>
                 <div class="sreach-input fr">
-                    <input type="search" placeholder="型号/品牌" class="form-control" ng-model="keyword" ng-search="search()"/>
-                    <a class="seek" href="javascript:void(0)" ng-click="search()">搜索</a>
+                    <input type="search" placeholder="型号/品牌" class="form-control" ng-model="keyWord" ng-search="onSearch()"/>
+                    <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
                 </div>
             </div>
         </div>
-        <table>
+        <table ng-table="seekPurchaseTableParams">
             <thead>
             <tr>
                 <th width="165">发布时间</th>
@@ -470,15 +470,15 @@
                 <th width="1"></th>
             </tr>
             </thead>
-            <tbody>
+            <tbody ng-repeat="seek in $data">
             <tr class="default-row">
-                <td>2012-12-12 12:12:12</td>
-                <td>asdasfasdad</td>
-                <td>asdasdad</td>
-                <td>5000</td>
-                <td><span class="red-text">$5.569</span></td>
-                <td>盘装</td>
-                <td>2012-12-12</td>
+                <td ng-bind="seek.releaseDate | date:'yyyy-MM-dd HH:mm:ss'">2012-12-12 12:12:12</td>
+                <td ng-bind="seek.brand">asdasfasdad</td>
+                <td ng-bind="seek.code">asdasdad</td>
+                <td ng-bind="seek.amount">5000</td>
+                <td><span class="red-text" ng-bind="seek.currency+seek.unitPrice">$5.569</span></td>
+                <td ng-bind="seek.encapsulation">盘装</td>
+                <td ng-bind="seek.produceDate">2012-12-12</td>
                 <td>剩余&nbsp;<span class="red-text">8</span>&nbsp;天</td>
                 <td>已报价</td>
                 <td><a href="javascript:void(0)">查看报价&nbsp;<i class="fa fa-angle-double-down"></i></a></td>

+ 91 - 97
src/main/webapp/resources/view/vendor/forstore/seekPurchase.html

@@ -3,6 +3,7 @@
         margin: 10px 0 0 0;
         padding: 20px 0;
         background: #fff;
+        padding-bottom:50px;
     }
     .seek-purchase .seek-purchase-content .seek-purchase-title {
         height: 67px;
@@ -128,14 +129,14 @@
         padding: 6px 6px;
     }
     /*搜索时间筛选 end*/
-    .seek-purchase .seek-purchase-content table {
+    .seek-purchase .seek-purchase-content >table {
         width: 1000px;
         margin: 0 auto;
     }
-    .seek-purchase .seek-purchase-content table thead {
+    .seek-purchase .seek-purchase-content >table thead {
         background: #89aefa;
     }
-    .seek-purchase .seek-purchase-content table thead tr th {
+    .seek-purchase .seek-purchase-content >table thead tr th {
         height: 38px;
         line-height: 38px;
         color: #fff;
@@ -143,35 +144,35 @@
         font-weight: normal;
         font-size: 14px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row {
         border-bottom: 1px solid #dae5fd;
         border-left: 1px solid #dae5fd;
         border-right: 1px solid #dae5fd;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row:hover {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row:hover {
         background: #f1f5ff;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td {
         font-size: 14px;
         text-align: center;
         height: 80px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.release-time {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.release-time {
         position: relative;
         padding-top: 30px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.release-time span {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.release-time span {
         display: block;
         font-size: 12px;
         margin-bottom: 6px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.release-time .seek-status {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.release-time .seek-status {
         position: absolute;
         left: 0;
         top: 0;
         width: 130px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.release-time .seek-status div{
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.release-time .seek-status div{
         position: relative;
         width: 60px;
         padding-right: 3px;
@@ -181,10 +182,10 @@
         color: #fff;
         float: left;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.release-time .seek-status div.no-grounding {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.release-time .seek-status div.no-grounding {
         background: #f62d37;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.release-time .seek-status div::after {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.release-time .seek-status div::after {
         content: '';
         position: absolute;
         right: 0;
@@ -192,36 +193,36 @@
         border-bottom: 21px solid #fff;
         border-left: 5px solid transparent;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row:hover td.release-time .seek-status div::after {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row:hover td.release-time .seek-status div::after {
         border-bottom: 21px solid #f1f5ff;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.release-time .seek-status a {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.release-time .seek-status a {
         display: block;
         white-space: nowrap;
         color: #4290f7;
         height: 21px;
         line-height: 21px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.user-name >div {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.user-name >div {
         width: 100px;
         overflow: hidden;
         text-overflow: ellipsis;
         white-space: nowrap;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.left-time span{
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.left-time span{
         color: #f62d37;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.unit-price span {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.unit-price span {
         font-size: 12px;
         color: #f62d37;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.operate {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate {
         font-size: 12px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.operate a{
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate a{
         color: #4290f7;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.operate div {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate div {
         width: 64px;
         height: 24px;
         line-height: 24px;
@@ -232,68 +233,60 @@
         cursor: pointer;
         border-radius: 2px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.operate span {
+    .seek-purchase .seek-purchase-content >table tbody tr.default-row td.operate span {
         margin: 17px 0 0 0;
         color: #39ae05;
         display: block;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.operate {
-        position: relative;
-    }
-    .seek-purchase .seek-purchase-content table tbody tr.default-row td.operate >img {
-        position: absolute;
-        top: 0;
-        right: 0;
-    }
-    .seek-purchase .seek-purchase-content table tbody tr.expand-row{
+    .seek-purchase .seek-purchase-content >table tbody tr.expand-row{
         display: none;
         height: 40px;
         line-height: 40px;
         background: #fffbf0;
         border: 1px solid #dae5fd;
     }
-    /*.seek-purchase .seek-purchase-content table tbody tr.default-row:hover + tr.expand-row {
-        display: none;
-    }*/
+    /*.seek-purchase .seek-purchase-content >table tbody.hover tr.expand-row {*/
+        /*display: table-row;*/
+    /*}*/
     .seek-purchase .seek-purchase-content table tbody tr.expand-row td {
         font-size: 14px;
         text-align: center;
         color: #020202;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.expand-row td >div {
+    .seek-purchase .seek-purchase-content >table tbody tr.expand-row td >div {
         float: left;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.expand-row td span {
+    .seek-purchase .seek-purchase-content >table tbody tr.expand-row td span {
         color: #f62d37;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price {
         display: none;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div {
         background-color: #e7eef9;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div {
         display: inline-block;
         position: relative;
         height: 50px;
         line-height: 50px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(1) {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(1) {
         width: 189px;
         background: #adcbfc;
         text-align: center;
         margin-right: 14px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(2) {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(2) {
         margin-right: 30px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(2) input {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(2) input {
         display: inline-block;
         width: 118px;
         height: 26px;
         border: 1px solid #5392f9;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(2) div {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(2) div {
         position: absolute;
         top: 14px;
         left: 33px;
@@ -306,26 +299,26 @@
         border-bottom-left-radius: 4px;
         border-top-left-radius: 4px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(2) div + input {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(2) div + input {
         padding-left: 34px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(3) {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(3) {
         margin-right: 52px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(3) input {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(3) input {
         display: inline-block;
         width: 32px;
         height: 26px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(4) {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(4) {
         margin-right: 69px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(4) input {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(4) input {
         display: inline-block;
         width: 118px;
         height: 26px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(5) span {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(5) span {
         width: 71px;
         height: 28px;
         line-height: 28px;
@@ -333,23 +326,26 @@
         display: inline-block;
         cursor: pointer;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(5) span:first-child {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(5) span:first-child {
         background: #dedddd;
         margin-right: 10px;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div:nth-child(5) span:last-child {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div:nth-child(5) span:last-child {
         background: #fa4701;
         color: #fff;
     }
-    .seek-purchase .seek-purchase-content table tbody tr.say-price td >div >div i {
+    .seek-purchase .seek-purchase-content >table tbody tr.say-price td >div >div i {
         color: #e41515;
         position: relative;
         top: 2px;
         right: 3px;
     }
-    .seek-purchase .seek-purchase-content table tbody.active tr {
+    .seek-purchase .seek-purchase-content >table tbody.active tr.say-price{
         display: table-row;
     }
+    .ng-table-pager {
+        margin-top: 20px;
+    }
 </style>
 <div class="user_right fr seek-purchase">
     <!--求购询价-->
@@ -364,23 +360,25 @@
         <div class="seek-purchase-title">
             <div class="seek-data">采纳次数:<span ng-bind="seekPurchaseRate.acceptedAmount"></span></div>
             <div class="seek-data">报价次数:<span ng-bind="seekPurchaseRate.offerAmount"></span></div>
-            <div class="seek-rate">求购成交率 <span ng-bind="seekPurchaseRate.rate+'%'"></span></div>
+            <div class="seek-rate">求购成交率<span ng-bind="seekPurchaseRate.rate+'%'"></span></div>
         </div>
         <!--搜索时间筛选-->
         <div class="screen" style="background: #f5f8fe;height: 40px;margin-bottom: 15px;margin-top: 5px;padding-top: 4px;padding-right: 11px;">
             <div class="fl">
                 截止时间&nbsp;
-                <select class="form-control select-adder">
-                    <option>全部</option>
-                    <option value="1">已截止</option>
-                    <option value="2">正在生效</option>
+                <select class="form-control select-adder" ng-model="deadline" ng-change="onSearch()" ng-init="deadline='全部'">
+                    <option value="全部">全部</option>
+                    <option value="已截止">已截止</option>
+                    <option value="正在生效">正在生效</option>
                 </select>
+                <!--
                 报价状态&nbsp;
-                <select class="form-control select-adder">
-                    <option value="0">待报价</option>
-                    <option value="1">已报价</option>
-                    <option value="2">已采纳</option>
+                <select class="form-control select-adder" ng-model="status" ng-change="onSearch()" ng-init="status=200">
+                    <option value="200">待报价</option>
+                    <option value="201">已报价</option>
+                    <option value="202">已采纳</option>
                 </select>
+                -->
             </div>
             <div class="sreach fr">
                 <span>发布时间&nbsp;</span>
@@ -388,7 +386,7 @@
                     <div class="data-input">
                         <input type="text" ng-model="startDate"
                                class="form-control select-adder" placeholder="起始时间"
-                               datepicker-popup="yyyy-MM-dd HH:mm:ss"
+                               datepicker-popup="yyyy-MM-dd"
                                is-open="condition.startDateOpen"
                                max-date="endDate" current-text="今天" clear-text="清除" close-text="关闭"
                                ng-click="openDatePicker($event, condition, 'startDateOpen',1)"
@@ -402,7 +400,7 @@
                     <div class="data-input">
                         <input type="text" ng-model="endDate"
                                class="form-control select-adder" placeholder="结束时间"
-                               datepicker-popup="yyyy-MM-dd HH:mm:ss"
+                               datepicker-popup="yyyy-MM-dd"
                                is-open="condition.endDateOpen"
                                min-date="startDate" current-text="今天" clear-text="清除" close-text="关闭"
                                ng-click="openDatePicker($event, condition, 'endDateOpen',2)"
@@ -413,16 +411,16 @@
                     </div>
                 </div>
                 <div class="sreach-input fr">
-                    <input type="search" placeholder="型号/品牌" class="form-control" ng-model="keyword" ng-search="search()"/>
-                    <a class="seek" href="javascript:void(0)" ng-click="search()">搜索</a>
+                    <input type="search" placeholder="型号/品牌" class="form-control" ng-model="keyWord" ng-search="onSearch()"/>
+                    <a class="seek" href="javascript:void(0)" ng-click="onSearch()">搜索</a>
                 </div>
             </div>
         </div>
-        <table>
+        <table ng-table="seekPurchaseTableParams">
             <thead>
                 <tr>
                     <th width="104">发布时间</th>
-                    <th width="108">家</th>
+                    <th width="108">家</th>
                     <th width="117">型号</th>
                     <th width="94">品牌</th>
                     <th width="84">封装</th>
@@ -433,41 +431,37 @@
                     <th width="92">操作</th>
                 </tr>
             </thead>
-            {{seek.$active}}
-            <tbody ng-repeat="seek in seekPurchases" ng-class="{'active': seek.$active}">
-                <tr class="default-row">
+            <tbody ng-repeat="seek in $data" ng-class="{'active': seek.$active, 'hover': seek.$hover && seek.offerStatus == 201}">
+                <tr class="default-row" ng-mouseenter="seek.$hover = true;" ng-mouseleave="seek.$hover = false;" >
                     <td class="release-time">
-                        <span ng-bind="seek.seekPurchase.releaseDate"></span>
-                        <span>14:45:50</span>
+                        <span ng-bind="seek.releaseDate | date:'yyyy-MM-dd'"></span>
+                        <span ng-bind="seek.releaseDate | date:'HH:mm:ss'"></span>
                         <div class="seek-status">
-                            <div ng-show="seek.goodsId == null" class="no-grounding">未上架</div>
-                            <a ng-show="seek.goodsId == null || true" ng-click="goGrounding(seek)">去上架>></a>
-                            <div ng-show="seek.goodsId != null">已上架</div>
+                            <div>已上架</div>
                         </div>
                     </td>
-                    <td class="user-name"><div title="{{seek.seekPurchase.userName}}" ng-bind="seek.seekPurchase.userName"></div></td>
-                    <td ng-bind="seek.seekPurchase.code"></td>
-                    <td ng-bind="seek.seekPurchase.brand"></td>
-                    <td ng-bind="seek.seekPurchase.encapsulation || '--'"></td>
-                    <td ng-bind="seek.seekPurchase.produceDate || '--'"></td>
-                    <td ng-bind="seek.seekPurchase.amount || '--'"></td>
+                    <td class="user-name"><div title="{{seek.userName}}" ng-bind="seek.userName"></div></td>
+                    <td ng-bind="seek.code"></td>
+                    <td ng-bind="seek.brand"></td>
+                    <td ng-bind="seek.encapsulation || '--'"></td>
+                    <td ng-bind="seek.produceDate || '--'"></td>
+                    <td ng-bind="seek.amount || '--'"></td>
                     <td class="unit-price">
-                        <div ng-if="!seek.seekPurchase.unitPrice || seek.seekPurchase.unitPrice == null">-</div>
-                        <span ng-if="seek.seekPurchase.unitPrice">{{seek.seekPurchase.currency+seek.seekPurchase.unitPrice | currencyStr}}</span>
+                        <div ng-if="!seek.unitPrice || seek.unitPrice == null">-</div>
+                        <span ng-if="seek.unitPrice">{{(seek.currency=='RMB'?'¥':'$')+seek.unitPrice | currencyStr}}</span>
                     </td>
-                    <td class="left-time">剩余&nbsp;<span ng-bind="getDay(seek.seekPurchase.deadline - seek.seekPurchase.releaseDate)"></span>&nbsp;天&nbsp;<span ng-bind="getHours(seek.seekPurchase.deadline - seek.seekPurchase.releaseDate)">5</span>&nbsp;小时</td>
+                    <td class="left-time">剩余&nbsp;<span ng-bind="getDay(seek.deadline - seek.releaseDate)"></span>&nbsp;天&nbsp;<span ng-bind="getHours(seek.deadline - seek.releaseDate)">5</span>&nbsp;小时</td>
                     <td class="operate">
                         <a>联系买家 <img src="static/img/seekPurchase/link-buyer.png" alt=""></a>
                         <div ng-click="setSeekActive(seek, true)">我要报价</div>
-                        <img src="static/img/seekPurchase/recieved.png" alt="">
                     </td>
                 </tr>
                 <tr class="expand-row">
                     <td colspan="10">
                         <div style="width: 173px;">历史报价</div>
-                        <div style="width: 180px;">单价:<span>¥986</span></div>
-                        <div style="width: 182px;">交期:<span>6天</span></div>
-                        <div style="width: 271px;">生产时间:2016-12-12</div>
+                        <div style="width: 180px;">单价:<span ng-bind="(seek.seekPurchaseOffer.currency=='RMB'?'¥':'$')+seek.seekPurchaseOffer.unitPrice"></span></div>
+                        <div style="width: 182px;">交期:<span ng-bind="seek.seekPurchaseOffer.minDay+'-'"></span><span ng-bind="seek.seekPurchaseOffer.maxDay+'天'"></span></div>
+                        <div style="width: 271px;">生产时间:{{seek.seekPurchaseOffer.produceDate}}</div>
                     </td>
                 </tr>
                 <tr class="say-price">
@@ -476,23 +470,23 @@
                             <div>报价</div>
                             <div>
                                 <i>*</i>单价
-                                <!-- <select v-model="sayPriceObj.currency">
-                                   <option value="RMB">¥</option>
-                                   <option value="USD">$</option>
-                                 </select>-->
-                                <div>¥</div>
-                                <input type="text" class="form-control">
+                                <!--<select ng-model="offer.currency">-->
+                                   <!--<option value="RMB">¥</option>-->
+                                   <!--<option value="USD">$</option>-->
+                                 <!--</select>-->
+                                <div ng-model="offer.currency">¥</div>
+                                <input type="text" class="form-control" ng-model="offer.unitPrice">
                             </div>
                             <div>
                                 <i>*</i>交期&nbsp;
-                                <input type="number" class="form-control">&nbsp;-&nbsp;<input type="number" class="form-control">&nbsp;天
+                                <input type="number" class="form-control" ng-model="offer.minDay">&nbsp;-&nbsp;<input type="number" class="form-control" ng-model="offer.maxDay">&nbsp;天
                             </div>
                             <div>
-                                生产日期&nbsp;<input type="text" class="form-control">
+                                生产日期&nbsp;<input type="text" class="form-control" ng-model="offer.produceDate">
                             </div>
                             <div>
                                 <span ng-click="setSeekActive(seek, false)">取消</span>
-                                <span>提交</span>
+                                <span ng-click="saveOffer(offer.spId)">提交</span>
                             </div>
                         </div>
                     </td>