570 lines
24 KiB
PHP
570 lines
24 KiB
PHP
<?php
|
|
/**
|
|
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.gobuysaas.com
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace addon\discount\model;
|
|
|
|
use app\model\BaseModel;
|
|
use app\model\goods\Goods;
|
|
use app\model\system\Cron;
|
|
use think\facade\Db;
|
|
|
|
/**
|
|
* 限时折扣
|
|
*/
|
|
class Discount extends BaseModel
|
|
{
|
|
private $discount_status = [
|
|
0 => '未开始',
|
|
1 => '进行中',
|
|
2 => '已结束',
|
|
-1 => '已关闭(手动)',
|
|
];
|
|
|
|
/**
|
|
* 限时折扣状态
|
|
*/
|
|
public function getDiscountStatus()
|
|
{
|
|
return $this->discount_status;
|
|
}
|
|
|
|
/**
|
|
* 添加限时折扣活动
|
|
* @param unknown $data
|
|
*/
|
|
public function addDiscount($data)
|
|
{
|
|
|
|
$cron = new Cron();
|
|
$discount_goods = $data[ 'goods_data' ];
|
|
|
|
foreach ($discount_goods as $k => $v) {
|
|
//查询是否存在活动
|
|
$promotion_info = Db::name('promotion_discount')->where([
|
|
[ 'start_time|end_time', 'between', [ $data[ 'start_time' ], $data[ 'end_time' ] ] ],
|
|
[ 'site_id', '=', $data[ 'site_id' ] ],
|
|
[ 'status', 'in', '0,1' ],
|
|
[ 'goods_id', '=', $v[ 'goods_id' ] ]
|
|
])->find();
|
|
if (!empty($promotion_info)) {
|
|
return $this->error('', "有商品在当前时间段内存在限时折扣活动");
|
|
}
|
|
|
|
$promotion_info = Db::name('promotion_discount')->where([ [ 'start_time', '<', $data[ 'start_time' ] ], [ 'end_time', '>', $data[ 'end_time' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'status', 'in', '0,1' ], [ 'goods_id', '=', $v[ 'goods_id' ] ] ])->find();
|
|
if (!empty($promotion_info)) {
|
|
return $this->error('', "有商品在当前时间段内存在限时折扣活动");
|
|
}
|
|
}
|
|
|
|
model('promotion_discount')->startTrans();
|
|
try {
|
|
|
|
foreach ($discount_goods as $key => $item) {
|
|
$discount_data = [
|
|
'site_id' => $data[ 'site_id' ],
|
|
'discount_name' => $data[ 'discount_name' ],
|
|
'remark' => $data[ 'remark' ],
|
|
'start_time' => $data[ 'start_time' ],
|
|
'end_time' => $data[ 'end_time' ],
|
|
'create_time' => time(),
|
|
'goods_id' => $item[ 'goods_id' ],
|
|
'discount_price' => $item[ 'sku_list' ][ 0 ][ 'discount_price' ]
|
|
];
|
|
|
|
if ($discount_data[ 'start_time' ] <= time()) {
|
|
$discount_data[ 'status' ] = 1;//直接启动
|
|
$discount_id = model('promotion_discount')->add($discount_data);
|
|
$cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $discount_data[ 'end_time' ], $discount_id);
|
|
} else {
|
|
$discount_data[ 'status' ] = 0;
|
|
$discount_id = model('promotion_discount')->add($discount_data);
|
|
$cron->addCron(1, 0, "限时折扣开启", "OpenDiscount", $data[ 'start_time' ], $discount_id);
|
|
$cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $data[ 'end_time' ], $discount_id);
|
|
}
|
|
|
|
$goods = new Goods();
|
|
foreach ($item[ 'sku_list' ] as $k => $v) {
|
|
$sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'is_delete', '=', 0 ], [ 'goods_state', '=', 1 ] ], 'goods_id, sku_id, sku_name,price,sku_image');
|
|
$discount_goods_count = model('promotion_discount_goods')->getCount([ 'discount_id' => $discount_id, 'goods_id' => $sku_info[ 'goods_id' ], 'sku_id' => $sku_info[ 'sku_id' ] ]);
|
|
if (!empty($sku_info) && $discount_goods_count == 0) {
|
|
$discount_goods_data = [
|
|
'discount_id' => $discount_id,
|
|
'start_time' => $discount_data[ 'start_time' ],
|
|
'end_time' => $discount_data[ 'end_time' ],
|
|
'goods_id' => $sku_info[ 'goods_id' ],
|
|
'sku_id' => $sku_info[ 'sku_id' ],
|
|
'price' => $sku_info[ 'price' ],
|
|
'discount_price' => $v[ 'discount_price' ],
|
|
'sku_name' => $sku_info[ 'sku_name' ],
|
|
'sku_image' => $sku_info[ 'sku_image' ]
|
|
];
|
|
model('promotion_discount_goods')->add($discount_goods_data);
|
|
if ($discount_data[ 'status' ] == 1) {
|
|
model('goods_sku')->update([ 'promotion_type' => 1, 'discount_price' => $v[ 'discount_price' ], 'start_time' => $discount_data[ 'start_time' ], 'end_time' => $discount_data[ 'end_time' ] ], [ [ 'sku_id', '=', $v[ 'sku_id' ] ] ]);
|
|
}
|
|
|
|
// 更新营销商品活动标识
|
|
$goods->modifyPromotionAddon($sku_info[ 'goods_id' ], [ 'discount' => $discount_id ]);
|
|
}
|
|
}
|
|
}
|
|
|
|
model('promotion_discount')->commit();
|
|
return $this->success();
|
|
|
|
} catch (\Exception $e) {
|
|
model('promotion_discount')->rollback();
|
|
return $this->error('', $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 修改限时折扣活动
|
|
* @param unknown $data //传输数据(针对已经开始之后活动不能修改时间)
|
|
*/
|
|
public function editDiscount($data)
|
|
{
|
|
$discount_id = $data[ 'discount_id' ];
|
|
|
|
//针对未开始的活动进行设置
|
|
$cron = new Cron();
|
|
//查询是否存在活动
|
|
$promotion_info = Db::name('promotion_discount')->where([
|
|
[ 'start_time|end_time', 'between', [ $data[ 'start_time' ], $data[ 'end_time' ] ] ],
|
|
[ 'site_id', '=', $data[ 'site_id' ] ],
|
|
[ 'discount_id', '<>', $discount_id ],
|
|
[ 'status', 'in', '0,1' ],
|
|
[ 'goods_id', '=', $data[ 'goods_id' ] ]
|
|
])->find();
|
|
if (!empty($promotion_info)) {
|
|
return $this->error('', "当前时间段内存在限时折扣活动");
|
|
}
|
|
$promotion_info = Db::name('promotion_discount')->where([
|
|
[ 'start_time', '<', $data[ 'start_time' ] ],
|
|
[ 'end_time', '>', $data[ 'end_time' ] ],
|
|
[ 'site_id', '=', $data[ 'site_id' ] ],
|
|
[ 'discount_id', '<>', $discount_id ],
|
|
[ 'status', 'in', '0,1' ],
|
|
[ 'goods_id', '=', $data[ 'goods_id' ] ]
|
|
])->find();
|
|
if (!empty($promotion_info)) {
|
|
return $this->error('', "当前时间段内存在限时折扣活动");
|
|
}
|
|
if ($data[ 'start_time' ] <= time()) {
|
|
$sku_list = $data[ 'sku_list' ];
|
|
unset($data[ 'sku_list' ]);
|
|
if ($sku_list) $data[ 'discount_price' ] = $sku_list[ 0 ][ 'discount_price' ];
|
|
$data[ 'status' ] = 1;//直接启动
|
|
$res = model('promotion_discount')->update($data, [ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $data[ 'site_id' ] ] ]);
|
|
|
|
model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ] ]);
|
|
|
|
foreach ($sku_list as $k => $v) {
|
|
$sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $v[ 'sku_id' ] ] ], 'goods_id, sku_id, sku_name,price,sku_image');
|
|
if (!empty($sku_info)) {
|
|
$discount_goods_data = [
|
|
'discount_id' => $discount_id,
|
|
'start_time' => $data[ 'start_time' ],
|
|
'end_time' => $data[ 'end_time' ],
|
|
'goods_id' => $sku_info[ 'goods_id' ],
|
|
'sku_id' => $sku_info[ 'sku_id' ],
|
|
'price' => $sku_info[ 'price' ],
|
|
'discount_price' => $v[ 'discount_price' ],
|
|
'sku_name' => $sku_info[ 'sku_name' ],
|
|
'sku_image' => $sku_info[ 'sku_image' ]
|
|
];
|
|
model('promotion_discount_goods')->add($discount_goods_data);
|
|
model('goods_sku')->update([ 'promotion_type' => 1, 'discount_price' => $v[ 'discount_price' ], 'start_time' => $data[ 'start_time' ], 'end_time' => $data[ 'end_time' ] ], [ [ 'sku_id', '=', $v[ 'sku_id' ] ] ]);
|
|
}
|
|
}
|
|
if (!empty($data[ 'cancel_sku_list' ])) {
|
|
foreach ($data[ 'cancel_sku_list' ] as $kk => $vv) {
|
|
$sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $vv[ 'sku_id' ] ] ], 'goods_id, sku_id, sku_name,price,sku_image');
|
|
model('goods_sku')->update([ 'promotion_type' => 1, 'discount_price' => $sku_info [ 'price' ] ], [ [ 'sku_id', '=', $sku_info [ 'sku_id' ] ] ]);
|
|
}
|
|
}
|
|
|
|
//活动商品启动
|
|
$this->cronCloseDiscount($discount_id);
|
|
$this->cronOpenDiscount($discount_id);
|
|
$cron->deleteCron([ [ 'event', '=', 'OpenDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
|
|
$cron->deleteCron([ [ 'event', '=', 'CloseDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
|
|
$cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $data[ 'end_time' ], $discount_id);
|
|
|
|
} else {
|
|
$sku_list = $data[ 'sku_list' ];
|
|
unset($data[ 'sku_list' ]);
|
|
unset($data[ 'discount_id' ]);
|
|
if ($sku_list) $data[ 'discount_price' ] = $sku_list[ 0 ][ 'discount_price' ];
|
|
|
|
$res = model('promotion_discount')->update($data, [ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $data[ 'site_id' ] ] ]);
|
|
model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ] ]);
|
|
foreach ($sku_list as $k => $v) {
|
|
$sku_info = model('goods_sku')->getInfo([ [ 'sku_id', '=', $v[ 'sku_id' ] ] ], 'goods_id, sku_id, sku_name,price,sku_image');
|
|
if (!empty($sku_info)) {
|
|
$discount_goods_data = [
|
|
'discount_id' => $discount_id,
|
|
'start_time' => $data[ 'start_time' ],
|
|
'end_time' => $data[ 'end_time' ],
|
|
'goods_id' => $sku_info[ 'goods_id' ],
|
|
'sku_id' => $sku_info[ 'sku_id' ],
|
|
'price' => $sku_info[ 'price' ],
|
|
'discount_price' => $v[ 'discount_price' ],
|
|
'sku_name' => $sku_info[ 'sku_name' ],
|
|
'sku_image' => $sku_info[ 'sku_image' ]
|
|
];
|
|
|
|
model('promotion_discount_goods')->add($discount_goods_data);
|
|
}
|
|
}
|
|
|
|
$cron->deleteCron([ [ 'event', '=', 'OpenDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
|
|
$cron->deleteCron([ [ 'event', '=', 'CloseDiscount' ], [ 'relate_id', '=', $discount_id ] ]);
|
|
$cron->addCron(1, 0, "限时折扣开启", "OpenDiscount", $data[ 'start_time' ], $discount_id);
|
|
$cron->addCron(1, 0, "限时折扣关闭", "CloseDiscount", $data[ 'end_time' ], $discount_id);
|
|
}
|
|
|
|
return $this->success($res);
|
|
}
|
|
|
|
/**
|
|
* 手动关闭限时折扣
|
|
* @param unknown $discount_id
|
|
* @param unknown $site_id
|
|
* @return multitype:string
|
|
*/
|
|
public function closeDiscount($discount_id, $site_id)
|
|
{
|
|
$discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'start_time,status');
|
|
if (!empty($discount_info)) {
|
|
//针对正在进行的活动
|
|
if ($discount_info[ 'status' ] == 1) {
|
|
$res = model('promotion_discount')->update([ 'status' => -1 ], [ [ 'discount_id', '=', $discount_id ] ]);
|
|
|
|
// 删除商品营销活动标识
|
|
$this->deleteGoodsPromotionAddon($discount_id);
|
|
|
|
//商品恢复原价
|
|
Db::name('promotion_discount_goods')->alias('npdg')
|
|
->leftjoin("goods_sku ngs", "npdg.sku_id = ngs.sku_id")
|
|
->where([ [ 'npdg.discount_id', '=', $discount_id ] ])
|
|
->update(
|
|
[
|
|
"ngs.discount_price" => Db::raw('ngs.price'),
|
|
"ngs.promotion_type" => 0,
|
|
"ngs.start_time" => 0,
|
|
"ngs.end_time" => 0
|
|
]);
|
|
return $this->success($res);
|
|
} else {
|
|
return $this->error("", "正在进行的活动才能进行关闭操作");
|
|
}
|
|
} else {
|
|
return $this->error("", "活动不存在");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 启动限时折扣事件
|
|
* @param unknown $discount_id
|
|
*/
|
|
public function cronOpenDiscount($discount_id)
|
|
{
|
|
$discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ] ], 'start_time,status');
|
|
if (!empty($discount_info)) {
|
|
if ($discount_info[ 'start_time' ] <= time() && $discount_info[ 'status' ] != 1) {
|
|
$res = model('promotion_discount')->update([ 'status' => 1 ], [ [ 'discount_id', '=', $discount_id ] ]);
|
|
|
|
// 删除商品营销活动标识
|
|
$this->deleteGoodsPromotionAddon($discount_id);
|
|
Db::name('promotion_discount_goods')->alias('npdg')
|
|
->leftjoin("goods_sku ngs", "npdg.sku_id = ngs.sku_id")
|
|
->where([ [ 'npdg.discount_id', '=', $discount_id ] ])
|
|
->update(
|
|
[
|
|
"ngs.discount_price" => Db::raw('npdg.discount_price'),
|
|
"ngs.promotion_type" => 1,
|
|
"ngs.start_time" => Db::raw('npdg.start_time'),
|
|
"ngs.end_time" => Db::raw('npdg.end_time')
|
|
]);
|
|
return $this->success($res);
|
|
} else {
|
|
return $this->error("", "限时折扣活动已开启或者关闭");
|
|
}
|
|
|
|
} else {
|
|
return $this->error("", "限时折扣活动不存在");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 结束限时折扣事件
|
|
* @param unknown $discount_id
|
|
*/
|
|
public function cronCloseDiscount($discount_id)
|
|
{
|
|
$discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ] ], 'start_time,status');
|
|
if (!empty($discount_info)) {
|
|
//针对正在进行的活动
|
|
if ($discount_info[ 'status' ] == 1) {
|
|
$res = model('promotion_discount')->update([ 'status' => 2 ], [ [ 'discount_id', '=', $discount_id ] ]);
|
|
|
|
// 删除商品营销活动标识
|
|
$this->deleteGoodsPromotionAddon($discount_id);
|
|
|
|
//商品恢复原价
|
|
Db::name('promotion_discount_goods')->alias('npdg')
|
|
->leftjoin("goods_sku ngs", "npdg.sku_id = ngs.sku_id")
|
|
->where([ [ 'npdg.discount_id', '=', $discount_id ] ])
|
|
->update(
|
|
[
|
|
"ngs.discount_price" => Db::raw('ngs.price'),
|
|
"ngs.promotion_type" => 0,
|
|
"ngs.start_time" => 0,
|
|
"ngs.end_time" => 0
|
|
]);
|
|
return $this->success($res);
|
|
} else {
|
|
return $this->error("", "正在进行的活动才能进行关闭操作");
|
|
}
|
|
} else {
|
|
return $this->error("", "活动不存在");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除限时折扣活动(针对未进行中)
|
|
* @param unknown $discount_id
|
|
*/
|
|
public function deleteDiscount($discount_id, $site_id)
|
|
{
|
|
$res = model('promotion_discount')->delete([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ], [ 'status', '<>', 1 ] ]);
|
|
if ($res) {
|
|
// 删除商品营销活动标识
|
|
$this->deleteGoodsPromotionAddon($discount_id);
|
|
model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ] ]);
|
|
return $this->success($res);
|
|
} else {
|
|
return $this->error('', "正在进行中或者权限不足");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 删除限时折扣商品
|
|
*/
|
|
public function deleteDiscountGoods($discount_id, $sku_id, $site_id)
|
|
{
|
|
$discount_info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'status');
|
|
if (!empty($discount_info)) {
|
|
|
|
// 删除商品营销活动标识
|
|
$this->deleteGoodsPromotionAddon($discount_id, $sku_id);
|
|
|
|
$res = model('promotion_discount_goods')->delete([ [ 'discount_id', '=', $discount_id ], [ 'sku_id', '=', $sku_id ] ]);
|
|
if ($res && $discount_info[ 'status' ] == 1) {
|
|
model('goods_sku')->update(
|
|
[
|
|
"discount_price" => Db::raw('price'),
|
|
"promotion_type" => 0,
|
|
"start_time" => 0,
|
|
"end_time" => 0,
|
|
],
|
|
[ [ 'sku_id', '=', $sku_id ] ]);
|
|
}
|
|
return $this->success($res);
|
|
} else {
|
|
return $this->error('', '活动不存在');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取限时折扣基础信息
|
|
*/
|
|
public function getDiscountInfo($discount_id, $site_id)
|
|
{
|
|
$info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'discount_id, site_id, discount_name, status, remark, start_time, end_time, create_time, modify_time');
|
|
return $this->success($info);
|
|
}
|
|
|
|
/**
|
|
* 获取限时折扣详情
|
|
*/
|
|
public function getDiscountDetail($discount_id, $site_id)
|
|
{
|
|
$info = model('promotion_discount')->getInfo([ [ 'discount_id', '=', $discount_id ], [ 'site_id', '=', $site_id ] ], 'goods_id,discount_id, site_id, discount_name, status, remark, start_time, end_time, create_time, modify_time');
|
|
|
|
$goods_sku = model('goods_sku')->getList([ [ 'goods_id', '=', $info[ 'goods_id' ] ] ], 'goods_name, stock, goods_id, sku_id, sku_name,price,sku_image');
|
|
|
|
$discount_goods = model("promotion_discount_goods")->getList([ [ 'goods_id', '=', $info[ 'goods_id' ] ], [ 'discount_id', '=', $info[ 'discount_id' ] ] ], '*');
|
|
foreach ($goods_sku as $k => $v) {
|
|
$goods_sku[ $k ][ 'stock' ] = numberFormat($goods_sku[ $k ][ 'stock' ]);
|
|
$goods_sku[ $k ][ 'is_select' ] = 0;
|
|
$goods_sku[ $k ][ 'discount_price' ] = $v[ 'price' ];
|
|
foreach ($discount_goods as $key => $val) {
|
|
if ($val[ 'sku_id' ] == $v[ 'sku_id' ]) {
|
|
$goods_sku[ $k ][ 'is_select' ] = 1;
|
|
$goods_sku[ $k ][ 'discount_price' ] = $val[ 'discount_price' ];
|
|
}
|
|
}
|
|
}
|
|
|
|
$info[ 'goods_sku' ] = $goods_sku;
|
|
$info[ 'discount_goods' ] = $discount_goods;
|
|
return $this->success($info);
|
|
}
|
|
|
|
public function getDiscountGoods($discount_id)
|
|
{
|
|
$list = model('promotion_discount_goods')->getList([ [ 'discount_id', '=', $discount_id ] ], 'id, discount_id, start_time, end_time, goods_id, sku_id, price, discount_price, sku_name, sku_image', 'id desc');
|
|
return $this->success($list);
|
|
}
|
|
|
|
/**
|
|
* 获取限时折扣信息
|
|
* @param $condition
|
|
* @param string $field
|
|
* @return array
|
|
*/
|
|
public function getDiscountGoodsInfo($condition, $field = '*')
|
|
{
|
|
$alias = 'pdg';
|
|
$join = [
|
|
[
|
|
'promotion_discount pd',
|
|
'pd.discount_id = pdg.discount_id',
|
|
'inner'
|
|
],
|
|
];
|
|
$info = model('promotion_discount_goods')->getInfo($condition, $field, $alias, $join);
|
|
return $this->success($info);
|
|
}
|
|
|
|
/**
|
|
* 获取参与限时折扣商品分页列表
|
|
* @param array $condition
|
|
* @param int $page
|
|
* @param int $list_rows
|
|
* @param string $field
|
|
* @param string $order
|
|
* @return array
|
|
*/
|
|
public function getDiscountGoodsPageList($condition = [], $page = 1, $list_rows = PAGE_LIST_ROWS, $field = 'pdg.id,pdg.discount_id,pdg.start_time,pdg.end_time,pdg.goods_id,pdg.sku_id,pdg.discount_price,pdg.sku_name,pdg.sku_image,sku.price', $order = 'pdg.id desc')
|
|
{
|
|
$alias = 'pdg';
|
|
$join = [
|
|
[ 'goods_sku sku', 'sku.sku_id=pdg.sku_id', 'inner' ]
|
|
];
|
|
$list = model('promotion_discount_goods')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join);
|
|
return $this->success($list);
|
|
}
|
|
|
|
/**
|
|
* 获取限时折扣商品详情
|
|
* @param $discount_id
|
|
* @param $goods_id
|
|
* @param $sku_id
|
|
* @return array
|
|
*/
|
|
public function getDiscountGoodsDetail($discount_id, $goods_id, $sku_id)
|
|
{
|
|
$alias = 'pd';
|
|
$join = [
|
|
[ 'promotion_discount_goods pdg', 'pd.discount_id=pdg.discount_id', 'inner' ]
|
|
];
|
|
$condition = [
|
|
[ 'pd.discount_id', '=', $discount_id ],
|
|
[ 'pd.status', '=', 1 ],
|
|
[ 'pdg.goods_id', '=', $goods_id ],
|
|
[ 'pdg.sku_id', '=', $sku_id ],
|
|
];
|
|
|
|
$info = model('promotion_discount')->getInfo($condition, 'pd.discount_id,pd.site_id,pd.discount_name,pdg.goods_id,pdg.sku_id,pdg.price,pdg.discount_price', $alias, $join);
|
|
return $this->success($info);
|
|
}
|
|
|
|
/**
|
|
* 获取限时折扣列表
|
|
* @param array $condition
|
|
* @param string $field
|
|
* @param string $order
|
|
* @param string $limit
|
|
*/
|
|
public function getDiscountList($condition = [], $field = '*', $order = '', $limit = null)
|
|
{
|
|
$list = model('promotion_discount')->getList($condition, $field, $order, '', '', '', $limit);
|
|
return $this->success($list);
|
|
}
|
|
|
|
/**
|
|
* 获取限时折扣分页列表
|
|
* @param array $condition
|
|
* @param number $page
|
|
* @param string $page_size
|
|
* @param string $order
|
|
* @param string $field
|
|
*/
|
|
public function getDiscountPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*', $alias = '', $join = [])
|
|
{
|
|
$list = model('promotion_discount')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
|
|
return $this->success($list);
|
|
}
|
|
|
|
/**
|
|
* 删除商品营销活动标识
|
|
* @param $discount_id
|
|
* @param int $sku_id
|
|
*/
|
|
private function deleteGoodsPromotionAddon($discount_id, $sku_id = 0)
|
|
{
|
|
$goods = new Goods();
|
|
$condition = [
|
|
[ 'discount_id', '=', $discount_id ]
|
|
];
|
|
if (!empty($sku_id)) {
|
|
$condition[] = [ 'sku_id', '=', $sku_id ];
|
|
}
|
|
$goods_list = model('promotion_discount_goods')->getList($condition, 'goods_id');
|
|
foreach ($goods_list as $k => $v) {
|
|
$goods->modifyPromotionAddon($v[ 'goods_id' ], [ 'discount' => $discount_id ], true);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 获取商品列表
|
|
* @param $discount_id
|
|
* @param $site_id
|
|
* @return array
|
|
*/
|
|
public function getDiscountGoodsList($discount_id)
|
|
{
|
|
$field = 'pdg.*,sku.sku_name,sku.price,sku.sku_image,sku.stock';
|
|
$alias = 'pdg';
|
|
$join = [
|
|
[
|
|
'goods g',
|
|
'g.goods_id = pdg.goods_id',
|
|
'inner'
|
|
],
|
|
[
|
|
'goods_sku sku',
|
|
'sku.sku_id = pdg.sku_id',
|
|
'inner'
|
|
]
|
|
];
|
|
$condition = [
|
|
[ 'pdg.discount_id', '=', $discount_id ],
|
|
[ 'g.is_delete', '=', 0 ], [ 'g.goods_state', '=', 1 ]
|
|
];
|
|
|
|
$list = model('promotion_discount_goods')->getList($condition, $field, '', $alias, $join);
|
|
return $this->success($list);
|
|
}
|
|
} |