id, name, type, creator_type, creator_merchant_id, scope_type, points_cost, discount_rate, min_charge_amount, max_discount_amount, exchange_start_time, exchange_end_time, stock_total, stock_remain, validity_type, valid_start_time, valid_end_time, valid_days, daily_limit, monthly_limit, total_limit, status, description, image, update_by, create_by, create_time, update_time, del_flag INSERT INTO coupon_template ( name, type, creator_type, creator_merchant_id, scope_type, points_cost, discount_rate, min_charge_amount, max_discount_amount, exchange_start_time, exchange_end_time, stock_total, stock_remain, validity_type, valid_start_time, valid_end_time, valid_days, daily_limit, monthly_limit, total_limit, status, description, image, update_by, create_by, create_time, update_time, del_flag ) VALUES ( #{name}, #{type}, #{creatorType}, #{creatorMerchantId}, #{scopeType}, #{pointsCost}, #{discountRate}, #{minChargeAmount}, #{maxDiscountAmount}, #{exchangeStartTime}, #{exchangeEndTime}, #{stockTotal}, #{stockRemain}, #{validityType}, #{validStartTime}, #{validEndTime}, #{validDays}, #{dailyLimit}, #{monthlyLimit}, #{totalLimit}, #{status}, #{description}, #{image}, #{updateBy}, #{createBy}, NOW(), NOW(), '0' ) UPDATE coupon_template name = #{name}, status = #{status}, stock_total = #{stockTotal}, daily_limit = #{dailyLimit}, monthly_limit = #{monthlyLimit}, total_limit = #{totalLimit}, description = #{description}, image = #{image}, update_by = #{updateBy}, update_time = NOW() WHERE id = #{id} AND del_flag = '0' UPDATE coupon_template SET stock_remain = stock_remain - 1, update_time = NOW() WHERE id = #{id} AND del_flag = '0' AND (stock_remain = -1 OR stock_remain >= 1)