From b3c8303ecd936182e2df4933dbf1ad167b81266e Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 25 Oct 2023 14:26:23 +0800
Subject: [PATCH] 版本管理

---
 src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java             |    8 
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java |   21 ++
 src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java      |    1 
 src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java     |   10 +
 src/main/resources/templates/febs/views/modules/chat/userPerkList.html   |  229 +++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java    |   13 +
 src/main/resources/mapper/modules/ChatUserMapper.xml                     |   58 ++++++
 src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java       |   17 +
 src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserPerkVo.java            |   59 ++++++
 src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java         |    2 
 src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java                  |   25 ++
 src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java        |    5 
 src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java         |   12 +
 src/main/java/cc/mrbird/febs/mall/vo/AdminChatRedBagVo.java              |   71 +++++++
 14 files changed, 525 insertions(+), 6 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
index 91d5fb6..0822743 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -65,4 +65,21 @@
     }
     // === 自动发送  end ===
 
+    // === 自动发送  start ===
+    @Bean
+    public DirectExchange imOverdueSendExchange() {
+        return new DirectExchange(RabbitQueueEnum.IM_REDBAG_OVERDUE.getExchange());
+    }
+
+    @Bean
+    public Queue imOverdueSendQueue() {
+        return new Queue(RabbitQueueEnum.IM_REDBAG_OVERDUE.getQueue());
+    }
+
+    @Bean
+    public Binding imOverdueSendBind() {
+        return BindingBuilder.bind(imOverdueSendQueue()).to(imOverdueSendExchange()).with(RabbitQueueEnum.IM_REDBAG_OVERDUE.getRoute());
+    }
+    // === 自动发送  end ===
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java
index d4bd762..1463c85 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java
@@ -46,6 +46,19 @@
     }
 
     /**
+     * 用户收益列表
+     *
+     * @param chatUser
+     * @param request
+     * @return
+     */
+    @GetMapping("getUserPerkList")
+    public FebsResponse getUserPerkList(ChatUser chatUser, QueryRequest request) {
+        Map<String, Object> data = getDataTable(iAdminChatService.getUserPerkList(chatUser, request));
+        return new FebsResponse().success().data(data);
+    }
+
+    /**
      * 用户列表---开启
      *
      * @param userId
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java
index 94ad52e..cdf3998 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java
@@ -46,6 +46,16 @@
     }
 
     /**
+     * 用户收益列表
+     * @return
+     */
+    @GetMapping("userPerkList")
+    @RequiresPermissions("userPerkList:view")
+    public String userPerkList() {
+        return FebsUtil.view("modules/chat/userPerkList");
+    }
+
+    /**
      * 用户列表-新增会员
      * @param model
      * @return
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
index e42f0d0..6209a86 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
@@ -17,6 +17,8 @@
 
     IPage<AdminChatUserVo> selectUserListInPage(Page<AdminChatUserVo> page, @Param("record")ChatUser chatUser);
 
+    IPage<AdminChatUserPerkVo> selectUserPerkListInPage(Page<AdminChatUserPerkVo> page, @Param("record")ChatUser chatUser);
+
     ChatUser selectByUserId(@Param("userId")String userId);
 
     void updateStatusByUserId(@Param("userId")String userId, @Param("status")String code);
@@ -67,5 +69,11 @@
 
     BigDecimal selectTotalType(@Param("type")int i,@Param("dateType") String type, @Param("date") Date date);
 
+    List<AdminChatRedBagVo> selectListByMsgType(@Param("userId")Long userId,@Param("msgType")String msgType, @Param("date") Date date);
+
     List<ChatUser> selectUserList(@Param("isRobot")int i,@Param("dateType") String type, @Param("date") Date date);
+
+    List<AdminChatRedBagVo> selectByOverDueStatueAndTime(@Param("overdueState")Integer overdueState, @Param("overdueTime")Date overdueTime);
+
+    void updateOverdueStatusById(@Param("overdueState")Integer overdueState, @Param("id")Long id);
 }
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 1ccbe27..e507efc 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -15,6 +15,7 @@
 import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
 import cc.mrbird.febs.mall.service.IMemberProfitService;
 import cc.mrbird.febs.mall.service.impl.CommonService;
+import cc.mrbird.febs.mall.vo.AdminChatRedBagVo;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
@@ -55,7 +56,7 @@
     /**
      * 代理分红
      */
-//    @Scheduled(cron = "0 0/1 * * * ? ")
+    @Scheduled(cron = "0 0/1 * * * ? ")
     @Scheduled(cron = "0/2 * * * * ? ")
 //    @Scheduled(cron = "0/30 * * * * ? ")
     public void profitJob() {
@@ -70,12 +71,24 @@
     }
 
 //    @Scheduled(cron = "0/2 * * * * ? ")
+//    @Scheduled(cron = "0 0 0/1 * * ? ")
+//    public void robotNickNameJob() {
+//        List<ChatUser> chatUsers = chatUserMapper.selectListByIsRobot(1);
+//        if(CollUtil.isNotEmpty(chatUsers)){
+//            for(ChatUser chatUser : chatUsers){
+//                chatUserMapper.updateNicknameById(chatUser.getUserId(),randomName(RandomUtil.randomInt(1, 5)));
+//            }
+//        }
+//    }
+
+//    @Scheduled(cron = "0/2 * * * * ? ")
     @Scheduled(cron = "0 0 0/1 * * ? ")
-    public void robotNickNameJob() {
-        List<ChatUser> chatUsers = chatUserMapper.selectListByIsRobot(1);
-        if(CollUtil.isNotEmpty(chatUsers)){
-            for(ChatUser chatUser : chatUsers){
-                chatUserMapper.updateNicknameById(chatUser.getUserId(),randomName(RandomUtil.randomInt(1, 5)));
+    public void returnRedBagAmount() {
+        List<AdminChatRedBagVo> adminChatRedBagVos = chatUserMapper.selectByOverDueStatueAndTime(2, DateUtil.date());
+        if(CollUtil.isNotEmpty(adminChatRedBagVos)){
+            for(AdminChatRedBagVo adminChatRedBagVo : adminChatRedBagVos){
+                chatUserMapper.updateOverdueStatusById(1,adminChatRedBagVo.getId());
+                agentProducer.sendOverdueSendMsg(adminChatRedBagVo.getId());
             }
         }
     }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java
index 8701469..3401bf7 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java
@@ -12,6 +12,8 @@
 
     IPage<AdminChatUserVo> getUserList(ChatUser chatUser, QueryRequest request);
 
+    IPage<AdminChatUserPerkVo> getUserPerkList(ChatUser chatUser, QueryRequest request);
+
     FebsResponse openAccount(String userId);
 
     FebsResponse closeAccount(String userId);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java
index 286ef51..7a2eff1 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java
@@ -10,6 +10,7 @@
 import cc.mrbird.febs.mall.service.IAdminChatService;
 import cc.mrbird.febs.mall.vo.*;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -22,6 +23,7 @@
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Slf4j
 @Service
@@ -44,6 +46,25 @@
     }
 
     @Override
+    public IPage<AdminChatUserPerkVo> getUserPerkList(ChatUser chatUser, QueryRequest request) {
+        Page<AdminChatUserPerkVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<AdminChatUserPerkVo> chatUserPerkVoIPage = this.baseMapper.selectUserPerkListInPage(page, chatUser);
+        List<AdminChatUserPerkVo> records = chatUserPerkVoIPage.getRecords();
+        if(CollUtil.isNotEmpty(records)){
+            for(AdminChatUserPerkVo adminChatUserPerkVo : records){
+                Long userId = adminChatUserPerkVo.getUserId();
+                List<AdminChatRedBagVo> group = this.baseMapper.selectListByMsgType(userId,"GROUP", null);
+                adminChatUserPerkVo.setGroupRedBagNum(CollUtil.isEmpty(group) ? 0 : group.size());
+                BigDecimal redBagTotalAmount = group.stream().map(AdminChatRedBagVo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+                adminChatUserPerkVo.setRedBagTotalAmount(redBagTotalAmount);
+                BigDecimal redBagAvaAmount = group.stream().map(AdminChatRedBagVo::getAmountAva).reduce(BigDecimal.ZERO, BigDecimal::add);
+                adminChatUserPerkVo.setRedBagAvaAmount(redBagAvaAmount);
+            }
+        }
+        return chatUserPerkVoIPage;
+    }
+
+    @Override
     public FebsResponse openAccount(String userId) {
         ChatUser chatUser = this.baseMapper.selectByUserId(userId);
         if(ObjectUtil.isEmpty(chatUser)) {
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminChatRedBagVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminChatRedBagVo.java
new file mode 100644
index 0000000..a16c77c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminChatRedBagVo.java
@@ -0,0 +1,71 @@
+package cc.mrbird.febs.mall.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class AdminChatRedBagVo {
+    private Long id;
+    /**
+     * 消息ID
+     */
+    private Long msgId;
+    /**
+     * 消息类型SINGLE/GROUP
+     */
+    private String msgType;
+    /**
+     * 红包z总个数
+     */
+    private Integer totalCnt;
+    /**
+     * 剩余红包个数
+     */
+    private Integer avaCnt;
+    /**
+     * 金额
+     */
+    private BigDecimal amount;
+    /**
+     * 剩余金额
+     */
+    private BigDecimal amountAva;
+    /**
+     * 钱包类型 USDT RMB
+     */
+    private String amountType;
+    /**
+     * 是否被领取 1:是 2:否
+     */
+    private Integer state;
+    /**
+     * 是否已过期 1:是2:否
+     */
+    private Integer overdueState;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 过期时间
+     */
+    private Date overdueTime;
+    /**
+     * 版本控制
+     */
+    private Integer version;
+    /**
+     * 发送方
+     */
+    private Long fromUserId;
+    /**
+     * 接收方
+     */
+    private Long toUserId;
+    /**
+     * 雷
+     */
+    private Integer boomNum;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserPerkVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserPerkVo.java
new file mode 100644
index 0000000..055575c
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserPerkVo.java
@@ -0,0 +1,59 @@
+package cc.mrbird.febs.mall.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AdminChatUserPerkVo {
+
+    private Long userId;
+    /**
+     * 昵称
+     */
+    private String nickName;
+    /**
+     * 微聊号
+     */
+    private String chatNo;
+    /**
+     * 注册时间
+     */
+    private String createTime;
+    /**
+     * 账户总额
+     */
+    private BigDecimal totalAmount;
+    /**
+     * 账户可用
+     */
+    private BigDecimal avaAmount;
+
+    /**
+     * 邀请码
+     */
+    private String inviteId;
+
+    /**
+     * 邀请码
+     */
+    private String phone;
+
+    /**
+     * 是否是机器人 0:否 1:是
+     */
+    private Integer isRobot;
+
+    /**
+     * 发红包个数
+     */
+    private Integer groupRedBagNum;
+    /**
+     * 发出去的红包总额
+     */
+    private BigDecimal redBagTotalAmount;
+    /**
+     * 剩余未领取的总额
+     */
+    private BigDecimal redBagAvaAmount;
+}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
index b9becc4..4fe720e 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -15,4 +15,9 @@
      * 添加机器人
      */
     public static final String QUEUE_IM_REDBAG_ADD_ROBOT = "queue_im_redbag_add_robot";
+
+    /**
+     * 自动返还
+     */
+    public static final String QUEUE_IM_REDBAG_OVERDUE = "queue_im_redbag_overdue";
 }
diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
index 23a5073..602834d 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -6,6 +6,7 @@
 @Getter
 public enum RabbitQueueEnum {
 
+    IM_REDBAG_OVERDUE("exchange_im_redbag_overdue", "route_key_im_redbag_overdue",  QueueConstants.QUEUE_IM_REDBAG_OVERDUE),
     IM_REDBAG_AUTO_SEND("exchange_im_redbag_auto_send", "route_key_im_redbag_auto_send",  QueueConstants.QUEUE_IM_REDBAG_AUTO_SEND),
     IM_REDBAG_GET_ADD_ROBOT("exchange_im_redbag_add_robot", "route_key_im_redbag_add_robot",  QueueConstants.QUEUE_IM_REDBAG_ADD_ROBOT);
 
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
index 3d5c6c0..7d58288 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -70,4 +70,16 @@
                 correlationData);
     }
 
+    /**
+     * 自动返还
+     */
+    public void sendOverdueSendMsg(Long redbagId) {
+        log.info("自动返还:{}", redbagId);
+        CorrelationData correlationData = new CorrelationData(IdUtil.simpleUUID());
+        rabbitTemplate.convertAndSend(RabbitQueueEnum.IM_REDBAG_OVERDUE.getExchange(),
+                RabbitQueueEnum.IM_REDBAG_OVERDUE.getRoute(),
+                redbagId,
+                correlationData);
+    }
+
 }
diff --git a/src/main/resources/mapper/modules/ChatUserMapper.xml b/src/main/resources/mapper/modules/ChatUserMapper.xml
index a6baa1a..4221dba 100644
--- a/src/main/resources/mapper/modules/ChatUserMapper.xml
+++ b/src/main/resources/mapper/modules/ChatUserMapper.xml
@@ -35,6 +35,36 @@
         order by a.create_time desc
     </select>
 
+    <select id="selectUserPerkListInPage" resultType="cc.mrbird.febs.mall.vo.AdminChatUserPerkVo">
+        select
+        a.user_id userId,
+        a.nick_name nickName,
+        a.chat_no chatNo,
+        a.phone phone,
+        a.invite_id inviteId,
+        a.is_robot isRobot,
+        date_format(a.create_time, '%Y-%m-%d %H:%m:%s') createTime,
+        IFNULL(sum(b.total_amount), 0) totalAmount,
+        IFNULL(sum(b.ava_amount), 0) avaAmount
+        from chat_user a
+        left join chat_wallet b on b.user_id = a.user_id and type = 'USDT'
+        <where>
+            <if test="record != null">
+                <if test="record.nickName != null and record.nickName != ''">
+                    and a.nick_name like CONCAT('%', CONCAT(#{record.nickName}, '%'))
+                </if>
+                <if test="record.inviteId != null and record.inviteId != ''">
+                    and a.invite_id = #{record.inviteId}
+                </if>
+                <if test="record.status != null and record.status != ''">
+                    and a.status = #{record.status}
+                </if>
+            </if>
+        </where>
+        group by a.user_id
+        order by a.create_time desc
+    </select>
+
     <select id="selectByUserId" resultType="cc.mrbird.febs.mall.entity.ChatUser">
         select
         a.*
@@ -317,5 +347,33 @@
         </if>
     </select>
 
+    <select id="selectListByMsgType" resultType="cc.mrbird.febs.mall.vo.AdminChatRedBagVo">
+        select
+               a.*
+        from chat_red_bag a
+        where a.msg_type = #{msgType}
+        <if test='date != "" and date != null'>
+            and date_format(a.create_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
+        </if>
+        and a.from_user_id = #{userId}
+    </select>
+
+    <select id="selectByOverDueStatueAndTime" resultType="cc.mrbird.febs.mall.vo.AdminChatRedBagVo">
+        select *
+        from chat_red_bag
+        where overdue_state = #{overdueState}
+          and #{overdueTime} > overdue_time
+        order by id asc
+            limit 500
+    </select>
+
+
+    <update id="updateOverdueStatusById">
+        update chat_red_bag
+        set
+            overdue_state = #{overdueState}
+        where id = #{id}
+    </update>
+
 
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/chat/userPerkList.html b/src/main/resources/templates/febs/views/modules/chat/userPerkList.html
new file mode 100644
index 0000000..41082c2
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/chat/userPerkList.html
@@ -0,0 +1,229 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-chat-user-perk-list" lay-title="用户收益列表">
+    <div class="layui-row febs-container">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-body febs-table-full">
+                    <form class="layui-form layui-table-form" lay-filter="user-table-form">
+                        <div class="layui-row">
+                            <div class="layui-col-md10">
+                                <div class="layui-form-item">
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label">昵称:</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="昵称" name="nickName" 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="inviteId" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label">账号状态:</label>
+                                        <div class="layui-input-inline">
+                                            <select name="status">
+                                                <option value="">请选择</option>
+                                                <option value="Y">正常</option>
+                                                <option value="N">禁用</option>
+                                            </select>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+                                    <i class="layui-icon">&#xe848;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+                                    <i class="layui-icon">&#xe79b;</i>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                    <table lay-filter="userChatTable" lay-data="{id: 'userChatTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 表格操作栏 start -->
+<script type="text/html" id="user-option">
+    <span shiro:lacksPermission="user:view,user:update,user:delete">
+        <span class="layui-badge-dot febs-bg-orange"></span> 无权限
+    </span>
+    <a lay-event="edit" shiro:hasPermission="user:update"><i
+            class="layui-icon febs-edit-area febs-blue">&#xe7a5;</i></a>
+</script>
+<script type="text/html" id="switchIsRobot">
+    {{# if(d.isRobot === 1) { }}
+    <input type="checkbox" value={{d.userId}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchIsRobot">
+    {{# } else { }}
+    <input type="checkbox" value={{d.userId}} lay-text="是|否" lay-skin="switch" lay-filter="switchIsRobot">
+    {{# } }}
+</script>
+<style>
+    .layui-form-onswitch {
+        background-color: #5FB878 !important;
+    }
+</style>
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="registerMember">添加会员</button>
+        <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="balance">拨付余额</button>
+    </div>
+</script>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+    // 引入组件并初始化
+    layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            $view = $('#febs-chat-user-perk-list'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: 'phone', type: null},
+            tableIns;
+
+        form.render();
+        let currPageUser = 1;//首先默认值为1,防止出错
+        //获取当前页
+        currPageUser = $view.find(".layui-laypage-em").next().html();
+
+        // 表格初始化
+        initTable();
+
+        // 查询按钮
+        $query.on('click', function () {
+            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+            tableIns.reload({where: params, page: {curr: 1}});
+        });
+
+        // 刷新按钮
+        $reset.on('click', function () {
+            $searchForm[0].reset();
+            sortObject.type = 'null';
+            tableIns.reload({where: getQueryParams(), page: {curr: currPageUser}, initSort: sortObject});
+        });
+
+        // 获取查询参数
+        function getQueryParams() {
+            return {
+                nickName: $searchForm.find('input[name="nickName"]').val().trim(),
+                inviteId: $searchForm.find('input[name="inviteId"]').val().trim(),
+                status: $searchForm.find("select[name='status']").val()
+            };
+        }
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'userChatTable',
+                url: ctx + 'admin/chat/getUserPerkList',
+                toolbar:"#toolbar",
+                defaultToolbar:[],
+                totalRow: true ,// 开启合计行
+                cols: [[
+                    {type: 'checkbox'},
+                    {field: 'userId', title: '标识', minWidth: 150,align:'left'},
+                    {field: 'nickName', title: '昵称', minWidth: 100,align:'left', totalRowText: '合计:',align:'center'},
+                    {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left',align:'center'},
+                    {field: 'phone', title: '注册号码', minWidth: 150,align:'left',align:'center'},
+                    {field: 'totalAmount', title: '账户总额', minWidth: 80,align:'left',totalRow: '{{= parseInt(d.totalAmount) }}',align:'center'},
+                    {field: 'avaAmount', title: '账户余额', minWidth: 80,align:'left',totalRow: '{{= parseInt(d.avaAmount) }}',align:'center'},
+                    {field: 'groupRedBagNum', title: '群红包数', minWidth: 80,align:'left'},
+                    {field: 'redBagTotalAmount', title: '红包总额', minWidth: 80,align:'left'},
+                    {field: 'redBagAvaAmount', title: '未领取', minWidth: 80,align:'left'},
+                    // {field: 'isRobot', title: '机器人', templet: '#switchIsRobot', minWidth: 80,align:'center'},
+                    {field: 'createTime', title: '注册时间', minWidth: 180,align:'center'},
+                ]]
+            });
+        }
+
+        table.on('toolbar(userChatTable)', function(obj){
+            var data = obj.data,
+                layEvent = obj.event;
+
+            // if (layEvent === 'registerMember') {
+            //     febs.get(ctx + 'admin/chat/registerMember/', null, function () {
+            //         febs.alert.success('操作成功');
+            //         $query.click();
+            //     });
+            // }
+
+            if (layEvent === 'registerMember') {
+                var checkData = table.checkStatus('userChatTable').data;
+                if (checkData.length <= 0) {
+                    febs.alert.warn('请选择需要的用户');
+                    return;
+                }
+                if (checkData.length > 1) {
+                    febs.alert.warn('请选择一个用户');
+                    return;
+                }
+                registerMember("添加会员", checkData[0].inviteId, 1);
+            }
+
+            if (layEvent === 'balance') {
+                var checkData = table.checkStatus('userChatTable').data;
+                if (checkData.length <= 0) {
+                    febs.alert.warn('请选择需要的用户');
+                    return;
+                }
+                if (checkData.length > 1) {
+                    febs.alert.warn('请选择一个用户');
+                    return;
+                }
+                systemPay("修改余额", checkData[0].userId, 1);
+            }
+        });
+
+        function registerMember(text, inviteId, type) {
+            febs.modal.open(text, 'modules/chat/mallRegisterMember/'+ inviteId, {
+                btn: ['提交', '取消'],
+                yes: function (index, layero) {
+                    $('#chat-register-member').find('#submit').trigger('click');
+                },
+                btn2: function () {
+                    layer.closeAll();
+                }
+            });
+        }
+
+        function systemPay(text, userId, type) {
+            febs.modal.open(text, 'modules/chat/mallSystemPay/'+ userId, {
+                btn: ['提交', '取消'],
+                yes: function (index, layero) {
+                    $('#chat-systemPay-update').find('#submit').trigger('click');
+                },
+                btn2: function () {
+                    layer.closeAll();
+                }
+            });
+        }
+
+        form.on('switch(switchIsRobot)', function (data) {
+            if (data.elem.checked) {
+                openSwitchIsRobot(data.value);
+            } else {
+                closeSwitchIsRobot(data.value);
+            }
+        })
+        function openSwitchIsRobot(userId) {
+            febs.get(ctx + 'admin/chat/openSwitchIsRobot/' + userId, null, function () {
+                febs.alert.success('操作成功');
+                $reset.click();
+            });
+        }
+        function closeSwitchIsRobot(userId) {
+            febs.get(ctx + 'admin/chat/closeSwitchIsRobot/' + userId, null, function () {
+                febs.alert.success('操作成功');
+                $reset.click();
+            });
+        }
+
+    })
+</script>
\ No newline at end of file

--
Gitblit v1.9.1