bztang-admin/plugins/redpack/src/services/RuleService.php

96 lines
3.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}