add(); exit; } $base_filter = array('disable'=>'false'); $this->finder('crm_mdl_gift_rule',array( 'title'=>'赠品规则应用', 'actions'=>array( array( 'label'=>'添加赠品规则应用', 'href'=>'index.php?app=crm&ctl=admin_gift_rule&act=index&p[0]=add', ), array('label'=>app::get('crm')->_('删除'),'icon' => 'del.gif', 'confirm' =>'确定删除选中项?','submit'=>'index.php?app=crm&ctl=admin_gift_rule&act=delRule',), array( 'label' => '批量关闭', 'submit' => 'index.php?app=crm&ctl=admin_gift_rule&act=batchClose', 'target' => 'dialog::{width:600,height:300,title:\'批量关闭\'}"' ), array( 'label' => '批量开启', 'submit' => 'index.php?app=crm&ctl=admin_gift_rule&act=batchopen', 'target' => 'dialog::{width:600,height:300,title:\'批量开启\'}"' ), ), 'base_filter'=>$base_filter, 'orderBy' => 'status DESC,priority DESC,id DESC', 'use_buildin_recycle' => false, 'use_buildin_filter' => true, )); } function add(){ $this->edit(); } function edit(){ $shopObj = app::get('ome')->model('shop'); $id = intval($_GET['id']); $filter = array(); $shops_name = $shopObj->getList('node_type,shop_id,name',$filter); foreach($shops_name as $v){ $shops[$v['shop_id']] = $v['name']; } $rule = array( 'start_time' => strtotime(date('Y-m-d')), 'status' => 1, 'time_type' => 'pay_time', 'lv_id' => 0, 'filter_arr' => array( 'add_or_divide' => 'add', ), ); //修改规则信息 if($id > 0){ $rule = $this->app->model('gift_rule')->dump($id,'*'); $rule['filter_arr'] = json_decode($rule['filter_arr'], true); if($rule['shop_ids']){ $rule['shop_ids'] = explode(',', $rule['shop_ids']); } //复制赠品规则应用 if (isset($_GET['type']) && $_GET['type'] == 'copy') { unset($rule['id']); } if(!$rule['filter_arr']['add_or_divide'] && !$rule['id']) { die('非赠品规则应用,不能编辑

'); } } $big_region = array( 'northern_china' => '华北地区', 'northeast_china' => '东北地区', 'eastern_china' => '华东地区', 'southcentral_china'=> '中南地区', 'southwest_china' => '西南地区', 'northwest_china' => '西北地区', 'hk_mc_tw' => '港澳台地区', ); // $big_region_list = array( // 'northern_china' => array('北京','天津','河北','山西','内蒙古'), // 华北 // 'northeast_china' => array('辽宁','吉林','黑龙江'), // 东北 // 'eastern_china' => array('上海','江苏','浙江','江西','安徽','福建','山东'), // 华东 // 'southcentral_china'=> array('河南','湖北','湖南','广东','广西','海南'), // 中南 // 'southwest_china' => array('重庆','四川','贵州','云南','西藏'), // 西南 // 'northwest_china' => array('陕西','甘肃','青海','宁夏','新疆'), // 西北 // 'hk_mc_tw' => array('香港','澳门','台湾'), // 港澳台 // ); $province_affiliation = array( '北京' => 'northern_china', '天津' => 'northern_china', '河北' => 'northern_china', '山西' => 'northern_china', '内蒙古' => 'northern_china', '辽宁' => 'northeast_china', '吉林' => 'northeast_china', '黑龙江' => 'northeast_china', '上海' => 'eastern_china', '江苏' => 'eastern_china', '浙江' => 'eastern_china', '江西' => 'eastern_china', '安徽' => 'eastern_china', '福建' => 'eastern_china', '山东' => 'eastern_china', '河南' => 'southcentral_china', '湖北' => 'southcentral_china', '湖南' => 'southcentral_china', '广东' => 'southcentral_china', '广西' => 'southcentral_china', '海南' => 'southcentral_china', '重庆' => 'southwest_china', '四川' => 'southwest_china', '贵州' => 'southwest_china', '云南' => 'southwest_china', '西藏' => 'southwest_china', '陕西' => 'northwest_china', '甘肃' => 'northwest_china', '青海' => 'northwest_china', '宁夏' => 'northwest_china', '新疆' => 'northwest_china', '香港' => 'hk_mc_tw', '澳门' => 'hk_mc_tw', '台湾' => 'hk_mc_tw', ); $provinces_new = array(); $rs = app::get('eccommon')->model('regions')->getList('local_name',array('region_grade'=>1)); foreach($rs as $v){ $provinces[$v['local_name']] = $v['local_name']; foreach ($province_affiliation as $b_r_key => $b_r_value) { if (stripos($v['local_name'], $b_r_key) !== false) { $provinces_new[$v['local_name']] = $b_r_value; // $big_region_list[$b_r_value][$v['local_name']] = $v['local_name']; break; } } } $this->pagedata['big_region'] = $big_region; $this->pagedata['provinces_new'] = $provinces_new; $rule['start_time_hour'] = 0; if($rule['start_time']){ $rule['start_time_hour'] = (int)date('H', $rule['start_time']); } $rule['start_time_minitue'] = 0; if($rule['start_time']){ $rule['start_time_minitue'] = (int)date('i', $rule['start_time']); } $rule['start_time_second'] = 0; if($rule['start_time']){ $rule['start_time_second'] = (int)date('s', $rule['start_time']); } $rule['end_time_hour'] = 0; if($rule['end_time']){ $rule['end_time_hour'] = (int)date('H', $rule['end_time']); } $rule['end_time_minitue'] = 0; if($rule['end_time']){ $rule['end_time_minitue'] = (int)date('i', $rule['end_time']); } $rule['end_time_second'] = 0; if($rule['end_time']){ $rule['end_time_second'] = (int)date('s', $rule['end_time']); } $this->pagedata['conf_hours'] = array_merge(array('00','01','02','03','04','05','06','07','08','09'),range(10,23)); $this->pagedata['conf_minitue'] = array_merge(array('00','01','02','03','04','05','06','07','08','09'),range(10,59)); $this->pagedata['conf_second'] = array_merge(array('00','01','02','03','04','05','06','07','08','09'),range(10,59)); $this->pagedata['provinces'] = $provinces; $this->pagedata['shops'] = $shops; $this->pagedata['rule'] = $rule; $this->pagedata['beigin_time'] = date("Y-m-d",time()); $this->pagedata['end_time'] = date('Y-m-d',strtotime('+15 days')); $this->pagedata['bool_type'] = kernel::single('ome_order_bool_type')->getBoolTypeText(); $this->pagedata['finder_vid'] = $_GET['finder_vid']; $this->page('admin/gift/rule_edit.html'); } /** * view_rule * @return mixed 返回值 */ public function view_rule(){ $shopObj = app::get('ome')->model('shop'); $shop_id = $_GET['shop_id']; // 引入店铺model $shops_name = $shopObj->getList('shop_id,name'); foreach($shops_name as $v){ $shops[$v['shop_id']] = $v['name']; } $rule = array( 'start_time' => date('Y-m-d'), 'status' => 1, 'shop_id' => $shop_id, 'time_type' => 'pay_time', 'lv_id' => 0, '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')->dump($snapshot_id); $rule = json_decode($snapshot['content'], true); $rule['filter_arr'] = json_decode($rule['filter_arr'], true); } if($rule['shop_ids']){ $shop_ids = explode(',', $rule['shop_ids']); }else{ $shop_ids = array($rule['shop_id']); } if($shop_ids){ $rule['shop_ids'] = array(); foreach($shop_ids as $v){ $rule['shop_ids'][] = $shops[$v]; } $rule['shop_ids'] = implode(';', $rule['shop_ids']); } if($rule['filter_arr']['province'][0] == '_ALL_'){ $rule['filter_arr']['province'] = false; } if($rule['filter_arr']['add_or_divide']) { $this->pagedata['rule'] = $rule; $this->display('admin/gift/rule_apply_view.html');exit(); } // 去除空的货号 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_ids']){ $gift_num = explode(',', $rule['gift_num']); foreach ($rule['goodsInfo'] as $key=>$val){ $gifts[$key]['num'] = $gift_num[$key]; $gifts[$key]['gift_bn'] = $val['gift_goods_bn']; $gifts[$key]['gift_name'] = mb_substr($val['gift_goods_name'],0,22,'utf-8'); $gifts[$key]['gift_price'] = $val['gift_goods_price']; } } $this->pagedata['gifts'] = $gifts; $this->pagedata['rule'] = $rule; $this->pagedata['bool_type'] = kernel::single('ome_order_bool_type')->getBoolTypeText(); $this->display('admin/gift/rule_view.html'); } /** * priority * @param mixed $id ID * @return mixed 返回值 */ public function priority($id=0){ if($_POST){ $this->begin("index.php?app=crm&ctl=admin_gift_rule&act=index"); $shopGiftObj = app::get('crm')->model('gift_rule'); $data = $_POST; $data['priority'] = intval($_POST['priority']); $data['modified_time'] = time(); if($shopGiftObj->save($data)){ $this->end(true,'添加成功'); }else{ $this->end(false,'添加失败'); } } //修改规则信息 if($id>0){ $rule = $this->app->model('gift_rule')->dump($id); $rule['start_time'] = date("Y-m-d", $rule['start_time']); $rule['end_time'] = date("Y-m-d", $rule['end_time']); } $this->pagedata['rule'] = $rule; $this->pagedata['view'] = $_GET['view']; $this->display('admin/gift/priority.html'); } /** * 保存erp赠品规则 */ public function save_rule() { // 启动事务 $this->begin("index.php?app=crm&ctl=admin_gift_rule&act=index"); $shopGiftObj = $this->app->model('gift_rule'); // 检测参数 if(empty($_POST['shop_ids'])){ $this->end(false,'最选择店铺'); } if(empty($_POST['filter_arr']['province'])){ $_POST['filter_arr']['province'][] = '_ALL_';#不选区域,表示指定所有店铺 } //触发节点--补发赠品设置 if($_POST['trigger_type'] == 'order_complete'){ $_POST['defer_day'] = $_POST['defer_day'] ? intval($_POST['defer_day']) : 0; if(empty($_POST['defer_day'])){ $this->end(false, '请填写延迟天数,系统自动补发赠品'); }elseif($_POST['defer_day'] < 1){ $this->end(false, '请正确填写延迟天数,系统自动补发赠品'); } if($_POST['is_exclude'] != '1'){ $this->end(false, '订单延迟补发赠品,请选择[排他]模式'); } }else{ $_POST['defer_day'] = 0; } // 组合数据 $data = $_POST; $data['start_time'] = strtotime($data['start_time'].' '.$data['start_time_hour'].':'.$data['start_time_minitue'].':'.$data['start_time_second']); $data['end_time'] = strtotime($data['end_time'].' '.$data['end_time_hour'].':'.$data['end_time_minitue'].':'.$data['end_time_second']); $data['modified_time'] = time(); if(is_array($data['shop_ids']) && count($data['shop_ids'])>10){ $this->end(false,'最多只能选择十个店铺'); } if(empty($data['filter_arr']['add_or_divide']) || empty($data['filter_arr']['id'])) { $this->end(false,'赠品规则未选择'); } $data['shop_ids'] = implode(',', $data['shop_ids']); $data['filter_arr'] = json_encode($data['filter_arr']); if(!$data['id']) $data['create_time'] = time(); if($shopGiftObj->db_save($data)){ // 数据快照 if($data['id']){ // 获取规则信息 $sdf = $shopGiftObj->dump($data['id'], '*'); $sdf = array( 'title' => '赠品规则发生变动', 'content' => json_encode($sdf), 'task_id' => $data['id'], ); $this->gift_rule_change($sdf); } $this->end(true,'添加成功'); }else{ $this->end(false,'添加失败'); } } /** * logs * @return mixed 返回值 */ public function logs(){ $actions = array(); $base_filter = array(); $this->finder('crm_mdl_gift_logs',array( 'title' => '赠品发送列表' . $this->helpLink('/hc/sections/61790/'), 'actions' => $actions, 'base_filter' => $base_filter, 'orderBy' => 'id DESC', 'use_buildin_recycle' => false, 'use_buildin_filter' => true, 'use_buildin_export' => true, 'use_view_tab' => true, )); } /** * showSensitiveData * @param mixed $order_bn order_bn * @return mixed 返回值 */ public function showSensitiveData($order_bn) { $order = app::get('ome')->model('orders')->db_dump(array('order_bn'=>$order_bn,'order_type'=>'_ALL_'), 'order_bn,member_id,shop_type,shop_id,order_id'); if (!$order) { $order = app::get('archive')->model('orders')->db_dump(array('order_bn'=>$order_bn),'order_bn,member_id,shop_type,shop_id,order_id'); } if ($order['member_id']) { $member = app::get('ome')->model('members')->db_dump($order['member_id'],'uname'); $order['uname'] = $member['uname']; } // 页面加密处理 $order['encrypt_body'] = kernel::single('ome_security_router',$order['shop_type'])->get_encrypt_body($order, 'order'); // 推送日志 kernel::single('base_hchsafe')->order_log(array('operation'=>'赠品发放查看订单客户账号信息','tradeIds'=>array($order['order_bn']))); $this->splash('success',null,null,'redirect',$order); } /** * 设置_logs * @return mixed 返回操作结果 */ public function set_logs() { if(isset($_POST['set_gift_erp'])){ $set_type = $_POST['set_type']; $set_gift_taobao = $set_gift_erp = 'on'; #淘宝赠品启用状态 if(empty($_POST['set_gift_taobao']) || $_POST['set_gift_taobao'] == 'off' ){ $set_gift_taobao = 'off'; app::get('ome')->setConf('ome.preprocess.tbgift','false'); }else{ app::get('ome')->setConf('ome.preprocess.tbgift','true'); } #ERP赠品启用状态 if(empty($_POST['set_gift_erp']) || $_POST['set_gift_erp'] == 'off' ){ $set_gift_erp = 'off'; $setting['radio'] = 'off'; }else{ $setting['radio'] = 'on'; } #出错处理 if(empty($_POST['erp_gift_error_setting']) || $_POST['erp_gift_error_setting'] == 'off'){ $setting['error'] = 'off';#关闭出错,审单发货 }else{ $setting['error'] = 'on'; } base_kvstore::instance('crm/set/gift_erp_setting')->store('crm_gift_erp_setting', $setting); if($set_gift_erp == 'off'){ $set_type = 'other'; } $arr = array( 'set_gift_taobao'=>$set_gift_taobao, 'set_gift_erp'=>$set_gift_erp, 'set_type' => $set_type, 'op_user' => kernel::single('desktop_user')->get_name(), 'create_time' => time(), ); $url = 'index.php?app=crm&ctl=admin_gift_rule&act=set_logs'; $this->begin($url); $this->app->model('gift_set_logs')->save($arr); $this->end(true,'保存成功'); } $gift_erp_setting = array(); base_kvstore::instance('crm/set/gift_erp_setting')->fetch('crm_gift_erp_setting', $gift_erp_setting); if(empty( $gift_erp_setting)){ $this->pagedata['erp_gift_error_setting'] = 'off'; }else{ $this->pagedata['erp_gift_error_setting'] = $gift_erp_setting['error']; } #默认为叠加 exclude $set_type = 'exclude'; #以最后一次设定的模式为准 $rs = $this->app->model('gift_set_logs')->getList('*', '', 0, 1, 'id DESC'); $taobao_gift_setting = app::get('ome')->getConf('ome.preprocess.tbgift'); #是否启用淘宝赠品(兼容很早以前的) if($taobao_gift_setting == 'true'){ $set_gift_taobao = 'on'; }else{ $set_gift_taobao = 'off'; } if($rs){ if($rs[0]['set_type'] != 'other'){ $set_type = $rs[0]['set_type']; } } $this->pagedata['set_type'] = $set_type; $this->pagedata['set_gift_erp'] = $rs[0]['set_gift_erp']; $this->pagedata['set_gift_taobao'] = $set_gift_taobao; $extra_view = array('crm'=>'admin/gift/set.html'); $actions = array(); $base_filter = array(); $this->finder('crm_mdl_gift_set_logs',array( 'title'=>'赠品设置' . $this->helpLink('/hc/articles/81514/'), 'actions'=>$actions, 'base_filter'=>$base_filter, 'orderBy' => 'id DESC', 'use_buildin_recycle' => false, 'use_buildin_filter' => false, 'use_view_tab' => false, 'top_extra_view' => $extra_view, 'use_buildin_setcol' => false, 'use_buildin_refresh' => false, )); } #恢复已删除赠品规则 /** * recover * @param mixed $status status * @param mixed $id ID * @return mixed 返回值 */ public function recover($status = false,$id = false){ $finder_id = $_GET['finder_id']; $this->begin('index.php?app=crm&ctl=admin_gift_rule&act=index&$finder_id='.$finder_id); $obj_rule = $this->app->model('gift_rule'); if(empty($id)){ $this->end(false,$this->app->_('设置失败')); } if($status == 'true'){ $data['disable'] = 'false';#恢复 } $data['modified_time'] = time(); $filter = array('id'=>$id); $obj_rule->update($data,$filter); $this->end(true,$this->app->_('设置成功')); } /** * delRule * @return mixed 返回值 */ public function delRule(){ $this->begin('index.php?app=crm&ctl=admin_gift_rule&act=index'); $obj_rule = $this->app->model('gift_rule'); $isSelectedAll = $_POST['isSelectedAll']; $ids = $_POST['id']; if($isSelectedAll != '_ALL_' && $ids){ $basefilter = array('id'=>$ids); }else{ $basefilter = array(); } $ids = $obj_rule->getList('id',$basefilter); $rule_ids = array_map('current',$ids); $obj_rule->update(array('disable'=>'true'),array('id|in'=>$rule_ids)); $this->end(true, $this->app->_('删除成功')); } /** * 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' => 1, '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; } /** * 批量关闭赠品规则应用 * @date 2024-09-10 2:16 下午 */ public function batchClose() { $this->pagedata['request_url'] = 'index.php?app=crm&ctl=admin_gift_rule&act=ajaxClose'; $this->pagedata['autotime'] = '500'; $_POST['status'] = array('1'); $_POST = array_merge($_POST, $_GET); parent::dialog_batch('crm_mdl_gift_rule', true, 100, 'inc'); } public function ajaxClose() { parse_str($_POST['primary_id'], $primary_id); if (!$primary_id) { echo 'Error: 请先选择数据'; exit; } $retArr = array( 'itotal' => 0, 'isucc' => 0, 'ifail' => 0, 'err_msg' => array(), ); $ruleMdl = app::get('crm')->model('gift_rule'); $rules = $ruleMdl->getList('id', $primary_id['f'], $primary_id['f']['offset'], $primary_id['f']['limit']); $retArr['itotal'] = count($rules); foreach ($rules as $v) { $updata = array('status' => '0'); $rs = $ruleMdl->update($updata, array('id' => $v['id'])); if ($rs) { $retArr['isucc']++; } else { $retArr['ifail']++; } } echo json_encode($retArr), 'ok.'; exit; } /** * 复制赠品规则应用 * @date 2024-10-08 2:28 下午 */ public function copy_rule() { $_GET['type'] = 'copy'; $this->edit(); } public function batchopen() { if($_POST['isSelectedAll'] == '_ALL_'){ die('不能使用全选功能,每次最多选择20条!'); } $this->pagedata['request_url'] = 'index.php?app=crm&ctl=admin_gift_rule&act=ajaxopen'; $this->pagedata['autotime'] = '500'; $_POST['status'] = array('0'); $_POST = array_merge($_POST, $_GET); parent::dialog_batch('crm_mdl_gift_rule', true, 100, 'inc'); } public function ajaxopen() { parse_str($_POST['primary_id'], $primary_id); if (!$primary_id) { echo 'Error: 请先选择数据'; exit; } $retArr = array( 'itotal' => 0, 'isucc' => 0, 'ifail' => 0, 'err_msg' => array(), ); $ruleMdl = app::get('crm')->model('gift_rule'); $rules = $ruleMdl->getList('*', $primary_id['f'], $primary_id['f']['offset'], $primary_id['f']['limit']); $retArr['itotal'] = count($rules); foreach ($rules as $v) { $sdf = array( 'title' => '赠品规则活动开启', 'content' => json_encode($v), 'task_id' => $v['id'], ); $this->gift_rule_change($sdf); $updata = array('status' => '1'); $rs = $ruleMdl->update($updata, array('id' => $v['id'])); if ($rs) { $retArr['isucc']++; } else { $retArr['ifail']++; } } echo json_encode($retArr), 'ok.'; exit; } }