diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java index f513fdd3..c223fe83 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/OrderController.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; +import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderMoneyRespVO; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; import cn.iocoder.yudao.module.member.service.order.OrderService; import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService; @@ -111,4 +112,10 @@ public class OrderController { public CommonResult getOrderDetailsAndUser(@RequestParam("orderId")Long orderId){ return CommonResult.success(orderService.getOrderDetailsAndUser(orderId)); } -} \ No newline at end of file + @GetMapping("/user/money") + @Operation(summary = "根据会员编号,获得会员余额,充值金额,消费金额") + @PreAuthorize("@ss.hasPermission('member:order:query')") + public CommonResult getUserMeney(@RequestParam("userId")Long userId){ + return CommonResult.success(orderService.getUserMeney(userId)); + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java index b4ff8b6d..cb27f059 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderDetailsReqVO.java @@ -45,4 +45,6 @@ public class OrderDetailsReqVO extends PageParam { private String payMethods; @Schema(description = "时间段", example = "早餐") private String timePeriod; + @Schema(description = "会员id", example = "早餐") + private Long userId; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderMoneyRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderMoneyRespVO.java new file mode 100644 index 00000000..e7eb69f7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/order/vo/OrderMoneyRespVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.member.controller.admin.order.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author:qjq + * @Date:2024/4/24 上午9:48 + */ +@Schema(description = "管理后台 - 用户钱包明细") +@Data +public class OrderMoneyRespVO { + //会员编号 + private Long userId; + //当前余额 + private BigDecimal currentMoney; + //充值金额 + private BigDecimal rechargeMoney; + //消费金额 + private BigDecimal consumeMoney; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountPageReqVO.java index 01b15613..79a6f403 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountPageReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountPageReqVO.java @@ -1,11 +1,13 @@ package cn.iocoder.yudao.module.member.controller.admin.rechargeamount.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -25,6 +27,9 @@ public class RechargeAmountPageReqVO extends PageParam { @Schema(description = "状态:0-关闭,1-开启", example = "1") private String status; + @Schema(description = "套餐名", example = "套餐A") + private String name; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountRespVO.java index c0c71592..740d2f72 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountRespVO.java @@ -29,6 +29,10 @@ public class RechargeAmountRespVO { @ExcelProperty("状态:0-关闭,1-开启") private String status; + @Schema(description = "套餐名", example = "套餐A") + @ExcelProperty("套餐名") + private String name; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountSaveReqVO.java index 86671d72..3adc599c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountSaveReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/rechargeamount/vo/RechargeAmountSaveReqVO.java @@ -1,9 +1,8 @@ package cn.iocoder.yudao.module.member.controller.admin.rechargeamount.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import javax.validation.constraints.*; +import lombok.Data; + import java.math.BigDecimal; @Schema(description = "管理后台 - 充值金额配置新增/修改 Request VO") @@ -22,4 +21,6 @@ public class RechargeAmountSaveReqVO { @Schema(description = "状态:0-关闭,1-开启", example = "1") private String status; + @Schema(description = "套餐名", example = "套餐A") + private String name; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/rechargeamount/RechargeAmountDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/rechargeamount/RechargeAmountDO.java index d402fbf2..1e670497 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/rechargeamount/RechargeAmountDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/rechargeamount/RechargeAmountDO.java @@ -48,5 +48,9 @@ public class RechargeAmountDO extends BaseDO { * 状态:0-关闭,1-开启 */ private String status; + /** + * 套餐名 + */ + private String name; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java index bbf5dff3..55dc4c12 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/card/CardMapper.java @@ -11,6 +11,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -43,4 +44,6 @@ public interface CardMapper extends BaseMapperX { @Select("select IFNULL(sum(change_money),0) as money,count(*) as count FROM member_card where user_id = #{userId} and flag = #{flag} and create_time BETWEEN #{startTime} and #{endTime}") AppCardMonthVO selectMonth(@Param("userId") Long userId,@Param("flag") String flag, @Param("startTime") LocalDateTime startTime, @Param("endTime")LocalDateTime endTime); + @Select("select SUM(change_money) from member_card where user_id= #{userId} and flag= #{flag}") + BigDecimal selectAddMoney(@Param("userId") Long userId,@Param("flag") String flag); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java index 11e3eb1b..12f4d110 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.service.order; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; +import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderMoneyRespVO; import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderPageReqVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderRespVO; @@ -101,4 +102,12 @@ public interface OrderService { BigDecimal getSaleMoney(Long storeId,String time); List getCarTeenInfo(); + + /** + * @Description: 根据会员编号,获得会员余额,充值金额,消费金额 + * @Author: qjq + * @Date: 2024/4/24 上午9:52 + * @return + */ + OrderMoneyRespVO getUserMeney(Long userId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java index 3a1c94b9..fdc37c66 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/order/OrderServiceImpl.java @@ -8,14 +8,17 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsReqVO; import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderDetailsRespVO; +import cn.iocoder.yudao.module.member.controller.admin.order.vo.OrderMoneyRespVO; import cn.iocoder.yudao.module.member.controller.admin.screen.vo.CarTeenInfoVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderPageReqVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderRespVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppOrderSaveReqVO; import cn.iocoder.yudao.module.member.controller.app.order.vo.AppPageVo; import cn.iocoder.yudao.module.member.controller.app.orderdetail.vo.AppOrderDetailRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO; import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper; import cn.iocoder.yudao.module.member.dal.mysql.order.DishOrderMapper; import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper; import cn.iocoder.yudao.module.member.enums.CostTypeEnum; @@ -64,7 +67,8 @@ public class OrderServiceImpl implements OrderService { private DeviceInfoApi deviceInfoApi; @Resource private CarteenApi carteenApi; - + @Resource + private CardMapper cardMapper; @Override public Long createOrder(AppOrderSaveReqVO createReqVO) { // 插入 @@ -147,12 +151,15 @@ public class OrderServiceImpl implements OrderService { List userIds=new ArrayList<>(); if(ObjUtil.isNotEmpty(reqVO.getUserName()) || ObjUtil.isNotEmpty(reqVO.getUserAccount()) - || ObjUtil.isNotEmpty(reqVO.getUserJob())){ + || ObjUtil.isNotEmpty(reqVO.getUserJob()) + || ObjUtil.isNotEmpty(reqVO.getUserId()) + ){ //根据用户属性获取ids userIds = memberUserMapper.selectList(new LambdaQueryWrapperX() .likeIfPresent(MemberUserDO::getNickname, reqVO.getUserName()) .eqIfPresent(MemberUserDO::getMobile, reqVO.getUserAccount()) - .eqIfPresent(MemberUserDO::getCardId, reqVO.getUserJob())) + .eqIfPresent(MemberUserDO::getCardId, reqVO.getUserJob()) + .eqIfPresent(MemberUserDO::getId, reqVO.getUserId())) .stream().map(MemberUserDO::getId).collect(Collectors.toList()); } Map timePeriod = this.getTimePeriod(reqVO.getTimePeriod()); @@ -269,4 +276,28 @@ public class OrderServiceImpl implements OrderService { } return result; } + + /** + * @param userId + * @return + * @Description: 根据会员编号,获得会员余额,充值金额,消费金额 + * @Author: qjq + * @Date: 2024/4/24 上午9:52 + */ + @Override + public OrderMoneyRespVO getUserMeney(Long userId) { + OrderMoneyRespVO orderMoneyRespVO = new OrderMoneyRespVO(); + //获取充值的金额 + BigDecimal add = cardMapper.selectAddMoney(userId, CardDO.ADD); + + orderMoneyRespVO.setRechargeMoney(add); + //消费的金额 + BigDecimal minus = cardMapper.selectAddMoney(userId, CardDO.MINUS); + orderMoneyRespVO.setConsumeMoney(minus); + //获取会员余额 + BigDecimal subtract = add.subtract(minus); + orderMoneyRespVO.setCurrentMoney(subtract); + orderMoneyRespVO.setUserId(userId); + return orderMoneyRespVO; + } } \ No newline at end of file