From 01f5dcbb543cc5e6d3373b3c5d021873a1876187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Fri, 8 Mar 2024 14:15:26 +0800 Subject: [PATCH] init --- .../xq/controller/app/VipController.java | 22 +++++- .../xq/controller/app/WithdrawController.java | 34 ++++++++- .../com/ruoyi/xq/domain/UserWithdraw.java | 2 +- .../java/com/ruoyi/xq/domain/VipOrder.java | 1 + .../java/com/ruoyi/xq/domain/VipPrice.java | 1 + .../com/ruoyi/xq/dto/app/common/IdReq.java | 10 +++ .../ruoyi/xq/dto/app/pay/OrderCreateVo.java | 16 ++++ .../ruoyi/xq/dto/app/vip/GenVipOrderReq.java | 10 +++ .../dto/app/withdraw/WithdrawListAppVo.java | 74 +++++++++++++++++++ .../app/withdraw/WithdrawListPageQuery.java | 13 ++++ .../ruoyi/xq/enums/common/OrderTypeEnum.java | 16 ++++ .../ruoyi/xq/enums/common/TraceIdEnum.java | 16 ++++ .../com/ruoyi/xq/enums/pay/PayStatusEnum.java | 20 +++++ .../com/ruoyi/xq/manager/OrderNoUtil.java | 28 +++++++ .../com/ruoyi/xq/manager/TraceIdManager.java | 25 +++++++ .../com/ruoyi/xq/mapper/UserExtendMapper.java | 4 + .../ruoyi/xq/mapper/UserWithdrawMapper.java | 5 ++ .../xq/mapper/WithdrawSettingMapper.java | 4 + .../ruoyi/xq/service/UserExtendService.java | 3 + .../com/ruoyi/xq/service/UserVipService.java | 2 + .../ruoyi/xq/service/UserWithdrawService.java | 7 ++ .../com/ruoyi/xq/service/VipOrderService.java | 1 + .../xq/service/WithdrawSettingService.java | 1 + .../service/impl/UserExtendServiceImpl.java | 9 +++ .../xq/service/impl/UserVipServiceImpl.java | 1 - .../service/impl/UserWithdrawServiceImpl.java | 57 ++++++++++++++ .../xq/service/impl/VipOrderServiceImpl.java | 34 +++++++++ .../impl/WithdrawSettingServiceImpl.java | 8 ++ .../resources/mapper/xq/UserExtendMapper.xml | 18 ++--- .../mapper/xq/UserWithdrawMapper.xml | 11 +++ 30 files changed, 431 insertions(+), 22 deletions(-) create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/common/IdReq.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/pay/OrderCreateVo.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/vip/GenVipOrderReq.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListAppVo.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListPageQuery.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/enums/pay/PayStatusEnum.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/manager/OrderNoUtil.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/manager/TraceIdManager.java diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipController.java index df0c63c..f0aaa6d 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/VipController.java @@ -5,18 +5,20 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.xq.domain.UserVip; +import com.ruoyi.xq.domain.VipOrder; import com.ruoyi.xq.domain.VipPrice; +import com.ruoyi.xq.dto.app.pay.OrderCreateVo; +import com.ruoyi.xq.dto.app.vip.GenVipOrderReq; import com.ruoyi.xq.dto.app.vip.VipHomeVo; import com.ruoyi.xq.enums.vip.UserVipOpenStatusEnum; import com.ruoyi.xq.enums.vip.VipStatusEnum; import com.ruoyi.xq.service.UserVipService; +import com.ruoyi.xq.service.VipOrderService; import com.ruoyi.xq.service.VipPriceService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.List; @@ -30,6 +32,8 @@ public class VipController { private VipPriceService vipPriceService; @Autowired private UserVipService userVipService; + @Autowired + private VipOrderService vipOrderService; @GetMapping("/home") @Operation(summary = "获取VIP信息") @@ -59,4 +63,16 @@ public class VipController { } return R.ok(vo); } + @PostMapping("/order/create") + @Operation(summary = "生成VIP订单") + @Log(title = "生成VIP订单", businessType = BusinessType.OTHER, isSaveDb = false) + public R createVipOrder(@RequestBody GenVipOrderReq req){ + Long userId = LoginHelper.getUserId(); + VipOrder vipOrder = vipOrderService.createVipOrder(userId, req.getVipPriceSettingId()); + OrderCreateVo result = new OrderCreateVo(); + result.setPrice(vipOrder.getVipPrice()); + result.setOrderNo(vipOrder.getOrderNo()); + result.setOrderName(vipOrder.getOrderName()); + return R.ok(result); + } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/WithdrawController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/WithdrawController.java index 70def32..8840f65 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/WithdrawController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/WithdrawController.java @@ -2,20 +2,25 @@ package com.ruoyi.xq.controller.app; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.xq.domain.WithdrawSetting; +import com.ruoyi.xq.dto.app.common.IdReq; +import com.ruoyi.xq.dto.app.common.IdsReq; import com.ruoyi.xq.dto.app.setting.WithdrawSettingVo; -import com.ruoyi.xq.dto.app.vip.VipHomeVo; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; +import com.ruoyi.xq.service.UserWithdrawService; import com.ruoyi.xq.service.WithdrawSettingService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -26,6 +31,8 @@ public class WithdrawController { @Autowired private WithdrawSettingService withdrawSettingService; + @Autowired + private UserWithdrawService userWithdrawService; @GetMapping("/setting") @Operation(summary = "获取提现配置") @@ -38,4 +45,23 @@ public class WithdrawController { return R.ok(result); } + + @PostMapping("/save") + @Operation(summary = "申请提现") + @Log(title = "申请提现", businessType = BusinessType.OTHER, isSaveDb = false) + public R save(@RequestBody IdReq req){ + userWithdrawService.saveWithdraw(LoginHelper.getUserId(),req.getId()); + return R.ok(); + } + + @PostMapping("/logs/page") + @Operation(summary = "提现记录") + @Log(title = "申请记录", businessType = BusinessType.OTHER, isSaveDb = false) + public R> logsPage(PageQuery pageQuery, WithdrawListPageQuery query){ + query.setUserId(LoginHelper.getUserId()); + Page result = userWithdrawService.pageApp(pageQuery,query); + return R.ok(result.getRecords()); + } + + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserWithdraw.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserWithdraw.java index c51a755..b2f227b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserWithdraw.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/UserWithdraw.java @@ -36,7 +36,7 @@ public class UserWithdraw implements Serializable { /** * 跟踪ID */ - private Long traceId; + private String traceId; /** * 订单号 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipOrder.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipOrder.java index 8195b41..cdd97e0 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipOrder.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipOrder.java @@ -53,6 +53,7 @@ public class VipOrder implements Serializable { * 订单号 */ private String orderNo; + private String orderName; /** * 平台 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipPrice.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipPrice.java index a51a131..783ea4b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipPrice.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/VipPrice.java @@ -32,6 +32,7 @@ public class VipPrice implements Serializable { */ @Schema(description = "1-普通会员 2-黄金会员 3-钻石会员") private Integer vipType; + private String vipName; /** * 1-月卡 2-季卡 3-年卡 */ diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/common/IdReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/common/IdReq.java new file mode 100644 index 0000000..43a6665 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/common/IdReq.java @@ -0,0 +1,10 @@ +package com.ruoyi.xq.dto.app.common; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class IdReq { + @Schema(description = "id") + private Long id; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/pay/OrderCreateVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/pay/OrderCreateVo.java new file mode 100644 index 0000000..5ca15c1 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/pay/OrderCreateVo.java @@ -0,0 +1,16 @@ +package com.ruoyi.xq.dto.app.pay; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OrderCreateVo { + @Schema(description = "订单号") + private String orderNo; + @Schema(description = "支付金额") + private BigDecimal price; + @Schema(description = "订单名称") + private String orderName; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/vip/GenVipOrderReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/vip/GenVipOrderReq.java new file mode 100644 index 0000000..bdcd86f --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/vip/GenVipOrderReq.java @@ -0,0 +1,10 @@ +package com.ruoyi.xq.dto.app.vip; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class GenVipOrderReq { + @Schema(description = "vip价格ID") + private Long vipPriceSettingId; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListAppVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListAppVo.java new file mode 100644 index 0000000..e9c5eb5 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListAppVo.java @@ -0,0 +1,74 @@ +package com.ruoyi.xq.dto.app.withdraw; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class WithdrawListAppVo { + + @Schema(description = "Id") + private Long id; + /** + * 用户ID + */ + @Schema(description = "用户Id") + private Long userId; + /** + * 用户号 + */ + @Schema(description = "用户号") + private String usercode; + /** + * 订单号 + */ + @Schema(description = "订单号") + private String orderNo; + /** + * 提现金额 + */ + @Schema(description = "提现金额") + private BigDecimal withdrawMoney; + /** + * 真实提现金额 + */ + @Schema(description = "真实提现金额") + private BigDecimal realWithdrawMoney; + /** + * 提现手续费金额 + */ + @Schema(description = "提现手续费金额") + private BigDecimal withdrawFees; + /** + * 提现手续费 + */ + @Schema(description = "提现手续费") + private BigDecimal withdrawFeesCate; + /** + * 是否打款 + */ + @Schema(description = "是否打款") + private Integer pay; + /** + * 1-待审核 2-审核成功 3-审核失败 + */ + @Schema(description = "1-待审核 2-审核成功 3-审核失败") + private Integer auditStatus; + /** + * 审核备注 + */ + @Schema(description = "审核备注") + private String auditRemark; + /** + * 审核时间 + */ + @Schema(description = "审核时间") + private LocalDateTime auditTime; + + @Schema(description = "申请时间") + private LocalDateTime createTime; + + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListPageQuery.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListPageQuery.java new file mode 100644 index 0000000..c3026a7 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/withdraw/WithdrawListPageQuery.java @@ -0,0 +1,13 @@ +package com.ruoyi.xq.dto.app.withdraw; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class WithdrawListPageQuery { + @Schema(hidden = true) + private Long userId; + + @Schema(description = "1-待审核 2-审核成功 3-审核失败") + private Integer auditStatus; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java new file mode 100644 index 0000000..ef9ccb5 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/OrderTypeEnum.java @@ -0,0 +1,16 @@ +package com.ruoyi.xq.enums.common; + +import lombok.Getter; + +@Getter +public enum OrderTypeEnum { + VIP("V"), + WITHDRAW("W"), + ; + + private final String type; + + OrderTypeEnum(String type) { + this.type = type; + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java new file mode 100644 index 0000000..aacd904 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/common/TraceIdEnum.java @@ -0,0 +1,16 @@ +package com.ruoyi.xq.enums.common; + +import lombok.Getter; + +@Getter +public enum TraceIdEnum { + WITHDRAW("WT","提现"), + ; + private final String code; + private final String text; + + TraceIdEnum(String code, String text) { + this.code = code; + this.text = text; + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/pay/PayStatusEnum.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/pay/PayStatusEnum.java new file mode 100644 index 0000000..db33732 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/enums/pay/PayStatusEnum.java @@ -0,0 +1,20 @@ +package com.ruoyi.xq.enums.pay; + +import lombok.Getter; + +@Getter +public enum PayStatusEnum { + READY_PAY(0,"待支付"), + PAY(1,"已支付"), + REFUND(5,"已退款"), + NO_PAY(10,"无需支付"), + ; + + private final Integer code; + private final String name; + + PayStatusEnum(Integer code, String name) { + this.code = code; + this.name = name; + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/OrderNoUtil.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/OrderNoUtil.java new file mode 100644 index 0000000..3b8003a --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/OrderNoUtil.java @@ -0,0 +1,28 @@ +package com.ruoyi.xq.manager; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; +import com.ruoyi.xq.enums.common.OrderTypeEnum; + + +public class OrderNoUtil { + + public static final Snowflake snowflake = IdUtil.getSnowflake(1, 1); + + public static String gen(OrderTypeEnum sub){ + return sub.getType() + snowflake.nextIdStr(); + } + + public static OrderTypeEnum getType(String orderNo){ + if(orderNo == null){ + return null; + } + OrderTypeEnum[] values = OrderTypeEnum.values(); + for (OrderTypeEnum value : values) { + if(orderNo.startsWith(value.getType())){ + return value; + } + } + return null; + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/TraceIdManager.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/TraceIdManager.java new file mode 100644 index 0000000..cbe887e --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/manager/TraceIdManager.java @@ -0,0 +1,25 @@ +package com.ruoyi.xq.manager; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; +import com.ruoyi.xq.enums.common.TraceIdEnum; + +public class TraceIdManager { + + private static final Snowflake SNOWFLAKE; + + static { + int dataId = 1; + String id = System.getProperty("DATA_ID"); + if(id != null){ + dataId = Integer.parseInt(id); + } + SNOWFLAKE = IdUtil.getSnowflake(1, dataId); + } + + public static String gen(TraceIdEnum traceIdEnum){ + return traceIdEnum.getCode() + SNOWFLAKE.nextIdStr(); + } + + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserExtendMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserExtendMapper.java index 5ba5949..052bf49 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserExtendMapper.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserExtendMapper.java @@ -2,6 +2,9 @@ package com.ruoyi.xq.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xq.domain.UserExtend; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; /** * 用户邀请Mapper接口 @@ -11,4 +14,5 @@ import com.ruoyi.xq.domain.UserExtend; */ public interface UserExtendMapper extends BaseMapper { + boolean decrIncome(@Param("userId") Long userId, @Param("price") BigDecimal price); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserWithdrawMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserWithdrawMapper.java index 3f9df5c..53bce54 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserWithdrawMapper.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/UserWithdrawMapper.java @@ -1,7 +1,11 @@ package com.ruoyi.xq.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.xq.domain.UserWithdraw; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; +import org.apache.ibatis.annotations.Param; /** * 用户提现审核Mapper接口 @@ -11,4 +15,5 @@ import com.ruoyi.xq.domain.UserWithdraw; */ public interface UserWithdrawMapper extends BaseMapper { + Page pageApp(@Param("build") Page build, @Param("query") WithdrawListPageQuery query); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/WithdrawSettingMapper.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/WithdrawSettingMapper.java index 63c5004..4ad870b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/WithdrawSettingMapper.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/mapper/WithdrawSettingMapper.java @@ -1,7 +1,11 @@ package com.ruoyi.xq.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.xq.domain.WithdrawSetting; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; +import org.apache.ibatis.annotations.Param; /** * 提现配置Mapper接口 diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserExtendService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserExtendService.java index bc22c3c..fc61104 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserExtendService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserExtendService.java @@ -3,6 +3,8 @@ package com.ruoyi.xq.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.xq.domain.UserExtend; +import java.math.BigDecimal; + /** * 用户邀请Service接口 * @@ -11,4 +13,5 @@ import com.ruoyi.xq.domain.UserExtend; */ public interface UserExtendService extends IService { + boolean withdraw(Long userId, BigDecimal withdrawPrice); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserVipService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserVipService.java index e0e47e0..9f195de 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserVipService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserVipService.java @@ -2,6 +2,7 @@ package com.ruoyi.xq.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.xq.domain.UserVip; +import com.ruoyi.xq.domain.VipOrder; /** * VIP用户Service接口 @@ -16,4 +17,5 @@ public interface UserVipService extends IService { UserVip getUserVipNormal(Long userId, Integer vipType); UserVip getByUserVipMaster(Long userId); + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserWithdrawService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserWithdrawService.java index b6cfa24..13253b1 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserWithdrawService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/UserWithdrawService.java @@ -1,7 +1,11 @@ package com.ruoyi.xq.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.xq.domain.UserWithdraw; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; /** * 用户提现审核Service接口 @@ -11,4 +15,7 @@ import com.ruoyi.xq.domain.UserWithdraw; */ public interface UserWithdrawService extends IService { + void saveWithdraw(Long userId, Long withdrawSettingId); + + Page pageApp(PageQuery pageQuery, WithdrawListPageQuery query); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/VipOrderService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/VipOrderService.java index 8e19f9c..ba7645e 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/VipOrderService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/VipOrderService.java @@ -10,4 +10,5 @@ import com.ruoyi.xq.domain.VipOrder; * @date 2024-03-04 */ public interface VipOrderService extends IService { + VipOrder createVipOrder(Long userId, Long vipPriceSettingId); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WithdrawSettingService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WithdrawSettingService.java index 824a4ef..db03679 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WithdrawSettingService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/WithdrawSettingService.java @@ -11,4 +11,5 @@ import com.ruoyi.xq.domain.WithdrawSetting; */ public interface WithdrawSettingService extends IService { + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserExtendServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserExtendServiceImpl.java index fa0e7f3..fcfc04d 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserExtendServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserExtendServiceImpl.java @@ -7,6 +7,8 @@ import com.ruoyi.xq.service.UserExtendService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.math.BigDecimal; + /** * 用户邀请Service业务层处理 * @@ -17,4 +19,11 @@ import org.springframework.stereotype.Service; @Service public class UserExtendServiceImpl extends ServiceImpl implements UserExtendService { + + @Override + public boolean withdraw(Long userId, BigDecimal withdrawPrice){ + boolean exists = baseMapper.decrIncome(userId, withdrawPrice); + return exists; + } + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserVipServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserVipServiceImpl.java index ff36831..9193a65 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserVipServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserVipServiceImpl.java @@ -23,7 +23,6 @@ import java.util.List; @Service public class UserVipServiceImpl extends ServiceImpl implements UserVipService { - @Override public UserVip getUserVip(Long userId, Integer vipType){ return this.getOne(Wrappers.lambdaQuery(UserVip.class) diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserWithdrawServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserWithdrawServiceImpl.java index cd17e3c..cf95452 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserWithdrawServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/UserWithdrawServiceImpl.java @@ -1,11 +1,30 @@ package com.ruoyi.xq.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.UserWithdraw; +import com.ruoyi.xq.domain.WithdrawSetting; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; +import com.ruoyi.xq.enums.common.AuditEnum; +import com.ruoyi.xq.enums.common.OrderTypeEnum; +import com.ruoyi.xq.enums.common.TraceIdEnum; +import com.ruoyi.xq.manager.OrderNoUtil; +import com.ruoyi.xq.manager.TraceIdManager; import com.ruoyi.xq.mapper.UserWithdrawMapper; +import com.ruoyi.xq.service.UserExtendService; +import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.UserWithdrawService; +import com.ruoyi.xq.service.WithdrawSettingService; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; /** * 用户提现审核Service业务层处理 @@ -17,4 +36,42 @@ import org.springframework.stereotype.Service; @Service public class UserWithdrawServiceImpl extends ServiceImpl implements UserWithdrawService { + @Autowired + private WithdrawSettingService withdrawSettingService; + @Autowired + private UserExtendService userExtendService; + @Autowired + private UserService userService; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveWithdraw(Long userId, Long withdrawSettingId) { + User user = userService.getById(userId); + WithdrawSetting withdrawSetting = withdrawSettingService.getById(withdrawSettingId); + if(withdrawSetting == null){ + throw new ServiceException("提现参数错误"); + } + boolean withdraw = userExtendService.withdraw(userId, withdrawSetting.getMoney()); + if(!withdraw){ + throw new ServiceException("提现失败,余额不足"); + } + String traceId = TraceIdManager.gen(TraceIdEnum.WITHDRAW); + String orderNo = OrderNoUtil.gen(OrderTypeEnum.WITHDRAW); + UserWithdraw userWithdraw = new UserWithdraw(); + userWithdraw.setUserId(user.getId()); + userWithdraw.setUsercode(user.getUsercode()); + userWithdraw.setTraceId(traceId); + userWithdraw.setOrderNo(orderNo); + userWithdraw.setWithdrawMoney(withdrawSetting.getMoney()); + userWithdraw.setRealWithdrawMoney(withdrawSetting.getMoney()); + userWithdraw.setWithdrawFees(BigDecimal.ZERO); + userWithdraw.setWithdrawFeesCate(BigDecimal.ZERO); + userWithdraw.setAuditStatus(AuditEnum.AUDITING.getCode()); + this.save(userWithdraw); + } + + @Override + public Page pageApp(PageQuery pageQuery, WithdrawListPageQuery query) { + return baseMapper.pageApp(pageQuery.build(), query); + } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/VipOrderServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/VipOrderServiceImpl.java index 9a8138a..2015a40 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/VipOrderServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/VipOrderServiceImpl.java @@ -1,10 +1,19 @@ package com.ruoyi.xq.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.xq.domain.User; import com.ruoyi.xq.domain.VipOrder; +import com.ruoyi.xq.domain.VipPrice; +import com.ruoyi.xq.enums.common.OrderTypeEnum; +import com.ruoyi.xq.enums.pay.PayStatusEnum; +import com.ruoyi.xq.manager.OrderNoUtil; import com.ruoyi.xq.mapper.VipOrderMapper; +import com.ruoyi.xq.service.UserService; import com.ruoyi.xq.service.VipOrderService; +import com.ruoyi.xq.service.VipPriceService; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -17,4 +26,29 @@ import org.springframework.stereotype.Service; @Service public class VipOrderServiceImpl extends ServiceImpl implements VipOrderService { + @Autowired + private VipPriceService vipPriceService; + @Autowired + private UserService userService; + @Override + public VipOrder createVipOrder(Long userId, Long vipPriceSettingId) { + VipPrice vipPrice = vipPriceService.getById(vipPriceSettingId); + if(vipPrice == null){ + throw new ServiceException("vip价格错误"); + } + String orderNo = OrderNoUtil.gen(OrderTypeEnum.VIP); + User user = userService.getById(userId); + VipOrder vipOrder = new VipOrder(); + vipOrder.setUserId(user.getId()); + vipOrder.setUsercode(user.getUsercode()); + vipOrder.setVipId(vipPrice.getId()); + vipOrder.setVipType(vipPrice.getVipType()); + vipOrder.setVipTime(vipPrice.getVipTime()); + vipOrder.setVipPrice(vipPrice.getVipPrice()); + vipOrder.setOrderNo(orderNo); + vipOrder.setOrderName(vipPrice.getVipName()); + vipOrder.setPayStatus(PayStatusEnum.READY_PAY.getCode()); + this.save(vipOrder); + return vipOrder; + } } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WithdrawSettingServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WithdrawSettingServiceImpl.java index 3a3e0a0..9993094 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WithdrawSettingServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/WithdrawSettingServiceImpl.java @@ -1,11 +1,19 @@ package com.ruoyi.xq.service.impl; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.xq.domain.WithdrawSetting; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListAppVo; +import com.ruoyi.xq.dto.app.withdraw.WithdrawListPageQuery; import com.ruoyi.xq.mapper.WithdrawSettingMapper; +import com.ruoyi.xq.service.UserExtendService; import com.ruoyi.xq.service.WithdrawSettingService; import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 提现配置Service业务层处理 diff --git a/ruoyi-xq/src/main/resources/mapper/xq/UserExtendMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/UserExtendMapper.xml index faa93a2..6dace55 100644 --- a/ruoyi-xq/src/main/resources/mapper/xq/UserExtendMapper.xml +++ b/ruoyi-xq/src/main/resources/mapper/xq/UserExtendMapper.xml @@ -4,19 +4,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - - - - + + update xq_user_extend + set income_coin = income_coin - #{price} + where income_coin - #{price} > 0 and user_id = #{userId} + diff --git a/ruoyi-xq/src/main/resources/mapper/xq/UserWithdrawMapper.xml b/ruoyi-xq/src/main/resources/mapper/xq/UserWithdrawMapper.xml index ec10585..97cdee3 100644 --- a/ruoyi-xq/src/main/resources/mapper/xq/UserWithdrawMapper.xml +++ b/ruoyi-xq/src/main/resources/mapper/xq/UserWithdrawMapper.xml @@ -25,6 +25,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +