Helius
2020-05-27 b9333be7a664c3ea113dd789b7c8be735840a361
Merge branch 'master' of https://gitee.com/chonggaoxiao/new_excoin
8 files added
16 files modified
828 ■■■■ changed files
pom.xml 1 ●●●● 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/parameter/vo/OrderWalletCoinListVo.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java 15 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/home/controller/MemberQuickBuySaleController.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/home/dto/MemberQuickBuySaleCommitDto.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/home/mapper/MemberQuickBuySaleEntityMapper.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/home/service/MemberQuickBuySaleService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java 60 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/home/vo/MemberQuickBuySaleDetailVo.java 44 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/home/vo/MemberQuickBuySaleVo.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java 93 ●●●● 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 31 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java 121 ●●●● 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/MemberForgetPwdDto.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/service/MemberService.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java 168 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformBannerEntity.java 46 ●●●●● 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
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/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/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/service/impl/OrderCoinServiceImpl.java
@@ -35,6 +35,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.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;
@@ -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/home/controller/MemberQuickBuySaleController.java
@@ -5,9 +5,11 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.druid.util.StringUtils;
@@ -55,8 +57,6 @@
        if (StringUtils.isEmpty(tradePasswordWeb)) {
            return Result.fail("请输入交易密码");
        }
        // System.out.println("交易密码:"+MD5.GetMD5Code(tradePasswordWeb)+" tradePassword =
        // "+tradePassword);
        // 验证交易密码
        if (!tradePassword.equals(SecureUtil.md5(tradePasswordWeb))) {
            return Result.fail("请输入正确的交易密码");
@@ -67,7 +67,7 @@
    
    @ApiOperation(value = "commitPay", notes = "USDT充值支付确认")
    @RequestMapping(value = "/commitPay", method = RequestMethod.POST)
    public Result commitPay(@RequestBody MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) {
    public Result commitPay(@RequestBody @Valid MemberQuickBuySaleCommitDto memberQuickBuySaleCommitDto) {
        return memberQuickBuySaleService.commitPay(memberQuickBuySaleCommitDto);
    }
    
@@ -77,22 +77,27 @@
        return memberQuickBuySaleService.selectById(id);
    }
    
    @ApiOperation(value = "selectAll", notes = "查询用户所有的买卖记录")
    @GetMapping(value = "/selectAll")
    public Result selectAll(@RequestParam(value = "type") String type) {
        return memberQuickBuySaleService.selectAll(type);
    }
    @ApiOperation(value = "cancel", notes = "充值撤销")
    @GetMapping(value = "/cancel/{id}")
    public Result cancel(@PathVariable(value = "id") Long id) {
    @GetMapping(value = "/cancel")
    public Result cancel(@RequestParam(value = "id") Long id) {
        return memberQuickBuySaleService.cancelRecharge(id);
    }
    
    @ApiOperation(value = "sell", notes = "USDT快速充值")
    @ApiOperation(value = "sell", notes = "USDT快速卖出")
    @RequestMapping(value = "/sell", method = RequestMethod.POST)
    public Result sell(MemberQuickBuySaleDto memberQuickBuySaleDto) {
    public Result sell(@RequestBody @Valid MemberQuickBuySaleDto memberQuickBuySaleDto) {
        // 获取当前登录用户
        MemberEntity member = LoginUserUtils.getAppLoginUser();
        if (MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) {
            return Result.fail("请先实名认证");
        }
        String tradePasswordWeb = memberQuickBuySaleDto.getTradePassword();
        // 验证支付密码
        String tradePassword = member.getTradePassword();
        
src/main/java/com/xcong/excoin/modules/home/dto/MemberQuickBuySaleCommitDto.java
@@ -1,22 +1,28 @@
package com.xcong.excoin.modules.home.dto;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "确认快捷买入接收参数", description = "确认快捷买入接收参数")
@ApiModel(value = "MemberQuickBuySaleCommitDto", description = "确认快捷买入接收参数")
public class MemberQuickBuySaleCommitDto {
    @NotNull(message = "订单id不能为空")
    @ApiModelProperty(value = "主键",example = "1")
    private Long id;
    
    @NotNull(message = "付款方式不能为空")
    @ApiModelProperty(value = "付款方式 1-支付宝2-微信3-银行卡",example = "1")
    private int paymentType;
    
    @NotNull(message = "收款账号不能为空")
    @ApiModelProperty(value = "收款账号",example = "13000000000")
    private String paymentAccount;
    
    @NotNull(message = "收款人姓名不能为空")
    @ApiModelProperty(value = "收款人姓名",example = "张三")
    private String paymentName;
}
src/main/java/com/xcong/excoin/modules/home/mapper/MemberQuickBuySaleEntityMapper.java
@@ -1,12 +1,13 @@
package com.xcong.excoin.modules.home.mapper;
import com.xcong.excoin.modules.home.entity.MemberQuickBuySaleEntity;
import java.util.List;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.xcong.excoin.modules.home.dto.MemberQuickBuySaleDto;
import com.xcong.excoin.modules.home.entity.MemberQuickBuySaleEntity;
import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleVo;
import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleDetailVo;
@Mapper
@@ -14,8 +15,10 @@
    public static final MemberQuickBuySaleEntityMapper INSTANCE = Mappers.getMapper(MemberQuickBuySaleEntityMapper.class);
    public abstract MemberQuickBuySaleVo entityToVo(MemberQuickBuySaleEntity memberQuickBuySaleEntity);
    public abstract MemberQuickBuySaleDetailVo entityToVo(MemberQuickBuySaleEntity memberQuickBuySaleEntity);
    
    public abstract MemberQuickBuySaleEntity dtoToEntity(MemberQuickBuySaleDto dto);
    public abstract List<MemberQuickBuySaleDetailVo> entityListToVoList(List<MemberQuickBuySaleEntity> memberQuickBuySaleEntityList);
}
src/main/java/com/xcong/excoin/modules/home/service/MemberQuickBuySaleService.java
@@ -15,6 +15,8 @@
    
    public Result selectById(Long id);
    
    public Result selectAll(String type);
    public Result cancelRecharge(Long id);
    
    public Result sell(MemberEntity member,MemberQuickBuySaleDto memberQuickBuySaleDto);
src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java
@@ -8,6 +8,7 @@
import org.springframework.stereotype.Service;
import com.alibaba.druid.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -22,6 +23,7 @@
import com.xcong.excoin.modules.home.entity.MemberQuickBuySaleEntity;
import com.xcong.excoin.modules.home.mapper.MemberQuickBuySaleEntityMapper;
import com.xcong.excoin.modules.home.service.MemberQuickBuySaleService;
import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleDetailVo;
import com.xcong.excoin.modules.home.vo.MemberQuickBuySaleVo;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
@@ -56,6 +58,7 @@
        memberQuickBuySaleEntity.setMemberId(member.getId());
        memberQuickBuySaleEntity.setAmountUsdt(memberQuickBuySaleDto.getAmountUsdt());
        memberQuickBuySaleEntity.setAmountCny(memberQuickBuySaleDto.getAmountCny());
        memberQuickBuySaleEntity.setUnitPrice(memberQuickBuySaleDto.getUnitPrice());
        memberQuickBuySaleEntity.setCreateTime(new Date());
        memberQuickBuySaleEntity.setOrderNo(chargeNo);
        memberQuickBuySaleEntity.setOrderType("B");
@@ -63,26 +66,10 @@
        int ran = (int) (Math.random() * 10000000);
        memberQuickBuySaleEntity.setPaymentCode(ran + "");
        
        // 收款信息
        QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("status", "1");
        List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper);
        // 随机一个
        if (CollectionUtils.isEmpty(paymentMethodList)) {
            return Result.fail("收款方式为空");
        }
//        int total = paymentMethodList.size();
//        int index = (int) (Math.random() * total);
//        PlatformPaymentMethodEntity paymemtMethod = paymentMethodList.get(index);
//        memberQuickBuySaleEntity.setPaymentName(paymemtMethod.getName());
//        memberQuickBuySaleEntity.setPaymentAccount(paymemtMethod.getAccount());
        memberQuickBuySaleDao.insert(memberQuickBuySaleEntity);
        MemberQuickBuySaleVo memberQuickBuySaleVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
        MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo();
        memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId());
        // 返回前台付款方式
//        memberQuickBuySaleVo.setPlatforPaymentMethodList(paymentMethodList);
//        memberQuickBuySaleEntity.setReceiveMethod(payMethodList.get(index));
        // 返回前台付款方式
//                memberChargeUsdt.setReceiveMethod(payMethodList.get(index));
        return Result.ok(memberQuickBuySaleVo);
    }
@@ -105,12 +92,35 @@
    @Override
    public Result selectById(Long id) {
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectById(id);
        MemberQuickBuySaleVo memberQuickBuySaleVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
        MemberQuickBuySaleDetailVo memberQuickBuySaleDetailVo = MemberQuickBuySaleEntityMapper.INSTANCE.entityToVo(memberQuickBuySaleEntity);
        // 收款信息
        QueryWrapper<PlatformPaymentMethodEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("status", "1");
        List<PlatformPaymentMethodEntity> paymentMethodList = platformPaymentMethodDao.selectList(queryWrapper);
        // 随机一个
        if (CollectionUtils.isEmpty(paymentMethodList)) {
            return Result.fail("收款方式为空");
        }
        memberQuickBuySaleDetailVo.setPlatforPaymentMethodList(paymentMethodList);
        long startTime = memberQuickBuySaleEntity.getCreateTime().getTime();
        long nowTime = new Date().getTime();
        long third = 30*60*1000;
        memberQuickBuySaleVo.setTimeLeft((third-nowTime+startTime)/1000);
        return Result.ok(memberQuickBuySaleVo);
        memberQuickBuySaleDetailVo.setTimeLeft((third-nowTime+startTime)/1000);
        return Result.ok(memberQuickBuySaleDetailVo);
    }
    @Override
    public Result selectAll(String type) {
        MemberEntity member = LoginUserUtils.getAppLoginUser();
        QueryWrapper<MemberQuickBuySaleEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("member_id", member.getId());
        if(!StringUtils.isEmpty(type)) {
            queryWrapper.eq("order_type", type);
        }
        queryWrapper.orderByDesc("id");
        List<MemberQuickBuySaleEntity> memberQuickBuySaleEntityList = memberQuickBuySaleDao.selectList(queryWrapper);
        List<MemberQuickBuySaleDetailVo> memberQuickBuySaleDetailVoList = MemberQuickBuySaleEntityMapper.INSTANCE.entityListToVoList(memberQuickBuySaleEntityList);
        return Result.ok(memberQuickBuySaleDetailVoList);
    }
    @Override
@@ -130,7 +140,6 @@
        if (extractUsdt.compareTo(walletCoin.getAvailableBalance())==1) {
            return Result.fail("您当前可用USDT额度不够");
        }
        // 判断是否存在收款方式
        List<MemberPaymentMethodEntity> payMentMethodList = memberPaymentMethodDao.selectByMemberId(member.getId());
@@ -171,11 +180,8 @@
    public Result cancelRecharge(Long id) {
        // 获取当前登录用户
        MemberEntity member = LoginUserUtils.getAppLoginUser();
        if(member==null) {
            return Result.fail("登录用户已失效");
        }
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(id,member.getId());
        memberQuickBuySaleEntity.setOrderStatus(1);
        MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(),id);
        memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
        memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
        
        // 判断是否存在足够余额
src/main/java/com/xcong/excoin/modules/home/vo/MemberQuickBuySaleDetailVo.java
New file
@@ -0,0 +1,44 @@
package com.xcong.excoin.modules.home.vo;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xcong.excoin.modules.platform.entity.PlatformPaymentMethodEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "会员快捷买入卖出", description = "会员快捷买入卖出类")
public class MemberQuickBuySaleDetailVo {
    @ApiModelProperty(value = "订单Id")
    private Long id;
    @ApiModelProperty(value = "用户id")
    private Long memberId;
    @ApiModelProperty(value = "金额(人民币)")
    private BigDecimal amountCny;
    @ApiModelProperty(value = "金额(USDT)")
    private BigDecimal amountUsdt;
    @ApiModelProperty(value = "付款方式 1-支付宝2-微信3-银行卡")
    private Integer paymentType;
    @ApiModelProperty(value = "支付码")
    private String paymentCode;
    @ApiModelProperty(value = "单价")
    private BigDecimal unitPrice;
    @ApiModelProperty(value = "订单状态 1-新建2-已付款3-已审核4-撤单5-系统取消")
    private int orderStatus;
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    @ApiModelProperty(value = "订单类型 B买入 S卖出")
    private String orderType;
    @ApiModelProperty(value = "剩余时间")
    private Long timeLeft;
    @ApiModelProperty(value = "下单时间")
    @JsonFormat(pattern = "MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    @ApiModelProperty(value = "平台收款方式")
    private List<PlatformPaymentMethodEntity> platforPaymentMethodList;
}
src/main/java/com/xcong/excoin/modules/home/vo/MemberQuickBuySaleVo.java
@@ -1,6 +1,5 @@
package com.xcong.excoin.modules.home.vo;
import java.math.BigDecimal;
import java.util.List;
import com.xcong.excoin.modules.platform.entity.PlatformPaymentMethodEntity;
@@ -12,28 +11,8 @@
@ApiModel(value = "会员快捷买入卖出", description = "会员快捷买入卖出类")
public class MemberQuickBuySaleVo {
    @ApiModelProperty(value = "用户Id")
    private Long memberId;
    @ApiModelProperty(value = "金额(人民币)")
    private BigDecimal amountCny;
    @ApiModelProperty(value = "金额(USDT)")
    private BigDecimal amountUsdt;
    @ApiModelProperty(value = "付款方式 1-支付宝2-微信3-银行卡")
    private int paymentType;
    @ApiModelProperty(value = "收款账号")
    private String paymentAccount;
    @ApiModelProperty(value = "收款人姓名")
    private String paymentName;
    @ApiModelProperty(value = "支付码")
    private String paymentCode;
    @ApiModelProperty(value = "单价")
    private BigDecimal unitPrice;
    @ApiModelProperty(value = "订单状态 1-新建2-已付款3-已审核4-撤单5-系统取消")
    private int orderStatus;
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    @ApiModelProperty(value = "订单类型 B买入 S卖出")
    private String orderType;
    @ApiModelProperty(value = "订单Id")
    private Long id;
    @ApiModelProperty(value = "剩余时间")
    private Long timeLeft;
    @ApiModelProperty(value = "平台收款方式")
src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -1,15 +1,78 @@
package com.xcong.excoin.modules.member.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * 用户类
 *
 * @author wzy
 * @date 2020-05-18
 **/
@RestController
@RequestMapping(value = "/api/member")
public class MemberController {
}
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.MemberForgetPwdDto;
import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo;
import com.xcong.excoin.modules.member.service.MemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.extern.slf4j.Slf4j;
/**
 * 用户类
 *
 * @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();
    }
    /**
     * 忘记密码
     * @param code 验证码
     * @param password 新密码
     * @param token 用户登录的token
     * @return
     */
    @ApiOperation(value=" 忘记密码", notes=" 忘记密码")
    @RequestMapping(value="/memberForgetPwd")
    public Result  memberForgetPwd(@RequestBody @Valid MemberForgetPwdDto memberForgetPwdDto) {
        return memberService.memberForgetPwd(memberForgetPwdDto);
    }
    /**
     * 实名认证
     * @param token
     * @param memberAuthenVo
     * @param request
     * @return
     */
    @ApiOperation(value="实名认证", notes="实名认证")
    @PostMapping(value="/memberAuthentication")
    public Result memberAuthentication(@RequestBody @Valid MemberAuthenticationDto memberAuthenticationDto) {
        return memberService.memberAuthentication(memberAuthenticationDto);
    }
}
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
@@ -1,15 +1,16 @@
package com.xcong.excoin.modules.member.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import org.apache.ibatis.annotations.Param;
/**
 * @author wzy
 */
public interface MemberDao extends BaseMapper<MemberEntity> {
    public MemberEntity selectMemberInfoByAccount(@Param("account") String account);
    public MemberEntity selectMemberInfoByRefererId(@Param("refererId") String refererId);
}
package com.xcong.excoin.modules.member.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import org.apache.ibatis.annotations.Param;
/**
 * @author wzy
 */
public interface MemberDao extends BaseMapper<MemberEntity> {
    public MemberEntity selectMemberInfoByAccount(@Param("account") String account);
    public MemberEntity selectMemberInfoByRefererId(@Param("refererId") String refererId);
}
src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java
@@ -1,56 +1,65 @@
package com.xcong.excoin.modules.member.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
/**
 * 用户实名认证信息实体
 *
 * @author wzy
 * @date 2020-05-18
 **/
@Data
@TableName("member_authentication")
public class MemberAuthenticationEntity extends BaseEntity {
    /**
     * 用户ID
     */
    private Long memberId;
    /**
     * 真实姓名
     */
    private String realName;
    /**
     * 姓
     */
    private String firstName;
    /**
     * 名
     */
    private String secondName;
    /**
     * 国家
     */
    private String nation;
    /**
     * 身份证正面
     */
    private String idcardImageFront;
    /**
     * 身份证背面
     */
    private String idcardImageBack;
    /**
     * 手持身份证
     */
    private String idcardImageInHand;
}
package com.xcong.excoin.modules.member.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xcong.excoin.common.system.base.BaseEntity;
import lombok.Data;
/**
 * 用户实名认证信息实体
 *
 * @author wzy
 * @date 2020-05-18
 **/
@Data
@TableName("member_authentication")
public class MemberAuthenticationEntity extends BaseEntity {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     * 用户ID
     */
    private Long memberId;
    /**
     * 真实姓名
     */
    private String realName;
    /**
     * 姓
     */
    private String firstName;
    /**
     * 名
     */
    private String secondName;
    /**
     * 国家
     */
    private String nation;
    /**
     * 身份证号
     */
    private String idcardNo;
    /**
     * 身份证正面
     */
    private String idcardImageFront;
    /**
     * 身份证背面
     */
    private String idcardImageBack;
    /**
     * 手持身份证
     */
    private String idcardImageInHand;
}
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/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/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/service/MemberService.java
@@ -1,16 +1,25 @@
package com.xcong.excoin.modules.member.service;
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;
/**
 * @author wzy
 */
public interface MemberService extends IService<MemberEntity> {
    public Result register(RegisterDto registerDto);
}
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.member.parameter.dto.MemberAuthenticationDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto;
/**
 * @author wzy
 */
public interface MemberService extends IService<MemberEntity> {
    public Result register(RegisterDto registerDto);
    public Result getMemberInfo();
    public Result memberAuthentication(@Valid MemberAuthenticationDto memberAuthenticationDto);
    public Result memberForgetPwd(@Valid MemberForgetPwdDto memberForgetPwdDto);
}
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -1,11 +1,13 @@
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 cn.hutool.crypto.digest.MD5;
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 +15,25 @@
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.MemberForgetPwdDto;
import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo;
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.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.validation.Valid;
/**
 * @author wzy
@@ -43,6 +57,12 @@
    @Resource
    private MemberLevelRateDao memberLevelRateDao;
    @Resource
    MemberAuthenticationDao memberAuthenticationDao;
    @Autowired
    RedisUtils redisUtils;
    @Transactional()
    @Override
@@ -135,9 +155,147 @@
            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
    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"));
    }
    /**
     * 验证输入的验证码
     * @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"));
    }
}
src/main/java/com/xcong/excoin/modules/platform/entity/PlatformBannerEntity.java
New file
@@ -0,0 +1,46 @@
package com.xcong.excoin.modules.platform.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("platform_banner")
public class PlatformBannerEntity{
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
     * 标题
     */
    private String name;
    /**
     * 图片链接
     */
    private String image_url;
    /**
     * 是否可跳转 1-是2-否
     */
    private String is_jump;
    /**
     * 跳转外部或内部 1-内2-外
     */
    private int is_inside;
    /**
     * 跳转链接
     */
    private String jump_url;
    /**
     * 显示端口 1-pc2-手机
     */
    private int show_port;
    /**
     * 联系方式
     */
    private String sort;
    private String is_top;
}
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>