diff --git a/src/main/java/com/sczx/store/controller/WalletController.java b/src/main/java/com/sczx/store/controller/WalletController.java
new file mode 100644
index 0000000..e5997f8
--- /dev/null
+++ b/src/main/java/com/sczx/store/controller/WalletController.java
@@ -0,0 +1,47 @@
+package com.sczx.store.controller;
+
+
+import com.sczx.store.common.Result;
+import com.sczx.store.dto.BaseWalletChangeDTO;
+import com.sczx.store.dto.BaseWalletDTO;
+import com.sczx.store.dto.WalletChangeQueryReq;
+import com.sczx.store.service.IWalletService;
+import com.sczx.store.util.JwtUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ *
+ * 钱包信息 前端控制器
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-16 17:45:46
+ */
+@Api(value = "钱包控制器", tags = "钱包")
+@RestController
+@RequestMapping("/wallet")
+public class WalletController {
+
+ @Autowired
+ private IWalletService walletService;
+
+ @Autowired
+ private JwtUtil jwtUtil;
+
+ @ApiOperation(value = "获取钱包信息", notes = "获取钱包信息")
+ @GetMapping("/walletInfo")
+ public Result walletInfo(@RequestParam(value = "userId") Long userId) {
+ return Result.ok(walletService.getWalletInfo(userId));
+ }
+
+ @ApiOperation(value = "获取钱包变更信息列表", notes = "获取钱包变更信息列表")
+ @PostMapping("/listWalletChange")
+ public Result> listWalletChange(@RequestBody WalletChangeQueryReq baseWalletChangeQueryReq) {
+ return Result.ok(walletService.listWalletChange(baseWalletChangeQueryReq));
+ }
+}
diff --git a/src/main/java/com/sczx/store/convert/BaseWalletChangeConvert.java b/src/main/java/com/sczx/store/convert/BaseWalletChangeConvert.java
new file mode 100644
index 0000000..ae383e5
--- /dev/null
+++ b/src/main/java/com/sczx/store/convert/BaseWalletChangeConvert.java
@@ -0,0 +1,17 @@
+package com.sczx.store.convert;
+
+
+import com.sczx.store.dto.BaseWalletChangeDTO;
+import com.sczx.store.po.BaseWalletChangePO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface BaseWalletChangeConvert {
+ BaseWalletChangeConvert INSTANCE = Mappers.getMapper(BaseWalletChangeConvert.class);
+ BaseWalletChangeDTO po2Dto(BaseWalletChangePO baseWalletPO);
+ BaseWalletChangePO dto2Po(BaseWalletChangeDTO baseWalletDTO);
+ List pos2Dtos(List baseWalletPOs);
+}
diff --git a/src/main/java/com/sczx/store/convert/BaseWalletConvert.java b/src/main/java/com/sczx/store/convert/BaseWalletConvert.java
new file mode 100644
index 0000000..ef03f7b
--- /dev/null
+++ b/src/main/java/com/sczx/store/convert/BaseWalletConvert.java
@@ -0,0 +1,13 @@
+package com.sczx.store.convert;
+
+
+import com.sczx.store.dto.BaseWalletDTO;
+import com.sczx.store.po.BaseWalletPO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface BaseWalletConvert {
+ BaseWalletConvert INSTANCE = Mappers.getMapper(BaseWalletConvert.class);
+ BaseWalletDTO po2Dto(BaseWalletPO baseWalletPO);
+}
diff --git a/src/main/java/com/sczx/store/dto/BaseWalletChangeDTO.java b/src/main/java/com/sczx/store/dto/BaseWalletChangeDTO.java
new file mode 100644
index 0000000..dfa9004
--- /dev/null
+++ b/src/main/java/com/sczx/store/dto/BaseWalletChangeDTO.java
@@ -0,0 +1,37 @@
+package com.sczx.store.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@ApiModel(value = "BaseWalletChangeDTO对象", description = "钱包变更记录")
+@Data
+public class BaseWalletChangeDTO {
+ @ApiModelProperty("id主键")
+ private Long id;
+
+ @ApiModelProperty("用户id")
+ private Long userId;
+
+ @ApiModelProperty("变更类型")
+ private String changeType;
+
+ @ApiModelProperty("支付类型")
+ private String payType;
+
+ @ApiModelProperty("变更时间")
+ private LocalDateTime changeTime;
+
+ @ApiModelProperty("变更金额(元)")
+ private BigDecimal changeAmount;
+
+ @ApiModelProperty("引荐订单")
+ private String referralOrderNo;
+
+ @ApiModelProperty("审核状态")
+ private String changeStatus;
+
+}
diff --git a/src/main/java/com/sczx/store/dto/BaseWalletDTO.java b/src/main/java/com/sczx/store/dto/BaseWalletDTO.java
new file mode 100644
index 0000000..31079e2
--- /dev/null
+++ b/src/main/java/com/sczx/store/dto/BaseWalletDTO.java
@@ -0,0 +1,30 @@
+package com.sczx.store.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@ApiModel(value = "BaseWalletDTO对象", description = "钱包信息")
+@Data
+public class BaseWalletDTO {
+
+ @ApiModelProperty("用户id")
+ private Long userId;
+
+ @ApiModelProperty("用户名")
+ private String userName;
+
+ @ApiModelProperty("手机号")
+ private String phoneNumber;
+
+ @ApiModelProperty("余额(元)")
+ private BigDecimal balance;
+
+ @ApiModelProperty("可用金额(元)")
+ private BigDecimal availableAmount;
+
+ @ApiModelProperty("冻结金额(元)")
+ private BigDecimal freezeAmount;
+}
diff --git a/src/main/java/com/sczx/store/dto/WalletChangeQueryReq.java b/src/main/java/com/sczx/store/dto/WalletChangeQueryReq.java
new file mode 100644
index 0000000..efb5cf6
--- /dev/null
+++ b/src/main/java/com/sczx/store/dto/WalletChangeQueryReq.java
@@ -0,0 +1,16 @@
+package com.sczx.store.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel(value = "钱包变更记录查询请求对象")
+@Data
+public class WalletChangeQueryReq {
+
+ @ApiModelProperty("门店id")
+ private Long userId;
+
+ @ApiModelProperty("变更类型")
+ private String changeType;
+}
diff --git a/src/main/java/com/sczx/store/mapper/BaseWalletChangeMapper.java b/src/main/java/com/sczx/store/mapper/BaseWalletChangeMapper.java
new file mode 100644
index 0000000..8a79fd3
--- /dev/null
+++ b/src/main/java/com/sczx/store/mapper/BaseWalletChangeMapper.java
@@ -0,0 +1,16 @@
+package com.sczx.store.mapper;
+
+import com.sczx.store.po.BaseWalletChangePO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 钱包变更记录 Mapper 接口
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:52:11
+ */
+public interface BaseWalletChangeMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/sczx/store/mapper/BaseWalletMapper.java b/src/main/java/com/sczx/store/mapper/BaseWalletMapper.java
new file mode 100644
index 0000000..0846418
--- /dev/null
+++ b/src/main/java/com/sczx/store/mapper/BaseWalletMapper.java
@@ -0,0 +1,16 @@
+package com.sczx.store.mapper;
+
+import com.sczx.store.po.BaseWalletPO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 钱包信息 Mapper 接口
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:48:45
+ */
+public interface BaseWalletMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/sczx/store/po/BaseWalletChangePO.java b/src/main/java/com/sczx/store/po/BaseWalletChangePO.java
new file mode 100644
index 0000000..b3fc3ed
--- /dev/null
+++ b/src/main/java/com/sczx/store/po/BaseWalletChangePO.java
@@ -0,0 +1,66 @@
+package com.sczx.store.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 钱包变更记录
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:52:11
+ */
+@Getter
+@Setter
+@TableName("zc_base_wallet_change")
+@ApiModel(value = "BaseWalletChangePO对象", description = "钱包变更记录")
+public class BaseWalletChangePO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("id主键")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("用户id")
+ private Long userId;
+
+ @ApiModelProperty("变更类型")
+ private String changeType;
+
+ @ApiModelProperty("支付类型")
+ private String payType;
+
+ @ApiModelProperty("变更时间")
+ private LocalDateTime changeTime;
+
+ @ApiModelProperty("变更金额(元)")
+ private BigDecimal changeAmount;
+
+ @ApiModelProperty("引荐订单")
+ private String referralOrderNo;
+
+ @ApiModelProperty("审核状态")
+ private String changeStatus;
+
+ @ApiModelProperty("删除标志(0代表存在 2代表删除)")
+ private String delFlag;
+
+ @ApiModelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("更新时间")
+ private LocalDateTime updateTime;
+
+
+}
diff --git a/src/main/java/com/sczx/store/po/BaseWalletPO.java b/src/main/java/com/sczx/store/po/BaseWalletPO.java
new file mode 100644
index 0000000..d9a33fd
--- /dev/null
+++ b/src/main/java/com/sczx/store/po/BaseWalletPO.java
@@ -0,0 +1,62 @@
+package com.sczx.store.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 钱包信息
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:48:45
+ */
+@Getter
+@Setter
+@TableName("zc_base_wallet")
+@ApiModel(value = "BaseWalletPO对象", description = "钱包信息")
+public class BaseWalletPO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("用户id主键")
+ @TableId(value = "user_id", type = IdType.AUTO)
+ private Long userId;
+
+ @ApiModelProperty("用户名")
+ private String userName;
+
+ @ApiModelProperty("手机号")
+ private String phoneNumber;
+
+ @ApiModelProperty("余额(元)")
+ private BigDecimal balance;
+
+ @ApiModelProperty("可用金额(元)")
+ private BigDecimal availableAmount;
+
+ @ApiModelProperty("冻结金额(元)")
+ private BigDecimal freezeAmount;
+
+ @ApiModelProperty("钱包类型0门店1用户")
+ private Integer walletType;
+
+ @ApiModelProperty("删除标志(0代表存在 2代表删除)")
+ private String delFlag;
+
+ @ApiModelProperty("创建时间")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("更新时间")
+ private LocalDateTime updateTime;
+
+
+}
diff --git a/src/main/java/com/sczx/store/repository/BaseWalletChangeRepo.java b/src/main/java/com/sczx/store/repository/BaseWalletChangeRepo.java
new file mode 100644
index 0000000..22ebbec
--- /dev/null
+++ b/src/main/java/com/sczx/store/repository/BaseWalletChangeRepo.java
@@ -0,0 +1,16 @@
+package com.sczx.store.repository;
+
+import com.sczx.store.po.BaseWalletChangePO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 钱包变更记录 服务类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:52:11
+ */
+public interface BaseWalletChangeRepo extends IService {
+
+}
diff --git a/src/main/java/com/sczx/store/repository/BaseWalletRepo.java b/src/main/java/com/sczx/store/repository/BaseWalletRepo.java
new file mode 100644
index 0000000..16c3050
--- /dev/null
+++ b/src/main/java/com/sczx/store/repository/BaseWalletRepo.java
@@ -0,0 +1,16 @@
+package com.sczx.store.repository;
+
+import com.sczx.store.po.BaseWalletPO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 钱包信息 服务类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:48:45
+ */
+public interface BaseWalletRepo extends IService {
+
+}
diff --git a/src/main/java/com/sczx/store/repository/impl/BaseWalletChangeRepoImpl.java b/src/main/java/com/sczx/store/repository/impl/BaseWalletChangeRepoImpl.java
new file mode 100644
index 0000000..7835d74
--- /dev/null
+++ b/src/main/java/com/sczx/store/repository/impl/BaseWalletChangeRepoImpl.java
@@ -0,0 +1,20 @@
+package com.sczx.store.repository.impl;
+
+import com.sczx.store.po.BaseWalletChangePO;
+import com.sczx.store.mapper.BaseWalletChangeMapper;
+import com.sczx.store.repository.BaseWalletChangeRepo;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 钱包变更记录 服务实现类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:52:11
+ */
+@Service
+public class BaseWalletChangeRepoImpl extends ServiceImpl implements BaseWalletChangeRepo {
+
+}
diff --git a/src/main/java/com/sczx/store/repository/impl/BaseWalletRepoImpl.java b/src/main/java/com/sczx/store/repository/impl/BaseWalletRepoImpl.java
new file mode 100644
index 0000000..4b2b879
--- /dev/null
+++ b/src/main/java/com/sczx/store/repository/impl/BaseWalletRepoImpl.java
@@ -0,0 +1,20 @@
+package com.sczx.store.repository.impl;
+
+import com.sczx.store.po.BaseWalletPO;
+import com.sczx.store.mapper.BaseWalletMapper;
+import com.sczx.store.repository.BaseWalletRepo;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 钱包信息 服务实现类
+ *
+ *
+ * @author zhangli
+ * @since 2025-08-24 12:48:45
+ */
+@Service
+public class BaseWalletRepoImpl extends ServiceImpl implements BaseWalletRepo {
+
+}
diff --git a/src/main/java/com/sczx/store/service/IWalletService.java b/src/main/java/com/sczx/store/service/IWalletService.java
new file mode 100644
index 0000000..94aa1f0
--- /dev/null
+++ b/src/main/java/com/sczx/store/service/IWalletService.java
@@ -0,0 +1,26 @@
+package com.sczx.store.service;
+
+
+import com.sczx.store.dto.BaseWalletChangeDTO;
+import com.sczx.store.dto.BaseWalletDTO;
+import com.sczx.store.dto.WalletChangeQueryReq;
+
+import java.util.List;
+
+public interface IWalletService {
+
+ /**
+ * 根据用户id获取钱包信息
+ *
+ * @param userId
+ * @return
+ */
+ BaseWalletDTO getWalletInfo(Long userId);
+
+ /**
+ * 根据条件获取钱包变更记录
+ * @param baseWalletChangeQueryReq
+ * @return
+ */
+ List listWalletChange(WalletChangeQueryReq baseWalletChangeQueryReq);
+}
diff --git a/src/main/java/com/sczx/store/service/impl/WalletServiceImpl.java b/src/main/java/com/sczx/store/service/impl/WalletServiceImpl.java
new file mode 100644
index 0000000..ec43299
--- /dev/null
+++ b/src/main/java/com/sczx/store/service/impl/WalletServiceImpl.java
@@ -0,0 +1,44 @@
+package com.sczx.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.sczx.store.convert.BaseWalletChangeConvert;
+import com.sczx.store.convert.BaseWalletConvert;
+import com.sczx.store.dto.BaseWalletChangeDTO;
+import com.sczx.store.dto.BaseWalletDTO;
+import com.sczx.store.dto.WalletChangeQueryReq;
+import com.sczx.store.po.BaseWalletChangePO;
+import com.sczx.store.po.BaseWalletPO;
+import com.sczx.store.repository.BaseWalletChangeRepo;
+import com.sczx.store.repository.BaseWalletRepo;
+import com.sczx.store.service.IWalletService;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class WalletServiceImpl implements IWalletService {
+
+ @Autowired
+ private BaseWalletRepo baseWalletRepo;
+
+ @Autowired
+ private BaseWalletChangeRepo baseWalletChangeRepo;
+
+ @Override
+ public BaseWalletDTO getWalletInfo(Long userId) {
+ BaseWalletPO baseWalletPO = baseWalletRepo.getById(userId);
+ return BaseWalletConvert.INSTANCE.po2Dto(baseWalletPO);
+ }
+
+ @Override
+ public List listWalletChange(WalletChangeQueryReq baseWalletChangeQueryReq) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(BaseWalletChangePO::getUserId, baseWalletChangeQueryReq.getUserId())
+ .eq(StringUtils.isNotBlank(baseWalletChangeQueryReq.getChangeType()),BaseWalletChangePO::getChangeType, baseWalletChangeQueryReq.getChangeType())
+ .orderByDesc(BaseWalletChangePO::getChangeTime);
+ List baseWalletChangePOList = baseWalletChangeRepo.list(queryWrapper);
+ return BaseWalletChangeConvert.INSTANCE.pos2Dtos(baseWalletChangePOList);
+ }
+}
diff --git a/src/main/resources/mapper/BaseWalletChangeMapper.xml b/src/main/resources/mapper/BaseWalletChangeMapper.xml
new file mode 100644
index 0000000..6eb5a9e
--- /dev/null
+++ b/src/main/resources/mapper/BaseWalletChangeMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/main/resources/mapper/BaseWalletMapper.xml b/src/main/resources/mapper/BaseWalletMapper.xml
new file mode 100644
index 0000000..e8a318b
--- /dev/null
+++ b/src/main/resources/mapper/BaseWalletMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+