diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java
index 5483aa1..988afaa 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersonDao.java
@@ -19,8 +19,4 @@
     TPerson findByUserid(String userid);
 
     Page<TPerson> findAllByNameContaining(String name, Pageable pageable);
-
-    TPerson findByUseridAndAndName(String userid,String name);
-
-    TPerson findByUseridAndIdtype(String userid,String idtype);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java
index b32f9cf..61f6fd6 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java
@@ -11,6 +11,7 @@
 import com.supwisdom.dlpay.system.bean.CitizenCardShowBean;
 import com.supwisdom.dlpay.system.bean.LevelBean;
 import com.supwisdom.dlpay.system.bean.PersonParamBean;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -74,6 +75,10 @@
   * 通过消费获得积分
   *
   * */
+  //消费进行积分处理
+  @Async
+  @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+  void consumePoints(String userid,Double amount,String billno) throws ParseException;
   //单次消费进行积分处理
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
   Boolean singleHandlePoints(String userid,Double amount,String billno) throws ParseException;
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java
index c65cd8c..27d45b2 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java
@@ -119,11 +119,15 @@
 
   @Override
   public PageResult getTPointsByname(LevelBean param) {
+    logger.error("通过卡号查询用户卡开始时间"+DateUtil.getNow());
     TCard tCard = cardDao.findCardByCardnoAndCardtype(param.getIdno(), ConstantUtil.CARDTYPE_CITIZENCARD);
+    logger.error("通过卡号查询用户卡结束时间"+DateUtil.getNow());
     if (tCard == null || StringUtil.isEmpty(tCard.getUserid())) {
       return new PageResult<>(99, "未查询到该用户的信息");
     }
-    TPerson tPerson = personDao.findByUseridAndAndName(tCard.getUserid(), param.getName());
+    logger.error("通过用户id和名称查询用户信息开始时间"+DateUtil.getNow());
+    TPerson tPerson = personDao.findByUserid(tCard.getUserid());
+    logger.error("通过用户id和名称查询用户信息结束时间"+DateUtil.getNow());
     if (tPerson == null) {
       return new PageResult<>(99, "未查询到该用户的信息");
     }
@@ -221,13 +225,20 @@
     consumePointsDao.deleteById(tConsumePoints.getId());
     return JsonResult.ok("成功");
   }
-
+  @Override
+  public void consumePoints(String userid, Double amount, String billno) throws ParseException {
+    singleHandlePoints(userid,amount,billno);
+    dayHandlePoints(userid,billno);
+    monthHandlePoints(userid,billno);
+  }
   @Override
   public Boolean singleHandlePoints(String userid, Double amount, String billno) throws ParseException {
     double rate = 1;
     // 1.根据当天日期判断当天是否该用户的特殊日期或者生日，得到实际倍率
     String nowDateTemp = DateUtil.getNow("yyyyMMdd");
-    TPerson person = personDao.findByUseridAndIdtype(userid, "idcard");
+    logger.error("单次消费查询用户信息开始时间"+DateUtil.getNow());
+    TPerson person = personDao.findByUserid(userid);
+    logger.error("单次消费查询用户信息结束时间"+DateUtil.getNow());
     if (person != null && !StringUtil.isEmpty(person.getIdno())) {
       String nowDate = DateUtil.getNow("MMdd");
       String brithdate = person.getIdno().substring(10, 14);
@@ -954,7 +965,9 @@
   @Override
   public JsonResult pointsCompensate() throws ParseException {
     String yesterday = DateUtil.getYesterdayDay();
+    logger.error("查询用户流水开始时间"+DateUtil.getNow());
     List<TPersondtl> tPersondtl = persondtlDao.findAllByTransdateAndReverseFlagAndStatusAndTradeflag("20200821", "none", "success","out");
+    logger.error("查询用户流水结束时间"+DateUtil.getNow());
     //消费流水补偿
     for(TPersondtl temp:tPersondtl){
       singleHandlePoints(temp.getUserid(),temp.getAmount(),temp.getRefno());
@@ -962,7 +975,9 @@
       monthHandlePoints(temp.getUserid(),temp.getRefno());
     }
     //退款流水补偿
+    logger.error("查询用户流水list开始时间"+DateUtil.getNow());
     List<TPersondtl> tPersondtlReve = persondtlDao.findAllByTransdateAndReverseFlagAndStatusAndTradeflag("20200821", "refund", "success","out");
+    logger.error("查询用户流水list结束时间"+DateUtil.getNow());
     for(TPersondtl temp:tPersondtlReve){
       //退款怎么确认，refno和支付时一样吗
       refundHandlePoints(temp.getUserid(),temp.getRefno());
@@ -972,12 +987,16 @@
 
   public List<TPersondtl> getShopdtlByUseridAndTransdateAndReverseFlagAndStatus(String userid,String transdate,String reverseFlag,String status){
     //TAccount account = accountDao.findByUserid(userid);
+    logger.error("查询用户流水list2开始时间"+DateUtil.getNow());
     List<TPersondtl> tShopdtls = persondtlDao.findAllByUseridAndTransdateAndReverseFlagAndStatusAndTradeflag(userid, transdate, reverseFlag, status,"out");
+    logger.error("查询用户流水list2结束时间"+DateUtil.getNow());
     return tShopdtls;
   }
   public List<TPersondtl> getShopdtlByUseridAndTransdateStartingWithAndReverseFlagAndStatus(String userid,String transdate,String reverseFlag,String status){
     //TAccount account = accountDao.findByUserid(userid);
+    logger.error("查询用户流水list3开始时间"+DateUtil.getNow());
     List<TPersondtl> tShopdtls = persondtlDao.findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatusAndTradeflag(userid, transdate, reverseFlag, status,"out");
+    logger.error("查询用户流水list3结束时间"+DateUtil.getNow());
     return tShopdtls;
   }
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index f489996..2df8b69 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -30,6 +30,7 @@
 import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
 import org.springframework.data.redis.serializer.StringRedisSerializer
 import org.springframework.http.client.SimpleClientHttpRequestFactory
+import org.springframework.scheduling.annotation.EnableAsync
 import org.springframework.scheduling.annotation.EnableScheduling
 import org.springframework.stereotype.Component
 import org.springframework.web.client.RestTemplate
@@ -39,6 +40,7 @@
 
 @Configuration
 @EnableRedisRepositories
+@EnableAsync
 class AppConfig {
 
     @Autowired
@@ -164,4 +166,4 @@
 
 fun main(args: Array<String>) {
     SpringApplication.run(PayApiApplication::class.java, * args)
-}
\ No newline at end of file
+}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
index dbb5681..e7cfca6 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
@@ -109,11 +109,7 @@
             }
             if(-it.personDtl.amount>=0) {
                 //支付成功  进行积分处理
-                pointsService.singleHandlePoints(it.personDtl.userid, -it.personDtl.amount, refno);
-                pointsService.dayHandlePoints(it.personDtl.userid, refno);
-                pointsService.monthHandlePoints(it.personDtl.userid, refno);
-               // pointsService.pointsOutdate();
-                pointsService.pointsCompensate();
+                pointsService.consumePoints(it.personDtl.userid, -it.personDtl.amount, refno);
             }else {
                 //退款之后进行积分处理
                 pointsService.refundHandlePoints(it.personDtl.userid, it.reverseRefno);
