浏览代码

修改在线客服

zhoufan 2 年之前
父节点
当前提交
babaac03d3

+ 2 - 2
zxkf-api/src/main/java/api/controller/online/MessageController.java

101
     @PostMapping("/connect/{userId}")
101
     @PostMapping("/connect/{userId}")
102
     public AjaxResult connect(@PathVariable String userId) {
102
     public AjaxResult connect(@PathVariable String userId) {
103
         String userCode = CurrentUser().getUserName();
103
         String userCode = CurrentUser().getUserName();
104
-        String conn = webSocket.kfconnectKh(userId, userCode);
104
+        String conn = webSocket.khExist(userCode,userId);
105
         if (StringHelper.isEmpty(conn)) {
105
         if (StringHelper.isEmpty(conn)) {
106
             LambdaQueryWrapper<Message> qw = new LambdaQueryWrapper();
106
             LambdaQueryWrapper<Message> qw = new LambdaQueryWrapper();
107
             qw.eq(Message::getKhUser, userId).eq(Message::getSend, 1).isNull(Message::getKfUser);
107
             qw.eq(Message::getKhUser, userId).eq(Message::getSend, 1).isNull(Message::getKfUser);
136
     @PostMapping("/upload/{userId}")
136
     @PostMapping("/upload/{userId}")
137
     public AjaxResult uploadFile(MultipartFile file,@PathVariable String userId) {
137
     public AjaxResult uploadFile(MultipartFile file,@PathVariable String userId) {
138
         String userCode = CurrentUser().getUserName();
138
         String userCode = CurrentUser().getUserName();
139
-        String en = webSocket.khExist(userId, userCode);
139
+        String en = webSocket.khExist(userCode,userId);
140
         if (StringHelper.isEmpty(en)) {
140
         if (StringHelper.isEmpty(en)) {
141
             String path = "files/online/" + DateHelper.getDate();
141
             String path = "files/online/" + DateHelper.getDate();
142
             String filePath = "";
142
             String filePath = "";

+ 39 - 35
zxkf-service/src/main/java/api/service/websocket/WebSocket.java

31
     @Autowired
31
     @Autowired
32
     private IMessageService messageService;
32
     private IMessageService messageService;
33
     @Autowired
33
     @Autowired
34
-    private ICustomerService customerService;
35
-    @Autowired
36
     private WxMpService wxMpService;
34
     private WxMpService wxMpService;
37
 
35
 
38
     private Session session;
36
     private Session session;
91
                 kfsessionPool.remove(userCode);
89
                 kfsessionPool.remove(userCode);
92
                 servicerQueue.remove(userCode);
90
                 servicerQueue.remove(userCode);
93
                 servicers.remove(userCode);
91
                 servicers.remove(userCode);
94
-                khkfs.values().removeIf(p->p.equals(userCode));
92
+                if(khkfs.values().contains(userCode)) {
93
+                    khkfs.values().removeIf(p -> p.equals(userCode));
94
+                }
95
             } else {
95
             } else {
96
                 customers.remove(userCode);
96
                 customers.remove(userCode);
97
                 String kf = khkfs.get(userCode);
97
                 String kf = khkfs.get(userCode);
145
                 MessageView mv1 = new MessageView();
145
                 MessageView mv1 = new MessageView();
146
                 mv1.setUser(userCode);
146
                 mv1.setUser(userCode);
147
 
147
 
148
-                String en = khExist(kh, userCode);
148
+                String en = khExist( userCode,kh);
149
                 if (StringHelper.isEmpty(en)) {
149
                 if (StringHelper.isEmpty(en)) {
150
                     exist = true;
150
                     exist = true;
151
                     msg.setKhUser(kh);
151
                     msg.setKhUser(kh);
184
                 String kf = khkfs.get(userCode);
184
                 String kf = khkfs.get(userCode);
185
                 if (StringHelper.isEmpty(kf)) {
185
                 if (StringHelper.isEmpty(kf)) {
186
                     kf = servicerQueue.poll();
186
                     kf = servicerQueue.poll();
187
-                    servicerQueue.add(kf);
188
-                    khkfs.put(userCode, kf);
187
+                    if(!StringHelper.isEmpty(kf)) {
188
+                        servicerQueue.add(kf);
189
+                        khkfs.put(userCode, kf);
190
+                    }
189
                 }
191
                 }
190
                 if (!StringHelper.isEmpty(kf)) {
192
                 if (!StringHelper.isEmpty(kf)) {
191
                     Session session1 = kfsessionPool.get(kf);
193
                     Session session1 = kfsessionPool.get(kf);
221
             kfsessionPool.remove(userCode);
223
             kfsessionPool.remove(userCode);
222
             servicerQueue.remove(userCode);
224
             servicerQueue.remove(userCode);
223
             servicers.remove(userCode);
225
             servicers.remove(userCode);
224
-            khkfs.values().removeIf(p->p.equals(userCode));
226
+            if(khkfs.values().contains(userCode)) {
227
+                khkfs.values().removeIf(p -> p.equals(userCode));
228
+            }
225
         } else {
229
         } else {
226
             customers.remove(userCode);
230
             customers.remove(userCode);
227
             String kf = khkfs.get(userCode);
231
             String kf = khkfs.get(userCode);
241
         error.printStackTrace();
245
         error.printStackTrace();
242
     }
246
     }
243
 
247
 
244
-    //客服连接留言客户
245
-    public String kfconnectKh(String kf,String kh){
246
-        if(khkfs.containsKey(kh)){
247
-            return "其他客服已接入";
248
-        }
249
-        if(!customers.containsKey(kh)){
250
-            return "客户不在线";
251
-        }
252
-        khkfs.put(kh,kf);
253
-        return "";
254
-    }
255
-
256
     //客户是否存在
248
     //客户是否存在
257
     public String khExist(String kf,String kh) {
249
     public String khExist(String kf,String kh) {
258
         String msg = "客户已下线";
250
         String msg = "客户已下线";
259
-        if (!StringHelper.isEmpty(kh)) {
251
+        if(!(servicers.containsKey(kf)&&kfsessionPool.containsKey(kf))){
252
+            msg = "未签入";
253
+        }
254
+        else if (!StringHelper.isEmpty(kh)) {
260
             if (customers.containsKey(kh)) {
255
             if (customers.containsKey(kh)) {
261
                 if (khkfs.containsKey(kh)) {
256
                 if (khkfs.containsKey(kh)) {
262
-                    if (khkfs.get(kh) == userCode) {
257
+                    if (khkfs.get(kh).equals(kf) ) {
263
                         if (customers.get(kh) == 2) {
258
                         if (customers.get(kh) == 2) {
264
                             msg = "";
259
                             msg = "";
265
                         } else {
260
                         } else {
271
                         msg = "其他客服已接入";
266
                         msg = "其他客服已接入";
272
                     }
267
                     }
273
                 } else {
268
                 } else {
274
-                    if (khsessionPool.containsKey(kh)) {
269
+                    if (customers.get(kh) == 2||khsessionPool.containsKey(kh)) {
275
                         khkfs.put(kh, kf);
270
                         khkfs.put(kh, kf);
276
                         msg = "";
271
                         msg = "";
277
                     }
272
                     }
278
                 }
273
                 }
279
             } else {
274
             } else {
280
                 LambdaQueryWrapper<Customer> qw = new LambdaQueryWrapper();
275
                 LambdaQueryWrapper<Customer> qw = new LambdaQueryWrapper();
281
-                qw.eq(Customer::getCustomerNo, kh);
282
-                Customer cus = customerService.getEntity(qw);
283
-                if (cus != null && cus.getType() == 2) {
284
-                    customers.put(kh, 2);
285
-                    msg = "";
276
+                qw.eq(Customer::getCustomerNo, kh).eq(Customer::getType,2);
277
+                if (SpringHelper.getBean(ICustomerService.class).exists(qw)) {
278
+                    Date dt=new Date();
279
+                    Date sj=new Date(dt.getTime()-(1000*60*60*48));
280
+                    LambdaQueryWrapper<Message> qw1 = new LambdaQueryWrapper();
281
+                    qw1.eq(Message::getKhUser,kh).eq(Message::getSend,2).gt(Message::getCreateTime,sj);
282
+                    if(SpringHelper.getBean(IMessageService.class).exists(qw1)) {
283
+                        customers.put(kh, 2);
284
+                        khkfs.put(kh, kf);
285
+                        msg = "";
286
+                    }
286
                 }
287
                 }
287
             }
288
             }
288
         } else {
289
         } else {
289
             msg = "客户不能为空";
290
             msg = "客户不能为空";
290
         }
291
         }
291
-
292
         return msg;
292
         return msg;
293
     }
293
     }
294
 
294
 
400
         String kf = khkfs.get(sendUser);
400
         String kf = khkfs.get(sendUser);
401
         if (StringHelper.isEmpty(kf)) {
401
         if (StringHelper.isEmpty(kf)) {
402
             kf = servicerQueue.poll();
402
             kf = servicerQueue.poll();
403
-            servicerQueue.add(kf);
404
-            khkfs.put(sendUser, kf);
403
+            if(!StringHelper.isEmpty(kf)) {
404
+                servicerQueue.add(kf);
405
+                khkfs.put(sendUser, kf);
406
+            }
405
         }
407
         }
406
         if (!StringHelper.isEmpty(kf)) {
408
         if (!StringHelper.isEmpty(kf)) {
407
             message.setKfUser(kf);
409
             message.setKfUser(kf);
419
         messageService.insert(message);
421
         messageService.insert(message);
420
     }
422
     }
421
 
423
 
422
-    public void addCustomer(String userCode,Integer source){
424
+    public void addCustomer(String userCode,Integer source) {
425
+        ICustomerService cusService = SpringHelper.getBean(ICustomerService.class);
423
         LambdaQueryWrapper<Customer> qw = new LambdaQueryWrapper();
426
         LambdaQueryWrapper<Customer> qw = new LambdaQueryWrapper();
424
-        qw.eq(Customer::getCustomerNo,userCode);
425
-        if(!customerService.exists(qw)){
426
-            Customer customer=new Customer();
427
+        qw.eq(Customer::getCustomerNo, userCode);
428
+        if (!cusService.exists(qw)) {
429
+            Customer customer = new Customer();
427
             customer.setCustomerNo(userCode);
430
             customer.setCustomerNo(userCode);
428
             customer.setType(Long.valueOf(source));
431
             customer.setType(Long.valueOf(source));
429
             customer.setFCreatetime(new Date());
432
             customer.setFCreatetime(new Date());
430
-            customerService.insert(customer);
433
+            customer.setFIsdelete(0L);
434
+            cusService.insert(customer);
431
         }
435
         }
432
     }
436
     }
433
 
437