.用户需求
优惠券功能有:
1.后台可以设置优惠券和查看已发出优惠券的状态
2.平台自动给新用户发放优惠劵,或者手动给某些用户发放优惠券
3.用户在小程序中手动领取优惠券
4.用户中心新增“优惠券”模块,查看所有优惠券
5.下单时使用优惠券

2.axure原型设计
使用ie浏览器打开,打开后的html文件目录结构如下:

微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)_程序员


 

3.数据库设计
优惠劵2张表的表结构如下:

CREATE TABLE `coupon_rules` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '优惠券主键',
  `gmt_create` datetime NOT NULL COMMENT '优惠券创建时间',
  `gmt_modified` datetime DEFAULT NULL COMMENT '优惠券修改时间',
  `creator` int(11) DEFAULT NULL COMMENT '创建人',
  `partner_id` int(11) DEFAULT NULL COMMENT '关联运营商id',
  `coupon_name` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '优惠券名称',
  `coupon_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '优惠券金额',
  `grant_rules` int(2) NOT NULL COMMENT '发放规则',
  `use_start_time` datetime DEFAULT NULL COMMENT '使用起始时间',
  `use_end_time` datetime DEFAULT NULL COMMENT '使用结束时间',
  `quantity_ceiling` int(11) DEFAULT NULL COMMENT '数量上限,一般指按订单金额发放,例如某用户在订单满100元发放5元优惠卷,该用户累计发放次数不能超过10次,累计同一优惠券领取超过该值时则不发放,0为不设限',
  `use_conditions` int(2) DEFAULT NULL COMMENT '使用条件:无门槛|满减使用',
  `use_conditions_content` decimal(10,2) DEFAULT '0.00' COMMENT '使用条件补充内容',
  `grant_conditions` int(11) unsigned DEFAULT NULL COMMENT '发放条件,存类目id',
  `order_minimum` decimal(12,4) DEFAULT '0.0000' COMMENT '按照订单金额发放时的最低金额设定',
  `grant_start_time` datetime DEFAULT NULL COMMENT '优惠券发放起始时间',
  `grant_end_time` datetime DEFAULT NULL COMMENT '优惠券发放结束时间',
  `status` int(2) DEFAULT '1' COMMENT '状态,正常1|删除0 ',
  `grant_max_num` int(11) DEFAULT '0' COMMENT '优惠券发放上限',
  `grant_num` int(11) DEFAULT '0' COMMENT '已发放数量',
  `duration` int(11) DEFAULT '30' COMMENT '领取后优惠券的有效天数',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4;


CREATE TABLE `coupon_info` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '优惠券主键',
  `rules_id` int(11) NOT NULL COMMENT '关联优惠券规则主键id',
  `grant_time` datetime DEFAULT NULL COMMENT '优惠券发放时间',
  `status` int(2) NOT NULL DEFAULT '0' COMMENT '优惠券状态,0未使用|1已使用|2已失效',
  `member_id` int(11) DEFAULT NULL COMMENT '关联消费者id',
  `order_id` int(11) DEFAULT NULL COMMENT '订单id',
  `use_time` datetime DEFAULT NULL COMMENT '使用时间',
  `coupon_name` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '优惠券名称',
  `coupon_amount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '优惠券金额',
  `use_start_time` datetime DEFAULT NULL COMMENT '使用起始时间',
  `use_end_time` datetime DEFAULT NULL COMMENT '使用结束时间',
  `grant_conditions` int(11) DEFAULT NULL COMMENT '发放条件,存类目id',
  `use_conditions_content` decimal(10,2) DEFAULT NULL COMMENT '使用条件补充内容',
  `from_id` int(11) DEFAULT NULL COMMENT '发放来源(存储完工的订单id或注册的商家id等等)',
  `from_remark` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '发放备注',
  `gmt_create` datetime NOT NULL COMMENT '优惠券创建时间',
  `gmt_modified` datetime DEFAULT NULL COMMENT '优惠券修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4;

4.后台优惠劵功能实现
CouponRulesMapper.xml

<?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.**.dao.coupon.CouponRulesMapper">
    <resultMap id="BaseResultMap" type="com.**.model.coupon.CouponRules">
        <!--@mbg.generated-->
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="gmt_create" jdbcType="TIMESTAMP" property="gmtCreate"/>
        <result column="gmt_modified" jdbcType="TIMESTAMP" property="gmtModified"/>
        <result column="creator" jdbcType="INTEGER" property="creator"/>
        <result column="partner_id" jdbcType="INTEGER" property="partnerId"/>
        <result column="coupon_name" jdbcType="VARCHAR" property="couponName"/>
        <result column="coupon_amount" jdbcType="DECIMAL" property="couponAmount"/>
        <result column="grant_rules" jdbcType="INTEGER" property="grantRules"/>
        <result column="use_start_time" jdbcType="TIMESTAMP" property="useStartTime"/>
        <result column="use_end_time" jdbcType="TIMESTAMP" property="useEndTime"/>
        <result column="quantity_ceiling" jdbcType="INTEGER" property="quantityCeiling"/>
        <result column="use_conditions" jdbcType="INTEGER" property="useConditions"/>
        <result column="use_conditions_content" jdbcType="DECIMAL" property="useConditionsContent"/>
        <result column="grant_conditions" jdbcType="INTEGER" property="grantConditions"/>
        <result column="order_minimum" jdbcType="DECIMAL" property="orderMinimum"/>
        <result column="grant_start_time" jdbcType="TIMESTAMP" property="grantStartTime"/>
        <result column="grant_end_time" jdbcType="TIMESTAMP" property="grantEndTime"/>
        <result column="status" jdbcType="INTEGER" property="status"/>
        <result column="grant_max_num" jdbcType="INTEGER" property="grantMaxNum"/>
        <result column="grant_num" jdbcType="INTEGER" property="grantNum"/>
        <result column="duration" jdbcType="INTEGER" property="duration"/>
    </resultMap>
    <sql id="Base_Column_List">
        <!--@mbg.generated-->
        id, gmt_create, gmt_modified, creator, partner_id, coupon_name, coupon_amount, grant_rules,
        use_start_time, use_end_time, quantity_ceiling, use_conditions, use_conditions_content,
        grant_conditions, order_minimum, grant_start_time, grant_end_time, `status`, grant_max_num,
        grant_num,duration
    </sql>
    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
        <!--@mbg.generated-->
        select
        <include refid="Base_Column_List"/>
        from coupon_rules
        where id = #{id,jdbcType=INTEGER}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        <!--@mbg.generated-->
        delete from coupon_rules
        where id = #{id,jdbcType=INTEGER}
    </delete>
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.**.model.coupon.CouponRules"
            useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into coupon_rules (gmt_create, gmt_modified, creator,
        partner_id, coupon_name, coupon_amount,
        grant_rules, use_start_time, use_end_time,
        quantity_ceiling, use_conditions, use_conditions_content,
        grant_conditions, order_minimum, grant_start_time,
        grant_end_time, `status`, grant_max_num,
        grant_num)
        values (#{gmtCreate,jdbcType=TIMESTAMP}, #{gmtModified,jdbcType=TIMESTAMP}, #{creator,jdbcType=INTEGER},
        #{partnerId,jdbcType=INTEGER}, #{couponName,jdbcType=VARCHAR}, #{couponAmount,jdbcType=DECIMAL},
        #{grantRules,jdbcType=INTEGER}, #{useStartTime,jdbcType=TIMESTAMP}, #{useEndTime,jdbcType=TIMESTAMP},
        #{quantityCeiling,jdbcType=INTEGER}, #{useConditions,jdbcType=INTEGER},
        #{useConditionsContent,jdbcType=DECIMAL},
        #{grantConditions,jdbcType=INTEGER}, #{orderMinimum,jdbcType=DECIMAL}, #{grantStartTime,jdbcType=TIMESTAMP},
        #{grantEndTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}, #{grantMaxNum,jdbcType=INTEGER},
        #{grantNum,jdbcType=INTEGER})
    </insert>
    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.**.model.coupon.CouponRules"
            useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into coupon_rules
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="gmtCreate != null">
                gmt_create,
            </if>
            <if test="gmtModified != null">
                gmt_modified,
            </if>
            <if test="creator != null">
                creator,
            </if>
            <if test="partnerId != null">
                partner_id,
            </if>
            <if test="couponName != null">
                coupon_name,
            </if>
            <if test="couponAmount != null">
                coupon_amount,
            </if>
            <if test="grantRules != null">
                grant_rules,
            </if>
            <if test="useStartTime != null">
                use_start_time,
            </if>
            <if test="useEndTime != null">
                use_end_time,
            </if>
            <if test="quantityCeiling != null">
                quantity_ceiling,
            </if>
            <if test="useConditions != null">
                use_conditions,
            </if>
            <if test="useConditionsContent != null">
                use_conditions_content,
            </if>
            <if test="grantConditions != null">
                grant_conditions,
            </if>
            <if test="orderMinimum != null">
                order_minimum,
            </if>
            <if test="grantStartTime != null">
                grant_start_time,
            </if>
            <if test="grantEndTime != null">
                grant_end_time,
            </if>
            <if test="status != null">
                `status`,
            </if>
            <if test="grantMaxNum != null">
                grant_max_num,
            </if>
            <if test="grantNum != null">
                grant_num,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="gmtCreate != null">
                #{gmtCreate,jdbcType=TIMESTAMP},
            </if>
            <if test="gmtModified != null">
                #{gmtModified,jdbcType=TIMESTAMP},
            </if>
            <if test="creator != null">
                #{creator,jdbcType=INTEGER},
            </if>
            <if test="partnerId != null">
                #{partnerId,jdbcType=INTEGER},
            </if>
            <if test="couponName != null">
                #{couponName,jdbcType=VARCHAR},
            </if>
            <if test="couponAmount != null">
                #{couponAmount,jdbcType=DECIMAL},
            </if>
            <if test="grantRules != null">
                #{grantRules,jdbcType=INTEGER},
            </if>
            <if test="useStartTime != null">
                #{useStartTime,jdbcType=TIMESTAMP},
            </if>
            <if test="useEndTime != null">
                #{useEndTime,jdbcType=TIMESTAMP},
            </if>
            <if test="quantityCeiling != null">
                #{quantityCeiling,jdbcType=INTEGER},
            </if>
            <if test="useConditions != null">
                #{useConditions,jdbcType=INTEGER},
            </if>
            <if test="useConditionsContent != null">
                #{useConditionsContent,jdbcType=DECIMAL},
            </if>
            <if test="grantConditions != null">
                #{grantConditions,jdbcType=INTEGER},
            </if>
            <if test="orderMinimum != null">
                #{orderMinimum,jdbcType=DECIMAL},
            </if>
            <if test="grantStartTime != null">
                #{grantStartTime,jdbcType=TIMESTAMP},
            </if>
            <if test="grantEndTime != null">
                #{grantEndTime,jdbcType=TIMESTAMP},
            </if>
            <if test="status != null">
                #{status,jdbcType=INTEGER},
            </if>
            <if test="grantMaxNum != null">
                #{grantMaxNum,jdbcType=INTEGER},
            </if>
            <if test="grantNum != null">
                #{grantNum,jdbcType=INTEGER},
            </if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.**.model.coupon.CouponRules">
        <!--@mbg.generated-->
        update coupon_rules
        <set>
            <if test="gmtCreate != null">
                gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
            </if>
            <if test="gmtModified != null">
                gmt_modified = #{gmtModified,jdbcType=TIMESTAMP},
            </if>
            <if test="creator != null">
                creator = #{creator,jdbcType=INTEGER},
            </if>
            <if test="partnerId != null">
                partner_id = #{partnerId,jdbcType=INTEGER},
            </if>
            <if test="couponName != null">
                coupon_name = #{couponName,jdbcType=VARCHAR},
            </if>
            <if test="couponAmount != null">
                coupon_amount = #{couponAmount,jdbcType=DECIMAL},
            </if>
            <if test="grantRules != null">
                grant_rules = #{grantRules,jdbcType=INTEGER},
            </if>
            <if test="useStartTime != null">
                use_start_time = #{useStartTime,jdbcType=TIMESTAMP},
            </if>
            <if test="useEndTime != null">
                use_end_time = #{useEndTime,jdbcType=TIMESTAMP},
            </if>
            <if test="quantityCeiling != null">
                quantity_ceiling = #{quantityCeiling,jdbcType=INTEGER},
            </if>
            <if test="useConditions != null">
                use_conditions = #{useConditions,jdbcType=INTEGER},
            </if>
            <if test="useConditionsContent != null">
                use_conditions_content = #{useConditionsContent,jdbcType=DECIMAL},
            </if>
            <if test="grantConditions != null">
                grant_conditions = #{grantConditions,jdbcType=INTEGER},
            </if>
            <if test="orderMinimum != null">
                order_minimum = #{orderMinimum,jdbcType=DECIMAL},
            </if>
            <if test="grantStartTime != null">
                grant_start_time = #{grantStartTime,jdbcType=TIMESTAMP},
            </if>
            <if test="grantEndTime != null">
                grant_end_time = #{grantEndTime,jdbcType=TIMESTAMP},
            </if>
            <if test="status != null">
                `status` = #{status,jdbcType=INTEGER},
            </if>
            <if test="grantMaxNum != null">
                grant_max_num = #{grantMaxNum,jdbcType=INTEGER},
            </if>
            <if test="grantNum != null">
                grant_num = #{grantNum,jdbcType=INTEGER},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>
    <update id="updateByPrimaryKey" parameterType="com.**.model.coupon.CouponRules">
        <!--@mbg.generated-->
        update coupon_rules
        set gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
        gmt_modified = #{gmtModified,jdbcType=TIMESTAMP},
        creator = #{creator,jdbcType=INTEGER},
        partner_id = #{partnerId,jdbcType=INTEGER},
        coupon_name = #{couponName,jdbcType=VARCHAR},
        coupon_amount = #{couponAmount,jdbcType=DECIMAL},
        grant_rules = #{grantRules,jdbcType=INTEGER},
        use_start_time = #{useStartTime,jdbcType=TIMESTAMP},
        use_end_time = #{useEndTime,jdbcType=TIMESTAMP},
        quantity_ceiling = #{quantityCeiling,jdbcType=INTEGER},
        use_conditions = #{useConditions,jdbcType=INTEGER},
        use_conditions_content = #{useConditionsContent,jdbcType=DECIMAL},
        grant_conditions = #{grantConditions,jdbcType=INTEGER},
        order_minimum = #{orderMinimum,jdbcType=DECIMAL},
        grant_start_time = #{grantStartTime,jdbcType=TIMESTAMP},
        grant_end_time = #{grantEndTime,jdbcType=TIMESTAMP},
        `status` = #{status,jdbcType=INTEGER},
        grant_max_num = #{grantMaxNum,jdbcType=INTEGER},
        grant_num = #{grantNum,jdbcType=INTEGER}
        where id = #{id,jdbcType=INTEGER}
    </update>
    <update id="updateBatch" parameterType="java.util.List">
        <!--@mbg.generated-->
        update coupon_rules
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="gmt_create = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.gmtCreate,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="gmt_modified = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.gmtModified,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="creator = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.creator,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="partner_id = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.partnerId,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="coupon_name = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.couponName,jdbcType=VARCHAR}
                </foreach>
            </trim>
            <trim prefix="coupon_amount = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.couponAmount,jdbcType=DECIMAL}
                </foreach>
            </trim>
            <trim prefix="grant_rules = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantRules,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="use_start_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useStartTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="use_end_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useEndTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="quantity_ceiling = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.quantityCeiling,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="use_conditions = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useConditions,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="use_conditions_content = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useConditionsContent,jdbcType=DECIMAL}
                </foreach>
            </trim>
            <trim prefix="grant_conditions = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantConditions,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="order_minimum = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.orderMinimum,jdbcType=DECIMAL}
                </foreach>
            </trim>
            <trim prefix="grant_start_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantStartTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="grant_end_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantEndTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="`status` = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.status,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="grant_max_num = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantMaxNum,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="grant_num = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantNum,jdbcType=INTEGER}
                </foreach>
            </trim>
        </trim>
        where id in
        <foreach close=")" collection="list" item="item" open="(" separator=", ">
            #{item.id,jdbcType=INTEGER}
        </foreach>
    </update>
    <insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into coupon_rules
        (gmt_create, gmt_modified, creator, partner_id, coupon_name, coupon_amount, grant_rules,
        use_start_time, use_end_time, quantity_ceiling, use_conditions, use_conditions_content,
        grant_conditions, order_minimum, grant_start_time, grant_end_time, `status`, grant_max_num,
        grant_num)
        values
        <foreach collection="list" item="item" separator=",">
            (#{item.gmtCreate,jdbcType=TIMESTAMP}, #{item.gmtModified,jdbcType=TIMESTAMP},
            #{item.creator,jdbcType=INTEGER},
            #{item.partnerId,jdbcType=INTEGER}, #{item.couponName,jdbcType=VARCHAR},
            #{item.couponAmount,jdbcType=DECIMAL},
            #{item.grantRules,jdbcType=INTEGER}, #{item.useStartTime,jdbcType=TIMESTAMP},
            #{item.useEndTime,jdbcType=TIMESTAMP},
            #{item.quantityCeiling,jdbcType=INTEGER}, #{item.useConditions,jdbcType=INTEGER},
            #{item.useConditionsContent,jdbcType=DECIMAL}, #{item.grantConditions,jdbcType=INTEGER},
            #{item.orderMinimum,jdbcType=DECIMAL}, #{item.grantStartTime,jdbcType=TIMESTAMP},
            #{item.grantEndTime,jdbcType=TIMESTAMP}, #{item.status,jdbcType=INTEGER},
            #{item.grantMaxNum,jdbcType=INTEGER},
            #{item.grantNum,jdbcType=INTEGER})
        </foreach>
    </insert>

    <resultMap extends="BaseResultMap" id="VoResultMap" type="com.**.model.coupon.vo.CouponRulesVo">
        <result column="grantRulesName" jdbcType="VARCHAR" property="grantRulesName"/>
    </resultMap>

    <sql id="Vo_Column_List">
        cr.id, cr.partner_id, cr.coupon_name, cr.coupon_amount, cr.grant_rules, cr.use_start_time, cr.use_end_time,
        cr.quantity_ceiling, cr.use_conditions, cr.use_conditions_content, cr.order_minimum, cr.grant_start_time,
        cr.grant_end_time,cr.grant_conditions, cr.status, cr.grant_max_num, cr.grant_num ,cr.duration
    </sql>

    <sql id="Page_Where_Clause">
        where 1=1
        <trim suffixOverrides=",">
            <if test="pd.id != null and pd.id != ''">
                and cr.id = #{pd.id}
            </if>
            <if test="pd.couponName != null and pd.couponName != ''">
                and cr.coupon_name LIKE concat('%',#{pd.couponName},'%')
            </if>
        </trim>
    </sql>

    <select id="selectlistPage" parameterType="object" resultMap="VoResultMap">
        select
        <include refid="Vo_Column_List"/>,s.value_name AS grantRulesName
        from coupon_rules cr
        LEFT JOIN sys_type s ON s.`value` = cr.grant_rules
        <include refid="Page_Where_Clause"/>
        AND s.type = 'couponGrantRules'
        AND cr.status = 1
        order by cr.gmt_create desc
    </select>

    <select id="selectAllcoupons" resultMap="BaseResultMap" parameterType="java.lang.String">
        select
        <include refid="Base_Column_List"/>
        from coupon_rules a
        where
        grant_rules != 3
        and status = 1
        and unix_timestamp(grant_end_time)>=unix_timestamp()
        and unix_timestamp() >= unix_timestamp(grant_start_time)
        <if test="_parameter != null and _parameter != ''">
            AND a.id NOT IN (SELECT rules_id FROM coupon_info  WHERE member_id=
            (SELECT id FROM sys_user_member  WHERE open_id=#{_parameter}) );
        </if>
    </select>
    <select id="selectVoById" parameterType="object" resultMap="VoResultMap">
        select
        <include refid="Vo_Column_List"/>,s.value_name AS grantRulesName
        from coupon_rules cr
        LEFT JOIN sys_type s ON s.`value` = cr.grant_rules
        WHERE
        cr.id = #{_parameter}
        AND s.type = 'couponGrantRules'
    </select>

    <select id="selectRegisterCoupon" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from coupon_rules
        WHERE
        grant_rules = 3
        and status = 1
        and unix_timestamp(grant_end_time)>=unix_timestamp()
        and unix_timestamp() >= unix_timestamp(grant_start_time)

    </select>

    <!--更新优惠券规则下已发放数量-->
    <update id="updateHasGrantCount" parameterType="Object">
        UPDATE coupon_rules
        SET grant_num=grant_num+1
        WHERE
        id=#{id}
        <!--已发放数量没有超过配置-->
        <![CDATA[ AND (grant_max_num=0 OR grant_num<grant_max_num) ]]>
    </update>
</mapper>

CouponInfoMapper.xml

<?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.**.dao.coupon.CouponInfoMapper">
    <resultMap id="BaseResultMap" type="com.**.model.coupon.CouponInfo">
        <!--@mbg.generated-->
        <id column="id" jdbcType="INTEGER" property="id"/>
        <result column="rules_id" jdbcType="INTEGER" property="rulesId"/>
        <result column="grant_time" jdbcType="TIMESTAMP" property="grantTime"/>
        <result column="status" jdbcType="INTEGER" property="status"/>
        <result column="member_id" jdbcType="INTEGER" property="memberId"/>
        <result column="order_id" jdbcType="INTEGER" property="orderId"/>
        <result column="use_time" jdbcType="TIMESTAMP" property="useTime"/>
        <result column="coupon_name" jdbcType="VARCHAR" property="couponName"/>
        <result column="coupon_amount" jdbcType="DECIMAL" property="couponAmount"/>
        <result column="use_start_time" jdbcType="TIMESTAMP" property="useStartTime"/>
        <result column="use_end_time" jdbcType="TIMESTAMP" property="useEndTime"/>
        <result column="grant_conditions" jdbcType="INTEGER" property="grantConditions"/>
        <result column="use_conditions_content" jdbcType="DECIMAL" property="useConditionsContent"/>
        <result column="from_id" jdbcType="INTEGER" property="fromId"/>
        <result column="from_remark" jdbcType="VARCHAR" property="fromRemark"/>
        <result column="gmt_create" jdbcType="TIMESTAMP" property="gmtCreate"/>
        <result column="gmt_modified" jdbcType="TIMESTAMP" property="gmtModified"/>

    </resultMap>
    <sql id="Base_Column_List">
        <!--@mbg.generated-->
        id, rules_id, grant_time, `status`, member_id, order_id, use_time, coupon_name, coupon_amount,
        use_start_time, use_end_time, grant_conditions, use_conditions_content, from_id,
        from_remark, gmt_create, gmt_modified
    </sql>
    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
        <!--@mbg.generated-->
        select
        <include refid="Base_Column_List"/>
        from coupon_info
        where id = #{id,jdbcType=INTEGER}
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
        <!--@mbg.generated-->
        delete from coupon_info
        where id = #{id,jdbcType=INTEGER}
    </delete>
    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.**.model.coupon.CouponInfo"
            useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into coupon_info (rules_id, grant_time, `status`,
        member_id, order_id, use_time,
        coupon_name, coupon_amount, use_start_time,
        use_end_time, grant_conditions, use_conditions_content,
        from_id, from_remark, gmt_create,
        gmt_modified)
        values (#{rulesId,jdbcType=INTEGER}, #{grantTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER},
        #{memberId,jdbcType=INTEGER}, #{orderId,jdbcType=INTEGER}, #{useTime,jdbcType=TIMESTAMP},
        #{couponName,jdbcType=VARCHAR}, #{couponAmount,jdbcType=DECIMAL}, #{useStartTime,jdbcType=TIMESTAMP},
        #{useEndTime,jdbcType=TIMESTAMP}, #{grantConditions,jdbcType=INTEGER}, #{useConditionsContent,jdbcType=DECIMAL},
        #{fromId,jdbcType=INTEGER}, #{fromRemark,jdbcType=VARCHAR}, #{gmtCreate,jdbcType=TIMESTAMP},
        #{gmtModified,jdbcType=TIMESTAMP})
    </insert>
    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.**.model.coupon.CouponInfo"
            useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into coupon_info
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="rulesId != null">
                rules_id,
            </if>
            <if test="grantTime != null">
                grant_time,
            </if>
            <if test="status != null">
                `status`,
            </if>
            <if test="memberId != null">
                member_id,
            </if>
            <if test="orderId != null">
                order_id,
            </if>
            <if test="useTime != null">
                use_time,
            </if>
            <if test="couponName != null">
                coupon_name,
            </if>
            <if test="couponAmount != null">
                coupon_amount,
            </if>
            <if test="useStartTime != null">
                use_start_time,
            </if>
            <if test="useEndTime != null">
                use_end_time,
            </if>
            <if test="grantConditions != null">
                grant_conditions,
            </if>
            <if test="useConditionsContent != null">
                use_conditions_content,
            </if>
            <if test="fromId != null">
                from_id,
            </if>
            <if test="fromRemark != null">
                from_remark,
            </if>
            <if test="gmtCreate != null">
                gmt_create,
            </if>
            <if test="gmtModified != null">
                gmt_modified,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="rulesId != null">
                #{rulesId,jdbcType=INTEGER},
            </if>
            <if test="grantTime != null">
                #{grantTime,jdbcType=TIMESTAMP},
            </if>
            <if test="status != null">
                #{status,jdbcType=INTEGER},
            </if>
            <if test="memberId != null">
                #{memberId,jdbcType=INTEGER},
            </if>
            <if test="orderId != null">
                #{orderId,jdbcType=INTEGER},
            </if>
            <if test="useTime != null">
                #{useTime,jdbcType=TIMESTAMP},
            </if>
            <if test="couponName != null">
                #{couponName,jdbcType=VARCHAR},
            </if>
            <if test="couponAmount != null">
                #{couponAmount,jdbcType=DECIMAL},
            </if>
            <if test="useStartTime != null">
                #{useStartTime,jdbcType=TIMESTAMP},
            </if>
            <if test="useEndTime != null">
                #{useEndTime,jdbcType=TIMESTAMP},
            </if>
            <if test="grantConditions != null">
                #{grantConditions,jdbcType=INTEGER},
            </if>
            <if test="useConditionsContent != null">
                #{useConditionsContent,jdbcType=DECIMAL},
            </if>
            <if test="fromId != null">
                #{fromId,jdbcType=INTEGER},
            </if>
            <if test="fromRemark != null">
                #{fromRemark,jdbcType=VARCHAR},
            </if>
            <if test="gmtCreate != null">
                #{gmtCreate,jdbcType=TIMESTAMP},
            </if>
            <if test="gmtModified != null">
                #{gmtModified,jdbcType=TIMESTAMP},
            </if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.**.model.coupon.CouponInfo">
        <!--@mbg.generated-->
        update coupon_info
        <set>
            <if test="rulesId != null">
                rules_id = #{rulesId,jdbcType=INTEGER},
            </if>
            <if test="grantTime != null">
                grant_time = #{grantTime,jdbcType=TIMESTAMP},
            </if>
            <if test="status != null">
                `status` = #{status,jdbcType=INTEGER},
            </if>
            <if test="memberId != null">
                member_id = #{memberId,jdbcType=INTEGER},
            </if>
            <if test="orderId != null">
                order_id = #{orderId,jdbcType=INTEGER},
            </if>
            <if test="useTime != null">
                use_time = #{useTime,jdbcType=TIMESTAMP},
            </if>
            <if test="couponName != null">
                coupon_name = #{couponName,jdbcType=VARCHAR},
            </if>
            <if test="couponAmount != null">
                coupon_amount = #{couponAmount,jdbcType=DECIMAL},
            </if>
            <if test="useStartTime != null">
                use_start_time = #{useStartTime,jdbcType=TIMESTAMP},
            </if>
            <if test="useEndTime != null">
                use_end_time = #{useEndTime,jdbcType=TIMESTAMP},
            </if>
            <if test="grantConditions != null">
                grant_conditions = #{grantConditions,jdbcType=INTEGER},
            </if>
            <if test="useConditionsContent != null">
                use_conditions_content = #{useConditionsContent,jdbcType=DECIMAL},
            </if>
            <if test="fromId != null">
                from_id = #{fromId,jdbcType=INTEGER},
            </if>
            <if test="fromRemark != null">
                from_remark = #{fromRemark,jdbcType=VARCHAR},
            </if>
            <if test="gmtCreate != null">
                gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
            </if>
            <if test="gmtModified != null">
                gmt_modified = #{gmtModified,jdbcType=TIMESTAMP},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>
    <update id="updateByPrimaryKey" parameterType="com.**.model.coupon.CouponInfo">
        <!--@mbg.generated-->
        update coupon_info
        set rules_id = #{rulesId,jdbcType=INTEGER},
        grant_time = #{grantTime,jdbcType=TIMESTAMP},
        `status` = #{status,jdbcType=INTEGER},
        member_id = #{memberId,jdbcType=INTEGER},
        order_id = #{orderId,jdbcType=INTEGER},
        use_time = #{useTime,jdbcType=TIMESTAMP},
        coupon_name = #{couponName,jdbcType=VARCHAR},
        coupon_amount = #{couponAmount,jdbcType=DECIMAL},
        use_start_time = #{useStartTime,jdbcType=TIMESTAMP},
        use_end_time = #{useEndTime,jdbcType=TIMESTAMP},
        grant_conditions = #{grantConditions,jdbcType=INTEGER},
        use_conditions_content = #{useConditionsContent,jdbcType=DECIMAL},
        from_id = #{fromId,jdbcType=INTEGER},
        from_remark = #{fromRemark,jdbcType=VARCHAR},
        gmt_create = #{gmtCreate,jdbcType=TIMESTAMP},
        gmt_modified = #{gmtModified,jdbcType=TIMESTAMP}
        where id = #{id,jdbcType=INTEGER}
    </update>
    <update id="updateBatch" parameterType="java.util.List">
        <!--@mbg.generated-->
        update coupon_info
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="rules_id = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.rulesId,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="grant_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="`status` = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.status,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="member_id = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.memberId,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="order_id = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.orderId,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="use_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="coupon_name = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.couponName,jdbcType=VARCHAR}
                </foreach>
            </trim>
            <trim prefix="coupon_amount = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.couponAmount,jdbcType=DECIMAL}
                </foreach>
            </trim>
            <trim prefix="use_start_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useStartTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="use_end_time = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useEndTime,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="grant_conditions = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.grantConditions,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="use_conditions_content = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.useConditionsContent,jdbcType=DECIMAL}
                </foreach>
            </trim>
            <trim prefix="from_id = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.fromId,jdbcType=INTEGER}
                </foreach>
            </trim>
            <trim prefix="from_remark = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.fromRemark,jdbcType=VARCHAR}
                </foreach>
            </trim>
            <trim prefix="gmt_create = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.gmtCreate,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
            <trim prefix="gmt_modified = case" suffix="end,">
                <foreach collection="list" index="index" item="item">
                    when id = #{item.id,jdbcType=INTEGER} then #{item.gmtModified,jdbcType=TIMESTAMP}
                </foreach>
            </trim>
        </trim>
        where id in
        <foreach close=")" collection="list" item="item" open="(" separator=", ">
            #{item.id,jdbcType=INTEGER}
        </foreach>
    </update>
    <insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
        <!--@mbg.generated-->
        insert into coupon_info
        (rules_id, grant_time, `status`, member_id, order_id, use_time, coupon_name, coupon_amount,
        use_start_time, use_end_time, grant_conditions, use_conditions_content, from_id,
        from_remark, gmt_create, gmt_modified)
        values
        <foreach collection="list" item="item" separator=",">
            (#{item.rulesId,jdbcType=INTEGER}, #{item.grantTime,jdbcType=TIMESTAMP}, #{item.status,jdbcType=INTEGER},
            #{item.memberId,jdbcType=INTEGER}, #{item.orderId,jdbcType=INTEGER}, #{item.useTime,jdbcType=TIMESTAMP},
            #{item.couponName,jdbcType=VARCHAR}, #{item.couponAmount,jdbcType=DECIMAL},
            #{item.useStartTime,jdbcType=TIMESTAMP},
            #{item.useEndTime,jdbcType=TIMESTAMP}, #{item.grantConditions,jdbcType=INTEGER},
            #{item.useConditionsContent,jdbcType=DECIMAL}, #{item.fromId,jdbcType=INTEGER},
            #{item.fromRemark,jdbcType=VARCHAR}, #{item.gmtCreate,jdbcType=TIMESTAMP},
            #{item.gmtModified,jdbcType=TIMESTAMP}
            )
        </foreach>
    </insert>

    <select id="findByMemberId" resultType="map">
        SELECT coupon_info.id couponId,
        coupon_info.grant_time grantTime, coupon_info.`status` status, coupon_info.coupon_name couponName, coupon_info.coupon_amount couponAmount,
        coupon_info.use_start_time useStartTime, coupon_info.use_end_time useEndTime, coupon_info.grant_conditions grantConditions,
        coupon_info.use_conditions_content useConditionsContent,gc.cat_name catName
        FROM coupon_info
        LEFT JOIN goods_cat gc on coupon_info.grant_conditions = gc.id
        WHERE 1=1
        <if test="memberId != null">
            AND coupon_info.member_id=#{memberId,jdbcType=INTEGER}
        </if>
        AND coupon_info.`status` = 0
        <![CDATA[
        AND DATE_FORMAT(coupon_info.use_start_time,'%Y-%m-%d') <= DATE_FORMAT(now(),'%Y-%m-%d')
        AND DATE_FORMAT(coupon_info.use_end_time,'%Y-%m-%d') >= DATE_FORMAT(now(),'%Y-%m-%d')
        ]]>
    </select>

    <select id="queryMyCouponList" resultMap="BaseResultMap"
            parameterType="object">
        select *
        from coupon_info ci
        <where>
            <if test="pd.member_id != null">
                and ci.member_id = #{pd.member_id}
            </if>
            <if test="pd.couponStatus != null ">
                and ci.status = #{pd.couponStatus}
            </if>
        </where>
        order by ci.gmt_create desc
    </select>
    <update id="couponInvalid">
        UPDATE coupon_info a SET a.`status`=2,a.`gmt_modified`=NOW() WHERE a.`status`=0 <![CDATA[ AND a.`use_end_time`<NOW() ]]>
    </update>

    <select id="selectByUserIdAndRulesId" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from coupon_info
        where rules_id = #{param1} and member_id = #{param2}
    </select>
</mapper>

……

5.后台优惠劵功能截图

 

微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)_数据_02

 

微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)_数据_03

6.微信小程序功能实现
首页展示优惠劵代码

<!-- 优惠券 -->
<view>
  <block wx:if="{{coupon != null}}">
    <import src="../common/coupon/getcoupon.wxml" />
    <template is="getcoupon" data="{{data:coupon}}" />
  </block>
</view>
1
2
3
4
5
6
7
getcoupon.wxml内容为:

<template name="getcoupon">
    <view class='list-wrapper'>
        <view class="coupons-body">
                <view wx:for="{{data}}">
                    <view class="coupon">
                        <view class="coupon-wrapper">
                            <view class="coupon-content">
                                <view class="coupon-top">
                                <view class="coupon-first">
                                    <text>¥{{item.couponAmount}} </text>
                                </view>
                                <view class="couponSecond">
                                    <text style="font-size: 35rpx">商城优惠</text>
                                </view>

                            </view>

                            <view class="coupon-bottom">
                                <view class="coupon-first">
                                    <text style="color:#fff">满{{item.useConditionsContent}}使用</text>
                                </view>
                                <view class="couponSecond">
                                    <text style="color:#fff">领取后{{item.duration}}内有效</text>
                                </view>


                            </view>
                            </view>
                            <view class="split-line"></view>
                            <view class="coupon-tip" bindtap="receiveCoupon" data-couponid="{{item.id}}">
                                <view class="coupon-conditions">
                                   领取
                                </view>
                            </view>
                        </view>
                    </view>
                </view>

        </view>
    </view>
</template>

商品详情展示优惠劵代码

    <view>
      <block wx:if="{{coupon != null}}">
        <import src="../../common/coupon/orderDetailCoupon.wxml" />
        <template is="orderDetailCoupon" data="{{data:coupon}}" />
      </block>
    </view>

优惠劵列表代码

<block>
<view class='search-box'>
  <view class='inp'>
    <input value='{{searchKey}}' type='text' bindinput="searchInput" placeholder='搜索' />
  </view>
 <view class='search-btn' bindtap='searchBtn'>搜索</view>
</view>
    <!-- tab切换 -->
    <view id='tab-title'>
        <view class='{{tabIndex == 0?"active":""}}' bindtap='changeTab' data-id='0'>全部</view>
        <view class='{{tabIndex == 1?"active":""}}' bindtap='changeTab' data-id='1'>未使用</view>
        <view class='{{tabIndex == 2?"active":""}}' bindtap='changeTab' data-id='2'>已使用</view>
        <view class='{{tabIndex == 3?"active":""}}' bindtap='changeTab' data-id='3'>已过期</view>
        <text class='line' style='left:{{25*tabIndex}}%'></text>
    </view>

    <view wx:if="{{tabIndex == 0}}">
        <block  wx:if="{{coupon0.length != 0}}">
            <import src="../../common/coupon/coupon.wxml" />
            <template is="coupon" data="{{data:coupon0}}"/>
            <view class='load-more' wx:if="{{coupon0!=null && pageIndex[0] == pageTotal[0]}}">没有更多数据了</view>
        </block>
        <view class='coupon-none' wx:if="{{coupon0 !=null&& coupon0.length == 0}}">
            <import src="../../common/list/none.wxml" />
            <template is="none" data="{{isNone:true}}"/>
        </view>
        <view class='coupon-none' wx:if="{{!isLogin}}">
            <import src="../../common/list/none.wxml" />
            <template is="none" data="{{isNone:false}}"/>
        </view>
    </view>

    <view wx:if="{{tabIndex == 1}}">
        <block  wx:if="{{coupon1.length != 0}}" >
            <import src="../../common/coupon/coupon.wxml" />
            <template is="coupon" data="{{data:coupon1}}"/>
            <view class='load-more' wx:if="{{coupon1!=null &&pageIndex[1] == pageTotal[1]}}">没有更多数据了</view>
        </block >
        <view class='coupon-none' wx:if="{{coupon1 !=null&& coupon1.length == 0}}">
            <import src="../../common/list/none.wxml" />
            <template is="none" data="{{isNone:true}}"/>
        </view>
    </view>
    <view wx:if="{{tabIndex == 2}}">
        <block wx:if="{{coupon2.length != 0}}">
            <import src="../../common/coupon/coupon.wxml" />
            <template is="coupon" data="{{data:coupon2}}"/>
            <view class='load-more' wx:if="{{coupon2!=null &&pageIndex[2] == pageTotal[2]}}">没有更多数据了</view>
        </block >
        <view class='coupon-none' wx:if="{{coupon2 !=null&& coupon2.length == 0}}">
            <import src="../../common/list/none.wxml" />
            <template is="none" data="{{isNone:true}}"/>
        </view>
    </view>
  
    <view wx:if="{{tabIndex == 3}}">
        <block wx:if="{{coupon3.length != 0}}" >
            <import src="../../common/coupon/coupon.wxml" />
            <template is="coupon" data="{{data:coupon3}}"/>
            <view class='load-more' wx:if="{{coupon3!=null &&pageIndex[3] == pageTotal[3]}}">没有更多数据了</view>
        </block >
        <view class='coupon-none' wx:if="{{coupon3 !=null&& coupon3.length == 0}}">
            <import src="../../common/list/none.wxml" />
            <template is="none" data="{{isNone:true}}"/>
        </view>
    </view>
</block>




使用优惠劵代码

    <view class='price-item'>
      <view class='price-left'>
        <text>优惠券</text>
      </view>
      <view class='price-right'>
        <text class='coupon'>{{couponUsed}}</text>
      </view>
    </view>

7.微信小程序功能截图

 

微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)_数据_04

 

微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)_java_05

 

用户中心新增“优惠券”列表如下图所示:

 

微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)_java_06


使用优惠劵截图:

微信小程序优惠劵功能(包含用户需求,axure原型设计,数据库设计,后台功能,微信小程序功能)_java_07