gao
2020-05-28 cc9d558c8cda42d53be7b4545d2f33db26edf777
Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin.git
39 files added
4 files renamed
1 files deleted
17 files modified
1956 ■■■■■ changed files
pom.xml 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/common/enumerates/SymbolEnum.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinsDao.java 4 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/dao/platform/TradeSettingDao.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/parameter/vo/OrderWalletCoinListVo.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/parameter/vo/OrderWalletCoinVo.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java 21 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java 49 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/controller/ContractHoldOrderController.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java 76 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/entity/ContractHoldOrderEntity.java 110 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java 147 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SubmitEntrustDto.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/ContractOrderService.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java 87 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractOrderServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java 187 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/dao/MemberAuthenticationDao.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/dao/MemberPaymentMethodDao.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/entity/MemberPaymentMethodEntity.java 56 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAuthenticationDto.java 45 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberDelPaymethodDto.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberForgetPwdDto.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberPaymethodDto.java 52 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberTradersPwdDto.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberUpdatePwdDto.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberUpdateTradePwdDto.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberInfoVo.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPaymethodDetailListVo.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPaymethodDetailVo.java 46 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/MemberService.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java 369 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/dao/CnyUsdtExchangeDao.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/dao/TradeSettingDao.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformLeverageSettingEntity.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformTradeSettingEntity.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/CacheSettingUtils.java 82 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/CoinTypeConvert.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/utils/TypeJudgeUtils.java 28 ●●●●● patch | view | raw | blame | history
src/main/resources/logback-spring.xml 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractEntrustOrderDao.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractHoldOrderDao.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractOrderDao.xml 5 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/member/MemberAuthenticationDao.xml 9 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/member/MemberDao.xml 1 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/member/MemberPaymentMethodDao.xml 6 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/platform/TradeSettingDao.xml 10 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/walletCoinOrder/OrderCoinDealDao.xml 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/walletCoinOrder/OrderCoinsDao.xml 1 ●●●● patch | view | raw | blame | history
pom.xml
@@ -29,6 +29,7 @@
        <fastjson.version>1.2.61</fastjson.version>
        <netty.version>4.1.33.Final</netty.version>
        <dom4j.version>1.6.1</dom4j.version>
        <m2e.apt.activation>jdt_apt</m2e.apt.activation>
        <okhttp.version>3.6.0</okhttp.version>
        <aliyun-oss.version>3.8.0</aliyun-oss.version>
    </properties>
src/main/java/com/xcong/excoin/common/enumerates/SymbolEnum.java
@@ -25,5 +25,15 @@
        this.value = value;
    }
    public static String getNameByValue(String value) {
        String name = "";
        for (SymbolEnum symbolEnum : values()) {
            if (value.equals(symbolEnum.getValue())){
                name = symbolEnum.getName();
                break;
            }
        }
        return name;
    }
}
src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java
@@ -18,7 +18,7 @@
import com.xcong.excoin.modules.coin.parameter.vo.MemberSelectSymbolsVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealListVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinListVo;
import com.xcong.excoin.modules.coin.parameter.vo.TransactionPageOfWalletCoinVo;
import com.xcong.excoin.modules.coin.service.OrderCoinService;
@@ -75,7 +75,7 @@
     * @return
     */
    @ApiOperation(value = "获取委托单数据", notes = "获取委托单数据")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = OrderWalletCoinVo.class)})
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = OrderWalletCoinListVo.class)})
    @ApiImplicitParams({
        @ApiImplicitParam(name = "symbol", value = "币种", required = true, dataType = "String", paramType="query"),
        @ApiImplicitParam(name = "status", value = "状态 1:委托中2:撤单3:已成交", required = true, dataType = "int", paramType="query")
src/main/java/com/xcong/excoin/modules/coin/dao/OrderCoinsDao.java
@@ -1,5 +1,7 @@
package com.xcong.excoin.modules.coin.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -9,7 +11,7 @@
    
    long getOrderCountByToday(@Param("now")String now,@Param("tomorrow") String tomorrow);
    OrderCoinsEntity findCoinOrderListByMemberIdAndSysmbol(@Param("memberId")Long memberId,@Param("symbol")String symbol,@Param("status")int status);
    List<OrderCoinsEntity> findCoinOrderListByMemberIdAndSysmbol(@Param("memberId")Long memberId,@Param("symbol")String symbol,@Param("status")int status);
    OrderCoinsEntity findWalletCoinOrderByOrderNo(@Param("orderNo")String orderNo);
}
src/main/java/com/xcong/excoin/modules/coin/dao/platform/TradeSettingDao.java
File was deleted
src/main/java/com/xcong/excoin/modules/coin/parameter/vo/OrderWalletCoinListVo.java
New file
@@ -0,0 +1,16 @@
package com.xcong.excoin.modules.coin.parameter.vo;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "OrderWalletCoinListVo", description = "委托单返回")
public class OrderWalletCoinListVo {
    @ApiModelProperty(value = "委托单")
    private List<OrderWalletCoinVo> orderWalletCoinVo;
}
src/main/java/com/xcong/excoin/modules/coin/parameter/vo/OrderWalletCoinVo.java
@@ -22,6 +22,12 @@
     */
    @ApiModelProperty(value = "币种")
    private String symbol;
    /**
     * 订单类型 1、买入2、卖出
     */
    @ApiModelProperty(value = "订单类型")
    private Integer orderType;
    /**
     * 市场价
     */
src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -13,7 +13,6 @@
import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
import com.xcong.excoin.modules.coin.dao.platform.CnyUsdtExchangeDao;
import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange;
import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
import com.xcong.excoin.modules.coin.parameter.vo.MemberAccountMoneyChangeInfoVo;
@@ -28,6 +27,7 @@
import com.xcong.excoin.modules.member.entity.MemberWalletAgentEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
import com.xcong.excoin.modules.platform.dao.CnyUsdtExchangeDao;
import com.xcong.excoin.utils.MessageSourceUtils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
@@ -23,24 +23,25 @@
import com.xcong.excoin.modules.coin.dao.MemberSelectSymbolsDao;
import com.xcong.excoin.modules.coin.dao.OrderCoinDealDao;
import com.xcong.excoin.modules.coin.dao.OrderCoinsDao;
import com.xcong.excoin.modules.coin.dao.platform.CnyUsdtExchangeDao;
import com.xcong.excoin.modules.coin.dao.platform.TradeSettingDao;
import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange;
import com.xcong.excoin.modules.coin.entity.MemberAccountFlowEntity;
import com.xcong.excoin.modules.coin.entity.OrderCoinsDealEntity;
import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity;
import com.xcong.excoin.modules.coin.entity.PlatformTradeSettingEntity;
import com.xcong.excoin.modules.coin.mapper.OrderWalletCoinDealMapper;
import com.xcong.excoin.modules.coin.mapper.OrderWalletCoinMapper;
import com.xcong.excoin.modules.coin.parameter.vo.MemberSelectSymbolsVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealListVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinDealVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinListVo;
import com.xcong.excoin.modules.coin.parameter.vo.OrderWalletCoinVo;
import com.xcong.excoin.modules.coin.parameter.vo.TransactionPageOfWalletCoinVo;
import com.xcong.excoin.modules.coin.service.OrderCoinService;
import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
import com.xcong.excoin.modules.member.entity.MemberSelectSymbolsEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.platform.dao.CnyUsdtExchangeDao;
import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
import com.xcong.excoin.utils.MessageSourceUtils;
import cn.hutool.core.collection.CollUtil;
@@ -304,10 +305,18 @@
    public Result getEntrustWalletCoinOrder(String symbol, Integer status) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        OrderWalletCoinListVo orderWalletCoinListVo = new OrderWalletCoinListVo();
        
        OrderCoinsEntity orderCoin = orderCoinsDao.findCoinOrderListByMemberIdAndSysmbol(memberId, symbol, status);
        OrderWalletCoinVo entityToVo = OrderWalletCoinMapper.INSTANCE.entityToVo(orderCoin);
        return Result.ok(entityToVo);
        List<OrderWalletCoinVo> arrayList = new ArrayList<>();
        List<OrderCoinsEntity> findCoinOrderListByMemberIdAndSysmbol = orderCoinsDao.findCoinOrderListByMemberIdAndSysmbol(memberId, symbol, status);
        if(CollUtil.isNotEmpty(findCoinOrderListByMemberIdAndSysmbol)) {
            for(OrderCoinsEntity orderCoinsEntity : findCoinOrderListByMemberIdAndSysmbol) {
                OrderWalletCoinVo entityToVo = OrderWalletCoinMapper.INSTANCE.entityToVo(orderCoinsEntity);
                arrayList.add(entityToVo);
            }
        }
        orderWalletCoinListVo.setOrderWalletCoinVo(arrayList);
        return Result.ok(arrayList);
    }
    @Override
src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java
New file
@@ -0,0 +1,49 @@
package com.xcong.excoin.modules.contract.controller;
import cn.hutool.core.util.StrUtil;
import com.xcong.excoin.common.enumerates.SymbolEnum;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.contract.parameter.dto.SubmitEntrustDto;
import com.xcong.excoin.modules.contract.service.ContractEntrustOrderService;
import com.xcong.excoin.utils.TypeJudgeUtils;
import com.xcong.excoin.utils.api.response.Symbol;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
 * 合约委托订单controller
 *
 * @author wzy
 * @date 2020-05-27
 **/
@Slf4j
@Api(value = "ContractEntrustOrderController", tags = "合约委托订单接口类")
@RestController
@RequestMapping(value = "/api/contractEntrust")
public class ContractEntrustOrderController {
    @Resource
    private ContractEntrustOrderService contractEntrustOrderService;
    @ApiOperation(value = "合约提交委托订单", notes = "提交委托订单")
    @PostMapping(value = "/submitEntrustOrder")
    public Result submitEntrustOrder(@RequestBody @Validated SubmitEntrustDto submitEntrustDto) {
        if (StrUtil.isBlank(SymbolEnum.getNameByValue(submitEntrustDto.getSymbol()))){
            return Result.fail("非法币种");
        }
        if (!TypeJudgeUtils.entrustType(submitEntrustDto.getEntrustType())) {
            return Result.fail("非法类型");
        }
        return Result.ok("123");
    }
}
src/main/java/com/xcong/excoin/modules/contract/controller/ContractHoldOrderController.java
New file
@@ -0,0 +1,17 @@
package com.xcong.excoin.modules.contract.controller;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author wzy
 * @date 2020-05-27
 **/
@Slf4j
@Api(value = "ContractHoldOrderController", tags = "合约持仓订单接口类")
@RestController
@RequestMapping(value = "/api/contractHold")
public class ContractHoldOrderController {
}
src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java
New file
@@ -0,0 +1,17 @@
package com.xcong.excoin.modules.contract.controller;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @author wzy
 * @date 2020-05-27
 **/
@Slf4j
@Api(value = "ContractOrderController", tags = "合约订单历史接口类")
@RestController
@RequestMapping(value = "/api/contractOrder")
public class ContractOrderController {
}
src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
New file
@@ -0,0 +1,10 @@
package com.xcong.excoin.modules.contract.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
/**
 * @author helius
 */
public interface ContractEntrustOrderDao extends BaseMapper<ContractEntrustOrderEntity> {
}
src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
New file
@@ -0,0 +1,10 @@
package com.xcong.excoin.modules.contract.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
/**
 * @author helius
 */
public interface ContractHoldOrderDao extends BaseMapper<ContractHoldOrderEntity> {
}
src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java
New file
@@ -0,0 +1,10 @@
package com.xcong.excoin.modules.contract.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
/**
 * @author helius
 */
public interface ContractOrderDao extends BaseMapper<ContractOrderEntity> {
}
src/main/java/com/xcong/excoin/modules/contract/entity/ContractEntrustOrderEntity.java
New file
@@ -0,0 +1,76 @@
package com.xcong.excoin.modules.contract.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * @author wzy
 * @date 2020-05-27
 **/
@Data
@TableName("contract_entrust_order")
public class ContractEntrustOrderEntity extends BaseEntity {
    public static final int ENTRUST_TYPE_OPEN_MORE = 1;
    public static final int ENTRUST_TYPE_OPEN_LESS = 2;
    public static final int ENTRUST_TYPE_CLOSE_MORE = 3;
    public static final int ENTRUST_TYPE_CLOSE_LESS = 4;
    /**
     * 会员ID
     */
    private Long memberId;
    /**
     * 订单编号
     */
    private String orderNo;
    /**
     * 仓位类型 1逐仓2全仓
     */
    private int positionType;
    /**
     * 委托类型 1开多,2开空,3平多,4平空
     */
    private int entrustType;
    /**
     * 委托价格
     */
    private BigDecimal entrustPrice;
    /**
     * 币种
     */
    private String symbol;
    /**
     * 数量
     */
    private int symbolCnt;
    /**
     * 币种规格
     */
    private Long symbolSku;
    /**
     * 杠杆倍率
     */
    private int leverRatio;
    /**
     * 保证金
     */
    private BigDecimal bondAmount;
}
src/main/java/com/xcong/excoin/modules/contract/entity/ContractHoldOrderEntity.java
New file
@@ -0,0 +1,110 @@
package com.xcong.excoin.modules.contract.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
/**
 * 合约持仓订单表
 *
 * @author wzy
 * @date 2020-05-27
 **/
@Data
@TableName("contract_hold_order")
public class ContractHoldOrderEntity extends BaseEntity {
    /**
     * 会员Id
     */
    private Long memberId;
    /**
     * 订单编号
     */
    private String orderNo;
    /**
     * 仓位类型 1-逐仓 2-全仓
     */
    private int potionType;
    /**
     * 交易类型 1-市价 2-限价
     */
    private int tradeType;
    /**
     * 币种
     */
    private String symbol;
    /**
     * 手数
     */
    private int symbolCnt;
    /**
     * 可平张数(仅全仓模式)
     */
    private int symbolCntSale;
    /**
     * 币种规格
     */
    private Long symbolSku;
    /**
     * 开仓价
     */
    private BigDecimal openingPrice;
    /**
     * 开仓类型 1-开多 2-开多
     */
    private int openingType;
    /**
     * 开仓手续费
     */
    private BigDecimal openingFeeAmount;
    /**
     * 保证金
     */
    private BigDecimal bondPrice;
    /**
     * 杠杆倍率
     */
    private int leverRatio;
    /**
     * 市场价
     */
    private BigDecimal markPrice;
    /**
     * 止损价
     */
    private BigDecimal stopLossPrice;
    /**
     * 止盈价
     */
    private BigDecimal stopProfitPrice;
    /**
     * 预付款金额
     */
    private BigDecimal prePaymentAmount;
    /**
     * 预估强平价
     */
    private BigDecimal forceClosingPrice;
    private int operateNo;
}
src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java
New file
@@ -0,0 +1,147 @@
package com.xcong.excoin.modules.contract.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 合约订单历史表
 *
 * @author wzy
 * @date 2020-05-27
 **/
@Data
@TableName("contract_order_entity")
public class ContractOrderEntity extends BaseEntity {
    /**
     * 会员Id
     */
    private Long memberId;
    /**
     * 订单编号
     */
    private String orderNo;
    /**
     * 仓位类型 1-逐仓 2-全仓
     */
    private int potionType;
    /**
     * 交易类型 1-市价 2-限价
     */
    private int tradeType;
    /**
     * 订单类型 - 0撤单,1开多,2开空,3平多,4平空,5委托开多,6委托开空,7委托平多,8委托平空,9爆仓平多,10爆仓平空
     */
    private int orderType;
    /**
     * 委托开仓价
     */
    private BigDecimal entrustOpeningPrice;
    /**
     * 委托时间
     */
    private Date entrustTime;
    /**
     * 币种
     */
    private String symbol;
    /**
     * 手数
     */
    private int symbolCnt;
    /**
     * 币种规格
     */
    private Long symbolSku;
    /**
     * 平仓价
     */
    private BigDecimal closingPrice;
    /**
     * 平仓手续费
     */
    private BigDecimal closingFeeAmount;
    /**
     * 平仓时间
     */
    private Date closingTime;
    /**
     * 杠杆倍率
     */
    private int leverRatio;
    /**
     * 止损价
     */
    private BigDecimal stopLossPrice;
    /**
     * 止盈价
     */
    private BigDecimal stopProfitPrice;
    /**
     * 盈亏金额
     */
    private BigDecimal rewardAmount;
    /**
     * 盈亏比例
     */
    private BigDecimal rewardRatio;
    /**
     * 开仓价
     */
    private BigDecimal openingPrice;
    /**
     * 开仓手续费
     */
    private BigDecimal openingFeeAmount;
    /**
     * 预付款金额
     */
    private BigDecimal prePaymentAmount;
    /**
     * 保证金
     */
    private BigDecimal bondAmount;
    /**
     * 市场价
     */
    private BigDecimal markPrice;
    /**
     * 预估强平价
     */
    private BigDecimal forceClosingPrice;
    /**
     * 持仓费
     */
    private BigDecimal holdAmount;
    private int operateNo;
}
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SubmitEntrustDto.java
New file
@@ -0,0 +1,42 @@
package com.xcong.excoin.modules.contract.parameter.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
 * @author wzy
 * @date 2020-05-27
 **/
@Data
@ApiModel(value = "SubmitEntrustDto", description = "提交委托订单接口接受类")
public class SubmitEntrustDto {
    @NotNull()
    @Min(1)
    @ApiModelProperty(value = "委托价", example = "9000.00")
    private BigDecimal entrustPrice;
    @NotNull
    @ApiModelProperty(value = "委托类型 1开多 2开空 3平多 4平空", example = "1")
    private int entrustType;
    @NotBlank
    @ApiModelProperty(value = "币种", example = "BTC/USDT")
    private String symbol;
    @NotNull
    @Min(1)
    @ApiModelProperty(value = "币种数量", example = "1")
    private int symbolCnt;
    @NotNull
    @ApiModelProperty(value = "杠杆倍率", example = "100")
    private int leverRatio;
}
src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java
New file
@@ -0,0 +1,14 @@
package com.xcong.excoin.modules.contract.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
import com.xcong.excoin.modules.contract.parameter.dto.SubmitEntrustDto;
/**
 * @author helius
 */
public interface ContractEntrustOrderService extends IService<ContractEntrustOrderEntity> {
    public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto);
}
src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
New file
@@ -0,0 +1,10 @@
package com.xcong.excoin.modules.contract.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
/**
 * @author helius
 */
public interface ContractHoldOrderService extends IService<ContractHoldOrderEntity> {
}
src/main/java/com/xcong/excoin/modules/contract/service/ContractOrderService.java
New file
@@ -0,0 +1,10 @@
package com.xcong.excoin.modules.contract.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
/**
 * @author helius
 */
public interface ContractOrderService extends IService<ContractOrderEntity> {
}
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
New file
@@ -0,0 +1,87 @@
package com.xcong.excoin.modules.contract.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao;
import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
import com.xcong.excoin.modules.contract.parameter.dto.SubmitEntrustDto;
import com.xcong.excoin.modules.contract.service.ContractEntrustOrderService;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
import com.xcong.excoin.utils.CacheSettingUtils;
import com.xcong.excoin.utils.CoinTypeConvert;
import com.xcong.excoin.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
/**
 * @author wzy
 * @date 2020-05-27
 **/
@Slf4j
@Service
public class ContractEntrustOrderServiceImpl extends ServiceImpl<ContractEntrustOrderDao, ContractEntrustOrderEntity> implements ContractEntrustOrderService {
    @Resource
    private ContractEntrustOrderDao contractEntrustOrderDao;
    @Resource
    private MemberWalletContractDao memberWalletContractDao;
    @Resource
    private RedisUtils redisUtils;
    @Resource
    private CacheSettingUtils cacheSettingUtils;
    @Override
    public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto) {
        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
        // 获取最新价
        BigDecimal newPirce  = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(submitEntrustDto.getSymbol())));
        // 委托开仓
        if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE || submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_LESS) {
            // 开多委托价不能大于当前价
            if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_MORE) {
                if (submitEntrustDto.getEntrustPrice().compareTo(newPirce) > -1) {
                    return Result.fail("委托价不能大于当前价");
                }
            }
            // 开空委托价不能小于当前价
            if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_OPEN_LESS) {
                if (submitEntrustDto.getEntrustPrice().compareTo(newPirce) < 1) {
                    return Result.fail("委托价不能小于当前价");
                }
            }
            MemberWalletContractEntity walletContract = memberWalletContractDao.selectById(memberEntity.getId());
            // 委托总额
            BigDecimal entrustTotalAmount = submitEntrustDto.getEntrustPrice().multiply(BigDecimal.valueOf(submitEntrustDto.getSymbolCnt()));
            if (entrustTotalAmount.compareTo(walletContract.getAvailableBalance()) > -1) {
                return Result.fail("可用余额不足");
            }
            BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(submitEntrustDto.getSymbol());
        }
        // 委托平仓 (全仓模式)
        if (submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_MORE || submitEntrustDto.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_LESS) {
            return Result.fail("功能暂未开放,敬请期待");
        }
        return null;
    }
}
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
New file
@@ -0,0 +1,13 @@
package com.xcong.excoin.modules.contract.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao;
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
/**
 * @author wzy
 * @date 2020-05-27
 **/
public class ContractHoldOrderServiceImpl extends ServiceImpl<ContractHoldOrderDao, ContractHoldOrderEntity> implements ContractHoldOrderService {
}
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractOrderServiceImpl.java
New file
@@ -0,0 +1,13 @@
package com.xcong.excoin.modules.contract.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.modules.contract.dao.ContractOrderDao;
import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
import com.xcong.excoin.modules.contract.service.ContractOrderService;
/**
 * @author wzy
 * @date 2020-05-27
 **/
public class ContractOrderServiceImpl extends ServiceImpl<ContractOrderDao, ContractOrderEntity> implements ContractOrderService {
}
src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -1,7 +1,33 @@
package com.xcong.excoin.modules.member.controller;
import javax.annotation.Resource;
import javax.validation.Valid;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo;
import com.xcong.excoin.modules.member.service.MemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
/**
 * 用户类
@@ -9,7 +35,168 @@
 * @author wzy
 * @date 2020-05-18
 **/
@Slf4j
@Api(value = "个人中心接口", tags = "个人中心接口")
@RestController
@RequestMapping(value = "/api/member")
public class MemberController {
    @Resource
    MemberService memberService;
    /**
     *  获取我的信息
     * @return
     */
    @ApiOperation(value="获取我的信息", notes="获取我的信息")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberInfoVo.class)})
    @GetMapping(value = "/getMemberInfo")
    public Result  getMemberInfo() {
        return memberService.getMemberInfo();
    }
    /**
     * 忘记密码
     * @return
     */
    @ApiOperation(value=" 忘记密码", notes=" 忘记密码")
    @PostMapping(value="/memberForgetPwd")
    public Result  memberForgetPwd(@RequestBody @Valid MemberForgetPwdDto memberForgetPwdDto) {
        return memberService.memberForgetPwd(memberForgetPwdDto);
    }
    /**
     * 修改密码
     * @return
     */
    @ApiOperation(value="修改密码", notes="修改密码")
    @PostMapping(value="/memberUpdatePwd")
    public Result  memberUpdatePwd(@RequestBody @Valid MemberUpdatePwdDto memberUpdatePwdDto) {
        //System.out.println("修改密码:");
        return memberService.memberUpdatePwd(memberUpdatePwdDto);
    }
    /**
     * 实名认证
     * @return
     */
    @ApiOperation(value="实名认证", notes="实名认证")
    @PostMapping(value="/memberAuthentication")
    public Result memberAuthentication(@RequestBody @Valid MemberAuthenticationDto memberAuthenticationDto) {
        return memberService.memberAuthentication(memberAuthenticationDto);
    }
    /**
     * 修改资金密码
     * @return
     */
    @ApiOperation(value="修改资金密码", notes="修改资金密码")
    @PostMapping(value="/memberUpdateTradePwd")
    public Result  memberUpdateTradePwd(@RequestBody @Valid MemberUpdateTradePwdDto memberUpdateTradePwdDto) {
        return memberService.memberUpdateTradePwd(memberUpdateTradePwdDto);
    }
    /**
     * 用户退出登录
     * @return
     */
    @ApiOperation(value="用户退出登录", notes="用户退出登录")
    @GetMapping(value = "/memberLogout")
    public Result  memberLogout() {
        return memberService.memberLogout();
    }
    /**
     * 设置交易密码
     * @param code
     * @param password
     * @param token
     * @return
     */
    @ApiOperation(value="设置交易密码", notes="设置交易密码")
    @PostMapping(value="/memberTradersPwd")
    public Result  memberTradersPwd(@RequestBody @Valid MemberForgetPwdDto memberForgetPwdDto) {
        return memberService.memberTradersPwd(memberForgetPwdDto);
    }
    /**
     * 收款方式
     * @return
     */
    @ApiOperation(value="新增收款方式", notes="新增收款方式")
    @PostMapping(value="/memberAddPaymethod")
    public Result  memberAddPaymethod(@RequestBody @Valid MemberPaymethodDto memberPaymethodDto) {
        return memberService.memberAddPaymethod(memberPaymethodDto);
    }
    /**
     * 收款方式
     * @return
     */
    @ApiOperation(value="删除收款方式", notes="删除收款方式")
    @PostMapping(value="/memberDelPaymethod")
    public Result  memberDelPaymethod(@RequestBody @Valid MemberDelPaymethodDto memberDelPaymethodDto) {
        return memberService.memberDelPaymethod(memberDelPaymethodDto);
    }
    /**
     * 收款方式
     * @return
     */
    @ApiOperation(value="一个收款方式的详情", notes="一个收款方式的详情")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberPaymethodDetailVo.class)})
    @ApiImplicitParams({
        @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "long", paramType="query")
    })
    @GetMapping(value = "/memberPaymethodDetail")
    public Result memberPaymethodDetail(long id) {
        return memberService.memberPaymethodDetail(id);
    }
    /**
     * 收款方式
     * @return
     */
    @ApiOperation(value="收款方式的列表", notes="收款方式的列表")
    @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberPaymethodDetailListVo.class)})
    @GetMapping(value = "/memberPaymethodDetailList")
    public Result memberPaymethodDetailList() {
        return memberService.memberPaymethodDetailList();
    }
}
src/main/java/com/xcong/excoin/modules/member/dao/MemberAuthenticationDao.java
New file
@@ -0,0 +1,10 @@
package com.xcong.excoin.modules.member.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.member.entity.MemberAuthenticationEntity;
public interface MemberAuthenticationDao extends BaseMapper<MemberAuthenticationEntity> {
    int findMemberbyIdCardNoCount(String idCardNo);
}
src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
@@ -12,4 +12,5 @@
    public MemberEntity selectMemberInfoByAccount(@Param("account") String account);
    public MemberEntity selectMemberInfoByRefererId(@Param("refererId") String refererId);
}
src/main/java/com/xcong/excoin/modules/member/dao/MemberPaymentMethodDao.java
New file
@@ -0,0 +1,8 @@
package com.xcong.excoin.modules.member.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.member.entity.MemberPaymentMethodEntity;
public interface MemberPaymentMethodDao extends BaseMapper<MemberPaymentMethodEntity> {
}
src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java
@@ -15,6 +15,11 @@
public class MemberAuthenticationEntity extends BaseEntity {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     * 用户ID
     */
    private Long memberId;
@@ -38,6 +43,10 @@
     * 国家
     */
    private String nation;
    /**
     * 身份证号
     */
    private String idcardNo;
    /**
     * 身份证正面
src/main/java/com/xcong/excoin/modules/member/entity/MemberPaymentMethodEntity.java
New file
@@ -0,0 +1,56 @@
package com.xcong.excoin.modules.member.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
/**
 * 会员收款方式
 */
@Data
@TableName("member_payment_method")
public class MemberPaymentMethodEntity extends BaseEntity{
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     * 用户Id
     */
    private Long memberId;
    /**
     * 姓名
     */
    private String name;
    /**
     * 账号
     */
    private String account;
    /**
     * 收款二维码
     */
    private String paymentQrcode;
    /**
     * 银行
     */
    private String bank;
    /**
     * 支行
     */
    private String subBank;
    /**
     * 类型 1-支付宝2-微信3-银行卡
     */
    private String paymentType;
    public static final Integer PAYMENTTYPE_ALIPAY = 1;
    public static final Integer PAYMENTTYPE_WECHAT = 2;
    public static final Integer PAYMENTTYPE_CARD = 3;
    /**
     * 默认收款方式
     */
    private String isDefualt;
}
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAuthenticationDto.java
New file
@@ -0,0 +1,45 @@
package com.xcong.excoin.modules.member.parameter.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberAuthenticationDto", description = "实名认证参数接收类")
public class MemberAuthenticationDto {
    @NotNull(message = "姓不能为空")
    @ApiModelProperty(value = "姓", example = "姓")
    private String firstName;
    @NotNull(message = "名不能为空")
    @ApiModelProperty(value = "名", example = "名")
    private String secondName;
    @NotNull(message = "真实姓名不能为空")
    @ApiModelProperty(value = "真实姓名", example = "姓名")
    private String realName;
    @NotNull(message = "身份证卡号不能为空")
    @ApiModelProperty(value = "身份证卡号", example = "123456789")
    private String idCardNo;
    @NotNull(message = "身份证正面不能为空")
    @ApiModelProperty(value = "身份证正面", example = "身份证正面")
    private String idCardFront;
    @NotNull(message = "身份证反面不能为空")
    @ApiModelProperty(value = "身份证反面", example = "身份证反面")
    private String idCardReverse;
    @NotNull(message = "手持身份证不能为空")
    @ApiModelProperty(value = "手持身份证", example = "手持身份证")
    private String idCardImage;
    @NotNull(message = "国家不能为空")
    @ApiModelProperty(value = "国家", example = "国家")
    private String nation;
}
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberDelPaymethodDto.java
New file
@@ -0,0 +1,17 @@
package com.xcong.excoin.modules.member.parameter.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberDelPaymethodDto", description = "删除收款方式参数接收类")
public class MemberDelPaymethodDto {
    @NotNull(message = "收款方式ID不能为空")
    @ApiModelProperty(value = "收款方式ID", example = "1")
    private Long id;
}
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberForgetPwdDto.java
New file
@@ -0,0 +1,31 @@
package com.xcong.excoin.modules.member.parameter.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberForgetPwdDto", description = "忘记密码参数接收类")
public class MemberForgetPwdDto {
    @NotNull(message = "验证码不能为空")
    @ApiModelProperty(value = "验证码", example = "123456")
    private String code;
    @NotNull(message = "新密码不能为空")
    @ApiModelProperty(value = "新密码", example = "qq123456")
    private String password;
    @NotNull(message = "验证类型不能为空")
    @ApiModelProperty(value = "验证类型 1 手机号码 2 邮箱", example = "1")
    private int type;
    @ApiModelProperty(value = "电话号码", example = "13412341234")
    private String phone;
    @ApiModelProperty(value = "邮箱", example = "www.13412341234@123.com")
    private String email;
}
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberPaymethodDto.java
New file
@@ -0,0 +1,52 @@
package com.xcong.excoin.modules.member.parameter.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberPaymethodDto", description = "收款方式参数接收类")
public class MemberPaymethodDto {
    /**
     * 姓名
     */
    @NotNull(message = "姓名不能为空")
    @ApiModelProperty(value = "姓名", example = "姓名")
    private String name;
    /**
     * 账号
     */
    @NotNull(message = "账号不能为空")
    @ApiModelProperty(value = "账号", example = "13412341234")
    private String account;
    /**
     * 收款二维码
     */
    @ApiModelProperty(value = "账号", example = "13412341234")
    private String paymentQrcode;
    /**
     * 银行
     */
    @ApiModelProperty(value = "银行", example = "银行")
    private String bank;
    /**
     * 支行
     */
    @ApiModelProperty(value = "支行", example = "支行")
    private String subBank;
    /**
     * 类型 1-支付宝2-微信3-银行卡
     */
    @NotNull(message = "类型不能为空")
    @ApiModelProperty(value = "类型 1-支付宝2-微信3-银行卡", example = "1")
    private String paymentType;
    /**
     * 默认收款方式
     */
    @NotNull(message = "默认收款方式不能为空")
    @ApiModelProperty(value = "类型 1-是 0-否", example = "1")
    private String isDefualt;
}
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberTradersPwdDto.java
New file
@@ -0,0 +1,31 @@
package com.xcong.excoin.modules.member.parameter.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberTradersPwdDto", description = "设置交易密码参数接收类")
public class MemberTradersPwdDto {
    @NotNull(message = "验证码不能为空")
    @ApiModelProperty(value = "验证码", example = "123456")
    private String code;
    @NotNull(message = "新密码不能为空")
    @ApiModelProperty(value = "新密码", example = "qq123456")
    private String password;
    @NotNull(message = "验证类型不能为空")
    @ApiModelProperty(value = "验证类型 1 手机号码 2 邮箱", example = "1")
    private int type;
    @ApiModelProperty(value = "电话号码", example = "13412341234")
    private String phone;
    @ApiModelProperty(value = "邮箱", example = "www.13412341234@123.com")
    private String email;
}
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberUpdatePwdDto.java
New file
@@ -0,0 +1,31 @@
package com.xcong.excoin.modules.member.parameter.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberUpdatePwdDto", description = "修改密码参数接收类")
public class MemberUpdatePwdDto {
    @NotNull(message = "验证码不能为空")
    @ApiModelProperty(value = "验证码", example = "123456")
    private String code;
    @NotNull(message = "新密码不能为空")
    @ApiModelProperty(value = "新密码", example = "qq123456")
    private String password;
    @NotNull(message = "验证类型不能为空")
    @ApiModelProperty(value = "验证类型 1 手机号码 2 邮箱", example = "1")
    private int type;
    @ApiModelProperty(value = "电话号码", example = "13412341234")
    private String phone;
    @ApiModelProperty(value = "邮箱", example = "www.13412341234@123.com")
    private String email;
}
src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberUpdateTradePwdDto.java
New file
@@ -0,0 +1,31 @@
package com.xcong.excoin.modules.member.parameter.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberUpdateTradePwdDto", description = "修改资金密码参数接收类")
public class MemberUpdateTradePwdDto {
    @NotNull(message = "验证码不能为空")
    @ApiModelProperty(value = "验证码", example = "123456")
    private String code;
    @NotNull(message = "新密码不能为空")
    @ApiModelProperty(value = "新密码", example = "qq123456")
    private String password;
    @NotNull(message = "验证类型不能为空")
    @ApiModelProperty(value = "验证类型 1 手机号码 2 邮箱", example = "1")
    private int type;
    @ApiModelProperty(value = "电话号码", example = "13412341234")
    private String phone;
    @ApiModelProperty(value = "邮箱", example = "www.13412341234@123.com")
    private String email;
}
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberInfoVo.java
New file
@@ -0,0 +1,23 @@
package com.xcong.excoin.modules.member.parameter.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberInfoVo", description = "个人信息")
public class MemberInfoVo {
    /**
     * 手机号(包含国际手机号)
     */
    @ApiModelProperty(value = "手机号(包含国际手机号)")
    private String phone;
    /**
     * 邀请码
     */
    @ApiModelProperty(value = "邀请码")
    private String inviteId;
}
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPaymethodDetailListVo.java
New file
@@ -0,0 +1,16 @@
package com.xcong.excoin.modules.member.parameter.vo;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberPaymethodDetailListVo", description = "收款方式列表")
public class MemberPaymethodDetailListVo {
    @ApiModelProperty(value = "收款方式列表")
    private List<MemberPaymethodDetailVo> memberPaymethodDetailVo;
}
src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberPaymethodDetailVo.java
New file
@@ -0,0 +1,46 @@
package com.xcong.excoin.modules.member.parameter.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "MemberPaymethodDetailVo", description = "收款方式信息")
public class MemberPaymethodDetailVo {
    /**
     * 用户Id
     */
    @ApiModelProperty(value = "用户Id")
    private Long memberId;
    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名")
    private String name;
    /**
     * 账号
     */
    @ApiModelProperty(value = "账号")
    private String account;
    /**
     * 收款二维码
     */
    @ApiModelProperty(value = "收款二维码")
    private String paymentQrcode;
    /**
     * 银行
     */
    @ApiModelProperty(value = "银行")
    private String bank;
    /**
     * 支行
     */
    @ApiModelProperty(value = "支行")
    private String subBank;
    /**
     * 类型 1-支付宝2-微信3-银行卡
     */
    @ApiModelProperty(value = "类型 1-支付宝2-微信3-银行卡")
    private String paymentType;
}
src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -1,10 +1,17 @@
package com.xcong.excoin.modules.member.service;
import javax.validation.Valid;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.common.system.dto.RegisterDto;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.test.entity.TestUserEntity;
import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
/**
 * @author wzy
@@ -13,4 +20,27 @@
    public Result register(RegisterDto registerDto);
    public Result getMemberInfo();
    public Result memberAuthentication(@Valid MemberAuthenticationDto memberAuthenticationDto);
    public Result memberForgetPwd(@Valid MemberForgetPwdDto memberForgetPwdDto);
    public Result memberUpdatePwd(@Valid MemberUpdatePwdDto memberUpdatePwdDto);
    public Result memberUpdateTradePwd(@Valid MemberUpdateTradePwdDto memberUpdateTradePwdDto);
    public Result memberLogout();
    public Result memberTradersPwd(@Valid MemberForgetPwdDto memberForgetPwdDto);
    public Result memberAddPaymethod(@Valid MemberPaymethodDto memberPaymethodDto);
    public Result memberDelPaymethod(@Valid MemberDelPaymethodDto memberDelPaymethodDto);
    public Result memberPaymethodDetail(long id);
    public Result memberPaymethodDetailList();
}
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -1,11 +1,12 @@
package com.xcong.excoin.modules.member.service.impl;
import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.Sign;
import cn.hutool.crypto.asymmetric.SignAlgorithm;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.contants.AppContants;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.common.enumerates.SymbolEnum;
@@ -13,13 +14,32 @@
import com.xcong.excoin.common.system.dto.RegisterDto;
import com.xcong.excoin.modules.member.dao.*;
import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo;
import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo;
import com.xcong.excoin.modules.member.service.MemberService;
import com.xcong.excoin.utils.MessageSourceUtils;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.ShareCodeUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.validation.Valid;
/**
 * @author wzy
@@ -43,6 +63,15 @@
    @Resource
    private MemberLevelRateDao memberLevelRateDao;
    @Resource
    MemberAuthenticationDao memberAuthenticationDao;
    @Autowired
    RedisUtils redisUtils;
    @Resource
    MemberPaymentMethodDao memberPaymentMethodDao;
    @Transactional()
    @Override
@@ -135,9 +164,339 @@
            levelRate.setSymbol(symbolEnum.getValue());
            memberLevelRateDao.insert(levelRate);
        }
        return Result.ok("success");
    }
    @Override
    public Result getMemberInfo() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        MemberInfoVo memberInfoVo = new MemberInfoVo();
        if (ObjectUtil.isNotEmpty(memberEntity)) {
            memberInfoVo.setPhone(memberEntity.getPhone());
            memberInfoVo.setInviteId(memberEntity.getInviteId());
        }
        return Result.ok(memberInfoVo);
    }
    @Override
    @Transactional
    public Result memberForgetPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
        int type = memberForgetPwdDto.getType();
        String phone = memberForgetPwdDto.getPhone();
        String email = memberForgetPwdDto.getEmail();
        String code = memberForgetPwdDto.getCode();
        String password = memberForgetPwdDto.getPassword();
        Map<String, Object> hashMap = new HashMap<>();
        if(type == 1) {
            hashMap.put("phone", phone);
        }else {
            hashMap.put("email", email);
        }
        List<MemberEntity> member = memberDao.selectByMap(hashMap);
        if (CollUtil.isEmpty(member)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0047"));
        }
        boolean verificationCode = verificationCode(type, phone, code, email);
        if(verificationCode) {
            MemberEntity memberEntity = member.get(0);
            memberEntity.setPassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
        }else {
            return Result.fail(MessageSourceUtils.getString("member_service_0045"));
        }
        if(type == 1) {
            redisUtils.del("SMS_" + phone);
        }else {
            redisUtils.del("EMAIL_" + email);
        }
        return Result.ok(MessageSourceUtils.getString("member_service_0048"));
    }
    @Override
    @Transactional
    public Result memberUpdatePwd(@Valid MemberUpdatePwdDto memberUpdatePwdDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        String code = memberUpdatePwdDto.getCode();
        String password = memberUpdatePwdDto.getPassword();
        String phone = memberUpdatePwdDto.getPhone();
        String email = memberUpdatePwdDto.getEmail();
        int type = memberUpdatePwdDto.getType();
        boolean verificationCode = verificationCode(type, phone, code, email);
        if(verificationCode) {
            memberEntity.setPassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
        }else {
            return Result.fail(MessageSourceUtils.getString("member_service_0041"));
        }
        if(type == 1) {
            redisUtils.del("SMS_" + phone);
        }else {
            redisUtils.del("EMAIL_" + email);
        }
        return Result.ok(MessageSourceUtils.getString("member_service_0040"));
    }
    /**
     * 验证输入的验证码
     * @param type   验证类型1:电话2:邮箱
     * @param phone
     * @param email
     * @param code        验证码
     * @return
     */
    private boolean verificationCode(Integer type,String phone,String code,String email) {
        boolean verificationCode = false;
        if(type == 1) {
            String smsCode = redisUtils.get("SMS_" + phone) + "";
            if(code.equals(smsCode)) {
                verificationCode = true;
            }
        }else {
            String emailCode = redisUtils.get("EMAIL_" + email) + "";
            if(code.equals(emailCode)) {
                verificationCode = true;
            }
        }
        return verificationCode;
    }
    @Override
    @Transactional
    public Result memberAuthentication(@Valid MemberAuthenticationDto memberAuthenticationDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        if (ObjectUtil.isNotEmpty(member)) {
                MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
                if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0055"));
                }
                if (MemberEntity.CERTIFY_STATUS_ING == member.getCertifyStatus()) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0056"));
                }
                memberAuthenticationEntity.setMemberId(memberId);
                if (StrUtil.isBlank(memberAuthenticationDto.getNation())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0057"));
                }
                memberAuthenticationEntity.setNation(memberAuthenticationDto.getNation());
                if (StrUtil.isBlank(memberAuthenticationDto.getFirstName())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0058"));
                }
                memberAuthenticationEntity.setFirstName(memberAuthenticationDto.getFirstName());
                if (StrUtil.isBlank(memberAuthenticationDto.getSecondName())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0059"));
                }
                memberAuthenticationEntity.setSecondName(memberAuthenticationDto.getSecondName());
                String idCardNo = memberAuthenticationDto.getIdCardNo();
                if (StrUtil.isBlank(idCardNo)) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0060"));
                }
                memberAuthenticationEntity.setIdcardNo(idCardNo);
                //同一个身份证号码不能重复实名认证
                int count = memberAuthenticationDao.findMemberbyIdCardNoCount(idCardNo);
                if (count > 0) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0060"));
                }
                if (StrUtil.isBlank(memberAuthenticationDto.getIdCardFront())
                        || StrUtil.isBlank(memberAuthenticationDto.getIdCardReverse())
                        || StrUtil.isBlank(memberAuthenticationDto.getIdCardImage())) {
                    return Result.fail(MessageSourceUtils.getString("member_service_0061"));
                }
                memberAuthenticationEntity.setIdcardImageFront(memberAuthenticationDto.getIdCardFront());
                memberAuthenticationEntity.setIdcardImageBack(memberAuthenticationDto.getIdCardReverse());
                memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
                memberAuthenticationDao.insert(memberAuthenticationEntity);
                member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
                member.setIdcardNo(idCardNo);
                memberDao.updateById(member);
                /**
                 *  TODO dingtalk
                Constant.excutor.execute(new Runnable() {
                    @Override
                    public void run() {
                        DingTalkUtils.sendActionCard(4);
                    }
                });*/
                return Result.ok(MessageSourceUtils.getString("member_service_0024"));
        }
        return Result.fail(MessageSourceUtils.getString("member_service_0063"));
    }
    @Override
    @Transactional
    public Result memberUpdateTradePwd(@Valid MemberUpdateTradePwdDto memberUpdateTradePwdDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        String code = memberUpdateTradePwdDto.getCode();
        String password = memberUpdateTradePwdDto.getPassword();
        String phone = memberUpdateTradePwdDto.getPhone();
        String email = memberUpdateTradePwdDto.getEmail();
        int type = memberUpdateTradePwdDto.getType();
        boolean verificationCode = verificationCode(type, phone, code, email);
        if(verificationCode) {
            memberEntity.setTradePassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
        }else {
            return Result.fail(MessageSourceUtils.getString("member_service_0041"));
        }
        if(type == 1) {
            redisUtils.del("SMS_" + phone);
        }else {
            redisUtils.del("EMAIL_" + email);
        }
        return Result.ok(MessageSourceUtils.getString("member_service_0051"));
    }
    @Override
    @Transactional
    public Result memberLogout() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
         if (ObjectUtil.isEmpty(memberEntity)) {
             return Result.fail(MessageSourceUtils.getString("member_service_0003"));
         }
         String phone = memberEntity.getPhone();
         if(StrUtil.isEmpty(phone)) {
             redisUtils.del(memberEntity.getPhone());
         }
         String email = memberEntity.getEmail();
         if(StrUtil.isEmpty(email)) {
             redisUtils.del(memberEntity.getPhone());
         }
         return Result.ok(MessageSourceUtils.getString("member_service_0071"));
    }
    @Override
    @Transactional
    public Result memberTradersPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity memberEntity = memberDao.selectById(memberId);
        String code = memberForgetPwdDto.getCode();
        String password = memberForgetPwdDto.getPassword();
        String phone = memberForgetPwdDto.getPhone();
        String email = memberForgetPwdDto.getEmail();
        int type = memberForgetPwdDto.getType();
        boolean verificationCode = verificationCode(type, phone, code, email);
        if(verificationCode) {
            memberEntity.setTradePassword(SecureUtil.md5(password));
            memberDao.updateById(memberEntity);
        }else {
            return Result.fail(MessageSourceUtils.getString("member_service_0015"));
        }
        if(type == 1) {
            redisUtils.del("SMS_" + phone);
        }else {
            redisUtils.del("EMAIL_" + email);
        }
        return Result.ok(MessageSourceUtils.getString("member_service_0068"));
    }
    @Override
    @Transactional
    public Result memberAddPaymethod(@Valid MemberPaymethodDto memberPaymethodDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberEntity member = memberDao.selectById(memberId);
        if(!MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) {
            return Result.fail(MessageSourceUtils.getString("member_service_0077"));
        }
        String account = memberPaymethodDto.getAccount();
        String bank = memberPaymethodDto.getBank();
        String name = memberPaymethodDto.getName();
        String paymentQrcode = memberPaymethodDto.getPaymentQrcode();
        String paymentType = memberPaymethodDto.getPaymentType();
        String subBank = memberPaymethodDto.getSubBank();
        String isDefualt = memberPaymethodDto.getIsDefualt();
        MemberPaymentMethodEntity memberPaymentMethodEntity = new MemberPaymentMethodEntity();
        memberPaymentMethodEntity.setMemberId(memberId);
        memberPaymentMethodEntity.setAccount(account);
        memberPaymentMethodEntity.setBank(bank);
        memberPaymentMethodEntity.setName(name);
        memberPaymentMethodEntity.setPaymentQrcode(paymentQrcode);
        memberPaymentMethodEntity.setPaymentType(paymentType);
        memberPaymentMethodEntity.setSubBank(subBank);
        memberPaymentMethodEntity.setIsDefualt(isDefualt);
        memberPaymentMethodDao.insert(memberPaymentMethodEntity);
        return Result.ok(MessageSourceUtils.getString("member_service_0024"));
    }
    @Override
    @Transactional
    public Result memberDelPaymethod(@Valid MemberDelPaymethodDto memberDelPaymethodDto) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        Long id = memberDelPaymethodDto.getId();
        Map<String,Object> columnMap = new HashMap<>();
        columnMap.put("id", id);
        columnMap.put("member_id", memberId);
        memberPaymentMethodDao.deleteByMap(columnMap);
        return Result.ok("success");
    }
    @Override
    public Result memberPaymethodDetail(long id) {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        MemberPaymentMethodEntity memberPaymentMethod = memberPaymentMethodDao.selectById(id);
        MemberPaymethodDetailVo memberPaymethodDetailVo = new MemberPaymethodDetailVo();
        memberPaymethodDetailVo.setAccount(memberPaymentMethod.getAccount());
        memberPaymethodDetailVo.setBank(memberPaymentMethod.getBank());
        memberPaymethodDetailVo.setMemberId(memberId);
        memberPaymethodDetailVo.setName(memberPaymentMethod.getName());
        memberPaymethodDetailVo.setPaymentQrcode(memberPaymentMethod.getPaymentQrcode());
        memberPaymethodDetailVo.setPaymentType(memberPaymentMethod.getPaymentType());
        memberPaymethodDetailVo.setSubBank(memberPaymentMethod.getSubBank());
        return Result.ok(memberPaymethodDetailVo);
    }
    @Override
    public Result memberPaymethodDetailList() {
        //获取用户ID
        Long memberId = LoginUserUtils.getAppLoginUser().getId();
        Map<String,Object> columnMap = new HashMap<>();
        columnMap.put("member_id", memberId);
        List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
        List<MemberPaymethodDetailVo> arrayList = new ArrayList<>();
        if(CollUtil.isNotEmpty(selectByMap)) {
            for(MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
                MemberPaymethodDetailVo memberPaymethodDetailVo = new MemberPaymethodDetailVo();
                memberPaymethodDetailVo.setAccount(memberPaymentMethodEntity.getAccount());
                memberPaymethodDetailVo.setBank(memberPaymentMethodEntity.getBank());
                memberPaymethodDetailVo.setMemberId(memberId);
                memberPaymethodDetailVo.setName(memberPaymentMethodEntity.getName());
                memberPaymethodDetailVo.setPaymentQrcode(memberPaymentMethodEntity.getPaymentQrcode());
                memberPaymethodDetailVo.setPaymentType(memberPaymentMethodEntity.getPaymentType());
                memberPaymethodDetailVo.setSubBank(memberPaymentMethodEntity.getSubBank());
                arrayList.add(memberPaymethodDetailVo);
            }
        }
        MemberPaymethodDetailListVo memberPaymethodDetailListVo = new MemberPaymethodDetailListVo();
        memberPaymethodDetailListVo.setMemberPaymethodDetailVo(arrayList);
        return Result.ok(memberPaymethodDetailListVo);
    }
}
src/main/java/com/xcong/excoin/modules/platform/dao/CnyUsdtExchangeDao.java
File was renamed from src/main/java/com/xcong/excoin/modules/coin/dao/platform/CnyUsdtExchangeDao.java
@@ -1,4 +1,4 @@
package com.xcong.excoin.modules.coin.dao.platform;
package com.xcong.excoin.modules.platform.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange;
src/main/java/com/xcong/excoin/modules/platform/dao/TradeSettingDao.java
New file
@@ -0,0 +1,22 @@
package com.xcong.excoin.modules.platform.dao;
import java.util.List;
import com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.platform.entity.PlatformLeverageSettingEntity;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
public interface TradeSettingDao extends BaseMapper<PlatformTradeSettingEntity> {
    PlatformTradeSettingEntity findTradeSetting();
    PlatformSymbolsSkuEntity findSymbolSkubySymbol(@Param("symbol") String symbol);
    List<PlatformSymbolsSkuEntity> findAllSymbolSkubySymbol();
    List<PlatformLeverageSettingEntity> findLeverageSetting();
}
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformLeverageSettingEntity.java
File was renamed from src/main/java/com/xcong/excoin/modules/coin/entity/PlatformLeverageSettingEntity.java
@@ -1,4 +1,4 @@
package com.xcong.excoin.modules.coin.entity;
package com.xcong.excoin.modules.platform.entity;
import java.io.Serializable;
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformSymbolsSkuEntity.java
File was renamed from src/main/java/com/xcong/excoin/modules/coin/entity/PlatformSymbolsSku.java
@@ -1,4 +1,4 @@
package com.xcong.excoin.modules.coin.entity;
package com.xcong.excoin.modules.platform.entity;
import java.io.Serializable;
@@ -13,7 +13,7 @@
 */
@Data
@TableName("platform_symbols_sku")
public class PlatformSymbolsSku implements Serializable {
public class PlatformSymbolsSkuEntity implements Serializable {
    /**
     * 
     */
@@ -27,6 +27,6 @@
    /**
     * 规格
     */
    private String sku;
    private String lotnumber;
}
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformTradeSettingEntity.java
File was renamed from src/main/java/com/xcong/excoin/modules/coin/entity/PlatformTradeSettingEntity.java
@@ -1,4 +1,4 @@
package com.xcong.excoin.modules.coin.entity;
package com.xcong.excoin.modules.platform.entity;
import java.io.Serializable;
import java.math.BigDecimal;
src/main/java/com/xcong/excoin/utils/CacheSettingUtils.java
New file
@@ -0,0 +1,82 @@
package com.xcong.excoin.utils;
import cn.hutool.core.bean.BeanUtil;
import com.xcong.excoin.modules.platform.dao.TradeSettingDao;
import com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author wzy
 * @date 2020-05-28
 **/
@Component
public class CacheSettingUtils {
    /**
     * 交易设置缓存Key
     */
    private final static String TRADE_SETTING_KEY = "trade_setting_key";
    /**
     * 币种规格缓存key
     */
    private final static String TRADE_SYMBOL_SKU_KEY = "trade_symbol_sku_key";
    @Resource
    private TradeSettingDao tradeSettingDao;
    @Resource
    private RedisUtils redisUtils;
    /**
     * 获取币种规格
     *
     * @param symbol
     * @return
     */
    public BigDecimal getSymbolSku(String symbol) {
        Object hget = redisUtils.hget(TRADE_SYMBOL_SKU_KEY, symbol);
        if (hget == null) {
            List<PlatformSymbolsSkuEntity> symbolSkubySymbol = tradeSettingDao.findAllSymbolSkubySymbol();
            Map<String, Object> map = new HashMap<String, Object>();
            if (CollectionUtils.isNotEmpty(symbolSkubySymbol)) {
                for (PlatformSymbolsSkuEntity symbolSku : symbolSkubySymbol) {
                    map.put(symbolSku.getName(), symbolSku.getLotnumber());
                }
                // 存入redis
                redisUtils.hmset(TRADE_SYMBOL_SKU_KEY, map);
            }
            hget = redisUtils.hget(TRADE_SYMBOL_SKU_KEY, symbol);
        }
        return new BigDecimal(hget.toString());
    }
    /**
     * 获取交易设置缓存
     *
     * @return
     */
    public PlatformTradeSettingEntity getTradeSetting() {
        Map<Object, Object> hmget = redisUtils.hmget(TRADE_SETTING_KEY);
        if (hmget == null || hmget.size() == 0) {
            PlatformTradeSettingEntity tradeSetting = tradeSettingDao.findTradeSetting();
            redisUtils.hmset(TRADE_SETTING_KEY, BeanUtil.beanToMap(tradeSetting));
            return tradeSetting;
        }
        return BeanUtil.mapToBean(hmget, PlatformTradeSettingEntity.class, true);
    }
}
src/main/java/com/xcong/excoin/utils/CoinTypeConvert.java
New file
@@ -0,0 +1,50 @@
package com.xcong.excoin.utils;
/**
 * @author wzy
 * @date 2020-05-28
 **/
public class CoinTypeConvert {
    public static String convert(String symbol) {
        switch (symbol) {
            case "btcusdt":
                return "BTC/USDT";
            case "ethusdt":
                return "ETH/USDT";
            case "xrpusdt":
                return "XRP/USDT";
            case "ltcusdt":
                return "LTC/USDT";
            case "bchusdt":
                return "BCH/USDT";
            case "eosusdt":
                return "EOS/USDT";
            case "etcusdt":
                return "ETC/USDT";
            default:
                return null;
        }
    }
    public static String convertToKey(String symbol) {
        switch (symbol) {
            case "BTC/USDT":
                return "BTC_NEW_PRICE";
            case "ETH/USDT":
                return "ETH_NEW_PRICE";
            case "XRP/USDT":
                return "XRP_NEW_PRICE";
            case "LTC/USDT":
                return "LTC_NEW_PRICE";
            case "BCH/USDT":
                return "BCH_NEW_PRICE";
            case "EOS/USDT":
                return "EOS_NEW_PRICE";
            case "ETC/USDT":
                return "ETC_NEW_PRICE";
            default:
                return null;
        }
    }
}
src/main/java/com/xcong/excoin/utils/TypeJudgeUtils.java
New file
@@ -0,0 +1,28 @@
package com.xcong.excoin.utils;
/**
 * 接受参数 类型判断
 *
 * @author wzy
 * @date 2020-05-27
 **/
public class TypeJudgeUtils {
    /**
     * 委托类型 1开多 2开空 3平多 4平空
     *
     * @param type
     * @return
     */
    public static boolean entrustType(int type) {
        switch (type) {
            case 1:
            case 2:
            case 3:
            case 4:
                return true;
            default:
                return false;
        }
    }
}
src/main/resources/logback-spring.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configuration scan="false">
    <contextName>logback</contextName>
    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
    <property name="log.path" value="logs" />
src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
New file
@@ -0,0 +1,5 @@
<?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.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao">
</mapper>
src/main/resources/mapper/contract/ContractHoldOrderDao.xml
New file
@@ -0,0 +1,5 @@
<?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.xcong.excoin.modules.contract.dao.ContractHoldOrderDao">
</mapper>
src/main/resources/mapper/contract/ContractOrderDao.xml
New file
@@ -0,0 +1,5 @@
<?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.xcong.excoin.modules.contract.dao.ContractOrderDao">
</mapper>
src/main/resources/mapper/member/MemberAuthenticationDao.xml
New file
@@ -0,0 +1,9 @@
<?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.xcong.excoin.modules.member.dao.MemberAuthenticationDao">
    <select id="findMemberbyIdCardNoCount" resultType="int">
        select count(*) from member_authentication where idcard_No = #{idCardNo}
    </select>
</mapper>
src/main/resources/mapper/member/MemberDao.xml
@@ -9,4 +9,5 @@
    <select id="selectMemberInfoByRefererId" resultType="com.xcong.excoin.modules.member.entity.MemberEntity">
        select * from member where invite_id=#{refererId}
    </select>
</mapper>
src/main/resources/mapper/member/MemberPaymentMethodDao.xml
New file
@@ -0,0 +1,6 @@
<?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.xcong.excoin.modules.member.dao.MemberPaymentMethodDao">
</mapper>
src/main/resources/mapper/platform/TradeSettingDao.xml
@@ -1,12 +1,12 @@
<?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.xcong.excoin.modules.coin.dao.platform.TradeSettingDao">
<mapper namespace="com.xcong.excoin.modules.platform.dao.TradeSettingDao">
    
    <select id="findTradeSetting" resultType="com.xcong.excoin.modules.coin.entity.PlatformTradeSettingEntity">
    <select id="findTradeSetting" resultType="com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity">
        SELECT * FROM platform_trade_setting
    </select>
    
    <select id="findSymbolSkubySymbol" resultType="com.xcong.excoin.modules.coin.entity.PlatformSymbolsSku">
    <select id="findSymbolSkubySymbol" resultType="com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity">
        select * from platform_symbols_sku
         <where>
             <if test="symbol!=null and symbol!=''">
@@ -15,11 +15,11 @@
         </where>
    </select>
    <select id="findAllSymbolSkubySymbol" resultType="com.xcong.excoin.modules.coin.entity.PlatformSymbolsSku">
    <select id="findAllSymbolSkubySymbol" resultType="com.xcong.excoin.modules.platform.entity.PlatformSymbolsSkuEntity">
        select * from platform_symbols_sku
    </select>
    
    <select id="findLeverageSetting" resultType="com.xcong.excoin.modules.coin.entity.PlatformLeverageSettingEntity">
    <select id="findLeverageSetting" resultType="com.xcong.excoin.modules.platform.entity.PlatformLeverageSettingEntity">
        select * from platform_leverage_setting order by value ASC
    </select>
    
src/main/resources/mapper/walletCoinOrder/OrderCoinDealDao.xml
@@ -9,7 +9,7 @@
                  and member_id = #{memberId}
             </if>
         </where>
         order by id desc
         order by create_time desc
    </select>
    
    <select id="selectWalletCoinOrder" resultType="com.xcong.excoin.modules.coin.entity.OrderCoinsDealEntity">
src/main/resources/mapper/walletCoinOrder/OrderCoinsDao.xml
@@ -12,6 +12,7 @@
            <if test="symbol != null and symbol !=''">
                 and a.symbol = #{symbol}
            </if>
            order by create_time desc
    </select>
    
    <select id="findWalletCoinOrderByOrderNo" resultType="com.xcong.excoin.modules.coin.entity.OrderCoinsEntity">