Просмотр исходного кода

评价:改评价开始时间为买家确认收货后

wangdy 8 лет назад
Родитель
Сommit
128ef6ef9e
18 измененных файлов с 222 добавлено и 111 удалено
  1. 2 2
      src/main/java/com/uas/platform/b2c/trade/order/controller/OrderController.java
  2. 31 0
      src/main/java/com/uas/platform/b2c/trade/order/dao/OrderDao.java
  3. 9 0
      src/main/java/com/uas/platform/b2c/trade/order/dao/PurchaseDao.java
  4. 18 4
      src/main/java/com/uas/platform/b2c/trade/order/model/Order.java
  5. 0 18
      src/main/java/com/uas/platform/b2c/trade/order/model/Purchase.java
  6. 10 1
      src/main/java/com/uas/platform/b2c/trade/order/service/OrderService.java
  7. 8 0
      src/main/java/com/uas/platform/b2c/trade/order/service/PurchaseService.java
  8. 58 22
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java
  9. 5 0
      src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseServiceImpl.java
  10. 2 2
      src/main/java/com/uas/platform/b2c/trade/order/status/OrderStatus.java
  11. 13 8
      src/main/java/com/uas/platform/b2c/trade/rate/controller/RateController.java
  12. 0 5
      src/main/java/com/uas/platform/b2c/trade/rate/service/RateService.java
  13. 22 29
      src/main/java/com/uas/platform/b2c/trade/rate/service/impl/RateServiceImpl.java
  14. 16 6
      src/main/java/com/uas/platform/b2c/trade/rate/task/RateTask.java
  15. 7 4
      src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_order_ctrl.js
  16. 11 0
      src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js
  17. 5 5
      src/main/webapp/resources/view/usercenter/forstore/buyer_order.html
  18. 5 5
      src/main/webapp/resources/view/vendor/forstore/vendor_order.html

+ 2 - 2
src/main/java/com/uas/platform/b2c/trade/order/controller/OrderController.java

@@ -460,14 +460,14 @@ public class OrderController {
 	 * @return model map
 	 */
 	@RequestMapping(value = "/individual", method = RequestMethod.GET)
-	public ModelMap findIndividualOrders(PageParams params, String keyword, String status, Integer available, Long startDate, Long endDate, String exType) {
+	public ModelMap findIndividualOrders(PageParams params, String keyword, String status,Boolean isRate, Integer available, Long startDate, Long endDate, String exType) {
 		PageInfo pageInfo = new PageInfo(params);
 		Date start = startDate != null ? new Date(startDate) : null;
 		Date end = endDate != null ? new Date(endDate) : null;
 
 		assert logger != null;
 		logger.log("买家订单管理", "买家获取买家订单信息");
-		return orderService.findOrdersByInternal(pageInfo, keyword, status, available, false, start, end, exType);
+		return orderService.findOrdersByInternal(pageInfo, keyword, status, available, false, start, end, exType,isRate);
 	}
 
 	/**

+ 31 - 0
src/main/java/com/uas/platform/b2c/trade/order/dao/OrderDao.java

@@ -60,6 +60,15 @@ public interface OrderDao extends JpaSpecificationExecutor<Order>, JpaRepository
 	 */
 	Order findOrderByOrderid(String orderid);
 
+	/**
+	 * 根据某个状态之后的订单
+	 *
+	 * @param status the status
+	 * @return  orders
+	 */
+	@Query(nativeQuery = true, value="selcet * from trade$order a where a.or_status >=:status ")
+	List<Order> findByAfterStatus(@Param("status") Integer status);
+
 	/**
 	 * Gets count by buyeruu and status.
 	 *
@@ -71,6 +80,17 @@ public interface OrderDao extends JpaSpecificationExecutor<Order>, JpaRepository
 	@Query(value="select count(*) from trade.Order a where a.buyeruu=:buyeruu and a.buyerenuu = :buyerenuu and a.used = 1 and a.status=:status and a.proofingid is null and a.orderids is null")
 	int getCountByBuyeruuAndStatus(@Param("buyeruu") Long buyeruu, @Param("buyerenuu") Long buyerenuu, @Param("status") Integer status);
 
+	/**
+	 * Gets count by buyeruu and status.
+	 *
+	 * @param buyeruu   the buyeruu
+	 * @param buyerenuu the buyerenuu
+	 * @param status    the status
+	 * @return the count by buyeruu and status
+	 */
+	@Query(value="select count(*) from trade.Order a where a.buyeruu=:buyeruu and a.buyerenuu = :buyerenuu and a.used = 1 and a.status=:status and a.proofingid is null and a.orderids is null and a.rateStatus is null")
+	int getCountByBuyeruuAndStatusAndRate(@Param("buyeruu") Long buyeruu, @Param("buyerenuu") Long buyerenuu, @Param("status") Integer status);
+
 	/**
 	 * Gets count by buyeruu and status and dissociative.
 	 *
@@ -82,6 +102,17 @@ public interface OrderDao extends JpaSpecificationExecutor<Order>, JpaRepository
 	@Query(value="select count(1) from trade.Order a where a.buyeruu=:buyeruu and a.used = 1 and a.dissociative = :dissociative and a.status=:status and a.proofingid is null and a.orderids is null")
 	int getCountByBuyeruuAndStatusAndDissociative(@Param("buyeruu") Long buyeruu, @Param("dissociative") Integer dissociative, @Param("status") Integer status);
 
+	/**
+	 * Gets count by buyeruu and status and dissociative.
+	 *
+	 * @param buyeruu      the buyeruu
+	 * @param dissociative the dissociative
+	 * @param status       the status
+	 * @return the count by buyeruu and status and dissociative
+	 */
+	@Query(value="select count(1) from trade.Order a where a.buyeruu=:buyeruu and a.used = 1 and a.dissociative = :dissociative and a.status=:status and a.proofingid is null and a.orderids is null and a.rateStatus is null")
+	int getCountByBuyeruuAndStatusAndDissociativeAndRate(@Param("buyeruu") Long buyeruu, @Param("dissociative") Integer dissociative, @Param("status") Integer status);
+
 	/**
 	 * Gets count by buyeruu.
 	 *

+ 9 - 0
src/main/java/com/uas/platform/b2c/trade/order/dao/PurchaseDao.java

@@ -29,6 +29,15 @@ public interface PurchaseDao extends JpaSpecificationExecutor<Purchase>, JpaRepo
 	 */
 	List<Purchase> findByStatus(Integer status);
 
+	/**
+	 * 根据之后的状态查找采购单
+	 *
+	 * @param status the status
+	 * @return list
+	 */
+	@Query(nativeQuery = true, value = "select * from trade$purchase where pu_status >= :status")
+	List<Purchase> findByAfterStatus(@Param("status") Integer status);
+
 	/**
 	 * 根据状态和企业UU查询采购单
 	 *

+ 18 - 4
src/main/java/com/uas/platform/b2c/trade/order/model/Order.java

@@ -269,6 +269,12 @@ public class Order extends Document implements Serializable {
 	@StatusColumn
 	private Integer status;
 
+	/**
+	 * 评论状态
+	 */
+	@Column(name = "or_ratestatus")
+	private Integer rateStatus;
+
 	/**
 	 * 付款时间
 	 */
@@ -1111,6 +1117,14 @@ public class Order extends Document implements Serializable {
 		this.status = status;
 	}
 
+	public Integer getRateStatus() {
+		return rateStatus;
+	}
+
+	public void setRateStatus(Integer rateStatus) {
+		this.rateStatus = rateStatus;
+	}
+
 	/**
 	 * Gets return status.
 	 *
@@ -1332,21 +1346,21 @@ public class Order extends Document implements Serializable {
 
 	/**
 	 * Sets status TO_BE_REVIEWED.
+	 * 被初评的记录
 	 *
 	 * @param uu the uu
 	 */
 	public void setStatusToBeReviewed(Long uu) {
-		this.status = Status.TO_BE_REVIEWED.value();
-		this.statushistory = addStatusHistory(this.statushistory, uu, this.status);
+		this.rateStatus = Status.TO_BE_REVIEWED.value();
 	}
 	/**
 	 * Sets status TO_BE_AFTERREVIEWED.
+	 * 被追平的记录
 	 *
 	 * @param uu the uu
 	 */
 	public void setStatusToBeAfterReviewed(Long uu) {
-		this.status = Status.TO_BE_AFTERREVIEWED.value();
-		this.statushistory = addStatusHistory(this.statushistory, uu, this.status);
+		this.rateStatus = Status.TO_BE_AFTERREVIEWED.value();
 	}
 	/**
 	 * Sets status REVIEWED.

+ 0 - 18
src/main/java/com/uas/platform/b2c/trade/order/model/Purchase.java

@@ -633,24 +633,6 @@ public class Purchase extends Document implements Serializable {
 		this.status = Status.TOBEPAID.value();
 		this.statushistory = addStatusHistory(this.statushistory, uu, this.status);
 	}
-	/**
-	 * 设置为已初评
-	 *
-	 * @param uu the uu
-	 */
-	public void setTobeRate(Long uu) {
-		this.status = Status.TO_BE_AFTERREVIEWED.value();
-		this.statushistory = addStatusHistory(this.statushistory, uu, this.status);
-	}
-	/**
-	 * 设置为已追评
-	 *
-	 * @param uu the uu
-	 */
-	public void setTobeAfterRate(Long uu) {
-		this.status = Status.REVIEWED.value();
-		this.statushistory = addStatusHistory(this.statushistory, uu, this.status);
-	}
 
 	/**
 	 * Sets status un available personal.

+ 10 - 1
src/main/java/com/uas/platform/b2c/trade/order/service/OrderService.java

@@ -287,6 +287,15 @@ public interface OrderService {
 	 */
 	List<Order> findByStatus(Integer status);
 
+	/**
+	 * 根据类别查找
+	 *
+	 * @param status the status
+	 * @return list list
+	 * @TODO 查找某个状态之后的订单
+	 */
+	List<Order> findByAfterStatus(Integer status);
+
 	/**
 	 * 通过批次号查询到对应商品
 	 *
@@ -359,7 +368,7 @@ public interface OrderService {
 	 * @param exType    异常类型
 	 * @return model map
 	 */
-	ModelMap findOrdersByInternal(PageInfo pageInfo, String keyword, String status, Integer available, boolean isProof, Date startDate, Date endDate, String exType);
+	ModelMap findOrdersByInternal(PageInfo pageInfo, String keyword, String status, Integer available, boolean isProof, Date startDate, Date endDate, String exType, Boolean isRate);
 
 	/**
 	 * 买家根据订单状态查看订单

+ 8 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/PurchaseService.java

@@ -139,6 +139,14 @@ public interface PurchaseService {
 	 */
 	List<Purchase> findByStatus(Integer status);
 
+	/**
+	 * 根据之后的状态查找采购单
+	 *
+	 * @param status the status
+	 * @return list
+	 */
+	List<Purchase> findByAfterStatus(Integer status);
+
 	/**
 	 * 平台管理员获取采购单
 	 *

+ 58 - 22
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.dubbo.common.json.JSON;
 import com.alibaba.dubbo.common.json.ParseException;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.sun.org.apache.xpath.internal.operations.Bool;
 import com.uas.api.b2c_erp.buyer.model.B2cOrder;
 import com.uas.api.exception.B2CException;
 import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
@@ -1445,6 +1446,11 @@ public class OrderServiceImpl implements OrderService {
         return orderDao.findByStatus(status);
     }
 
+    @Override
+    public List<Order> findByAfterStatus(Integer status) {
+        return orderDao.findByAfterStatus(status);
+    }
+
     @Override
     public List<Order> findOnes() {
         Long uu = SystemSession.getUser().getUserUU();
@@ -1765,7 +1771,7 @@ public class OrderServiceImpl implements OrderService {
     }
 
     @Override
-    public ModelMap findOrdersByInternal(final PageInfo pageInfo, String keyword, String status, Integer available, boolean isProof, Date startDate, Date endDate, String exType) {
+    public ModelMap findOrdersByInternal(final PageInfo pageInfo, String keyword, String status, Integer available, boolean isProof, Date startDate, Date endDate, String exType, Boolean isRate) {
         ModelMap modelMap = new ModelMap();
         final Long userUU = SystemSession.getUser().getUserUU();
         final Long enUU = SystemSession.getUser().getEnterprise() != null ? SystemSession.getUser().getEnterprise().getUu() : null;
@@ -1852,6 +1858,9 @@ public class OrderServiceImpl implements OrderService {
                 pageInfo.filter("status", Short.parseShort(status));
             }
         }
+        if (null != isRate && isRate == true) {
+            pageInfo.expression(PredicateUtils.isNull("rateStatus"));
+        }
         Page<Order> pageOrders = orderDao.findAll(new Specification<Order>() {
             @Override
             public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
@@ -2437,29 +2446,56 @@ public class OrderServiceImpl implements OrderService {
             totalCount = 0;
             // 各种异常类型的订单总数
             int normal = 0, notify = 0, apply = 0, returnCount = 0, exchange = 0, refund = 0;
-            for (String statusStr : statusArr) {
-                if (enUU != null) {
-                    int count = orderDao.getCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
-                    totalCount += count;
-
-                    normal += orderDao.getNormalCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
-                    notify += orderDao.getNotifyCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
-                    apply += orderDao.getApplyCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
-                    returnCount += orderDao.getReturnCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
-                    exchange += orderDao.getExchangeCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
-                    refund += orderDao.getRefundCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
-                } else {
-                    int count = orderDao.getCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
-                    totalCount += count;
-
-                    normal += orderDao.getNormalCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
-                    notify += orderDao.getNotifyCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
-                    apply += orderDao.getApplyCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
-                    returnCount += orderDao.getReturnCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
-                    exchange += orderDao.getExchangeCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
-                    refund += orderDao.getRefundCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+            if (orderStatus.equals(OrderStatus.TOBECOMMENT)){     //如果是评论的话,特殊处理
+                for (String statusStr : statusArr) {
+                    if (enUU != null) {
+                        int count = orderDao.getCountByBuyeruuAndStatusAndRate(userUU, enUU, Integer.parseInt(statusStr));
+                        totalCount += count;
+
+                        normal += orderDao.getNormalCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        notify += orderDao.getNotifyCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        apply += orderDao.getApplyCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        returnCount += orderDao.getReturnCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        exchange += orderDao.getExchangeCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        refund += orderDao.getRefundCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                    } else {
+                        int count = orderDao.getCountByBuyeruuAndStatusAndDissociativeAndRate(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        totalCount += count;
+
+                        normal += orderDao.getNormalCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        notify += orderDao.getNotifyCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        apply += orderDao.getApplyCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        returnCount += orderDao.getReturnCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        exchange += orderDao.getExchangeCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        refund += orderDao.getRefundCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                    }
+                }
+            }else{
+                for (String statusStr : statusArr) {
+                    if (enUU != null) {
+                        int count = orderDao.getCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        totalCount += count;
+
+                        normal += orderDao.getNormalCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        notify += orderDao.getNotifyCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        apply += orderDao.getApplyCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        returnCount += orderDao.getReturnCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        exchange += orderDao.getExchangeCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                        refund += orderDao.getRefundCountByBuyeruuAndStatus(userUU, enUU, Integer.parseInt(statusStr));
+                    } else {
+                        int count = orderDao.getCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        totalCount += count;
+
+                        normal += orderDao.getNormalCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        notify += orderDao.getNotifyCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        apply += orderDao.getApplyCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        returnCount += orderDao.getReturnCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        exchange += orderDao.getExchangeCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                        refund += orderDao.getRefundCountByBuyeruuAndStatusAndDissociative(userUU, Type.PERSONAL.value(), Integer.parseInt(statusStr));
+                    }
                 }
             }
+
             map.put(orderStatus.status(), totalCount);
 
             if (!"unavailable".equals(orderStatus.status()) && !"success".equals(orderStatus.status())) {

+ 5 - 0
src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseServiceImpl.java

@@ -651,6 +651,11 @@ public class PurchaseServiceImpl implements PurchaseService {
 		return purchaseDao.findByStatus(status);
 	}
 
+	@Override
+	public List<Purchase> findByAfterStatus(Integer status) {
+		return purchaseDao.findByAfterStatus(status);
+	}
+
 	@Override
 	public Purchase findByPurchaseid(String purchaseid) {
 		Purchase purchase = purchaseDao.findByPurchaseid(purchaseid);

+ 2 - 2
src/main/java/com/uas/platform/b2c/trade/order/status/OrderStatus.java

@@ -31,7 +31,7 @@ public enum OrderStatus {
 	/**
 	 * {@code success 已完成}
 	 */
-	SUCCESS("success", "520-405-522-523"),
+	SUCCESS("success", "520-405"),
 	/**
 	 * {@code unavailable 已失效}
 	 */
@@ -39,7 +39,7 @@ public enum OrderStatus {
 	/**
 	 * {@code unavailable 待评价}
 	 */
-	TOBECOMMENT("tobecomment", "520");
+	TOBECOMMENT("tobecomment", "520-405-602-603-315-604-605-606");
 
 	/**
 	 * 状态名称

+ 13 - 8
src/main/java/com/uas/platform/b2c/trade/rate/controller/RateController.java

@@ -110,12 +110,12 @@ public class RateController {
             rateGoods.setBuyerAfterRateTime(new Date(System.currentTimeMillis()));
 
         }
-        rateService.saveAfterRateGoods(rateGoodsList);
         //订单状态变更
         Order order = orderDao.findByOrderid(orderId);
-        if (order.getStatus().intValue() != Status.TO_BE_AFTERREVIEWED.value()) {
+        if (order.getRateStatus().intValue() != Status.TO_BE_AFTERREVIEWED.value()) {
             throw new IllegalOperatorException("当前订单未完成初评,不能追评!");
         }
+        rateService.saveAfterRateGoods(rateGoodsList);
         order.setStatusReviewed(SystemSession.getUser().getUserUU());
         orderDao.save(order);
         return new ResultMap(CodeType.OK.code(), "追评成功");
@@ -130,19 +130,24 @@ public class RateController {
      */
     @RequestMapping(value = "/rateBuyer/{purchaseId}", method = RequestMethod.POST)
     public ResultMap saveRateBuyer(@PathVariable("purchaseId") String purchaseId, @RequestBody String json) {
+        Purchase purchase = purchaseDao.findByPurchaseid(purchaseId);
+        Order order = orderDao.findByOrderid(purchase.getOrderid());
+        if (order.getStatus() < Status.RECEIVED.value()){
+            throw new IllegalOperatorException("当前订单未完成,不能评价");
+        }
         RateBuyer rateBuyer = FastjsonUtils.fromJson(json, RateBuyer.class);
         rateBuyer.setVendorUseruu(SystemSession.getUser().getUserUU());
         rateBuyer.setEnuu(SystemSession.getUser().getEnterprise().getUu());
         rateBuyer.setPurchaseId(purchaseId);
         rateBuyer.setVendorRateTime(new Date(System.currentTimeMillis()));
         RateBuyer result = rateService.saveRateBuyer(rateBuyer);
-        //TODO 改变采购单状态
-        Purchase purchase = purchaseDao.findByPurchaseid(purchaseId);
+        //TODO 改变采购单状态 //不用改变
+        /*Purchase purchase = purchaseDao.findByPurchaseid(purchaseId);
         if (purchase.getStatus().intValue() != Status.COMPLETED.value()) {
             throw new IllegalOperatorException("当前订单未完成,不能评价");
         }
         purchase.setTobeRate(SystemSession.getUser().getUserUU());
-        purchaseDao.save(purchase);
+        purchaseDao.save(purchase);*/
         return new ResultMap(CodeType.OK.code(), "评价成功",result);
 
     }
@@ -156,7 +161,9 @@ public class RateController {
     @RequestMapping(value = "/afterRateBuyer/{purchaseId}", method = RequestMethod.POST)
     public ResultMap saveAfterRateBuyer(@PathVariable("purchaseId") String purchaseId, @RequestBody String json) {
         Purchase purchase = purchaseDao.findByPurchaseid(purchaseId);
-        if (purchase.getStatus().intValue() != Status.TO_BE_AFTERREVIEWED.value()) {
+        Order order = orderDao.findByOrderid(purchase.getOrderid());
+        RateBuyer rateBuyer0 = rateService.getRateBuyerByOrderId(order.getOrderid());
+        if (null == rateBuyer0) {
             throw new IllegalOperatorException("当前订单未初评,不能追评");
         }
         RateBuyer rateBuyerlater = rateService.getRateBuyerByOrderId(purchase.getOrderid());
@@ -165,8 +172,6 @@ public class RateController {
         rateBuyerlater.setVendorAfterRateTime(new Date(System.currentTimeMillis()));
         RateBuyer result = rateService.saveRateBuyer(rateBuyerlater);
 
-        purchase.setTobeAfterRate(SystemSession.getUser().getUserUU());
-        purchaseDao.save(purchase);
         return new ResultMap(CodeType.OK.code(), "追评成功",result);
 
     }

+ 0 - 5
src/main/java/com/uas/platform/b2c/trade/rate/service/RateService.java

@@ -72,11 +72,6 @@ public interface RateService {
      */
     void autosaveVendorRate(String ids, boolean isFirst);
 
-    /**
-     * (到期自动追评价)卖家对买家的初评
-     * @param ids
-     */
-    void autosaveAfterVendorRate(String ids);
     /**
      * 保存评价模版
      * @param rateTemplate

+ 22 - 29
src/main/java/com/uas/platform/b2c/trade/rate/service/impl/RateServiceImpl.java

@@ -88,8 +88,8 @@ public class RateServiceImpl implements RateService{
         rateGoodsDao.save(rateGoodsList);
         //订单状态变更
         Order order = orderDao.findByOrderid(orderId);
-        if (order.getStatus().intValue() != Status.COMPLETED.value()) {
-            throw new IllegalOperatorException("当前订单不在已完成状态,不能收货!");
+        if (order.getStatus().intValue() < Status.RECEIVED.value()) {
+            throw new IllegalOperatorException("当前订单不在已完成状态,不能评价!");
         }
         order.setStatusToBeAfterReviewed(SystemSession.getUser().getUserUU());
         orderDao.save(order);
@@ -110,6 +110,7 @@ public class RateServiceImpl implements RateService{
             String[] idArray = ids.split(SplitChar.HYPHEN);
             for (String id : idArray) {
                 Order order = orderDao.findByOrderid(id);
+                if(order.getRateStatus() == 523 || order.getRateStatus() == 522){continue;}
                 rateGoodsDao.delete(rateGoodsDao.findByOrderId(order.getOrderid()));
                 for (OrderDetail orderDetail : order.getOrderDetails()){
                     RateGoods rateGoods = new RateGoods();
@@ -137,7 +138,7 @@ public class RateServiceImpl implements RateService{
                 rateVendor.setVendorLevel((short)5);
                 rateVendorDao.save(rateVendor);
                 //订单状态变更
-                if (order.getStatus().intValue() != Status.COMPLETED.value()) {
+                if (order.getStatus().intValue() < Status.RECEIVED.value()) {
                     throw new IllegalOperatorException("当前订单不在已完成状态,不能收货!");
                 }
                 order.setStatusToBeAfterReviewed(SystemSession.getUser().getUserUU());
@@ -151,7 +152,8 @@ public class RateServiceImpl implements RateService{
         for (String id : idArray) {
             //订单状态变更
             Order order = orderDao.findByOrderid(id);
-            if (order.getStatus().intValue() != Status.TO_BE_AFTERREVIEWED.value()) {
+            if (order.getRateStatus() == 522){continue;}
+            if (order.getRateStatus().intValue() != Status.TO_BE_AFTERREVIEWED.value()) {
                 throw new IllegalOperatorException("当前订单未完成初评,不能追评!");
             }
             order.setStatusReviewed(SystemSession.getUser().getUserUU());
@@ -181,9 +183,11 @@ public class RateServiceImpl implements RateService{
             //订单状态变更
             Purchase purchase = purchaseDao.findByPurchaseid(id);
             if(isFirst){
-                if (purchase.getStatus().intValue() != Status.COMPLETED.value()) {
+                Order order = orderDao.findByOrderid(purchase.getOrderid());
+                if (order.getStatus().intValue() < Status.RECEIVED.value()) {
                     throw new IllegalOperatorException("当前订单未完成,不能初评!");
                 }
+                if(rateBuyerDao.findByOrderId(order.getOrderid()) !=null ){continue;}
                 RateBuyer rateBuyer = new RateBuyer();
                 rateBuyer.setLevel(isAnony);
                 rateBuyer.setOrderId(purchase.getOrderid());
@@ -195,36 +199,25 @@ public class RateServiceImpl implements RateService{
                 rateBuyer.setEnuu(purchase.getSellerenuu());
                 rateBuyer.setVendorRateTime(new Date(System.currentTimeMillis()));
                 rateBuyerDao.save(rateBuyer);
-                purchase.setTobeRate(SystemSession.getUser().getUserUU());
-                purchaseDao.save(purchase);
+                //purchase.setTobeRate(SystemSession.getUser().getUserUU());
+                //purchaseDao.save(purchase);
             }else {
-                purchase.setTobeAfterRate(SystemSession.getUser().getUserUU());
-                purchaseDao.save(purchase);
+                RateBuyer rateBuyer;
+                try {
+                     rateBuyer = rateBuyerDao.findByOrderId(purchase.getOrderid()).get(0);
+                }catch (Exception e ){
+                    continue;
+                }
+                if(rateBuyer.getVendorAfterRateTime() !=null ){continue;}
+                rateBuyer.setVendorAfterRateTime(new Date(System.currentTimeMillis()));
+                rateBuyerDao.save(rateBuyer);
+                //purchase.setTobeAfterRate(SystemSession.getUser().getUserUU());
+                //purchaseDao.save(purchase);
             }
 
         }
     }
 
-    @Override
-    public void autosaveAfterVendorRate(String ids) {
-        String[] idArray = ids.split(SplitChar.HYPHEN);
-        for (String id : idArray) {
-            //订单状态变更
-            Purchase purchase = purchaseDao.findByPurchaseid(id);
-            if (purchase.getStatus().intValue() != Status.COMPLETED.value()) {
-                throw new IllegalOperatorException("当前订单未完成初评,不能追评!");
-        }
-            RateBuyer rateBuyer;
-            try {
-                 rateBuyer = rateBuyerDao.findByOrderId(purchase.getOrderid()).get(0);
-            }catch (Exception e){
-                throw new IllegalOperatorException("当前订单未完成初评,不能追评!");
-            }
-            rateBuyer.setVendorAfterRateTime(new Date(System.currentTimeMillis()));
-            purchase.setTobeAfterRate(SystemSession.getUser().getUserUU());
-            purchaseDao.save(purchase);
-        }
-    }
 
     @Override
     public RateTemplate saveRateTemplate(RateTemplate rateTemplate) {

+ 16 - 6
src/main/java/com/uas/platform/b2c/trade/rate/task/RateTask.java

@@ -102,10 +102,13 @@ public class RateTask {
             //先写在代码上,20个工作日自动好评
             automaticReceipt = 20;
 
-            List<Order> orderList = orderService.findByStatus(Status.COMPLETED.value());
+            List<Order> orderList = orderService.findByAfterStatus(Status.RECEIVED.value());
             String ids = "-";
             for (Order order : orderList) {
                 List<StatusHistory> statusHistories = FastjsonUtils.fromJsonArray(order.getStatushistory(), StatusHistory.class);
+                for (int i = statusHistories.size() - 1; i > 0 ; i--) {
+                    StatusHistory statusHistory = statusHistories.get(i);
+                    if (statusHistory.getStatus().intValue() == Status.RECEIVED.value()) {
                         Calendar calendar = Calendar.getInstance();
                         Date date = new Date();
                         calendar.setTime(date);
@@ -118,9 +121,11 @@ public class RateTask {
                         shipTime.setHours(0);
                         shipTime.setMinutes(0);
                         shipTime.setSeconds(0);
-                        if(compareTimeIsGigger24Hours(time, shipTime)) {
+                        if (compareTimeIsGigger24Hours(time, shipTime)) {
                             ids = ids + order.getOrderid() + "-";
                         }
+                    }
+                }
             }
             if(ids.length() > 1) {
                 ids = ids.substring(1, ids.length() - 1);
@@ -156,10 +161,13 @@ public class RateTask {
             }
 //          //先写在代码上,180个工作日自动追评价
             automaticReceipt = 180;
-            List<Order> orderList = orderService.findByStatus(Status.COMPLETED.value());
+            List<Order> orderList = orderService.findByAfterStatus(Status.RECEIVED.value());
             String ids = "-";
             for (Order order : orderList) {
                 List<StatusHistory> statusHistories = FastjsonUtils.fromJsonArray(order.getStatushistory(), StatusHistory.class);
+                for (int i = statusHistories.size() - 1; i > 0 ; i--) {
+                    StatusHistory statusHistory = statusHistories.get(i);
+                    if (statusHistory.getStatus().intValue() == Status.RECEIVED.value()) {
                         Calendar calendar = Calendar.getInstance();
                         Date date = new Date();
                         calendar.setTime(date);
@@ -172,9 +180,11 @@ public class RateTask {
                         shipTime.setHours(0);
                         shipTime.setMinutes(0);
                         shipTime.setSeconds(0);
-                        if(compareTimeIsGigger24Hours(time, shipTime)) {
+                        if (compareTimeIsGigger24Hours(time, shipTime)) {
                             ids = ids + order.getOrderid() + "-";
                         }
+                    }
+                }
             }
             if(ids.length() > 1) {
                 ids = ids.substring(1, ids.length() - 1);
@@ -194,13 +204,13 @@ public class RateTask {
     private void autoVendorRate(Integer automaticReceipt,boolean isFirst) {
         try {
             //采购单的自动初评
-            List<Purchase> purchasesList = purchaseService.findByStatus(Status.COMPLETED.value());
+            List<Purchase> purchasesList = purchaseService.findByAfterStatus(Status.TOBEPAID.value());
             String pids = "-";
             for (Purchase purchase : purchasesList) {
                 List<StatusHistory> statusHistories = FastjsonUtils.fromJsonArray(purchase.getStatushistory(), StatusHistory.class);
                 for (int i = statusHistories.size() - 1; i > 0 ; i--) {
                     StatusHistory statusHistory = statusHistories.get(i);
-                    if(statusHistory.getStatus().intValue() == Status.COMPLETED.value()) {
+                    if(statusHistory.getStatus().intValue() == Status.TOBEPAID.value()) {
                         Calendar calendar = Calendar.getInstance();
                         Date date = new Date();
                         calendar.setTime(date);

+ 7 - 4
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_order_ctrl.js

@@ -33,6 +33,9 @@ define(['app/app'], function (app) {
             $scope.param.page = 1;
             $scope.param.currentPage = $scope.param.page;
 			$scope.param.status = getState();
+			if ($scope.param.status == '520-405-602-603-315-604-605-606'){
+                $scope.param.isRate = true;
+			}
 			$scope.param.keyword = $scope.keyword;
 			// $scope.param.startDate = $scope.startDate ? $scope.startDate.getTime() : null;
 			// $scope.param.endDate = $scope.endDate ? $scope.endDate.getTime() + 86400000 : null;
@@ -83,11 +86,11 @@ define(['app/app'], function (app) {
 				case 'received' : // 已收货
 					state = '405'; break;
 				case 'success': // 已完成
-					state = '520-405-521-522-523'; break;
+					state = '520-405'; break;
 				case 'unavailable' : // 已失效
 					state = '602-603-315-604-605-606'; break;
 				case 'tobecomment' :
-					state = '520'; break;
+					state = '520-405-602-603-315-604-605-606'; break;
 				//下面的状态栏新增的状态
 				case 'tobepay':
 					state = '503'; break;
@@ -655,12 +658,12 @@ define(['app/app'], function (app) {
 				case 405:
 					result = '交易完成';
 					break;
-                case 523:
+                /*case 523:
                     result = '待追评';
                     break;
 				case 522:
 					result = '已完成评价';
-					break;
+					break;*/
 				case 602:
 				case 603:
 				case 315:

+ 11 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_order_ctrl.js

@@ -388,6 +388,17 @@ define(['app/app'], function (app) {
                                    order.isEachRate = true;
                                }
                             });
+                            Rate.getRateBuyer({orderId:order.orderid},{},function (data) {
+                                if(data.data){
+                                    if (data.data.vendorRateTime){
+                                        order.isFirstRate = true; // 是否完成初评
+                                    }
+                                    if (data.data.vendorAfterRateTime){
+                                        order.isAfterRate = true; // 是否完成追评
+                                    }
+                                }
+
+                            });
                             angular.forEach(JSON.parse(order.statushistory),function (data) {
                                 if (data.status == 520){
                                     order.complete = data.time;

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

@@ -736,23 +736,23 @@
 								<a href="user#/order/detail/{{order.orderid | EncryptionFilter}}" class="oder_d action-link" style="display: block;" target="_blank">订单详情</a>
 
 								<a class="action-link" href="user#/buyerQueryLogistics/{{order.orderid | EncryptionFilter}}" ng-if="order.status == 404" style="display: block;" target="_blank">查看物流</a>
-								<a ng-if="order.isEachRate && (order.status == 523 || order.status == 522)" class="oder_d action-link" target="_blank" href="user#/rate/showRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
+								<a ng-if="order.isEachRate && (order.rateStatus == 523 || order.rateStatus == 522)" class="oder_d action-link" target="_blank" href="user#/rate/showRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
                                   双方已评
                               	</a>
-								<div ng-if="!order.isEachRate && (order.status == 523 || order.status == 522)">
+								<div ng-if="!order.isEachRate && (order.rateStatus == 523 || order.rateStatus == 522)">
                                   我已评价
                               	</div>
-								<div ng-if="order.isEachRate && order.status == 520">
+								<div ng-if="order.isEachRate && !order.rateStatus">
                                   对方已评
                               	</div>
 							</div>
 						</span>
 						<span class="oder_deal" ng-class="{'order-border-bottom-solid' : $index == order.orderDetails.length -1 || $index==2}">
                             <div ng-if="$index == 0">
-                                <a ng-if="order.status == 520" class="operate-height" target="_blank" href="user#/rate/firstRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
+                                <a ng-if="order.status >= 405 && !order.rateStatus" class="operate-height" target="_blank" href="user#/rate/firstRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
                                   <em class="order-operation">评价</em>
                               	</a>
-								<a ng-if="order.status == 523" class="operate-height" target="_blank" href="user#/rate/addRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
+								<a ng-if="order.rateStatus == 523" class="operate-height" target="_blank" href="user#/rate/addRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
                                   <em class="order-operation">追加评价</em>
                               	</a>
                               <a class="operate-height" href="user#/order/pay/{{order.orderid | EncryptionFilter}}" ng-if="(order.status == 503 || order.status == 501) && order.auditPayFailReason == null" style="display: block;">

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

@@ -1032,9 +1032,9 @@
                                 <a href="vendor#/purchase/detail/{{purchase.purchaseid | EncryptionFilter}}" class="oder_d action-link" target="_blank">订单详情</a><br/>
                                 <em ng-if="purchase.buyerNotifyShip && (purchase.status == 502 || purchase.status == 406)" style="display: block;">买家催促发货</em>
                                 <a class="oder_d action-link" href="vendor#/logistics/query/{{purchase.purchaseid | EncryptionFilter}}" ng-if="purchase.status == 404 || purchase.status == 520 || purchase.status == 405 || purchase.status == 503 || purchase.status == 514" target="_blank">查看物流</a>
-                           		<a class="oder_d action-link" target="_blank" href="vendor#/showRate/{{purchase.orderid | EncryptionFilter}}" style="display: block;" ng-if="purchase.isEachRate && (purchase.status == 523 || purchase.status == 522)">双方已评</a>
-								<div ng-if="!purchase.isEachRate && (purchase.status == 523 || purchase.status == 522)">我已评价</div>
-								<div ng-if="purchase.isEachRate && purchase.status == 520">对方已评</div>
+                           		<a class="oder_d action-link" target="_blank" href="vendor#/showRate/{{purchase.orderid | EncryptionFilter}}" style="display: block;" ng-if="purchase.isEachRate && purchase.isFirstRate">双方已评</a>
+								<div ng-if="!purchase.isEachRate && purchase.isFirstRate">我已评价</div>
+								<div ng-if="purchase.isEachRate && !purchase.isFirstRate">对方已评</div>
                             </div>
                         </span>
 						<span class="click_shop">
@@ -1042,8 +1042,8 @@
                                 <a class="order-operation" href="javascript:void(0)" ng-if="(purchase.status == 502 || purchase.status == 406)&&(purchase.uasPurcid == null)" ng-click="toBeShiped(purchase)">点击发货</a>
 								<a ng-if="purchase.uasPurcid" style="text-decoration: none;color: #323232;">来源UAS</a>
                                 <a class="order-operation" href="javascript:void(0)" ng-if="purchase.status == 404 && purchase.lgtId&&!purchase.uasPurcid" ng-click="toBeShiped(purchase)" style="position: relative;">修改物流</a>
-								<a class="order-operation" href="javascript:void(0)" ng-click="getModal(purchase,'addRate')" style="position: relative;" ng-if="purchase.status == 523">追加评价</a>
-								<a class="order-operation" href="javascript:void(0)" style="position: relative;" ng-click="getModal(purchase,'firstRate')" ng-if="purchase.status == 520">评价</a>
+								<a class="order-operation" href="javascript:void(0)" ng-click="getModal(purchase,'addRate')" style="position: relative;" ng-if="purchase.status >= 503 && purchase.isFirstRate && !purchase.isAfterRate">追加评价</a>
+								<a class="order-operation" href="javascript:void(0)" style="position: relative;" ng-click="getModal(purchase,'firstRate')" ng-if="purchase.status >= 503 && !purchase.isFirstRate">评价</a>
 								<!--<div ng-if="purchase.status == 520" class="clock-mind">
                                   <i class="fa fa-clock-o" aria-hidden="true"></i>&nbsp; <em ng-bind="purchase.complete + 1728000000 | restTime"></em>&lt;!&ndash;暂时设定30天自动初评&ndash;&gt;
                               </div>