Explorar o código

1、admin用户列表查询
2、简化分页对象

skyline %!s(int64=2) %!d(string=hai) anos
pai
achega
0767b5e453

+ 13 - 13
admin/src/main/java/com/kym/admin/controller/CustomController.java

@@ -2,12 +2,11 @@ package com.kym.admin.controller;
 
 
 import com.kym.common.R;
 import com.kym.common.R;
 import com.kym.common.annotation.SysLog;
 import com.kym.common.annotation.SysLog;
-import com.kym.entity.admin.queryParams.CustomChargeOrdersQueryParam;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
+import com.kym.entity.admin.queryParams.CustomChargeOrdersQueryParam;
 import com.kym.service.miniapp.ChargeOrderService;
 import com.kym.service.miniapp.ChargeOrderService;
 import com.kym.service.miniapp.UserService;
 import com.kym.service.miniapp.UserService;
 import com.kym.service.miniapp.WalletDetailService;
 import com.kym.service.miniapp.WalletDetailService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 /**
 /**
@@ -20,19 +19,22 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/custom")
 @RequestMapping("/custom")
 public class CustomController {
 public class CustomController {
 
 
-    @Autowired
-    private UserService customUserService;
-    @Autowired
-    private ChargeOrderService customChargeOrders;
-    @Autowired
-    private WalletDetailService customWalletDetailService;
+    private final UserService customUserService;
+    private final ChargeOrderService customChargeOrders;
+    private final WalletDetailService customWalletDetailService;
+
+    public CustomController(UserService customUserService, ChargeOrderService customChargeOrders, WalletDetailService customWalletDetailService) {
+        this.customUserService = customUserService;
+        this.customChargeOrders = customChargeOrders;
+        this.customWalletDetailService = customWalletDetailService;
+    }
 
 
     // TODO: 2023-08-18 用户信息列表(基本信息,余额)
     // TODO: 2023-08-18 用户信息列表(基本信息,余额)
 
 
 
 
     @SysLog("查询用户列表")
     @SysLog("查询用户列表")
     @GetMapping("/listUser")
     @GetMapping("/listUser")
-    public R listUser(CommonQueryParam params,
+    public R listUser(@ModelAttribute CommonQueryParam params,
                       @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                       @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
                       @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
         return R.success(customUserService.listCustomUser(params, pageNum, pageSize));
         return R.success(customUserService.listCustomUser(params, pageNum, pageSize));
@@ -56,11 +58,9 @@ public class CustomController {
     @GetMapping("/listRecharge")
     @GetMapping("/listRecharge")
     public R listRecharge(CommonQueryParam params,
     public R listRecharge(CommonQueryParam params,
                           @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
                           @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
-                          @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize){
-        return R.success(customWalletDetailService.listRecharge(params,pageNum,pageSize));
+                          @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        return R.success(customWalletDetailService.listRecharge(params, pageNum, pageSize));
     }
     }
 
 
 
 
-
-
 }
 }

+ 2 - 1
admin/src/main/resources/application.yml

@@ -74,7 +74,7 @@ pagehelper:
   reasonable: false
   reasonable: false
   defaultCount: true # 分页插件默认参数支持 default-count 形式,自定义扩展的参数,必须大小写一致
   defaultCount: true # 分页插件默认参数支持 default-count 形式,自定义扩展的参数,必须大小写一致
 mybatis-plus:
 mybatis-plus:
-  mapper-locations:  classpath:mappers/admin/*.xml
+  mapper-locations: classpath:mappers/**/*.xml
   type-aliases-package: com.kym.entity.admin
   type-aliases-package: com.kym.entity.admin
 
 
 sa-token:
 sa-token:
@@ -122,6 +122,7 @@ upload:
   file:
   file:
     storage: file_storage  #文件存放地址
     storage: file_storage  #文件存放地址
     size: 20  #最大上传Mb
     size: 20  #最大上传Mb
+    url: https://static.kuaiyuman.cn/
 
 
 oss:
 oss:
   endpoint: oss-cn-shenzhen.aliyuncs.com
   endpoint: oss-cn-shenzhen.aliyuncs.com

+ 5 - 0
entity/pom.xml

@@ -60,6 +60,11 @@
             <version>29.2</version>
             <version>29.2</version>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>1.4.7</version>
+        </dependency>
 
 
     </dependencies>
     </dependencies>
     <!-- 空间处理这几个依赖单独仓库下载 -->
     <!-- 空间处理这几个依赖单独仓库下载 -->

+ 28 - 0
entity/src/main/java/com/kym/entity/admin/vo/CustomUserVo.java

@@ -0,0 +1,28 @@
+package com.kym.entity.admin.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author skyline
+ * @description
+ * @date 2023-08-30 14:48
+ */
+@Data
+public class CustomUserVo {
+    private Long userId;
+    private String mobilePhone;
+    private Integer status;
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime registerTime;
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime lastLoginTime;
+    private Integer rechargeTimes;
+    private Integer rechargeAmount;
+    private Integer chargeTimes;
+    private Double totalPower;
+    private Integer totalMoney;
+
+}

+ 71 - 0
entity/src/main/java/com/kym/entity/common/PageBean.java

@@ -0,0 +1,71 @@
+package com.kym.entity.common;
+
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageSerializable;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author skyline
+ * @description 精简分页对象
+ * @date 2023-08-30 15:01
+ */
+@Data
+@NoArgsConstructor
+public class PageBean<T> extends PageSerializable<T> {
+    public static final int DEFAULT_NAVIGATE_PAGES = 8;
+    /**
+     * 当前页
+     */
+    private int pageNum;
+    /**
+     * 每页的数量
+     */
+    private int pageSize;
+    /**
+     * 当前页的数量
+     */
+    private int size;
+
+    /**
+     * 总页数
+     */
+    private int pages;
+
+    /**
+     * 包装Page对象
+     *
+     * @param list
+     */
+    public PageBean(List<? extends T> list) {
+        this(list, DEFAULT_NAVIGATE_PAGES);
+    }
+
+    /**
+     * 包装Page对象
+     *
+     * @param list          page结果
+     * @param navigatePages 页码数量
+     */
+    public PageBean(List<? extends T> list, int navigatePages) {
+        super(list);
+        if (list instanceof Page) {
+            Page page = (Page) list;
+            this.pageNum = page.getPageNum();
+            this.pageSize = page.getPageSize();
+
+            this.pages = page.getPages();
+            this.size = page.size();
+            //由于结果是>startRow的,所以实际的需要+1
+        } else if (list instanceof Collection) {
+            this.pageNum = 1;
+            this.pageSize = list.size();
+
+            this.pages = this.pageSize > 0 ? 1 : 0;
+            this.size = list.size();
+        }
+    }
+}

+ 0 - 6
mapper/pom.xml

@@ -59,12 +59,6 @@
             <scope>runtime</scope>
             <scope>runtime</scope>
         </dependency>
         </dependency>
 
 
-        <dependency>
-            <groupId>com.github.pagehelper</groupId>
-            <artifactId>pagehelper-spring-boot-starter</artifactId>
-            <version>1.4.7</version>
-        </dependency>
-
     </dependencies>
     </dependencies>
 
 
 </project>
 </project>

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

@@ -1,10 +1,14 @@
 package com.kym.mapper.miniapp;
 package com.kym.mapper.miniapp;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kym.entity.admin.vo.CustomUserVo;
 import com.kym.entity.miniapp.User;
 import com.kym.entity.miniapp.User;
 import com.kym.entity.miniapp.vo.UserVo;
 import com.kym.entity.miniapp.vo.UserVo;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Select;
 
 
+import java.util.List;
+
 /**
 /**
  * <p>
  * <p>
  * 用户表 Mapper 接口
  * 用户表 Mapper 接口
@@ -33,4 +37,5 @@ public interface UserMapper extends BaseMapper<User> {
             "WHERE u.id = ${userId} ")
             "WHERE u.id = ${userId} ")
     UserVo getMe(Long userId);
     UserVo getMe(Long userId);
 
 
+    List<CustomUserVo> listUser(@Param("userId") Long userId);
 }
 }

+ 127 - 13
mapper/src/main/resources/mappers/miniapp/UserMapper.xml

@@ -4,19 +4,32 @@
 
 
     <!-- 通用查询映射结果 -->
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.kym.entity.miniapp.User">
     <resultMap id="BaseResultMap" type="com.kym.entity.miniapp.User">
-        <id column="id" property="id" />
-        <result column="openid" property="openid" />
-        <result column="unionid" property="unionid" />
-        <result column="username" property="username" />
-        <result column="password" property="password" />
-        <result column="gender" property="gender" />
-        <result column="nickname" property="nickname" />
-        <result column="mobile_phone" property="mobilePhone" />
-        <result column="avatar" property="avatar" />
-        <result column="status" property="status" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="last_login_time" property="lastLoginTime" />
+        <id column="id" property="id"/>
+        <result column="openid" property="openid"/>
+        <result column="unionid" property="unionid"/>
+        <result column="username" property="username"/>
+        <result column="password" property="password"/>
+        <result column="gender" property="gender"/>
+        <result column="nickname" property="nickname"/>
+        <result column="mobile_phone" property="mobilePhone"/>
+        <result column="avatar" property="avatar"/>
+        <result column="status" property="status"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="last_login_time" property="lastLoginTime"/>
+    </resultMap>
+
+    <resultMap id="CustomUserMap" type="com.kym.entity.admin.vo.CustomUserVo">
+        <id column="user_id" property="userId"/>
+        <result column="mobile_phone" property="mobilePhone"/>
+        <result column="status" property="status"/>
+        <result column="register_time" property="registerTime"/>
+        <result column="last_login_time" property="lastLoginTime"/>
+        <result column="recharge_times" property="rechargeTimes"/>
+        <result column="recharge_amount" property="rechargeAmount"/>
+        <result column="charge_times" property="chargeTimes"/>
+        <result column="total_power" property="totalPower"/>
+        <result column="total_money" property="totalMoney"/>
     </resultMap>
     </resultMap>
 
 
     <!-- 通用查询结果列 -->
     <!-- 通用查询结果列 -->
@@ -24,4 +37,105 @@
         id, openid, unionid, username, password, gender, nickname, mobile_phone, avatar, status, create_time, update_time, last_login_time
         id, openid, unionid, username, password, gender, nickname, mobile_phone, avatar, status, create_time, update_time, last_login_time
     </sql>
     </sql>
 
 
+
+    <select id="listUser" resultMap="CustomUserMap" parameterType="java.lang.Long">
+        <if test="userId!=null">
+            SELECT
+            t1.`id` user_id,
+            t1.`mobile_phone`,
+            t1.`status`,
+            t1.`create_time` register_time,
+            t1.`last_login_time`,
+            t3.recharge_times,
+            t3.recharge_amount,
+            t2.charge_times,
+            t2.total_power,
+            t2.total_money
+            FROM
+            t_user t1
+            LEFT JOIN
+            (SELECT
+            user_id,
+            COUNT(IFNULL(1, 0)) charge_times,
+            SUM(IFNULL(total_power, 0)) total_power,
+            SUM(IFNULL(total_money, 0)) total_money
+            FROM
+            t_charge_order
+            WHERE user_id = ${userId}
+            AND order_status = 1) t2
+            ON t1.`id` = t2.`user_id`
+            LEFT JOIN
+            (SELECT
+            user_id,
+            COUNT(IFNULL(1, 0)) recharge_times,
+            SUM(IFNULL(amount, 0)) recharge_amount
+            FROM
+            t_wallet_detail
+            WHERE user_id = ${userId}
+            AND TYPE = 1) t3
+            ON t1.`id` = t3.`user_id`
+            WHERE t1.id = ${userId}
+        </if>
+        <if test="userId==null">
+
+            SELECT user.`id` user_id,
+            user.`mobile_phone`,
+            user.`status`,
+            user.`create_time` register_time,
+            user.`last_login_time`,
+            t.recharge_times,
+            t.recharge_amount,
+            t1.charge_times,
+            t1.total_power,
+            t1.total_money
+            FROM t_user `user`
+            LEFT JOIN
+            (SELECT user_id,
+            COUNT(
+            CASE
+            WHEN wd.`type` = 1
+            THEN 1
+            ELSE NULL
+            END
+            ) recharge_times,
+            SUM(
+            CASE
+            WHEN wd.`type` = 1
+            THEN wd.`amount`
+            ELSE 0
+            END
+            ) recharge_amount
+            FROM t_wallet_detail wd
+            GROUP BY wd.user_id) t
+            ON t.user_id = user.id
+            LEFT JOIN
+            (SELECT user_id,
+            COUNT(
+            CASE
+            WHEN o.`order_status` = 1
+            THEN 1
+            ELSE NULL
+            END
+            ) charge_times,
+            SUM(
+            CASE
+            WHEN o.`total_power` > 0
+            THEN o.`total_power`
+            ELSE 0
+            END
+            ) total_power,
+            SUM(
+            CASE
+            WHEN o.`total_money` > 0
+            THEN o.`total_money`
+            ELSE 0
+            END
+            ) total_money
+            FROM t_charge_order o
+            GROUP BY o.user_id) t1
+            ON t1.user_id = user.id
+            ORDER BY user.id DESC
+        </if>
+    </select>
+
 </mapper>
 </mapper>

+ 1 - 1
miniapp/src/main/java/com/kym/miniapp/controller/UserController.java

@@ -43,7 +43,7 @@ public class UserController {
      */
      */
     @PostMapping("/wxLogin")
     @PostMapping("/wxLogin")
     public R login(@RequestBody @Validated WxLoginParams params) {
     public R login(@RequestBody @Validated WxLoginParams params) {
-        return userService.wxlogin(params);
+        return userService.wxLogin(params);
     }
     }
 
 
     /**
     /**

+ 3 - 0
service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java

@@ -59,6 +59,8 @@ public class EnNotifyServiceImpl implements EnNotifyService {
         this.redisTemplate = redisTemplate;
         this.redisTemplate = redisTemplate;
     }
     }
 
 
+
+
     /**
     /**
      * EN+ 充电站设备状态变化推送
      * EN+ 充电站设备状态变化推送
      *
      *
@@ -67,6 +69,7 @@ public class EnNotifyServiceImpl implements EnNotifyService {
      */
      */
     @Override
     @Override
     public String handleNotificationStationStatus(JSONObject json) {
     public String handleNotificationStationStatus(JSONObject json) {
+        // TODO: 2023-08-30 注意!!!EN+分布式事务BUG导致无法接收到离线状态(0)的推送,待对方解决后再开发测试
         var data = enPlusService.signValidation(json);
         var data = enPlusService.signValidation(json);
         LOGGER.info("【EN+推送】收到充电桩设备状态变化推送:\n{},解密数据:\\n{}\"", json, data);
         LOGGER.info("【EN+推送】收到充电桩设备状态变化推送:\n{},解密数据:\\n{}\"", json, data);
         // TODO: 2023-08-21 更新数据库中设备的状态
         // TODO: 2023-08-21 更新数据库中设备的状态

+ 5 - 4
service/src/main/java/com/kym/service/miniapp/UserService.java

@@ -1,9 +1,10 @@
 package com.kym.service.miniapp;
 package com.kym.service.miniapp;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.github.pagehelper.PageInfo;
 import com.kym.common.R;
 import com.kym.common.R;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
+import com.kym.entity.admin.vo.CustomUserVo;
+import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.User;
 import com.kym.entity.miniapp.User;
 import com.kym.entity.miniapp.params.WxLoginParams;
 import com.kym.entity.miniapp.params.WxLoginParams;
 import com.kym.entity.miniapp.vo.UserVo;
 import com.kym.entity.miniapp.vo.UserVo;
@@ -24,9 +25,9 @@ public interface UserService extends IService<User> {
 
 
     void updateUser(UserVo userVo);
     void updateUser(UserVo userVo);
 
 
-    PageInfo<UserVo> listUserVo(Integer pageNum, Integer pageSize);
+    PageBean<UserVo> listUserVo(Integer pageNum, Integer pageSize);
 
 
-    R wxlogin(WxLoginParams params);
+    R wxLogin(WxLoginParams params);
 
 
-    PageInfo<UserVo> listCustomUser(CommonQueryParam params, Integer pageNum, Integer pageSize);
+    PageBean<CustomUserVo> listCustomUser(CommonQueryParam params, Integer pageNum, Integer pageSize);
 }
 }

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

@@ -6,9 +6,9 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.kym.common.IQuery;
 import com.kym.common.IQuery;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.CommUtil;
+import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.DataDict;
 import com.kym.entity.miniapp.DataDict;
 import com.kym.mapper.miniapp.DataDictMapper;
 import com.kym.mapper.miniapp.DataDictMapper;
 import com.kym.service.miniapp.DataDictService;
 import com.kym.service.miniapp.DataDictService;
@@ -36,7 +36,7 @@ public class DataDictServiceImpl extends ServiceImpl<DataDictMapper, DataDict> i
     public Object list(IQuery<DataDict> query) {
     public Object list(IQuery<DataDict> query) {
         PageHelper.startPage(query.pageNum, query.pageSize);
         PageHelper.startPage(query.pageNum, query.pageSize);
         List<DataDict> list = list();
         List<DataDict> list = list();
-        return new PageInfo<>(list);
+        return new PageBean<>(list);
     }
     }
 
 
 
 
@@ -45,11 +45,10 @@ public class DataDictServiceImpl extends ServiceImpl<DataDictMapper, DataDict> i
         QueryChainWrapper<DataDict> wrapper = getWrapper(query.query, DataDict.class);
         QueryChainWrapper<DataDict> wrapper = getWrapper(query.query, DataDict.class);
         Long count = wrapper.count();
         Long count = wrapper.count();
         List<DataDict> list = wrapper.list();
         List<DataDict> list = wrapper.list();
-        return IQuery.newPageBean(count,list);
+        return IQuery.newPageBean(count, list);
     }
     }
 
 
 
 
-
     public <T> QueryChainWrapper<T> getWrapper(Object query, Class<T> clz) {
     public <T> QueryChainWrapper<T> getWrapper(Object query, Class<T> clz) {
         QueryChainWrapper<T> wrapper = new QueryChainWrapper<>(clz);
         QueryChainWrapper<T> wrapper = new QueryChainWrapper<>(clz);
         if (null == query) {
         if (null == query) {

+ 21 - 13
service/src/main/java/com/kym/service/miniapp/impl/UserServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.kym.common.R;
 import com.kym.common.R;
 import com.kym.common.config.WxConfig;
 import com.kym.common.config.WxConfig;
 import com.kym.common.constant.ResponseEnum;
 import com.kym.common.constant.ResponseEnum;
@@ -14,6 +13,8 @@ import com.kym.common.exception.BusinessException;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.CommUtil;
 import com.kym.common.utils.HttpUtil;
 import com.kym.common.utils.HttpUtil;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
 import com.kym.entity.admin.queryParams.CommonQueryParam;
+import com.kym.entity.admin.vo.CustomUserVo;
+import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.Account;
 import com.kym.entity.miniapp.Account;
 import com.kym.entity.miniapp.Cars;
 import com.kym.entity.miniapp.Cars;
 import com.kym.entity.miniapp.User;
 import com.kym.entity.miniapp.User;
@@ -28,7 +29,6 @@ import lombok.SneakyThrows;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
@@ -50,19 +50,23 @@ import static java.util.Map.of;
 @DS("db-miniapp")
 @DS("db-miniapp")
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
 public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
     private static final Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class);
     private static final Logger LOGGER = LoggerFactory.getLogger(UserServiceImpl.class);
-    @Autowired
+    final
     WxConfig wxConfig;
     WxConfig wxConfig;
-    @Autowired
-    private AccountService accountService;
+    private final AccountService accountService;
 
 
-    @Autowired
-    private CarsService carsService;
+    private final CarsService carsService;
+
+    public UserServiceImpl(WxConfig wxConfig, AccountService accountService, CarsService carsService) {
+        this.wxConfig = wxConfig;
+        this.accountService = accountService;
+        this.carsService = carsService;
+    }
 
 
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     @SneakyThrows
     @SneakyThrows
     @Override
     @Override
-    public R wxlogin(WxLoginParams params) {
+    public R wxLogin(WxLoginParams params) {
         // 微信登录
         // 微信登录
         var json = HttpUtil.getJson(WxApi.WX_MP_LOGIN.getApi(), Map.of(
         var json = HttpUtil.getJson(WxApi.WX_MP_LOGIN.getApi(), Map.of(
                 "appid", wxConfig.getAppid(),
                 "appid", wxConfig.getAppid(),
@@ -186,14 +190,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     }
     }
 
 
     @Override
     @Override
-    public PageInfo<UserVo> listUserVo(Integer pageNum, Integer pageSize) {
+    public PageBean<UserVo> listUserVo(Integer pageNum, Integer pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         PageHelper.startPage(pageNum, pageSize);
         var userVoList = list().stream().map(user -> {
         var userVoList = list().stream().map(user -> {
             var userVo = new UserVo();
             var userVo = new UserVo();
             BeanUtils.copyProperties(user, userVo);
             BeanUtils.copyProperties(user, userVo);
             return userVo;
             return userVo;
         }).collect(Collectors.toList());
         }).collect(Collectors.toList());
-        return new PageInfo<>(userVoList);
+        return new PageBean<>(userVoList);
     }
     }
 
 
 
 
@@ -206,10 +210,14 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public PageInfo<UserVo> listCustomUser(CommonQueryParam params, Integer pageNum, Integer pageSize) {
-        // TODO: 2023-08-22 查询用户信息列表(id,手机号,用户名,昵称,状态,注册时间,最近登录时间,充值次数,充值总金额,余额,充电次数,总充电电量,总充电金额)
+    public PageBean<CustomUserVo> listCustomUser(CommonQueryParam params, Integer pageNum, Integer pageSize) {
+        Long userId = null;
+        if (!CommUtil.isEmptyOrNull(params.getMobilePhone())) {
+            userId = lambdaQuery().eq(User::getMobilePhone, params.getMobilePhone()).one().getId();
+        }
         PageHelper.startPage(pageNum, pageSize);
         PageHelper.startPage(pageNum, pageSize);
-        return null;
+        var result = baseMapper.listUser(userId);
+        return new PageBean<>(result);
     }
     }