feat:兑换比例配置
This commit is contained in:
1 parent
b9ea43afdd
commit
c198254f55
10 files changed
+127
-26
No files matched your search
+4
@@ -48,6 +48,10 @@ public class MemberConfigBaseVO {
|
||||
@NotNull(message = "vip查看微信次数不能为空")
|
||||
@Schema(description = "vip查看微信次数")
|
||||
private Integer vipLookWechtCout;
|
||||
|
||||
@NotNull(message = "礼物提现比例不能为空")
|
||||
@Schema(description = "礼物提现比例")
|
||||
private Integer giftCashRatio;
|
||||
|
||||
@Schema(description = "举报类型")
|
||||
private List<String> reportTypeList;
|
||||
|
||||
+6
@@ -78,6 +78,12 @@ public class MemberConfigDO extends BaseDO {
|
||||
*/
|
||||
private Integer vipLookWechtCout;
|
||||
|
||||
/**
|
||||
* 礼物提现比例
|
||||
* `giftCashRatio`可以兑换1人民币
|
||||
*/
|
||||
private Integer giftCashRatio;
|
||||
|
||||
/**
|
||||
* 举报类型
|
||||
*/
|
||||
|
||||
+11
-7
@@ -193,12 +193,16 @@ public class RecentServiceImpl implements RecentService {
|
||||
}
|
||||
}
|
||||
List<MemberRecentOperateEnum> likeActionList = Arrays.asList(MemberRecentOperateEnum.MEMBER_COLLECT, MemberRecentOperateEnum.RECENT_LIKE);
|
||||
OperationDO operationDO = operationMapper.selectOne(new LambdaQueryWrapperX<OperationDO>()
|
||||
.eq(OperationDO::getMemberId, dto.getMemberId())
|
||||
.eq(OperationDO::getOperatorMemberId, dto.getOperatorMemberId())
|
||||
.eq(OperationDO::getBizType, dto.getAction().getType())
|
||||
.eq(ObjectUtil.isNotEmpty(dto.getMemberRecentId()), OperationDO::getMemberRecentId, dto.getMemberRecentId())
|
||||
);
|
||||
List<MemberRecentOperateEnum> notFindActionList = Arrays.asList(MemberRecentOperateEnum.MEMBER_REPORT);
|
||||
OperationDO operationDO = null;
|
||||
if (!notFindActionList.contains(dto.getAction())) {
|
||||
operationMapper.selectOne(new LambdaQueryWrapperX<OperationDO>()
|
||||
.eq(OperationDO::getMemberId, dto.getMemberId())
|
||||
.eq(OperationDO::getOperatorMemberId, dto.getOperatorMemberId())
|
||||
.eq(OperationDO::getBizType, dto.getAction().getType())
|
||||
.eq(ObjectUtil.isNotEmpty(dto.getMemberRecentId()), OperationDO::getMemberRecentId, dto.getMemberRecentId())
|
||||
);
|
||||
}
|
||||
if (likeActionList.contains(dto.getAction())) {
|
||||
if (ObjectUtil.isNotEmpty(operationDO)) {
|
||||
if (ObjectUtil.isEmpty(operationDO.getCancelTime())) {
|
||||
@@ -238,7 +242,7 @@ public class RecentServiceImpl implements RecentService {
|
||||
}
|
||||
// 屏蔽/拉黑
|
||||
if (ObjectUtil.equals(dto.getAction(), MemberRecentOperateEnum.MEMBER_SHIELD)) {
|
||||
|
||||
|
||||
}
|
||||
// 举报
|
||||
List<MemberRecentOperateEnum> reportList = new ArrayList<MemberRecentOperateEnum>() {{
|
||||
|
||||
+3
-1
@@ -21,7 +21,9 @@ public enum PayWalletBizTypeEnum implements ArrayValuable<Integer> {
|
||||
PAYMENT_REFUND(4, "支付退款"),
|
||||
UPDATE_BALANCE(5, "更新余额"),
|
||||
BROKERAGE_WITHDRAW(6, "分佣提现"),
|
||||
GIFT(7, "送礼物");
|
||||
GIFT(7, "送礼物"),
|
||||
RECEIVE_GIFT(8, "收到礼物"),
|
||||
;
|
||||
|
||||
/**
|
||||
* 业务分类
|
||||
|
||||
+9
@@ -16,4 +16,13 @@ public class AppPayWalletRespVO {
|
||||
@Schema(description = "累计充值,单位分", requiredMode = Schema.RequiredMode.REQUIRED, example = "2000")
|
||||
private Integer totalRecharge;
|
||||
|
||||
@Schema(description = "(礼物)钱包余额,单位分")
|
||||
private Integer giftBalance;
|
||||
|
||||
@Schema(description = "(礼物)累计支出,单位分")
|
||||
private Integer giftTotalExpense;
|
||||
|
||||
@Schema(description = "(礼物)累计充值,单位分")
|
||||
private Integer giftTotalRecharge;
|
||||
|
||||
}
|
||||
+25
-3
@@ -12,7 +12,7 @@ import lombok.Data;
|
||||
*
|
||||
* @author jason
|
||||
*/
|
||||
@TableName(value ="pay_wallet")
|
||||
@TableName(value = "pay_wallet")
|
||||
@KeySequence("pay_wallet_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
public class PayWalletDO extends BaseDO {
|
||||
@@ -25,14 +25,15 @@ public class PayWalletDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 用户 id
|
||||
*
|
||||
* <p>
|
||||
* 关联 MemberUserDO 的 id 编号
|
||||
* 关联 AdminUserDO 的 id 编号
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户类型, 预留 多商户转帐可能需要用到
|
||||
*
|
||||
* <p>
|
||||
* 关联 {@link UserTypeEnum}
|
||||
*/
|
||||
private Integer userType;
|
||||
@@ -51,9 +52,30 @@ public class PayWalletDO extends BaseDO {
|
||||
* 累计支出,单位分
|
||||
*/
|
||||
private Integer totalExpense;
|
||||
|
||||
/**
|
||||
* 累计充值,单位分
|
||||
*/
|
||||
private Integer totalRecharge;
|
||||
|
||||
/**
|
||||
* 礼物余额,单位分
|
||||
*/
|
||||
private Integer giftBalance;
|
||||
|
||||
/**
|
||||
* 礼物累计支出,单位分
|
||||
*/
|
||||
private Integer giftTotalExpense;
|
||||
|
||||
/**
|
||||
* 礼物累计充值,单位分
|
||||
*/
|
||||
private Integer giftTotalRecharge;
|
||||
|
||||
/**
|
||||
* 礼物冻结金额,单位分
|
||||
*/
|
||||
private Integer giftFreezePrice;
|
||||
|
||||
}
|
||||
+30
-14
@@ -28,7 +28,7 @@ public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
|
||||
/**
|
||||
* 当消费退款时候, 更新钱包
|
||||
*
|
||||
* @param id 钱包 id
|
||||
* @param id 钱包 id
|
||||
* @param price 消费金额
|
||||
*/
|
||||
default int updateWhenConsumptionRefund(Long id, Integer price) {
|
||||
@@ -43,9 +43,9 @@ public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
|
||||
* 当消费时候, 更新钱包
|
||||
*
|
||||
* @param price 消费金额
|
||||
* @param id 钱包 id
|
||||
* @param id 钱包 id
|
||||
*/
|
||||
default int updateWhenConsumption(Long id, Integer price){
|
||||
default int updateWhenConsumption(Long id, Integer price) {
|
||||
LambdaUpdateWrapper<PayWalletDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<PayWalletDO>()
|
||||
.setSql(" balance = balance - " + price
|
||||
+ ", total_expense = total_expense + " + price)
|
||||
@@ -57,10 +57,10 @@ public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
|
||||
/**
|
||||
* 当充值的时候,更新钱包
|
||||
*
|
||||
* @param id 钱包 id
|
||||
* @param id 钱包 id
|
||||
* @param price 钱包金额
|
||||
*/
|
||||
default int updateWhenRecharge(Long id, Integer price){
|
||||
default int updateWhenRecharge(Long id, Integer price) {
|
||||
LambdaUpdateWrapper<PayWalletDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<PayWalletDO>()
|
||||
.setSql(" balance = balance + " + price
|
||||
+ ", total_recharge = total_recharge + " + price)
|
||||
@@ -71,23 +71,23 @@ public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
|
||||
/**
|
||||
* 增加余额的时候,更新钱包
|
||||
*
|
||||
* @param id 钱包 id
|
||||
* @param id 钱包 id
|
||||
* @param price 钱包金额
|
||||
*/
|
||||
default void updateWhenAdd(Long id, Integer price) {
|
||||
LambdaUpdateWrapper<PayWalletDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<PayWalletDO>()
|
||||
.setSql(" balance = balance + " + price)
|
||||
.eq(PayWalletDO::getId, id);
|
||||
.setSql(" balance = balance + " + price)
|
||||
.eq(PayWalletDO::getId, id);
|
||||
update(null, lambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 冻结钱包部分余额
|
||||
*
|
||||
* @param id 钱包 id
|
||||
* @param id 钱包 id
|
||||
* @param price 冻结金额
|
||||
*/
|
||||
default int freezePrice(Long id, Integer price){
|
||||
default int freezePrice(Long id, Integer price) {
|
||||
LambdaUpdateWrapper<PayWalletDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<PayWalletDO>()
|
||||
.setSql(" balance = balance - " + price
|
||||
+ ", freeze_price = freeze_price + " + price)
|
||||
@@ -99,10 +99,10 @@ public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
|
||||
/**
|
||||
* 解冻钱包余额
|
||||
*
|
||||
* @param id 钱包 id
|
||||
* @param id 钱包 id
|
||||
* @param price 解冻金额
|
||||
*/
|
||||
default int unFreezePrice(Long id, Integer price){
|
||||
default int unFreezePrice(Long id, Integer price) {
|
||||
LambdaUpdateWrapper<PayWalletDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<PayWalletDO>()
|
||||
.setSql(" balance = balance + " + price
|
||||
+ ", freeze_price = freeze_price - " + price)
|
||||
@@ -114,10 +114,10 @@ public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
|
||||
/**
|
||||
* 当充值退款时, 更新钱包
|
||||
*
|
||||
* @param id 钱包 id
|
||||
* @param id 钱包 id
|
||||
* @param price 退款金额
|
||||
*/
|
||||
default int updateWhenRechargeRefund(Long id, Integer price){
|
||||
default int updateWhenRechargeRefund(Long id, Integer price) {
|
||||
LambdaUpdateWrapper<PayWalletDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<PayWalletDO>()
|
||||
.setSql(" freeze_price = freeze_price - " + price
|
||||
+ ", total_recharge = total_recharge - " + price)
|
||||
@@ -127,6 +127,22 @@ public interface PayWalletMapper extends BaseMapperX<PayWalletDO> {
|
||||
return update(null, lambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
|
||||
/* *************************************** start 礼物相关 start *************************************** */
|
||||
|
||||
/**
|
||||
* 增加余额(礼物)的时候,更新钱包
|
||||
*/
|
||||
default void updateGiftWhenAdd(Long id, Integer price) {
|
||||
LambdaUpdateWrapper<PayWalletDO> lambdaUpdateWrapper = new LambdaUpdateWrapper<PayWalletDO>()
|
||||
.setSql(" gift_balance = gift_balance + " + price)
|
||||
.eq(PayWalletDO::getId, id);
|
||||
update(null, lambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
|
||||
/* *************************************** end 礼物相关 end *************************************** */
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -166,7 +166,7 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService {
|
||||
payWalletService.reduceWalletBalance(currentWallet.getId(), userTransitionObj.getBizId(), PayWalletBizTypeEnum.GIFT, gift.getPrice());
|
||||
|
||||
// 添加目标用户余额
|
||||
payWalletService.addWalletBalance(targetWallet.getId(), String.valueOf(userTransitionObj.getId()), PayWalletBizTypeEnum.GIFT, gift.getPrice());
|
||||
payWalletService.addWalletGiftBalance(targetWallet.getId(), String.valueOf(userTransitionObj.getId()), PayWalletBizTypeEnum.RECEIVE_GIFT, gift.getPrice());
|
||||
|
||||
return userTransitionObj.getId();
|
||||
}
|
||||
|
||||
+5
@@ -81,6 +81,11 @@ public interface PayWalletService {
|
||||
PayWalletTransactionDO addWalletBalance(Long walletId, String bizId,
|
||||
PayWalletBizTypeEnum bizType, Integer price);
|
||||
|
||||
/**
|
||||
* 增加钱包余额(送礼物)
|
||||
*/
|
||||
PayWalletTransactionDO addWalletGiftBalance(Long walletId, String bizId, PayWalletBizTypeEnum bizType, Integer price);
|
||||
|
||||
/**
|
||||
* 冻结钱包部分余额
|
||||
*
|
||||
|
||||
+33
@@ -216,6 +216,39 @@ public class PayWalletServiceImpl implements PayWalletService {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加钱包余额(送礼物)
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@SneakyThrows
|
||||
public PayWalletTransactionDO addWalletGiftBalance(Long walletId, String bizId, PayWalletBizTypeEnum bizType, Integer price) {
|
||||
// 1. 获取钱包
|
||||
PayWalletDO payWallet = getWallet(walletId);
|
||||
if (payWallet == null) {
|
||||
log.error("[addWalletBalance][用户钱包({})不存在]", walletId);
|
||||
throw exception(WALLET_NOT_FOUND);
|
||||
}
|
||||
// 2. 加锁,更新钱包余额(目的:避免钱包流水的并发更新时,余额变化不连贯)
|
||||
return lockRedisDAO.lock(walletId, UPDATE_TIMEOUT_MILLIS, () -> {
|
||||
// 3. 更新钱包金额
|
||||
switch (bizType) {
|
||||
case RECEIVE_GIFT: // 收到礼物
|
||||
walletMapper.updateGiftWhenAdd(payWallet.getId(), price);
|
||||
break;
|
||||
default: {
|
||||
throw new UnsupportedOperationException("待实现:" + bizType);
|
||||
}
|
||||
}
|
||||
|
||||
// 4. 生成钱包流水
|
||||
WalletTransactionCreateReqBO transactionCreateReqBO = new WalletTransactionCreateReqBO()
|
||||
.setWalletId(payWallet.getId()).setPrice(price).setBalance(payWallet.getBalance() + price)
|
||||
.setBizId(bizId).setBizType(bizType.getType()).setTitle(bizType.getDescription());
|
||||
return walletTransactionService.createWalletTransaction(transactionCreateReqBO);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void freezePrice(Long id, Integer price) {
|
||||
int updateCounts = walletMapper.freezePrice(id, price);
|
||||
|
||||
Reference in new issue
Block a user