'添加赠品规则', 'href'=>'index.php?app=crm&ctl=admin_gift_rulebase&act=addRuleBase', ), array('label'=>app::get('crm')->_('删除'),'icon' => 'del.gif', 'confirm' =>'确定删除选中项?','submit'=>'index.php?app=crm&ctl=admin_gift_rulebase&act=delRuleBase',), ); $base_filter = array(); $this->finder('crm_mdl_gift_rule_base',array( 'title' => '赠品规则', 'actions' => $actions, 'base_filter' => $base_filter, 'orderBy' => 'id DESC', 'use_buildin_recycle' => false, 'use_buildin_filter' => true, 'use_buildin_export' => false, 'use_view_tab' => false, )); } /** * 添加RuleBase * @return mixed 返回值 */ public function addRuleBase() { $this->editRuleBase(); } /** * editRuleBase * @return mixed 返回值 */ public function editRuleBase() { $id = $_GET['id']; $gifts = array(); $bm_id = array(); $sm_id = array(); //修改规则信息 if($id > 0){ $ruleBase = app::get('crm')->model('gift_rule_base')->dump($id,'*'); $ruleBase['filter_arr'] = json_decode($ruleBase['filter_arr'], true); $bm_id = $ruleBase['filter_arr']['buy_goods']['bm_id'] ? : []; $sm_id = $ruleBase['filter_arr']['buy_goods']['sm_id'] ? : []; if($ruleBase['gift_list']) { $giftList = unserialize($ruleBase['gift_list']); $giftRows = app::get('crm')->model('gift')->getList('*,"checked" as checked',array('gift_id'=>array_keys($giftList))); $keySort = array_keys($giftList); $gifts = array(); foreach($giftRows as $k=>$v){ $v['id'] = $v['gift_id']; $v['gift_name'] = $v['gift_name'];//mb_substr($v['gift_name'],0,22,'utf-8'); $v['num'] = $giftList[$v['id']]; $key = array_search($v['id'], $keySort); $gifts[$key] = $v; } ksort($gifts); } //复制赠品规则 if (isset($_GET['type']) && $_GET['type'] == 'copy') { list($micro, $time) = explode(" ", microtime()); $microtime = sprintf("%06d", $micro * 1000000);//转成六位数字(不足时前面补零) $position = strrpos($ruleBase['rule_bn'], "_"); //找到最后一次的下划线位置 $firstPart = $position ? substr($ruleBase['rule_bn'], 0, $position) : $ruleBase['rule_bn']; //从开始截取到下划线前 $ruleBase['rule_bn'] = sprintf('%s_%s', $firstPart, $microtime); unset($ruleBase['id']); } } $this->pagedata['type'] = isset($_GET['type']) ? $_GET['type'] : ''; $this->pagedata['gifts'] = $gifts; $this->pagedata['rule'] = $ruleBase; $this->pagedata['bm_id'] = $bm_id; $sign = '基础物料'; $func = 'product_selected_show'; $domid = 'hand-selected-product'; $count = count($bm_id); $this->pagedata['bcreplacehtml'] = <<已选择了{$count}{$sign}  查看选中{$sign} EOF; $this->pagedata['sm_id'] = $sm_id; $sign = '销售物料'; $func = 'sm_selected_show'; $domid = 'hand-selected-sm'; $count = count($sm_id); $this->pagedata['smreplacehtml'] = <<已选择了{$count}{$sign}  查看选中{$sign} EOF; $order_types = array(); $order_types["normal"] = array("type" => "normal", "text" => "普通订单"); $order_types["presale"] = array("type" => "presale", "text" => "预售订单"); $this->pagedata['order_types'] = $order_types; $this->page('admin/gift/rule_edit_base.html'); } /** * ajax_get_gifts * @return mixed 返回值 */ public function ajax_get_gifts(){ // 参数处理 $s_gift_bn = trim($_POST['s_gift_bn']); // 赠品编码 $s_gift_name = trim($_POST['s_gift_name']); // 赠品名称 $sel_goods = explode(',', $_POST['sel_goods']); // 处理搜索条件 if($s_gift_bn){ $filter['gift_bn|has'] = $s_gift_bn; } if($s_gift_name){ $filter['gift_name|has'] = $s_gift_name; } $filter['is_del'] = '0'; // 只获取开启状态的货品 // 调用model获取商品信息 $rs = $this->app->model('gift')->getList('gift_id as id,gift_bn,gift_name,gift_price', $filter); foreach($rs as $k=>$v){ if(in_array($v['id'], $sel_goods)){ unset($rs[$k]); } } echo(json_encode(array_values($rs))); } #显示选用的货品 /** * showProducts * @return mixed 返回值 */ public function showProducts(){ $bm_id = kernel::single('base_component_request')->get_post('bm_id'); if ($bm_id) { $this->pagedata['_input'] = array( 'name' => 'bm_id', 'idcol' => 'bm_id', '_textcol' => 'material_bn', ); $productModel = app::get('material')->model('basic_material'); $list = $productModel->getList("bm_id,material_name,CONCAT('货号:',material_bn,' ; 货品名称:',material_name) as material_bn ",array('bm_id'=>$bm_id),0,-1,'bm_id asc'); $this->pagedata['_input']['items'] = $list; } $this->display('admin/gift/show_products.html'); } #显示所选的捆绑商品 /** * showPkg * @return mixed 返回值 */ public function showPkg() { $sm_id = kernel::single('base_component_request')->get_post('sm_id'); if ($sm_id) { $this->pagedata['_input'] = array( 'name' => 'sm_id', 'idcol' => 'sm_id', '_textcol' => 'sales_material_bn', ); $smModel = app::get('material')->model('sales_material'); $list = $smModel->getList("sm_id,sales_material_name,CONCAT('货号:',sales_material_bn,' ; 货品名称:',sales_material_name) as sales_material_bn",array('sm_id'=>$sm_id),0,-1,'sm_id asc'); $this->pagedata['_input']['items'] = $list; } $this->display('admin/gift/show_pkg.html'); } /** * 保存 * @return mixed 返回操作结果 */ public function save(){ // 启动事务 $this->begin("index.php?app=crm&ctl=admin_gift_rulebase&act=index"); // 不限量的情况 清除相关条件 if(empty($_POST['filter_arr']['buy_goods']['limit_type']) || $_POST['filter_arr']['buy_goods']['limit_type'] ==0){ unset($_POST['filter_arr']['buy_goods']['limit_time_day'],$_POST['filter_arr']['buy_goods']['limit_orders']); } // 订单达人 if ($_POST['filter_arr']['is_host']['type'] == 'assign') { if (empty(trim($_POST['filter_arr']['is_host']['author']))) { $this->end(false,'指定达人订单,达人ID为必填'); } $_POST['filter_arr']['is_host']['author'] = str_replace(',', ',', trim($_POST['filter_arr']['is_host']['author'])); $_POST['filter_arr']['is_host']['room'] = str_replace(',', ',', trim($_POST['filter_arr']['is_host']['room'])); } else { unset($_POST['filter_arr']['is_host']['author']); unset($_POST['filter_arr']['is_host']['room']); } // 引入赠品规则类 $shopGiftObj = app::get('crm')->model('gift_rule_base'); // 组合数据 $data = $_POST; $data['filter_arr'] = $_POST['filter_arr']; $data['gift_ids'] = $_POST['gift_id']; $data['gift_num'] = $_POST['gift_num']; $data['modified_time'] = time(); $data['filter_arr']['buy_goods']['bm_id'] = null; $data['filter_arr']['buy_goods']['sm_id'] = null; $data['filter_arr']['buy_goods']['goods_bn'] = null; if(!empty( $_POST['filter_arr']['buy_goods']['type']) ){ $select_bm_id = $_POST['bm_id']; $select_sm_id = $_POST['sm_id']; if($_POST['filter_arr']['buy_goods']['type'] == '1'){ if(empty($select_sm_id)) { $this->end(false,'已选择指定销售物料,请至少选择一个销售物料'); } $obj_sales_material = app::get('material')->model('sales_material'); foreach($select_sm_id as $id){ $salesMaterial = $obj_sales_material ->getList('sales_material_bn,sm_id',array('sm_id'=>$id)); $data['filter_arr']['buy_goods']['sm_id'][] = $salesMaterial[0]['sm_id']; $data['filter_arr']['buy_goods']['goods_bn'][] = trim(strtoupper($salesMaterial[0]['sales_material_bn'])); } unset($data['sm_id']); } elseif($_POST['filter_arr']['buy_goods']['type'] == '2') { if(empty($select_bm_id)) { $this->end(false,'已选择指定基础物料,请至少选择一个基础物料'); } $obj_products = app::get('material')->model('basic_material'); foreach($select_bm_id as $id){ $product_info = $obj_products->getList('material_bn,bm_id',array('bm_id'=>$id)); $data['filter_arr']['buy_goods']['bm_id'][] = $product_info[0]['bm_id']; $data['filter_arr']['buy_goods']['goods_bn'][] = trim(strtoupper($product_info[0]['material_bn'])); } unset($data['bm_id']); } else { $this->end(false,'未知的类型'); } if(empty($_POST['filter_arr']['buy_goods']['calculate_type'])){ $this->end(false,'已选择指定商品类型,请选择计算方式'); } } $data['filter_arr'] = json_encode($data['filter_arr']); if(!$data['id']) $data['create_time'] = time(); // 清理gift_num foreach($data['gift_num'] as $k=>$v){ if(!in_array($k, $data['gift_ids'])){ unset($data['gift_num'][$k]); } } $data['gift_list'] = serialize($data['gift_num']); if($shopGiftObj->db_save($data)){ // 数据快照 if($data['id']){ // 获取规则信息 $sdf = $shopGiftObj->dump($data['id'], '*'); // 获取商品信息 $sdf['goodsInfo'] = app::get('crm')->model('gift')->getList('*',array('gift_id'=>$data['gift_ids'])); $sdf = array( 'title' => '赠品规则发生变动', 'content' => json_encode($sdf), 'task_id' => $data['id'], ); $this->gift_rule_change($sdf); } //保存赠品规则记录 $giftLib = kernel::single('crm_gift'); $error_msg = ''; $result = $giftLib->save_gift_rule_logs($data, $error_msg); $this->end(true,'添加成功'); }else{ $this->end(false,'添加失败,已经使用过该编码了'); } } /** * gift_rule_change * @param mixed $sdf sdf * @return mixed 返回值 */ public function gift_rule_change($sdf){ $mdl_snapshot = app::get('crm')->model('snapshot'); $data = array( 'task_id' => $sdf['task_id'], 'type' => 3, 'title' => $sdf['title'], 'content' => $sdf['content'], 'op_user' => kernel::single('desktop_user')->get_name(), 'create_time' => date('Y-m-d H:i:s'), ); $mdl_snapshot->save($data); return true; } /** * delRuleBase * @return mixed 返回值 */ public function delRuleBase(){ $this->begin('index.php?app=crm&ctl=admin_gift_rulebase&act=index'); $obj_rule = app::get('crm')->model('gift_rule'); $obj_ruleBase = app::get('crm')->model('gift_rule_base'); $isSelectedAll = $_POST['isSelectedAll']; $ids = $_POST['id']; if($isSelectedAll != '_ALL_' && $ids){ $basefilter = array('id'=>$ids); }else{ $basefilter = array(); } $ids = $obj_ruleBase->getList('id',$basefilter); $rule_ids = array_map('current',$ids); $filter = array( 'status' => '1', 'disable' => 'false', 'filter_sql' => '(' . time() .' BETWEEN start_time AND end_time)' ); $ruleRows = $obj_rule->getList('*', $filter); foreach($ruleRows as $rule) { #赠品判断条件 $rule['filter_arr'] = json_decode($rule['filter_arr'], true); if($rule['filter_arr']['add_or_divide']) { foreach ($rule['filter_arr']['id'] as $val) { if(in_array($val, $rule_ids)) { $this->end(false, '规则在活动中,不能删除'); } } } } $obj_ruleBase->update(array('disabled'=>'true'),array('id|in'=>$rule_ids)); $this->end(true, $this->app->_('删除成功')); } /** * view_rule * @return mixed 返回值 */ public function view_rule(){ $rule = array( 'filter_arr' => array( 'order_amount' => array( 'type'=>0 ), 'buy_goods' => array( 'type'=>0 ), ), ); if(isset($_GET['snapshot_id'])){ $snapshot_id = floatval($_GET['snapshot_id']); $snapshot = app::get('crm')->model('snapshot')->db_dump($snapshot_id); $rule = json_decode($snapshot['content'], true); $rule['filter_arr'] = json_decode($rule['filter_arr'], true); } // 去除空的货号 foreach($rule['filter_arr']['buy_goods']['goods_bn'] as $k=>$v){ if( ! $v) unset($rule['filter_arr']['buy_goods']['goods_bn'][$k]); } // 已经设定的赠品组合 $gifts = array(); if($rule['gift_list']){ $giftList = unserialize($rule['gift_list']); $keySort = array_keys($giftList);; foreach ($rule['goodsInfo'] as $key=>$val){ $val['num'] = $giftList[$val['gift_id']]; $val['gift_bn'] = $val['gift_bn']; $val['gift_name'] = $val['gift_name'];//mb_substr($val['gift_name'],0,22,'utf-8'); $val['gift_price'] = $val['gift_price']; $k = array_search($val['gift_id'], $keySort); $gifts[$k] = $val; } ksort($gifts); } $this->pagedata['gifts'] = $gifts; $this->pagedata['rule'] = $rule; $this->display('admin/gift/rule_base_view.html'); } /** * 复制赠品规则 * @date 2024-10-08 2:28 下午 */ public function copy_rulebase() { $_GET['type'] = 'copy'; $this->editRuleBase(); } }