error(lang('promotion_unavailable'), 'seller/index'); } } public function index() { $wholesalequota_model = model('wholesalequota'); $wholesale_model = model('wholesale'); if (check_platform_store()) { View::assign('isPlatformStore', true); } else { $current_wholesale_quota = $wholesalequota_model->getWholesalequotaCurrent(session('store_id')); View::assign('current_wholesale_quota', $current_wholesale_quota); } $condition = array(); $condition[] = array('store_id', '=', session('store_id')); if ((input('param.wholesale_name'))) { $condition[] = array('goods_name', 'like', '%' . input('param.wholesale_name') . '%'); } if ((input('param.state'))) { $condition[] = array('wholesale_state', '=', intval(input('param.state'))); } $wholesale_list = $wholesale_model->getWholesaleList($condition, 10, 'wholesale_state desc, wholesale_end_time desc'); View::assign('wholesale_list', $wholesale_list); View::assign('show_page', $wholesale_model->page_info->render()); View::assign('wholesale_state_array', $wholesale_model->getWholesaleStateArray()); $this->setSellerCurMenu('Sellerpromotionwholesale'); $this->setSellerCurItem('wholesale_list'); return View::fetch($this->template_dir . 'index'); } /** * 添加批发活动 * */ public function wholesale_add() { if (check_platform_store()) { View::assign('isPlatformStore', true); } else { View::assign('isPlatformStore', false); $wholesalequota_model = model('wholesalequota'); $current_wholesale_quota = $wholesalequota_model->getWholesalequotaCurrent(session('store_id')); if (empty($current_wholesale_quota)) { if (intval(config('ds_config.promotion_wholesale_price')) != 0) { $this->error(lang('wholesale_quota_current_error1')); } else { $current_wholesale_quota = array('wholesalequota_starttime' => TIMESTAMP, 'wholesalequota_endtime' => TIMESTAMP + 86400 * 30); //没有套餐时,最多一个月 } } View::assign('current_wholesale_quota', $current_wholesale_quota); } //输出导航 $this->setSellerCurMenu('Sellerpromotionwholesale'); $this->setSellerCurItem('wholesale_add'); return View::fetch($this->template_dir . 'wholesale_add'); } /** * 保存添加的批发活动 * */ public function wholesale_save() { //验证输入 $wholesale_if_mix = intval(input('param.wholesale_if_mix')); $goods_commonid = intval(input('param.goods_commonid')); $start_time = strtotime(input('post.start_time')); $end_time = strtotime(input('post.end_time')); $wholesale_json = explode(',', input('param.wholesale_json')); if (!$goods_commonid || empty($wholesale_json)) { ds_json_encode(10001, lang('param_error')); } if ($start_time >= $end_time) { ds_json_encode(10001, lang('greater_than_start_time')); } if (!check_platform_store()) { //获取当前套餐 $wholesalequota_model = model('wholesalequota'); $current_wholesale_quota = $wholesalequota_model->getWholesalequotaCurrent(session('store_id')); if (empty($current_wholesale_quota)) { if (intval(config('ds_config.promotion_wholesale_price')) != 0) { ds_json_encode(10001, lang('please_buy_package_first')); } else { $current_wholesale_quota = array('wholesalequota_starttime' => TIMESTAMP, 'wholesalequota_endtime' => TIMESTAMP + 86400 * 30); //没有套餐时,最多一个月 } } $quota_start_time = intval($current_wholesale_quota['wholesalequota_starttime']); $quota_end_time = intval($current_wholesale_quota['wholesalequota_endtime']); if ($start_time < $quota_start_time) { ds_json_encode(10001, sprintf(lang('wholesale_add_start_time_explain'), date('Y-m-d', $current_wholesale_quota['wholesalequota_starttime']))); } if ($end_time > $quota_end_time) { ds_json_encode(10001, sprintf(lang('wholesale_add_end_time_explain'), date('Y-m-d', $current_wholesale_quota['wholesalequota_endtime']))); } } if($end_timegetGoodsCommonInfoByID($goods_commonid); if (!$goodscommon_info || $goodscommon_info['store_id'] != session('store_id') || $goodscommon_info['goods_verify'] != 1 || $goodscommon_info['goods_state'] != 1 || $goodscommon_info['goods_lock']) { throw new \think\Exception(lang('goods_not_exist'), 10006); } $param = array(); $param['wholesalequota_id'] = isset($current_wholesale_quota['wholesalequota_id']) ? $current_wholesale_quota['wholesalequota_id'] : 0; $param['wholesale_starttime'] = $start_time; $param['wholesale_end_time'] = $end_time; $param['goods_commonid'] = $goods_commonid; $param['goods_name'] = $goodscommon_info['goods_name']; $param['wholesale_if_mix'] = $wholesale_if_mix; $param['store_id'] = session('store_id'); $param['store_name'] = session('store_name'); $param['member_id'] = session('member_id'); $param['member_name'] = session('member_name'); $wholesale_id = $wholesale_model->addWholesale($param); foreach ($wholesale_json as $val) { $wholesalegoods_data = $this->getWholesaleGoods($val); $wholesalegoods_data['wholesale_id'] = $wholesale_id; $wholesalegoods_data['wholesale_starttime'] = $start_time; $wholesalegoods_data['wholesale_end_time'] = $end_time; $wholesalegoods_model->addWholesalegoods($wholesalegoods_data); } } catch (\Exception $e) { Db::rollback(); ds_json_encode(10001, $e->getMessage()); } Db::commit(); // 添加计划任务 $this->addcron(array('cron_exetime' => $end_time, 'cron_value' => serialize(intval($wholesale_id)), 'cron_type' => 'editExpireWholesale'), true); $this->recordSellerlog(lang('add_limited_time_discount_activity') . $goodscommon_info['goods_name'] . lang('activity_number') . $wholesale_id); ds_json_encode(10000, lang('ds_common_op_succ')); } /** * 获取批发商品 * * @param array $val * @param type $goods_commonid * @return array * */ private function getWholesaleGoods($val) { $temp = explode('|', $val); $goods_id = $temp[0]; $temp = explode('_', $temp[1]); $goods_model = model('goods'); $goods_info = $goods_model->getGoodsInfoByID($goods_id); if ($goods_info && $goods_info['goods_verify'] == 1 && $goods_info['goods_state'] == 1) { if (empty($temp)) { throw new \think\Exception($goods_info['goods_name'] . lang('wholesale_price_empty'), 10006); } $wholesalegoods_price = array(); foreach ($temp as $v) { $m_temp = explode('-', $v); $num = intval($m_temp[0]); $price = floatval($m_temp[1]); if ($num <= 0 || $price <= 0) { throw new \think\Exception(lang('wholesale_set_error'), 10006); } $wholesalegoods_price[] = array( 'num' => $num, 'price' => $price, ); } $wholesalegoods_price = $this->arraySort($wholesalegoods_price, 'num', 'asc'); $wholesalegoods_price = array_values($wholesalegoods_price); for ($i = 0; $i < count($wholesalegoods_price); $i++) { if ($i < (count($wholesalegoods_price) - 1)) { $wholesalegoods_price[$i]['num_text'] = $wholesalegoods_price[$i]['num'] . '-' . $wholesalegoods_price[$i + 1]['num']; } else { $wholesalegoods_price[$i]['num_text'] = '≥' . $wholesalegoods_price[$i]['num']; } if ($i > 0) { if ($wholesalegoods_price[$i]['price'] >= $wholesalegoods_price[$i - 1]['price']) { throw new \think\Exception(lang('wholesale_set_error'), 10006); } if ($wholesalegoods_price[$i]['num'] == $wholesalegoods_price[$i - 1]['num']) { throw new \think\Exception(lang('wholesale_set_error'), 10006); } } } if ($wholesalegoods_price[0]['price'] > $goods_info['goods_price']) { throw new \think\Exception($goods_info['goods_name'] . lang('wholesale_price_error'), 10006); } $wholesalegoods_data = array( 'goods_id' => $goods_info['goods_id'], 'goods_commonid' => $goods_info['goods_commonid'], 'store_id' => $goods_info['store_id'], 'goods_name' => $goods_info['goods_name'], 'goods_price' => $goods_info['goods_price'], 'goods_image' => $goods_info['goods_image'], 'wholesalegoods_price' => serialize($wholesalegoods_price), ); return $wholesalegoods_data; } else { throw new \think\Exception(lang('goods_not_exist'), 10006); } } /** * 多维数组排序(多用于文件数组数据) * * @param array $array * @param array $cols * @return array * */ private function arraySort($array, $keys, $sort = 'asc') { $newArr = $valArr = array(); foreach ($array as $key => $value) { $valArr[$key] = $value[$keys]; } ($sort == 'asc') ? asort($valArr) : arsort($valArr); reset($valArr); foreach ($valArr as $key => $value) { $newArr[$key] = $array[$key]; } return $newArr; } /** * 编辑批发活动 * */ public function wholesale_edit() { if (check_platform_store()) { View::assign('isPlatformStore', true); } else { View::assign('isPlatformStore', false); } $wholesale_model = model('wholesale'); $wholesale_info = $wholesale_model->getWholesaleInfoByID(input('param.wholesale_id')); if (empty($wholesale_info) || !$wholesale_info['editable']) { $this->error(lang('param_error')); } View::assign('wholesale_info', $wholesale_info); //获取批发商品列表 $goods_model = model('goods'); $condition = array(); $condition[] = array('goods_commonid', '=', $wholesale_info['goods_commonid']); $goods_list = $goods_model->getGoodsOnlineList($condition); $wholesalegoods_model = model('wholesalegoods'); $wholesalegoods_list = array(); foreach ($goods_list as $key => $val) { $val['goods_image'] = goods_thumb($val, 240); $condition = array(); $condition[] = array('wholesale_id', '=', $wholesale_info['wholesale_id']); $condition[] = array('goods_id', '=', $val['goods_id']); $wholesalegoods_info = $wholesalegoods_model->getWholesalegoodsInfo($condition); if (!$wholesalegoods_info) { $val['inactive'] = 1; } else { $val['wholesale_info'] = unserialize($wholesalegoods_info['wholesalegoods_price']); $val['goods_lock'] = 0; } $wholesalegoods_list[] = $val; } View::assign('wholesalegoods_list', json_encode($wholesalegoods_list)); //输出导航 $this->setSellerCurMenu('Sellerpromotionwholesale'); $this->setSellerCurItem('wholesale_edit'); return View::fetch($this->template_dir . 'wholesale_add'); } /** * 编辑保存批发活动 * */ public function wholesale_edit_save() { $wholesale_id = input('param.wholesale_id'); $wholesale_model = model('wholesale'); $wholesalegoods_model = model('wholesalegoods'); $wholesale_if_mix = intval(input('param.wholesale_if_mix')); $wholesale_json = explode(',', input('param.wholesale_json')); if (!$wholesale_id || empty($wholesale_json)) { ds_json_encode(10001, lang('param_error')); } $wholesale_info = $wholesale_model->getWholesaleInfoByID($wholesale_id); if (empty($wholesale_info) || !$wholesale_info['editable']) { $this->error(lang('param_error')); } Db::startTrans(); try { //生成活动 $param = array(); $param['wholesale_if_mix'] = $wholesale_if_mix; $wholesale_model->editWholesale($param, array(array('wholesale_id', '=', $wholesale_id))); $goods_ids = array(); foreach ($wholesale_json as $val) { $wholesalegoods_data = $this->getWholesaleGoods($val); $goods_ids[] = $wholesalegoods_data['goods_id']; $wholesalegoods_info = $wholesalegoods_model->getWholesalegoodsInfo(array(array('wholesale_id', '=', $wholesale_id), array('goods_id', '=', $wholesalegoods_data['goods_id']))); if ($wholesalegoods_info) { $wholesalegoods_model->editWholesalegoods($wholesalegoods_data, array(array('wholesalegoods_id', '=', $wholesalegoods_info['wholesalegoods_id']))); } else { $wholesalegoods_data['wholesale_id'] = $wholesale_id; $wholesalegoods_data['wholesale_starttime'] = $wholesale_info['wholesale_starttime']; $wholesalegoods_data['wholesale_end_time'] = $wholesale_info['wholesale_end_time']; $wholesalegoods_model->addWholesalegoods($wholesalegoods_data); } } $wholesalegoods_ids = Db::name('wholesalegoods')->where(array(array('wholesale_id', '=', $wholesale_id), array('goods_id', 'not in', $goods_ids)))->column('wholesalegoods_id'); if (!empty($wholesalegoods_ids)) { $wholesalegoods_model->delWholesalegoods(array(array('wholesalegoods_id', 'in', $wholesalegoods_ids))); } } catch (\Exception $e) { Db::rollback(); ds_json_encode(10001, $e->getMessage()); } Db::commit(); $this->recordSellerlog(lang('edit_limited_time_discount_activity') . $wholesale_info['goods_name'] . lang('activity_number') . $wholesale_id); ds_json_encode(10000, lang('ds_common_op_succ')); } /** * 批发活动删除 * */ public function wholesale_del() { $wholesale_id = intval(input('param.wholesale_id')); $wholesale_model = model('wholesale'); $data = array(); $data['result'] = true; $wholesale_info = $wholesale_model->getWholesaleInfoByID($wholesale_id, session('store_id')); if (!$wholesale_info) { ds_json_encode(10001, lang('param_error')); } $result = $wholesale_model->delWholesale(array('wholesale_id' => $wholesale_id)); if ($result) { $this->recordSellerlog(lang('delete_limited_time_discount_activity') . $wholesale_info['goods_name'] . lang('activity_number') . $wholesale_id); ds_json_encode(10000, lang('ds_common_op_succ')); } else { ds_json_encode(10001, lang('ds_common_op_fail')); } } /** * 批发套餐购买 * */ public function wholesale_quota_add() { //输出导航 $this->setSellerCurMenu('Sellerpromotionwholesale'); $this->setSellerCurItem('wholesale_quota_add'); return View::fetch($this->template_dir . 'wholesale_quota_add'); } /** * 批发套餐购买保存 * */ public function wholesale_quota_add_save() { if (intval(config('ds_config.promotion_wholesale_price')) == 0) { ds_json_encode(10001, lang('param_error')); } $wholesale_quota_quantity = intval(input('post.wholesale_quota_quantity')); if ($wholesale_quota_quantity <= 0 || $wholesale_quota_quantity > 12) { ds_json_encode(10001, lang('wholesale_quota_quantity_error')); } //获取当前价格 $current_price = intval(config('ds_config.promotion_wholesale_price')); //获取该用户已有套餐 $wholesalequota_model = model('wholesalequota'); $current_wholesale_quota = $wholesalequota_model->getWholesalequotaCurrent(session('store_id')); $wholesale_add_time = 86400 * 30 * $wholesale_quota_quantity; if (empty($current_wholesale_quota)) { //生成套餐 $param = array(); $param['member_id'] = session('member_id'); $param['member_name'] = session('member_name'); $param['store_id'] = session('store_id'); $param['store_name'] = session('store_name'); $param['wholesalequota_starttime'] = TIMESTAMP; $param['wholesalequota_endtime'] = TIMESTAMP + $wholesale_add_time; $wholesalequota_model->addWholesalequota($param); } else { $param = array(); $param['wholesalequota_endtime'] = Db::raw('wholesalequota_endtime+' . $wholesale_add_time); $wholesalequota_model->editWholesalequota($param, array('wholesalequota_id' => $current_wholesale_quota['wholesalequota_id'])); } //记录店铺费用 $this->recordStorecost($current_price * $wholesale_quota_quantity, lang('buy_limited_time_discount')); $this->recordSellerlog(lang('buy') . $wholesale_quota_quantity . lang('limited_time_discount_package') . $current_price . lang('ds_yuan')); ds_json_encode(10000, lang('wholesale_quota_add_success')); } /** * 选择活动商品 * */ public function goods_select() { $goods_model = model('goods'); $condition = array(); $condition[] = array('goods.store_id', '=', session('store_id')); $condition[] = array('goods.goods_name', 'like', '%' . input('param.goods_name') . '%'); $goods_list = $goods_model->getGoodsListForPromotion($condition, 'goods.goods_id,goods.goods_commonid,goods.goods_name,goods.goods_image,goods.goods_price', 10, 'wholesale'); View::assign('goods_list', $goods_list); View::assign('show_page', $goods_model->page_info->render()); echo View::fetch($this->template_dir . 'goods_select'); } public function goods_info() { $goods_commonid = intval(input('param.goods_commonid')); $data = array(); $data['result'] = true; $goods_model = model('goods'); $condition = array(); $condition[] = array('goods_commonid', '=', $goods_commonid); $goods_list = $goods_model->getGoodsOnlineList($condition); if (empty($goods_list)) { $data['result'] = false; $data['message'] = lang('param_error'); echo json_encode($data); die; } foreach ($goods_list as $key => $val) { $goods_list[$key]['goods_image'] = goods_thumb($val, 240); } $data['goods_list'] = $goods_list; echo json_encode($data); die; } /** * 用户中心右边,小导航 * * @param string $menu_type 导航类型 * @param string $name 当前导航的name * @param array $array 附加菜单 * @return */ protected function getSellerItemList() { $menu_array = array( array( 'name' => 'wholesale_list', 'text' => lang('promotion_active_list'), 'url' => (string) url('Sellerpromotionwholesale/index') ), ); switch (request()->action()) { case 'wholesale_add': $menu_array[] = array( 'name' => 'wholesale_add', 'text' => lang('promotion_join_active'), 'url' => (string) url('Sellerpromotionwholesale/wholesale_add') ); break; case 'wholesale_edit': $menu_array[] = array( 'name' => 'wholesale_edit', 'text' => lang('editing_activity'), 'url' => 'javascript:;' ); break; case 'wholesale_quota_add': $menu_array[] = array( 'name' => 'wholesale_quota_add', 'text' => lang('promotion_buy_product'), 'url' => (string) url('Sellerpromotionwholesale/wholesale_quota_add') ); break; case 'wholesale_manage': $menu_array[] = array( 'name' => 'wholesale_manage', 'text' => lang('promotion_goods_manage'), 'url' => (string) url('Sellerpromotionwholesale/wholesale_manage', ['wholesale_id' => input('param.wholesale_id')]) ); break; } return $menu_array; } }