From c208dcf29d3963b0dfd32809553a74e21eb11c72 Mon Sep 17 00:00:00 2001 From: zhangli <123879394@qq.com> Date: Sun, 24 Aug 2025 13:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=97=A8=E5=BA=97=E9=92=B1?= =?UTF-8?q?=E5=8C=85=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/controller/WalletController.java | 47 +++++++++++++ .../convert/BaseWalletChangeConvert.java | 17 +++++ .../sczx/store/convert/BaseWalletConvert.java | 13 ++++ .../sczx/store/dto/BaseWalletChangeDTO.java | 37 +++++++++++ .../com/sczx/store/dto/BaseWalletDTO.java | 30 +++++++++ .../sczx/store/dto/WalletChangeQueryReq.java | 16 +++++ .../store/mapper/BaseWalletChangeMapper.java | 16 +++++ .../sczx/store/mapper/BaseWalletMapper.java | 16 +++++ .../com/sczx/store/po/BaseWalletChangePO.java | 66 +++++++++++++++++++ .../java/com/sczx/store/po/BaseWalletPO.java | 62 +++++++++++++++++ .../repository/BaseWalletChangeRepo.java | 16 +++++ .../sczx/store/repository/BaseWalletRepo.java | 16 +++++ .../impl/BaseWalletChangeRepoImpl.java | 20 ++++++ .../repository/impl/BaseWalletRepoImpl.java | 20 ++++++ .../sczx/store/service/IWalletService.java | 26 ++++++++ .../store/service/impl/WalletServiceImpl.java | 44 +++++++++++++ .../mapper/BaseWalletChangeMapper.xml | 5 ++ .../resources/mapper/BaseWalletMapper.xml | 5 ++ 18 files changed, 472 insertions(+) create mode 100644 src/main/java/com/sczx/store/controller/WalletController.java create mode 100644 src/main/java/com/sczx/store/convert/BaseWalletChangeConvert.java create mode 100644 src/main/java/com/sczx/store/convert/BaseWalletConvert.java create mode 100644 src/main/java/com/sczx/store/dto/BaseWalletChangeDTO.java create mode 100644 src/main/java/com/sczx/store/dto/BaseWalletDTO.java create mode 100644 src/main/java/com/sczx/store/dto/WalletChangeQueryReq.java create mode 100644 src/main/java/com/sczx/store/mapper/BaseWalletChangeMapper.java create mode 100644 src/main/java/com/sczx/store/mapper/BaseWalletMapper.java create mode 100644 src/main/java/com/sczx/store/po/BaseWalletChangePO.java create mode 100644 src/main/java/com/sczx/store/po/BaseWalletPO.java create mode 100644 src/main/java/com/sczx/store/repository/BaseWalletChangeRepo.java create mode 100644 src/main/java/com/sczx/store/repository/BaseWalletRepo.java create mode 100644 src/main/java/com/sczx/store/repository/impl/BaseWalletChangeRepoImpl.java create mode 100644 src/main/java/com/sczx/store/repository/impl/BaseWalletRepoImpl.java create mode 100644 src/main/java/com/sczx/store/service/IWalletService.java create mode 100644 src/main/java/com/sczx/store/service/impl/WalletServiceImpl.java create mode 100644 src/main/resources/mapper/BaseWalletChangeMapper.xml create mode 100644 src/main/resources/mapper/BaseWalletMapper.xml 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 @@ + + + + +