Browse Source

Merge remote-tracking branch 'origin/feature-wangdy-rate-v1.0' into feature-wangdy-rate-v1.0

yangc 8 years ago
parent
commit
1cfcd67f26

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

@@ -10,7 +10,7 @@ public enum OrderStatus {
 	/**
 	 * {@code all 所有状态}
 	 */
-	ALL("all", "503-504-505-406-407-403-408-404-405-520-602-603-315-604-605-606"),
+	ALL("all", "503-504-505-406-407-403-408-404-405-520-523-522-602-603-315-604-605-606"),
 	/**
 	 * {@code tobepaid 待付款}
 	 */
@@ -35,7 +35,11 @@ public enum OrderStatus {
 	/**
 	 * {@code unavailable 已失效}
 	 */
-	UNAVAILABLE("unavailable", "602-603-315-604-605-606");
+	UNAVAILABLE("unavailable", "602-603-315-604-605-606"),
+	/**
+	 * {@code unavailable 待评价}
+	 */
+	TOBECOMMENT("tobecomment", "522-523");
 
 	/**
 	 * 状态名称

+ 18 - 23
src/main/java/com/uas/platform/b2c/trade/rate/controller/RateController.java

@@ -44,15 +44,10 @@ public class RateController {
     @RequestMapping(value = "/rateVendor/{orderId}", method = RequestMethod.POST)
     public ResultMap saveRateVendor(@PathVariable("orderId") String orderId, @RequestBody String json) {
         RateVendor rateVendor = FastjsonUtils.fromJson(json, RateVendor.class);
-        rateVendor.setUserUU(SystemSession.getUser().getUserUU());
-        rateVendor.setUserEnuu(SystemSession.getUser().getEnterprise().getUu());
-        rateVendor.setOrderId(orderId);
-        rateVendor.setTime(new Date(System.currentTimeMillis()));
         if(null == rateVendor.getStoreId() || null == rateVendor.getEnuu() || null== rateVendor.getVendorLevel()){
-            return  new ResultMap(CodeType.ERROR_STATE.code(),"参数有误");
+            return new ResultMap(CodeType.ERROR_STATE.code(),"参数有误");
         }
-        RateVendor result = rateService.saveRateVendor(rateVendor);
-
+        RateVendor result = rateService.saveRateVendor(orderId,rateVendor);
         return new ResultMap(CodeType.OK.code(), "评价成功", result);
 
     }
@@ -67,25 +62,25 @@ public class RateController {
     @RequestMapping(value = "/rateGoods/{orderId}", method = RequestMethod.POST)
     public ResultMap saveRateGoods(@PathVariable("orderId") String orderId, @RequestBody String json) {
         List<RateGoods> rateGoodsList = FastjsonUtils.fromJsonArray(json, RateGoods.class);
-        for (RateGoods rateGoods : rateGoodsList){
-            //默认匿名评价
-            rateGoods.setIsAnony(rateGoods.getIsAnony() == null ? 1 : rateGoods.getIsAnony());
-            rateGoods.setUserUU(SystemSession.getUser().getUserUU());
-            rateGoods.setUserEnuu(SystemSession.getUser().getEnterprise().getUu());
-            rateGoods.setOrderId(orderId);
-            rateGoods.setBuyerRateTime(new Date(System.currentTimeMillis()));
+        rateService.saveRateGoods(orderId,rateGoodsList);
+        return new ResultMap(CodeType.OK.code(), "评价成功");
 
+    }
+    /**
+     * 买家初评
+     *
+     * @param json 匿名,
+     * @return the result map
+     */
+    @RequestMapping(value = "/buyerRate/{orderId}", method = RequestMethod.POST)
+    public ResultMap savebuyerRate(@PathVariable("orderId") String orderId, @RequestBody String json) {
+        List<RateGoods> rateGoodsList = FastjsonUtils.fromJsonArray(FastjsonUtils.parseObject(json).get("goodsRate").toString(),RateGoods.class);
+        RateVendor rateVendor = FastjsonUtils.fromJson(FastjsonUtils.parseObject(json).get("vendorRate").toString(),RateVendor.class);
+        if(null == rateVendor.getStoreId() || null == rateVendor.getEnuu() || null == rateVendor.getVendorLevel()){
+            return new ResultMap(CodeType.ERROR_STATE.code(),"参数有误");
         }
-        rateService.saveRateGoods(rateGoodsList);
-        //订单状态变更
-        Order order = orderDao.findByOrderid(orderId);
-        if (order.getStatus().intValue() != Status.COMPLETED.value()) {
-            throw new IllegalOperatorException("当前订单不在已完成状态,不能收货!");
-        }
-        order.setStatusToBeAfterReviewed(SystemSession.getUser().getUserUU());
-
+        rateService.savebuyerRate(orderId,rateVendor,rateGoodsList);
         return new ResultMap(CodeType.OK.code(), "评价成功");
-
     }
     /**
      * 买家追评评价商品

+ 2 - 2
src/main/java/com/uas/platform/b2c/trade/rate/model/RateBuyer.java

@@ -56,7 +56,7 @@ public class RateBuyer implements Serializable{
     /**
      * 评价人uu
      */
-    @Column(name = "vendor_useruu")
+    @Column(name = "vendor_useruu")
     private Long vendorUseruu;
     /**
      * 卖家店铺id
@@ -67,7 +67,7 @@ public class RateBuyer implements Serializable{
     /**
      * 评价等级
      */
-    @Column(name = "level")
+    @Column(name = "ratelevel")
     private Short level;
 
     /**

+ 1 - 1
src/main/java/com/uas/platform/b2c/trade/rate/model/RateGoods.java

@@ -64,7 +64,7 @@ public class RateGoods implements Serializable{
     /**
      * 评价等级
      */
-    @Column(name = "level")
+    @Column(name = "ratelevel")
     private Short level;
 
     /**

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

@@ -17,13 +17,19 @@ public interface RateService {
      * @param  rateVendor
      * @return order order
      */
-    RateVendor saveRateVendor(RateVendor rateVendor);
+    RateVendor saveRateVendor(String orderId , RateVendor rateVendor);
 
     /**
      * 买家对商品的初评
      * @param rateGoodsList
      */
-    void saveRateGoods(List<RateGoods> rateGoodsList);
+    void saveRateGoods(String orderId , List<RateGoods> rateGoodsList);
+
+    /**
+     * 买家对商品的初评
+     * @param rateGoodsList
+     */
+    void savebuyerRate(String orderId , RateVendor rateVendor , List<RateGoods> rateGoodsList);
 
     /**
      * 买家对商品的追评

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

@@ -1,5 +1,8 @@
 package com.uas.platform.b2c.trade.rate.service.impl;
 
+import com.uas.platform.b2c.core.support.SystemSession;
+import com.uas.platform.b2c.trade.order.dao.OrderDao;
+import com.uas.platform.b2c.trade.order.model.Order;
 import com.uas.platform.b2c.trade.rate.dao.RateBuyerDao;
 import com.uas.platform.b2c.trade.rate.dao.RateGoodsDao;
 import com.uas.platform.b2c.trade.rate.dao.RateTemplateDao;
@@ -9,9 +12,15 @@ import com.uas.platform.b2c.trade.rate.model.RateGoods;
 import com.uas.platform.b2c.trade.rate.model.RateTemplate;
 import com.uas.platform.b2c.trade.rate.model.RateVendor;
 import com.uas.platform.b2c.trade.rate.service.RateService;
+import com.uas.platform.b2c.trade.support.CodeType;
+import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.exception.IllegalOperatorException;
+import com.uas.platform.core.model.Status;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -32,14 +41,46 @@ public class RateServiceImpl implements RateService{
     @Autowired
     RateBuyerDao  rateBuyerDao;
 
+    @Autowired
+    OrderDao orderDao;
+
     @Override
-    public RateVendor saveRateVendor(RateVendor rateVendor) {
+    public RateVendor saveRateVendor(String orderId , RateVendor rateVendor) {
+        rateVendor.setUserUU(SystemSession.getUser().getUserUU());
+        rateVendor.setUserEnuu(SystemSession.getUser().getEnterprise().getUu());
+        rateVendor.setOrderId(orderId);
+        rateVendor.setTime(new Date(System.currentTimeMillis()));
+
         return rateVendorDao.save(rateVendor);
     }
 
     @Override
-    public void saveRateGoods(List<RateGoods> rateGoodsList) {
+    public void saveRateGoods(String orderId , List<RateGoods> rateGoodsList) {
+        for (RateGoods rateGoods : rateGoodsList){
+            //默认匿名评价
+            rateGoods.setIsAnony(rateGoods.getIsAnony() == null ? 1 : rateGoods.getIsAnony());
+            rateGoods.setUserUU(SystemSession.getUser().getUserUU());
+            rateGoods.setUserEnuu(SystemSession.getUser().getEnterprise().getUu());
+            rateGoods.setOrderId(orderId);
+            rateGoods.setBuyerRateTime(new Date(System.currentTimeMillis()));
+        }
         rateGoodsDao.save(rateGoodsList);
+        //订单状态变更
+        Order order = orderDao.findByOrderid(orderId);
+        if (order.getStatus().intValue() != Status.COMPLETED.value()) {
+            throw new IllegalOperatorException("当前订单不在已完成状态,不能收货!");
+        }
+        order.setStatusToBeAfterReviewed(SystemSession.getUser().getUserUU());
+    }
+
+    @Override
+    @Transactional
+    public void savebuyerRate(String orderId, RateVendor rateVendor, List<RateGoods> rateGoodsList) {
+        if (null != getRateVendorByOrderId(orderId)){
+            return;
+        }
+        saveRateVendor(orderId,rateVendor);
+        saveRateGoods(orderId,rateGoodsList);
     }
 
     @Override

+ 5 - 0
src/main/webapp/resources/js/common/query/rate.js

@@ -37,6 +37,11 @@ define([ 'ngResource' ], function() {
                 url : 'rate/rateGoods/:orderId',
                 method : 'POST'
             },
+            // 买家评价商品
+            saveBuyerRate : {
+                url : 'rate/buyerRate/:orderId',
+                method : 'POST'
+            },
             //买家追评评价商品
             saveAfterRateGoods : {
                 url : 'rate/afterRateGoods/:orderId',

+ 5 - 2
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_order_ctrl.js

@@ -73,7 +73,7 @@ define(['app/app'], function (app) {
 			var state = null;
 			switch($scope.status) {
 				case 'all' : // 全部
-					state = '503-504-505-406-407-403-408-404-405-520-602-603-315-604-605-606'; break;
+					state = '503-504-505-406-407-403-408-404-405-520-523-522-602-603-315-604-605-606'; break;
 				case 'tobepaid' : // 待付款
 					state = '503-504'; break; // 504-已付款, 放在待付款下面,商城确认收款后再放到待发货
 				case 'tobedeliver' : // 待发货
@@ -87,7 +87,7 @@ define(['app/app'], function (app) {
 				case 'unavailable' : // 已失效
 					state = '602-603-315-604-605-606'; break;
 				case 'tobecomment' :
-					state = '521'; break;
+					state = '520-523'; break;
 				//下面的状态栏新增的状态
 				case 'tobepay':
 					state = '503'; break;
@@ -650,6 +650,9 @@ define(['app/app'], function (app) {
 				case 405:
 					result = '交易完成';
 					break;
+                case 523:
+                    result = '待追评';
+                    break;
 				case 602:
 				case 603:
 				case 315:

+ 51 - 0
src/main/webapp/resources/js/usercenter/controllers/forstore/first_rate_ctrl.js

@@ -2,6 +2,9 @@ define(['app/app'], function(app) {
     'use strict';
     app.register.controller('firstRateCtrl', ['$scope', '$rootScope', '$stateParams','$filter','Order', 'toaster', 'Rate', function ($scope, $rootScope, $stateParams , $filter , Order , toaster , Rate) {
 
+        $scope.isAnony = 1;
+        $scope.goodsRate =[];
+        $scope.vendorRate = {};
         if ($stateParams.orderid && $stateParams.orderid != '') {
             $scope.orderid = $stateParams.orderid;
             if(!$scope.orderid) {
@@ -13,8 +16,48 @@ define(['app/app'], function(app) {
                     return ;
                 }
                 $scope.order = data[0];
+                for (var i=0; i < $scope.order.orderDetails.length;i++){
+                    $scope.goodsRate[i] = {};
+                    $scope.goodsRate[i].level = 1;
+                    $scope.goodsRate[i].isAnony = $scope.isAnony;
+                }
+
+                console.log($scope.goodsRate);
             });
         }
+
+        $scope.submit = function () {
+            if ($scope.descObj.a == 0 || $scope.descObj.b == 0 || $scope.descObj.c == 0){
+                toaster.pop('error', '请先对店铺进行评价');
+                return;
+            }
+            for (var i=0; i < $scope.order.orderDetails.length;i++){
+                $scope.goodsRate[i].isAnony = $scope.isAnony;
+                if ( $scope.goodsRate[i].buyerRate == null){
+                    $scope.goodsRate[i].buyerRate = '此用户没有填写评价!';
+                }
+                $scope.goodsRate[i].goodsId = $scope.order.orderDetails[i].id;
+                $scope.goodsRate[i].storeId = $scope.order.orderDetails[i].storeid;
+                $scope.goodsRate[i].enuu = $scope.order.orderDetails[i].supEnuu;
+            }
+            var params = {};
+            params.goodsRate = $scope.goodsRate;
+            params.vendorRate = {enuu : $scope.order.sellerenuu,
+                storeId : $scope.order.storeid,
+                describeLevel : $scope.descObj.a,
+                vendorLevel : $scope.descObj.b,
+                logisticsLevel : $scope.descObj.c};
+            Rate.saveBuyerRate({orderId : $scope.order.orderid},params,function (data) {
+                if (data.success){
+                    window.location.href='user#/order';
+                }
+
+            },function (error) {
+                toaster.pop('error', '评价失败');
+            });
+
+        };
+
         /**
          * 获取买家评价店铺的信息
          */
@@ -32,6 +75,14 @@ define(['app/app'], function(app) {
             });
         };
 
+        $scope.descObj = {};
+        $scope.descObj.a = 0;
+        $scope.descObj.b = 0;
+        $scope.descObj.c = 0;
+
+        $scope.setLevel = function (type, level) {
+            $scope.descObj[type] = level;
+        }
 
     }]);
 });

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

@@ -586,7 +586,7 @@
 				<li ng-class="{'active' : status == 'tobereceive'}" ng-click="toggleStatus('tobereceive')"><a>待收货(<em ng-class="{'color-black': !AllOrderInfo['tobereceive']}" ng-bind="AllOrderInfo['tobereceive'] || 0"></em>)</a></li>
 				<li ng-class="{'active' : status == 'success'}" ng-click="toggleStatus('success')"><a>交易结束(<em ng-class="{'color-black': !AllOrderInfo['success']}" ng-bind="AllOrderInfo['success'] || 0"></em>)</a></li>
 				<li ng-class="{'active' : status == 'unavailable'}" ng-click="toggleStatus('unavailable')"><a>已取消(<em ng-class="{'color-black': !AllOrderInfo['unavailable']}" ng-bind="AllOrderInfo['unavailable'] || 0"></em>)</a></li>
-				<li ng-class="{'active' : status == 'tobecomment'}" ng-click="toggleStatus('tobecomment')"><a>待评价(<em ng-bind="0" class="color-black"></em>)</a></li>
+				<li ng-class="{'active' : status == 'tobecomment'}" ng-click="toggleStatus('tobecomment')"><a>待评价(<em ng-class="{'color-black': !AllOrderInfo['tobecomment']}" ng-bind="AllOrderInfo['tobecomment'] || 0"></em>)</a></li>
 			</ul>
 		</div>
 		<!--搜索时间筛选-->

+ 25 - 21
src/main/webapp/resources/view/usercenter/forstore/first_rate.html

@@ -38,6 +38,9 @@
     .first-rate table thead tr td .describe-option {
         margin-right: 55px;
     }
+    .first-rate table thead tr td .describe-option img {
+        cursor: pointer;
+    }
     .first-rate table tbody tr {
         border-bottom: 1px dashed rgb( 232, 235, 252 );
     }
@@ -118,6 +121,7 @@
         padding: 4px 17px;
         background: #5078cb;
         color: #fff;
+        cursor: pointer;
     }
 
 
@@ -144,27 +148,27 @@
                     <span class="describe-title describe-option">店铺评价:</span>
                     <span>描述相符:</span>
                     <span class="rate-level describe-option">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.a - 0 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('a',1)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.a - 1 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('a',2)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.a - 2 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('a',3)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.a - 3 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('a',4)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.a - 4 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('a',5)" alt="">
                     </span>
                     <span>卖家服务:</span>
                     <span class="rate-level describe-option">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.b - 0 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('b',1)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.b - 1 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('b',2)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.b - 2 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('b',3)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.b - 3 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('b',4)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.b - 4 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('b',5)" alt="">
                     </span>
                     <span>物流服务:</span>
                     <span class="rate-level describe-option">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
-                        <img src="static/img/user/images/rateGood.png" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.c - 0 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('c',1)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.c - 1 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('c',2)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.c - 2 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('c',3)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.c - 3 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('c',4)" alt="">
+                        <img ng-src="static/img/user/images/{{descObj.c - 4 > 0? 'rateGood':'rateBad'}}.png" ng-click="setLevel('c',5)" alt="">
                     </span>
                 </td>
             </tr>
@@ -184,24 +188,24 @@
                             <label class="check-act">
                                 <img src="static/img/user/images/rate1.png" alt="">
                                 <span>好评</span>
-                                <input type="radio" id="{{1*($index)+1}}" name="radio{{$index}}" checked="checked"/>
+                                <input type="radio" id="{{1*($index)+1}}" name="radio{{$index}}" value="1" ng-model="goodsRate[$index].level" />
                                 <label for="{{1*($index)+1}}"></label>
                             </label>
                             <label class="check-act">
                                 <img src="static/img/user/images/rate2.png" alt="">
                                 <span>中评</span>
-                                <input type="radio" id="{{1*($index)+2}}" name="radio{{$index}}"/>
+                                <input type="radio" id="{{1*($index)+2}}" name="radio{{$index}}" value="2" ng-model="goodsRate[$index].level" />
                                 <label for="{{1*($index)+2}}"></label>
                             </label>
                             <label class="check-act">
                                 <img src="static/img/user/images/rate3.png" alt="">
                                 <span>差评</span>
-                                <input type="radio" id="{{1*($index)+3}}" name="radio{{$index}}"/>
+                                <input type="radio" id="{{1*($index)+3}}" name="radio{{$index}}" value="3" ng-model="goodsRate[$index].level" />
                                 <label for="{{1*($index)+3}}"></label>
                             </label>
                         </div>
                         <div class="first-rate-item-textBox">
-                            <textarea placeholder="请输入您对产品的评价" name="" id="" cols="30" rows="10"></textarea>
+                            <textarea placeholder="请输入您对产品的评价" name="" id="" cols="30" rows="10" ng-model="goodsRate[$index].buyerRate"></textarea>
                         </div>
                     </div>
                 </td>
@@ -216,10 +220,10 @@
     </table>
     <div class="submitBox">
         <label class="check-active">
-            <input ng-model="isSetTop" type="checkbox" id="check-act" class="ng-pristine ng-untouched ng-valid" checked="checked">
+            <input ng-model="isSetTop" type="checkbox" id="check-act" class="ng-pristine ng-untouched ng-valid" ng-checked="isAnony" ng-click="isAnony = 1-isAnony">
             <label for="check-act"></label>
             <span style="font-size: 14px; color: black">匿名评价</span>
         </label>
-        <span class="submit-btn">提交</span>
+        <span class="submit-btn" ng-click="submit()">提交</span>
     </div>
 </div>