From 0a12bc6ec7148ae33596e9de142027ec379c7835 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 09 Apr 2024 10:11:50 +0800
Subject: [PATCH] Merge branch 'blnka' into blnka-vip

---
 src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java              |    5 
 src/main/resources/mapper/modules/MallVipBenefitsRecordMapper.xml                  |   35 +++++
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java        |   21 +++
 src/main/resources/mapper/modules/MallMemberMapper.xml                             |    3 
 src/main/java/cc/mrbird/febs/vip/mapper/MallVipBenefitsRecordMapper.java           |    5 
 src/main/resources/templates/febs/views/modules/mallMember/memberBenefitsList.html |  207 +++++++++++++++++++++++++++++
 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html     |   29 ++--
 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java                           |    4 
 src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java         |    7 +
 src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipBenefitsController.java    |    1 
 src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java      |   34 ++++
 src/main/resources/mapper/modules/MallVipConfigMapper.xml                          |    7 +
 src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsRecord.java                 |   38 +++++
 13 files changed, 381 insertions(+), 15 deletions(-)

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 3bf4415..86be4d2 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -9,6 +9,9 @@
 import cc.mrbird.febs.mall.service.IAdminMallMemberService;
 import cc.mrbird.febs.mall.service.IApiMallMemberService;
 import cc.mrbird.febs.mall.vo.*;
+import cc.mrbird.febs.vip.entity.MallVipBenefitsRecord;
+import cc.mrbird.febs.vip.mapper.MallVipBenefitsRecordMapper;
+import cc.mrbird.febs.vip.service.IMallVipBenefitsService;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
@@ -33,6 +36,8 @@
 
     private final IAdminMallMemberService mallMemberService;
     private final IApiMallMemberService apiMallMemberService;
+    private final IMallVipBenefitsService mallVipBenefitsService;
+    private final MallVipBenefitsRecordMapper mallVipBenefitsRecordMapper;
 
     /**
      * 平台账单
@@ -619,4 +624,20 @@
     public FebsResponse addMemberCoupon(@Valid MallMember mallmember) {
         return mallMemberService.addMemberCoupon(mallmember);
     }
+
+    @GetMapping(value = "/findMemberBenefitsInPage")
+    public FebsResponse findMemberBenefitsInPage(MallVipBenefitsRecord record, QueryRequest request) {
+        Map<String, Object> data = getDataTable(mallVipBenefitsService.findVipBenefitsInPage(record, request));
+        return new FebsResponse().success().data(data);
+    }
+
+    @PostMapping(value = "/sendGift/{id}")
+    public FebsResponse sendGift(@PathVariable("id") Long id) {
+        MallVipBenefitsRecord record = new MallVipBenefitsRecord();
+        record.setId(id);
+        record.setStatus(1);
+        mallVipBenefitsRecordMapper.updateById(record);
+
+        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 da1829f..156b641 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewMallMemberController.java
@@ -420,4 +420,11 @@
         return FebsUtil.view("modules/mallMember/member-coupon-select");
     }
 
+
+    @GetMapping("memberBenefitsList")
+    @RequiresPermissions("memberBenefitsList:view")
+    public String memberBenefitsList() {
+        return FebsUtil.view("modules/mallMember/memberBenefitsList");
+    }
+
 }
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 f23b060..3a9cb20 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -5,7 +5,9 @@
 import cc.mrbird.febs.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -167,6 +169,8 @@
     @TableField(exist = false)
     private Long couponId;
 
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date birthday;
 
     private String realName;
diff --git a/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipBenefitsController.java b/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipBenefitsController.java
index c4fa3ad..6e4c92e 100644
--- a/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipBenefitsController.java
+++ b/src/main/java/cc/mrbird/febs/vip/controller/AdminMallVipBenefitsController.java
@@ -62,4 +62,5 @@
         mallVipBenefitsService.switchBenefitsShow(id);
         return new FebsResponse().success().data("设置成功");
     }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsRecord.java b/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsRecord.java
index 7f3f1ff..8543b94 100644
--- a/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsRecord.java
+++ b/src/main/java/cc/mrbird/febs/vip/entity/MallVipBenefitsRecord.java
@@ -1,14 +1,28 @@
 package cc.mrbird.febs.vip.entity;
 
 import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
 @Data
 @TableName(value = "mall_vip_benefits_record")
 public class MallVipBenefitsRecord extends BaseEntity {
+
+    @TableField(exist = false)
+    private String memberName;
+
+    @TableField(exist = false)
+    private String memberPhone;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(exist = false)
+    private Date birthday;
 
     private Long memberId ;
     /** 权益名称 */
@@ -20,9 +34,33 @@
     /** 领取数量 */
     private Integer receiveCnt ;
     /** 领取时间 */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date receiveTime ;
     /** 领取类型;2-商品 3-优惠券 */
     private Integer receiveType ;
     /** 领取ID */
     private Long receiveId ;
+
+    private Integer status;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(exist = false)
+    private Date birthdayStart;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(exist = false)
+    private Date birthdayEnd;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(exist = false)
+    private Date receiveStartTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @TableField(exist = false)
+    private Date receiveEndTime;
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/mapper/MallVipBenefitsRecordMapper.java b/src/main/java/cc/mrbird/febs/vip/mapper/MallVipBenefitsRecordMapper.java
index 149aea4..9d99130 100644
--- a/src/main/java/cc/mrbird/febs/vip/mapper/MallVipBenefitsRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/vip/mapper/MallVipBenefitsRecordMapper.java
@@ -2,6 +2,11 @@
 
 import cc.mrbird.febs.vip.entity.MallVipBenefitsRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 
 public interface MallVipBenefitsRecordMapper extends BaseMapper<MallVipBenefitsRecord> {
+
+    IPage<MallVipBenefitsRecord> selectMemberBenefitsRecordInPage(@Param("record") MallVipBenefitsRecord record, Page<MallVipBenefitsRecord> page);
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java b/src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java
index 764ea68..38123c4 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java
+++ b/src/main/java/cc/mrbird/febs/vip/service/IMallVipBenefitsService.java
@@ -1,7 +1,10 @@
 package cc.mrbird.febs.vip.service;
 
 import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.vo.MallDataVo;
 import cc.mrbird.febs.vip.entity.MallVipBenefits;
+import cc.mrbird.febs.vip.entity.MallVipBenefitsRecord;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -24,4 +27,6 @@
     void switchBenefitsShow(Long id);
 
     Map<String, Object> birthdayEvent();
+
+    IPage<MallVipBenefitsRecord> findVipBenefitsInPage(MallVipBenefitsRecord record, QueryRequest request);
 }
diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
index 60447a8..d4b1453 100644
--- a/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/vip/service/impl/MallVipBenefitsServiceImpl.java
@@ -314,8 +314,40 @@
             return new HashMap<>();
         }
 
+        List<String> ids = new ArrayList<>();
+        benefits.forEach(item -> {
+            ids.addAll(item.getDetails().stream().filter(detail -> detail.getLinkType() == 2 || detail.getLinkType() == 3).map(MallVipBenefitsDetails::getContent).collect(Collectors.toList()));
+        });
+
+        LambdaQueryWrapper<MallVipBenefitsRecord> recordQuery = new LambdaQueryWrapper<>();
+        recordQuery.eq(MallVipBenefitsRecord::getReceiveId, ids)
+                .ge(MallVipBenefitsRecord::getReceiveTime, DateUtil.beginOfDay(new Date()))
+                .le(MallVipBenefitsRecord::getReceiveTime, DateUtil.endOfDay(new Date()));
+        List<MallVipBenefitsRecord> hasRecieveList = mallVipBenefitsRecordMapper.selectList(recordQuery);
+
         Map<String, Object> map = new HashMap<>();
-        map.put("benefit", benefits.get(0));
+        if (CollUtil.isEmpty(hasRecieveList)) {
+            map.put("benefit", benefits.get(0));
+            return map;
+        }
+
+        List<Long> hasIds = hasRecieveList.stream().map(MallVipBenefitsRecord::getReceiveId).collect(Collectors.toList());
+        List<MallVipBenefits> collect1 = benefits.stream().peek(item -> {
+            List<MallVipBenefitsDetails> collect = item.getDetails().stream().filter(detail -> hasIds.contains(Long.parseLong(detail.getContent()))).collect(Collectors.toList());
+            item.setDetails(collect);
+        }).filter(item -> CollUtil.isNotEmpty(item.getDetails())).collect(Collectors.toList());
+
+        if (CollUtil.isEmpty(collect1)) {
+            return map;
+        }
+
+        map.put("benefit", collect1.get(0));
         return map;
     }
+
+    @Override
+    public IPage<MallVipBenefitsRecord> findVipBenefitsInPage(MallVipBenefitsRecord record, QueryRequest request) {
+        Page<MallVipBenefitsRecord> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return mallVipBenefitsRecordMapper.selectMemberBenefitsRecordInPage(record, page);
+    }
 }
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 37a2332..91ea9a7 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -11,6 +11,9 @@
         left join mall_vip_config vipConfig on m.level = vipConfig.code
         <where>
             <if test="record != null" >
+                <if test="record.birthday!=null">
+                    and m.birthday = #{record.birthday}
+                </if>
                 <if test="record.name!=null and record.name!=''">
                     and m.name like concat('%',  #{record.name},'%')
                 </if>
diff --git a/src/main/resources/mapper/modules/MallVipBenefitsRecordMapper.xml b/src/main/resources/mapper/modules/MallVipBenefitsRecordMapper.xml
new file mode 100644
index 0000000..da01bcf
--- /dev/null
+++ b/src/main/resources/mapper/modules/MallVipBenefitsRecordMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cc.mrbird.febs.vip.mapper.MallVipBenefitsRecordMapper">
+
+    <select id="selectMemberBenefitsRecordInPage" resultType="cc.mrbird.febs.vip.entity.MallVipBenefitsRecord">
+		select
+			mallMember.name memberName
+			,mallMember.phone memberPhone
+			,record.*
+		from mall_vip_benefits_record record
+			inner join mall_member mallMember on record.member_id = mallMember.ID
+		<where>
+			1=1
+			<if test="record.memberPhone != null and record.memberPhone != ''">
+				and mallMember.phone = #{record.memberPhone}
+			</if>
+			<if test="record.status != null">
+				and record.status = #{record.status}
+			</if>
+			<if test="record.birthdayStart != null">
+				and date_format(mallMember.birthday, '%Y-%m-%d') >= date_format(#{record.birthdayStart}, '%Y-%m-%d')
+			</if>
+			<if test="record.birthdayEnd != null">
+				and date_format(mallMember.birthday, '%Y-%m-%d') &lt;= date_format(#{record.birthdayEnd}, '%Y-%m-%d')
+			</if>
+			<if test="record.receiveStartTime != null">
+				and date_format(mallMember.receiveTime, '%Y-%m-%d') >= date_format(#{record.receiveStartTime}, '%Y-%m-%d')
+			</if>
+			<if test="record.receiveEndTime != null">
+				and date_format(mallMember.receiveTime, '%Y-%m-%d') &lt;= date_format(#{record.receiveEndTime}, '%Y-%m-%d')
+			</if>
+		</where>
+	</select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallVipConfigMapper.xml b/src/main/resources/mapper/modules/MallVipConfigMapper.xml
index 6d9609d..a5a4069 100644
--- a/src/main/resources/mapper/modules/MallVipConfigMapper.xml
+++ b/src/main/resources/mapper/modules/MallVipConfigMapper.xml
@@ -26,6 +26,9 @@
 
             <collection property="details" ofType="cc.mrbird.febs.vip.entity.MallVipBenefitsDetails">
                 <id property="id" column="d_id" />
+                <id property="content" column="d_content" />
+                <id property="linkType" column="d_link_type" />
+                <id property="isClick" column="d_is_click" />
             </collection>
         </collection>
     </resultMap>
@@ -58,6 +61,10 @@
              ,benefits.score_multiple
              ,benefits.gain_type
              ,benefits.type c_type
+             ,details.id d_id
+             ,details.content d_content
+             ,details.link_type d_link_type
+             ,details.is_click d_is_click
         from mall_vip_config config
                  inner join mall_vip_config_benefits configBenefits on config.id=configBenefits.config_id
                  inner join mall_vip_benefits benefits on configBenefits.benefits_id=benefits.id
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 f2b2154..2c07876 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -29,19 +29,13 @@
                                             </select>
                                         </div>
                                     </div>
-<!--                                    <div class="layui-inline">-->
-<!--                                        <label class="layui-form-label layui-form-label-sm">会员类型</label>-->
-<!--                                        <div class="layui-input-inline">-->
-<!--                                            <select name="level">-->
-<!--                                                <option value="">请选择</option>-->
-<!--                                                <option value="FIRST_LEVEL">普通会员</option>-->
-<!--                                                <option value="SECOND_LEVEL">一星</option>-->
-<!--                                                <option value="THIRD_LEVEL">二星</option>-->
-<!--                                                <option value="FOUR_LEVEL">三星</option>-->
-<!--                                                <option value="FIFTH_LEVEL">四星</option>-->
-<!--                                            </select>-->
-<!--                                        </div>-->
-<!--                                    </div>-->
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">会员生日</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" name="birthday" id="febs-member-benefits-list-birthday-start" lay-verify="date"
+                                                   placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
                                 </div>
                             </div>
                             <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
@@ -118,7 +112,7 @@
 <!-- 表格操作栏 end -->
 <script data-th-inline="none" type="text/javascript">
     // 引入组件并初始化
-    layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+    layui.use([ 'jquery', 'form', 'table', 'febs', 'laydate'], function () {
         var $ = layui.jquery,
             febs = layui.febs,
             form = layui.form,
@@ -128,9 +122,14 @@
             $reset = $view.find('#reset'),
             $searchForm = $view.find('form'),
             sortObject = {field: 'phone', type: null},
+            laydate = layui.laydate,
             tableIns;
 
         form.render();
+
+        laydate.render({
+            elem: '#febs-member-benefits-list-birthday-start'
+        });
 
         // 表格初始化
         initTable();
@@ -286,6 +285,7 @@
                     {type: 'checkbox'},
                     {field: 'phone', title: '手机号码', minWidth: 150,align:'left'},
                     {field: 'name', title: '用户昵称', minWidth: 100,align:'left'},
+                    {field: 'birthday', title: '会员生日', minWidth: 100,align:'left'},
                     {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'},
                     {field: 'balance', title: '余额', minWidth: 100,align:'left'},
                     // {field: 'score', title: '赠送积分', minWidth: 100,align:'left'},
@@ -477,6 +477,7 @@
                 name: $searchForm.find('input[name="name"]').val().trim(),
                 account: $searchForm.find('input[name="account"]').val().trim(),
                 level: $searchForm.find("select[name='level']").val(),
+                birthday: $searchForm.find("input[name='birthday']").val(),
                 // level: $searchForm.find("select[name='level']").val(),
             };
         }
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/memberBenefitsList.html b/src/main/resources/templates/febs/views/modules/mallMember/memberBenefitsList.html
new file mode 100644
index 0000000..41b5ab6
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/mallMember/memberBenefitsList.html
@@ -0,0 +1,207 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-member-benefits-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 layui-form-label-sm">用户昵称</label>-->
+<!--                                        <div class="layui-input-inline">-->
+<!--                                            <input type="text" placeholder="用户昵称" name="memberName" autocomplete="off" class="layui-input">-->
+<!--                                        </div>-->
+<!--                                    </div>-->
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">手机号码</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" placeholder="手机号码" name="memberPhone" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">是否赠送</label>
+                                        <div class="layui-input-inline">
+                                            <select name="status">
+                                                <option value="">请选择</option>
+                                                <option value="1">已赠送</option>
+                                                <option value="2">未赠送</option>
+                                            </select>
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">会员生日</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" name="birthdayStart" id="febs-member-benefits-list-birthday-start" lay-verify="date"
+                                                   placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
+                                        </div>
+                                        <div class="layui-input-inline">
+                                            <input type="text" name="birthdayEnd" id="febs-member-benefits-list-birthday-end" lay-verify="date"
+                                                   placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                    <div class="layui-inline">
+                                        <label class="layui-form-label layui-form-label-sm">领取时间</label>
+                                        <div class="layui-input-inline">
+                                            <input type="text" name="receiveStartTime" id="febs-member-benefits-list-start" lay-verify="date"
+                                                   placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
+                                        </div>
+                                        <div class="layui-input-inline">
+                                            <input type="text" name="receiveEndTime" id="febs-member-benefits-list-end" lay-verify="date"
+                                                   placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
+                                        </div>
+                                    </div>
+
+                                </div>
+                            </div>
+                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+                                    <i class="layui-icon">&#xe848;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+                                    <i class="layui-icon">&#xe79b;</i>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                    <table lay-filter="memberBenefitsTable" lay-data="{id: 'memberBenefitsTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+    // 引入组件并初始化
+    layui.use([ 'jquery', 'form', 'table', 'febs','laydate'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            $view = $('#febs-member-benefits-list'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: '', type: null},
+            laydate = layui.laydate,
+            tableIns;
+
+        //日期范围
+        laydate.render({
+            elem: '#febs-member-benefits-list-start'
+        });
+        laydate.render({
+            elem: '#febs-member-benefits-list-end'
+        });
+        laydate.render({
+            elem: '#febs-member-benefits-list-birthday-start'
+        });
+
+        laydate.render({
+            elem: '#febs-member-benefits-list-birthday-end'
+        });
+
+        form.render();
+
+        // 表格初始化
+        initTable();
+
+        // 初始化表格操作栏各个按钮功能
+        table.on('tool(memberBenefitsTable)', function (obj) {
+            var data = obj.data,
+                layEvent = obj.event;
+
+            if (layEvent === 'sendGift') {
+                febs.post(ctx + 'admin/mallMember/sendGift/' + data.id, null, function () {
+                    febs.alert.success('操作成功');
+                    $query.click();
+                });
+            }
+        });
+
+        // 查询按钮
+        $query.on('click', function () {
+            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+            tableIns.reload({where: params, page: {curr: 1}});
+        });
+
+        // 刷新按钮
+        $reset.on('click', function () {
+            $searchForm[0].reset();
+            sortObject.type = 'null';
+            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+        });
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'memberBenefitsTable',
+                url: ctx + 'admin/mallMember/findMemberBenefitsInPage',
+                totalRow : true,
+                cols: [[
+                    {field: 'memberName', title: '会员名称', minWidth: 100,align:'left'},
+                    {field: 'memberPhone', title: '手机号码', minWidth: 150,align:'left'},
+                    {field: 'benefitsName', title: '权益', minWidth: 150,align:'left'},
+                    {field: 'benefitsType', title: '权益类型',
+                        templet: function (d) {
+                            if (d.benefitsType === 1) {
+                                return '<span>会员日</span>'
+                            } else if (d.benefitsType === 2) {
+                                return '<span>生日</span>'
+                            } else {
+                                return '<span>其他</span>'
+                            }
+                        }, minWidth: 80,align:'center'},
+                    {field: 'receiveName', title: '领取名称', minWidth: 150,align:'left'},
+                    {field: 'receiveCnt', title: '领取数量', minWidth: 50,align:'left'},
+                    {field: 'receiveTime', title: '领取时间', minWidth: 200,align:'left'},
+                    {field: 'receiveType', title: '领取类型',
+                        templet: function (d) {
+                            if (d.receiveType === 2) {
+                                return '商品';
+                            } else if(d.receiveType === 3) {
+                                return '优惠券'
+                            } else {
+                                return '-';
+                            }
+                        }, minWidth: 80,align:'center'},
+                    {field: 'receiveType', title: '赠送状态',
+                        templet: function (d) {
+                            if (d.status === 1) {
+                                return '已赠送';
+                            } else if(d.status === 2) {
+                                return '未赠送'
+                            } else {
+                                return '-';
+                            }
+                        }, minWidth: 80,align:'center'},
+                    {title: '操作',
+                        templet: function (d) {
+                            if (d.receiveType == 2 && d.status == 2) {
+                                return  ''
+                                    +'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sendGift">赠送</button>'
+                            } else {
+                                return ''
+                            }
+                        },minWidth: 100,align:'center'}
+                ]]
+            });
+        }
+
+        // 获取查询参数
+        function getQueryParams() {
+            return {
+                receiveStartTime: $searchForm.find('input[name="receiveStartTime"]').val().trim(),
+                receiveEndTime: $searchForm.find('input[name="receiveEndTime"]').val().trim(),
+                birthdayStart: $searchForm.find('input[name="birthdayStart"]').val().trim(),
+                birthdayEnd: $searchForm.find('input[name="birthdayEnd"]').val().trim(),
+                // memberName: $searchForm.find('input[name="memberName"]').val().trim(),
+                memberPhone: $searchForm.find('input[name="memberPhone"]').val().trim(),
+                status: $searchForm.find("select[name='status']").val(),
+            };
+        }
+
+    })
+</script>
\ No newline at end of file

--
Gitblit v1.9.1