Browse Source

评论模块 逻辑bug修改2

wangdy 8 years ago
parent
commit
a9135bc1d0

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

@@ -70,7 +70,7 @@ public interface RateService {
      * (到期自动评价)卖家对买家的初评
      * @param ids
      */
-    void autosaveVendorRate(String ids);
+    void autosaveVendorRate(String ids, boolean isFirst);
 
     /**
      * (到期自动追评价)卖家对买家的初评

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

@@ -19,7 +19,9 @@ import com.uas.platform.b2c.trade.rate.service.RateService;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.Status;
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import org.apache.kafka.common.metrics.stats.Rate;
+import org.hibernate.criterion.LogicalExpression;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
@@ -101,43 +103,43 @@ public class RateServiceImpl implements RateService{
     }
 
     @Override
-    public void autosavebuyerRate(String ids) {
-        String[] idArray = ids.split(SplitChar.HYPHEN);
-        List<RateGoods> rateGoodsList = new ArrayList<>();
-        for (String id : idArray) {
-            Order order = orderDao.findByOrderid(id);
-            for (OrderDetail orderDetail : order.getOrderDetails()){
-                RateGoods rateGoods = new RateGoods();
-                rateGoods.setBuyerRateTime(new Date(System.currentTimeMillis()));
-                rateGoods.setBuyerRate("此用户未及时做出评价,系统默认好评!");
-                rateGoods.setIsAnony(isAnony);
-                rateGoods.setEnuu(order.getSellerenuu());
-                rateGoods.setGoodsId(orderDetail.getId());
-                rateGoods.setLevel(isAnony);
-                rateGoods.setOrderId(order.getOrderid());
-                rateGoods.setStoreId(order.getStoreid());
-                rateGoods.setUserEnuu(order.getBuyerenuu());
-                rateGoods.setUserUU(order.getBuyeruu());
+    public void autosavebuyerRate(String ids){
+            String[] idArray = ids.split(SplitChar.HYPHEN);
+            for (String id : idArray) {
+                Order order = orderDao.findByOrderid(id);
+                rateGoodsDao.delete(rateGoodsDao.findByOrderId(order.getOrderid()));
+                for (OrderDetail orderDetail : order.getOrderDetails()){
+                    RateGoods rateGoods = new RateGoods();
+                    rateGoods.setBuyerRateTime(new Date(System.currentTimeMillis()));
+                    rateGoods.setBuyerRate("此用户未及时做出评价,系统默认好评!");
+                    rateGoods.setIsAnony(isAnony);
+                    rateGoods.setEnuu(order.getSellerenuu());
+                    rateGoods.setGoodsId(orderDetail.getId());
+                    rateGoods.setLevel(isAnony);
+                    rateGoods.setOrderId(order.getOrderid());
+                    rateGoods.setStoreId(order.getStoreid());
+                    rateGoods.setUserEnuu(order.getBuyerenuu());
+                    rateGoods.setUserUU(order.getBuyeruu());
+                    rateGoodsDao.save(rateGoods);
+                }
+                RateVendor rateVendor = new RateVendor();
+                rateVendor.setUserUU(order.getBuyeruu());
+                rateVendor.setUserEnuu(order.getBuyerenuu());
+                rateVendor.setOrderId(order.getOrderid());
+                rateVendor.setTime(new Date(System.currentTimeMillis()));
+                rateVendor.setStoreId(order.getStoreid());
+                rateVendor.setEnuu(order.getSellerenuu());
+                rateVendor.setDescribeLevel((short)5);
+                rateVendor.setLogisticsLevel((short)5);
+                rateVendor.setVendorLevel((short)5);
+                rateVendorDao.save(rateVendor);
+                //订单状态变更
+                if (order.getStatus().intValue() != Status.COMPLETED.value()) {
+                    throw new IllegalOperatorException("当前订单不在已完成状态,不能收货!");
+                }
+                order.setStatusToBeAfterReviewed(SystemSession.getUser().getUserUU());
+                orderDao.save(order);
             }
-            rateGoodsDao.save(rateGoodsList);
-            RateVendor rateVendor = new RateVendor();
-            rateVendor.setUserUU(order.getBuyeruu());
-            rateVendor.setUserEnuu(order.getBuyerenuu());
-            rateVendor.setOrderId(order.getOrderid());
-            rateVendor.setTime(new Date(System.currentTimeMillis()));
-            rateVendor.setStoreId(order.getStoreid());
-            rateVendor.setEnuu(order.getSellerenuu());
-            rateVendor.setDescribeLevel((short)5);
-            rateVendor.setLogisticsLevel((short)5);
-            rateVendor.setVendorLevel((short)5);
-            rateVendorDao.save(rateVendor);
-            //订单状态变更
-            if (order.getStatus().intValue() != Status.COMPLETED.value()) {
-                throw new IllegalOperatorException("当前订单不在已完成状态,不能收货!");
-            }
-            order.setStatusToBeAfterReviewed(SystemSession.getUser().getUserUU());
-            orderDao.save(order);
-        }
     }
 
     @Override
@@ -170,28 +172,33 @@ public class RateServiceImpl implements RateService{
     }
 
     @Override
-    public void autosaveVendorRate(String ids) {
+    public void autosaveVendorRate(String ids ,boolean isFirst) {
         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("当前订单未完成,不能初评!");
+            if(isFirst){
+                if (purchase.getStatus().intValue() != Status.COMPLETED.value()) {
+                    throw new IllegalOperatorException("当前订单未完成,不能初评!");
+                }
+                RateBuyer rateBuyer = new RateBuyer();
+                rateBuyer.setLevel(isAnony);
+                rateBuyer.setOrderId(purchase.getOrderid());
+                rateBuyer.setStoreId(purchase.getStoreid());
+                rateBuyer.setPurchaseId(purchase.getPurchaseid());
+                rateBuyer.setUserEnuu(purchase.getBuyerenuu());
+                rateBuyer.setUserUU(purchase.getBuyeruu());
+                rateBuyer.setVendorRate("此店铺未及时做出评价,系统默认好评!");
+                rateBuyer.setEnuu(purchase.getSellerenuu());
+                rateBuyer.setVendorRateTime(new Date(System.currentTimeMillis()));
+                rateBuyerDao.save(rateBuyer);
+                purchase.setTobeRate(SystemSession.getUser().getUserUU());
+                purchaseDao.save(purchase);
+            }else {
+                purchase.setTobeAfterRate(SystemSession.getUser().getUserUU());
+                purchaseDao.save(purchase);
             }
-            RateBuyer rateBuyer = new RateBuyer();
-            rateBuyer.setLevel(isAnony);
-            rateBuyer.setOrderId(purchase.getOrderid());
-            rateBuyer.setStoreId(purchase.getStoreid());
-            rateBuyer.setPurchaseId(purchase.getPurchaseid());
-            rateBuyer.setUserEnuu(purchase.getBuyerenuu());
-            rateBuyer.setUserUU(purchase.getBuyeruu());
-            rateBuyer.setVendorRate("此店铺未及时做出评价,系统默认好评!");
-            rateBuyer.setEnuu(purchase.getSellerenuu());
-            rateBuyer.setVendorRateTime(new Date(System.currentTimeMillis()));
-            rateBuyerDao.save(rateBuyer);
 
-            purchase.setTobeRate(SystemSession.getUser().getUserUU());
-            purchaseDao.save(purchase);
         }
     }
 
@@ -203,7 +210,7 @@ public class RateServiceImpl implements RateService{
             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);
@@ -282,6 +289,7 @@ public class RateServiceImpl implements RateService{
 
     @Override
     public Page<RateGoods> getRateGoodsByOrderId(String orderId, final PageInfo pageInfo) {
+        pageInfo.expression(PredicateUtils.eq("orderId", orderId, true));
         return rateGoodsDao.findAll(new Specification<RateGoods>() {
             @Override
             public Predicate toPredicate(Root<RateGoods> root, CriteriaQuery<?> query, CriteriaBuilder builder) {

+ 9 - 23
src/main/java/com/uas/platform/b2c/trade/rate/task/RateTask.java

@@ -79,7 +79,7 @@ public class RateTask {
      */
     @Transactional
     public void autoRate() {
-        try {
+
             User user = null;
             List<User> userUUs = userDao.findUserByUserUU(sysConf.getAdminUU());
             if(CollectionUtils.isEmpty(userUUs)) {
@@ -102,13 +102,10 @@ public class RateTask {
             //先写在代码上,20个工作日自动好评
             automaticReceipt = 20;
 
-            List<Order> orderList = orderService.findByStatus(Status.COMPLETED.value());
+            List<Order> orderList = orderService.findByStatus(Status.TO_BE_AFTERREVIEWED.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.COMPLETED.value()) {
                         Calendar calendar = Calendar.getInstance();
                         Date date = new Date();
                         calendar.setTime(date);
@@ -117,26 +114,20 @@ public class RateTask {
                         time.setHours(0);
                         time.setMinutes(0);
                         time.setSeconds(0);
-                        Date shipTime = statusHistory.getTime();
+                        Date shipTime = order.getAutoCompleteTime();
                         shipTime.setHours(0);
                         shipTime.setMinutes(0);
                         shipTime.setSeconds(0);
                         if(compareTimeIsGigger24Hours(time, shipTime)) {
                             ids = ids + order.getOrderid() + "-";
                         }
-                    }
-                }
-
             }
             if(ids.length() > 1) {
                 ids = ids.substring(1, ids.length() - 1);
                 rateService.autosavebuyerRate(ids);
             }
             logger.log("自动初评", "买家自动初评订单:" + ids);
-            autoVendorRate(automaticReceipt);
-        }catch (Exception e) {
-        } finally {
-        }
+            autoVendorRate(automaticReceipt,true);
     }
     /**
      * 对超过追评时间的订单,自动追评
@@ -169,9 +160,6 @@ public class RateTask {
             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.COMPLETED.value()) {
                         Calendar calendar = Calendar.getInstance();
                         Date date = new Date();
                         calendar.setTime(date);
@@ -180,22 +168,20 @@ public class RateTask {
                         time.setHours(0);
                         time.setMinutes(0);
                         time.setSeconds(0);
-                        Date shipTime = statusHistory.getTime();
+                        Date shipTime = order.getAutoCompleteTime();
                         shipTime.setHours(0);
                         shipTime.setMinutes(0);
                         shipTime.setSeconds(0);
                         if(compareTimeIsGigger24Hours(time, shipTime)) {
                             ids = ids + order.getOrderid() + "-";
                         }
-                    }
-                }
             }
             if(ids.length() > 1) {
                 ids = ids.substring(1, ids.length() - 1);
                 rateService.autosaveAfterbuyerRate(ids);
             }
             logger.log("自动追评", "买家自动追加评价:" + ids);
-            autoVendorRate(automaticReceipt);
+            autoVendorRate(automaticReceipt, false);
         }catch (Exception e) {
         } finally {
         }
@@ -205,7 +191,7 @@ public class RateTask {
      * 卖家的 自动评价操作
      * @param automaticReceipt
      */
-    private void autoVendorRate(Integer automaticReceipt) {
+    private void autoVendorRate(Integer automaticReceipt,boolean isFirst) {
         try {
             //采购单的自动初评
             List<Purchase> purchasesList = purchaseService.findByStatus(Status.COMPLETED.value());
@@ -234,9 +220,9 @@ public class RateTask {
                 }
 
             }
-            if(pids.length() > 1) {
+             if(pids.length() > 1) {
                 pids = pids.substring(1, pids.length() - 1);
-                rateService.autosaveVendorRate(pids);
+                rateService.autosaveVendorRate(pids,isFirst?true:false);
             }
             logger.log("自动初评", "卖家自动初评订单:" + pids);
         }catch (Exception e){}

+ 1 - 0
src/main/resources/spring/task.xml

@@ -17,6 +17,7 @@
     <!--超时自动追评-->
     <task:scheduled-tasks>
         <task:scheduled ref="RateTask" method="autoAfterRate" cron="0 0 1 * * ?"/>
+       <!-- <task:scheduled ref="RateTask" method="autoAfterRate" cron="* */10 * * * ?"/>-->
     </task:scheduled-tasks>
     <context:annotation-config />
 </beans>

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

@@ -736,10 +736,10 @@
 								<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 != 520" class="oder_d action-link" target="_blank" href="user#/rate/showRate/{{order.orderid | EncryptionFilter}}" style="display: block;">
+								<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>
-								<a ng-if="!order.isEachRate && order.status != 520" class="oder_d action-link" target="_blank" style="display: block;">
+								<a ng-if="!order.isEachRate && (order.status == 523 || order.status == 522)" class="oder_d action-link" target="_blank" style="display: block;">
                                   我已评价
                               	</a>
 								<a ng-if="order.isEachRate && order.status == 520" class="oder_d action-link" target="_blank" style="display: block;">

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

@@ -1018,8 +1018,8 @@
                                 <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 != 520">双方已评</a>
-								<a class="oder_d action-link" target="_blank" style="display: block;" ng-if="!purchase.isEachRate && purchase.status != 520">我已评价</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>
+								<a class="oder_d action-link" target="_blank" style="display: block;" ng-if="!purchase.isEachRate && (purchase.status == 523 || purchase.status == 522)">我已评价</a>
 								<a class="oder_d action-link" target="_blank" style="display: block;" ng-if="purchase.isEachRate && purchase.status == 520">对方已评</a>
                             </div>
                         </span>