Browse Source

领取用户列表

plf 3 years ago
parent
commit
a47f4c9bb9

+ 20 - 0
src/main/java/com/caimei/modules/coupon/dao/CmCouponClubDao.java

@@ -0,0 +1,20 @@
+package com.caimei.modules.coupon.dao;
+
+import com.thinkgem.jeesite.common.persistence.CrudDao;
+import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
+import com.caimei.modules.coupon.entity.CmCouponClub;
+
+import java.util.List;
+
+/**
+ * 优惠券管理DAO接口
+ * @author plf
+ * @version 2021-08-10
+ */
+@MyBatisDao
+public interface CmCouponClubDao extends CrudDao<CmCouponClub> {
+
+    List<CmCouponClub> receivingUserList(CmCouponClub cmCouponClub);
+
+    List<CmCouponClub> findClubCoupon(CmCouponClub couponClub);
+}

+ 8 - 7
src/main/java/com/caimei/modules/coupon/entity/CmCoupon.java

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.thinkgem.jeesite.common.persistence.DataEntity;
 import org.hibernate.validator.constraints.Length;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -18,11 +19,11 @@ public class CmCoupon extends DataEntity<CmCoupon> {
 
     private static final long serialVersionUID = 1L;
     private String name;        // 活动主题
-    private String couponAmount;        // 优惠券金额(面值)
-    private String touchPrice;        // 优惠满减条件金额
+    private BigDecimal couponAmount;        // 优惠券金额(面值)
+    private BigDecimal touchPrice;        // 优惠满减条件金额
     private Date startDate;        // 使用开始时间(有效期)
     private Date endDate;        // 使用结束时间(有效期)
-    private String status;        // 状态 0未生效 1已生效 2已关闭
+    private String status;        // 状态 0未生效 1已生效 2已关闭 3已失效
     private Integer couponType;        // 劵类型 0活动券 1品类券 2用户专享券 3店铺券 4新用户券
     private Integer userId;     //机构用户id(用户专享券有效)
     private String productType;        // 优惠商品:1全商城商品 2指定商品(活动券有效)
@@ -57,19 +58,19 @@ public class CmCoupon extends DataEntity<CmCoupon> {
         this.name = name;
     }
 
-    public String getCouponAmount() {
+    public BigDecimal getCouponAmount() {
         return couponAmount;
     }
 
-    public void setCouponAmount(String couponAmount) {
+    public void setCouponAmount(BigDecimal couponAmount) {
         this.couponAmount = couponAmount;
     }
 
-    public String getTouchPrice() {
+    public BigDecimal getTouchPrice() {
         return touchPrice;
     }
 
-    public void setTouchPrice(String touchPrice) {
+    public void setTouchPrice(BigDecimal touchPrice) {
         this.touchPrice = touchPrice;
     }
 

+ 110 - 30
src/main/java/com/caimei/modules/coupon/entity/CmCouponClub.java

@@ -1,30 +1,43 @@
 package com.caimei.modules.coupon.entity;
 
-import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.thinkgem.jeesite.common.persistence.DataEntity;
+import org.hibernate.validator.constraints.Length;
+
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
- * Description
+ * 优惠券管理Entity
  *
- * @author : plf
- * @date : 2021/8/5
+ * @author plf
+ * @version 2021-08-10
  */
-public class CmCouponClub implements Serializable {
-    private Integer id;
-    private Integer userId;     //机构用户Id
-    private Integer couponId;           //优惠券id
-    private String source;          //领取渠道:1小程序 2网站 3订单退回
-    private String status;         //使用状态 1未使用 2已使用
-    private Date createDate;        //领取时间
-    private Date useDate;           //使用时间
-    private String delFlag;     //删除标记 0否 其余是
+public class CmCouponClub extends DataEntity<CmCouponClub> {
+
+    private static final long serialVersionUID = 1L;
+    private Integer userId;        // 机构用户Id
+    private Integer couponId;        // 优惠券id
+    private Integer orderId;        // 订单id
+    private String source;        // 领取渠道:1小程序 2网站 3订单退回
+    private String status;        // 使用状态 1未使用 2已使用
+    private Date useDate;        // 使用时间
+    private String clubName;    //机构名称
+    private Integer couponType;        // 劵类型 0活动券 1品类券 2用户专享券 3店铺券 4新用户券
+    private Integer num;        //可用券的数量
+    private BigDecimal couponAmount;        // 优惠券金额(面值)
+    private BigDecimal touchPrice;        // 优惠满减条件金额
+    private String couponStatus;    // 状态 0未生效 1已生效 2已关闭 3已失效
+    private Date startDate;        // 使用开始时间(有效期)
+    private Date endDate;        // 使用结束时间(有效期)
+    private String orderNo;     //订单编号
 
-    public Integer getId() {
-        return id;
+    public CmCouponClub() {
+        super();
     }
 
-    public void setId(Integer id) {
-        this.id = id;
+    public CmCouponClub(String id) {
+        super(id);
     }
 
     public Integer getUserId() {
@@ -43,6 +56,15 @@ public class CmCouponClub implements Serializable {
         this.couponId = couponId;
     }
 
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    @Length(min = 0, max = 1, message = "领取渠道:1小程序 2网站 3订单退回长度必须介于 0 和 1 之间")
     public String getSource() {
         return source;
     }
@@ -51,6 +73,7 @@ public class CmCouponClub implements Serializable {
         this.source = source;
     }
 
+    @Length(min = 0, max = 10, message = "使用状态 1未使用 2已使用长度必须介于 0 和 10 之间")
     public String getStatus() {
         return status;
     }
@@ -59,14 +82,7 @@ public class CmCouponClub implements Serializable {
         this.status = status;
     }
 
-    public Date getCreateDate() {
-        return createDate;
-    }
-
-    public void setCreateDate(Date createDate) {
-        this.createDate = createDate;
-    }
-
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     public Date getUseDate() {
         return useDate;
     }
@@ -75,11 +91,75 @@ public class CmCouponClub implements Serializable {
         this.useDate = useDate;
     }
 
-    public String getDelFlag() {
-        return delFlag;
+    public String getClubName() {
+        return clubName;
+    }
+
+    public void setClubName(String clubName) {
+        this.clubName = clubName;
+    }
+
+    public Integer getCouponType() {
+        return couponType;
+    }
+
+    public void setCouponType(Integer couponType) {
+        this.couponType = couponType;
+    }
+
+    public Integer getNum() {
+        return num;
+    }
+
+    public void setNum(Integer num) {
+        this.num = num;
+    }
+
+    public BigDecimal getCouponAmount() {
+        return couponAmount;
+    }
+
+    public void setCouponAmount(BigDecimal couponAmount) {
+        this.couponAmount = couponAmount;
+    }
+
+    public BigDecimal getTouchPrice() {
+        return touchPrice;
+    }
+
+    public void setTouchPrice(BigDecimal touchPrice) {
+        this.touchPrice = touchPrice;
+    }
+
+    public String getCouponStatus() {
+        return couponStatus;
+    }
+
+    public void setCouponStatus(String couponStatus) {
+        this.couponStatus = couponStatus;
+    }
+
+    public Date getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(Date startDate) {
+        this.startDate = startDate;
+    }
+
+    public Date getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(Date endDate) {
+        this.endDate = endDate;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
     }
 
-    public void setDelFlag(String delFlag) {
-        this.delFlag = delFlag;
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
     }
-}
+}

+ 70 - 0
src/main/java/com/caimei/modules/coupon/service/CmCouponClubService.java

@@ -0,0 +1,70 @@
+package com.caimei.modules.coupon.service;
+
+import com.caimei.modules.coupon.dao.CmCouponClubDao;
+import com.caimei.modules.coupon.entity.CmCouponClub;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.service.CrudService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 优惠券管理Service
+ *
+ * @author plf
+ * @version 2021-08-10
+ */
+@Service
+@Transactional(readOnly = true)
+public class CmCouponClubService extends CrudService<CmCouponClubDao, CmCouponClub> {
+    @Autowired
+    private CmCouponClubDao cmCouponClubDao;
+
+    public CmCouponClub get(String id) {
+        return super.get(id);
+    }
+
+    public List<CmCouponClub> findList(CmCouponClub cmCouponClub) {
+        return super.findList(cmCouponClub);
+    }
+
+    public Page<CmCouponClub> findPage(Page<CmCouponClub> page, CmCouponClub cmCouponClub) {
+        return super.findPage(page, cmCouponClub);
+    }
+
+    @Transactional(readOnly = false)
+    public void save(CmCouponClub cmCouponClub) {
+        super.save(cmCouponClub);
+    }
+
+    public Page<CmCouponClub> receivingUserList(Page<CmCouponClub> cmCouponClubPage, CmCouponClub cmCouponClub) {
+        cmCouponClub.setPage(cmCouponClubPage);
+        List<CmCouponClub> couponClubList = cmCouponClubDao.receivingUserList(cmCouponClub);
+        cmCouponClubPage.setList(couponClubList);
+        return cmCouponClubPage;
+    }
+
+    public Page<CmCouponClub> findCouponDetails(Page<CmCouponClub> couponClubPage, CmCouponClub cmCouponClub) {
+        cmCouponClub.setPage(couponClubPage);
+        List<CmCouponClub> couponList = cmCouponClubDao.findClubCoupon(cmCouponClub);
+        if (couponList != null && couponList.size() > 0) {
+            Date date = new Date();
+            couponList.forEach(couponClub -> {
+                if ("2".equals(couponClub.getCouponStatus())) {
+                    if (date.compareTo(couponClub.getStartDate()) < 0) {
+                        couponClub.setCouponStatus("0");
+                    } else if (date.compareTo(couponClub.getEndDate()) > 0) {
+                        couponClub.setCouponStatus("3");
+                    } else {
+                        couponClub.setCouponStatus("1");
+                    }
+                }
+            });
+        }
+        couponClubPage.setList(couponList);
+        return couponClubPage;
+    }
+}

+ 3 - 0
src/main/java/com/caimei/modules/coupon/service/CmCouponService.java

@@ -103,6 +103,9 @@ public class CmCouponService extends CrudService<CmCouponDao, CmCoupon> {
         Date date = new Date();
         cmCoupon.setCreateDate(date);
         setCouponStatus(cmCoupon, date);
+        if (StringUtils.isBlank(cmCoupon.getCouponsMode())) {
+            cmCoupon.setCouponsMode("0");
+        }
         super.save(cmCoupon);
         List<Integer> associateIds = cmCouponDao.findByCouponId(cmCoupon.getId());
         if (0 == cmCoupon.getCouponType()) {

+ 72 - 0
src/main/java/com/caimei/modules/coupon/web/CmCouponClubController.java

@@ -0,0 +1,72 @@
+package com.caimei.modules.coupon.web;
+
+import com.caimei.modules.coupon.entity.CmCouponClub;
+import com.caimei.modules.coupon.service.CmCouponClubService;
+import com.thinkgem.jeesite.common.persistence.Page;
+import com.thinkgem.jeesite.common.utils.StringUtils;
+import com.thinkgem.jeesite.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 优惠券管理Controller
+ *
+ * @author plf
+ * @version 2021-08-10
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/coupon/cmCouponClub")
+public class CmCouponClubController extends BaseController {
+
+    @Autowired
+    private CmCouponClubService cmCouponClubService;
+
+    @ModelAttribute
+    public CmCouponClub get(@RequestParam(required = false) String id) {
+        CmCouponClub entity = null;
+        if (StringUtils.isNotBlank(id)) {
+            entity = cmCouponClubService.get(id);
+        }
+        if (entity == null) {
+            entity = new CmCouponClub();
+        }
+        return entity;
+    }
+
+    @RequestMapping(value = {"list", ""})
+    public String list(CmCouponClub cmCouponClub, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<CmCouponClub> page = cmCouponClubService.findPage(new Page<CmCouponClub>(request, response), cmCouponClub);
+        model.addAttribute("page", page);
+        model.addAttribute("cmCouponClub", cmCouponClub);
+        return "modules/coupon/cmCouponClubList";
+    }
+
+    /**
+     * 领取用户列表
+     */
+    @RequestMapping("userList")
+    public String receivingUserList(CmCouponClub cmCouponClub, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<CmCouponClub> page = cmCouponClubService.receivingUserList(new Page<CmCouponClub>(request, response), cmCouponClub);
+        model.addAttribute("page", page);
+        return "modules/coupon/userCouponList";
+    }
+
+    /**
+     * 机构用户下优惠券
+     */
+    @RequestMapping("couponDetails")
+    public String clubCouponDetails(CmCouponClub cmCouponClub, HttpServletRequest request, HttpServletResponse response, Model model) {
+        Page<CmCouponClub> page = cmCouponClubService.findCouponDetails(new Page<CmCouponClub>(request, response), cmCouponClub);
+        model.addAttribute("page", page);
+        model.addAttribute("cmCouponClub", cmCouponClub);
+        return "modules/coupon/clubCouponDetails";
+    }
+
+}

+ 188 - 0
src/main/resources/mappings/modules/coupon/CmCouponClubMapper.xml

@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.modules.coupon.dao.CmCouponClubDao">
+    
+	<sql id="cmCouponClubColumns">
+		a.id AS "id",
+		a.userId AS "userId",
+		a.couponId AS "couponId",
+		a.orderId AS "orderId",
+		a.source AS "source",
+		a.status AS "status",
+		a.createDate AS "createDate",
+		a.useDate AS "useDate",
+		a.delFlag AS "delFlag",
+		u.name AS "clubName"
+	</sql>
+	
+	<sql id="cmCouponClubJoins">
+		LEFT JOIN user u ON u.userID = a.userId
+	</sql>
+    
+	<select id="get" resultType="CmCouponClub">
+		SELECT 
+			<include refid="cmCouponClubColumns"/>
+		FROM cm_coupon_club a
+		<include refid="cmCouponClubJoins"/>
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="CmCouponClub">
+		SELECT 
+			<include refid="cmCouponClubColumns"/>
+		FROM cm_coupon_club a
+		<include refid="cmCouponClubJoins"/>
+		<where>
+			<if test="couponId != null">
+				AND a.couponId = #{couponId}
+			</if>
+			<if test="userId != null">
+				AND a.userId = #{userId}
+			</if>
+			<if test="source != null and source != ''">
+				AND a.source = #{source}
+			</if>
+			<if test="status != null and status != ''">
+				AND a.status = #{status}
+			</if>
+			<if test="createDate != null and createDate != ''">
+				AND a.createDate > #{createDate}
+			</if>
+			<if test="useDate != null and useDate != ''">
+				AND a.useDate > #{useDate}
+			</if>
+			<if test="clubName != null and clubName != ''">
+				AND u.name LIKE CONCAT('%',#{clubName},'%')
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.createDate DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<select id="findAllList" resultType="CmCouponClub">
+		SELECT 
+			<include refid="cmCouponClubColumns"/>
+		FROM cm_coupon_club a
+		<include refid="cmCouponClubJoins"/>
+		<where>
+			
+		</where>		
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+			</otherwise>
+		</choose>
+	</select>
+	
+	<insert id="insert" parameterType="CmCouponClub"  keyProperty="id" useGeneratedKeys="true">
+		INSERT INTO cm_coupon_club(
+			userId,
+			couponId,
+			orderId,
+			source,
+			status,
+			createDate,
+			useDate,
+			delFlag
+		) VALUES (
+			#{userId},
+			#{couponId},
+			#{orderId},
+			#{source},
+			#{status},
+			#{createDate},
+			#{useDate},
+			#{delFlag}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE cm_coupon_club SET 	
+			userId = #{userId},
+			couponId = #{couponId},
+			orderId = #{orderId},
+			source = #{source},
+			status = #{status},
+			createDate = #{createDate},
+			useDate = #{useDate},
+			delFlag = #{delFlag}
+		WHERE id = #{id}
+	</update>
+
+	<select id="receivingUserList" resultType="com.caimei.modules.coupon.entity.CmCouponClub">
+		SELECT
+		  c.userID AS "userId",
+		  c.name AS "clubName",
+		  COUNT(cc.id) AS "num"
+		FROM
+		  club c
+		  LEFT JOIN cm_coupon_club ccc ON c.userID = ccc.userId
+		  AND ccc.delFlag = 0
+		  AND ccc.status = 1
+		  LEFT JOIN cm_coupon cc ON ccc.couponId = cc.id
+		  AND cc.delFlag = 0
+		  AND NOW() BETWEEN cc.startDate
+		  AND cc.endDate
+		  AND cc.status != 2
+		WHERE
+		  c.status IN (1, 90)
+		  <if test="clubName != null and clubName != ''">
+			  AND c.name LIKE CONCAT('%',#{clubName},'%')
+		  </if>
+		GROUP BY
+		  c.userID
+		ORDER BY
+		  COUNT(cc.id) DESC
+	</select>
+
+	<select id="findClubCoupon" resultType="com.caimei.modules.coupon.entity.CmCouponClub">
+		SELECT
+			<include refid="cmCouponClubColumns"/>,
+			cc.couponAmount,
+			cc.touchPrice,
+			cc.couponType,
+			cc.status AS "couponStatus",
+			cc.startDate,
+			cc.endDate,
+			co.orderNo
+		FROM
+		  cm_coupon_club a
+			<include refid="cmCouponClubJoins"/>
+		  LEFT JOIN cm_coupon cc ON a.couponId = cc.id
+		  LEFT JOIN cm_order co ON co.orderID = a.orderId
+		WHERE
+		  a.delFlag = 0
+		  AND cc.delFlag = 0
+		  AND a.userId = #{userId}
+		<if test="couponType != null and couponType != ''">
+			  AND cc.couponType = #{couponType}
+		</if>
+		<if test="status != null and status != ''">
+			AND a.status = #{status}
+		</if>
+		<if test='couponStatus == "0"'>
+			AND cc.startDate <![CDATA[ > ]]> NOW()
+		</if>
+		<if test='couponStatus == "1"'>
+			AND cc.startDate <![CDATA[ <= ]]> NOW()
+			AND cc.endDate <![CDATA[ >= ]]> NOW()
+		</if>
+		<if test='couponStatus == "2"'>
+			AND cc.status = '2'
+		</if>
+		<if test='couponStatus == "3"'>
+			AND cc.endDate <![CDATA[ < ]]> NOW()
+		</if>
+		ORDER BY
+		  a.createDate DESC
+	</select>
+	
+</mapper>

+ 1 - 0
src/main/resources/mappings/modules/coupon/CmCouponMapper.xml

@@ -257,6 +257,7 @@
 		SELECT
 		  `userId`,
 		  `couponId`,
+		  orderId,
 		  `source`,
 		  `status`,
 		  `createDate`,

+ 128 - 0
src/main/webapp/WEB-INF/views/modules/coupon/clubCouponDetails.jsp

@@ -0,0 +1,128 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+    <title>优惠券详情</title>
+    <meta name="decorator" content="default"/>
+    <style type="text/css">
+        .table th{text-align: center;}
+        .table td{text-align: center;}
+    </style>
+    <script type="text/javascript">
+        $(document).ready(function() {
+
+        });
+        function page(n,s){
+            $("#pageNo").val(n);
+            $("#pageSize").val(s);
+            $("#searchForm").submit();
+            return false;
+        }
+    </script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/coupon/cmCouponClub/userList">领取用户列表</a></li>
+    <li class="active"><a href="${ctx}/coupon/cmCouponClub/couponDetails?userId=${cmCouponClub.userId}&num=${cmCouponClub.num}&clubName=${cmCouponClub.clubName}">优惠券详情</a></li>
+</ul>
+<form:form id="searchForm" modelAttribute="cmCouponClub" action="${ctx}/coupon/cmCouponClub/couponDetails" method="post" class="breadcrumb form-search">
+    <input type="hidden" name="userId" value="${cmCouponClub.userId}">
+    <input type="hidden" name="num" value="${cmCouponClub.num}">
+    <input type="hidden" name="clubName" value="${cmCouponClub.clubName}">
+    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+    <div class="ul-form">
+        <label>机构名称:</label>
+            ${cmCouponClub.clubName}
+        <label style="margin-left: 80px">剩余优惠券数量:</label>
+            ${cmCouponClub.num}
+        <br>
+        <label>优惠券类型:</label>
+        <form:select path="couponType" class="input-medium">
+            <form:option value="" label="全部"/>
+            <form:option value="0" label="活动券"/>
+            <form:option value="1" label="品类券"/>
+            <form:option value="2" label="用户专享券"/>
+            <form:option value="3" label="店铺券"/>
+            <form:option value="4" label="新用户券"/>
+        </form:select>
+        <label>优惠状态:</label>
+        <form:select path="couponStatus" class="input-medium">
+            <form:option value="" label="全部"/>
+            <form:option value="1" label="已生效"/>
+            <form:option value="2" label="已关闭"/>
+            <form:option value="3" label="已失效"/>
+        </form:select>
+        <label>使用状态:</label>
+        <form:select path="status" class="input-medium">
+            <form:option value="" label="全部"/>
+            <form:option value="1" label="未使用"/>
+            <form:option value="2" label="已使用"/>
+        </form:select>
+        &nbsp;&nbsp;<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+        <div class="clearfix"></div>
+    </div>
+</form:form>
+<sys:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th>优惠券类型</th>
+        <th>优惠券金额</th>
+        <th>优惠条件</th>
+        <th>领取时间</th>
+        <th>优惠状态</th>
+        <th>使用状态</th>
+        <th>使用时间</th>
+        <th>关联订单</th>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${page.list}" var="cmCoupon">
+        <tr>
+            <td>
+                    ${cmCoupon.couponType eq 0 ? "活动券":cmCoupon.couponType eq 1 ? "品类券":cmCoupon.couponType eq 2 ? "用户专享券":cmCoupon.couponType eq 3 ? "店铺券":"新用户券"}
+            </td>
+            <td>
+                    ${cmCoupon.couponAmount}
+            </td>
+            <td>
+                满${cmCoupon.touchPrice}
+            </td>
+            <td>
+                <fmt:formatDate value="${cmCoupon.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+            </td>
+            <td>
+                <c:if test="${cmCoupon.status eq 1}">
+                    <font color="#00CC66">已生效</font>
+                </c:if>
+                <c:if test="${cmCoupon.status eq 2}">
+                    <font color="red">已关闭</font>
+                </c:if>
+                <c:if test="${cmCoupon.status eq 3}">
+                    <font color="#FF6600">已失效</font>
+                </c:if>
+            </td>
+            <td>
+               ${cmCoupon.status eq 1 ? "未使用" : "已使用"}
+            </td>
+            <td>
+                <c:if test="${cmCoupon.status eq 1}">
+                    ----
+                </c:if>
+                <c:if test="${cmCoupon.status eq 2}">
+                    <fmt:formatDate value="${cmCoupon.useDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+                </c:if>
+            </td>
+            <td>
+                <c:if test="${not empty cmCoupon.orderId}">
+                    <a href="${ctx}/order/detail?id=${cmCoupon.orderId}">${cmCoupon.orderNo}(${cmCoupon.orderId})</a>
+                </c:if>
+            </td>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${page}</div>
+</body>
+</html>

+ 112 - 0
src/main/webapp/WEB-INF/views/modules/coupon/cmCouponClubList.jsp

@@ -0,0 +1,112 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+	<title>优惠券管理</title>
+	<meta name="decorator" content="default"/>
+	<style type="text/css">
+		.table th{text-align: center;}
+		.table td{text-align: center;}
+	</style>
+	<script type="text/javascript">
+		$(document).ready(function() {
+			
+		});
+		function page(n,s){
+			$("#pageNo").val(n);
+			$("#pageSize").val(s);
+			$("#searchForm").submit();
+        	return false;
+        }
+	</script>
+</head>
+<body>
+	<ul class="nav nav-tabs">
+		<c:if test="${cmCouponClub.couponType eq 0}">
+			<li><a href="${ctx}/coupon/cmCoupon/list?couponType=0">活动券</a></li>
+		</c:if>
+		<c:if test="${cmCouponClub.couponType eq 1}">
+			<li><a href="${ctx}/coupon/cmCoupon/list?couponType=1">品类券</a></li>
+		</c:if>
+		<c:if test="${cmCouponClub.couponType eq 3}">
+			<li><a href="${ctx}/coupon/cmCoupon/list?couponType=3">店铺券</a></li>
+		</c:if>
+		<c:if test="${cmCouponClub.couponType eq 4}">
+			<li><a href="${ctx}/coupon/cmCoupon/list?couponType=4">新用户券</a></li>
+		</c:if>
+		<li class="active"><a href="${ctx}/coupon/cmCouponClub/list?couponId=${cmCouponClub.couponId}&couponType=${cmCouponClub.couponType}">领取用户列表</a></li>
+	</ul>
+	<form:form id="searchForm" modelAttribute="cmCouponClub" action="${ctx}/coupon/cmCouponClub/" method="post" class="breadcrumb form-search">
+		<input type="hidden" name="couponId" value="${cmCouponClub.couponId}">
+		<input type="hidden" name="couponType" value="${cmCouponClub.couponType}">
+		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+		<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+		<div class="ul-form">
+			 <label>机构名称:</label>
+				<form:input path="clubName" htmlEscape="false" class="input-medium"/>
+			 <label>领取渠道:  :</label>
+				<form:select path="source" class="input-medium">
+					<form:option value="" label="全部"/>
+					<form:option value="1" label="小程序"/>
+					<form:option value="2" label="网站"/>
+					<form:option value="3" label="订单退回"/>
+				</form:select>
+			 <label>使用状态:</label>
+				<form:select path="status" class="input-medium">
+					<form:option value="" label="全部"/>
+					<form:option value="1" label="未使用"/>
+					<form:option value="2" label="已使用"/>
+				</form:select>
+			 <label>领取时间:</label>
+				<input name="createDate" type="text" readonly="readonly" maxlength="20" class="input-medium Wdate"
+					value="<fmt:formatDate value="${cmCouponClub.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+					onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:false});"/>
+			 <label>使用时间:</label>
+				<input name="useDate" type="text" readonly="readonly" maxlength="20" class="input-medium Wdate"
+					value="<fmt:formatDate value="${cmCouponClub.useDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+					onclick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',isShowClear:false});"/>
+			&nbsp;&nbsp;<input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+			<div class="clearfix"></div>
+		</div>
+	</form:form>
+	<sys:message content="${message}"/>
+	<table id="contentTable" class="table table-striped table-bordered table-condensed">
+		<thead>
+			<tr>
+				<th>机构名称</th>
+				<th>领取渠道</th>
+				<th>使用状态</th>
+				<th>领取时间</th>
+				<th>使用时间</th>
+			</tr>
+		</thead>
+		<tbody>
+		<c:forEach items="${page.list}" var="cmCouponClub">
+			<tr>
+				<td>
+					${cmCouponClub.clubName}
+				</td>
+				<td>
+					${cmCouponClub.source eq "1" ? "小程序": cmCouponClub.source eq "2" ? "网站" : "订单退回"}
+				</td>
+				<td>
+					<c:if test="${cmCouponClub.status eq '1'}">
+						<font color="red">未使用</font>
+					</c:if>
+					<c:if test="${cmCouponClub.status eq '2'}">
+						<font color="#00CC66">已使用</font>
+					</c:if>
+				</td>
+				<td>
+					<fmt:formatDate value="${cmCouponClub.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+				<td>
+					<fmt:formatDate value="${cmCouponClub.useDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+				</td>
+			</tr>
+		</c:forEach>
+		</tbody>
+	</table>
+	<div class="pagination">${page}</div>
+</body>
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/coupon/cmCouponList.jsp

@@ -112,7 +112,7 @@
     				<a href="${ctx}/coupon/cmCoupon/form?id=${cmCoupon.id}">编辑</a>
 					<a href="${ctx}/coupon/cmCoupon/close?id=${cmCoupon.id}" onclick="return confirmx('确定关闭该优惠券吗?', this.href)">关闭</a>
 					<a href="${ctx}/coupon/cmCoupon/delete?id=${cmCoupon.id}" onclick="return confirmx('确定删除该优惠券吗?', this.href)">删除</a>
-					<a href="">领取门户</a>
+					<a href="${ctx}/coupon/cmCouponClub/list?couponId=${cmCoupon.id}&couponType=0">领取门户</a>
 				</td>
 			</tr>
 		</c:forEach>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/coupon/couponCategoryList.jsp

@@ -114,7 +114,7 @@
                 <a href="${ctx}/coupon/cmCoupon/form?id=${cmCoupon.id}">编辑</a>
                 <a href="${ctx}/coupon/cmCoupon/close?id=${cmCoupon.id}" onclick="return confirmx('确定关闭该优惠券吗?', this.href)">关闭</a>
                 <a href="${ctx}/coupon/cmCoupon/delete?id=${cmCoupon.id}" onclick="return confirmx('确定删除该优惠券吗?', this.href)">删除</a>
-                <a href="">领取门户</a>
+                <a href="${ctx}/coupon/cmCouponClub/list?couponId=${cmCoupon.id}&couponType=1">领取门户</a>
             </td>
         </tr>
     </c:forEach>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/coupon/couponNewUserList.jsp

@@ -106,7 +106,7 @@
                 <a href="${ctx}/coupon/cmCoupon/form?id=${cmCoupon.id}">编辑</a>
                 <a href="${ctx}/coupon/cmCoupon/close?id=${cmCoupon.id}" onclick="return confirmx('确定关闭该优惠券吗?', this.href)">关闭</a>
                 <a href="${ctx}/coupon/cmCoupon/delete?id=${cmCoupon.id}" onclick="return confirmx('确定删除该优惠券吗?', this.href)">删除</a>
-                <a href="">领取门户</a>
+                <a href="${ctx}/coupon/cmCouponClub/list?couponId=${cmCoupon.id}&couponType=4">领取门户</a>
             </td>
         </tr>
     </c:forEach>

+ 1 - 1
src/main/webapp/WEB-INF/views/modules/coupon/couponShopList.jsp

@@ -120,7 +120,7 @@
                 <a href="${ctx}/coupon/cmCoupon/form?id=${cmCoupon.id}">编辑</a>
                 <a href="${ctx}/coupon/cmCoupon/close?id=${cmCoupon.id}" onclick="return confirmx('确定关闭该优惠券吗?', this.href)">关闭</a>
                 <a href="${ctx}/coupon/cmCoupon/delete?id=${cmCoupon.id}" onclick="return confirmx('确定删除该优惠券吗?', this.href)">删除</a>
-                <a href="">领取门户</a>
+                <a href="${ctx}/coupon/cmCouponClub/list?couponId=${cmCoupon.id}&couponType=3">领取门户</a>
             </td>
         </tr>
     </c:forEach>

+ 68 - 0
src/main/webapp/WEB-INF/views/modules/coupon/userCouponList.jsp

@@ -0,0 +1,68 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+    <title>领取用户列表</title>
+    <meta name="decorator" content="default"/>
+    <style type="text/css">
+        .table th{text-align: center;}
+        .table td{text-align: center;}
+    </style>
+    <script type="text/javascript">
+        $(document).ready(function() {
+
+        });
+        function page(n,s){
+            $("#pageNo").val(n);
+            $("#pageSize").val(s);
+            $("#searchForm").submit();
+            return false;
+        }
+    </script>
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li class="active"><a href="${ctx}/coupon/cmCouponClub/userList">领取用户列表</a></li>
+</ul>
+<form:form id="searchForm" modelAttribute="cmCouponClub" action="${ctx}/coupon/cmCouponClub/userList" method="post" class="breadcrumb form-search">
+    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+    <div class="ul-form">
+        <label>机构名称:</label>
+        <form:input path="clubName" htmlEscape="false" maxlength="20" class="input-medium"/>
+        <input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/>
+        <div class="clearfix"></div>
+    </div>
+</form:form>
+<sys:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed" >
+    <thead>
+    <tr>
+        <th>序号</th>
+        <th>机构名称</th>
+        <th>可用优惠券数量</th>
+        <th>操作</th>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${page.list}" var="club" varStatus="index">
+        <tr>
+            <td>
+                    ${(page.pageNo-1)*page.pageSize+index.index+1}
+            </td>
+            <td>
+                    ${club.clubName}
+            </td>
+            <td>
+                    ${club.num}
+            </td>
+            <td>
+                <a href="${ctx}/coupon/cmCouponClub/couponDetails?userId=${club.userId}&num=${club.num}&clubName=${club.clubName}" >查看详情</a>
+            </td>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${page}</div>
+</body>
+</html>