phpcjl
2024-12-04 52164d69392c26b6793629d720e9a293abed6257
1.补充文档
5个文件已修改
2个文件已添加
110 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/VipSetting.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/VipSetting.java
@@ -55,6 +55,10 @@
    @TableField("vip_withdrawal_min_amount")
    private BigDecimal vipWithdrawalMinAmount;
    @ApiModelProperty(value = "提现手续费")
    @TableField("vip_withdrawal_fee")
    private BigDecimal vipWithdrawalFee;
    @ApiModelProperty(value = "积分转赠权限 1开0关")
    @TableField("vip_gift_role")
    private Integer vipGiftRole;
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
@@ -5,18 +5,20 @@
import com.ruoyi.account.api.model.BalanceChangeRecord;
import com.ruoyi.account.service.AppUserService;
import com.ruoyi.account.service.BalanceChangeRecordService;
import com.ruoyi.account.service.VipSettingService;
import com.ruoyi.account.service.WalletService;
import com.ruoyi.account.vo.WalletVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.order.feignClient.RemoteOrderGoodsClient;
import com.ruoyi.order.model.Order;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.ruoyi.order.model.Order;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,7 +26,10 @@
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.time.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.YearMonth;
import java.util.List;
import java.util.stream.Collectors;
@@ -42,6 +47,8 @@
    private RemoteOrderGoodsClient remoteOrderGoodsClient;
    @Resource
    private AppUserService appUserService;
    @Resource
    private VipSettingService vipSettingService;
    /**
     * 钱包详情
@@ -50,7 +57,9 @@
    @ApiOperation(value = "钱包详情", notes = "钱包详情")
    public R<WalletVO> detail() {
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        VipSetting vipSetting = vipSettingService.getVipSettingByUserId(loginUserApplet.getUserid());
        WalletVO walletVO = walletService.getWalletByUserId(loginUserApplet.getUserid());
        walletVO.setVipWithdrawalFee(vipSetting.getVipWithdrawalFee());
        return R.ok(walletVO);
    }
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/VipSettingService.java
New file
@@ -0,0 +1,10 @@
package com.ruoyi.account.service;
import com.ruoyi.other.api.domain.VipSetting;
public interface VipSettingService {
    VipSetting getVipSettingById(Integer id);
    VipSetting getVipSettingByUserId(Long appUserId);
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/VipSettingServiceImpl.java
New file
@@ -0,0 +1,40 @@
package com.ruoyi.account.service.impl;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.service.VipSettingService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.other.api.feignClient.RemoteVipSettingClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class VipSettingServiceImpl implements VipSettingService {
    @Resource
    private RemoteVipSettingClient remoteVipSettingClient;
    @Resource
    private AppUserClient appUserClient;
    @Override
    public VipSetting getVipSettingById(Integer id) {
        R<VipSetting> vipSettingById = remoteVipSettingClient.getVipSettingById(id);
        if (!R.isSuccess(vipSettingById)){
            throw new ServiceException("会员等级获取失败");
        }
        return vipSettingById.getData();
    }
    @Override
    public VipSetting getVipSettingByUserId(Long appUserId) {
        AppUser appUser = appUserClient.getAppUserById(appUserId);
        if(null == appUser){
            throw new ServiceException("用户不存在");
        }
        return getVipSettingById(appUser.getVipId());
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java
@@ -3,19 +3,23 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
import com.ruoyi.account.api.model.WithdrawalRequests;
import com.ruoyi.account.dto.WithdrawalRequestsDTO;
import com.ruoyi.account.mapper.WithdrawalRequestsMapper;
import com.ruoyi.account.api.model.WithdrawalRequests;
import com.ruoyi.account.service.VipSettingService;
import com.ruoyi.account.service.WithdrawalRequestsService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.other.api.domain.VipSetting;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
 * <p>
@@ -31,17 +35,40 @@
    private TokenService tokenService;
    @Resource
    private AppUserClient appUserClient;
    @Resource
    private VipSettingService vipSettingService;
    public static final BigDecimal MAX_WITHDRAWAL_AMOUNT = new BigDecimal("200");
    public static final BigDecimal VIP_WITHDRAWAL_FEE_DENOMINATOR = new BigDecimal("100");
    @Override
    public void withdrawalApply(WithdrawalRequestsDTO params) {
        if (params.getWithdrawalAmount().compareTo(new BigDecimal("200")) > 0) {
        if (params.getWithdrawalAmount().compareTo(MAX_WITHDRAWAL_AMOUNT) > 0) {
            throw new ServiceException("提现失败,单次提现金额不能超过200元!");
        }
        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
        AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid());
        if (appUser.getWithdrawableAmount().compareTo(params.getWithdrawalAmount()) < 0) {
            throw new ServiceException("提现失败,可提现金额不足!");
        }
        Integer vipId = appUser.getVipId();
        VipSetting vipSetting = vipSettingService.getVipSettingById(vipId);
        if (vipSetting.getVipWithdrawalRole() == 0) {
            throw new ServiceException("提现失败,当前会员等级不允许提现!");
        }
        BigDecimal vipWithdrawalMinAmount = vipSetting.getVipWithdrawalMinAmount();
        if (params.getWithdrawalAmount().compareTo(vipWithdrawalMinAmount) < 0) {
            throw new ServiceException("提现失败,提现金额不能小于" + vipWithdrawalMinAmount + "元!");
        }
        // 提现手续费
        BigDecimal vipWithdrawalFee = vipSetting.getVipWithdrawalFee()
                .divide(VIP_WITHDRAWAL_FEE_DENOMINATOR, 2, RoundingMode.HALF_UP);
        // 减去手续费
        params.setWithdrawalAmount(params.getWithdrawalAmount()
                .subtract(params.getWithdrawalAmount().multiply(vipWithdrawalFee)));
        WithdrawalRequests withdrawalRequests = new WithdrawalRequests();
        BeanUtils.copyBeanProp(withdrawalRequests, params);
@@ -50,4 +77,5 @@
        withdrawalRequests.setAuditStatus(1);
        save(withdrawalRequests);
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/WalletVO.java
@@ -33,4 +33,7 @@
    @ApiModelProperty(value = "分销总金额")
    private BigDecimal totalDistributionAmount;
    @ApiModelProperty(value = "提现手续费")
    private BigDecimal vipWithdrawalFee;
}
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java
@@ -10,16 +10,10 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.other.api.domain.Shop;
import com.ruoyi.other.api.domain.Technician;
import com.ruoyi.other.enums.ShopStatus;
import com.ruoyi.other.service.ShopService;
import com.ruoyi.other.service.TechnicianService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.other.vo.NearbyShopVO;
import com.ruoyi.other.vo.ShopDetailVO;
import com.ruoyi.other.vo.VerifiableShopVo;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.*;