From 076f5a4f0a7c5a4d3a6d3a1a61ff96a0091e3320 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Sat, 06 May 2023 15:04:21 +0800
Subject: [PATCH] 星级补贴逻辑修改

---
 src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java                      |   33 -
 src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html          |    3 
 src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java                         |  134 +++---
 src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java                  |   14 
 src/test/java/cc/mrbird/febs/ProfitTest.java                                            |    7 
 src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java                             |    2 
 src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java                                     |    2 
 src/main/resources/templates/febs/views/modules/mallMember/agentList.html               |   14 
 src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java                                  |    4 
 src/main/java/cc/mrbird/febs/mall/service/IAgentService.java                            |    2 
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java          |   69 ++++
 src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java                 |    8 
 src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java                        |    6 
 src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html           |   15 
 src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html |    3 
 src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java                  |    8 
 src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java                              |    8 
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java              |   64 +++
 src/main/resources/mapper/modules/MallMoneyFlowMapper.xml                               |    8 
 src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java                                  |    2 
 src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html      |   76 ++++
 src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java                  |    5 
 src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java                           |    2 
 src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java                            |    2 
 src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java                             |    3 
 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java                          |    4 
 src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java       |    6 
 src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java                          |    2 
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java             |   99 +++++
 src/main/resources/mapper/modules/MallMemberMapper.xml                                  |   16 
 src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html          |   40 +
 src/main/resources/mapper/modules/MallOrderInfoMapper.xml                               |    4 
 src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java                        |    2 
 src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java                             |    2 
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java            |   25 
 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html          |   50 ++
 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java                                  |    3 
 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java                                |    7 
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java              |   15 
 src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java                    |  193 ++++++++++
 src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java                                 |   11 
 src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml                     |    1 
 src/main/resources/templates/febs/views/modules/order/orderList.html                    |   17 
 src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java                          |    2 
 src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html                |   19 +
 45 files changed, 877 insertions(+), 135 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 f0cafc8..9ecd9a5 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,14 @@
 @Getter
 public enum DataDictionaryEnum {
     /**
+     * 星级补贴百分比
+     */
+    PERK_AGENT_ACHIEVE_PERCENT("PERK_SET","PERK_AGENT_ACHIEVE_PERCENT"),
+    /**
+     * 星级补贴总数
+     */
+    PERK_AGENT_ACHIEVE_TOTAL("PERK_SET","PERK_AGENT_ACHIEVE_TOTAL"),
+    /**
      * 贡献点设置-购买商品获得
      */
     STAR_GET("PERK_SET","STAR_GET"),
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 50cd54d..f0fd5ad 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -4,11 +4,21 @@
 import cc.mrbird.febs.common.controller.BaseController;
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.utils.excl.ExcelSheetPO;
+import cc.mrbird.febs.common.utils.excl.ExcelUtil;
+import cc.mrbird.febs.common.utils.excl.ExcelVersion;
+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.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallMemberWalletMapper;
 import cc.mrbird.febs.mall.service.IAdminMallMemberService;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.vo.AdminAgentLevelOptionTreeVo;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.annotations.Param;
@@ -16,8 +26,15 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -29,6 +46,8 @@
 public class AdminMallMemberController extends BaseController {
 
     private final IAdminMallMemberService mallMemberService;
+    private final MallMemberWalletMapper mallMemberWalletMapper;
+    private final MallMemberMapper mallMemberMapper;
     private final IApiMallMemberService apiMallMemberService;
 
     /**
@@ -79,6 +98,30 @@
     @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败")
     public FebsResponse openAccount(@NotNull(message = "{required}") @PathVariable Long id) {
         return mallMemberService.openAccount(id);
+    }
+
+    /**
+     * 会员列表---禁止
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("outsideWithYes/{id}")
+    @ControllerEndpoint(operation = "会员列表---禁止", exceptionMessage = "禁止失败")
+    public FebsResponse outsideWithYes(@NotNull(message = "{required}") @PathVariable Long id) {
+        return mallMemberService.outsideWithType(id,1);
+    }
+
+    /**
+     * 会员列表---开启
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("outsideWithNo/{id}")
+    @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "开启失败")
+    public FebsResponse outsideWithNo(@NotNull(message = "{required}") @PathVariable Long id) {
+        return mallMemberService.outsideWithType(id,2);
     }
 
     /**
@@ -195,6 +238,15 @@
     @ControllerEndpoint(operation = "会员提现-同意", exceptionMessage = "操作失败")
     public FebsResponse chargeAgree(@NotNull(message = "{required}") @PathVariable Long id) {
         return mallMemberService.chargeAgree(id);
+    }
+
+    /**
+     * 会员提现-同意
+     */
+    @PostMapping("chargeAgreeWithType")
+    @ControllerEndpoint(operation = " 会员提现-同意", exceptionMessage = "操作失败")
+    public FebsResponse chargeAgreeWithType(@Valid MallMemberWithdraw mallMemberWithdraw) {
+        return mallMemberService.chargeAgreeWithType(mallMemberWithdraw);
     }
 
     /**
@@ -482,4 +534,51 @@
         return new FebsResponse().success().data(dataTable);
     }
 
+    @GetMapping("exportMember")
+    @ControllerEndpoint(operation = "会员列表", exceptionMessage = "导出失败")
+    public FebsResponse exportMemberList(MallMember mallMember, HttpServletResponse response) throws IOException {
+
+        List<ExcelSheetPO> res = new ArrayList<>();
+        ExcelSheetPO orderSheet = new ExcelSheetPO();
+        String title = "会员列表";
+        orderSheet.setSheetName(title);
+        orderSheet.setTitle(title);
+        String[] header = {"登录账户", "手机号码", "名称", "余额", "现金积分", "贡献点", "补贴额度", "凭证", "凭证现金"};
+        orderSheet.setHeaders(header);
+
+        QueryRequest request = new QueryRequest();
+        request.setPageNum(1);
+        request.setPageSize(9999);
+        List<MallMember> dataList = mallMemberMapper.selectList(null);
+        List<List<Object>> list = new ArrayList<>();
+        if (dataList.size() > 0) {
+            for (MallMember item : dataList) {
+                List<Object> temp = new ArrayList<>();
+                temp.add(item.getAccountLogin());
+                temp.add(item.getPhone());
+                temp.add(item.getName());
+
+                Long memberId = item.getId();
+                MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+                if(ObjectUtil.isNotNull(mallMemberWallet)){
+                    temp.add(mallMemberWallet.getBalance());
+                    temp.add(mallMemberWallet.getPrizeScore());
+                    temp.add(mallMemberWallet.getStar());
+                    temp.add(mallMemberWallet.getTotalScore());
+                    temp.add(mallMemberWallet.getVoucherCnt());
+                    temp.add(mallMemberWallet.getVoucherAmount());
+                }
+                list.add(temp);
+            }
+        }
+        orderSheet.setDataList(list);
+        res.add(orderSheet);
+        response = ResponseHeadUtil.setExcelHead(response);
+        response.setHeader("Content-Disposition",
+                "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8"));
+        OutputStream os = response.getOutputStream();
+        ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
+        return null;
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
index ba47f51..4c7a4bb 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallOrderController.java
@@ -14,6 +14,7 @@
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.MallExpressInfoMapper;
 import cc.mrbird.febs.mall.mapper.MallMemberMapper;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
 import cc.mrbird.febs.mall.mapper.MallOrderRefundOperationMapper;
 import cc.mrbird.febs.mall.service.IAdminMallGoodsService;
 import cc.mrbird.febs.mall.service.IAdminMallOrderService;
@@ -52,6 +53,7 @@
     private final IAdminMallOrderService adminMallOrderService;
     private final MallExpressInfoMapper mallExpressInfoMapper;
     private final MallMemberMapper mallMemberMapper;
+    private final MallOrderInfoMapper mallOrderInfoMapper;
 
     /**
      * 订单列表
@@ -340,6 +342,68 @@
         return null;
     }
 
+    @GetMapping("exportOrderListAll")
+    @ControllerEndpoint(operation = "订单列表", exceptionMessage = "导出失败")
+    public FebsResponse exportOrderListAll(MallOrderInfo mallOrderInfo, HttpServletResponse response) throws IOException {
+
+        List<ExcelSheetPO> res = new ArrayList<>();
+        ExcelSheetPO orderSheet = new ExcelSheetPO();
+        String title = "订单列表";
+        orderSheet.setSheetName(title);
+        orderSheet.setTitle(title);
+        String[] header = {"订单编号", "登录账户", "购买人", "手机号码", "订单金额", "状态"};
+        orderSheet.setHeaders(header);
+
+        QueryRequest request = new QueryRequest();
+        request.setPageNum(1);
+        request.setPageSize(9999);
+        List<MallOrderInfo> dataList = mallOrderInfoMapper.selectList(null);
+        List<List<Object>> list = new ArrayList<>();
+        if (dataList.size() > 0) {
+            for (MallOrderInfo item : dataList) {
+                List<Object> temp = new ArrayList<>();
+                temp.add(item.getOrderNo());
+                temp.add(mallMemberMapper.selectById(item.getMemberId()).getAccountLogin());
+                temp.add(mallMemberMapper.selectById(item.getMemberId()).getName());
+                temp.add(mallMemberMapper.selectById(item.getMemberId()).getPhone());
+                temp.add(item.getAmount());
+                switch (item.getStatus()) {
+                    case 1:
+                        temp.add("待支付");
+                        break;
+                    case 2:
+                        temp.add("待发货");
+                        break;
+                    case 3:
+                        temp.add("待收货");
+                        break;
+                    case 4:
+                        temp.add("已完成");
+                        break;
+                    case 5:
+                        temp.add("退款中");
+                        break;
+                    case 6:
+                        temp.add("已退款");
+                        break;
+                    case 7:
+                        temp.add("已取消");
+                        break;
+                    default:
+                }
+                list.add(temp);
+            }
+        }
+        orderSheet.setDataList(list);
+        res.add(orderSheet);
+        response = ResponseHeadUtil.setExcelHead(response);
+        response.setHeader("Content-Disposition",
+                "attachment;filename=" + URLEncoder.encode(title + DateUtil.format(new Date(), "yyyyMMDDHHmmss") + ".xlsx".trim(), "UTF-8"));
+        OutputStream os = response.getOutputStream();
+        ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
+        return null;
+    }
+
     @PostMapping(value = "/importDeliver")
     @ControllerEndpoint(operation = "导入发货", exceptionMessage = "导入失败")
     public FebsResponse importDeliver(@RequestBody MultipartFile file) throws IOException {
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
index a24183c..1518632 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -115,6 +115,14 @@
                 DataDictionaryEnum.AGENT_PERK.getType(),
                 DataDictionaryEnum.AGENT_PERK.getCode(),
                 hlmBasicPerkDto.getAgentPerk());
+        commonService.updateDataDic(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode(),
+                hlmBasicPerkDto.getPerkAgentAchieveTotal());
+        commonService.updateDataDic(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode(),
+                hlmBasicPerkDto.getPerkAgentAchievePercent());
         return new FebsResponse().success();
     }
 
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 767c777..dcb5383 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -155,6 +155,21 @@
     }
 
     /**
+     * 提现列表-付款方式
+     * @param id
+     * @param model
+     * @return
+     */
+    @GetMapping("chargeFlowListType/{id}")
+    @RequiresPermissions("chargeFlowListType:update")
+    public String chargeFlowListType(@PathVariable long id, Model model) {
+        AdminMallMemberPaymentVo data = new AdminMallMemberPaymentVo();
+        data.setId(id);
+        model.addAttribute("chargeUpdateInfo", data);
+        return FebsUtil.view("modules/mallMember/chargeFlowListType");
+    }
+
+    /**
      * 代理列表
      * @return
      */
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
index 0efed2f..7e5e601 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -215,6 +215,20 @@
             String agentPerk = ObjectUtil.isEmpty(agentPerkDic.getValue()) ? "0" : agentPerkDic.getValue();
             hlmBasicPerkDto.setAgentPerk(agentPerk);
         }
+        DataDictionaryCustom perkAgentAchieveTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode());
+        if (perkAgentAchieveTotalDic != null) {
+            String perkAgentAchieveTotal = ObjectUtil.isEmpty(perkAgentAchieveTotalDic.getValue()) ? "0" : perkAgentAchieveTotalDic.getValue();
+            hlmBasicPerkDto.setPerkAgentAchieveTotal(perkAgentAchieveTotal);
+        }
+        DataDictionaryCustom perkAgentAchievePercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode());
+        if (perkAgentAchievePercentDic != null) {
+            String perkAgentAchievePercent = ObjectUtil.isEmpty(perkAgentAchievePercentDic.getValue()) ? "0" : perkAgentAchievePercentDic.getValue();
+            hlmBasicPerkDto.setPerkAgentAchievePercent(perkAgentAchievePercent);
+        }
         model.addAttribute("hlmBasicPerk", hlmBasicPerkDto);
         return FebsUtil.view("modules/system/hlmBasicPerk");
     }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java b/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java
index 8bc8028..67f197e 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/AgentDto.java
@@ -9,6 +9,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private String account;
 
     private String level;
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java b/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java
index e6074c3..0578fe2 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/HlmBasicPerkDto.java
@@ -27,5 +27,13 @@
      * 基础补贴-代理商补贴
      */
     private String agentPerk;
+    /**
+     * 星级补贴总数
+     */
+    private String perkAgentAchieveTotal;
+    /**
+     * 星级补贴百分比
+     */
+    private String perkAgentAchievePercent;
 
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java
index 0dbafff..e6f253c 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MallOrderInfoDto.java
@@ -23,6 +23,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private Integer orderType;
 
     private String startTime;
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java
index f8cd89a..4acb2b3 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java
@@ -9,6 +9,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private String phone;
 
     private Integer status;
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java
index 4f9560b..ae38f06 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowListDto.java
@@ -7,6 +7,8 @@
 @ApiModel(value = "MoneyFlowListDto", description = "接收参数类")
 public class MoneyFlowListDto {
 
+    private String accountLogin;
+
     private String name;
 
     private String phone;
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
index c873610..d637872 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
@@ -15,6 +15,10 @@
 public class RegisterDto {
 
     @NotBlank(message = "账号不能为空")
+    @ApiModelProperty(value = "账号", example = "hjsj")
+    private String accountLogin;
+
+    @NotBlank(message = "手机号不能为空")
     @ApiModelProperty(value = "手机号", example = "15773001234")
     private String account;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
index c0d175d..e177ca0 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -18,6 +18,10 @@
 public class MallMember extends BaseEntity {
 
     /**
+     * 登录账号
+     */
+    private String accountLogin;
+    /**
      * 姓名
      */
     private String name;
@@ -160,4 +164,7 @@
 
     //内转标识 1:开启 2:关闭
     private Integer insideWith;
+
+    //提现开关 1:开启 2:关闭
+    private Integer outsideWith;
 }
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 aa9a6cd..d0fba2a 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
@@ -1,6 +1,7 @@
 package cc.mrbird.febs.mall.entity;
 
 import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -32,4 +33,9 @@
     private String withdrawNo;
     
     private String remark;
+    /**
+     * 绿色凭证
+     */
+    @TableField(exist = false)
+    private String agreeType;
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
index 5b05c03..091b5bd 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMoneyFlow.java
@@ -52,5 +52,8 @@
     private String name;
 
     @TableField(exist = false)
+    private String accountLogin;
+
+    @TableField(exist = false)
     private String phone;
 }
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 8318cac..492c3b6 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -103,4 +103,8 @@
     List<MallMember> selectByRole(@Param("type") int type, @Param("state")int state);
 
     List<MallMember> selectByLevel( @Param("level")String type);
+
+    MallMember selectByAccountLogin(@Param("accountLogin")String accountLogin);
+
+    MallMember selectInfoByAccountLoginAndPwd(@Param("accountLogin")String account, @Param("password")String md5Pwd);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
index c000908..fe90cf4 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -7,6 +7,7 @@
 import cc.mrbird.febs.mall.entity.MallMoneyFlow;
 import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper;
+import cc.mrbird.febs.mall.service.IAgentService;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.mall.service.IMemberProfitService;
@@ -36,6 +37,8 @@
 
     @Autowired
     private IMemberProfitService memberProfitService;
+    @Autowired
+    private IAgentService agentService;
 
     /**
      * 代理分红
@@ -106,6 +109,14 @@
         memberProfitService.achieveReleaseJob();
     }
 
+    /**
+     * 代理星级补贴
+     */
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void perkAgentAchieveJob() {
+        agentService.perkAgent();
+    }
+
 
 
 
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 529b72d..559c53f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminMallMemberService.java
@@ -5,6 +5,7 @@
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.vo.*;
+import com.alipay.api.domain.AlipayOfflineTrade;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -116,4 +117,8 @@
     FebsResponse searchInfo(Long id);
 
     FebsResponse accountInfo(Long id);
+
+    FebsResponse outsideWithType(Long id, int i);
+
+    FebsResponse chargeAgreeWithType(MallMemberWithdraw mallMemberWithdraw);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
index 53c62d4..ee9999f 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -37,4 +37,6 @@
      * 按购买业绩(不按权益积分)每天静态释0.6%~1.2%
      */
     void achieveReleasePercent();
+
+    void perkAgent();
 }
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 900d4f2..1e1ee93 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
@@ -806,6 +806,75 @@
         return new FebsResponse().success().message("可以转账");
     }
 
+    @Override
+    public FebsResponse outsideWithType(Long id, int i) {
+        MallMember mallMember = mallMemberMapper.selectById(id);
+        if(ObjectUtil.isEmpty(mallMember)) {
+            return new FebsResponse().fail().message("会员信息不存在");
+        }
+        mallMember.setOutsideWith(i);
+        mallMemberMapper.updateById(mallMember);
+        return new FebsResponse().success();
+    }
+
+    @Override
+    public FebsResponse chargeAgreeWithType(MallMemberWithdraw mallMemberWithdrawInfo) {
+        MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(mallMemberWithdrawInfo.getId());
+
+        if(ObjectUtil.isEmpty(mallMemberWithdraw)){
+            return new FebsResponse().fail().message("系统繁忙,请刷新后重试");
+        }
+        if(1 != mallMemberWithdraw.getStatus()){
+            return new FebsResponse().fail().message("当前状态不是提现中");
+        }
+
+        Long wtihdrawTypeId = mallMemberWithdraw.getWtihdrawTypeId();
+        MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(wtihdrawTypeId);
+        if(ObjectUtil.isEmpty(mallMemberBank)){
+            return new FebsResponse().fail().message("提现银行卡已删除");
+        }
+        String agreeType = mallMemberWithdrawInfo.getAgreeType();
+        if("1".equals(agreeType)){
+            mallMemberWithdraw.setStatus(2);
+            mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
+
+            QueryWrapper<MallMoneyFlow> flowQueryWrapper = new QueryWrapper<>();
+            flowQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo());
+            flowQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue());
+            MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(flowQueryWrapper);
+            if(ObjectUtil.isNotEmpty(mallMoneyFlow)){
+                mallMoneyFlow.setStatus(2);
+                mallMoneyFlowMapper.updateById(mallMoneyFlow);
+            }
+            return new FebsResponse().success();
+        }else{
+            String bankName = mallMemberBank.getBankName();
+            NBYHResponse nbyhResponse = new NBYHResponse();
+            if("宁波银行".equals(bankName)){
+                nbyhResponse = nbyhService.tradeSinge(mallMemberWithdraw.getId());
+            }else{
+                nbyhResponse = nbyhService.tradeSingeOuterTransfer(mallMemberWithdraw.getId());
+            }
+            if(nbyhResponse.isFlag()){
+                mallMemberWithdraw.setStatus(2);
+                mallMemberWithdrawMapper.updateById(mallMemberWithdraw);
+
+                QueryWrapper<MallMoneyFlow> flowQueryWrapper = new QueryWrapper<>();
+                flowQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo());
+                flowQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue());
+                MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(flowQueryWrapper);
+                if(ObjectUtil.isNotEmpty(mallMoneyFlow)){
+                    mallMoneyFlow.setStatus(2);
+                    mallMoneyFlowMapper.updateById(mallMoneyFlow);
+                }
+                return new FebsResponse().success().message(nbyhResponse.getMsg());
+            }else{
+                return new FebsResponse().fail().message(nbyhResponse.getMsg());
+            }
+        }
+
+    }
+
     private String refererIds(String parentId) {
         boolean flag = false;
         if (StrUtil.isBlank(parentId)) {
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index 2e1f3a1..7f0f76c 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -52,6 +52,8 @@
     private final MallMoneyFlowMapper mallMoneyFlowMapper;
     private final MallMqRecordMapper mallMqRecordMapper;
 
+    private final ICommonService commonService;
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void autoUpAgentLevel(Long memberId) {
@@ -241,12 +243,41 @@
          *  从最顶级级别的合伙人开始补贴
          *      补贴完,把已经补贴的合伙人加入下一个级别
          */
-        List<MallMember> sevenLevelRecord = getStarRecord(null,  MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue());
-        List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord,  MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue());
-        List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord,  MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue());
-        List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord,  MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue());
-        List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord,  MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue());
-        List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord,  MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue());
+
+        DataDictionaryCustom perkAgentAchieveTotalDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode());
+        BigDecimal perkAgentAchieveTotal = new BigDecimal(perkAgentAchieveTotalDic.getValue());
+        //星级奖励百分比等于每个级别的累计之和
+        List<DataDictionaryCustom> starPerkDics = dataDictionaryCustomMapper.selectDicByType(
+                "AGENT_LEVEL_REQUIRE");
+        BigDecimal totalProfitProp = BigDecimal.ZERO;
+        if(CollUtil.isNotEmpty(starPerkDics)){
+            for(DataDictionaryCustom starPerkDic : starPerkDics){
+                String starPerkStr = starPerkDic.getValue();
+                AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class);
+                BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100));
+                String code = starPerkDic.getCode();
+                //存在当前级别的会员,则加上这个比例的补贴
+                List<MallMember> mallMembers = memberMapper.selectByLevel(code);
+                if(CollUtil.isNotEmpty(mallMembers)){
+                    totalProfitProp = totalProfitProp.add(profitProp);
+                }
+            }
+        }
+
+        if(totalProfitProp.compareTo(BigDecimal.ZERO) > 0){
+            BigDecimal perkTotal = amount.multiply(totalProfitProp).setScale(2,BigDecimal.ROUND_DOWN);
+            perkAgentAchieveTotal = perkAgentAchieveTotal.add(perkTotal);
+            perkAgentAchieveTotalDic.setValue(perkAgentAchieveTotal.toString());
+            dataDictionaryCustomMapper.updateById(perkAgentAchieveTotalDic);
+        }
+//        List<MallMember> sevenLevelRecord = getStarRecord(null,  MemberLevelEnum.SEVEN_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue());
+//        List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord,  MemberLevelEnum.SIX_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue());
+//        List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord,  MemberLevelEnum.FIFTH_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue());
+//        List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord,  MemberLevelEnum.FOUR_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue());
+//        List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord,  MemberLevelEnum.THIRD_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue());
+//        List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord,  MemberLevelEnum.SECOND_LEVEL.name(), amount, mallOrderInfo.getOrderNo(), memberId,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue());
 
         /**
          * 团队补贴
@@ -345,7 +376,8 @@
      * @return
      */
     public List<MallMember> getStarRecord(List<MallMember> mallMembersOlds,String LevelParam,BigDecimal amount,String orderNo,Long memberId,int starPerkType){
-
+        //实际补贴总金额
+        BigDecimal totalPerkAgentAmount = BigDecimal.ZERO;
         //根据用户的level获取用户
         List<MallMember> mallMemberStars = memberMapper.selectMemberWithLevel(LevelParam);
         if(CollUtil.isNotEmpty(mallMembersOlds)){
@@ -367,13 +399,32 @@
             if(starSum <= 0){
                 return mallMemberStars;
             }
+
+            BigDecimal totalProfitProp = BigDecimal.ZERO;
+            List<DataDictionaryCustom> agentLevelRequireDics = dataDictionaryCustomMapper.selectDicByType("AGENT_LEVEL_REQUIRE");
+            if(CollUtil.isNotEmpty(agentLevelRequireDics)){
+                for(DataDictionaryCustom dic : agentLevelRequireDics){
+                    String starPerkStr = dic.getValue();
+                    AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class);
+                    //当前星级所占份数
+                    BigDecimal profitProp = agentInfo.getProfitProp().abs();
+                    List<MallMember> mallMembers = memberMapper.selectByLevel(dic.getCode());
+                    if(CollUtil.isNotEmpty(mallMembers)){
+                        totalProfitProp = profitProp.add(totalProfitProp);
+                    }
+                }
+            }
             //星级补贴比例
             DataDictionaryCustom starPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                     "AGENT_LEVEL_REQUIRE",
                     LevelParam);
             String starPerkStr = starPerkDic.getValue();
             AgentInfo agentInfo = JSONObject.parseObject(starPerkStr, AgentInfo.class);
-            BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100));
+//            BigDecimal profitProp = agentInfo.getProfitProp().abs().divide(new BigDecimal(100));
+            //当前星级所占份数
+            BigDecimal profitProp = agentInfo.getProfitProp().abs();
+            //每一份多少钱
+            amount = amount.divide(totalProfitProp,4,BigDecimal.ROUND_DOWN);
             //当前等级的星级补贴
             BigDecimal starPerkAmountSum = amount.multiply(profitProp);
             //当前等级的每一个贡献点的补贴金额
@@ -416,6 +467,7 @@
                         mallMoneyFlows.add(mallMoneyFlow);
 
                         reduceStar(mallMemberWallet.getMemberId(),starPerkAmount);
+                        totalPerkAgentAmount = totalPerkAgentAmount.add(starPerkAmount);
                     }
                     count = count + 1;
                     if (count % 1000 == 0 || count == mallMemberWallets.size()) {
@@ -452,6 +504,16 @@
                 }
             }
         }
+
+        log.info("============实际补贴金额:{}",totalPerkAgentAmount.setScale(2,BigDecimal.ROUND_DOWN));
+        DataDictionaryCustom totalPerkAgentAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode()
+        );
+        totalPerkAgentAmountDic.setValue(
+                new BigDecimal(totalPerkAgentAmountDic.getValue()).subtract(totalPerkAgentAmount).setScale(2,BigDecimal.ROUND_DOWN).toString()
+        );
+        dataDictionaryCustomMapper.updateById(totalPerkAgentAmountDic);
         return mallMemberStars;
     }
 
@@ -591,15 +653,41 @@
         );
 
         List<MallMember> mallMembers = memberMapper.selectByLevel(MemberLevelEnum.SECOND_LEVEL.getType());
+        BigDecimal jobAchieveReleasePercent = new BigDecimal(jobAchieveReleasePercentDic.getValue())
+                .multiply(new BigDecimal(0.001));
+        BigDecimal totalAchieve = BigDecimal.ZERO;
+        Integer totalStar = 0;
         if(CollUtil.isNotEmpty(mallMembers)){
             for(MallMember mallMember : mallMembers){
                 //总业绩
-                BigDecimal sumAchieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId());
-                BigDecimal jobAchieveReleasePercent = new BigDecimal(jobAchieveReleasePercentDic.getValue())
-                        .multiply(new BigDecimal(0.001));
-                //每个人的补贴额度
-                BigDecimal multiply = sumAchieve.multiply(jobAchieveReleasePercent);
+                BigDecimal achieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId());
+                totalAchieve = totalAchieve.add(achieve);
+
                 MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId());
+                Integer star = mallMemberWallet.getStar();
+                totalStar = totalStar + star;
+            }
+        }
+        if(BigDecimal.ZERO.compareTo(totalAchieve) >= 0){
+            return;
+        }
+        //总释放=总业绩*一星每日业绩每日释放业绩到余额的千分比
+        totalAchieve = totalAchieve.multiply(jobAchieveReleasePercent);
+
+        if(totalStar <= 0){
+            return;
+        }
+        //一个贡献点的价值
+        BigDecimal divide = totalAchieve.divide(new BigDecimal(totalStar), 2, BigDecimal.ROUND_DOWN);
+
+        if(CollUtil.isNotEmpty(mallMembers)){
+            for(MallMember mallMember : mallMembers){
+
+                MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId());
+                Integer star = mallMemberWallet.getStar();
+                //每个人贡献值数量*一个贡献点的价值=获取的收益
+                BigDecimal multiply = divide.multiply(new BigDecimal(star)).setScale(2,BigDecimal.ROUND_DOWN);
+
                 BigDecimal totalScore = mallMemberWallet.getTotalScore();
                 if(BigDecimal.ZERO.compareTo(multiply) < 0){
                     if(BigDecimal.ZERO.compareTo(totalScore) < 0){
@@ -623,6 +711,85 @@
                 }
             }
         }
+
+
+
+//        if(CollUtil.isNotEmpty(mallMembers)){
+//            for(MallMember mallMember : mallMembers){
+//                //总业绩
+//                BigDecimal sumAchieve = mallAchieveRecordMapper.selectSumAchieveByMemberId(mallMember.getId());
+//                //每个人的补贴额度
+//                BigDecimal multiply = sumAchieve.multiply(jobAchieveReleasePercent);
+//                MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId());
+//                BigDecimal totalScore = mallMemberWallet.getTotalScore();
+//                if(BigDecimal.ZERO.compareTo(multiply) < 0){
+//                    if(BigDecimal.ZERO.compareTo(totalScore) < 0){
+//                        if(totalScore.compareTo(multiply) < 0){
+//                            multiply = totalScore;
+//                        }
+//                        //减少补贴额度
+//                        mallMemberWalletMapper.reduceTotalScoreById(multiply, mallMemberWallet.getId());
+//
+//                        reduceStar(mallMember.getId(),multiply);
+//
+//                        mallMemberWalletMapper.addBalanceById(multiply, mallMemberWallet.getId());
+//
+//                        mallMoneyFlowService.addMoneyFlow(
+//                                mallMember.getId(),
+//                                multiply,
+//                                MoneyFlowTypeEnum.STATIC_BONUS.getValue(),
+//                                MallUtils.getOrderNum(),
+//                                FlowTypeEnum.BALANCE.getValue());
+//                    }
+//                }
+//            }
+//        }
+    }
+
+    @Override
+    public void perkAgent() {
+        DataDictionaryCustom totalAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_TOTAL.getCode()
+        );
+        if(ObjectUtil.isEmpty(totalAmountDic)){
+            return;
+        }
+        //星级补贴总数
+        BigDecimal totalAmount = new BigDecimal(totalAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN);
+        if(BigDecimal.ZERO.compareTo(totalAmount) >= 0){
+            return;
+        }
+
+        DataDictionaryCustom perkAgentPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getType(),
+                DataDictionaryEnum.PERK_AGENT_ACHIEVE_PERCENT.getCode()
+        );
+        if(ObjectUtil.isEmpty(perkAgentPercentDic)){
+            return;
+        }
+        //星级补贴百分比
+        BigDecimal perkAgentPercent = new BigDecimal(perkAgentPercentDic.getValue()).abs().divide(new BigDecimal(100));
+        BigDecimal amount = totalAmount.multiply(perkAgentPercent);
+        if(BigDecimal.ZERO.compareTo(amount) >= 0){
+            return;
+        }
+//        //星级补贴总数
+//        totalAmountDic.setValue(totalAmount.subtract(amount).setScale(2,BigDecimal.ROUND_DOWN).toString());
+//        dataDictionaryCustomMapper.updateById(totalAmountDic);
+
+        String orderNo = MallUtils.getOrderNum("SPA");
+        /**
+         * 星级奖励
+         *  从最顶级级别的合伙人开始补贴
+         *      补贴完,把已经补贴的合伙人加入下一个级别
+         */
+        List<MallMember> sevenLevelRecord = getStarRecord(null,  MemberLevelEnum.SEVEN_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_SEVEN.getValue());
+        List<MallMember> sixLevelRecord = getStarRecord(sevenLevelRecord,  MemberLevelEnum.SIX_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_SIX.getValue());
+        List<MallMember> fifthLevelRecord = getStarRecord(sixLevelRecord,  MemberLevelEnum.FIFTH_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_FIVE.getValue());
+        List<MallMember> fourLevelRecord = getStarRecord(fifthLevelRecord,  MemberLevelEnum.FOUR_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_FOUR.getValue());
+        List<MallMember> thirdLevelRecord = getStarRecord(fourLevelRecord,  MemberLevelEnum.THIRD_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_THREE.getValue());
+        List<MallMember> secondLevelRecord = getStarRecord(thirdLevelRecord,  MemberLevelEnum.SECOND_LEVEL.name(), amount, orderNo, 0L,MoneyFlowTypeEnum.STAR_PERK_TWO.getValue());
     }
 
 
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 384cb75..f2855ed 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
@@ -67,18 +67,23 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public FebsResponse register(RegisterDto registerDto) {
-        MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount());
+//        MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount());
+//        if (mallMember != null) {
+//            throw new FebsException("该账号已被占用");
+//        }
+        String accountLogin = registerDto.getAccountLogin();
+        MallMember mallMember = this.baseMapper.selectByAccountLogin(accountLogin);
         if (mallMember != null) {
             throw new FebsException("该账号已被占用");
         }
 
-        List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName());
-        if (CollUtil.isNotEmpty(mallMembers)) {
-            MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount());
-            if (registerAppeal == null || registerAppeal.getStatus() != 1) {
-                return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在");
-            }
-        }
+//        List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName());
+//        if (CollUtil.isNotEmpty(mallMembers)) {
+//            MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount());
+//            if (registerAppeal == null || registerAppeal.getStatus() != 1) {
+//                return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在");
+//            }
+//        }
 
         String account = registerDto.getAccount();
         if (!"admin".equals(registerDto.getRegistType())) {
@@ -90,6 +95,7 @@
         }
 
         mallMember = new MallMember();
+        mallMember.setAccountLogin(accountLogin);
         mallMember.setPassword(SecureUtil.md5(registerDto.getPassword()));
 
         // 判断账号类型
@@ -160,7 +166,8 @@
     public FebsResponse toLogin(LoginDto loginDto) {
         String md5Pwd = SecureUtil.md5(loginDto.getPassword());
 
-        MallMember mallMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd);
+//        MallMember mallMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd);
+        MallMember mallMember = this.baseMapper.selectInfoByAccountLoginAndPwd(loginDto.getAccount(), md5Pwd);
         if (mallMember == null) {
             throw new FebsException("用户不存在或账号密码错误");
         }
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 d24988d..d9eddd8 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
@@ -53,6 +53,12 @@
     public void withdrawal(WithdrawalDto withdrawalDto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
         MallMember mallMember = mallMemberService.getById(memberId);
+
+        Integer outsideWith = mallMember.getOutsideWith() == null ? 2 :mallMember.getOutsideWith();
+        if (1 != outsideWith) {
+            throw new FebsException("功能升级中");
+        }
+
         if (StrUtil.isBlank(mallMember.getTradePassword())) {
             throw new FebsException("未设置支付密码");
         }
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java
index eb25e51..77aa70f 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentMemberVo.java
@@ -13,6 +13,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private String phone;
 
     private String level;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java
index c9ace57..67b20a4 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminAgentVo.java
@@ -13,6 +13,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private String phone;
 
     private String bindPhone;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java
index 8807def..4b7b1a0 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallOrderInfoVo.java
@@ -47,6 +47,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private String phone;
 
     private String address;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java
index 49df3af..80053ce 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java
@@ -26,6 +26,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private String phone;
 
     private String bindPhone;
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java
index 1f931a5..65b4161 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyFlowListVo.java
@@ -28,6 +28,8 @@
 
     private String name;
 
+    private String accountLogin;
+
     private String phone;
 
     private Integer status;
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 a5aa7c2..20d222a 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -15,6 +15,9 @@
     @ApiModelProperty(value = "id")
     private Long id;
 
+    @ApiModelProperty(value = "登录账号")
+    private String accountLogin;
+
     @ApiModelProperty(value = "昵称")
     private String name;
 
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java
index d3509a0..00d9202 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/NBYHServiceImpl.java
@@ -15,6 +15,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.io.*;
 import java.math.BigDecimal;
 import java.net.*;
@@ -107,15 +108,12 @@
      * 接收报文url
      */
 //    private static final String URL = "http://127.0.0.1:9080/directlink/httpAccess";
-//    private static final String URL = "http://220.168.79.89:9080/directlink/httpAccess";
-    private static final String URL = "http://747f9407.r3.cpolar.top/directlink/httpAccess";
-//    private static final String URL = "http://1d6d-220-168-79-89.ngrok.io/directlink/httpAccess";
+    private static final String URL = "http://n5z7ej.natappfree.cc/directlink/httpAccess";
     /**
      * 签名ip
      */
 //    private static final String VERIFY_IP = "127.0.0.1";
-    private static final String VERIFY_IP = "3b425db8.r10.cpolar.top";
-//    private static final String VERIFY_IP = "747f9407.r3.cpolar.top";
+    private static final String VERIFY_IP = "server.natappfree.cc";
     /**
      * 付款账号
      */
@@ -123,7 +121,8 @@
     /**
      * 签名端口
      */
-    private static final int VERIFY_PORT = 8010;
+    private static final int VERIFY_PORT = 41933;
+//    private static final int VERIFY_PORT = 8010;
 
     /**
      * cookies
@@ -154,22 +153,12 @@
         try {
 
             InetAddress addr = InetAddress.getByName(VERIFY_IP);
-            String hostName = addr.getHostName();
-//            Socket socket = new Socket(hostName, VERIFY_PORT);
-            String hostAddress = addr.getHostAddress();
-            SocketAddress address = new InetSocketAddress(VERIFY_IP, 8010);
+            Socket socket = new Socket(addr, VERIFY_PORT);
 
-            Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
-            Socket socket = new Socket(proxy);
-            int port = socket.getPort();
             System.out.println("发送登录请求:"+addr);
-			System.out.println("发送登录请求:"+address);
-			System.out.println("发送登录请求:"+hostName);
-			System.out.println("发送登录请求:"+port);
+            System.out.println("发送登录请求:"+socket.getKeepAlive());
 //			System.out.println("发送登录请求:");
 //			test.executeServerHttpService("srv001_signOn");
-//            System.out.println("\n发送转账结果查询请求:");
-//            executeServerHttpService("srv008_transferResultInfoQuery","转账结果查询","2023032910585227466");
 //			System.out.println("\n发送跨行转账请求:");
 //			test.executeServerHttpService("srv007_singleOuterTransfer","跨行转账",null);
 //			System.out.println("\n发送行内转账请求:");
@@ -180,11 +169,11 @@
     }
 
 
-    @Autowired
+    @Resource
     private MallMemberWithdrawMapper mallMemberWithdrawMapper;
-    @Autowired
+    @Resource
     private MallMemberWithdrawMsgMapper mallMemberWithdrawMsgMapper;
-    @Autowired
+    @Resource
     private MallMemberBankMapper mallMemberBankMapper;
 
     @Override
@@ -683,6 +672,8 @@
         try {
             addr = InetAddress.getByName(VERIFY_IP);
             socket = new Socket(addr, VERIFY_PORT);
+//            InetAddress localHost = addr.getLocalHost();
+//            socket = new Socket(localHost, VERIFY_PORT);
             // 发送
             BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(
                     socket.getOutputStream(),"GBK"));
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index 927279a..30df9c7 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -29,71 +29,71 @@
     @Autowired
     private IMemberProfitService memberProfitService;
 
-//    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
-//    public void agentReturn(Message message, Channel channel) {
-//        log.info("消费者:{}", new String(message.getBody()));
-//    }
-//
-//    @RabbitListener(queues = "hlm_queue_order_delay")
-//    public void orderCancelDelay(String id) {
-//        try {
-//            orderInfoService.autoCancelOrder(Long.parseLong(id));
-//        } catch (Exception e) {
-//            log.error("订单超时支付异常", e);
-//        }
-//    }
-//
-//    @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP)
-//    public void agentAutoLevelUp(String id) {
-//        log.info("收到合伙人自动升级消息:{}", id);
-//        try {
-//            agentService.autoUpAgentLevel(Long.parseLong(id));
-//        } catch (Exception e) {
-//            log.error("合伙人自动升级异常", e);
-//        }
-//    }
-//
-//    @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY)
-//    public void agentReturnMoney(String orderId) {
-//        log.info("收到返利消息:{}", orderId);
-//        try {
-//            agentService.returnMoneyToAgent(Long.parseLong(orderId));
-//        } catch (Exception e) {
-//            log.error("返利异常", e);
-//        }
-//    }
-//
-//    @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY)
-//    public void orderReturnMoney(String orderId) {
-//        log.info("收到订单返利消息:{}", orderId);
-//        try {
-//            memberProfitService.dynamicProfit(Long.parseLong(orderId));
-//        } catch (Exception e) {
-//            log.error("订单返利异常:", e);
-//        }
-//    }
-//
-//    @RabbitListener(queues = QueueConstants.PERK_MONEY)
-//    public void perkMoneyConsumer(String id) {
-//        log.info("收到补贴消息:{}", id);
-//        try {
-//            agentService.perkMoneyConsumer(Long.parseLong(id));
-//        } catch (Exception e) {
-//            log.error("用户补贴异常", e);
-//            // todo 更新表
-//
-//        }
-//    }
-//
-//    @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE)
-//    public void forceVoucherSaleConsumer(String price) {
-//        log.info("收到强制卖出消息,价格:{}",price);
-//        try {
-//            memberProfitService.selaHalfVoucher(price);
-//        } catch (Exception e) {
-//            log.error("强制卖出异常", e);
-//            // todo 更新表
-//
-//        }
-//    }
+    @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
+    public void agentReturn(Message message, Channel channel) {
+        log.info("消费者:{}", new String(message.getBody()));
+    }
+
+    @RabbitListener(queues = "hlm_queue_order_delay")
+    public void orderCancelDelay(String id) {
+        try {
+            orderInfoService.autoCancelOrder(Long.parseLong(id));
+        } catch (Exception e) {
+            log.error("订单超时支付异常", e);
+        }
+    }
+
+    @RabbitListener(queues = QueueConstants.AGENT_AUTO_LEVEL_UP)
+    public void agentAutoLevelUp(String id) {
+        log.info("收到合伙人自动升级消息:{}", id);
+        try {
+            agentService.autoUpAgentLevel(Long.parseLong(id));
+        } catch (Exception e) {
+            log.error("合伙人自动升级异常", e);
+        }
+    }
+
+    @RabbitListener(queues = QueueConstants.AGENT_RETURN_MONEY)
+    public void agentReturnMoney(String orderId) {
+        log.info("收到返利消息:{}", orderId);
+        try {
+            agentService.returnMoneyToAgent(Long.parseLong(orderId));
+        } catch (Exception e) {
+            log.error("返利异常", e);
+        }
+    }
+
+    @RabbitListener(queues = QueueConstants.ORDER_RETURN_MONEY)
+    public void orderReturnMoney(String orderId) {
+        log.info("收到订单返利消息:{}", orderId);
+        try {
+            memberProfitService.dynamicProfit(Long.parseLong(orderId));
+        } catch (Exception e) {
+            log.error("订单返利异常:", e);
+        }
+    }
+
+    @RabbitListener(queues = QueueConstants.PERK_MONEY)
+    public void perkMoneyConsumer(String id) {
+        log.info("收到补贴消息:{}", id);
+        try {
+            agentService.perkMoneyConsumer(Long.parseLong(id));
+        } catch (Exception e) {
+            log.error("用户补贴异常", e);
+            // todo 更新表
+
+        }
+    }
+
+    @RabbitListener(queues = QueueConstants.FORCE_VOUCHER_SALE)
+    public void forceVoucherSaleConsumer(String price) {
+        log.info("收到强制卖出消息,价格:{}",price);
+        try {
+            memberProfitService.selaHalfVoucher(price);
+        } catch (Exception e) {
+            log.error("强制卖出异常", e);
+            // todo 更新表
+
+        }
+    }
 }
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 9a6e4ed..30011e0 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -24,6 +24,9 @@
                 <if test="record.name!=null and record.name!=''">
                     and m.name like concat('%',  #{record.name},'%')
                 </if>
+                <if test="record.accountLogin!=null and record.accountLogin!=''">
+                    and m.account_login like concat('%',  #{record.accountLogin},'%')
+                </if>
                 <if test="record.account!=null and record.account!=''">
                     and (
                         m.phone like concat('%',  #{record.account},'%')
@@ -163,6 +166,9 @@
         left join data_dictionary_custom a on a.code = m.level
         <where>
             <if test="record != null" >
+                <if test="record.accountLogin!=null and record.accountLogin!=''">
+                    and m.account_login like concat('%',  #{record.accountLogin},'%')
+                </if>
                 <if test="record.name!=null and record.name!=''">
                     and m.name like concat('%',  #{record.name},'%')
                 </if>
@@ -450,4 +456,14 @@
         select * from mall_member
         where level = #{level}
     </select>
+
+    <select id="selectByAccountLogin" resultType="cc.mrbird.febs.mall.entity.MallMember">
+        select * from mall_member
+        where account_login = #{accountLogin}
+    </select>
+
+    <select id="selectInfoByAccountLoginAndPwd" resultType="cc.mrbird.febs.mall.entity.MallMember">
+        select * from mall_member
+        where account_login = #{accountLogin} and password = #{password}
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index 6f89a70..8fe8066 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -47,6 +47,7 @@
         a.*,
         b.name,
         b.bind_phone bindPhone,
+        b.account_login accountLogin,
         c.pay_method payMethod,
         b.phone,
         d.name fromMemberName
@@ -56,6 +57,9 @@
         left join mall_member d on d.id = a.rt_member_id
         <where>
             <if test="record != null" >
+                <if test="record.accountLogin!=null and record.accountLogin!=''">
+                    and b.account_login like concat('%',  #{record.accountLogin},'%')
+                </if>
                 <if test="record.name!=null and record.name!=''">
                     and b.name like concat('%',  #{record.name},'%')
                 </if>
@@ -83,12 +87,16 @@
         a.remark remark,
         a.status status,
         b.name,
+        b.account_login accountLogin,
         b.bind_phone bindPhone,
         b.phone
         from mall_member_withdraw a
         inner join mall_member b on a.member_id=b.id
         <where>
             <if test="record != null" >
+                <if test="record.accountLogin!=null and record.accountLogin!=''">
+                    and b.account_login like concat('%',  #{record.accountLogin},'%')
+                </if>
                 <if test="record.name!=null and record.name!=''">
                     and b.name like concat('%',  #{record.name},'%')
                 </if>
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 8316f7d..fb2e09e 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -47,6 +47,7 @@
         select a.*,
                b.name memberName,
                b.bind_phone memberBindPhone,
+               b.account_login accountLogin,
                b.phone memberPhone,
                c.goods_name
         from mall_order_item c
@@ -72,6 +73,9 @@
                 <if test="record.name != null and record.name != ''">
                     and b.name like CONCAT('%', CONCAT(#{record.name}, '%'))
                 </if>
+                <if test="record.accountLogin != null and record.accountLogin != ''">
+                    and b.account_login like CONCAT('%', CONCAT(#{record.accountLogin}, '%'))
+                </if>
                 <if test="record.startTime != null and record.startTime != ''">
                     and a.order_time &gt;= #{record.startTime}
                 </if>
diff --git a/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml b/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml
index dcbc73b..17e3b35 100644
--- a/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml
+++ b/src/main/resources/mapper/modules/MallScoreAchieveReleaseMapper.xml
@@ -13,6 +13,7 @@
         select
             a.*,
                b.name name,
+               b.account_login accountLogin,
                b.phone phone
         from mall_money_flow a
         left join mall_member b on b.id = a.member_id
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html b/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html
index 5216595..818999b 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/agentAllMember.html
@@ -49,8 +49,9 @@
                 id: 'agentChild',
                 url: ctx + 'admin/mallMember/agentChild?parentId=1',
                 cols: [[
+                    {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'center'},
                     {field: 'name', title: '姓名', minWidth: 150,align:'center'},
-                    {field: 'phone', title: '电话', minWidth: 150,align:'center',hide:toolbarAgentListChild},
+                    {field: 'phone', title: '手机号码', minWidth: 150,align:'center',hide:toolbarAgentListChild},
                     {field: 'inviteId', title: '邀请码', minWidth: 150,align:'center'},
                     {field: 'levelName', title: '等级', minWidth: 150,align:'center'},
                     {field: 'amount', title: '团队业绩', minWidth: 150,align:'center'},
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/agentList.html b/src/main/resources/templates/febs/views/modules/mallMember/agentList.html
index 2a9e086..5eb4024 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/agentList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/agentList.html
@@ -8,15 +8,21 @@
                             <div class="layui-col-md10">
                                 <div class="layui-form-item">
                                     <div class="layui-inline">
+                                        <label class="layui-form-label">登录账户:</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
                                         <label class="layui-form-label">名称:</label>
                                         <div class="layui-input-inline">
                                             <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input">
                                         </div>
                                     </div>
                                     <div class="layui-inline">
-                                        <label class="layui-form-label">账号:</label>
+                                        <label class="layui-form-label">手机号码:</label>
                                         <div class="layui-input-inline">
-                                            <input type="text" placeholder="账号" name="account" autocomplete="off" class="layui-input">
+                                            <input type="text" placeholder="手机号码" name="account" autocomplete="off" class="layui-input">
                                         </div>
                                     </div>
                                     <div class="layui-inline">
@@ -141,7 +147,8 @@
                 url: ctx + 'admin/mallMember/getAgentList',
                 cols: [[
                     // {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'},
-                    {field: 'phone', title: '账号', minWidth: 150,align:'left',hide:toolbarAgentList},
+                    {field: 'phone', title: '手机号码', minWidth: 150,align:'left',hide:toolbarAgentList},
+                    {field: 'accountLogin', title: '登录账号', minWidth: 100,align:'left'},
                     {field: 'name', title: '名称', minWidth: 100,align:'left'},
                     {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
                     {field: 'levelName', title: '代理层级', minWidth: 100,align:'left'},
@@ -159,6 +166,7 @@
         // 获取查询参数
         function getQueryParams() {
             return {
+                accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(),
                 name: $searchForm.find('input[name="name"]').val().trim(),
                 account: $searchForm.find('input[name="account"]').val().trim(),
                 level: $searchForm.find("select[name='level']").val(),
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html
index 5e4e4d2..7d9317e 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html
@@ -8,15 +8,21 @@
                             <div class="layui-col-md10">
                                 <div class="layui-form-item">
                                     <div class="layui-inline">
+                                        <label class="layui-form-label">登录账户:</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
                                         <label class="layui-form-label">名称:</label>
                                         <div class="layui-input-inline">
                                             <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input">
                                         </div>
                                     </div>
                                     <div class="layui-inline">
-                                        <label class="layui-form-label">账号:</label>
+                                        <label class="layui-form-label">手机号码:</label>
                                         <div class="layui-input-inline">
-                                            <input type="text" placeholder="账号" name="phone" autocomplete="off" class="layui-input">
+                                            <input type="text" placeholder="手机号码" name="phone" autocomplete="off" class="layui-input">
                                         </div>
                                     </div>
                                     <div class="layui-inline">
@@ -50,6 +56,7 @@
 </div>
 <script type="text/html" id="charge-flow-list-option">
     {{# if(d.status === 1) { }}
+<!--        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeAgree:update" lay-event="chargeAgree">同意</button>-->
         <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="chargeAgree:update" lay-event="chargeAgree">同意</button>
         <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="searchInfo:view" lay-event="searchInfo">查询结果</button>
         <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="accountInfo:view" lay-event="accountInfo">账户余额</button>
@@ -87,9 +94,20 @@
         table.on('tool(moneyFlowChargeTable)', function (obj) {
             var data = obj.data,
                 layEvent = obj.event;
+            // if (layEvent === 'chargeAgree') {
+            //     febs.modal.confirm('同意', '同意提现?', function () {
+            //         chargeAgree(data.id);
+            //     });
+            // }
             if (layEvent === 'chargeAgree') {
-                febs.modal.confirm('同意', '同意提现?', function () {
-                    chargeAgree(data.id);
+                febs.modal.open( '提现方式', 'modules/mallMember/chargeFlowListType/' + data.id, {
+                    btn: ['提交', '取消'],
+                    yes: function (index, layero) {
+                        $('#charge-update').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
                 });
             }
             if (layEvent === 'chargeDisagree') {
@@ -117,16 +135,16 @@
             febs.get(ctx + 'admin/mallMember/searchInfo/' + id, null, function (data) {
                 febs.alert.success(data.message);
                 // febs.alert.success('操作成功');
-                window.location.reload();
-                // $query.click();
+                // window.location.reload();
+                $query.click();
             });
         }
         function accountInfo(id) {
             febs.get(ctx + 'admin/mallMember/accountInfo/' + id, null, function (data) {
                 febs.alert.success(data.message);
                 // febs.alert.success('操作成功');
-                window.location.reload();
-                // $query.click();
+                // window.location.reload();
+                $query.click();
             });
         }
         function chargeAgree(id) {
@@ -164,9 +182,10 @@
                 totalRow: true ,// 开启合计行
                 cols: [[
                     {field: 'withdrawNo', title: '编号', minWidth: 100,align:'left', totalRowText: '合计:'},
+                    {field: 'accountLogin', title: '登录账户', minWidth: 100,align:'left'},
                     {field: 'name', title: '名称', minWidth: 100,align:'left'},
-                    {field: 'phone', title: '账号', minWidth: 150,align:'left'},
-                    {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'},
+                    {field: 'phone', title: '手机号码', minWidth: 150,align:'left'},
+                    // {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'},
                     {field: 'amount', title: '金额', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amount) }}'},
                     {field: 'amountFee', title: '手续费', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amountFee) }}'},
                     {field: 'remark', title: '类型', minWidth: 150,align:'left'},
@@ -192,6 +211,7 @@
         function getQueryParams() {
             return {
                 name: $searchForm.find('input[name="name"]').val().trim(),
+                accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(),
                 phone: $searchForm.find('input[name="phone"]').val().trim(),
                 status: $searchForm.find("select[name='status']").val(),
             };
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html
new file mode 100644
index 0000000..386f772
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowListType.html
@@ -0,0 +1,76 @@
+<style>
+    #charge-update {
+        padding: 20px 25px 25px 0;
+    }
+
+    #charge-update .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #charge-update #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #charge-update .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+
+</style>
+<div class="layui-fluid" id="charge-update">
+    <form class="layui-form" action="" lay-filter="charge-update-form">
+
+        <blockquote class="layui-elem-quote blue-border">请选择以下提现方式</blockquote>
+        <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">
+            </div>
+        </div>
+        <div class="layui-form-item sftj">
+            <label class="layui-form-label febs-form-item-require">方式:</label>
+            <div class="layui-input-block">
+                <input type="radio" name="agreeType" value="1" title="手动转账" >
+                <input type="radio" name="agreeType" value="2" title="宁波银行转账" checked="">
+            </div>
+        </div>
+        <div class="layui-form-item febs-hide">
+            <button class="layui-btn" lay-submit="" lay-filter="charge-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,
+            chargeUpdateInfo = [[${chargeUpdateInfo}]],
+            $view = $('#charge-update'),
+            validate = layui.validate,
+            _deptTree;
+
+        form.render();
+
+        initUserValue();
+
+        function initUserValue() {
+            form.val("charge-update-form", {
+                "id": chargeUpdateInfo.id
+            });
+        }
+
+        form.on('submit(charge-update-form-submit)', function (data) {
+            febs.post(ctx + 'admin/mallMember/chargeAgreeWithType', data.field, function () {
+                layer.closeAll();
+                febs.alert.success('操作成功');
+                $('#febs-money-flow-charge').find('#reset').click();
+            });
+            return false;
+        });
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
index 6b99f98..4b46ec5 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -8,6 +8,12 @@
                             <div class="layui-col-md10">
                                 <div class="layui-form-item">
                                     <div class="layui-inline">
+                                        <label class="layui-form-label">登录账户:</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
                                         <label class="layui-form-label">名称:</label>
                                         <div class="layui-input-inline">
                                             <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input">
@@ -16,7 +22,7 @@
                                     <div class="layui-inline">
                                         <label class="layui-form-label">账号:</label>
                                         <div class="layui-input-inline">
-                                            <input type="text" placeholder="账号/邀请码" name="account" autocomplete="off" class="layui-input">
+                                            <input type="text" placeholder="手机号码/邀请码" name="account" autocomplete="off" class="layui-input">
                                         </div>
                                     </div>
                                     <div class="layui-inline">
@@ -110,6 +116,13 @@
     <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchInsideWith">
     {{# } }}
 </script>
+<script type="text/html" id="switchOutsideWith">
+    {{# if(d.outsideWith === 1) { }}
+    <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchOutsideWith">
+    {{# } else { }}
+    <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchOutsideWith">
+    {{# } }}
+</script>
 <style>
     .layui-form-onswitch {
         background-color: #5FB878 !important;
@@ -117,6 +130,7 @@
 </style>
 <script type="text/html" id="tableMemberBar">
     <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="exportMember">导出会员信息</button>
         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="addMember:update" lay-event="registMember">添加会员</button>
         <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="balance">拨付余额</button>
 <!--        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="score">拨付赠送积分</button>-->
@@ -130,7 +144,7 @@
 <!-- 表格操作栏 end -->
 <script data-th-inline="none" type="text/javascript">
     // 引入组件并初始化
-    layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+    layui.use([ 'jquery', 'form', 'table', 'upload','febs'], function () {
         var $ = layui.jquery,
             febs = layui.febs,
             form = layui.form,
@@ -199,6 +213,18 @@
             }
 
         });
+        function outsideWithYes(id) {
+            febs.get(ctx + 'admin/mallMember/outsideWithYes/' + id, null, function () {
+                febs.alert.success('操作成功');
+                $query.click();
+            });
+        }
+        function outsideWithNo(id) {
+            febs.get(ctx + 'admin/mallMember/outsideWithNo/' + id, null, function () {
+                febs.alert.success('操作成功');
+                $query.click();
+            });
+        }
         function insideWithYes(id) {
             febs.get(ctx + 'admin/mallMember/insideWithYes/' + id, null, function () {
                 febs.alert.success('操作成功');
@@ -264,11 +290,12 @@
                 id: 'userTable',
                 url: ctx + 'admin/mallMember/getMallMemberList',
                 toolbar:"#tableMemberBar",
-                defaultToolbar:[],
+                // defaultToolbar:[],
                 totalRow: true ,// 开启合计行
                 cols: [[
                     {type: 'checkbox'},
-                    {field: 'phone', title: '账号', minWidth: 150,align:'left',hide:toolbarMallmember},
+                    {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'left'},
+                    {field: 'phone', title: '手机号码', minWidth: 150,align:'left',hide:toolbarMallmember},
                     {field: 'name', title: '名称', minWidth: 100,align:'left', totalRowText: '合计:'},
                     {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
                     {field: 'balance', title: '余额', minWidth: 100,align:'left',totalRow: '{{= parseInt(d.balance) }}'},
@@ -284,6 +311,7 @@
                     {field: 'creater', title: '联创', templet:'#switchCreate', minWidth: 120,align:'left' ,hide:toolbarMallmember},
                     {field: 'partner', title: '合伙人', templet:'#switchPartner', minWidth: 120,align:'left' ,hide:toolbarMallmember},
                     {field: 'insideWith', title: '是否内转', templet:'#switchInsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember},
+                    {field: 'outsideWith', title: '是否提现', templet:'#switchOutsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember},
                     {field: 'accountType', title: '账号类型',
                         templet: function (d) {
                             if (d.accountType === 2) {
@@ -313,7 +341,12 @@
             var data = obj.data,
                 layEvent = obj.event;
 
+            if (layEvent === 'exportMember') {
+                window.location.href = ctx + "admin/mallMember/exportMember";
+            }
+
             if (layEvent === 'registMember') {
+
                 febs.modal.open( '添加会员', 'modules/mallMember/addMember', {
                     btn: ['提交', '取消'],
                     yes: function (index, layero) {
@@ -467,6 +500,7 @@
             return {
                 name: $searchForm.find('input[name="name"]').val().trim(),
                 account: $searchForm.find('input[name="account"]').val().trim(),
+                accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(),
                 accountStatus: $searchForm.find("select[name='accountStatus']").val(),
                 level: $searchForm.find("select[name='level']").val(),
             };
@@ -480,6 +514,14 @@
             }
         })
 
+        form.on('switch(switchOutsideWith)', function (data) {
+            if (data.elem.checked) {
+                outsideWithYes(data.value);
+            } else {
+                outsideWithNo(data.value);
+            }
+        })
+
         form.on('switch(switchStatus)', function (data) {
             if (data.elem.checked) {
                 openAccount(data.value);
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
index 1568604..107977e 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
@@ -8,15 +8,21 @@
                             <div class="layui-col-md10">
                                 <div class="layui-form-item">
                                     <div class="layui-inline">
+                                        <label class="layui-form-label">登录账户:</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
                                         <label class="layui-form-label">名称:</label>
                                         <div class="layui-input-inline">
                                             <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input">
                                         </div>
                                     </div>
                                     <div class="layui-inline">
-                                        <label class="layui-form-label">账号:</label>
+                                        <label class="layui-form-label">手机号码:</label>
                                         <div class="layui-input-inline">
-                                            <input type="text" placeholder="账号" name="phone" autocomplete="off" class="layui-input">
+                                            <input type="text" placeholder="手机号码" name="phone" autocomplete="off" class="layui-input">
                                         </div>
                                     </div>
                                     <div class="layui-inline">
@@ -24,6 +30,7 @@
                                         <div class="layui-input-inline">
                                             <select name="type">
                                                 <option value="">请选择</option>
+                                                <option value="1">静态收益</option>
                                                 <option value="2">直推奖</option>
                                                 <option value="8">提现</option>
                                                 <option value="9">转账</option>
@@ -123,8 +130,9 @@
                 id: 'moneyFlowTable',
                 url: ctx + 'admin/mallMember/getMoneyFlowList',
                 cols: [[
+                    {field: 'accountLogin', title: '登录账户', minWidth: 100,align:'left'},
                     {field: 'name', title: '名称', minWidth: 100,align:'left'},
-                    {field: 'phone', title: '账号', minWidth: 150,align:'left'},
+                    {field: 'phone', title: '手机号码', minWidth: 150,align:'left'},
                     {field: 'amount', title: '金额', minWidth: 150,align:'left'},
                     {field: 'fromMemberName', title: '来自', minWidth: 150,align:'left'},
                     {field: 'type', title: '流水类型',
@@ -216,6 +224,7 @@
         function getQueryParams() {
             return {
                 name: $searchForm.find('input[name="name"]').val().trim(),
+                accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(),
                 phone: $searchForm.find('input[name="phone"]').val().trim(),
                 type: $searchForm.find("select[name='type']").val(),
                 flowType: $searchForm.find("select[name='flowType']").val(),
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html
index b5879eb..1885e7c 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/scoreAchieveReleaseList.html
@@ -30,7 +30,8 @@
                 totalRow: true ,// 开启合计行
                 cols: [[
                     {field: 'name', title: '名称', minWidth: 150,align:'center', totalRowText: '合计:'},
-                    {field: 'phone', title: '电话', minWidth: 150,align:'center'},
+                    {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'center'},
+                    {field: 'phone', title: '手机号码', minWidth: 150,align:'center'},
                     {field: 'createdTime', title: '释放时间', minWidth: 150,align:'center'},
                     {field: 'type', title: '类型',
                         templet: function (d) {
diff --git a/src/main/resources/templates/febs/views/modules/order/orderList.html b/src/main/resources/templates/febs/views/modules/order/orderList.html
index 1b57287..f371842 100644
--- a/src/main/resources/templates/febs/views/modules/order/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/order/orderList.html
@@ -7,6 +7,12 @@
                         <div class="layui-form-item">
                             <div class="layui-col-md10">
                                 <div class="layui-inline">
+                                    <label class="layui-form-label">登录账户:</label>
+                                    <div class="layui-input-inline">
+                                        <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input">
+                                    </div>
+                                </div>
+                                <div class="layui-inline">
                                     <label class="layui-form-label">购买人:</label>
                                     <div class="layui-input-inline">
                                         <input type="text" placeholder="购买人" name="name" autocomplete="off" class="layui-input">
@@ -121,6 +127,7 @@
         <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" id="importDeliver" lay-event="importDeliver">导入发货</button>
         <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" lay-event="exportDeliverDone">导出已发货订单</button>
         <button id="printSelect" type="button" class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view">自定义打印</button>
+        <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" shiro:hasPermission="orderDetail:view" lay-event="exportDeliverAll">导出全部订单</button>
     </div>
 </script>
 <!-- 表格操作栏 end -->
@@ -165,6 +172,10 @@
 
             if (event == 'exportDeliver') {
                 window.location.href = ctx + "admin/order/exportOrderList?orderType=1&status=2";
+            }
+
+            if (event == 'exportDeliverAll') {
+                window.location.href = ctx + "admin/order/exportOrderListAll?orderType=1&status=0";
             }
 
             if (event == 'exportDeliverDone') {
@@ -287,9 +298,10 @@
                 cols: [[
                         {type: 'checkbox',fixed: 'left'},
                         {field: 'orderNo', title: '订单编号', minWidth: 120,align:'left', totalRowText: '合计:'},
+                        {field: 'accountLogin', title: '登录账户', minWidth: 120,align:'left'},
                         {field: 'memberName', title: '购买人', minWidth: 120,align:'left'},
-                        {field: 'memberPhone', title: '账号', minWidth: 120,align:'left'},
-                        {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'},
+                        {field: 'memberPhone', title: '手机号码', minWidth: 120,align:'left'},
+                        // {field: 'memberBindPhone', title: '联系方式', minWidth: 120,align:'left'},
                         {field: 'goodsName', title: '商品信息', minWidth: 200,align:'left'},
                         {field: 'remark', title: '备注', minWidth: 200,align:'left'},
                         {field: 'amount', title: '订单金额', minWidth: 120,align:'left',totalRow: '{{= parseInt(d.amount) }}'},
@@ -366,6 +378,7 @@
             return {
                 startTime: $searchForm.find('input[name="startTime"]').val().trim(),
                 endTime: $searchForm.find('input[name="endTime"]').val().trim(),
+                accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(),
                 name: $searchForm.find('input[name="name"]').val().trim(),
                 orderNo: $searchForm.find('input[name="orderNo"]').val().trim(),
                 goodsName: $searchForm.find('input[name="goodsName"]').val().trim(),
diff --git a/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html b/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html
index bad857b..78664ca 100644
--- a/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html
+++ b/src/main/resources/templates/febs/views/modules/system/hlmBasicPerk.html
@@ -40,6 +40,23 @@
                         </div>
                     </div>
                 </div>
+                <div class="layui-card-body">
+                    <blockquote class="layui-elem-quote blue-border">星级每日补贴</blockquote>
+                    <div class="layui-row layui-col-space10 layui-form-item">
+                        <label class="layui-form-label febs-form-item-require">补贴总额:</label>
+                        <div class="layui-input-block">
+                            <input type="text" name="perkAgentAchieveTotal" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+                            <div class="layui-word-aux">例:15000</div>
+                        </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="perkAgentAchievePercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input" >
+                            <div class="layui-word-aux">例:15%,填写15</div>
+                        </div>
+                    </div>
+                </div>
 
                 <div class="layui-card-footer">
                     <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="hlm-basic-perk-submit" id="submit">保存</button>
@@ -82,6 +99,8 @@
 
         function initHlmBasicPerkValue() {
             form.val("hlm-basic-perk-form", {
+                "perkAgentAchieveTotal": hlmBasicPerk.perkAgentAchieveTotal,
+                "perkAgentAchievePercent": hlmBasicPerk.perkAgentAchievePercent,
                 "sharePerk": hlmBasicPerk.sharePerk,
                 "teamPerk": hlmBasicPerk.teamPerk,
                 "teamEqualsPerk": hlmBasicPerk.teamEqualsPerk,
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index 53af054..5040508 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -37,6 +37,8 @@
 @SpringBootTest
 public class ProfitTest {
 
+    @Autowired
+    private IAgentService agentService;
 //    @Autowired
 //    private AgentConsumer agentConsumer;
 //
@@ -92,6 +94,7 @@
     private NBYHService nbyhService;
     @Autowired
     private IAdminMallMemberService mallMemberService;
+
     @Test
     public void agentProfitTrade() {
 //        try {
@@ -102,10 +105,12 @@
 //        nbyhService.tradeSinge(306L);
 //        nbyhService.tradeSingeOuterTransfer(306L);
 //        nbyhService.accountInfoQuery(306L);
-//        nbyhService.transferResultInfoQuery(306L);
+//        nbyhService.transferResultInfoQuery(315L);
 
 //        mallMemberService.chargeAgree(307L);
 //        mallMemberService.searchInfo(307L);
+
+        agentService.perkAgent();
     }
     @Test
     public void agentProfit() {

--
Gitblit v1.9.1