From e676f7bc3498bf81a236e6f2bdc27bcf716757b5 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 18 Apr 2024 10:32:44 +0800
Subject: [PATCH] 代币提现

---
 src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java                    |   29 +++
 src/main/resources/templates/febs/views/modules/mallMember/memberChargeList.html   |   20 +-
 src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java          |    3 
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java                     |    3 
 src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java  |   39 ++++
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java        |   65 +++++++
 src/main/resources/mapper/modules/MallMemberMapper.xml                             |   21 ++
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java     |    7 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java       |    7 
 src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java                   |    3 
 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java                             |    2 
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java         |   10 +
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java          |    7 
 src/main/resources/templates/febs/views/modules/mallMember/memberWithDrawList.html |  210 ++++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java             |    2 
 src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java             |    2 
 16 files changed, 415 insertions(+), 15 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 2d5d5bf..e463cce 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -6,6 +6,8 @@
 @Getter
 public enum DataDictionaryEnum {
     //充值金额
+    WITHDRAW_AMOUNT("WITHDRAW_AMOUNT","WITHDRAW_AMOUNT"),
+    //充值金额
     CHARGE_AMOUNT("CHARGE_AMOUNT","CHARGE_AMOUNT"),
     //充值地址
     CHARGE_ADDRESS("CHARGE_ADDRESS","CHARGE_ADDRESS"),
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
index d260e6b..c8a4184 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -15,10 +15,7 @@
 import cc.mrbird.febs.common.utils.excl.ResponseHeadUtil;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
-import cc.mrbird.febs.mall.mapper.MallMemberAmountMapper;
-import cc.mrbird.febs.mall.mapper.MallMemberChargeMapper;
-import cc.mrbird.febs.mall.mapper.MallMemberMapper;
-import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper;
+import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IAdminMallMemberService;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
@@ -60,6 +57,7 @@
     private final IApiMallMemberService apiMallMemberService;
     private final MallMemberChargeMapper mallMemberChargeMapper;
     private final IMallMoneyFlowService mallMoneyFlowService;
+    private final MallMemberWithdrawMapper mallMemberWithdrawMapper;
 
 
     @GetMapping("confirmOrder")
@@ -111,6 +109,55 @@
         return new FebsResponse().success();
     }
 
+    @GetMapping("confirmCancelWithdraw")
+    @ControllerEndpoint(operation = "批量提现取消", exceptionMessage = "操作失败")
+    public FebsResponse confirmCancelWithdraw(MemberChargrDto memberChargrDto){
+        String orderIds = memberChargrDto.getOrderIds();
+        List<String> ids = StrUtil.splitTrim(orderIds, ",");
+        for(String id : ids){
+            long orderId = Long.parseLong(id);
+            MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(orderId);
+            if(1 != mallMemberWithdraw.getStatus()){
+                continue;
+            }
+            mallMemberWithdraw.setStatus(3);
+            mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
+
+            MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallMemberWithdraw.getMemberId());
+            mallMemberAmount.setFcmCntAva(mallMemberAmount.getFcmCntAva().add(mallMemberWithdraw.getAmount()));
+            mallMemberAmountMapper.updateFcmCntAvaById(mallMemberAmount);
+        }
+        return new FebsResponse().success();
+    }
+
+
+    @GetMapping("confirmWithdraw")
+    @ControllerEndpoint(operation = "批量同意", exceptionMessage = "操作失败")
+    public FebsResponse confirmWithdraw(MemberChargrDto memberChargrDto){
+        String orderIds = memberChargrDto.getOrderIds();
+        List<String> ids = StrUtil.splitTrim(orderIds, ",");
+        for(String id : ids){
+            long orderId = Long.parseLong(id);
+            MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(orderId);
+            if(1 != mallMemberWithdraw.getStatus()){
+                continue;
+            }
+            mallMemberWithdraw.setStatus(2);
+            mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
+
+            String orderNo = MallUtils.getOrderNum("BF");
+            mallMoneyFlowService.addMoneyFlow(
+                    mallMemberWithdraw.getMemberId(),
+                    mallMemberWithdraw.getAmount(),
+                    MoneyFlowTypeNewEnum.FCM_INSIDE_OUT.getValue(),
+                    orderNo,
+                    mallMemberWithdraw.getId(),
+                    FlowTypeNewEnum.FCM_COIN.getValue(),
+                    MoneyFlowTypeNewEnum.FCM_INSIDE_OUT.getDescrition());
+        }
+        return new FebsResponse().success();
+    }
+
 
     /**
      * 充值列表
@@ -121,6 +168,16 @@
         return new FebsResponse().success().data(data);
     }
 
+
+    /**
+     * 提现列表
+     */
+    @GetMapping("memberWithDrawList")
+    public FebsResponse memberWithDrawList(MoneyChargeListDto moneyChargeListDto, QueryRequest request) {
+        Map<String, Object> data = getDataTable(mallMemberService.memberWithDrawList(moneyChargeListDto, request));
+        return new FebsResponse().success().data(data);
+    }
+
     /**
      * 平台账单
      *
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index 4ea4ca7..d24aea4 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -85,6 +85,13 @@
         return memberService.chargeBalance(apiChargeBalanceDto);
     }
 
+    @ApiOperation(value = "FCM-提现")
+    @PostMapping(value = "/withdrawalBalance")
+    public FebsResponse withdrawalBalance(@RequestBody @Validated WithdrawalBalanceDto withdrawalBalanceDto) {
+        mallMemberWithdrawService.withdrawalBalance(withdrawalBalanceDto);
+        return new FebsResponse().success().message("提交成功");
+    }
+
 
     @ApiOperation(value = "FCM-推出登录", notes = "FCM-推出登录")
     @PostMapping(value = "/logout")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
index 4b784cf..4ef7bea 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -33,6 +33,16 @@
     public static long idFromScoreAchieveRelease;
 
     /**
+     * 体现列表
+     * @return
+     */
+    @GetMapping("memberWithdrawList")
+    @RequiresPermissions("memberWithdrawList:view")
+    public String memberWithdrawList() {
+        return FebsUtil.view("modules/mallMember/memberWithdrawList");
+    }
+
+    /**
      * 充值列表
      * @return
      */
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java
new file mode 100644
index 0000000..e0d6c8c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalBalanceDto.java
@@ -0,0 +1,29 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "WithdrawalBalanceDto", description = "提现接收参数类")
+public class WithdrawalBalanceDto {
+
+
+    @Min(0)
+    @NotNull(message = "参数不能为空")
+    @ApiModelProperty(value = "金额")
+    private BigDecimal amount;
+
+    @NotBlank(message = "参数不能为空")
+    @ApiModelProperty(value = "交易密码")
+    private String tradePwd;
+
+    @NotBlank(message = "地址不能为空")
+    @ApiModelProperty(value = "地址")
+    private String address;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
index d0fba2a..62df223 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
@@ -38,4 +38,7 @@
      */
     @TableField(exist = false)
     private String agreeType;
+
+    @TableField(exist = false)
+    private String accountLogin;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
index dee504f..ca5d84c 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -4,6 +4,7 @@
 import cc.mrbird.febs.mall.entity.AppVersion;
 import cc.mrbird.febs.mall.entity.MallMember;
 import cc.mrbird.febs.mall.entity.MallMemberCharge;
+import cc.mrbird.febs.mall.entity.MallMemberWithdraw;
 import cc.mrbird.febs.mall.vo.*;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -123,4 +124,6 @@
     MallMemberVo getMallmemberAmountByMemberId(@Param("memberId")long id);
 
     IPage<MallMemberCharge> getMemberChargeListInPage(Page<MallMemberCharge> page,  @Param("record")MoneyChargeListDto moneyChargeListDto);
+
+    IPage<MallMemberWithdraw> getMemberWithDrawListInPage(Page<MallMemberWithdraw> page, @Param("record")MoneyChargeListDto moneyChargeListDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
index dfd5a4f..51475e8 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -131,4 +131,6 @@
     MallMemberVo getMallmemberAmountByMemberId(long id);
 
     IPage<MallMemberCharge> memberChargeList(MoneyChargeListDto moneyChargeListDto, QueryRequest request);
+
+    IPage<MallMemberWithdraw> memberWithDrawList(MoneyChargeListDto moneyChargeListDto, QueryRequest request);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java
index 500c484..67c3a11 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java
@@ -1,5 +1,6 @@
 package cc.mrbird.febs.mall.service;
 
+import cc.mrbird.febs.mall.dto.WithdrawalBalanceDto;
 import cc.mrbird.febs.mall.dto.WithdrawalDto;
 import cc.mrbird.febs.mall.entity.MallMemberWithdraw;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -7,4 +8,6 @@
 public interface IMallMemberWithdrawService extends IService<MallMemberWithdraw> {
 
     void withdrawal(WithdrawalDto withdrawalDto);
+
+    void withdrawalBalance(WithdrawalBalanceDto withdrawalBalanceDto);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index da7fe0c..58239fc 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -966,6 +966,13 @@
         return mallMemberChargeIPage;
     }
 
+    @Override
+    public IPage<MallMemberWithdraw> memberWithDrawList(MoneyChargeListDto moneyChargeListDto, QueryRequest request) {
+        Page<MallMemberWithdraw> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<MallMemberWithdraw> mallMemberWithdrawIPage = mallMemberMapper.getMemberWithDrawListInPage(page, moneyChargeListDto);
+        return mallMemberWithdrawIPage;
+    }
+
     private String refererIds(String parentId) {
         boolean flag = false;
         if (StrUtil.isBlank(parentId)) {
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 099ea81..1cf6ffb 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -348,6 +348,13 @@
                 DataDictionaryEnum.CHARGE_ADDRESS.getCode()
         );
         mallMemberVo.setChargeAddress(chargeAddressDic.getValue());
+
+        DataDictionaryCustom withdrawAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.WITHDRAW_AMOUNT.getType(),
+                DataDictionaryEnum.WITHDRAW_AMOUNT.getCode()
+        );
+        BigDecimal withdrawAmount = new BigDecimal(withdrawAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        mallMemberVo.setWithdrawAmount(withdrawAmount);
         return new FebsResponse().success().data(mallMemberVo);
     }
 
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
index d9eddd8..1f51e8a 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
@@ -8,6 +8,7 @@
 import cc.mrbird.febs.common.utils.AppContants;
 import cc.mrbird.febs.common.utils.LoginUserUtil;
 import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.mall.dto.WithdrawalBalanceDto;
 import cc.mrbird.febs.mall.dto.WithdrawalDto;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
@@ -47,6 +48,7 @@
     private final MallMemberPaymentMapper mallMemberPaymentMapper;
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final MallMemberBankMapper mallMemberBankMapper;
+    private final MallMemberAmountMapper mallMemberAmountMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -176,4 +178,41 @@
 
         mallMemberService.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), orderNo, null, null, null, 1, FlowTypeEnum.BALANCE.getValue());
     }
+
+    @Override
+    public void withdrawalBalance(WithdrawalBalanceDto withdrawalBalanceDto) {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+        MallMember mallMember = mallMemberService.getById(memberId);
+        if (StrUtil.isBlank(mallMember.getTradePassword())) {
+            throw new FebsException("未设置支付密码");
+        }
+        if (!mallMember.getTradePassword().equals(SecureUtil.md5(withdrawalBalanceDto.getTradePwd()))) {
+            throw new FebsException("支付密码错误");
+        }
+
+        DataDictionaryCustom withdrawAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.WITHDRAW_AMOUNT.getType(),
+                DataDictionaryEnum.WITHDRAW_AMOUNT.getCode()
+        );
+        BigDecimal amount = withdrawalBalanceDto.getAmount();
+        BigDecimal withdrawAmount = new BigDecimal(withdrawAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        if(withdrawAmount.compareTo(amount) > 0){
+            throw new FebsException("至少为"+withdrawAmount);
+        }
+
+        MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId);
+        mallMemberAmount.setFcmCntAva(mallMemberAmount.getFcmCntAva().subtract(amount));
+        mallMemberAmountMapper.updateFcmCntAvaById(mallMemberAmount);
+
+        String orderNo = MallUtils.getOrderNum("W");
+        MallMemberWithdraw withdraw = new MallMemberWithdraw();
+        withdraw.setWithdrawNo(orderNo);
+        withdraw.setMemberId(memberId);
+        withdraw.setAmount(amount.negate());
+        withdraw.setStatus(1);
+        withdraw.setAmountFee(BigDecimal.ZERO);
+        withdraw.setRemark(withdrawalBalanceDto.getAddress());
+        this.baseMapper.insert(withdraw);
+
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
index 1803761..8ba8a26 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -120,5 +120,7 @@
     private String insideNFTPercent;
     @ApiModelProperty(value = "充值地址")
     private String chargeAddress;
+    @ApiModelProperty(value = "最小提现金额")
+    private BigDecimal withdrawAmount;
 
 }
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 080f28a..185854c 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -587,7 +587,6 @@
                b.account_login accountLogin
         from mall_member_charge a
         left join mall_member b on a.member_id = b.id
-        left join mall_member_payment c on a.member_id = c.member_id
         <where>
             <if test="record.accountLogin!=null and record.accountLogin!=''">
                 and b.account_login like concat('%',  #{record.accountLogin},'%')
@@ -601,4 +600,24 @@
         </where>
         order by a.CREATED_TIME desc
     </select>
+
+    <select id="getMemberWithDrawListInPage" resultType="cc.mrbird.febs.mall.entity.MallMemberWithdraw">
+        select
+               a.*,
+               b.account_login accountLogin
+        from mall_member_withdraw a
+        left join mall_member b on a.member_id = b.id
+        <where>
+            <if test="record.accountLogin!=null and record.accountLogin!=''">
+                and b.account_login like concat('%',  #{record.accountLogin},'%')
+            </if>
+            <if test="record.address!=null and record.address!=''">
+                and a.remark like concat('%',  #{record.address},'%')
+            </if>
+            <if test="record.status!=null">
+                and a.status = #{record.status}
+            </if>
+        </where>
+        order by a.CREATED_TIME desc
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/memberChargeList.html b/src/main/resources/templates/febs/views/modules/mallMember/memberChargeList.html
index 74fbbb8..5ac9e02 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/memberChargeList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/memberChargeList.html
@@ -3,7 +3,7 @@
         <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="withdraw-table-form">
+                    <form class="layui-form layui-table-form" lay-filter="charge-table-form">
                         <div class="layui-row">
                             <div class="layui-col-md10">
                                 <div class="layui-form-item">
@@ -51,7 +51,7 @@
         height: auto !important;
     }
 </style>
-<script type="text/html" id="withdraw-status">
+<script type="text/html" id="charge-status">
     {{#
     var state = {
     1: {title: '进行中'},
@@ -64,8 +64,8 @@
 
 <script type="text/html" id="tableToolBarOrder">
     <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmOrder">提现确认</button>
-        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmCancel">提现取消</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmOrder">确认</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmCancel">取消</button>
     </div>
 </script>
 
@@ -98,7 +98,7 @@
                 let ids = "";
                 let totalAmount = 0;
                 for(let i = 0;i < data.length;i++){
-                    if(data[i].status != 1){
+                    if(data[i].state != 1){
                         febs.alert.warn('请选择审核中的记录');
                         return;
                     }else{
@@ -111,7 +111,7 @@
                     return;
                 }
 
-                febs.modal.confirm('USDT提现', '总额为:'+totalAmount, function () {
+                febs.modal.confirm('充值', '总额为:'+totalAmount, function () {
                     confirmOrder(ids);
                 });
             }
@@ -120,7 +120,7 @@
                 let ids = "";
                 let totalAmount = 0;
                 for(let i = 0;i < data.length;i++){
-                    if(data[i].status != 1){
+                    if(data[i].state != 1){
                         febs.alert.warn('请选择审核中的记录');
                         return;
                     }else{
@@ -133,7 +133,7 @@
                     return;
                 }
 
-                febs.modal.confirm('提现取消', '总额为:'+totalAmount, function () {
+                febs.modal.confirm('取消', '总额为:'+totalAmount, function () {
                     confirmCancel(ids);
                 });
             }
@@ -184,8 +184,8 @@
                     {type: 'checkbox', fixed: 'left'},
                     {field: 'accountLogin', title: '账户', minWidth: 180},
                     {field: 'address', title: '地址', minWidth: 180},
-                    {field: 'amount', title: '金额(USDT)', minWidth: 130},
-                    {title: '提现状态', templet: '#withdraw-status'},
+                    {field: 'amount', title: '金额', minWidth: 130},
+                    {title: '提现状态', templet: '#charge-status'},
                     {field: 'createdTime', title: '创建时间', minWidth: 180},
                 ]]
             });
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/memberWithDrawList.html b/src/main/resources/templates/febs/views/modules/mallMember/memberWithDrawList.html
new file mode 100644
index 0000000..481fa6a
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/memberWithDrawList.html
@@ -0,0 +1,210 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-member-withdraw" 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="withdraw-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" name="accountLogin" autocomplete="off" placeholder="登录账户" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
+                                        <div class="layui-input-inline">
+                                            <input type="text" name="address" autocomplete="off" placeholder="地址" 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="status">
+                                                <option value=""></option>
+                                                <option value="1">进行中</option>
+                                                <option value="2">成功</option>
+                                                <option value="3">失败</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="memberWithdrawTable" lay-data="{id: 'memberWithdrawTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<style>
+    .layui-table-cell {
+        height: auto !important;
+    }
+</style>
+<script type="text/html" id="withdraw-status">
+    {{#
+    var status = {
+    1: {title: '进行中'},
+    2: {title: '成功'},
+    3: {title: '失败'}
+    }[d.status];
+    }}
+    <span>{{ status.title }}</span>
+</script>
+
+<script type="text/html" id="tableToolBarWithdraw">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmWithdraw">同意提现</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" lay-event="confirmCancelWithdraw">拒绝提现</button>
+    </div>
+</script>
+
+
+<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,
+            dropdown = layui.dropdown,
+            $view = $('#febs-member-withdraw'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: 'createTime', type: null},
+            tableIns;
+
+        form.render();
+
+        initWithDrawTable();
+
+        table.on('toolbar(memberWithdrawTable)', function(obj){
+            var event = obj.event;
+            var id = obj.config.id;
+            var checkStatus = table.checkStatus(id);
+            if(event === 'confirmWithdraw'){
+                var data = checkStatus.data;
+                let ids = "";
+                let totalAmount = 0;
+                for(let i = 0;i < data.length;i++){
+                    if(data[i].status != 1){
+                        febs.alert.warn('请选择审核中的记录');
+                        return;
+                    }else{
+                        ids = ids + data[i].id+",";
+                        totalAmount = totalAmount + data[i].amount;
+                    }
+                }
+                if(ids == null || ids == ""){
+                    febs.alert.warn('请选择审核中的记录');
+                    return;
+                }
+
+                febs.modal.confirm('同意', '总额为:'+totalAmount, function () {
+                    confirmWithdraw(ids);
+                });
+            }
+            if(event === 'confirmCancelWithdraw'){
+                var data = checkStatus.data;
+                let ids = "";
+                let totalAmount = 0;
+                for(let i = 0;i < data.length;i++){
+                    if(data[i].status != 1){
+                        febs.alert.warn('请选择审核中的记录');
+                        return;
+                    }else{
+                        ids = ids + data[i].id+",";
+                        totalAmount = totalAmount + data[i].amount;
+                    }
+                }
+                if(ids == null || ids == ""){
+                    febs.alert.warn('请选择审核中的记录');
+                    return;
+                }
+
+                febs.modal.confirm('拒绝', '总额为:'+totalAmount, function () {
+                    confirmCancelWithdraw(ids);
+                });
+            }
+        });
+        function confirmWithdraw(ids) {
+            febs.get(ctx + 'admin/mallMember/confirmWithdraw?&orderIds='+ids, null, function () {
+                febs.alert.success('操作成功');
+                $query.click();
+
+            });
+        }
+        function confirmCancelWithdraw(ids) {
+            febs.get(ctx + 'admin/mallMember/confirmCancelWithdraw?&orderIds='+ids, null, function () {
+                febs.alert.success('操作成功');
+                $query.click();
+
+            });
+        }
+
+        table.on('sort(memberWithdrawTable)', function (obj) {
+            sortObject = obj;
+            tableIns.reload({
+                initSort: obj,
+                where: $.extend(getQueryParams(), {
+                    field: obj.field,
+                    order: obj.type
+                })
+            });
+        });
+
+        $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();
+            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+        });
+
+        function initWithDrawTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'memberWithdrawTable',
+                url: ctx + 'admin/mallMember/memberWithDrawList',
+                toolbar: '#tableToolBarWithdraw',
+                cols: [[
+                    {type: 'checkbox', fixed: 'left'},
+                    {field: 'accountLogin', title: '账户', minWidth: 180},
+                    {field: 'remark', title: '地址', minWidth: 180},
+                    {field: 'amount', title: '金额', minWidth: 130},
+                    {title: '提现状态', templet: '#withdraw-status'},
+                    {field: 'createdTime', title: '创建时间', minWidth: 180},
+                ]]
+            });
+        }
+
+        function getQueryParams() {
+            return {
+                accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(),
+                address: $searchForm.find('input[name="address"]').val().trim(),
+                status: $searchForm.find("select[name='status']").val(),
+                invalidate_ie_cache: new Date()
+            };
+        }
+
+        function changeStatus(url) {
+            febs.post(ctx + url, null, function () {
+                febs.alert.success('设置成功');
+                $query.click();
+            });
+        }
+    })
+</script>

--
Gitblit v1.9.1