Bladeren bron

性能优化

yq 3 jaren geleden
bovenliggende
commit
7291c89d4f

+ 4 - 0
src/main/java/com/usky/dxtop/model/Dept.java

@@ -78,5 +78,9 @@ public class Dept implements Serializable {
     @TableField(exist = false)
     private List<Dept> children = new ArrayList<>();
 
+    /**
+     * 是否成功
+     */
+    private Boolean isSuccess;
 
 }

+ 3 - 0
src/main/java/com/usky/dxtop/model/MsgLog.java

@@ -1,5 +1,7 @@
 package com.usky.dxtop.model;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -25,6 +27,7 @@ public class MsgLog implements Serializable {
     /**
      *  
      */
+    @TableId(type = IdType.INPUT)
     private Long id;
 
     /**

+ 8 - 0
src/main/java/com/usky/dxtop/model/Staff.java

@@ -136,5 +136,13 @@ public class Staff implements Serializable {
     @TableField(exist = false)
     private Long radioId;
 
+    /**
+     * 是否成功
+     */
+    private Boolean isSuccess;
+    /**
+     * 人脸是否同步成功
+      */
+    private Boolean faceSuccess;
 
 }

+ 0 - 7
src/main/java/com/usky/dxtop/service/MsgLogService.java

@@ -23,13 +23,6 @@ public interface MsgLogService extends IService<MsgLog> {
 
     void consumerSuccess(String consequence, Consumer<MsgLog> consumer);
 
-    /**
-     * 判断是否同步成功
-     * @param businessId
-     * @return
-     */
-    boolean isSuccess(String businessId);
-
 
     void addOrUpdate(MsgLog msgLog);
 }

+ 2 - 23
src/main/java/com/usky/dxtop/service/impl/MsgLogServiceImpl.java

@@ -38,15 +38,7 @@ public class MsgLogServiceImpl extends ServiceImpl<MsgLogMapper, MsgLog> impleme
         MsgLog msgLog = this.getById(msgId);
         if (this.isRepetition(msgLog)){
             boolean isSuccess = "1".equals(jsonObject.get("code").toString());
-            //第一次同步
-            if (null == msgLog.getIsSuccess()){
-                msgLog.setIsSuccess(isSuccess);
-            }else {
-                //如果以前成功过不做修改
-                if (!msgLog.getIsSuccess()){
-                    msgLog.setIsSuccess(isSuccess);
-                }
-            }
+            msgLog.setIsSuccess(isSuccess);
             msgLog.setUpdateTime(new Date());
             msgLog.setConsequence(consequence);
             msgLog.setMsgFlag(MsgLogStatus.CONSUMER_SUCCESS.getCode());
@@ -55,22 +47,9 @@ public class MsgLogServiceImpl extends ServiceImpl<MsgLogMapper, MsgLog> impleme
         }
     }
 
-    @Override
-    public boolean isSuccess(String businessId) {
-        LambdaQueryWrapper<MsgLog> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper
-                .eq(MsgLog::getIsSuccess,true)
-                .eq(MsgLog::getBusinessId,businessId);
-        int count = this.count(queryWrapper);
-        if (count > 0){
-            return true;
-        }else {
-            return false;
-        }
-    }
-
     @Override
     public void addOrUpdate(MsgLog msgLog) {
+        msgLog.setId(System.currentTimeMillis());
         msgLog.setCreateTime(new Date());
         LambdaQueryWrapper<MsgLog> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(MsgLog::getBusinessId,msgLog.getBusinessId());

+ 1 - 1
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -675,7 +675,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             order.setUserName(staff.getName());
             order.setUserPhone(staff.getContacts());
             //判断卡同步成功
-            Assert.check(msgLogService.isSuccess(String.format("%s%s",MsgLogBusinessCode.STAFF,staff.getSId())),"人员同步失败,请手动同步人员信息");
+            Assert.check(staff.getIsSuccess(),"人员未同步失败或同步失败,请手动同步人员信息");
         }else {
             if (null != order.getChannelId() && 0 != order.getChannelId()){
                 TopChannel topChannel = topChannelService.getById(order.getChannelId());

+ 14 - 1
src/main/java/com/usky/dxtop/service/listener/FaceMqListener.java

@@ -1,7 +1,11 @@
 package com.usky.dxtop.service.listener;
 
+import com.usky.dxtop.common.utils.StringUtils;
+import com.usky.dxtop.model.Staff;
 import com.usky.dxtop.service.MsgLogService;
+import com.usky.dxtop.service.StaffService;
 import com.usky.dxtop.service.config.rabbitmq.face.FaceProduceConfig;
+import com.usky.dxtop.service.constant.MsgLogBusinessCode;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
@@ -20,11 +24,20 @@ public class FaceMqListener {
 
     @Autowired
     private MsgLogService msgLogService;
+    @Autowired
+    private StaffService staffService;
     @RabbitListener(queues = FaceProduceConfig.NAME, containerFactory = FaceProduceConfig.LISTENER)
     public void dealDeclareMessage(Message message) {
         try {
             String s = new String(message.getBody(), StandardCharsets.UTF_8);
-            msgLogService.consumerSuccess(s,msgLog -> {});
+            msgLogService.consumerSuccess(s,msgLog -> {
+                String staffId = StringUtils.remove(msgLog.getBusinessId(), MsgLogBusinessCode.FACE);
+                Staff staff = staffService.getById(staffId);
+                if (null != staff && !staff.getFaceSuccess()){
+                    staff.setFaceSuccess(msgLog.getIsSuccess());
+                    staffService.updateById(staff);
+                }
+            });
         } catch (Exception e) {
             log.info("charge_trans_produce"+"异常信息:" + e.getMessage());
         } finally {

+ 14 - 1
src/main/java/com/usky/dxtop/service/listener/GroupMqListener.java

@@ -1,7 +1,11 @@
 package com.usky.dxtop.service.listener;
 
+import com.usky.dxtop.common.utils.StringUtils;
+import com.usky.dxtop.model.Dept;
+import com.usky.dxtop.service.DeptService;
 import com.usky.dxtop.service.MsgLogService;
 import com.usky.dxtop.service.config.rabbitmq.group.GroupProduceConfig;
+import com.usky.dxtop.service.constant.MsgLogBusinessCode;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
@@ -20,11 +24,20 @@ public class GroupMqListener {
 
     @Autowired
     private MsgLogService msgLogService;
+    @Autowired
+    private DeptService deptService;
     @RabbitListener(queues = GroupProduceConfig.NAME, containerFactory = GroupProduceConfig.LISTENER)
     public void dealDeclareMessage(Message message) {
         try {
             String s = new String(message.getBody(), StandardCharsets.UTF_8);
-            msgLogService.consumerSuccess(s,msgLog -> {});
+            msgLogService.consumerSuccess(s,msgLog -> {
+                String deptId = StringUtils.remove(msgLog.getBusinessId(), MsgLogBusinessCode.DEPT);
+                Dept dept = deptService.getById(deptId);
+                if (null != dept && !dept.getIsSuccess()){
+                    dept.setIsSuccess(msgLog.getIsSuccess());
+                    deptService.updateById(dept);
+                }
+            });
         } catch (Exception e) {
             log.info("charge_trans_produce"+"异常信息:" + e.getMessage());
         } finally {

+ 14 - 2
src/main/java/com/usky/dxtop/service/listener/PersonMqListener.java

@@ -1,7 +1,11 @@
 package com.usky.dxtop.service.listener;
 
+import com.usky.dxtop.common.utils.StringUtils;
+import com.usky.dxtop.model.Staff;
 import com.usky.dxtop.service.MsgLogService;
+import com.usky.dxtop.service.StaffService;
 import com.usky.dxtop.service.config.rabbitmq.profile.ProfileProduceConfig;
+import com.usky.dxtop.service.constant.MsgLogBusinessCode;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
@@ -19,12 +23,20 @@ import java.nio.charset.StandardCharsets;
 public class PersonMqListener {
     @Autowired
     private MsgLogService msgLogService;
-
+    @Autowired
+    private StaffService staffService;
     @RabbitListener(queues = ProfileProduceConfig.NAME, containerFactory = ProfileProduceConfig.LISTENER)
     public void dealDeclareMessage(Message message) {
         try {
             String s = new String(message.getBody(), StandardCharsets.UTF_8);
-            msgLogService.consumerSuccess(s,msgLog -> {});
+            msgLogService.consumerSuccess(s,msgLog -> {
+                String staffId = StringUtils.remove(msgLog.getBusinessId(), MsgLogBusinessCode.STAFF);
+                Staff staff = staffService.getById(staffId);
+                if (null != staff && !staff.getIsSuccess()){
+                    staff.setIsSuccess(msgLog.getIsSuccess());
+                    staffService.updateById(staff);
+                }
+            });
         } catch (Exception e) {
             log.info("charge_trans_produce"+"异常信息:" + e.getMessage());
         } finally {

+ 5 - 1
src/test/java/com/usky/dxtop/SmApiTest.java

@@ -1,5 +1,6 @@
 package com.usky.dxtop;
 
+import com.usky.dxtop.model.MsgLog;
 import com.usky.dxtop.service.MsgLogService;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -20,6 +21,9 @@ public class SmApiTest {
     private MsgLogService msgLogService;
     @Test
     public void test1(){
-
+        MsgLog msgLog = new MsgLog();
+        msgLog.setId(System.currentTimeMillis());
+        msgLog.setBusinessId("111");
+        msgLogService.addOrUpdate(msgLog);
     }
 }