Goods.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. <?php
  2. namespace app\home\controller;
  3. use think\facade\View;
  4. use think\facade\Lang;
  5. use think\facade\Db;
  6. /**
  7. * ============================================================================
  8. * DSMall多用户商城
  9. * ============================================================================
  10. * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
  11. * 网站地址: http://www.csdeshang.com
  12. * ----------------------------------------------------------------------------
  13. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
  14. * 不允许对程序代码以任何形式任何目的的再发布。
  15. * ============================================================================
  16. * 控制器
  17. */
  18. class Goods extends BaseGoods {
  19. public function initialize() {
  20. parent::initialize();
  21. Lang::load(base_path() . 'home/lang/'.config('lang.default_lang').'/goods.lang.php');
  22. }
  23. /**
  24. * 单个商品信息页
  25. */
  26. public function index() {
  27. $goods_id = intval(input('param.goods_id'));
  28. // 商品详细信息
  29. $goods_model = model('goods');
  30. $goods_detail = $goods_model->getGoodsDetail($goods_id);
  31. $goods_info = $goods_detail['goods_info'];
  32. if (empty($goods_info)) {
  33. $this->error(lang('goods_index_no_goods'),HOME_SITE_URL);
  34. }
  35. // 获取销量 BEGIN
  36. $rs = $goods_model->getGoodsList(array('goods_commonid' => $goods_info['goods_commonid']));
  37. $count = 0;
  38. foreach ($rs as $v) {
  39. $count += $v['goods_salenum'];
  40. }
  41. $goods_info['goods_salenum'] = $count;
  42. // 获取销量 END
  43. $this->getStoreInfo($goods_info['store_id']);
  44. // 看了又看(同分类本店随机商品)
  45. $goods_rand_list = model('goods')->getGoodsGcStoreRandList($goods_info['gc_id_1'], $goods_info['store_id'], $goods_info['goods_id'], 2);
  46. View::assign('goods_rand_list', $goods_rand_list);
  47. View::assign('spec_list', $goods_detail['spec_list']);
  48. View::assign('spec_image', $goods_detail['spec_image']);
  49. View::assign('goods_image', $goods_detail['goods_image']);
  50. View::assign('mansong_info', $goods_detail['mansong_info']);
  51. View::assign('gift_array', $goods_detail['gift_array']);
  52. View::assign('baidu_ak', config('ds_config.baidu_ak'));
  53. $chain_model=model('chain');
  54. $chain_ids=Db::name('chain_goods')->where(array(array('goods_id','=',$goods_id),array('goods_storage','>',0)))->column('chain_id');
  55. $chain_info=$chain_model->getChainOpenInfo(array(array('chain_if_pickup','=',1),array('chain_id','in',$chain_ids)));
  56. View::assign('if_chain', $chain_info?1:0);
  57. $inform_switch = true;
  58. // 检测商品是否下架,检查是否为店主本人
  59. if ($goods_info['goods_state'] != 1 || $goods_info['goods_verify'] != 1 || $goods_info['store_id'] == session('store_id')) {
  60. $inform_switch = false;
  61. }
  62. View::assign('inform_switch', $inform_switch);
  63. // 如果使用售卖区域
  64. if ($goods_info['transport_id'] > 0) {
  65. // 取得三种运送方式默认运费
  66. $transport_model = model('transport');
  67. $transport = $transport_model->getTransportextendList(array('transport_id' => $goods_info['transport_id'],'transportext_is_default'=>1));
  68. if (!empty($transport) && is_array($transport)) {
  69. foreach ($transport as $v) {
  70. $goods_info["transport_price"] = $v['transportext_sprice'];
  71. }
  72. }
  73. }
  74. $inviter_model=model('inviter');
  75. $goods_info['inviter_money']=0;
  76. if(config('ds_config.inviter_show') && config('ds_config.inviter_open') && $goods_info['inviter_open'] && session('member_id') && $inviter_model->getInviterInfo('i.inviter_id='.session('member_id').' AND i.inviter_state=1')){
  77. $inviter_money=round($goods_info['inviter_ratio'] / 100 * $goods_info['goods_price'] * floatval(config('ds_config.inviter_ratio_1')) / 100, 2);
  78. if($inviter_money>0){
  79. $goods_info['inviter_money']=$inviter_money;
  80. }
  81. }
  82. $goods_info['goodsvideo_url']=goods_video($goods_info['goodsvideo_name']);
  83. // halt($goods_info);
  84. View::assign('goods', $goods_info);
  85. //抢购商品是否开始
  86. $IsHaveBuy = 0;
  87. if (session('member_id')) {
  88. $buyer_id = session('member_id');
  89. $promotion_type = isset($goods_info["promotion_type"]) ? $goods_info["promotion_type"] : '';
  90. if ($promotion_type == 'groupbuy') {
  91. //检测是否限购数量
  92. $upper_limit = $goods_info["upper_limit"];
  93. if ($upper_limit > 0) {
  94. //查询些会员的订单中,是否已买过了
  95. $order_model = model('order');
  96. //取商品列表
  97. $order_goods_list = $order_model->getOrdergoodsList(array('goods_id' => $goods_id, 'buyer_id' => $buyer_id, 'goods_type' => 2));
  98. if ($order_goods_list) {
  99. //取得上次购买的活动编号(防一个商品参加多次抢购活动的问题)
  100. $promotions_id = $order_goods_list[0]["promotions_id"];
  101. //用此编号取数据,检测是否这次活动的订单商品。
  102. $groupbuy_model = model('groupbuy');
  103. $groupbuy_info = $groupbuy_model->getGroupbuyInfo(array('groupbuy_id' => $promotions_id));
  104. if ($groupbuy_info) {
  105. $IsHaveBuy = 1;
  106. } else {
  107. $IsHaveBuy = 0;
  108. }
  109. }
  110. }
  111. }
  112. }
  113. View::assign('IsHaveBuy', $IsHaveBuy);
  114. //end
  115. $storeplate_model = model('storeplate');
  116. // 顶部关联版式
  117. if ($goods_info['plateid_top'] > 0) {
  118. $plate_top = $storeplate_model->getStoreplateInfoByID($goods_info['plateid_top']);
  119. View::assign('plate_top', $plate_top);
  120. }
  121. // 底部关联版式
  122. if ($goods_info['plateid_bottom'] > 0) {
  123. $plate_bottom = $storeplate_model->getStoreplateInfoByID($goods_info['plateid_bottom']);
  124. View::assign('plate_bottom', $plate_bottom);
  125. }
  126. View::assign('store_id', $goods_info['store_id']);
  127. //推荐商品
  128. $goods_commend_list = $goods_model->getGoodsOnlineList(array(array('store_id' ,'=', $goods_info['store_id']), array('goods_commend' ,'=', 1)), 'goods_id,goods_name,goods_advword,goods_image,store_id,goods_price', 0, '', 5, 'goods_commonid');
  129. View::assign('goods_commend', $goods_commend_list);
  130. // 当前位置导航
  131. $nav_link_list = model('goodsclass')->getGoodsclassnav($goods_info['gc_id'], 0);
  132. $nav_link_list[] = array('title' => $goods_info['goods_name']);
  133. View::assign('nav_link_list', $nav_link_list);
  134. //评价信息
  135. $goods_evaluate_info = model('evaluategoods')->getEvaluategoodsInfoByGoodsID($goods_id);
  136. View::assign('goods_evaluate_info', $goods_evaluate_info);
  137. //SEO 设置
  138. $seo_param = array();
  139. $seo_param['name'] = $goods_info['goods_name'];
  140. $seo_param['description'] = ds_substing(htmlspecialchars_decode($goods_info['goods_body']));
  141. $this->_assign_seo(model('seo')->type('product')->param($seo_param)->show());
  142. return View::fetch($this->template_dir . 'goods');
  143. }
  144. /**
  145. * 记录浏览历史
  146. */
  147. public function addbrowse() {
  148. $goods_id = intval(input('param.gid'));
  149. model('goodsbrowse')->addViewedGoods($goods_id, session('member_id'), session('store_id'));
  150. exit();
  151. }
  152. /**
  153. * 商品评论
  154. */
  155. public function comments() {
  156. $goods_id = intval(input('param.goods_id'));
  157. $type = input('param.type');
  158. $this->_get_comments($goods_id, $type, 10);
  159. echo View::fetch($this->template_dir . 'goods_comments');
  160. }
  161. /**
  162. * 商品评价详细页
  163. */
  164. public function comments_list() {
  165. $goods_id = intval(input('param.goods_id'));
  166. // 商品详细信息
  167. $goods_model = model('goods');
  168. $goods_info = $goods_model->getGoodsInfoByID($goods_id);
  169. // 验证商品是否存在
  170. if (empty($goods_info)) {
  171. $this->error(lang('goods_index_no_goods'));
  172. }
  173. View::assign('goods', $goods_info);
  174. $this->getStoreInfo($goods_info['store_id']);
  175. // 当前位置导航
  176. $nav_link_list = model('goodsclass')->getGoodsclassnav($goods_info['gc_id'], 0);
  177. $nav_link_list[] = array('title' => $goods_info['goods_name'], 'link' => (string)url('Goods/index', ['goods_id' => $goods_id]));
  178. $nav_link_list[] = array('title' => lang('goods_index_evaluation'));
  179. View::assign('nav_link_list', $nav_link_list);
  180. //评价信息
  181. $goods_evaluate_info = model('evaluategoods')->getEvaluategoodsInfoByGoodsID($goods_id);
  182. View::assign('goods_evaluate_info', $goods_evaluate_info);
  183. //SEO 设置
  184. $seo_param = array();
  185. $seo_param['name'] = $goods_info['goods_name'];
  186. $seo_param['description'] = ds_substing($goods_info['goods_name']);
  187. $this->_assign_seo(model('seo')->type('product')->param($seo_param)->show());
  188. $this->_get_comments($goods_id, input('param.type'), 20);
  189. return View::fetch($this->template_dir . 'comments_list');
  190. }
  191. private function _get_comments($goods_id, $type, $page) {
  192. $condition = array();
  193. $condition[]=array('geval_goodsid','=',$goods_id);
  194. switch ($type) {
  195. case '1':
  196. $condition[]=array('geval_scores','in', '5,4');
  197. View::assign('type', '1');
  198. break;
  199. case '2':
  200. $condition[]=array('geval_scores','in', '3,2');
  201. View::assign('type', '2');
  202. break;
  203. case '3':
  204. $condition[]=array('geval_scores','in', '1');
  205. View::assign('type', '3');
  206. break;
  207. default:
  208. View::assign('type','');
  209. break;
  210. }
  211. //查询商品评分信息
  212. $evaluategoods_model = model('evaluategoods');
  213. $goodsevallist = $evaluategoods_model->getEvaluategoodsList($condition, $page);
  214. foreach($goodsevallist as $key => $val){
  215. if(preg_match('/^phone_1[3|5|6|7|8]\d{9}$/', $val['geval_frommembername'])){
  216. $goodsevallist[$key]['geval_frommembername'] = substr_replace($val['geval_frommembername'], '****', 9, 4);
  217. }
  218. }
  219. View::assign('goodsevallist', $goodsevallist);
  220. View::assign('show_page', $evaluategoods_model->page_info->render());
  221. }
  222. /**
  223. * 销售记录
  224. */
  225. public function salelog() {
  226. $goods_id = intval(input('param.goods_id'));
  227. $vr = intval('param.vr');
  228. if ($vr) {
  229. $vrorder_model = model('vrorder');
  230. $sales = $vrorder_model->getVrorderAndOrderGoodsSalesRecordList(array(array('goods_id' ,'=', $goods_id)), '*', 10);
  231. View::assign('show_page', $vrorder_model->page_info->render());
  232. } else {
  233. $order_model = model('order');
  234. $sales = $order_model->getOrderAndOrderGoodsSalesRecordList(array(array('order_goods.goods_id' ,'=', $goods_id)), 'order_goods.*, order.buyer_name, order.add_time', 10);
  235. View::assign('show_page', $order_model->page_info->render());
  236. }
  237. View::assign('sales', $sales);
  238. View::assign('order_type', array(2 => lang('ds_xianshi_rob'), 3 => lang('ds_xianshi_flag'), '4' => lang('ds_xianshi_suit')));
  239. echo View::fetch($this->template_dir . 'goods_salelog');
  240. }
  241. /**
  242. * 产品咨询
  243. */
  244. public function consulting() {
  245. $goods_id = intval(input('param.goods_id'));
  246. if ($goods_id <= 0) {
  247. $this->error(lang('param_error'), '', 'html', 'error');
  248. }
  249. //得到商品咨询信息
  250. $consult_model = model('consult');
  251. $condition = array();
  252. $condition[] = array('goods_id','=',$goods_id);
  253. $ctid = intval(input('param.ctid'));
  254. if ($ctid > 0) {
  255. $condition[] = array('consulttype_id','=',$ctid);
  256. }
  257. $consult_list = $consult_model->getConsultList($condition, '*', '10');
  258. View::assign('consult_list', $consult_list);
  259. // 咨询类型
  260. $consult_type = rkcache('consulttype', true);
  261. View::assign('consult_type', $consult_type);
  262. View::assign('consult_able', $this->checkConsultAble());
  263. echo View::fetch($this->template_dir . 'goods_consulting');
  264. }
  265. /**
  266. * 产品咨询
  267. */
  268. public function consulting_list() {
  269. View::assign('hidden_nctoolbar', 1);
  270. $goods_id = intval(input('param.goods_id'));
  271. if ($goods_id <= 0) {
  272. $this->error(lang('param_error'));
  273. }
  274. // 商品详细信息
  275. $goods_model = model('goods');
  276. $goods_info = $goods_model->getGoodsInfoByID($goods_id);
  277. // 验证商品是否存在
  278. if (empty($goods_info)) {
  279. $this->error(lang('goods_index_no_goods'));
  280. }
  281. View::assign('goods', $goods_info);
  282. $this->getStoreInfo($goods_info['store_id']);
  283. // 当前位置导航
  284. $nav_link_list = model('goodsclass')->getGoodsclassnav($goods_info['gc_id'], 0);
  285. $nav_link_list[] = array('title' => $goods_info['goods_name'], 'link' => (string)url('Goods/index', ['goods_id' => $goods_id]));
  286. $nav_link_list[] = array('title' => lang('goods_commodity_consulting'));
  287. View::assign('nav_link_list', $nav_link_list);
  288. //得到商品咨询信息
  289. $consult_model = model('consult');
  290. $condition = array();
  291. $condition[] = array('goods_id','=',$goods_id);
  292. if (intval(input('param.ctid')) > 0) {
  293. $condition[] = array('consulttype_id','=',intval(input('param.ctid')));
  294. }
  295. $consult_list = $consult_model->getConsultList($condition, '*');
  296. View::assign('consult_list', $consult_list);
  297. View::assign('show_page', $consult_model->page_info->render());
  298. // 咨询类型
  299. $consult_type = rkcache('consulttype', true);
  300. View::assign('consult_type', $consult_type);
  301. //SEO 设置
  302. $seo_param = array ();
  303. $seo_param['name'] = $goods_info['goods_name'];
  304. $seo_param['description'] = ds_substing($goods_info['goods_name']);
  305. $this->_assign_seo(model('seo')->type('product')->param($seo_param)->show());
  306. View::assign('consult_able', $this->checkConsultAble($goods_info['store_id']));
  307. return View::fetch($this->template_dir . 'consulting_list');
  308. }
  309. private function checkConsultAble($store_id = 0) {
  310. //检查是否为店主本身
  311. $store_self = false;
  312. if (session('store_id')) {
  313. if (($store_id == 0 && intval(input('param.store_id')) == session('store_id')) || ($store_id != 0 && $store_id == session('store_id'))) {
  314. $store_self = true;
  315. }
  316. }
  317. //查询会员信息
  318. $member_info = array();
  319. $member_model = model('member');
  320. if (session('member_id'))
  321. $member_info = $member_model->getMemberInfoByID(session('member_id'));
  322. //检查是否可以评论
  323. $consult_able = true;
  324. if ((!config('ds_config.guest_comment') && !session('member_id') ) || $store_self == true || (session('member_id') > 0 && $member_info['is_allowtalk'] == 0)) {
  325. $consult_able = false;
  326. }
  327. return $consult_able;
  328. }
  329. /**
  330. * 商品咨询添加
  331. */
  332. public function save_consult() {
  333. //检查是否可以评论
  334. if (!config('ds_config.guest_comment') && !session('member_id')) {
  335. ds_json_encode(10001,lang('goods_index_goods_noallow'));
  336. }
  337. $goods_id = intval(input('post.goods_id'));
  338. if ($goods_id <= 0) {
  339. ds_json_encode(10001,lang('param_error'));
  340. }
  341. //咨询内容的非空验证
  342. if (trim(input('post.goods_content')) == "") {
  343. ds_json_encode(10001,lang('goods_index_input_consult'));
  344. }
  345. //表单验证
  346. $data = [
  347. 'goods_content' => input('post.goods_content')
  348. ];
  349. $res=word_filter($data['goods_content']);
  350. if(!$res['code']){
  351. ds_json_encode(10001,$res['msg']);
  352. }
  353. $data['goods_content']=$res['data']['text'];
  354. $goods_validate = ds_validate('goods');
  355. if (!$goods_validate->scene('save_consult')->check($data)) {
  356. ds_json_encode(10001,$goods_validate->getError());
  357. }
  358. if (session('member_id')) {
  359. //查询会员信息
  360. $member_model = model('member');
  361. $member_info = $member_model->getMemberInfo(array('member_id' => session('member_id')));
  362. if (empty($member_info) || $member_info['is_allowtalk'] == 0) {
  363. ds_json_encode(10001,lang('goods_index_goods_noallow'));
  364. }
  365. }
  366. //判断商品编号的存在性和合法性
  367. $goods = model('goods');
  368. $goods_info = $goods->getGoodsInfoByID($goods_id);
  369. if (empty($goods_info)) {
  370. ds_json_encode(10001,lang('goods_index_goods_not_exists'));
  371. }
  372. //判断是否是店主本人
  373. if (session('store_id') && $goods_info['store_id'] == session('store_id')) {
  374. ds_json_encode(10001,lang('goods_index_consult_store_error'));
  375. }
  376. //检查店铺状态
  377. $store_model = model('store');
  378. $store_info = $store_model->getStoreInfoByID($goods_info['store_id']);
  379. if ($store_info['store_state'] == '0' || intval($store_info['store_state']) == '2' || (intval($store_info['store_endtime']) != 0 && $store_info['store_endtime'] <= TIMESTAMP)) {
  380. ds_json_encode(10001,lang('goods_index_goods_store_closed'));
  381. }
  382. //接收数据并保存
  383. $input = array();
  384. $input['goods_id'] = $goods_id;
  385. $input['goods_name'] = $goods_info['goods_name'];
  386. $input['member_id'] = intval(session('member_id')) > 0 ? session('member_id') : 0;
  387. $input['member_name'] = session('member_name') ? session('member_name') : '';
  388. $input['store_id'] = $store_info['store_id'];
  389. $input['store_name'] = $store_info['store_name'];
  390. $input['consulttype_id'] = intval(input('post.consult_type_id',1));
  391. $input['consult_addtime'] = TIMESTAMP;
  392. $input['consult_content'] = $data['goods_content'];
  393. $input['consult_isanonymous'] = input('post.hide_name')=='hide'?1:0;
  394. $consult_model = model('consult');
  395. if ($consult_model->addConsult($input)) {
  396. ds_json_encode(10000,lang('goods_index_consult_success'));
  397. } else {
  398. ds_json_encode(10001,lang('goods_index_consult_fail'));
  399. }
  400. }
  401. /**
  402. * 异步显示优惠套装/推荐组合
  403. */
  404. public function get_bundling() {
  405. $goods_id = intval(input('param.goods_id'));
  406. if ($goods_id <= 0) {
  407. exit();
  408. }
  409. $goods_model = model('goods');
  410. $goods_info = $goods_model->getGoodsOnlineInfoByID($goods_id);
  411. if (empty($goods_info)) {
  412. exit();
  413. }
  414. // 优惠套装
  415. $array = model('pbundling')->getBundlingCacheByGoodsId($goods_id);
  416. if (!empty($array)) {
  417. View::assign('bundling_array', unserialize($array['bundling_array']));
  418. View::assign('b_goods_array', unserialize($array['b_goods_array']));
  419. }
  420. // 推荐组合
  421. if (!empty($goods_info) && $goods_model->checkIsGeneral($goods_info)) {
  422. $array = model('goodscombo')->getGoodscomboCacheByGoodsId($goods_id);
  423. View::assign('goods_info', $goods_info);
  424. View::assign('gcombo_list', unserialize($array['gcombo_list']));
  425. }
  426. echo View::fetch($this->template_dir . 'goods_bundling');
  427. }
  428. /**
  429. * 商品详细页运费显示
  430. *
  431. * @return unknown
  432. */
  433. public function calc() {
  434. if (!is_numeric(input('param.area_id')) || !is_numeric(input('param.tid')))
  435. return false;
  436. $freight_total = model('transport')->calcTransport(intval(input('param.tid')), intval(input('param.area_id')));
  437. if ($freight_total > 0) {
  438. if (input('param.myf') > 0) {
  439. if ($freight_total >= input('param.myf')) {
  440. $freight_total = lang('free_shipping');
  441. } else {
  442. $freight_total = lang('freight').':' . $freight_total . lang('shop_with') . input('param.myf') . lang('ds_yuan'). ' '. lang('free_shipping');
  443. }
  444. } else {
  445. $freight_total =lang('freight').':' . $freight_total . lang('ds_yuan');
  446. }
  447. } else {
  448. if ($freight_total !== false) {
  449. $freight_total = lang('free_shipping');
  450. }
  451. }
  452. echo input('param.callback') . '(' . json_encode(array('total' => $freight_total)) . ')';
  453. }
  454. /**
  455. * 到货通知
  456. */
  457. public function arrival_notice() {
  458. if (!session('is_login')) {
  459. $this->error(lang('param_error'));
  460. }
  461. $member_info = model('member')->getMemberInfoByID(session('member_id'));
  462. View::assign('member_info', $member_info);
  463. return View::fetch($this->template_dir . 'arrival_notice_submit');
  464. }
  465. /**
  466. * 到货通知表单
  467. */
  468. public function arrival_notice_submit() {
  469. $type = intval(input('post.type')) == 2 ? 2 : 1;
  470. $goods_id = intval(input('post.goods_id'));
  471. if ($goods_id <= 0) {
  472. ds_json_encode(10001,lang('param_error'));
  473. }
  474. // 验证商品数是否充足
  475. $goods_info = model('goods')->getGoodsInfoByID($goods_id);
  476. if (empty($goods_info) || ($goods_info['goods_storage'] > 0 && $goods_info['goods_state'] == 1)) {
  477. ds_json_encode(10001,lang('param_error'));
  478. }
  479. $arrivalnotice_model = model('arrivalnotice');
  480. // 验证会员是否已经添加到货通知
  481. $condition = array();
  482. $condition[] = array('goods_id','=',$goods_info['goods_id']);
  483. $condition[] = array('member_id','=',session('member_id'));
  484. $condition[] = array('arrivalnotice_type','=',$type);
  485. $notice_info = $arrivalnotice_model->getArrivalNoticeInfo($condition);
  486. if (!empty($notice_info)) {
  487. if ($type == 1) {
  488. ds_json_encode(10001,lang('goods_no_repeat_add'));
  489. } else {
  490. ds_json_encode(10001,lang('goods_no_repeat_appointment'));
  491. }
  492. }
  493. $insert = array();
  494. $insert['goods_id'] = $goods_info['goods_id'];
  495. $insert['goods_name'] = $goods_info['goods_name'];
  496. $insert['member_id'] = session('member_id');
  497. $insert['arrivalnotice_mobile'] = input('post.mobile');
  498. $insert['arrivalnotice_email'] = input('post.email');
  499. $insert['arrivalnotice_type'] = $type;
  500. $arrivalnotice_model->addArrivalNotice($insert);
  501. ds_json_encode(10000,lang('successful_booking_goods'));
  502. }
  503. public function json_area() {
  504. echo input('param.callback') . '(' . json_encode(model('area')->getAreaArrayForJson()) . ')';
  505. }
  506. public function show_chain(){
  507. $goods_id=input('param.goods_id');
  508. $chain_model=model('chain');
  509. $chain_ids=Db::name('chain_goods')->where(array(array('goods_id','=',$goods_id),array('goods_storage','>',0)))->column('chain_id');
  510. $chain_list=$chain_model->getChainOpenList(array(array('chain_if_pickup','=',1),array('chain_id','in',$chain_ids)));
  511. View::assign('chain_list', $chain_list);
  512. return View::fetch($this->template_dir . 'show_chain');
  513. }
  514. }
  515. ?>