Bläddra i källkod

购物金、购物金明细提交

郭子栋 1 vecka sedan
förälder
incheckning
9a3624a8e2
15 ändrade filer med 561 tillägg och 8 borttagningar
  1. 2 2
      nightFragrance-massage/src/main/java/com/ylx/massage/domain/TWxUser.java
  2. 17 4
      nightFragrance-massage/src/main/java/com/ylx/massage/service/TWxUserService.java
  3. 52 2
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TWxUserServiceImpl.java
  4. 48 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/controller/ShoppingFundsDetailController.java
  5. 63 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/ShoppingFundsDetail.java
  6. 46 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/dto/ShoppingFundsDetailQueryDto.java
  7. 46 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/vo/ShoppingFundsDetailAddDto.java
  8. 53 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/vo/ShoppingFundsDetailQueryVo.java
  9. 19 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/mapper/ShoppingFundsDetailMapper.java
  10. 25 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/service/ShoppingFundsDetailService.java
  11. 52 0
      nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/service/impl/ShoppingFundsDetailServiceImpl.java
  12. 43 0
      nightFragrance-massage/src/main/java/com/ylx/shoppingfunds/controller/MyShoppingFundsController.java
  13. 38 0
      nightFragrance-massage/src/main/java/com/ylx/shoppingfunds/domain/dto/MyShoppingFundsUpdateDto.java
  14. 27 0
      nightFragrance-massage/src/main/java/com/ylx/shoppingfunds/domain/vo/MyShoppingFundsQueryVo.java
  15. 30 0
      nightFragrance-massage/src/main/resources/mapper/giftCard/ShoppingFundsDetailMapper.xml

+ 2 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TWxUser.java

@@ -106,10 +106,10 @@ public class TWxUser implements Serializable {
     private JSONArray cAddressList;
 
     /**
-     * 当前余额
+     * 当前购物金剩余(原余额
      */
     @TableField("d_balance")
-    @ApiModelProperty("当前余")
+    @ApiModelProperty("当前购物金剩余")
     private BigDecimal dBalance;
 
     /**

+ 17 - 4
nightFragrance-massage/src/main/java/com/ylx/massage/service/TWxUserService.java

@@ -2,14 +2,12 @@ package com.ylx.massage.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ylx.massage.domain.TOrder;
 import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.domain.vo.TWxUserVo;
+import com.ylx.shoppingfunds.domain.dto.MyShoppingFundsUpdateDto;
+import com.ylx.shoppingfunds.domain.vo.MyShoppingFundsQueryVo;
 
 import java.math.BigDecimal;
-import java.time.YearMonth;
-import java.util.List;
-import java.util.Map;
 
 
 /**
@@ -47,4 +45,19 @@ public interface TWxUserService extends IService<TWxUser> {
      * @return TWxUser 登录用户
      */
     TWxUser phoneLogin(String phone);
+
+    /**
+     * 根据userId获取我的购物金余额信息
+     * @param userId
+     * @return
+     */
+    MyShoppingFundsQueryVo queryMyShoppingFunds(String userId);
+
+    /**
+     * 更新我的购物金余额
+     * @param userId
+     * @param amount
+     * @param expenseType
+     */
+    void updateMyShoppingFunds(String userId, BigDecimal amount, Integer expenseType);
 }

+ 52 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TWxUserServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ylx.massage.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -9,9 +10,14 @@ import com.ylx.massage.domain.TWxUser;
 import com.ylx.massage.domain.vo.TWxUserVo;
 import com.ylx.massage.mapper.TWxUserMapper;
 import com.ylx.massage.service.TWxUserService;
+import com.ylx.shopingfundsdetail.service.ShoppingFundsDetailService;
+import com.ylx.shoppingfunds.domain.dto.MyShoppingFundsUpdateDto;
+import com.ylx.shoppingfunds.domain.vo.MyShoppingFundsQueryVo;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Collection;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Optional;
 
@@ -21,7 +27,8 @@ import java.util.Optional;
  */
 @Service
 public class TWxUserServiceImpl extends ServiceImpl<TWxUserMapper, TWxUser> implements TWxUserService {
-
+    @Resource(name = "shoppingFundsDetailService")
+    private ShoppingFundsDetailService shoppingFundsDetailService;
     @Override
     public TWxUser getByOpenId(String openId) {
         LambdaQueryWrapper<TWxUser> wrapper = new LambdaQueryWrapper<>();
@@ -80,4 +87,47 @@ public class TWxUserServiceImpl extends ServiceImpl<TWxUserMapper, TWxUser> impl
         }
         return user;
     }
+
+    /**
+     * 查询我的购物金余额
+     * @param userId
+     * @return
+     */
+    @Override
+    public MyShoppingFundsQueryVo queryMyShoppingFunds(String userId) {
+        TWxUser user = this.getById(userId);
+        if (ObjectUtil.isNull(user)) {
+            throw new IllegalArgumentException("参数有误,用户不存在");
+        }
+        MyShoppingFundsQueryVo myShoppingFundsVo = new MyShoppingFundsQueryVo();
+        myShoppingFundsVo.setWxUserId(user.getId());
+        myShoppingFundsVo.setDBalance(user.getdBalance());
+        return myShoppingFundsVo;
+    }
+
+    /**
+     * 更新我的购物金余额
+     * @param userId
+     * @param amount
+     * @param expenseType
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateMyShoppingFunds(String userId, BigDecimal amount, Integer expenseType) {
+        TWxUser user = this.getById(userId);
+        if (ObjectUtil.isNull(user)){
+            throw new IllegalArgumentException("参数有误,用户不存在");
+        }
+        //表示购卡
+        if(expenseType.equals(0)){
+            user.setdBalance(user.getdBalance().add(amount));
+        }else if(expenseType.equals(1)){
+            //表示消费购物金
+            if(user.getdBalance().compareTo(amount)<0) {
+                throw new IllegalArgumentException("参数有误,余额不足");
+            }
+            user.setdBalance(user.getdBalance().subtract(amount));
+        }
+        this.updateById(user);
+    }
 }

+ 48 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/controller/ShoppingFundsDetailController.java

@@ -0,0 +1,48 @@
+package com.ylx.shopingfundsdetail.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ylx.common.core.domain.R;
+import com.ylx.shopingfundsdetail.domain.dto.ShoppingFundsDetailQueryDto;
+import com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailAddDto;
+import com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailQueryVo;
+import com.ylx.shopingfundsdetail.service.ShoppingFundsDetailService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * 类描述:我的购物金明细C端
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 10:58
+ */
+@RestController
+@RequestMapping("/shopping/funds/detail")
+@Api(tags = {"购物金明细"})
+@Slf4j
+public class ShoppingFundsDetailController {
+    @Resource(name = "shoppingFundsDetailService")
+    private ShoppingFundsDetailService shoppingFundsDetailService;
+
+    @ApiOperation("查询购物金明细")
+    @PostMapping(value="queryShoppingFundsDetail")
+    public R<Page<ShoppingFundsDetailQueryVo>> queryShoppingFundsDetail(@RequestBody ShoppingFundsDetailQueryDto shoppingFundsDetailQueryDto) {
+        Page<ShoppingFundsDetailQueryVo> v =  shoppingFundsDetailService.queryShoppingFundsDetail(shoppingFundsDetailQueryDto);
+        return R.ok(v);
+    }
+
+    @ApiOperation("新增购物金明细")
+    @PostMapping(value="addShoppingFundsDetail")
+    public R<?> addShoppingFundsDetail(@RequestBody ShoppingFundsDetailAddDto dto) {
+        shoppingFundsDetailService.addShoppingFundsDetail(dto);
+        return R.ok();
+    }
+
+}

+ 63 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/ShoppingFundsDetail.java

@@ -0,0 +1,63 @@
+package com.ylx.shopingfundsdetail.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ylx.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 类描述:购物金明细表
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 10:28
+ */
+@Data
+@TableName(value = "t_shopping_funds_detail",autoResultMap = true)
+@ApiModel(value = "ShoppingFundsDetail", description = "购物金明细记录表")
+public class ShoppingFundsDetail extends BaseEntity {
+    private static final long serialVersionUID = -5890473596508557032L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty("主键")
+    private Long id;
+    /**
+     * 购物卡id
+     */
+    @TableField("gift_card_id")
+    @ApiModelProperty("购物卡id")
+    private Long giftCardId;
+
+    @TableField("user_id")
+    @ApiModelProperty("用户id")
+    private String userId;
+    /**
+     * 购物金消费类型
+     */
+    @TableField("expense_type")
+    @ApiModelProperty("消费类型:0-收入,1-支出")
+    private Integer expenseType;
+    /**
+     * 金额
+     */
+    @TableField("amount")
+    @ApiModelProperty("金额")
+    private BigDecimal amount;
+    /**
+     * 对应余额
+     */
+    @TableField("balance")
+    @ApiModelProperty("对应余额")
+    private BigDecimal balance;
+
+}

+ 46 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/dto/ShoppingFundsDetailQueryDto.java

@@ -0,0 +1,46 @@
+package com.ylx.shopingfundsdetail.domain.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 类描述:我的购物金明细dto
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 11:04
+ */
+@Data
+@ApiModel("我的购物金明细dto")
+public class ShoppingFundsDetailQueryDto {
+
+    @NotNull(message = "页码不能为空")
+    @ApiModelProperty("页码")
+    private Integer pageNo;
+    @NotNull(message = "页数不能为空")
+    @ApiModelProperty("页数")
+    private Integer pageSize;
+    @NotBlank(message = "用户id不能为空")
+    @ApiModelProperty("用户id")
+    private String userId;
+
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty("查询开始时间")
+    private String startTime;
+
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty("查询结束时间")
+    private String endTime;
+
+}

+ 46 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/vo/ShoppingFundsDetailAddDto.java

@@ -0,0 +1,46 @@
+package com.ylx.shopingfundsdetail.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 类描述:新增购物金明细dto
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 11:04
+ */
+@Data
+@ApiModel("新增我的购物金明细")
+public class ShoppingFundsDetailAddDto {
+
+    @NotBlank(message = "用户id不能为空")
+    @ApiModelProperty("用户id")
+    private String userId;
+    /**
+     * 购物卡id
+     */
+    @NotBlank(message = "购物卡id不能为空")
+    @ApiModelProperty("购物卡id")
+    private Long giftCardId;
+    /**
+     * 购物金消费类型
+     */
+    @NotNull(message = "消费类型不能为空")
+    @ApiModelProperty("消费类型:0-收入,1-支出")
+    private Integer expenseType;
+
+    /**
+     * 金额
+     */
+    @NotBlank(message = "金额不能为空")
+    @ApiModelProperty("金额")
+    private BigDecimal amount;
+
+}

+ 53 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/domain/vo/ShoppingFundsDetailQueryVo.java

@@ -0,0 +1,53 @@
+package com.ylx.shopingfundsdetail.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 类描述:我的购物金明细vo
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 11:04
+ */
+@Data
+@ApiModel("我的购物金明细vo")
+public class ShoppingFundsDetailQueryVo {
+    /**
+     * 主键ID
+     */
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("用户id")
+    private String userId;
+    /**
+     * 购物金消费类型
+     */
+    @ApiModelProperty("消费类型:0-收入,1-支出")
+    private Integer expenseType;
+    /**
+     * 前端展示消费类型
+     */
+    @ApiModelProperty("消费类型:0-收入,1-支出")
+    private String expenseTypeName;
+    /**
+     * 金额
+     */
+    @ApiModelProperty("金额")
+    private BigDecimal amount;
+    /**
+     * 对应余额
+     */
+    @ApiModelProperty("对应余额")
+    private BigDecimal balance;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    private String createTime;
+
+}

+ 19 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/mapper/ShoppingFundsDetailMapper.java

@@ -0,0 +1,19 @@
+package com.ylx.shopingfundsdetail.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ylx.shopingfundsdetail.domain.ShoppingFundsDetail;
+import com.ylx.shopingfundsdetail.domain.dto.ShoppingFundsDetailQueryDto;
+import com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailQueryVo;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 类描述:购物金明细数据库操作
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 10:51
+ */
+public interface ShoppingFundsDetailMapper extends BaseMapper<ShoppingFundsDetail> {
+    Page<ShoppingFundsDetailQueryVo> queryShoppingFundsDetail(@Param("dto")  ShoppingFundsDetailQueryDto shoppingFundsDetailQueryDto, @Param("page") Page<ShoppingFundsDetailQueryVo> page);
+}

+ 25 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/service/ShoppingFundsDetailService.java

@@ -0,0 +1,25 @@
+package com.ylx.shopingfundsdetail.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ylx.shopingfundsdetail.domain.ShoppingFundsDetail;
+import com.ylx.shopingfundsdetail.domain.dto.ShoppingFundsDetailQueryDto;
+import com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailAddDto;
+import com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailQueryVo;
+
+import java.util.List;
+
+/**
+ * 类描述:
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 10:55
+ */
+public interface ShoppingFundsDetailService extends IService<ShoppingFundsDetail> {
+
+    Page<ShoppingFundsDetailQueryVo> queryShoppingFundsDetail(ShoppingFundsDetailQueryDto shoppingFundsDetailQueryDto);
+
+    void addShoppingFundsDetail(ShoppingFundsDetailAddDto dto);
+
+}

+ 52 - 0
nightFragrance-massage/src/main/java/com/ylx/shopingfundsdetail/service/impl/ShoppingFundsDetailServiceImpl.java

@@ -0,0 +1,52 @@
+package com.ylx.shopingfundsdetail.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ylx.massage.domain.TWxUser;
+import com.ylx.massage.service.TWxUserService;
+import com.ylx.shopingfundsdetail.domain.ShoppingFundsDetail;
+import com.ylx.shopingfundsdetail.domain.dto.ShoppingFundsDetailQueryDto;
+import com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailAddDto;
+import com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailQueryVo;
+import com.ylx.shopingfundsdetail.mapper.ShoppingFundsDetailMapper;
+import com.ylx.shopingfundsdetail.service.ShoppingFundsDetailService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 类描述:
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 10:56
+ */
+@Service("shoppingFundsDetailService")
+public class ShoppingFundsDetailServiceImpl extends ServiceImpl<ShoppingFundsDetailMapper, ShoppingFundsDetail> implements ShoppingFundsDetailService {
+
+    @Resource
+    private TWxUserService wxUserService;
+    @Override
+    public Page<ShoppingFundsDetailQueryVo> queryShoppingFundsDetail(ShoppingFundsDetailQueryDto shoppingFundsDetailQueryDto) {
+        Page<ShoppingFundsDetailQueryVo> page = new Page<ShoppingFundsDetailQueryVo>(shoppingFundsDetailQueryDto.getPageNo(), shoppingFundsDetailQueryDto.getPageSize());
+        return baseMapper.queryShoppingFundsDetail(shoppingFundsDetailQueryDto,page);
+    }
+
+    /**
+     * 新增购物金明细
+     * @param dto
+     */
+    @Override
+    public void addShoppingFundsDetail(ShoppingFundsDetailAddDto dto) {
+        ShoppingFundsDetail shoppingFundsDetail = new ShoppingFundsDetail();
+        BeanUtils.copyProperties(dto, shoppingFundsDetail);
+        TWxUser user = wxUserService.getById(dto.getUserId());
+        if (ObjectUtil.isNull(user)){
+            throw new IllegalArgumentException("参数有误,用户不存在");
+        }
+        shoppingFundsDetail.setBalance(user.getdBalance());
+        baseMapper.insert(shoppingFundsDetail);
+    }
+}

+ 43 - 0
nightFragrance-massage/src/main/java/com/ylx/shoppingfunds/controller/MyShoppingFundsController.java

@@ -0,0 +1,43 @@
+package com.ylx.shoppingfunds.controller;
+
+import com.ylx.common.core.domain.R;
+import com.ylx.massage.service.TWxUserService;
+import com.ylx.shoppingfunds.domain.dto.MyShoppingFundsUpdateDto;
+import com.ylx.shoppingfunds.domain.vo.MyShoppingFundsQueryVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * 类描述:我的购物金
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 8:53
+ */
+@RestController
+@RequestMapping("/shoppingFunds")
+@Api(tags = {"我的购物金"})
+@Slf4j
+public class MyShoppingFundsController {
+    @Resource
+    private TWxUserService wxUserService;
+
+
+    @ApiOperation("查询我的购物金剩余")
+    @GetMapping(value="queryMyShoppingFunds")
+    public R<MyShoppingFundsQueryVo> queryMyShoppingFunds(@RequestParam("userId")String userId) {
+        return R.ok(wxUserService.queryMyShoppingFunds(userId));
+    }
+
+    @ApiOperation("更新购物金")
+    @PostMapping(value="updateMyShoppingFunds")
+    public R<?> updateMyShoppingFunds(@RequestBody MyShoppingFundsUpdateDto myShoppingFundsUpdateDto) {
+       wxUserService.updateMyShoppingFunds(myShoppingFundsUpdateDto.getWxUserId(), myShoppingFundsUpdateDto.getAmount(), myShoppingFundsUpdateDto.getExpenseType());
+        return R.ok();
+    }
+
+}

+ 38 - 0
nightFragrance-massage/src/main/java/com/ylx/shoppingfunds/domain/dto/MyShoppingFundsUpdateDto.java

@@ -0,0 +1,38 @@
+package com.ylx.shoppingfunds.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 类描述:更新我的购物金余额
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 9:21
+ */
+@Data
+@ApiModel("更新我的购物金余额dto")
+public class MyShoppingFundsUpdateDto implements Serializable {
+    private static final long serialVersionUID = -1987716391112070123L;
+
+    @NotBlank(message = "userId不能为空")
+    @ApiModelProperty("微信用户userId")
+    private String  wxUserId;
+
+    @NotBlank(message = "金额不能为空")
+    @ApiModelProperty("若是购卡即这次购卡花费;若消费购物金则表示这次消费金额")
+    private BigDecimal amount;
+
+    @NotNull(message = "消费类型不能为空")
+    @ApiModelProperty("消费类型:0-购卡,1-消费")
+    private Integer expenseType;
+
+
+
+}

+ 27 - 0
nightFragrance-massage/src/main/java/com/ylx/shoppingfunds/domain/vo/MyShoppingFundsQueryVo.java

@@ -0,0 +1,27 @@
+package com.ylx.shoppingfunds.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 类描述:查询我的购物金余额vo
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/1 9:00
+ */
+@Data
+@ApiModel("我的购物金余额vo")
+public class MyShoppingFundsQueryVo implements Serializable {
+    private static final long serialVersionUID = -1987716391112070123L;
+
+    @ApiModelProperty("微信用户userId")
+    private String  wxUserId;
+
+    @ApiModelProperty("当前购物金剩余")
+    private BigDecimal dBalance;
+}

+ 30 - 0
nightFragrance-massage/src/main/resources/mapper/giftCard/ShoppingFundsDetailMapper.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ylx.shopingfundsdetail.mapper.ShoppingFundsDetailMapper">
+    <!-- C端购物金明细 -->
+    <select id="queryShoppingFundsDetail" resultType="com.ylx.shopingfundsdetail.domain.vo.ShoppingFundsDetailQueryVo">
+        select
+            d.id AS id,
+            d.user_id AS userId,
+            d.expense_type AS expenseType,
+            CASE
+             WHEN d.expense_type = 0 THEN '收入'
+             WHEN d.expense_type = 1 THEN '支出'
+            ELSE '未知'
+            END            AS expenseTypeName,
+            d.amount AS amount,
+            d.balance AS balance,
+            d.create_time AS createTime
+        from t_shopping_funds_detail d
+        where 1=1
+        <if test="dto.userId != null">
+            and d.user_id = #{dto.userId}
+        </if>
+        <if test="dto.startTime != null and dto.endTime != null and dto.startTime != '' and dto.endTime != ''">
+            and DATE_FORMAT(d.create_time, '%Y-%m-%d') >= #{dto.startTime}
+            and DATE_FORMAT(d.create_time, '%Y-%m-%d') &lt;= #{dto.endTime}
+        </if>
+    </select>
+</mapper>