You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
5.6 KiB
158 lines
5.6 KiB
<?php
|
|
|
|
namespace App\Service;
|
|
|
|
use App\Model\Order;
|
|
use App\Model\OrderGoods;
|
|
use App\Model\OrderMain;
|
|
use Hyperf\Di\Annotation\Inject;
|
|
use Hyperf\DbConnection\Db;
|
|
use App\Model\Goods;
|
|
use App\Model\Combination;
|
|
use App\Model\ShopCar;
|
|
use App\Constants\LogLabel;
|
|
use App\Commons\Log;
|
|
use Hyperf\Utils\ApplicationContext;
|
|
use App\TaskWorker\SSDBTask;
|
|
use App\Constants\SsdbKeysPrefix;
|
|
use App\Model\Ad;
|
|
|
|
class PurchaseLimitService implements PurchaseLimitServiceInterface
|
|
{
|
|
/**
|
|
* @Inject
|
|
* @var ParamsTokenServiceInterface
|
|
*/
|
|
protected $paramsTokenService;
|
|
|
|
/**
|
|
* @Inject
|
|
* @var AdServiceInterface
|
|
*/
|
|
protected $adService;
|
|
|
|
public function getStoreIdByMarketId($params)
|
|
{
|
|
$market_id = $params['market_id'] ?? 0;
|
|
//获取ssdb上的首页banner logo 列表
|
|
$logo_list = $this->paramsTokenService->analyze('banner_logo_list');
|
|
//获取ssdb上的首页banner 市场 列表
|
|
$market_list = $this->paramsTokenService->analyze('banner_market_list');
|
|
//根据前端指定的指获取店铺id 字符串 并拆分成数组
|
|
if(isset($market_list['market_id_'.$market_id]) && !empty($market_list['market_id_'.$market_id])) {
|
|
$store_list = $market_list['market_id_' . $market_id];
|
|
$store_list = explode(',', $store_list);
|
|
//遍历店铺
|
|
foreach ($store_list as $store_id) {
|
|
$banners[] = [
|
|
'id' => $store_id,
|
|
'item' => 1,
|
|
'item_text' => 'page',
|
|
'logo' => $logo_list['store_id_' . $store_id],
|
|
'redirect_url' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid=' . $store_id,
|
|
'src' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid=' . $store_id,
|
|
'src2' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid=' . $store_id,
|
|
];
|
|
}
|
|
}else{
|
|
$banners = Ad::query()->select(['id','title','logo','item','src','src2'])
|
|
->where([
|
|
'type' => Ad::TYPE_BANNER,
|
|
'status' => Ad::STATUS_YES
|
|
])
|
|
->orderBy('orderby', 'desc')
|
|
->get();
|
|
}
|
|
return $banners;
|
|
}
|
|
|
|
public function getBannerByMarketId($params)
|
|
{
|
|
$market_id = $params['market_id'] ?? 0;
|
|
//获取ssdb上的首页banner logo 列表
|
|
$logo_list = $this->paramsTokenService->analyze('banner_logo_list');
|
|
//获取ssdb上的首页banner 市场 列表
|
|
$market_list = $this->paramsTokenService->analyze('banner_market_list');
|
|
//根据前端指定的指获取店铺id 字符串 并拆分成数组
|
|
if(isset($market_list['market_id_'.$market_id]) && !empty($market_list['market_id_'.$market_id])) {
|
|
$store_list = $market_list['market_id_' . $market_id];
|
|
$store_list = explode(',', $store_list);
|
|
//遍历店铺
|
|
foreach ($store_list as $store_id) {
|
|
$banners[] = [
|
|
'id' => $store_id,
|
|
'item' => 1,
|
|
'item_text' => 'page',
|
|
'logo' => $logo_list['store_id_' . $store_id],
|
|
'redirect_url' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid=' . $store_id,
|
|
'src' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid=' . $store_id,
|
|
'src2' => '/zh_cjdianc/pages/takeout/takeoutindex?storeid=' . $store_id,
|
|
];
|
|
}
|
|
}else{
|
|
$banners = $this->adService->banners();
|
|
}
|
|
return $banners;
|
|
}
|
|
|
|
public function ssdbPurchaseRecord($data,$user_id,$global_order_id)
|
|
{
|
|
foreach ($data as $k => $v){
|
|
if($v['money'] == 0.01){
|
|
//添加特价商品购买记录到ssdb
|
|
$ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
|
|
$ssdb->exec('set', SsdbKeysPrefix::PURCHASE_RECORD. date('Ymd') .'_'.$user_id.'_'.$v['good_id'], $global_order_id);
|
|
$end_timestamp = strtotime(date('Y-m-d').'23:59:59');
|
|
$end_time = $end_timestamp - time();
|
|
$ssdb->exec('expire', SsdbKeysPrefix::PURCHASE_RECORD. date('Ymd') .'_'.$user_id.'_'.$v['good_id'],$end_time);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function delSsdbPurchaseRecord($global_order_id)
|
|
{
|
|
$order_main = OrderMain::where('global_order_id',$global_order_id)
|
|
->select('id','user_id')
|
|
->first();
|
|
|
|
$order_id = $order_main->id;
|
|
|
|
$ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
|
|
$order = Order::query()
|
|
->where('order_main_id',$order_id)
|
|
->select('id','user_id')
|
|
->get()
|
|
->toArray();
|
|
foreach ($order as $k1 => $v1){
|
|
$goods = OrderGoods::query()
|
|
->where([
|
|
['order_id','=',$v1['id']],
|
|
['money','=',0.01],
|
|
])
|
|
->select('good_id')
|
|
->get()
|
|
->toArray();
|
|
|
|
foreach ($goods as $k2 => $v2) {
|
|
$ssdb->exec('del', SsdbKeysPrefix::PURCHASE_RECORD. date('Ymd') .'_'.$v1['user_id'].'_'.$v2['good_id']);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function PurchaseLimit($orderGoods)
|
|
{
|
|
$sum = 0;
|
|
foreach ($orderGoods as $goods){
|
|
if($goods['money'] == 0.01){
|
|
if($sum > 0){
|
|
return false;
|
|
}
|
|
$sum++;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
}
|