96 lines
3.5 KiB
PHP
96 lines
3.5 KiB
PHP
<?php
|
||
|
||
|
||
namespace Yunshop\Redpack\services;
|
||
|
||
|
||
|
||
|
||
use app\framework\Http\Request;
|
||
use Yunshop\Redpack\model\Activity;
|
||
use app\common\models\Goods;
|
||
|
||
class RuleService
|
||
{
|
||
|
||
//获取活动基本规则数据 getGoods:是否获取购买指定商品规则的商品数据
|
||
public function getExchangeRule($activityModel,$getGoods=false){
|
||
if (!$activityModel) {
|
||
$activityModel = new Activity();
|
||
}
|
||
$exchange_choose = [];
|
||
$activityModel->exchange_tab = ['credit','invite','consume','goods'];
|
||
$exchange_name = ['积分兑换','直推奖励','累计消费','购买商品'];
|
||
$activityModel->exchange_rule = $activityModel->exchange_rule ? array_column(unserialize($activityModel->exchange_rule),null,'key') : [];
|
||
$goods_list = [];
|
||
foreach ($activityModel->exchange_tab as $k=>$v){
|
||
$this_rule = [
|
||
'key'=>$v,
|
||
'name'=>$exchange_name[$k],
|
||
'is_open'=>$activityModel->exchange_rule[$v]['is_open'] ? : 0,
|
||
'exchange_num'=>$activityModel->exchange_rule[$v]['exchange_num'] ? : 0,
|
||
'reward_num'=>$activityModel->exchange_rule[$v]['reward_num'] ? : 1,
|
||
];
|
||
|
||
switch ($v){
|
||
case 'credit':
|
||
$text = ['积分兑换次数','积分','兑换'];
|
||
break;
|
||
case 'invite':
|
||
$text = ['直推','人','奖励'];
|
||
break;
|
||
case 'consume':
|
||
$text = ['消费金额累计满','元','获得'];
|
||
break;
|
||
case 'goods':
|
||
$text = ['购买指定商品之一奖励','次挑战次数'];
|
||
if ($getGoods && $this_rule['is_open'] && !empty($this_rule['exchange_num'])){
|
||
$goods_list = Goods::select('thumb AS url','id AS data','title AS name')->whereNull('deleted_at')
|
||
->whereIn('id',explode(',',$this_rule['exchange_num']))->where('status',1)->get()->toArray();
|
||
}
|
||
break;
|
||
}
|
||
$this_rule['text'] = $text ? : ['','',''];
|
||
$exchange_rule[] = $this_rule;
|
||
if ($this_rule['is_open']) $exchange_choose[] = $v;
|
||
}
|
||
$activityModel->exchange_choose = $exchange_choose;
|
||
$activityModel->exchange_rule = $exchange_rule;
|
||
|
||
if ($getGoods){
|
||
return ['model'=>$activityModel,'goods'=>$goods_list];
|
||
}else{
|
||
return $activityModel;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
//格式化后台页面传来的规则数据,兼容数据库保存
|
||
public function storeRule($form_data){
|
||
unset($form_data['exchange_tab']);
|
||
unset($form_data['picArr']);
|
||
$form_data['start_time'] = $form_data['countdown_time'][0];
|
||
$form_data['end_time'] = $form_data['countdown_time'][1];
|
||
if (!empty($form_data['exchange_rule'])){
|
||
foreach ($form_data['exchange_rule'] as $k=>&$v){
|
||
unset($form_data['exchange_rule'][$k]['text']);
|
||
if (in_array($v['key'],$form_data['exchange_choose'])){
|
||
$v['is_open'] = 1;
|
||
}else{
|
||
$v['is_open'] = 0;
|
||
$v['exchange_num'] = 0;
|
||
$v['reward_num'] = 0;
|
||
}
|
||
}
|
||
unset($form_data['exchange_choose']);
|
||
$form_data['exchange_rule'] = serialize($form_data['exchange_rule']);
|
||
}
|
||
|
||
return $form_data;
|
||
}
|
||
|
||
|
||
|
||
|
||
} |