创建折扣代码系统(MySQL / php)

我们有一种产品,由PayPal付款。前往贝宝之前,请先申请折扣。我们希望创建一个系统,使人们可以输入礼品券代码以获取免费产品(即100%折扣),或输入一些代码以获得特定折扣(即SAVE10-享受10%折扣)。

有些代码只能用于一种用途(即礼券),有些则可以多次使用-即SAVE10。有些也会有有效期。

将使用MySQL和php组合在一起。

外面有没有人已经做过并将这些放在一起?还是知道一些我们可以用来节省时间的代码?不需要整个购物车,只需折扣代码部分即可。

谢谢。

回答:

实际上,这实际上是一类功能。您需要一个看起来像这样的类接口

 class ProductDiscount {

/**

* Create a NEW discount code and return the instance of

*

* @param $code string the discount code

* @param $discount float price adjustment in % (ex:

* @param $options array (optional) an array of options :

* 'expire' => timestamp (optional)

* 'limited' => int (optional)

* @return ProductDiscount

*/

static public function create($code, $discount, $options = NULL);

/**

* This essentially validate the code, and return the instance of the

* discount if the code exists. The method returns null if the discount

* is not valid for any reason. If an instance is returned, to apply

* the discount, one should invoke the "consume()" method of the instance.

*

* @param $code string

*

* @return ProductDiscount|null

*/

static public function validate($code);

private $_code; // string

private $_discount; // float

private $_expire; // unix timestamp (see time()) or null if unlimited

private $_count; // int or null if unlimited

private function __construct();

public function getCode(); // return string

public function getDiscount(); // return float

public function isLimited(); // return bool; true if $_count || $_expire is not null

public function getCount(); // returns int; how many of this discount is left or null if unlimited

public function getExpireDate();// returns int (unix timestamp) or null if unlimited

public function consume(); // apply this discount now

public function consumeAll(); // invalidate this discount for future use

}

数据库表可能如下所示

id UNSIGNED INT(10) NOT NULL AUTOINCREMENT  -- (Primary Key)

code VARCHAR(12) NOT NULL -- (Indexed, unique)

discount UNSIGNED INT(3) NOT NULL -- percent value 0..100

expire DATETIME DEFAULT NULL -- unlimited by default

count INT(10) DEFAULT 1 -- can be NULL


验证过程可能只是一个简单的SELECT声明:

SELECT * 

FROM tblproductdiscount

WHERE code = {$code} -- $code = mysql_real_escape_string($code)

AND (count IS NULL OR count > 0)

AND (expire IS NULL or expire > NOW())


然后,只需在验证结帐表单时使用此类即可。例如,

if (!empty($discountCode)) {

$discount = ProductDiscount::validate($discountCode);

if ($discount !== null) {

$price *= (1 - $discount->getDiscount());

$discount->consume();

}

}

好吧,这就是我要怎么做。

以上是 创建折扣代码系统(MySQL / php) 的全部内容, 来源链接: utcz.com/qa/421761.html

回到顶部