80334f5f4eaef1336ac222aa2ab8a8d169399e90..b42c0777927e79bc77996b508a534ee4e56fd4c2
5 days ago zj
1
b42c07 diff | tree
5 days ago zj
1
2e3e12 diff | tree
11 files modified
106 ■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java 7 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java 7 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java 4 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemController.java 26 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java 4 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java 5 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeLeverApplyOrderController.java 7 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/item/query/ItemQuery.java 10 ●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/RealNameAuthRecordService.java 9 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/impl/RealNameAuthRecordServiceImpl.java 15 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/impl/WithdrawServiceImpl.java 12 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java
@@ -263,6 +263,9 @@
        if (!party.isEnabled()) {
            throw new YamiShopBindException("用户已锁定");
        }
        if ("recharge".equals(direction)) {
            realNameAuthRecordService.requireApproved(party, false);
        }
        // 手续费
        double fee = 0;
        if ("withdraw".equals(direction)) {
@@ -293,8 +296,8 @@
            if (party_kyc==null){
                party_kyc=new RealNameAuthRecord();
            }
            if (!(party_kyc.getStatus() == 2) && "true".equals(this.sysparaService.find("withdraw_by_kyc").getSvalue())) {
                throw new YamiShopBindException("未实名认证,无提现权限");
            if ("true".equals(this.sysparaService.find("withdraw_by_kyc").getSvalue())) {
                realNameAuthRecordService.requireApproved(party, false);
            }
            HighLevelAuthRecord party_kycHighLevel = highLevelAuthRecordService.findByUserId(partyId);
            if (party_kycHighLevel==null){
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -22,6 +22,7 @@
import com.yami.trading.common.util.ThreadUtils;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.MarketOpenChecker;
import com.yami.trading.service.RealNameAuthRecordService;
import com.yami.trading.service.SessionTokenService;
import com.yami.trading.service.WalletService;
import com.yami.trading.service.contract.ContractApplyOrderService;
@@ -96,6 +97,8 @@
    private SessionTokenService sessionTokenService;
    @Autowired
    TipService tipService;
    @Autowired
    private RealNameAuthRecordService realNameAuthRecordService;
//    @Autowired
//    private ExchangeRateService exchangeRateService;
@@ -228,6 +231,7 @@
                throw new YamiShopBindException("用户已锁定");
            }
            validateTradePermission(user);
            realNameAuthRecordService.requireApproved(user, true);
            Syspara syspara = sysparaService.find("stop_user_internet");
            String stopUserInternet = syspara.getSvalue();
@@ -583,9 +587,6 @@
        // 模拟账户不做二步校验限制
        if (user.getAccountType() != null && user.getAccountType() == 1) {
            return;
        }
        if (!user.isGoogleAuthBind() || StringUtils.isEmptyString(user.getSafePassword())) {
            throw new YamiShopBindException("请先完成两步认证并设置资金密码后再交易");
        }
    }
}
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
@@ -19,6 +19,7 @@
import com.yami.trading.common.util.ThreadUtils;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.MarketOpenChecker;
import com.yami.trading.service.RealNameAuthRecordService;
import com.yami.trading.service.SessionTokenService;
import com.yami.trading.service.WalletService;
import com.yami.trading.service.future.FuturesOrderService;
@@ -72,6 +73,8 @@
    SysparaService sysparaService;
    @Autowired
    TipService tipService;
    @Autowired
    RealNameAuthRecordService realNameAuthRecordService;
//    @Autowired
//    private ExchangeRateService exchangeRateService;
@@ -170,6 +173,7 @@
            if (!party.isEnabled()) {
                throw new YamiShopBindException("用户已锁定");
            }
            realNameAuthRecordService.requireApproved(party, true);
            if (null == object || !party.getUserId().equals((String) object)) {
                throw new BusinessException("请稍后再试");
            }
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiItemController.java
@@ -254,9 +254,21 @@
            queryWrapper.notIn(ObjectUtil.notEqual("1", itemQuery.getMarketIndex()), "symbol", symbolsNotCotnains);
        }
        List<String> symbols = Lists.newArrayList();
        if (StrUtil.isNotEmpty(symbol)) {
            symbols = Splitter.on(",").splitToList(symbol);
        // 搜索:name / symbol 均支持对 NAME、SYMBOL、en_name 模糊匹配。
        // 仅当 symbol 为逗号分隔的多代码时,才按精确 symbol 列表筛选。
        String nameParam = StrUtil.trim(itemQuery.getName());
        String keywordParam = StrUtil.trim(itemQuery.getKeyword());
        String symbolParam = StrUtil.trim(symbol);
        List<String> symbolFilter = Lists.newArrayList();
        String keyword = null;
        if (StrUtil.isNotEmpty(symbolParam) && symbolParam.contains(",")) {
            symbolFilter = Splitter.on(",").trimResults().omitEmptyStrings().splitToList(symbolParam);
        } else if (StrUtil.isNotBlank(keywordParam)) {
            keyword = keywordParam;
        } else if (StrUtil.isNotBlank(nameParam)) {
            keyword = nameParam;
        } else if (StrUtil.isNotBlank(symbolParam)) {
            keyword = symbolParam;
        }
        if ("1".equalsIgnoreCase(itemQuery.getBoardType())) {
@@ -264,9 +276,11 @@
        } else if ("2".equalsIgnoreCase(itemQuery.getBoardType())) {
            queryWrapper.ne("category", "global");
        }
        queryWrapper.in(CollectionUtil.isNotEmpty(symbols), "symbol", symbols);
        String name = itemQuery.getName();
        queryWrapper.and(StringUtils.isNotEmpty(name), itemWrapper -> itemWrapper.like("name", name).or().like("symbol", name).or().like("en_name", name));
        queryWrapper.in(CollectionUtil.isNotEmpty(symbolFilter), "symbol", symbolFilter);
        if (StrUtil.isNotBlank(keyword)) {
            final String kw = keyword;
            queryWrapper.and(w -> w.like("name", kw).or().like("symbol", kw).or().like("en_name", kw));
        }
        queryWrapper.eq(StrUtil.isNotBlank(type), "type", type);
        queryWrapper.like(StrUtil.isNotBlank(category), "category", category);
        // 倒序吗? TODO
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java
@@ -9,6 +9,7 @@
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.common.util.StringUtils;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.RealNameAuthRecordService;
import com.yami.trading.service.RechargeBlockchainOrderService;
import com.yami.trading.service.SessionTokenService;
import com.yami.trading.service.c2c.C2cOrderService;
@@ -48,6 +49,8 @@
    WalletLogService walletLogService;
    @Autowired
    C2cOrderService c2cOrderService;
    @Autowired
    RealNameAuthRecordService realNameAuthRecordService;
    /**
     * 首次进入页面,传递session_token
@@ -104,6 +107,7 @@
        if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
            throw new YamiShopBindException("无权限");
        }
        realNameAuthRecordService.requireApproved(party, false);
        // 充值申请中的订单是否只能唯一:1唯一,2不限制
        double recharge_only_one = Double.valueOf(sysparaService.find("recharge_only_one").getSvalue());
        // 用户未结束银行卡订单数量
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
@@ -239,6 +239,7 @@
            throw new YamiShopBindException("用户已禁用");
        }
        validateTradePermission(party);
        realNameAuthRecordService.requireApproved(party, true);
        Syspara syspara = sysparaService.find("stop_user_internet");
        String stopUserInternet = syspara.getSvalue();
        if (org.apache.commons.lang3.StringUtils.isNotEmpty(stopUserInternet)) {
@@ -431,6 +432,7 @@
            throw new YamiShopBindException("用户已禁用!");
        }
        validateTradePermission(party);
        realNameAuthRecordService.requireApproved(party, true);
        symbol = itemService.getCleanSymbol(symbol);
        symbol_to = itemService.getCleanSymbol(symbol_to);
        String relation_order_no = UUID.randomUUID().toString();
@@ -573,9 +575,6 @@
        // 模拟账户不做二步校验限制
        if (user.getAccountType() != null && user.getAccountType() == 1) {
            return;
        }
        if (!user.isGoogleAuthBind() || StringUtils.isEmptyString(user.getSafePassword())) {
            throw new YamiShopBindException("请先完成两步认证并设置资金密码后再交易");
        }
    }
trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeLeverApplyOrderController.java
@@ -21,6 +21,7 @@
import com.yami.trading.common.util.StringUtils;
import com.yami.trading.common.util.ThreadUtils;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.RealNameAuthRecordService;
import com.yami.trading.service.SessionTokenService;
import com.yami.trading.service.WalletService;
import com.yami.trading.service.data.DataService;
@@ -76,6 +77,8 @@
    @Autowired
    ExchangeLeverOrderService exchangeLeverOrderService;
    @Autowired
    RealNameAuthRecordService realNameAuthRecordService;
    /**
     * 开仓页面参数
@@ -199,6 +202,7 @@
            throw new YamiShopBindException("用户已禁用");
        }
        validateTradePermission(party);
        realNameAuthRecordService.requireApproved(party, true);
        ExchangeLeverApplyOrder order = new ExchangeLeverApplyOrder();
        order.setPartyId(SecurityUtils.getCurrentUserId());
        order.setSymbol(symbol);
@@ -505,9 +509,6 @@
        // 模拟账户不做二步校验限制
        if (user.getAccountType() != null && user.getAccountType() == 1) {
            return;
        }
        if (!user.isGoogleAuthBind() || StringUtils.isEmptyString(user.getSafePassword())) {
            throw new YamiShopBindException("请先完成两步认证并设置资金密码后再交易");
        }
    }
trading-order-bean/src/main/java/com/yami/trading/bean/item/query/ItemQuery.java
@@ -24,14 +24,20 @@
    private static final long serialVersionUID = 1L;
    /**
     * name
     * 搜索关键词,模糊匹配币种名称(NAME)、代码(SYMBOL)
     */
    @ApiParam(value = "name")
    @Query(type = QueryType.LIKE)
    private String name;
    /**
     * 代码
     * 统一搜索关键词(与 name 等价,便于前端传参)
     */
    @ApiParam(value = "keyword")
    private String keyword;
    /**
     * 代码(SYMBOL)。单个值时作为搜索关键词模糊匹配 NAME/SYMBOL;逗号分隔时为精确 symbol 列表筛选
     */
    @ApiParam(value = "symbol")
    @Query(type = QueryType.LIKE)
trading-order-service/src/main/java/com/yami/trading/service/RealNameAuthRecordService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.trading.bean.model.RealNameAuthRecord;
import com.yami.trading.bean.model.User;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -17,6 +18,14 @@
     */
    boolean isPass(String userId);
    /**
     * 校验用户已完成实名认证(审核通过)。
     *
     * @param user           用户
     * @param skipSimAccount 模拟账户是否跳过(开仓等场景)
     */
    void requireApproved(User user, boolean skipSimAccount);
    Page pageRecord(Page page, String rolename, String idNumber, String status,String userCode, List<String> userIds);
    long waitCount(List<String> userIds);
trading-order-service/src/main/java/com/yami/trading/service/impl/RealNameAuthRecordServiceImpl.java
@@ -7,6 +7,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yami.trading.bean.model.HighLevelAuthRecord;
import com.yami.trading.bean.model.RealNameAuthRecord;
import com.yami.trading.bean.model.User;
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.dao.user.RealNameAuthRecordMapper;
import com.yami.trading.service.RealNameAuthRecordService;
import org.apache.ibatis.annotations.Param;
@@ -37,6 +39,19 @@
    }
    @Override
    public void requireApproved(User user, boolean skipSimAccount) {
        if (user == null) {
            throw new YamiShopBindException("The user does not exist.\n");
        }
        if (skipSimAccount && user.getAccountType() != null && user.getAccountType() == 1) {
            return;
        }
        if (!isPass(user.getUserId())) {
            throw new YamiShopBindException("Please complete real-name verification first.");
        }
    }
    @Override
    public long waitCount(List<String> userIds) {
      LambdaQueryWrapper<RealNameAuthRecord>  lambdaQueryWrapper= Wrappers.<RealNameAuthRecord>query().lambda().eq(RealNameAuthRecord::getStatus,1);
trading-order-service/src/main/java/com/yami/trading/service/impl/WithdrawServiceImpl.java
@@ -234,8 +234,8 @@
        if (party_kyc==null){
            party_kyc=new  RealNameAuthRecord();
        }
        if (!(party_kyc.getStatus() == 2) && "true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
            throw new YamiShopBindException("未基础认证");
        if ("true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
            realNameAuthRecordService.requireApproved(party, false);
        }
        double withdraw_by_high_kyc = Double.valueOf(sysparaService.find("withdraw_by_high_kyc").getSvalue());
        if (withdraw_by_high_kyc > 0 && withdraw.getVolume().doubleValue() > withdraw_by_high_kyc
@@ -531,8 +531,8 @@
        if (party_kyc==null){
            party_kyc=new RealNameAuthRecord();
        }
        if (!(party_kyc.getStatus() == 2) && "true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
            throw new YamiShopBindException("未基础认证");
        if ("true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
            realNameAuthRecordService.requireApproved(party, false);
        }
        if (party_kycHighLevel==null){
            party_kycHighLevel=new HighLevelAuthRecord();
@@ -848,8 +848,8 @@
            throw new YamiShopBindException("无权限");
        }
        RealNameAuthRecord realNameAuthRecord = realNameAuthRecordService.getByUserId(user.getUserId());
        if (!(realNameAuthRecord.getStatus() == 2) && "true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
            throw new YamiShopBindException("未安全认证,无提现权限");
        if ("true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
            realNameAuthRecordService.requireApproved(user, false);
        }
        HighLevelAuthRecord highLevelAuthRecord = highLevelAuthRecordService.findByUserId(withdraw.getUserId());
        BigDecimal withdrawByHighKyc = new BigDecimal(sysparaService.find("withdraw_by_high_kyc").getSvalue());