From 707a7b28f6955c0cf9de2d90b6361ddc6a468d59 Mon Sep 17 00:00:00 2001
From: gao <gaoleox@163>
Date: Tue, 16 Jun 2020 16:08:57 +0800
Subject: [PATCH] Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin_manage.git

---
 src/main/java/com/xcong/excoin/modules/member/mapper/MemberAuthenticationMapper.java |   11 
 src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml                       |   35 +
 src/main/resources/templates/febs/views/modules/member/chargeUsdt.html               |   28 
 src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java   |   70 ++
 src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinWithdrawMapper.java   |   16 
 src/main/java/com/xcong/excoin/FebsShiroApplication.java                             |    1 
 src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java           |   59 +
 src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java |    2 
 src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java               |    4 
 src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java    |   56 +
 src/main/java/com/xcong/excoin/modules/member/controller/ViewController.java         |   55 +
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java    |  309 +++++++++
 src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinChargeMapper.java     |   16 
 src/main/resources/templates/febs/views/modules/member/extractUsdt.html              |  197 ++++++
 src/main/resources/templates/febs/views/modules/member/memberDetail.html             |  130 ++++
 src/main/java/com/xcong/excoin/modules/member/dto/MemberDetailConfirmDto.java        |   13 
 src/main/resources/templates/febs/views/modules/member/member.html                   |  116 ---
 src/main/resources/mapper/modules/MemberCoinChargeMapper.xml                         |   20 
 src/main/resources/templates/febs/views/modules/member/applyCoin.html                |  129 ++++
 src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java             |   62 +
 src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java       |   94 ++
 src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml                       |   25 
 src/main/java/com/xcong/excoin/modules/member/entity/MemberQuickBuySaleEntity.java   |    2 
 src/main/java/com/xcong/excoin/modules/member/mapper/MemberQuickBuySaleMapper.java   |    4 
 src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java              |   73 ++
 /dev/null                                                                            |   40 -
 src/main/resources/templates/febs/views/modules/member/withdrawCoin.html             |  192 ++++++
 src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinChargeEntity.java     |   65 ++
 src/main/java/com/xcong/excoin/modules/member/service/IMemberService.java            |   26 
 src/main/resources/mapper/modules/MemberAuthenticationMapper.xml                     |    9 
 src/main/java/com/xcong/excoin/modules/member/vo/MemberAuthenticationVo.java         |   23 
 src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinAddressMapper.java    |    8 
 src/main/resources/mapper/modules/MemberCoinAddressMapper.xml                        |   20 
 33 files changed, 1,736 insertions(+), 174 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/FebsShiroApplication.java b/src/main/java/com/xcong/excoin/FebsShiroApplication.java
index 46bea12..1c7efb1 100644
--- a/src/main/java/com/xcong/excoin/FebsShiroApplication.java
+++ b/src/main/java/com/xcong/excoin/FebsShiroApplication.java
@@ -22,5 +22,4 @@
                 .web(WebApplicationType.SERVLET)
                 .run(args);
     }
-
 }
diff --git a/src/main/java/com/xcong/excoin/modules/authentication/controller/AuthenticationController.java b/src/main/java/com/xcong/excoin/modules/authentication/controller/AuthenticationController.java
deleted file mode 100644
index 016ce28..0000000
--- a/src/main/java/com/xcong/excoin/modules/authentication/controller/AuthenticationController.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.xcong.excoin.modules.authentication.controller;
-
-import java.util.Map;
-
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.xcong.excoin.common.controller.BaseController;
-import com.xcong.excoin.common.entity.FebsResponse;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.modules.authentication.entity.MemberAuthenticationEntity;
-import com.xcong.excoin.modules.authentication.service.AuthenticationService;
-import lombok.RequiredArgsConstructor;
-
-/**
- * 身份信息审核
- */
-@Validated
-@RestController
-@RequiredArgsConstructor
-@RequestMapping(value = "/authentication")
-public class AuthenticationController extends BaseController{
-	
-	private final AuthenticationService authenticationService;
-	
-	@GetMapping("getList")
-	public FebsResponse getList(MemberAuthenticationEntity memberAuthenticationEntity, QueryRequest request) {
-		IPage<MemberAuthenticationEntity> findMemberListInPage = authenticationService.findAuthenticationListInPage(memberAuthenticationEntity, request);
-	    Map<String, Object> data = getDataTable(findMemberListInPage);
-	    return new FebsResponse().success().data(data);
-	}
-
-
-}
diff --git a/src/main/java/com/xcong/excoin/modules/authentication/controller/ViewController.java b/src/main/java/com/xcong/excoin/modules/authentication/controller/ViewController.java
deleted file mode 100644
index 8452b2e..0000000
--- a/src/main/java/com/xcong/excoin/modules/authentication/controller/ViewController.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.xcong.excoin.modules.authentication.controller;
-
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import com.xcong.excoin.common.entity.FebsConstant;
-import com.xcong.excoin.common.utils.FebsUtil;
-
-/**
- * 身份信息审核
- */
-@Controller("authenticationView")
-@RequestMapping(FebsConstant.VIEW_PREFIX + "authentication/confirm")
-public class ViewController {
-	
-	@GetMapping("authentication")
-    @RequiresPermissions("authentication:view")
-    public String authenticationConfirmToPage() {
-        return FebsUtil.view("modules/authentication/authentication");
-    }
-
-}
diff --git a/src/main/java/com/xcong/excoin/modules/authentication/mapper/AuthenticationMapper.java b/src/main/java/com/xcong/excoin/modules/authentication/mapper/AuthenticationMapper.java
deleted file mode 100644
index 58eb6a5..0000000
--- a/src/main/java/com/xcong/excoin/modules/authentication/mapper/AuthenticationMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.xcong.excoin.modules.authentication.mapper;
-
-import org.apache.ibatis.annotations.Param;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xcong.excoin.modules.authentication.entity.MemberAuthenticationEntity;
-
-public interface AuthenticationMapper extends BaseMapper<MemberAuthenticationEntity> {
-	
-	IPage<MemberAuthenticationEntity> selectAuthenticationListInPage(Page<MemberAuthenticationEntity> page,
-			@Param("record") MemberAuthenticationEntity memberAuthenticationEntity);
-
-}
diff --git a/src/main/java/com/xcong/excoin/modules/authentication/service/AuthenticationService.java b/src/main/java/com/xcong/excoin/modules/authentication/service/AuthenticationService.java
deleted file mode 100644
index 397d40d..0000000
--- a/src/main/java/com/xcong/excoin/modules/authentication/service/AuthenticationService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.xcong.excoin.modules.authentication.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.modules.authentication.entity.MemberAuthenticationEntity;
-
-public interface AuthenticationService extends IService<MemberAuthenticationEntity>{
-	
-	IPage<MemberAuthenticationEntity> findAuthenticationListInPage(MemberAuthenticationEntity memberAuthenticationEntity, QueryRequest request);
-
-}
diff --git a/src/main/java/com/xcong/excoin/modules/authentication/service/Impl/AuthenticationServiceImpl.java b/src/main/java/com/xcong/excoin/modules/authentication/service/Impl/AuthenticationServiceImpl.java
deleted file mode 100644
index 7fbb918..0000000
--- a/src/main/java/com/xcong/excoin/modules/authentication/service/Impl/AuthenticationServiceImpl.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.xcong.excoin.modules.authentication.service.Impl;
-
-import java.awt.List;
-
-import javax.annotation.Resource;
-
-import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.modules.authentication.entity.MemberAuthenticationEntity;
-import com.xcong.excoin.modules.authentication.mapper.AuthenticationMapper;
-import com.xcong.excoin.modules.authentication.service.AuthenticationService;
-import com.xcong.excoin.modules.member.mapper.MemberMapper;
-
-@Service
-public class AuthenticationServiceImpl extends ServiceImpl<AuthenticationMapper, MemberAuthenticationEntity> implements AuthenticationService{
-
-	@Resource
-	MemberMapper memberMapper;
-	
-	@Override
-	public IPage<MemberAuthenticationEntity> findAuthenticationListInPage(MemberAuthenticationEntity memberAuthenticationEntity,
-			QueryRequest request) {
-		
-		Page<MemberAuthenticationEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
-        return this.baseMapper.selectAuthenticationListInPage(page, memberAuthenticationEntity);
-	}
-
-}
diff --git a/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
index 0d5f272..4707454 100644
--- a/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
+++ b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -4,20 +4,26 @@
 import com.xcong.excoin.common.controller.BaseController;
 import com.xcong.excoin.common.entity.FebsResponse;
 import com.xcong.excoin.common.entity.QueryRequest;
+import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto;
+import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity;
+import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity;
 import com.xcong.excoin.modules.member.service.IMemberService;
+import com.xcong.excoin.system.entity.User;
+
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
 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.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Map;
 
-import javax.validation.constraints.NotBlank;
+import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -37,6 +43,16 @@
     public FebsResponse getList(MemberEntity member, QueryRequest request) {
         Map<String, Object> data = getDataTable(memberService.findMemberListInPage(member, request));
         return new FebsResponse().success().data(data);
+    }
+    
+    /**
+     * 实名认证---确认
+     * @return
+     */
+    @PostMapping("memberDetailConfirm")
+    @ControllerEndpoint(operation = "实名认证---确认", exceptionMessage = "认证失败")
+    public FebsResponse memberDetailConfirm(@Valid MemberDetailConfirmDto memberDetailConfirmDto) {
+        return memberService.memberDetailConfirm(memberDetailConfirmDto);
     }
     
     /**
@@ -67,4 +83,80 @@
     public FebsResponse memberChargeUsdtCancel(@NotNull(message = "{required}") @PathVariable Long id) {
         return memberService.memberChargeUsdtCancel(id);
     }
+    
+    /**
+     * 会员USDT提现---列表
+     */
+    @GetMapping("memberExtractUsdt")
+    public FebsResponse memberExtractUsdt(MemberQuickBuySaleEntity memberQuickBuySaleEntity, QueryRequest request) {
+        Map<String, Object> data = getDataTable(memberService.findmemberQuickSaleListInPage(memberQuickBuySaleEntity, request));
+        return new FebsResponse().success().data(data);
+    }
+    
+    /**
+     * 会员USDT提现---确认
+     * @return
+     */
+    @GetMapping("memberExtractUsdtConfirm/{id}")
+    @ControllerEndpoint(operation = "会员USDT提现---确认", exceptionMessage = "划转失败")
+    public FebsResponse memberExtractUsdtConfirm(@NotNull(message = "{required}") @PathVariable Long id) {
+        return memberService.memberExtractUsdtConfirm(id);
+    }
+    
+    /**
+     * 会员USDT提现---取消
+     * @return
+     */
+    @GetMapping("memberExtractUsdtCancel/{id}")
+    @ControllerEndpoint(operation = "会员USDT提现---取消", exceptionMessage = "取消失败")
+    public FebsResponse memberExtractUsdtCancel(@NotNull(message = "{required}") @PathVariable Long id) {
+        return memberService.memberExtractUsdtCancel(id);
+    }
+    
+    /**
+     * 充币记录---列表
+     */
+    @GetMapping("memberApplyCoin")
+    public FebsResponse memberApplyCoin(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request) {
+        Map<String, Object> data = getDataTable(memberService.findMemberApplyCoinListInPage(memberCoinChargeEntity, request));
+        return new FebsResponse().success().data(data);
+    }
+    
+    /**
+     * 提币记录---列表
+     */
+    @GetMapping("memberWithdrawCoin")
+    public FebsResponse memberWithdrawCoin(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) {
+    	String isInside = memberCoinWithdrawEntity.getIsInside();
+    	if(!"".equals(isInside) && isInside != null) {
+    		if("1".equals(isInside)) {
+    			memberCoinWithdrawEntity.setIsInside("Y");
+    		}else {
+    			memberCoinWithdrawEntity.setIsInside("N");
+    		}
+    	}
+        Map<String, Object> data = getDataTable(memberService.findmemberWithdrawCoinListInPage(memberCoinWithdrawEntity, request));
+        return new FebsResponse().success().data(data);
+    }
+    
+    /**
+     * 提币记录---确认
+     * @return
+     */
+    @GetMapping("memberWithdrawCoinConfirm/{id}")
+    @ControllerEndpoint(operation = "提币记录---确认", exceptionMessage = "划转失败")
+    public FebsResponse memberWithdrawCoinConfirm(@NotNull(message = "{required}") @PathVariable Long id) {
+        return memberService.memberWithdrawCoinConfirm(id);
+    }
+    
+    /**
+     * 提币记录---取消
+     * @return
+     */
+    @GetMapping("memberWithdrawCoinCancel/{id}")
+    @ControllerEndpoint(operation = "提币记录---取消", exceptionMessage = "取消失败")
+    public FebsResponse memberWithdrawCoinCancel(@NotNull(message = "{required}") @PathVariable Long id) {
+        return memberService.memberWithdrawCoinCancel(id);
+    }
+    
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/controller/ViewController.java b/src/main/java/com/xcong/excoin/modules/member/controller/ViewController.java
index 6c34410..692e346 100644
--- a/src/main/java/com/xcong/excoin/modules/member/controller/ViewController.java
+++ b/src/main/java/com/xcong/excoin/modules/member/controller/ViewController.java
@@ -1,10 +1,18 @@
 package com.xcong.excoin.modules.member.controller;
 
+import com.xcong.excoin.common.controller.BaseController;
 import com.xcong.excoin.common.entity.FebsConstant;
 import com.xcong.excoin.common.utils.FebsUtil;
+import com.xcong.excoin.modules.member.service.IMemberService;
+import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo;
+
+import lombok.RequiredArgsConstructor;
+
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 /**
@@ -13,15 +21,26 @@
  **/
 @Controller("memberView")
 @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/member")
-public class ViewController {
-
+@RequiredArgsConstructor
+public class ViewController extends BaseController{
+	
+	private final IMemberService memberService;
+	
     @GetMapping("member")
     @RequiresPermissions("member:view")
     public String member() {
         return FebsUtil.view("modules/member/member");
     }
     
-    /**
+    @GetMapping("memberDetail/{id}")
+    @RequiresPermissions("member:update")
+    public String memberDetail(@PathVariable long id, Model model) {
+    	MemberAuthenticationVo data = memberService.selectMemberAuthenticationById(id);
+    	model.addAttribute("member", data);
+        return FebsUtil.view("modules/member/memberDetail");
+    }
+
+	/**
      * 会员充值USDT记录
      * @return
      */
@@ -31,5 +50,35 @@
         return FebsUtil.view("modules/member/chargeUsdt");
     }
     
+    /**
+     * 会员USDT提现记录
+     * @return
+     */
+    @GetMapping("extractUsdt")
+    @RequiresPermissions("extractUsdt:view")
+    public String extractUsdt() {
+        return FebsUtil.view("modules/member/extractUsdt");
+    }
+    
+    /**
+     * 充币记录
+     * @return
+     */
+    @GetMapping("applyCoin")
+    @RequiresPermissions("applyCoins:view")
+    public String applyCoin() {
+        return FebsUtil.view("modules/member/applyCoin");
+    }
+    
+    /**
+     * 提币记录
+     * @return
+     */
+    @GetMapping("withdrawCoin")
+    @RequiresPermissions("withdrawCoins:view")
+    public String withdrawCoin() {
+        return FebsUtil.view("modules/member/withdrawCoin");
+    }
+    
     
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/dto/MemberDetailConfirmDto.java b/src/main/java/com/xcong/excoin/modules/member/dto/MemberDetailConfirmDto.java
new file mode 100644
index 0000000..a6b52b5
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/dto/MemberDetailConfirmDto.java
@@ -0,0 +1,13 @@
+package com.xcong.excoin.modules.member.dto;
+
+import javax.validation.constraints.NotNull;
+
+import lombok.Data;
+
+@Data
+public class MemberDetailConfirmDto {
+	
+	@NotNull(message = "ID不能为空")
+	private Long id;
+	
+}
diff --git a/src/main/java/com/xcong/excoin/modules/authentication/entity/MemberAuthenticationEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java
similarity index 93%
rename from src/main/java/com/xcong/excoin/modules/authentication/entity/MemberAuthenticationEntity.java
rename to src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java
index a98d50a..636ee54 100644
--- a/src/main/java/com/xcong/excoin/modules/authentication/entity/MemberAuthenticationEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberAuthenticationEntity.java
@@ -1,4 +1,4 @@
-package com.xcong.excoin.modules.authentication.entity;
+package com.xcong.excoin.modules.member.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.xcong.excoin.common.entity.BaseEntity;
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java
new file mode 100644
index 0000000..fcd7b42
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressEntity.java
@@ -0,0 +1,56 @@
+package com.xcong.excoin.modules.member.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.excoin.common.entity.BaseEntity;
+
+import lombok.Data;
+
+/**
+ * 会员币地址
+ * @author Administrator
+ *
+ */
+@Data
+@TableName("member_coin_address")
+public class MemberCoinAddressEntity extends BaseEntity {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	/**
+     * 会员ID
+     */
+    private Long memberId;
+    /**
+     * 地址
+     */
+    private String address;
+    /**
+     * 私钥
+     */
+    private String privateKey;
+    /**
+     * 币种
+     */
+    private String symbol;
+    /**
+     * 是否是本平台地址1:是  0:否
+     */
+    private String isBiyict;
+    public static final String IS_BIYICT_YES = "1";
+    public static final String IS_BIYICT_NO = "0";
+    /**
+     * 
+     */
+    private String label;
+    /**
+     * 
+     */
+    private String tag;
+    /**
+     * 币种ID
+     */
+    private Long symbolscoinId;
+    
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinChargeEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinChargeEntity.java
new file mode 100644
index 0000000..8e72ecc
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinChargeEntity.java
@@ -0,0 +1,65 @@
+package com.xcong.excoin.modules.member.entity;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.excoin.common.entity.BaseEntity;
+
+import lombok.Data;
+
+/**
+ * 会员充币表
+ *
+ * @author wzy
+ * @date 2020-05-12
+ **/
+@Data
+@TableName("member_coin_charge")
+public class MemberCoinChargeEntity extends BaseEntity{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 会员ID
+	 */
+	private Long memberId;
+	/**
+	 * 凭证
+	 */
+	private Long certificate;
+    /**
+     * 充值金额
+     */
+    private BigDecimal amount;
+    /**
+     * 上次更新时钱包金额
+     */
+    private BigDecimal lastAmount;
+	/**
+	 * 状态
+	 */
+	private int status;
+	/**
+	 * 币种
+	 */
+	private String symbol;
+	/**
+	 * 地址
+	 */
+	private String address;
+	private String tag;
+	private String hash;
+	/**
+	 * 订单编号
+	 */
+	private String orderCode;
+	
+	/**
+     * 查询条件:第一查询条件
+     */
+    @TableField(exist = false)
+    private String account;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java
new file mode 100644
index 0000000..d45e2dd
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java
@@ -0,0 +1,70 @@
+package com.xcong.excoin.modules.member.entity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.excoin.common.entity.BaseEntity;
+
+import lombok.Data;
+
+/**
+ * 会员提币表
+ *
+ * @author wzy
+ * @date 2020-05-12
+ **/
+@Data
+@TableName("member_coin_withdraw")
+public class MemberCoinWithdrawEntity extends BaseEntity{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 会员ID
+	 */
+	private Long memberId;
+	/**
+	 * 地址
+	 */
+	private String address;
+	/**
+	 * 提币数量
+	 */
+	private BigDecimal amount;
+	/**
+	 * 手续费
+	 */
+	private BigDecimal feeAmount;
+	/**
+	 * 币种
+	 */
+	private String symbol;
+	/**
+	 * 状态
+	 */
+	private int status;
+	//等待审核
+	public static final int IS_STATUS_ING = 1;
+	//同意
+	public static final int IS_STATUS_Y = 2;
+	//拒绝
+    public static final int IS_STATUS_N = 3;
+	private String label;
+	private String tag;
+	
+	/**
+	 * 是否内部转账 Y-是N-不是
+	 */
+	private String isInside;
+	
+	/**
+     * 查询条件:第一查询条件
+     */
+    @TableField(exist = false)
+    private String account;
+	
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
index b3fa8e4..4afca0c 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
@@ -51,7 +51,7 @@
     /**
      * 实名认证 审核通过
      */
-    public static final Integer CERTIFY_STATUS_Y = 1;
+    public static final Integer CERTIFY_STATUS_Y = 2;
     /**
      * 实名认证 审核不通过
      */
@@ -59,7 +59,7 @@
     /**
      * 实名认证 审核中
      */
-    public static final Integer CERTIFY_STATUS_ING = 2;
+    public static final Integer CERTIFY_STATUS_ING = 1;
     /**
      * 实名认证 未提交
      */
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberQuickBuySaleEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberQuickBuySaleEntity.java
index 7b02298..282af9c 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberQuickBuySaleEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberQuickBuySaleEntity.java
@@ -18,7 +18,7 @@
 	private static final long serialVersionUID = 1L;
 
 	/**
-	 * 订单状态 1-新建
+	 * 订单状态     买入  1-新建     卖出  1-待付款     
 	 */
 	public static final Integer CHARGE_STATUS_CREATE = 1;
 	
diff --git a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberAuthenticationMapper.java b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberAuthenticationMapper.java
new file mode 100644
index 0000000..b026898
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberAuthenticationMapper.java
@@ -0,0 +1,11 @@
+package com.xcong.excoin.modules.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xcong.excoin.modules.member.entity.MemberAuthenticationEntity;
+import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo;
+
+public interface MemberAuthenticationMapper extends BaseMapper<MemberAuthenticationEntity> {
+
+	MemberAuthenticationVo findMemberAuthenticationByMemberId(long id);
+	
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinAddressMapper.java b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinAddressMapper.java
new file mode 100644
index 0000000..b295ea4
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinAddressMapper.java
@@ -0,0 +1,8 @@
+package com.xcong.excoin.modules.member.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xcong.excoin.modules.member.entity.MemberCoinAddressEntity;
+
+public interface MemberCoinAddressMapper extends BaseMapper<MemberCoinAddressEntity> {
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinChargeMapper.java b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinChargeMapper.java
new file mode 100644
index 0000000..5595658
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinChargeMapper.java
@@ -0,0 +1,16 @@
+package com.xcong.excoin.modules.member.mapper;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity;
+import com.xcong.excoin.modules.member.vo.MemberCoinChargeVo;
+
+public interface MemberCoinChargeMapper extends BaseMapper<MemberCoinChargeEntity> {
+
+	IPage<MemberCoinChargeVo> findMemberApplyCoinListInPage(Page<MemberCoinChargeEntity> page,
+			@Param("record")MemberCoinChargeEntity memberCoinChargeEntity);
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinWithdrawMapper.java b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinWithdrawMapper.java
new file mode 100644
index 0000000..f9e4afc
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberCoinWithdrawMapper.java
@@ -0,0 +1,16 @@
+package com.xcong.excoin.modules.member.mapper;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity;
+import com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo;
+
+public interface MemberCoinWithdrawMapper extends BaseMapper<MemberCoinWithdrawEntity> {
+
+	IPage<MemberCoinWithdrawVo> findmemberWithdrawCoinListInPage(Page<MemberCoinWithdrawEntity> page,
+			@Param("record")MemberCoinWithdrawEntity memberCoinWithdrawEntity);
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberQuickBuySaleMapper.java b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberQuickBuySaleMapper.java
index 7decd3d..7e13f2b 100644
--- a/src/main/java/com/xcong/excoin/modules/member/mapper/MemberQuickBuySaleMapper.java
+++ b/src/main/java/com/xcong/excoin/modules/member/mapper/MemberQuickBuySaleMapper.java
@@ -7,10 +7,14 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity;
 import com.xcong.excoin.modules.member.vo.MemberQuickBuySaleVo;
+import com.xcong.excoin.modules.member.vo.MemberQuickSaleVo;
 
 public interface MemberQuickBuySaleMapper extends BaseMapper<MemberQuickBuySaleEntity> {
 
 	IPage<MemberQuickBuySaleVo> findmemberQuickBuySaleListInPage(Page<MemberQuickBuySaleEntity> page,
 			@Param("record")MemberQuickBuySaleEntity memberQuickBuySaleEntity);
 
+	IPage<MemberQuickSaleVo> findmemberQuickSaleListInPage(Page<MemberQuickBuySaleEntity> page,
+			@Param("record")MemberQuickBuySaleEntity memberQuickBuySaleEntity);
+
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/IMemberService.java b/src/main/java/com/xcong/excoin/modules/member/service/IMemberService.java
index a4bc97a..f4a9c95 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/IMemberService.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/IMemberService.java
@@ -1,14 +1,22 @@
 package com.xcong.excoin.modules.member.service;
 
+import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xcong.excoin.common.entity.FebsResponse;
 import com.xcong.excoin.common.entity.QueryRequest;
+import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto;
+import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity;
+import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity;
+import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo;
+import com.xcong.excoin.modules.member.vo.MemberCoinChargeVo;
+import com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo;
 import com.xcong.excoin.modules.member.vo.MemberQuickBuySaleVo;
+import com.xcong.excoin.modules.member.vo.MemberQuickSaleVo;
 
 /**
  * @author helius
@@ -23,4 +31,22 @@
 
 	FebsResponse memberChargeUsdtCancel(@NotNull(message = "{required}") Long id);
 
+	IPage<MemberQuickSaleVo> findmemberQuickSaleListInPage(MemberQuickBuySaleEntity memberQuickBuySaleEntity, QueryRequest request);
+
+	FebsResponse memberExtractUsdtCancel(@NotNull(message = "{required}") Long id);
+
+	FebsResponse memberExtractUsdtConfirm(@NotNull(message = "{required}") Long id);
+
+	IPage<MemberCoinChargeVo> findMemberApplyCoinListInPage(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request);
+
+	IPage<MemberCoinWithdrawVo> findmemberWithdrawCoinListInPage(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request);
+
+	FebsResponse memberWithdrawCoinConfirm(@NotNull(message = "{required}") Long id);
+
+	FebsResponse memberWithdrawCoinCancel(@NotNull(message = "{required}") Long id);
+
+	MemberAuthenticationVo selectMemberAuthenticationById(@NotNull(message = "{required}") long id);
+
+	FebsResponse memberDetailConfirm(@Valid MemberDetailConfirmDto memberDetailConfirmDto);
+
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index 72f4d90..867a793 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -6,19 +6,37 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xcong.excoin.common.entity.FebsResponse;
 import com.xcong.excoin.common.entity.QueryRequest;
+import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto;
 import com.xcong.excoin.modules.member.entity.MemberAccountMoneyChangeEntity;
+import com.xcong.excoin.modules.member.entity.MemberCoinAddressEntity;
+import com.xcong.excoin.modules.member.entity.MemberCoinChargeEntity;
+import com.xcong.excoin.modules.member.entity.MemberCoinWithdrawEntity;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.member.entity.MemberQuickBuySaleEntity;
 import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
 import com.xcong.excoin.modules.member.mapper.MemberAccountMoneyChangeMapper;
+import com.xcong.excoin.modules.member.mapper.MemberAuthenticationMapper;
+import com.xcong.excoin.modules.member.mapper.MemberCoinAddressMapper;
+import com.xcong.excoin.modules.member.mapper.MemberCoinChargeMapper;
+import com.xcong.excoin.modules.member.mapper.MemberCoinWithdrawMapper;
 import com.xcong.excoin.modules.member.mapper.MemberMapper;
 import com.xcong.excoin.modules.member.mapper.MemberQuickBuySaleMapper;
 import com.xcong.excoin.modules.member.mapper.MemberWalletCoinMapper;
 import com.xcong.excoin.modules.member.service.IMemberService;
+import com.xcong.excoin.modules.member.vo.MemberAuthenticationVo;
+import com.xcong.excoin.modules.member.vo.MemberCoinChargeVo;
+import com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo;
 import com.xcong.excoin.modules.member.vo.MemberQuickBuySaleVo;
+import com.xcong.excoin.modules.member.vo.MemberQuickSaleVo;
 
 import lombok.RequiredArgsConstructor;
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,11 +49,21 @@
 @RequiredArgsConstructor
 public class MemberServiceImpl extends ServiceImpl<MemberMapper, MemberEntity> implements IMemberService {
 	
+	private final MemberMapper memberMapper;
+	
 	private final MemberQuickBuySaleMapper memberQuickBuySaleMapper;
 	
 	private final MemberWalletCoinMapper memberWalletCoinMapper;
 	
 	private final MemberAccountMoneyChangeMapper memberAccountMoneyChangeMapper;
+	
+	private final MemberCoinChargeMapper memberCoinChargeMapper;
+	
+	private final MemberCoinWithdrawMapper memberCoinWithdrawMapper;
+	
+	private final MemberCoinAddressMapper memberCoinAddressMapper;
+	
+	private final MemberAuthenticationMapper memberAuthenticationMapper;
 	
 
     @Override
@@ -90,6 +118,11 @@
         memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER);
         memberAccountMoneyChangeEntity.setSymbol("USDT");
         memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN);
+        memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setCreateTime(new Date());
+        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setUpdateTime(new Date());
+        
         memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity);
         /**
          * todo
@@ -101,7 +134,7 @@
 		SmsUtils.hxSmsSend(member.getPhone(), smsContent);
 		
          */
-		return new FebsResponse().message("拨币成功");
+		return new FebsResponse().success();
 	}
 
 	@Override
@@ -121,4 +154,278 @@
 		return new FebsResponse().success();
 		
 	}
+
+	@Override
+	public IPage<MemberQuickSaleVo> findmemberQuickSaleListInPage(MemberQuickBuySaleEntity memberQuickBuySaleEntity,
+			QueryRequest request) {
+		Page<MemberQuickBuySaleEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+		IPage<MemberQuickSaleVo> findmemberQuickBuySaleListInPage = memberQuickBuySaleMapper.findmemberQuickSaleListInPage(page, memberQuickBuySaleEntity);
+        return findmemberQuickBuySaleListInPage;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public FebsResponse memberExtractUsdtCancel(@NotNull(message = "{required}") Long id) {
+		MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id);
+		
+		if(!MemberQuickBuySaleEntity.CHARGE_STATUS_CREATE.equals(memberQuickBuySaleEntity.getOrderStatus())) {
+			return new FebsResponse().message("只允许待付款状态操作");
+		}
+		
+		Long memberId = memberQuickBuySaleEntity.getMemberId();
+		BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt();
+		String walletCode = "USDT";
+		
+		MemberEntity selectById = this.baseMapper.selectById(memberId);
+		if(ObjectUtils.isEmpty(selectById)) {
+			return new FebsResponse().message("用户已不存在");
+		}
+		//获取币币钱包
+		MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode);
+		BigDecimal frozenBalance = memberWalletCoinEntity.getFrozenBalance();
+		BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance();
+		BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance();
+		memberWalletCoinEntity.setFrozenBalance(frozenBalance.subtract(amountUsdt));
+		memberWalletCoinEntity.setAvailableBalance(availableBalance.add(amountUsdt));
+		memberWalletCoinEntity.setTotalBalance(totalBalance.add(amountUsdt));
+		// 更新
+		memberWalletCoinMapper.updateById(memberWalletCoinEntity);
+		// 更新状态
+		memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_SYSTEM);
+		memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity);
+		
+        /**
+         * todo
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+		String chargeTime = format.format(memberQuickBuySaleEntity.getChargeTime()); // 将当前时间袼式化为指定的格式
+		String usdt = memberQuickBuySaleEntity.getAmountUsdt()+"USDT";
+		//发送短信提醒
+		String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"充值"+usdt+"已成功到账,请您及时查收!订单号为:"+memberChargeUsdt.getOrderCode()+"。";
+		SmsUtils.hxSmsSend(member.getPhone(), smsContent);
+		
+         */
+		return new FebsResponse().success();
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public FebsResponse memberExtractUsdtConfirm(@NotNull(message = "{required}") Long id) {
+		
+		MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleMapper.selectById(id);
+		
+		if(!MemberQuickBuySaleEntity.CHARGE_STATUS_CREATE.equals(memberQuickBuySaleEntity.getOrderStatus())) {
+			return new FebsResponse().message("只允许待付款状态操作");
+		}
+		
+		Long memberId = memberQuickBuySaleEntity.getMemberId();
+		BigDecimal amountUsdt = memberQuickBuySaleEntity.getAmountUsdt();
+		String walletCode = "USDT";
+		
+		MemberEntity selectById = this.baseMapper.selectById(memberId);
+		if(ObjectUtils.isEmpty(selectById)) {
+			return new FebsResponse().message("用户已不存在");
+		}
+		
+		//获取币币钱包
+		MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId,walletCode);
+		BigDecimal frozenBalance = memberWalletCoinEntity.getFrozenBalance();
+		memberWalletCoinEntity.setFrozenBalance(frozenBalance.subtract(amountUsdt));
+		memberWalletCoinMapper.updateById(memberWalletCoinEntity);
+		
+		memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_PAID);
+		memberQuickBuySaleMapper.updateById(memberQuickBuySaleEntity);
+		
+		//添加币币资金划转历史记录
+		MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity();
+		memberAccountMoneyChangeEntity.setContent("提现");
+		memberAccountMoneyChangeEntity.setMemberId(memberId);
+		memberAccountMoneyChangeEntity.setAmount(amountUsdt);
+		memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER);
+		memberAccountMoneyChangeEntity.setSymbol(walletCode);
+		memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN);
+		memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setCreateTime(new Date());
+        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setUpdateTime(new Date());
+		memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity);
+		
+		/**
+		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        String chargeTime = format.format(memberQuickBuySaleEntity.getUpdateTime()); // 将当前时间袼式化为指定的格式
+        String usdt = amountUsdt+"USDT";
+		//发送短信提醒
+		String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"提现"+usdt+"已成功到账,请您及时查收!订单号为:"+memberQuickBuySaleEntity.getOrderCode()+"。";
+		SmsUtils.hxSmsSend(selectById.getPhone(), smsContent);
+		 * 
+		 */
+		
+		return new FebsResponse().success();
+	}
+
+	@Override
+	public IPage<MemberCoinChargeVo> findMemberApplyCoinListInPage(MemberCoinChargeEntity memberCoinChargeEntity,
+			QueryRequest request) {
+		Page<MemberCoinChargeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+		IPage<MemberCoinChargeVo> findmemberQuickBuySaleListInPage = memberCoinChargeMapper.findMemberApplyCoinListInPage(page, memberCoinChargeEntity);
+        return findmemberQuickBuySaleListInPage;
+	}
+
+	@Override
+	public IPage<MemberCoinWithdrawVo> findmemberWithdrawCoinListInPage(
+			MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) {
+		Page<MemberCoinWithdrawEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+		IPage<MemberCoinWithdrawVo> findmemberQuickBuySaleListInPage = memberCoinWithdrawMapper.findmemberWithdrawCoinListInPage(page, memberCoinWithdrawEntity);
+        return findmemberQuickBuySaleListInPage;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public FebsResponse memberWithdrawCoinConfirm(@NotNull(message = "{required}") Long id) {
+		
+		MemberCoinWithdrawEntity selectById = memberCoinWithdrawMapper.selectById(id);
+		Long memberId = selectById.getMemberId();
+		String symbol = selectById.getSymbol();
+		String address = selectById.getAddress();
+		int status = selectById.getStatus();
+		if(status != 1) {
+			return new FebsResponse().fail().message("只有等待审核的状态才能确认!");
+		}
+		
+		// 查询币币钱包
+		MemberWalletCoinEntity walletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId, symbol);
+		
+		BigDecimal total = walletCoin.getTotalBalance().subtract(selectById.getAmount()).subtract(selectById.getFeeAmount());
+		walletCoin.setTotalBalance(total);
+		BigDecimal frozen = walletCoin.getFrozenBalance().subtract(selectById.getAmount()).subtract(selectById.getFeeAmount());
+		walletCoin.setFrozenBalance(frozen);
+		
+		memberWalletCoinMapper.updateById(walletCoin);
+		
+		if ("Y".equals(selectById.getIsInside())) {
+			Map<String, Object> columnMap = new HashMap<>();
+			columnMap.put("symbol", symbol);
+			columnMap.put("address", address);
+			// 如果是内部转账 则需要将币加到内部地址
+			List<MemberCoinAddressEntity> selectByMap = memberCoinAddressMapper.selectByMap(columnMap);
+			if(selectByMap == null || selectByMap.isEmpty()) {
+				return new FebsResponse().fail().message("地址有误,请拒绝!");
+			}
+			Long aimMemberId = selectByMap.get(0).getMemberId();
+			MemberWalletCoinEntity aimWalletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(aimMemberId, symbol);
+			
+			BigDecimal addTotal = aimWalletCoin.getTotalBalance().add(selectById.getAmount());
+			BigDecimal addAvailable = aimWalletCoin.getAvailableBalance().add(selectById.getAmount());
+			aimWalletCoin.setTotalBalance(addTotal);
+			aimWalletCoin.setAvailableBalance(addAvailable);
+			
+			memberWalletCoinMapper.updateById(aimWalletCoin);
+			
+			MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity();
+			memberAccountMoneyChangeEntity.setContent("收款");
+			memberAccountMoneyChangeEntity.setMemberId(aimMemberId);
+			memberAccountMoneyChangeEntity.setAmount(selectById.getAmount());
+			memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER);
+			memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol());
+			memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN);
+			memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy());
+	        memberAccountMoneyChangeEntity.setCreateTime(new Date());
+	        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy());
+	        memberAccountMoneyChangeEntity.setUpdateTime(new Date());
+			memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity);
+		}
+		
+		MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity();
+		memberAccountMoneyChangeEntity.setContent("提币");
+		memberAccountMoneyChangeEntity.setMemberId(memberId);
+		memberAccountMoneyChangeEntity.setAmount(selectById.getAmount());
+		memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_SUCCESS_INTEGER);
+		memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol());
+		memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN);
+		memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setCreateTime(new Date());
+        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setUpdateTime(new Date());
+		memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity);
+		
+		selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_Y);
+		memberCoinWithdrawMapper.updateById(selectById);
+		/**
+		//短信提醒
+		 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+         String chargeTime = format.format(new Date()); // 将当前时间袼式化为指定的格式
+         String usdt = selectById.getAmount()+"USDT";
+ 		 * 发送短信提醒   todo
+ 		String smsContent = "【Excoin】尊敬的用户您好!您于"+chargeTime+"提现"+usdt+"已成功到账,请您及时查收!";
+ 		SmsUtils.hxSmsSend(member.getPhone(), smsContent);
+ 		 */
+         return new FebsResponse().success();
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public FebsResponse memberWithdrawCoinCancel(@NotNull(message = "{required}") Long id) {
+		
+		MemberCoinWithdrawEntity selectById = memberCoinWithdrawMapper.selectById(id);
+		Long memberId = selectById.getMemberId();
+		String symbol = selectById.getSymbol();
+		int status = selectById.getStatus();
+		if(status != 1) {
+			return new FebsResponse().fail().message("只有等待审核的状态才能拒绝!");
+		}
+		// 查询币币钱包
+		MemberWalletCoinEntity walletCoin = memberWalletCoinMapper.findWalletCoinByMemberIdAndWalletCode(memberId, symbol);
+		
+		BigDecimal available = walletCoin.getAvailableBalance().add(selectById.getAmount()).add(selectById.getFeeAmount());
+		walletCoin.setAvailableBalance(available);
+		BigDecimal frozen = walletCoin.getFrozenBalance().subtract(selectById.getAmount()).subtract(selectById.getFeeAmount());
+		walletCoin.setFrozenBalance(frozen);
+		
+		memberWalletCoinMapper.updateById(walletCoin);
+		
+		// 提币退款记录
+		MemberAccountMoneyChangeEntity memberAccountMoneyChangeEntity = new MemberAccountMoneyChangeEntity();
+		memberAccountMoneyChangeEntity.setContent("提币");
+		memberAccountMoneyChangeEntity.setMemberId(memberId);
+		memberAccountMoneyChangeEntity.setAmount(selectById.getAmount());
+		memberAccountMoneyChangeEntity.setStatus(MemberAccountMoneyChangeEntity.STATUS_FAIL_INTEGER);
+		memberAccountMoneyChangeEntity.setSymbol(selectById.getSymbol());
+		memberAccountMoneyChangeEntity.setType(MemberAccountMoneyChangeEntity.TYPE_WALLET_COIN);
+		memberAccountMoneyChangeEntity.setCreateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setCreateTime(new Date());
+        memberAccountMoneyChangeEntity.setUpdateBy(selectById.getCreateBy());
+        memberAccountMoneyChangeEntity.setUpdateTime(new Date());
+		memberAccountMoneyChangeMapper.insert(memberAccountMoneyChangeEntity);
+		
+		selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_N);
+		memberCoinWithdrawMapper.updateById(selectById);
+		return new FebsResponse().success();
+	}
+
+	@Override
+	public MemberAuthenticationVo selectMemberAuthenticationById(long id) {
+		MemberAuthenticationVo memberAuthenticationEntity = memberAuthenticationMapper.findMemberAuthenticationByMemberId(id);
+		String firstName = memberAuthenticationEntity.getFirstName();
+		String secondName = memberAuthenticationEntity.getSecondName();
+		memberAuthenticationEntity.setRealName(firstName+"-"+secondName);
+		return memberAuthenticationEntity;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public FebsResponse memberDetailConfirm(@Valid MemberDetailConfirmDto memberDetailConfirmDto) {
+		Long id = memberDetailConfirmDto.getId();
+		MemberEntity selectById = memberMapper.selectById(id);
+		Integer certifyStatus = selectById.getCertifyStatus();
+		if(!MemberEntity.CERTIFY_STATUS_ING.equals(certifyStatus)) {
+			return new FebsResponse().fail().message("只有【待审核】状态才能提交!");
+		}
+		
+		MemberAuthenticationVo memberAuthenticationEntity = memberAuthenticationMapper.findMemberAuthenticationByMemberId(id);
+		selectById.setCertifyStatus(MemberEntity.CERTIFY_STATUS_Y);
+		selectById.setIdcardNo(memberAuthenticationEntity.getIdcardNo());
+		
+		memberMapper.updateById(selectById);
+		return new FebsResponse().success();
+	}
+
 }
diff --git a/src/main/java/com/xcong/excoin/modules/authentication/entity/MemberAuthenticationEntity.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberAuthenticationVo.java
similarity index 61%
copy from src/main/java/com/xcong/excoin/modules/authentication/entity/MemberAuthenticationEntity.java
copy to src/main/java/com/xcong/excoin/modules/member/vo/MemberAuthenticationVo.java
index a98d50a..1c55868 100644
--- a/src/main/java/com/xcong/excoin/modules/authentication/entity/MemberAuthenticationEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberAuthenticationVo.java
@@ -1,16 +1,21 @@
-package com.xcong.excoin.modules.authentication.entity;
+package com.xcong.excoin.modules.member.vo;
 
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.xcong.excoin.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
 import lombok.Data;
 
 @Data
-@TableName("member_authentication")
-public class MemberAuthenticationEntity extends BaseEntity{
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
+public class MemberAuthenticationVo {
+
+	@TableId(value = "id",type = IdType.AUTO)
+    private Long id;
+	
+    /**
+     * 实名认证状态 0-审核未通过 1-审核通过 2-等待审核
+     */
+    private Integer certifyStatus;
+	
 	/**
      * 用户ID
      */
diff --git a/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java
new file mode 100644
index 0000000..f1b5993
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinChargeVo.java
@@ -0,0 +1,62 @@
+package com.xcong.excoin.modules.member.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import lombok.Data;
+
+@Data
+public class MemberCoinChargeVo {
+	@TableId(value = "id",type = IdType.AUTO)
+    private Long id;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime; 
+    /**
+     * 手机号(包含国际手机号)
+     */
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+	/**
+	 * 会员ID
+	 */
+	private Long memberId;
+	/**
+	 * 凭证
+	 */
+	private Long certificate;
+    /**
+     * 充值金额
+     */
+    private BigDecimal amount;
+    /**
+     * 上次更新时钱包金额
+     */
+    private BigDecimal lastAmount;
+	/**
+	 * 状态
+	 */
+	private int status;
+	/**
+	 * 币种
+	 */
+	private String symbol;
+	/**
+	 * 地址
+	 */
+	private String address;
+	private String tag;
+	private String hash;
+	/**
+	 * 订单编号
+	 */
+	private String orderCode;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java
new file mode 100644
index 0000000..1ddfa0b
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberCoinWithdrawVo.java
@@ -0,0 +1,59 @@
+package com.xcong.excoin.modules.member.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import lombok.Data;
+
+@Data
+public class MemberCoinWithdrawVo {
+	
+	@TableId(value = "id",type = IdType.AUTO)
+	private Long id;
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+	private Date createTime; 
+	/**
+     * 手机号(包含国际手机号)
+     */
+    private String phone;
+    /**
+     * 邮箱
+     */
+    private String email;
+	/**
+	 * 会员ID
+	 */
+	private Long memberId;
+	/**
+	 * 地址
+	 */
+	private String address;
+	/**
+	 * 提币数量
+	 */
+	private BigDecimal amount;
+	/**
+	 * 手续费
+	 */
+	private BigDecimal feeAmount;
+	/**
+	 * 币种
+	 */
+	private String symbol;
+	/**
+	 * 状态
+	 */
+	private int status;
+	private String label;
+	private String tag;
+	
+	/**
+	 * 是否内部转账 Y-是N-不是
+	 */
+	private String isInside;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java b/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java
new file mode 100644
index 0000000..dd6933e
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/vo/MemberQuickSaleVo.java
@@ -0,0 +1,73 @@
+package com.xcong.excoin.modules.member.vo;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import lombok.Data;
+
+@Data
+public class MemberQuickSaleVo {
+
+	@TableId(value = "id",type = IdType.AUTO)
+    private Long id;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+    /**
+     * 手机号(包含国际手机号)
+     */
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+	/**
+     * 用户Id
+     */
+    private Long memberId;
+    /**
+     * 单价
+     */
+    private BigDecimal unitPrice;
+    /**
+     * 金额(人民币)
+     */
+    private BigDecimal amountCny;
+    /**
+     * 金额(USDT)
+     */
+    private BigDecimal amountUsdt;
+    /**
+     * 订单状态 1-待审核2-已付款3-已审核4-撤单5-系统取消
+     */
+    private int orderStatus;
+    /**
+     * 收款姓名
+     */
+    private String name;
+    /**
+     * 收款账号
+     */
+    private String account;
+    /**
+     * 收款二维码
+     */
+    private String paymentQrcode;
+    /**
+     * 银行
+     */
+    private String bank;
+    /**
+     * 付款方式 1-支付宝2-微信3-银行卡
+     */
+    private Integer paymentType;
+    /**
+     * 订单编号
+     */
+    private String orderNo;
+
+}
diff --git a/src/main/resources/mapper/modules/AuthenticationMapper.xml b/src/main/resources/mapper/modules/AuthenticationMapper.xml
deleted file mode 100644
index 329c86c..0000000
--- a/src/main/resources/mapper/modules/AuthenticationMapper.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?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.authentication.mapper.AuthenticationMapper">
-
-
-    <select id="selectAuthenticationListInPage" resultType="com.xcong.excoin.modules.authentication.entity.MemberAuthenticationEntity">
-        select * from member a LEFT JOIN member_authentication m on m.member_id = a.id
-        <where>
-            <if test="record != null" >
-                <if test="record.startTime!=null">
-                    and create_time >=#{record.startTime}
-                </if>
-                <if test="record.endTime!=null">
-                    and #{record.endTime} >= create_time
-                </if>
-                <if test="record.account!=null and record.account!=''">
-                    and (phone = #{record.account} or email = #{record.account} or invite_id=#{record.account})
-                </if>
-                <if test="record.accountStatus!=null">
-                    and account_status = #{record.accountStatus}
-                </if>
-                <if test="record.accountType != null" >
-                    and account_type = #{record.accountType}
-                </if>
-                <if test="record.certifyStatus != null">
-                    and certify_status = #{record.certifyStatus}
-                </if>
-            </if>
-        </where>
-        order by create_time desc
-    </select>
-    
-    <select id="selectMemberListInPage" resultType="com.xcong.excoin.modules.member.entity.MemberEntity">
-    
-        select * from member order by create_time desc
-        
-    </select>
-    
-
-</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MemberAuthenticationMapper.xml b/src/main/resources/mapper/modules/MemberAuthenticationMapper.xml
new file mode 100644
index 0000000..42445ab
--- /dev/null
+++ b/src/main/resources/mapper/modules/MemberAuthenticationMapper.xml
@@ -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.mapper.MemberAuthenticationMapper">
+
+    <select id="findMemberAuthenticationByMemberId" resultType="com.xcong.excoin.modules.member.vo.MemberAuthenticationVo">
+        select * from member a LEFT JOIN member_authentication m on m.member_id = a.id where a.id = #{id}
+    </select>
+    
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MemberCoinAddressMapper.xml b/src/main/resources/mapper/modules/MemberCoinAddressMapper.xml
new file mode 100644
index 0000000..45e595e
--- /dev/null
+++ b/src/main/resources/mapper/modules/MemberCoinAddressMapper.xml
@@ -0,0 +1,20 @@
+<?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.mapper.MemberCoinAddressMapper">
+
+    <select id="findMemberApplyCoinListInPage" resultType="com.xcong.excoin.modules.member.vo.MemberCoinChargeVo">
+        select * from member_coin_charge s left join member m on m.id = s.member_id
+        <where>
+            <if test="record != null" >
+                <if test="record.account!=null and record.account!=''">
+                    and (m.phone = #{record.account} or m.email = #{record.account} or s.member_id=#{record.account})
+                </if>
+                <if test="record.address!=null and record.address!=''">
+                    and s.address=#{record.address}
+                </if>
+            </if>
+        </where>
+        order by s.create_time desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MemberCoinChargeMapper.xml b/src/main/resources/mapper/modules/MemberCoinChargeMapper.xml
new file mode 100644
index 0000000..c57cc3f
--- /dev/null
+++ b/src/main/resources/mapper/modules/MemberCoinChargeMapper.xml
@@ -0,0 +1,20 @@
+<?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.mapper.MemberCoinChargeMapper">
+
+    <select id="findMemberApplyCoinListInPage" resultType="com.xcong.excoin.modules.member.vo.MemberCoinChargeVo">
+        select * from member_coin_charge s left join member m on m.id = s.member_id
+        <where>
+            <if test="record != null" >
+                <if test="record.account!=null and record.account!=''">
+                    and (m.phone = #{record.account} or m.email = #{record.account} or s.member_id=#{record.account})
+                </if>
+                <if test="record.address!=null and record.address!=''">
+                    and s.address=#{record.address}
+                </if>
+            </if>
+        </where>
+        order by s.create_time desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml b/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml
new file mode 100644
index 0000000..2616c75
--- /dev/null
+++ b/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml
@@ -0,0 +1,25 @@
+<?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.mapper.MemberCoinWithdrawMapper">
+
+    <select id="findmemberWithdrawCoinListInPage" resultType="com.xcong.excoin.modules.member.vo.MemberCoinWithdrawVo">
+        SELECT
+			*
+		FROM
+			member_coin_withdraw s left join member m on m.id = s.member_id
+		 <where>
+			<if test="record != null" >
+                <if test="record.account!=null and record.account!=''">
+                    and (m.phone = #{record.account} or m.email = #{record.account} or s.member_id=#{record.account})
+                </if>
+                <if test="record.isInside!=null and record.isInside!=''">
+                    and s.is_inside= #{record.isInside}
+                </if>
+                <if test="record.status!=null and record.status!='' and record.status!='0'">
+                    and s.status= #{record.status}
+                </if>
+            </if>
+		</where>	
+	</select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml b/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml
index 95fbff9..1e6caa7 100644
--- a/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml
+++ b/src/main/resources/mapper/modules/MemberQuickBuySaleMapper.xml
@@ -18,5 +18,40 @@
         </where>
         order by s.create_time desc
     </select>
+    
+    <select id="findmemberQuickSaleListInPage" resultType="com.xcong.excoin.modules.member.vo.MemberQuickSaleVo">
+        SELECT
+			s.id,
+			s.create_time createTime,
+			a.phone,
+			a.email,
+			s.member_id memberId,
+			s.unit_price unitPrice,
+			s.amount_cny amountCny,
+			s.amount_usdt amountUsdt,
+			s.order_status orderStatus,
+			m.name,
+			m.account,
+			m.payment_qrcode paymentQrcode,
+			m.bank,
+			m.payment_type paymentType,
+			s.order_no orderNo
+		FROM
+			member_quick_buy_sale s
+		LEFT JOIN member_payment_method m ON m.id = s.member_id
+		LEFT JOIN member a ON a.id = s.member_id
+        <where>
+        s.order_type = 'S' 
+            <if test="record != null" >
+                <if test="record.account!=null and record.account!=''">
+                    and (a.phone = #{record.account} or a.email = #{record.account} or s.member_id=#{record.account}) 
+                </if>
+                <if test="record.orderStatus!=null and record.orderStatus!= 0" >
+                    and s.order_status = #{record.orderStatus}
+                </if>
+            </if>
+        </where>
+        order by s.create_time desc
+    </select>
 
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/member/applyCoin.html b/src/main/resources/templates/febs/views/modules/member/applyCoin.html
new file mode 100644
index 0000000..a66aa37
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/member/applyCoin.html
@@ -0,0 +1,129 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="充币审核管理">
+    <div class="layui-row febs-container">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-body febs-table-full">
+                    <form class="layui-form layui-table-form" lay-filter="user-table-form">
+                        <div class="layui-row">
+                            <div class="layui-col-md10">
+                                <div class="layui-form-item">
+                                    <div class="layui-inline">
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="充币地址" name="address" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+                                    <i class="layui-icon">&#xe848;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+                                    <i class="layui-icon">&#xe79b;</i>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                    <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 表格字段状态格式化 start -->
+<script type="text/html" id="status">
+    {{#
+    var status = {
+    1: {title: '已到账' , color: 'green'},
+    0: {title: '已到账' },
+    2: {title: '已到账' },
+    3: {title: '已到账' },
+    4: {title: '已到账' }
+    }[d.status];
+    }}
+    <span class="layui-badge febs-tag-{{status.color}}">{{ status.title }}</span>
+</script>
+
+<!-- 表格字段状态格式化 start -->
+
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+    // 引入组件并初始化
+    layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () {
+        var $ = layui.jquery,
+            laydate = layui.laydate,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            treeSelect = layui.treeSelect,
+            dropdown = layui.dropdown,
+            $view = $('#febs-user'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: 'createTime', type: null},
+            tableIns;
+
+        form.render();
+
+        // 表格初始化
+        initTable();
+
+        // 下拉框选择器
+        treeSelect.render({
+            elem: $view.find('#dept'),
+            type: 'get',
+            data: ctx + 'dept/select/tree',
+            placeholder: '请选择',
+            search: false
+        });
+
+        // 查询按钮
+        $query.on('click', function () {
+            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+            tableIns.reload({where: params, page: {curr: 1}});
+        });
+
+        // 刷新按钮
+        $reset.on('click', function () {
+            $searchForm[0].reset();
+            treeSelect.revokeNode('dept');
+            sortObject.type = 'null';
+            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+        });
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'userTable',
+                url: ctx + 'member/memberApplyCoin',
+                cols: [[
+                	{field: 'phone', title: '手机号码', minWidth: 120,align:'left'},
+                    {field: 'email', title: '邮箱', minWidth: 200,align:'left'},
+                    {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'},
+                    {field: 'symbol', title: '币种', minWidth: 60,align:'center'},
+                    {field: 'tag', title: 'USDT类型', minWidth: 60,align:'center'},
+                    {field: 'amount', title: '充币数量', minWidth: 100,align:'center'},
+                    {field: 'lastAmount', title: '本次余额', minWidth: 100,align:'center'},
+                    {field: 'address', title: '平台钱包地址', minWidth: 280,align:'center'},
+                    {field: 'createTime', title: '创建时间', minWidth: 200,align:'center'},
+                    {title: '状态', templet: '#status', minWidth: 100,align:'center'}
+                ]]
+            });
+        }
+
+        // 获取查询参数
+        function getQueryParams() {
+            return {
+            	account: $searchForm.find('input[name="account"]').val().trim(),
+            	address: $searchForm.find('input[name="address"]').val().trim(),
+            };
+        }
+        
+    })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html b/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html
index eaefca1..c73732b 100644
--- a/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html
+++ b/src/main/resources/templates/febs/views/modules/member/chargeUsdt.html
@@ -1,4 +1,4 @@
-<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="会员充值USDT记录">
+<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="会员充值USDT">
     <div class="layui-row febs-container">
         <div class="layui-col-md12">
             <div class="layui-card">
@@ -164,19 +164,19 @@
                 id: 'userTable',
                 url: ctx + 'member/memberChargeUsdt',
                 cols: [[
-                    {field: 'phone', title: '手机号码'},
-                    {field: 'email', title: '邮箱'},
-                    {field: 'memberId', title: '邀请码UID'},
-                    {field: 'amountCny', title: '人民币金额'},
-                    {field: 'amountUsdt', title: 'USDT金额'},
-                    {field: 'unitPrice', title: '单价'},
-                    {field: 'createTime', title: '充值时间', minWidth: 180},
-                    {title: '付款状态', templet: '#order-Status'},
-                    {field: 'orderNo', title: '订单编号'},
-                    {field: 'paymentName', title: '收款人'},
-                    {field: 'paymentAccount', title: '收款账号'},
-                    {title: '收款方式', templet: '#payment-Type'},
-                    {title: '操作', toolbar: '#user-option', minWidth: 140, fixed : 'right'}
+                    {field: 'phone', title: '手机号码', minWidth: 120,align:'left'},
+                    {field: 'email', title: '邮箱', minWidth: 200,align:'left'},
+                    {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'},
+                    {field: 'amountCny', title: '人民币金额', minWidth: 120,align:'center'},
+                    {field: 'amountUsdt', title: 'USDT金额', minWidth: 120,align:'center'},
+                    {field: 'unitPrice', title: '单价', minWidth: 80,align:'center'},
+                    {field: 'createTime', title: '充值时间', minWidth: 180,align:'center'},
+                    {title: '付款状态', templet: '#order-Status', minWidth: 100,align:'center'},
+                    {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'},
+                    {field: 'paymentName', title: '收款人', minWidth: 150,align:'center'},
+                    {field: 'paymentAccount', title: '收款账号', minWidth: 150,align:'center'},
+                    {title: '收款方式', templet: '#payment-Type', minWidth: 100,align:'center'},
+                    {title: '操作', toolbar: '#user-option', minWidth: 150, fixed : 'right'}
                 ]]
             });
         }
diff --git a/src/main/resources/templates/febs/views/modules/member/extractUsdt.html b/src/main/resources/templates/febs/views/modules/member/extractUsdt.html
new file mode 100644
index 0000000..ae18824
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/member/extractUsdt.html
@@ -0,0 +1,197 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="会员USDT提现">
+    <div class="layui-row febs-container">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-body febs-table-full">
+                    <form class="layui-form layui-table-form" lay-filter="user-table-form">
+                        <div class="layui-row">
+                            <div class="layui-col-md10">
+                                <div class="layui-form-item">
+                                    <div class="layui-inline">
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">订单状态</label>
+                                        <div class="layui-input-inline">
+                                            <select name="orderStatus">
+                                                <option value="0"></option>
+                                                <option value="1">待审核</option>
+                                                <option value="2">已付款</option>
+                                                <option value="3">已审核</option>
+                                                <option value="4">撤单</option>
+                                                <option value="5">系统取消</option>
+                                            </select>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+                                    <i class="layui-icon">&#xe848;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+                                    <i class="layui-icon">&#xe79b;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more"
+                                     shiro:hasAnyPermissions="user:add,user:update,user:password:reset,user:export">
+                                    <i class="layui-icon">&#xe875;</i>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                    <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 表格字段状态格式化 start -->
+<script type="text/html" id="order-Status">
+    {{#
+    var orderStatus = {
+    1: {title: '待审核' , color: 'gray'},
+    2: {title: '已付款' , color: 'red'},
+    3: {title: '已审核' , color: 'green'},
+    4: {title: '撤单' , color: 'gray'},
+    5: {title: '系统取消' , color: 'blue'}
+    }[d.orderStatus];
+    }}
+    <span class="layui-badge febs-tag-{{orderStatus.color}}">{{ orderStatus.title }}</span>
+</script>
+<script type="text/html" id="payment-Type">
+    {{#
+    var paymentType = {
+	null: {title: '无' },
+    1: {title: '支付宝' },
+    2: {title: '微信'},
+    3: {title: '银行卡' }
+    }[d.paymentType];
+    }}
+    <span >{{ paymentType.title }}</span>
+</script>
+
+<!-- 表格字段状态格式化 start -->
+
+<!-- 表格操作栏 start -->
+<script type="text/html" id="user-option">
+    <span shiro:lacksPermission="user:view,user:update,user:delete">
+        <span class="layui-badge-dot febs-bg-orange"></span> 无权限
+    </span>
+	<a lay-event="confirm" shiro:hasPermission="user:delete">付款</a>
+	<i class="layui-icon febs-edit-area febs-blue">&#xe7a4;</i>
+	<a lay-event="cancel" shiro:hasPermission="user:delete">拒绝</a>
+</script>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+    // 引入组件并初始化
+    layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () {
+        var $ = layui.jquery,
+            laydate = layui.laydate,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            treeSelect = layui.treeSelect,
+            dropdown = layui.dropdown,
+            $view = $('#febs-user'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: 'createTime', type: null},
+            tableIns;
+
+        form.render();
+
+        // 表格初始化
+        initTable();
+
+        // 下拉框选择器
+        treeSelect.render({
+            elem: $view.find('#dept'),
+            type: 'get',
+            data: ctx + 'dept/select/tree',
+            placeholder: '请选择',
+            search: false
+        });
+
+        // 初始化表格操作栏各个按钮功能
+        table.on('tool(userTable)', function (obj) {
+            var data = obj.data,
+                layEvent = obj.event;
+            if (layEvent === 'confirm') {
+                febs.modal.confirm('询问', '您是否确认已付款到该会员?', function () {
+                	confirmUsers(data.id);
+                });
+            }
+            if (layEvent === 'cancel') {
+                febs.modal.confirm('询问', '您是否确认拒绝?', function () {
+                	cancelUsers(data.id);
+                });
+            }
+        });
+        
+        function confirmUsers(id) {
+            febs.get(ctx + 'member/memberExtractUsdtConfirm/' + id, null, function () {
+            	febs.alert.success('划转成功');
+                $query.click();
+            });
+        }
+        
+        function cancelUsers(id) {
+            febs.get(ctx + 'member/memberExtractUsdtCancel/' + id, null, function () {
+            	febs.alert.success('设置为系统取消');
+                $query.click();
+            });
+        }
+
+        // 查询按钮
+        $query.on('click', function () {
+            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+            tableIns.reload({where: params, page: {curr: 1}});
+        });
+
+        // 刷新按钮
+        $reset.on('click', function () {
+            $searchForm[0].reset();
+            treeSelect.revokeNode('dept');
+            sortObject.type = 'null';
+            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+        });
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'userTable',
+                url: ctx + 'member/memberExtractUsdt',
+                cols: [[
+                	{field: 'phone', title: '手机号码', minWidth: 120,align:'left'},
+                    {field: 'email', title: '邮箱', minWidth: 200,align:'left'},
+                    {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'},
+                    {field: 'amountCny', title: '人民币金额', minWidth: 120,align:'center'},
+                    {field: 'amountUsdt', title: 'USDT金额', minWidth: 120,align:'center'},
+                    {field: 'unitPrice', title: '单价', minWidth: 80,align:'center'},
+                    {field: 'createTime', title: '提现时间', minWidth: 180,align:'center'},
+                    {title: '提现状态', templet: '#order-Status', minWidth: 100,align:'center'},
+                    {field: 'orderNo', title: '订单编号', minWidth: 150,align:'center'},
+                    {field: 'paymentQrcode', title: '支付码', minWidth: 120,align:'center'},
+                    {field: 'name', title: '收款人', minWidth: 150,align:'center'},
+                    {field: 'account', title: '收款账号', minWidth: 150,align:'center'},
+                    {title: '收款方式', templet: '#payment-Type', minWidth: 100,align:'center'},
+                    {field: 'paymentAccount', title: '二维码', minWidth: 150,align:'center'},
+                    {field: 'bank', title: '所属银行', minWidth: 150,align:'center'},
+                    {title: '操作', toolbar: '#user-option', minWidth: 150, fixed : 'right'}
+                ]]
+            });
+        }
+
+        // 获取查询参数
+        function getQueryParams() {
+            return {
+            	account: $searchForm.find('input[name="account"]').val().trim(),
+                orderStatus: $searchForm.find("select[name='orderStatus']").val(),
+            };
+        }
+        
+    })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/member/member.html b/src/main/resources/templates/febs/views/modules/member/member.html
index d570368..f197168 100644
--- a/src/main/resources/templates/febs/views/modules/member/member.html
+++ b/src/main/resources/templates/febs/views/modules/member/member.html
@@ -77,9 +77,9 @@
     {{#
     var certifyStatus = {
     0: {title: '未通过', color: 'red'},
-    1: {title: '审核中', color: 'blue'},
+    1: {title: '待审核', color: 'blue'},
     2: {title: '审核通过', color: 'green'},
-    3: {title: '未实名', color: 'cyan'}
+    3: {title: '未实名'}
     }[d.certifyStatus];
     }}
     <span class="layui-badge febs-tag-{{certifyStatus.color}}">{{ certifyStatus.title }}</span>
@@ -109,11 +109,8 @@
     <span shiro:lacksPermission="user:view,user:update,user:delete">
         <span class="layui-badge-dot febs-bg-orange"></span> 无权限
     </span>
-    <a lay-event="detail" shiro:hasPermission="user:view"><i
-            class="layui-icon febs-edit-area febs-green">&#xe7a5;</i></a>
     <a lay-event="edit" shiro:hasPermission="user:update"><i
-            class="layui-icon febs-edit-area febs-blue">&#xe7a4;</i></a>
-    <a lay-event="del" shiro:hasPermission="user:delete"><i class="layui-icon febs-edit-area febs-red">&#xe7f9;</i></a>
+            class="layui-icon febs-edit-area febs-blue">&#xe7a5;</i></a>
 </script>
 <!-- 表格操作栏 end -->
 <script data-th-inline="none" type="text/javascript">
@@ -148,79 +145,6 @@
         });
 
         // 新增下拉组件
-        /**
-       
-        dropdown.render({
-            elem: $view.find('.action-more'),
-            click: function (name, elem, event) {
-                var checkStatus = table.checkStatus('userTable');
-                if (name === 'add') {
-                    febs.modal.open('新增用户', 'system/user/add', {
-                        btn: ['提交', '重置'],
-                        area: $(window).width() <= 750 ? '95%' : '50%',
-                        offset: '30px',
-                        yes: function (index, layero) {
-                            $('#user-add').find('#submit').trigger('click');
-                        },
-                        btn2: function () {
-                            $('#user-add').find('#reset').trigger('click');
-                            return false;
-                        }
-                    });
-                }
-                if (name === 'delete') {
-                    if (!checkStatus.data.length) {
-                        febs.alert.warn('请选择需要删除的用户');
-                    } else {
-                        febs.modal.confirm('删除用户', '确定删除该用户?', function () {
-                            var userIds = [];
-                            layui.each(checkStatus.data, function (key, item) {
-                                userIds.push(item.userId)
-                            });
-                            deleteUsers(userIds.join(','));
-                        });
-                    }
-                }
-                if (name === 'reset') {
-                    if (!checkStatus.data.length) {
-                        febs.alert.warn('请选择需要重置密码的用户');
-                    } else {
-                        var usernames = [];
-                        layui.each(checkStatus.data, function (key, item) {
-                            usernames.push(item.username)
-                        });
-                        febs.post(ctx + 'user/password/reset/' + usernames.join(','), null, function () {
-                            febs.alert.success('所选用户密码已重置为1234qwer');
-                        });
-                    }
-                }
-                if (name === 'export') {
-                    var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
-                    params.pageSize = $view.find(".layui-laypage-limits option:selected").val();
-                    params.pageNum = $view.find(".layui-laypage-em").next().html();
-                    febs.download(ctx + 'user/excel', params, '用户信息表.xlsx');
-                }
-            },
-            options: [{
-                name: 'add',
-                title: '新增用户',
-                perms: 'user:add'
-            }, {
-                name: 'delete',
-                title: '删除用户',
-                perms: 'user:delete'
-            }, {
-                name: 'reset',
-                title: '密码重置',
-                perms: 'user:password:reset'
-            }, {
-                name: 'export',
-                title: '导出Excel',
-                perms: 'user:export'
-            }]
-        });
-         */
-
         // 下拉框选择器
         treeSelect.render({
             elem: $view.find('#dept'),
@@ -234,20 +158,10 @@
         table.on('tool(userTable)', function (obj) {
             var data = obj.data,
                 layEvent = obj.event;
-            if (layEvent === 'detail') {
-                febs.modal.view('用户信息', 'system/user/detail/' + data.username, {
-                    area: $(window).width() <= 750 ? '95%' : '660px'
-                });
-            }
-            if (layEvent === 'del') {
-                febs.modal.confirm('删除用户', '确定删除该用户?', function () {
-                    deleteUsers(data.userId);
-                });
-            }
+            
             if (layEvent === 'edit') {
-                febs.modal.open('修改用户', 'system/user/update/' + data.username, {
-                    area: $(window).width() <= 750 ? '90%' : '50%',
-                    offset: '30px',
+                febs.modal.open('身份认证', 'modules/member/memberDetail/' + data.id, {
+                    area: $(window).width() <= 1000 ? '100%' : '50%',
                     btn: ['提交', '取消'],
                     yes: function (index, layero) {
                         $('#user-update').find('#submit').trigger('click');
@@ -258,6 +172,7 @@
                 });
             }
         });
+        
 
         // 查询按钮
         $query.on('click', function () {
@@ -281,15 +196,14 @@
                 id: 'userTable',
                 url: ctx + 'member/getList',
                 cols: [[
-                    {type: 'checkbox'},
-                    {field: 'phone', title: '手机号', minWidth: 165},
-                    {field: 'email', title: '邮箱', minWidth: 200},
-                    {field: 'inviteId', title: '邀请码UID'},
-                    {field: 'refererId', title: '上级邀请码UID'},
-                    {title: '账号类型', templet: '#account-type'},
-                    {title: '账号状态', templet: '#account-status'},
-                    {title: '审核状态', templet: '#certify-status'},
-                    {field: 'createTime', title: '注册时间', minWidth: 180},
+                    {field: 'phone', title: '手机号', minWidth: 100,align:'left'},
+                    {field: 'email', title: '邮箱', minWidth: 200,align:'left'},
+                    {field: 'inviteId', title: '邀请码UID', minWidth: 80,align:'center'},
+                    {field: 'refererId', title: '上级邀请码UID', minWidth: 80,align:'center'},
+                    {title: '账号类型', templet: '#account-type', minWidth: 80,align:'center'},
+                    {title: '账号状态', templet: '#account-status', minWidth: 50,align:'center'},
+                    {title: '审核状态', templet: '#certify-status', minWidth: 80,align:'center'},
+                    {field: 'createTime', title: '注册时间', minWidth: 180,align:'center'},
                     {title: '操作', toolbar: '#user-option', minWidth: 140, fixed : 'right'}
                 ]]
             });
diff --git a/src/main/resources/templates/febs/views/modules/member/memberDetail.html b/src/main/resources/templates/febs/views/modules/member/memberDetail.html
new file mode 100644
index 0000000..f9ca522
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/member/memberDetail.html
@@ -0,0 +1,130 @@
+<style>
+    #user-update {
+        padding: 20px 25px 25px 0;
+    }
+
+    #user-update .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #user-update #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #user-add .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+
+</style>
+<div class="layui-fluid" id="user-update">
+    <form class="layui-form" action="" lay-filter="user-update-form">
+        <div class="layui-form-item febs-hide">
+            <label class="layui-form-label febs-form-item-require">用户id:</label>
+            <div class="layui-input-block">
+                <input type="text" name="id" data-th-value="${member.id}">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">真实姓名:</label>
+            <div class="layui-input-block">
+                <input type="text" name="realName" minlength="4" maxlength="10" data-th-id="${member.realName}"
+                       lay-verify="range|realName" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">姓:</label>
+            <div class="layui-input-block">
+                <input type="text" name="firstName" minlength="4" maxlength="10" data-th-id="${member.firstName}"
+                       lay-verify="range|firstName" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">名:</label>
+            <div class="layui-input-block">
+                <input type="text" name="secondName" minlength="4" maxlength="10" data-th-id="${member.secondName}"
+                       lay-verify="range|secondName" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">国家:</label>
+            <div class="layui-input-block">
+                <input type="text" name="nation" minlength="4" maxlength="10" data-th-id="${member.nation}"
+                       lay-verify="range|nation" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">身份证号:</label>
+            <div class="layui-input-block">
+                <input type="text" name="idcardNo" minlength="4" maxlength="10" data-th-id="${member.idcardNo}"
+                       lay-verify="range|idcardNo" autocomplete="off" class="layui-input" readonly>
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">身份证正面:</label>
+            <div class="layui-input-block">
+            	<img alt="头像" title="点我更换头像" data-th-src="${member.idcardImageFront}">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">身份证背面:</label>
+            <div class="layui-input-block">
+            	<img alt="头像" title="点我更换头像" data-th-src="${member.idcardImageBack}">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label febs-form-item-require">手持身份证:</label>
+            <div class="layui-input-block">
+            	<img alt="头像" title="点我更换头像" data-th-src="${member.idcardImageInHand}">
+            </div>
+        </div>
+        <div class="layui-form-item febs-hide">
+            <button class="layui-btn" lay-submit="" lay-filter="user-update-form-submit" id="submit"></button>
+        </div>
+    </form>
+</div>
+
+<script data-th-inline="javascript">
+    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () {
+        var $ = layui.$,
+            febs = layui.febs,
+            layer = layui.layer,
+            formSelects = layui.formSelects,
+            treeSelect = layui.treeSelect,
+            form = layui.form,
+            eleTree = layui.eleTree,
+            member = [[${member}]],
+            $view = $('#user-update'),
+            validate = layui.validate,
+            _deptTree;
+
+        form.render();
+
+        initUserValue();
+
+        formSelects.render();
+
+        function initUserValue() {
+            form.val("user-update-form", {
+                "id": member.id,
+                "realName": member.realName,
+                "firstName": member.firstName,
+                "secondName": member.secondName,
+                "nation": member.nation,
+                "idcardNo": member.idcardNo,
+                "idcardImageFront": member.idcardImageFront,
+                "idcardImageBack": member.idcardImageBack,
+                "idcardImageInHand": member.idcardImageInHand
+            });
+        }
+
+        form.on('submit(user-update-form-submit)', function (data) {
+            febs.post(ctx + 'member/memberDetailConfirm', data.field, function () {
+                layer.closeAll();
+                febs.alert.success('认证成功');
+                $('#febs-user').find('#query').click();
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/member/withdrawCoin.html b/src/main/resources/templates/febs/views/modules/member/withdrawCoin.html
new file mode 100644
index 0000000..041579e
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/member/withdrawCoin.html
@@ -0,0 +1,192 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="提币审核管理">
+    <div class="layui-row febs-container">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-body febs-table-full">
+                    <form class="layui-form layui-table-form" lay-filter="user-table-form">
+                        <div class="layui-row">
+                            <div class="layui-col-md10">
+                                <div class="layui-form-item">
+                                    <div class="layui-inline">
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="手机号/邮箱/邀请码" name="account" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">状态</label>
+                                        <div class="layui-input-inline">
+                                            <select name="statusOption">
+                                            	 <option value="0"></option>
+                                                 <option value="1">等待审核</option>
+							                     <option value="2">同意</option>
+							                     <option value="3">拒绝</option>
+                                            </select>
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">内部转账</label>
+                                        <div class="layui-input-inline">
+                                            <select name="isInsideOption">
+                                                <option value=""></option>
+                                                <option value="1">是</option>
+                     							<option value="0">否</option>
+                                            </select>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+                                    <i class="layui-icon">&#xe848;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+                                    <i class="layui-icon">&#xe79b;</i>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                    <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 表格字段状态格式化 start -->
+<script type="text/html" id="isInside-table">
+    {{#
+    var isInside = {
+    Y: {title: '是' , color: 'red'},
+    N: {title: '否' , color: 'green'},
+    }[d.isInside];
+    }}
+    <span class="layui-badge febs-tag-{{isInside.color}}">{{ isInside.title }}</span>
+</script>
+<script type="text/html" id="status-table">
+    {{#
+    var status = {
+    1: {title: '等待审核' , color: 'blue'},
+    2: {title: '同意', color: 'green'},
+    3: {title: '拒绝' , color: 'red'}
+    }[d.status];
+    }}
+    <span class="layui-badge febs-tag-{{status.color}}">{{ status.title }}</span>
+</script>
+
+<!-- 表格字段状态格式化 start -->
+
+<!-- 表格操作栏 start -->
+<script type="text/html" id="user-option">
+    <span shiro:lacksPermission="user:view,user:update,user:delete">
+        <span class="layui-badge-dot febs-bg-orange"></span> 无权限
+    </span>
+	<a lay-event="confirm" shiro:hasPermission="user:delete">确认</a>
+	<i class="layui-icon febs-edit-area febs-blue">&#xe7a4;</i>
+	<a lay-event="cancel" shiro:hasPermission="user:delete">拒绝</a>
+</script>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+    // 引入组件并初始化
+    layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () {
+        var $ = layui.jquery,
+            laydate = layui.laydate,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            treeSelect = layui.treeSelect,
+            dropdown = layui.dropdown,
+            $view = $('#febs-user'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: 'createTime', type: null},
+            tableIns;
+
+        form.render();
+
+        // 表格初始化
+        initTable();
+
+        // 下拉框选择器
+        treeSelect.render({
+            elem: $view.find('#dept'),
+            type: 'get',
+            data: ctx + 'dept/select/tree',
+            placeholder: '请选择',
+            search: false
+        });
+
+        // 初始化表格操作栏各个按钮功能
+        table.on('tool(userTable)', function (obj) {
+            var data = obj.data,
+                layEvent = obj.event;
+            if (layEvent === 'confirm') {
+                febs.modal.confirm('确认', '您是否要进行确认提币操作?', function () {
+                	confirmUsers(data.id);
+                });
+            }
+            if (layEvent === 'cancel') {
+                febs.modal.confirm('系统取消', '您是否要进行取消操作?', function () {
+                	cancelUsers(data.id);
+                });
+            }
+        });
+        
+        function confirmUsers(id) {
+            febs.get(ctx + 'member/memberWithdrawCoinConfirm/' + id, null, function () {
+            	febs.alert.success('提币成功');
+                $query.click();
+            });
+        }
+        function cancelUsers(id) {
+            febs.get(ctx + 'member/memberWithdrawCoinCancel/' + id, null, function () {
+            	febs.alert.success('取消成功');
+                $query.click();
+            });
+        }
+
+        // 查询按钮
+        $query.on('click', function () {
+            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+            tableIns.reload({where: params, page: {curr: 1}});
+        });
+
+        // 刷新按钮
+        $reset.on('click', function () {
+            $searchForm[0].reset();
+            treeSelect.revokeNode('dept');
+            sortObject.type = 'null';
+            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+        });
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'userTable',
+                url: ctx + 'member/memberWithdrawCoin',
+                cols: [[
+                    {field: 'phone', title: '手机号码', minWidth: 120,align:'left'},
+                    {field: 'email', title: '邮箱', minWidth: 200,align:'left'},
+                    {field: 'memberId', title: '邀请码UID', minWidth: 100,align:'center'},
+                    {field: 'symbol', title: '币种', minWidth: 100,align:'center'},
+                    {field: 'amount', title: '提币数量', minWidth: 120,align:'center'},
+                    {field: 'address', title: '提币地址', minWidth: 300,align:'center'},
+                    {field: 'feeAmount', title: '提币手续费', minWidth: 100,align:'center'},
+                    {field: 'createTime', title: '提币时间', minWidth: 180,align:'center'},
+                    {title: '内部转账', templet: '#isInside-table', minWidth: 100,align:'center'},
+                    {title: '状态', templet: '#status-table', minWidth: 100,align:'center'},
+                    {title: '操作', toolbar: '#user-option', minWidth: 150, fixed : 'right'}
+                ]]
+            });
+        }
+
+        // 获取查询参数
+        function getQueryParams() {
+            return {
+            	account: $searchForm.find('input[name="account"]').val().trim(),
+            	status: $searchForm.find("select[name='statusOption']").val(),
+            	isInside: $searchForm.find("select[name='isInsideOption']").val()
+            };
+        }
+        
+    })
+</script>
\ No newline at end of file

--
Gitblit v1.9.1