Explorar el Código

Merge branch 'master' into dev

skyline hace 2 años
padre
commit
aa83511498

+ 1 - 1
mapper/src/main/java/com/kym/mapper/miniapp/UserMapper.java

@@ -39,5 +39,5 @@ public interface UserMapper extends MPJBaseMapper<User> {
             "WHERE u.id = ${userId} ")
     UserVo getMe(Long userId);
 
-    List<CustomUserVo> listUser(@Param("userId") Long userId);
+    List<CustomUserVo> listUser(@Param("list") List<Long> userId);
 }

+ 19 - 8
mapper/src/main/resources/mappers/miniapp/UserMapper.xml

@@ -41,8 +41,8 @@
     </sql>
 
 
-    <select id="listUser" resultMap="CustomUserMap" parameterType="java.lang.Long">
-        <if test="userId!=null">
+    <select id="listUser" resultMap="CustomUserMap" parameterType="java.util.List">
+        <if test="list!=null">
             SELECT
             t1.`id` user_id,
             t1.`username` user_name,
@@ -69,8 +69,12 @@
             SUM(IFNULL(discount_amount, 0)) discount_amount
             FROM
             t_charge_order
-            WHERE user_id = #{userId}
-            AND order_status = 1) t2
+            WHERE user_id in
+            <foreach collection="list" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            AND order_status = 1
+            GROUP BY user_id) t2
             ON t1.`id` = t2.`user_id`
             LEFT JOIN
             (SELECT
@@ -79,12 +83,19 @@
             SUM(IFNULL(amount, 0)) recharge_amount
             FROM
             t_wallet_detail
-            WHERE user_id = #{userId}
-            AND TYPE = 1 AND status = 1) t3
+            WHERE user_id in
+            <foreach collection="list" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+            AND TYPE = 1 AND status = 1
+            GROUP BY user_id) t3
             ON t1.`id` = t3.`user_id`
-            WHERE t1.id = ${userId}
+            WHERE t1.id in
+            <foreach collection="list" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
         </if>
-        <if test="userId==null">
+        <if test="list==null">
 
             SELECT
             user.`id` user_id,

+ 19 - 9
miniapp/src/main/java/com/kym/miniapp/jobs/StopChargeDelayJob.java

@@ -71,12 +71,16 @@ public class StopChargeDelayJob implements DelayService<DelayChargeOrder> {
         var delayList = delayChargeOrderList.stream().map(delay -> new DelayedItem<>(delay, delay.getEndTime())).toList();
         STOP_DELAY_QUEUE.addAll(delayList);
 
-        // 开启线程处理队列消息
-        executor.execute(() -> {
-            ThreadLocal<String> threadLocal = new ThreadLocal<>();
-            log.info("预约停止充电订单处理线程:{}", Thread.currentThread().getName());
-            DelayedItem<DelayChargeOrder> delayedItem;
-            while (true) {
+        processDelayedOrders();
+    }
+
+    private void processDelayedOrders() {
+        while (true) {
+            executor.execute(() -> {
+                ThreadLocal<String> threadLocal = ThreadLocal.withInitial(() -> null); // 初始化为空值,避免使用new ThreadLocal()
+                log.info("预约充电订单处理线程:{}", Thread.currentThread().getName());
+                DelayedItem<DelayChargeOrder> delayedItem;
+
                 try {
                     Thread.sleep(100);
                     delayedItem = STOP_DELAY_QUEUE.take();
@@ -105,12 +109,18 @@ public class StopChargeDelayJob implements DelayService<DelayChargeOrder> {
                 } finally {
                     threadLocal.remove();
                 }
+            });
+            if (!executor.isTerminated()) {
+                try {
+                    Thread.sleep(100);
+                } catch (InterruptedException e) {
+                    log.error("Delay queue processing interrupted.", e);
+                    return;
+                }
             }
-        });
-
+        }
     }
 
-
     @Override
     public boolean addToDelayQueue(DelayedItem<DelayChargeOrder> delayedItem) {
         return STOP_DELAY_QUEUE.add(delayedItem);

+ 4 - 3
service/src/main/java/com/kym/service/miniapp/impl/UserServiceImpl.java

@@ -36,6 +36,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -244,12 +245,12 @@ public class UserServiceImpl extends MPJBaseServiceImpl<UserMapper, User> implem
      */
     @Override
     public PageBean<CustomUserVo> listCustomUser(CommonQueryParam params) {
-        Long userId = null;
+        List<Long> userIds = null;
         if (!CommUtil.isEmptyOrNull(params.getMobilePhone())) {
-            userId = lambdaQuery().eq(User::getMobilePhone, params.getMobilePhone()).one().getId();
+            userIds = lambdaQuery().eq(User::getMobilePhone, params.getMobilePhone()).list().stream().map(User::getId).toList();
         }
         PageHelper.startPage(params.getPageNum(), params.getPageSize());
-        var result = baseMapper.listUser(userId);
+        var result = baseMapper.listUser(userIds);
         var page = new PageBean<>(result);
         // 用户余额,退款次数,退款金额
         var account = accountService.lambdaQuery().in(Account::getUserId, result.stream().map(CustomUserVo::getUserId).toList()).list();