Преглед изворни кода

公共消息获取接口及页面修改

dongbw пре 8 година
родитељ
комит
a44dc559a0

+ 61 - 11
src/main/java/com/uas/platform/b2b/controller/PagingReleaseController.java

@@ -1,23 +1,17 @@
 package com.uas.platform.b2b.controller;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.uas.account.support.Page;
 import com.uas.platform.b2b.model.PagingReleaseDetail;
 import com.uas.platform.b2b.model.SearchFilter;
 import com.uas.platform.b2b.search.SearchService;
 import com.uas.platform.b2b.service.PagingReleaseDetailService;
 import com.uas.platform.b2b.service.PagingReleaseService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.support.UsageBufferedLogger;
+import com.uas.platform.b2b.temporary.model.MessageModel;
+import com.uas.platform.core.logging.BufferedLoggerManager;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
@@ -26,9 +20,22 @@ import com.uas.platform.core.web.bind.RequestState;
 import com.uas.search.b2b.model.SPage;
 import com.uas.search.b2b.model.Sort;
 import com.uas.search.b2b.util.SearchConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
+ * 页面通知消息
  * Created by dongbw
  * 17/03/24 9:00.
  */
@@ -45,6 +52,8 @@ public class PagingReleaseController {
     @Autowired
     private SearchService searchService;
 
+    private final static UsageBufferedLogger logger = BufferedLoggerManager.getLogger(UsageBufferedLogger.class);
+
     /**
      *  分页查找消息(未读)
      * @param params
@@ -140,4 +149,45 @@ public class PagingReleaseController {
         pagingReleaseDetailService.setOneRead(id);
     }
 
+    /* 以上为之前B2B调用的消息接口,消息提出公共服务之后,调用下面的接口 */
+
+    /**
+     * 获取所有消息(消息公共服务接口)
+     * @param params
+     * @param searchFilter
+     * @return
+     */
+    @RequestMapping(value = "/info", method = RequestMethod.GET)
+    @ResponseBody
+    public Page<MessageModel> getMessageByMessagePublicService(PageParams params, String searchFilter) throws Exception {
+        JSONObject jsonObject = JSONObject.parseObject(searchFilter);
+        String keyword = jsonObject.getString("keyword");
+        logger.log("查看消息", "查看收到的消息");
+        PageInfo pageInfo = new PageInfo(params);
+        return pagingReleaseService.getPublicMessage(keyword, pageInfo);
+    }
+
+    /**
+     * 标为已读
+     * @param id 消息id
+     */
+    @RequestMapping(value = "/message/setRead", method = RequestMethod.POST)
+    @ResponseBody
+    public ModelMap setMessageRead(@RequestParam Long id) throws Exception {
+        return pagingReleaseService.setMessageRead(id);
+    }
+
+    /**
+     * 标为已读
+     * @param ids 消息ids
+     */
+    @RequestMapping(value = "/message/setRead/page", method = RequestMethod.POST)
+    @ResponseBody
+    public ModelMap setPageMessageRead(@RequestBody String ids) throws Exception {
+        List<Long> messageIds = JSON.parseArray(ids, Long.class);
+        for (Long id : messageIds) {
+            pagingReleaseService.setMessageRead(id);
+        }
+        return new ModelMap("success", "设置成功");
+    }
 }

+ 75 - 0
src/main/java/com/uas/platform/b2b/ps/MessageUtils.java

@@ -0,0 +1,75 @@
+package com.uas.platform.b2b.ps;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import com.alibaba.fastjson.parser.Feature;
+import com.uas.account.support.Page;
+import com.uas.platform.b2b.support.HttpUtils;
+import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.MessageModel;
+import org.springframework.http.HttpStatus;
+import org.springframework.ui.ModelMap;
+
+import java.util.HashMap;
+
+/**
+ * 对接公共消息服务的接口
+ *
+ * @author dongbw
+ * 2018-01-22 15:43:41
+ */
+public class MessageUtils {
+
+    private static final String MESSAGE_PUBLIC_SERVICE_DEV_URL = "";
+
+    /**
+     * 获取公共消息的方法
+     *
+     * @author dongbw
+     * @param page 页码
+     * @param size 每页条数
+     * @return
+     * @throws Exception
+     */
+    public static Page<MessageModel> getMessage(int page, int size) throws Exception {
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("receiveruu", SystemSession.getUser().getUserUU());
+        params.put("receiverEnuu", SystemSession.getUser().getEnterprise().getUu());
+        params.put("consumerApp", "B2B");
+        params.put("page", page);
+        params.put("size", size);
+        HttpUtils.Response res = HttpUtils.get(MESSAGE_PUBLIC_SERVICE_DEV_URL + "/message", params);
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            if (null != res.getResponseText()) {
+                return (Page) JSONObject.parseObject(res.getResponseText(), new TypeReference<Page<MessageModel>>() {
+                }, new Feature[0]);
+            }
+        } else {
+            throw new RuntimeException("获取消息失败");
+        }
+        return null;
+    }
+
+    /**
+     * 设置消息已读
+     *
+     * @author dongbw
+     * @param id 消息id
+     * @return
+     * @throws Exception
+     */
+    public static ModelMap setRead(Long id) throws Exception {
+        ModelMap map = new ModelMap();
+        HashMap<String, String> params = new HashMap<>();
+        params.put("messageId", String.valueOf(id));
+        params.put("consumerApp", "B2B");
+        HttpUtils.Response res = HttpUtils.post(MESSAGE_PUBLIC_SERVICE_DEV_URL + "/message/read", params);
+        if (HttpStatus.OK.value() == res.getStatusCode()) {
+            map.put("success", "成功设为已读");
+            return map;
+        } else {
+            throw new RuntimeException("设置已读失败");
+        }
+    }
+
+}

+ 16 - 0
src/main/java/com/uas/platform/b2b/service/PagingReleaseService.java

@@ -2,8 +2,10 @@ package com.uas.platform.b2b.service;
 
 import com.uas.platform.b2b.model.PagingReleaseDetail;
 import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.temporary.model.MessageModel;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.search.b2b.model.SPage;
+import org.springframework.ui.ModelMap;
 
 /**
  * Created by dongbw
@@ -26,4 +28,18 @@ public interface PagingReleaseService {
      * @return
      */
     SPage<PagingReleaseDetail> findPagingReleaseByPageInfo(SearchFilter filter, String keyword, PageInfo pageInfo);
+
+    /**
+     * 从公共消息服务获取消息
+     * @param keyword  关键词
+     * @param pageInfo  分页信息
+     * @return
+     */
+    com.uas.account.support.Page<MessageModel> getPublicMessage(String keyword, PageInfo pageInfo) throws Exception;
+
+    /**
+     * 消息标为已读
+     * @param id 消息id
+     */
+    ModelMap setMessageRead(Long id) throws Exception;
 }

+ 39 - 0
src/main/java/com/uas/platform/b2b/service/impl/PagingReleaseServiceImpl.java

@@ -4,8 +4,10 @@ import com.uas.platform.b2b.dao.CommonDao;
 import com.uas.platform.b2b.dao.PagingReleaseDetailDao;
 import com.uas.platform.b2b.model.PagingReleaseDetail;
 import com.uas.platform.b2b.model.SearchFilter;
+import com.uas.platform.b2b.ps.MessageUtils;
 import com.uas.platform.b2b.service.PagingReleaseService;
 import com.uas.platform.b2b.support.SystemSession;
+import com.uas.platform.b2b.temporary.model.MessageModel;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.search.b2b.model.SPage;
@@ -13,12 +15,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
+import org.springframework.ui.ModelMap;
 
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * Created by dongbw
@@ -66,4 +71,38 @@ public class PagingReleaseServiceImpl implements PagingReleaseService {
         details.setTotalPage(pagingReleaseDetails.getTotalPages());
         return details;
     }
+
+    /**
+     * 从公共消息服务获取消息
+     *
+     * @param keyword  关键词
+     * @param pageInfo 分页信息
+     * @return
+     */
+    @Override
+    public com.uas.account.support.Page<MessageModel> getPublicMessage(String keyword, PageInfo pageInfo) throws Exception {
+        com.uas.account.support.Page<MessageModel> page =  MessageUtils.getMessage(pageInfo.getPageNumber(), pageInfo.getPageSize());
+        List<MessageModel> messageModelList = new ArrayList<>();
+        if (page != null) {
+            for (MessageModel messageModel : page.getContent()) {
+                // 拼接公共询价链接
+                if ("公共询价".equals(messageModel.getType())) {
+                    messageModel.setUrl("#/baseInfo/inquiryList/" + messageModel.getId());
+                }
+                messageModelList.add(messageModel);
+            }
+            page.setContent(messageModelList);
+        }
+        return page;
+    }
+
+    /**
+     * 消息标为已读
+     *
+     * @param id 消息id
+     */
+    @Override
+    public ModelMap setMessageRead(Long id) throws Exception {
+        return MessageUtils.setRead(id);
+    }
 }

+ 240 - 0
src/main/java/com/uas/platform/b2b/temporary/model/MessageModel.java

@@ -0,0 +1,240 @@
+package com.uas.platform.b2b.temporary.model;
+
+import java.util.Date;
+
+/**
+ * 消息公共服务接收实体
+ */
+public class MessageModel{
+
+    /**
+     * 消息id
+     */
+    private Long id;
+
+    /**
+     * 阅读状态
+     * 1 已阅
+     * 0 未读
+     */
+    private Short isRead;
+
+    /**
+     * 生成时间
+     */
+    private Date createTime;
+
+    /**
+     * 在b2b中拿到消息之后,拼接url(公共服务中无此字段)
+     */
+    private String url;
+
+    /**
+     * 消息备注(保存用于拼接跳转链接的参数)
+     */
+    private String remark;
+
+    /**
+     * 消息类型
+     */
+    private String type;
+
+    /**
+     * 消息内容
+     */
+    private String content;
+
+    /**
+     * 消息接收者uu
+     */
+    private Long receiverUu;
+
+    /**
+     * 消息接收者企业uu
+     */
+    private Long receiverEnuu;
+
+    /**
+     * 消息发送者
+     */
+    private Long senderUu;
+
+    /**
+     * 消息发送者企业uu
+     */
+    private Long senderEnuu;
+
+    /**
+     * 来源应用
+     */
+    private String producerApp;
+
+    /**
+     * 消费类型(所有应用共享:"PUBLIC",单个应用独享:"SINGLE",多个应用共享:"MULTI")
+     */
+    private String consumeType;
+
+    /**
+     * 推送方式类型
+     * 邮件、短信、IM:"MAIL_AND_SM_AND_IM"
+     * 邮件、短信:"MAIL_AND_SM"
+     * 邮件、IM:"MAIL_AND_IM"
+     * 短信、IM:"SM_AND_IM"
+     * 邮件:"MAIL"
+     * 短信:"SM"
+     * IM:"IM"
+     * 不发送:"DONT_SEND"
+     */
+    private String smsType;
+
+    /**
+     * 邮件模板id
+     */
+    private String mailTemplate;
+
+    /**
+     * 短息模板id
+     */
+    private String smTemplate;
+
+    /**
+     * 接收应用(以","拼接应用名称)
+     */
+    private String consumerApp;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Short getIsRead() {
+        return isRead;
+    }
+
+    public void setIsRead(Short isRead) {
+        this.isRead = isRead;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Long getReceiverUu() {
+        return receiverUu;
+    }
+
+    public void setReceiverUu(Long receiverUu) {
+        this.receiverUu = receiverUu;
+    }
+
+    public Long getReceiverEnuu() {
+        return receiverEnuu;
+    }
+
+    public void setReceiverEnuu(Long receiverEnuu) {
+        this.receiverEnuu = receiverEnuu;
+    }
+
+    public Long getSenderUu() {
+        return senderUu;
+    }
+
+    public void setSenderUu(Long senderUu) {
+        this.senderUu = senderUu;
+    }
+
+    public Long getSenderEnuu() {
+        return senderEnuu;
+    }
+
+    public void setSenderEnuu(Long senderEnuu) {
+        this.senderEnuu = senderEnuu;
+    }
+
+    public String getProducerApp() {
+        return producerApp;
+    }
+
+    public void setProducerApp(String producerApp) {
+        this.producerApp = producerApp;
+    }
+
+    public String getConsumeType() {
+        return consumeType;
+    }
+
+    public void setConsumeType(String consumeType) {
+        this.consumeType = consumeType;
+    }
+
+    public String getSmsType() {
+        return smsType;
+    }
+
+    public void setSmsType(String smsType) {
+        this.smsType = smsType;
+    }
+
+    public String getMailTemplate() {
+        return mailTemplate;
+    }
+
+    public void setMailTemplate(String mailTemplate) {
+        this.mailTemplate = mailTemplate;
+    }
+
+    public String getSmTemplate() {
+        return smTemplate;
+    }
+
+    public void setSmTemplate(String smTemplate) {
+        this.smTemplate = smTemplate;
+    }
+
+    public String getConsumerApp() {
+        return consumerApp;
+    }
+
+    public void setConsumerApp(String consumerApp) {
+        this.consumerApp = consumerApp;
+    }
+}

+ 179 - 89
src/main/webapp/resources/js/index/app.js

@@ -914,37 +914,151 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         }
     }]);
 
-    app.controller('PagingReleaseCtrl', ['$scope', 'PagingRelease', 'BaseService', 'ngTableParams', 'toaster', '$modalInstance', 'PagingReleaseInfo', function ($scope, PagingRelease, BaseService, ngTableParams, toaster, $modalInstance, PagingReleaseInfo) {
-        // BaseService.scrollBackToTop();
-        $scope.active = "todo";
-        $scope.searchStatus = false; // 默认从数据库直接获取
-        $scope.setActive = function (state) {
-            if ($scope.active != state) {
-                $scope.active = state;
-                if ($scope.tableParams.page() == 1)
-                    $scope.tableParams.reload();
-                else
-                    $scope.tableParams.page(1);
-            }
-        };
+    /**
+     * 原消息提醒
+     */
+    // app.controller('PagingReleaseCtrl', ['$scope', 'PagingRelease', 'BaseService', 'ngTableParams', 'toaster', '$modalInstance', 'PagingReleaseInfo', function ($scope, PagingRelease, BaseService, ngTableParams, toaster, $modalInstance, PagingReleaseInfo) {
+    //     // BaseService.scrollBackToTop();
+    //     $scope.active = "todo";
+    //     $scope.searchStatus = false; // 默认从数据库直接获取
+    //     $scope.setActive = function (state) {
+    //         if ($scope.active != state) {
+    //             $scope.active = state;
+    //             if ($scope.tableParams.page() == 1)
+    //                 $scope.tableParams.reload();
+    //             else
+    //                 $scope.tableParams.page(1);
+    //         }
+    //     };
+    //
+    //     var getService = function () {
+    //         if ($scope.searchStatus) {
+    //             return PagingRelease;
+    //         } else {
+    //             return PagingReleaseInfo;
+    //         }
+    //     };
+    //
+    //     $scope.tableParams = new ngTableParams({
+    //         page: 1,
+    //         count: 20,
+    //         sorting: {
+    //             'id': 'desc'
+    //         }
+    //     }, {
+    //         total: 0,
+    //         counts: [5, 10, 25, 50],
+    //         getData: function ($defer, params) {
+    //             $scope.loading = true;
+    //             var pageParams = params.url();
+    //             var realActive = {};
+    //             pageParams.searchFilter = { // 筛选条件
+    //                 keyword: $scope.keyword
+    //                 // fromDate: getDateTime($scope.condition.dateFrom),
+    //                 // endDate: getDateTime($scope.condition.dateTo)
+    //             };
+    //             // AccountEnterprise.get({}, function(data){
+    //             //     $scope.currentEn = data;
+    //             // });
+    //             getService()[getState($scope.active)].call(null, BaseService.parseParams(pageParams), function (page) {
+    //                 $scope.loading = false;
+    //                 if (page) {
+    //                     params.total(page.totalElement);
+    //                     $defer.resolve(page.content);
+    //                     // $scope.keywordXls = angular.copy($scope.keyword); // 保存当前取值的关键词  做导出时需要的字段
+    //                 }
+    //             }, function (response) {
+    //                 $scope.loading = false;
+    //                 toaster.pop('error', '数据加载失败', response.data);
+    //             });
+    //         }
+    //     });
+    //
+    //     $scope.close = function () {
+    //         $modalInstance.close();
+    //         window.location.reload();
+    //     };
+    //
+    //
+    //     $scope.checks = {
+    //         checked: false
+    //     };// 全选框
+    //
+    //     $scope.checkAll = function () {
+    //         angular.forEach($scope.tableParams.data, function (message) {
+    //             message.checked = $scope.checks.checked;
+    //         });
+    //     };
+    //
+    //     // 单选
+    //     $scope.checkOne = function (vendor) {
+    //         vendor.checked = true;
+    //
+    //         var checked = true;
+    //         angular.forEach($scope.tableParams.data, function (message) { // 单选全部时,全选选中
+    //             if (!message.checked) {
+    //                 checked = false;
+    //             }
+    //         });
+    //         $scope.checks.checked = checked;
+    //     };
+    //
+    //     // 单反选
+    //     $scope.unCheckOne = function (vendor) {
+    //         vendor.checked = false;
+    //         $scope.checks.checked = false;
+    //     };
+    //
+    //     // 标为已读
+    //     $scope.setRead = function () {
+    //         var selectedMessages = [];
+    //         angular.forEach($scope.tableParams.data, function (message) {
+    //             if (message.checked) {
+    //                 selectedMessages.push(message);
+    //             }
+    //         });
+    //         PagingRelease.setRead({}, selectedMessages, function (message) {
+    //             $scope.checks = {
+    //                 checked: false
+    //             };
+    //             toaster.pop("success", "成功", "设置成功");
+    //             $scope.tableParams.page(1);
+    //             $scope.tableParams.reload();
+    //         });
+    //     };
+    //
+    //     // 点击内容连接之后,信息标为已读
+    //     $scope.setOneRead = function (id) {
+    //         $modalInstance.close();
+    //         PagingRelease.setOneRead({id: id}, {}, function (data) {
+    //         }, function (response) {
+    //             toaster.pop('error', '提示', response.data);
+    //         });
+    //     };
+    //
+    //     // 搜索框回车
+    //     $scope.onSearch = function () {
+    //         $scope.searchStatus = true;
+    //         $scope.tableParams.page(1);
+    //         $scope.tableParams.reload();
+    //     };
+    //
+    // }]);
 
-        var getService = function () {
-            if ($scope.searchStatus) {
-                return PagingRelease;
-            } else {
-                return PagingReleaseInfo;
-            }
-        };
+    /**
+     * 新消息提醒(调用公共服务接口)  -2018-01-22 19:36:50
+     */
+    app.controller('PagingReleaseCtrl', ['$scope', 'PagingRelease', 'BaseService', 'ngTableParams', 'toaster', '$modalInstance', 'PagingReleaseInfo', function ($scope, PagingRelease, BaseService, ngTableParams, toaster, $modalInstance, PagingReleaseInfo) {
 
         $scope.tableParams = new ngTableParams({
             page: 1,
-            count: 20,
+            count: 10,
             sorting: {
-                'pagingRelease.date': 'desc'
+                'id': 'desc'
             }
         }, {
             total: 0,
-            counts: [5, 10, 25, 50],
+            counts: [],
             getData: function ($defer, params) {
                 $scope.loading = true;
                 var pageParams = params.url();
@@ -954,13 +1068,10 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                     // fromDate: getDateTime($scope.condition.dateFrom),
                     // endDate: getDateTime($scope.condition.dateTo)
                 };
-                // AccountEnterprise.get({}, function(data){
-                //     $scope.currentEn = data;
-                // });
-                getService()[getState($scope.active)].call(null, BaseService.parseParams(pageParams), function (page) {
+                PagingRelease.getMessage.call(null, BaseService.parseParams(pageParams), function (page) {
                     $scope.loading = false;
                     if (page) {
-                        params.total(page.totalElement);
+                        params.total(page.totalElements);
                         $defer.resolve(page.content);
                         // $scope.keywordXls = angular.copy($scope.keyword); // 保存当前取值的关键词  做导出时需要的字段
                     }
@@ -1006,19 +1117,23 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
             $scope.checks.checked = false;
         };
 
-        // 标为已读
+        /**
+         * 当前页标为已读
+         */
         $scope.setRead = function () {
-            var selectedMessages = [];
-            angular.forEach($scope.tableParams.data, function (message) {
-                if (message.checked) {
-                    selectedMessages.push(message);
-                }
+            $scope.loading = true;
+            var messageIds = [];
+            angular.forEach($scope.tableParams.data, function(message) {
+                messageIds.push(message.id);
             });
-            PagingRelease.setRead({}, selectedMessages, function (message) {
-                $scope.checks = {
-                    checked: false
-                };
-                toaster.pop("success", "成功", "设置成功");
+            PagingRelease.setPageRead({}, messageIds, function (data) {
+                $scope.loading = false;
+                if (data.success) {
+                    toaster.pop("success", "设置已读成功");
+                }
+                if (data.error) {
+                    toaster.pop("error", "设置已读失败");
+                }
                 $scope.tableParams.page(1);
                 $scope.tableParams.reload();
             });
@@ -1027,7 +1142,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         // 点击内容连接之后,信息标为已读
         $scope.setOneRead = function (id) {
             $modalInstance.close();
-            PagingRelease.setOneRead({id: id}, {}, function (data) {
+            PagingRelease.setMessageRead({id: id}, {}, function (data) {
             }, function (response) {
                 toaster.pop('error', '提示', response.data);
             });
@@ -1035,13 +1150,13 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 
         // 搜索框回车
         $scope.onSearch = function () {
-            $scope.searchStatus = true;
             $scope.tableParams.page(1);
             $scope.tableParams.reload();
         };
 
     }]);
 
+
     // 高亮显示关键词
     app.filter('getkey', ['$sce', '$rootScope', function ($sce, $rootScope) {
         var search = $rootScope.searchKeyword;
@@ -5412,6 +5527,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
         // 转客户询价
         $scope.transtoInquiry = function (inquiryItem) {
             publicInquiry.quotationInfo({id: inquiryItem.id}, function(data) {
+                console.log(data);
                 if (data.inquiryItem) { //存在已报价的就不进行报价操作
                     toaster.pop('error', '该询价单已已经报价');
                 } else {
@@ -5489,26 +5605,27 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
 
         // 保存报价信息
         $scope.save = function(inquiryItem, method) {
-            var file = $scope.myFiles, file = file && file.length > 0 ? file[0] : null;// 可以不传附件
-            $upload.upload({
-                url: 'pubInquiry/turnToQuotation',
-                file: file,
-                method: 'POST',
-                data: {
-                    item: inquiryItem,
-                    method: method
-                }
-            }).success(function (data) {
-                if (data.item) {
-                    item = data.item;
-                }
-                $scope.loading = false;
-                toaster.pop('info', '提示', '报价成功');
-                $modalInstance.close();
-            }).error(function (data) {
-                $scope.loading = false;
-                toaster.pop('error', '附件上传失败');
-            });
+            console.log(inquiryItem);
+            // var file = $scope.myFiles, file = file && file.length > 0 ? file[0] : null;// 可以不传附件
+            // $upload.upload({
+            //     url: 'pubInquiry/turnToQuotation',
+            //     file: file,
+            //     method: 'POST',
+            //     data: {
+            //         item: inquiryItem,
+            //         method: method
+            //     }
+            // }).success(function (data) {
+            //     if (data.item) {
+            //         item = data.item;
+            //     }
+            //     $scope.loading = false;
+            //     toaster.pop('info', '提示', '报价成功');
+            //     $modalInstance.close();
+            // }).error(function (data) {
+            //     $scope.loading = false;
+            //     toaster.pop('error', '附件上传失败');
+            // });
         }
 
         $scope.previewShow = false;
@@ -5560,7 +5677,7 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
     /**
      * 公共询价详情
      */
-    app.controller('PublicInquiryListDetailCtrl', ['$scope', '$stateParams', 'PurchaseInquiry', '$filter', 'toaster', 'BaseService', 'ngTableParams', 'AccountEnterprise', 'publicInquiry', 'publicInquiryList', '$modal', function ($scope, $stateParams, PurchaseInquiry, $filter, toaster, BaseService, ngTableParams, AccountEnterprise, publicInquiry, publicInquiryList, $modal) {
+    app.controller('PublicInquiryListDetailCtrl', ['$scope', '$stateParams', 'PurchaseInquiry', '$filter', 'toaster', 'BaseService', 'ngTableParams', 'AccountEnterprise', 'publicInquiry', 'publicInquiryList', function ($scope, $stateParams, PurchaseInquiry, $filter, toaster, BaseService, ngTableParams, AccountEnterprise, publicInquiry, publicInquiryList) {
         BaseService.scrollBackToTop();
         $scope.currentHasBid = false;
         var loadData = function () {
@@ -5601,33 +5718,6 @@ define(['toaster', 'charts', 'ngTable', 'common/services', 'common/directives',
                 toaster.pop('error', '提示', response.data);
             });
         }
-
-        // 转客户询价
-        $scope.transtoInquiry = function (inquiryItem) {
-            publicInquiry.quotationInfo({id: inquiryItem.id}, function(data) {
-                if (data.inquiryItem) { //存在已报价的就不进行报价操作
-                    toaster.pop('error', '该询价单已已经报价');
-                } else {
-                    var modalInstance = $modal.open({
-                        templateUrl: 'static/tpl/index/baseInfo/modal/quotation_modal.html',
-                        controller: 'QuoteCtrl',
-                        size: 'lg',
-                        resolve: {
-                            inquiryItem: function () {
-                                return inquiryItem
-                            }
-                        }
-                    });
-
-                    modalInstance.result.then(function (data) {
-                        $scope.tableParams.reload();
-                    }, function () {
-
-                    });
-                }
-            });
-
-        }
     }]);
 
     // 询价单明细

+ 14 - 0
src/main/webapp/resources/js/index/services/Purc.js

@@ -1266,6 +1266,20 @@ define([ 'ngResource'], function() {
                     _state: 'done'
                 }
 			},
+			getMessage: {
+				url: 'api/paging/info',
+				method: 'GET'
+			},
+			// 设置消息已读(公共消息服务)
+			setMessageRead: {
+				url: 'api/paging/message/setRead',
+				method: 'POST'
+			},
+			// 设置当前页已读(公共消息服务)
+			setPageRead: {
+                url: 'api/paging/message/setRead/page',
+                method: 'POST'
+			},
             setRead:{
                 url: 'api/paging/setRead',
                 method: 'POST'

+ 19 - 42
src/main/webapp/resources/tpl/index/home/pagingRelease.html

@@ -137,66 +137,43 @@
             <a ng-click="close()"><i class="fa fa-close fa-lg"></i></a>
         </div>
     </div>
-    <div class="menu-message">
-        <div style="font-size: 14px; color: rgb(102,102,102); float: left; margin-top: 6px;margin-left: 6px;">
-            <span>消息状态:</span>
-        </div>
-        <div class="btn-group menu-status">
-            <div class="btn-group">
-                <button type="button" class="btn btn-select"
-                        ng-class="{'btn-selected':active=='todo'}" ng-click="setActive('todo')">未读</button>
-            </div>
-            <div class="btn-group">
-                <button type="button" class="btn btn-select"
-                        ng-class="{'btn-selected':active=='done'}" ng-click="setActive('done')">已读</button>
-            </div>
-        </div>
-        <div class="input-group search-group col-xs-4 pull-right" style="margin-right: 48px;">
-            <input id="search_input" type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入查询信息" />
-            <span class="input-group-btn">
-                <button id="search_btn" class="btn x-rss-btn x-background-whiteblue" ng-click="onSearch()">&nbsp;&nbsp;搜索&nbsp;&nbsp;</button>
-            </span>
-        </div>
-    </div>
+    <!--<div class="menu-message">-->
+        <!--<div class="input-group search-group col-xs-4 pull-right" style="margin-right: 48px;">-->
+            <!--<input id="search_input" type="search" class="form-control input-sm" ng-model="keyword" ng-search="onSearch()" placeholder="输入查询信息" />-->
+            <!--<span class="input-group-btn">-->
+                <!--<button id="search_btn" class="btn x-rss-btn x-background-whiteblue" ng-click="onSearch()">&nbsp;&nbsp;搜索&nbsp;&nbsp;</button>-->
+            <!--</span>-->
+        <!--</div>-->
+    <!--</div>-->
     <div class="footer-click">
-        <div ng-hide="active == 'done'" style="float: left;">
-            <input type="checkbox" name="checkbox" ng-model="checks.checked" ng-click="checkAll()" />
-        </div>
-        <div ng-hide="active == 'done'" style="float: left; padding: 0 20px 0 0;">
-            <!--<a ng-click="checkAll()">全选</a>-->
-            <span>全选</span>
-        </div>
-        <div ng-hide="active == 'done'" style="padding: 0 20px;">
-            <a ng-click="setRead()">设为已读</a>
+        <div>
+            <a ng-click="setRead()" style="color: #5078cb;">此页标为已读</a>
         </div>
     </div>
     <table class="block table release-table"
            ng-table="tableParams">
         <thead>
             <tr class="header">
-                <th width="40" ng-hide="active == 'done'"></th>
                 <th width="150">发起时间</th>
                 <th width="500">信息详情</th>
-                <th width="150" ng-hide="active == 'todo'">阅读时间</th>
+                <th width="80">阅读状态</th>
             </tr>
         </thead>
         <tbody>
-        <tr ng-repeat="releaseDetail in $data">
-            <td ng-hide="active == 'done'">
-                <input ng-model="releaseDetail.checked" name="checkbox" ng-show="!releaseDetail.checked" ng-click="checkOne(releaseDetail)" type="checkbox">
-                <input ng-model="releaseDetail.checked" name="checkbox" ng-show="releaseDetail.checked" ng-click="unCheckOne(releaseDetail)" type="checkbox">
-            </td>
+        <tr ng-repeat="releaseDetail in $data | orderBy: 'isRead'">
             <td>
-                <div>{{releaseDetail.pagingRelease.date | date:'yyyy-MM-dd HH:mm'}}</div>
+                <div>{{releaseDetail.createTime | date:'yyyy-MM-dd HH:mm'}}</div>
             </td>
             <td>
                 <div style="text-align: left;">
-                    <a style="color: #5078cb;" ng-if="releaseDetail.pagingRelease.url != null" ng-click="setOneRead(releaseDetail.id)" href="{{::releaseDetail.pagingRelease.url}}" title="查看详情">{{releaseDetail.pagingRelease.context}}</a>
-                    <span ng-if="releaseDetail.pagingRelease.url == null">{{::releaseDetail.pagingRelease.context}}</span>
+                    <a style="color: #5078cb;" ng-if="releaseDetail.url != null" ng-click="setOneRead(releaseDetail.id)"
+                       href="{{::releaseDetail.url}}" title="查看详情">{{releaseDetail.content}}</a>
+                    <span ng-if="releaseDetail.url == null">{{::releaseDetail.content}}</span>
                 </div>
             </td>
-            <td ng-hide="active == 'todo'">
-                <div>{{releaseDetail.readDate | date:'yyyy-MM-dd HH:mm'}}</div>
+            <td>
+                <div ng-if="releaseDetail.isRead == 1">已读</div>
+                <div ng-if="releaseDetail.isRead != 1" style="color: #5078cb;">未读</div>
             </td>
         </tr>
         </tbody>