feat(wallet): 新增主题购买与钱包交易模块
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
package com.yolo.keyborad.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.yolo.keyborad.model.entity.KeyboardThemePurchase;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 19:17
|
||||
*/
|
||||
|
||||
public interface KeyboardThemePurchaseMapper extends BaseMapper<KeyboardThemePurchase> {
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.yolo.keyborad.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.yolo.keyborad.model.entity.KeyboardWalletTransaction;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 18:54
|
||||
*/
|
||||
|
||||
public interface KeyboardWalletTransactionMapper extends BaseMapper<KeyboardWalletTransaction> {
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
package com.yolo.keyborad.model.entity;
|
||||
|
||||
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 io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 19:17
|
||||
*/
|
||||
|
||||
/**
|
||||
* 皮肤购买记录表(积分支付)
|
||||
*/
|
||||
@Schema(description="皮肤购买记录表(积分支付)")
|
||||
@Data
|
||||
@TableName(value = "keyboard_theme_purchase")
|
||||
public class KeyboardThemePurchase {
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
@Schema(description="")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 业务订单号
|
||||
*/
|
||||
@TableField(value = "order_no")
|
||||
@Schema(description="业务订单号")
|
||||
private String orderNo;
|
||||
|
||||
/**
|
||||
* 购买用户ID
|
||||
*/
|
||||
@TableField(value = "user_id")
|
||||
@Schema(description="购买用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 主题皮肤ID
|
||||
*/
|
||||
@TableField(value = "theme_id")
|
||||
@Schema(description="主题皮肤ID")
|
||||
private Long themeId;
|
||||
|
||||
/**
|
||||
* 皮肤原始所需积分
|
||||
*/
|
||||
@TableField(value = "cost_points")
|
||||
@Schema(description="皮肤原始所需积分")
|
||||
private Integer costPoints;
|
||||
|
||||
/**
|
||||
* 实际扣除积分
|
||||
*/
|
||||
@TableField(value = "paid_points")
|
||||
@Schema(description="实际扣除积分")
|
||||
private Integer paidPoints;
|
||||
|
||||
/**
|
||||
* 支付状态:0待支付 1已支付 2已关闭 3已退款
|
||||
*/
|
||||
@TableField(value = "pay_status")
|
||||
@Schema(description="支付状态:0待支付 1已支付 2已关闭 3已退款")
|
||||
private Short payStatus;
|
||||
|
||||
/**
|
||||
* 关联的积分扣费流水ID
|
||||
*/
|
||||
@TableField(value = "wallet_tx_id")
|
||||
@Schema(description="关联的积分扣费流水ID")
|
||||
private Long walletTxId;
|
||||
|
||||
/**
|
||||
* 已退款的积分数量
|
||||
*/
|
||||
@TableField(value = "refund_points")
|
||||
@Schema(description="已退款的积分数量")
|
||||
private Integer refundPoints;
|
||||
|
||||
/**
|
||||
* 积分退款完成时间
|
||||
*/
|
||||
@TableField(value = "refunded_at")
|
||||
@Schema(description="积分退款完成时间")
|
||||
private Date refundedAt;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(value = "created_at")
|
||||
@Schema(description="创建时间")
|
||||
private Date createdAt;
|
||||
|
||||
/**
|
||||
* 支付完成时间
|
||||
*/
|
||||
@TableField(value = "paid_at")
|
||||
@Schema(description="支付完成时间")
|
||||
private Date paidAt;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(value = "updated_at")
|
||||
@Schema(description="更新时间")
|
||||
private Date updatedAt;
|
||||
|
||||
/**
|
||||
* 备注或扩展信息
|
||||
*/
|
||||
@TableField(value = "remark")
|
||||
@Schema(description="备注或扩展信息")
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.yolo.keyborad.model.entity;
|
||||
|
||||
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 io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import lombok.Data;
|
||||
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 18:54
|
||||
*/
|
||||
|
||||
@Schema
|
||||
@Data
|
||||
@TableName(value = "keyboard_wallet_transaction")
|
||||
public class KeyboardWalletTransaction {
|
||||
/**
|
||||
* 主键 Id
|
||||
*/
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
@Schema(description="主键 Id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户 Id
|
||||
*/
|
||||
@TableField(value = "user_id")
|
||||
@Schema(description="用户 Id")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 订单 Id
|
||||
*/
|
||||
@TableField(value = "order_id")
|
||||
@Schema(description="订单 Id")
|
||||
private Long orderId;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
@TableField(value = "amount")
|
||||
@Schema(description="金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 变动类型
|
||||
*/
|
||||
@TableField(value = "\"type\"")
|
||||
@Schema(description="变动类型")
|
||||
private Short type;
|
||||
|
||||
/**
|
||||
* 变动前余额
|
||||
*/
|
||||
@TableField(value = "before_balance")
|
||||
@Schema(description="变动前余额")
|
||||
private BigDecimal beforeBalance;
|
||||
|
||||
/**
|
||||
* 变动后余额
|
||||
*/
|
||||
@TableField(value = "after_balance")
|
||||
@Schema(description="变动后余额")
|
||||
private BigDecimal afterBalance;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
@TableField(value = "description")
|
||||
@Schema(description="描述")
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(value = "created_at")
|
||||
@Schema(description="创建时间")
|
||||
private Date createdAt;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.yolo.keyborad.service;
|
||||
|
||||
import com.yolo.keyborad.model.entity.KeyboardThemePurchase;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 19:17
|
||||
*/
|
||||
|
||||
public interface KeyboardThemePurchaseService extends IService<KeyboardThemePurchase>{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.yolo.keyborad.service;
|
||||
|
||||
import com.yolo.keyborad.model.entity.KeyboardWalletTransaction;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 18:54
|
||||
*/
|
||||
|
||||
public interface KeyboardWalletTransactionService extends IService<KeyboardWalletTransaction>{
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.yolo.keyborad.service.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.yolo.keyborad.model.entity.KeyboardThemePurchase;
|
||||
import com.yolo.keyborad.mapper.KeyboardThemePurchaseMapper;
|
||||
import com.yolo.keyborad.service.KeyboardThemePurchaseService;
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 19:17
|
||||
*/
|
||||
|
||||
@Service
|
||||
public class KeyboardThemePurchaseServiceImpl extends ServiceImpl<KeyboardThemePurchaseMapper, KeyboardThemePurchase> implements KeyboardThemePurchaseService{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.yolo.keyborad.service.impl;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.yolo.keyborad.mapper.KeyboardWalletTransactionMapper;
|
||||
import com.yolo.keyborad.model.entity.KeyboardWalletTransaction;
|
||||
import com.yolo.keyborad.service.KeyboardWalletTransactionService;
|
||||
/*
|
||||
* @author: ziin
|
||||
* @date: 2025/12/10 18:54
|
||||
*/
|
||||
|
||||
@Service
|
||||
public class KeyboardWalletTransactionServiceImpl extends ServiceImpl<KeyboardWalletTransactionMapper, KeyboardWalletTransaction> implements KeyboardWalletTransactionService{
|
||||
|
||||
}
|
||||
27
src/main/resources/mapper/KeyboardThemePurchaseMapper.xml
Normal file
27
src/main/resources/mapper/KeyboardThemePurchaseMapper.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?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.yolo.keyborad.mapper.KeyboardThemePurchaseMapper">
|
||||
<resultMap id="BaseResultMap" type="com.yolo.keyborad.model.entity.KeyboardThemePurchase">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table keyboard_theme_purchase-->
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="order_no" jdbcType="VARCHAR" property="orderNo" />
|
||||
<result column="user_id" jdbcType="BIGINT" property="userId" />
|
||||
<result column="theme_id" jdbcType="BIGINT" property="themeId" />
|
||||
<result column="cost_points" jdbcType="INTEGER" property="costPoints" />
|
||||
<result column="paid_points" jdbcType="INTEGER" property="paidPoints" />
|
||||
<result column="pay_status" jdbcType="SMALLINT" property="payStatus" />
|
||||
<result column="wallet_tx_id" jdbcType="BIGINT" property="walletTxId" />
|
||||
<result column="refund_points" jdbcType="INTEGER" property="refundPoints" />
|
||||
<result column="refunded_at" jdbcType="TIMESTAMP" property="refundedAt" />
|
||||
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
|
||||
<result column="paid_at" jdbcType="TIMESTAMP" property="paidAt" />
|
||||
<result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
|
||||
<result column="remark" jdbcType="VARCHAR" property="remark" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, order_no, user_id, theme_id, cost_points, paid_points, pay_status, wallet_tx_id,
|
||||
refund_points, refunded_at, created_at, paid_at, updated_at, remark
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,22 @@
|
||||
<?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.yolo.keyborad.mapper.KeyboardWalletTransactionMapper">
|
||||
<resultMap id="BaseResultMap" type="com.yolo.keyborad.model.entity.KeyboardWalletTransaction">
|
||||
<!--@mbg.generated-->
|
||||
<!--@Table keyboard_wallet_transaction-->
|
||||
<id column="id" jdbcType="BIGINT" property="id" />
|
||||
<result column="user_id" jdbcType="BIGINT" property="userId" />
|
||||
<result column="order_id" jdbcType="BIGINT" property="orderId" />
|
||||
<result column="amount" jdbcType="NUMERIC" property="amount" />
|
||||
<result column="type" jdbcType="SMALLINT" property="type" />
|
||||
<result column="before_balance" jdbcType="NUMERIC" property="beforeBalance" />
|
||||
<result column="after_balance" jdbcType="NUMERIC" property="afterBalance" />
|
||||
<result column="description" jdbcType="VARCHAR" property="description" />
|
||||
<result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
|
||||
</resultMap>
|
||||
<sql id="Base_Column_List">
|
||||
<!--@mbg.generated-->
|
||||
id, user_id, order_id, amount, "type", before_balance, after_balance, description,
|
||||
created_at
|
||||
</sql>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user