前言:
此时小伙伴们对“微信小程序优惠券代码”都比较注重,朋友们都想要了解一些“微信小程序优惠券代码”的相关资讯。那么小编同时在网络上网罗了一些对于“微信小程序优惠券代码””的相关知识,希望看官们能喜欢,大家一起来学习一下吧!用户需求
优惠券功能有:
1.后台可以设置优惠券和查看已发出优惠券的状态
2.平台自动给新用户发放优惠劵,或者手动给某些用户发放优惠券
3.用户在小程序中手动领取优惠券
4.用户中心新增“优惠券”模块,查看所有优惠券
5.下单时使用优惠券
axure原型设计
使用ie浏览器打开,打开后的html文件目录结构如下:
数据库设计
优惠劵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;后台优惠劵功能实现
CouponRulesMapper.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ";><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" ";><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>
……
后台优惠劵功能截图
微信小程序功能实现
首页展示优惠劵代码
<!-- 优惠券 --><view> <block wx:if="{{coupon != null}}"> <import src="../common/coupon/getcoupon.wxml" /> <template is="getcoupon" data="{{data:coupon}}" /> </block></view>
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>微信小程序功能截图
用户中心新增“优惠券”列表如下图所示:
使用优惠劵截图:
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #微信小程序优惠券代码