12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196 |
- <?php
- namespace app\api\controller;
- use think\facade\Db;
- use think\facade\Lang;
- class Goods extends MobileMall
- {
- private $PI = 3.14159265358979324;
- private $x_pi = 0;
- public function initialize()
- {
- parent::initialize();
- Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '/goods.lang.php');
- $this->x_pi = 3.14159265358979324 * 3000.0 / 180.0;
- }
-
- public function goods_list()
- {
- $goods_model = model('goods');
- $search_model = model('search');
-
- $condition = array();
- $cate_id = intval(input('param.cate_id'));
- $keyword = $default_classid = input('param.keyword');
- $b_id = intval(input('param.b_id'));
-
- $this->_model_search = model('search');
- list($goods_param, $brand_array, $initial_array, $attr_array, $checked_brand, $checked_attr) = $this->_model_search->getAttribute(input('param.'), $default_classid);
- if (isset($goods_param['class']['depth'])) {
- $condition[] = array('goodscommon.gc_id_' . $goods_param['class']['depth'], '=', $goods_param['class']['gc_id']);
- }
- if (isset($goods_param['goodsid_array'])) {
- $condition[] = array('goods.goods_id', 'in', $goods_param['goodsid_array']);
- }
- if ($cate_id > 0) {
- $condition = model('goods')->_getRecursiveClass($condition, $cate_id, 'goodscommon');
- }
- if (!empty($keyword)) {
- $condition[] = array('goodscommon.goods_name|goodscommon.goods_advword', 'like', '%' . $keyword . '%');
- if (cookie('hisSearch') == '') {
- $his_sh_list = array();
- } else {
- $his_sh_list = explode('~', cookie('hisSearch'));
- }
- if (strlen($keyword) <= 20 && !in_array($keyword, $his_sh_list)) {
- if (array_unshift($his_sh_list, $keyword) > 8) {
- array_pop($his_sh_list);
- }
- }
- cookie('hisSearch', implode('~', $his_sh_list), 2592000);
- }
- if ($b_id > 0) {
- $condition[] = array('goodscommon.brand_id', '=', $b_id);
- }
- $price_from = input('param.price_from');
- $price_to = input('param.price_to');
- $price_from = preg_match('/^[\d.]{1,20}$/', $price_from) ? $price_from : null;
- $price_to = preg_match('/^[\d.]{1,20}$/', $price_to) ? $price_to : null;
-
- $fieldstr = "goods.goods_id,goods.goods_storage,goodscommon.goods_commonid,goodscommon.store_id,goodscommon.goods_name,goodscommon.goods_advword,goodscommon.goods_price,goods.goods_promotion_price,goods.goods_promotion_type,goodscommon.goods_marketprice,goodscommon.goods_image,goods.goods_salenum,goods.evaluation_good_star,goods.evaluation_count";
- $fieldstr .= ',goodscommon.is_virtual,goodscommon.is_goodsfcode,goods.is_have_gift,goodscommon.store_name,goodscommon.is_platform_store';
-
- $order = $this->_goods_list_order(input('param.sort_key'), input('param.sort_order'));
- if ($price_from && $price_to) {
- $condition[] = array('goods.goods_promotion_price', 'between', "{$price_from},{$price_to}");
- } elseif ($price_from) {
- $condition[] = array('goods.goods_promotion_price', '>=', $price_from);
- } elseif ($price_to) {
- $condition[] = array('goods.goods_promotion_price', '<=', $price_to);
- }
- if (input('param.gift') == 1) {
- $condition[] = array('goods.is_have_gift', '=', 1);
- }
- if (input('param.own_shop') == 1) {
- $condition[] = array('goodscommon.store_id', '=', 1);
- }
- if (intval(input('param.area_id')) > 0) {
- $condition[] = array('goodscommon.areaid_1', '=', intval(input('param.area_id')));
- }
-
- $_tmp = array();
- if (input('param.groupbuy') == 1) {
- $_tmp[] = 1;
- }
- if (input('param.xianshi') == 1) {
- $_tmp[] = 2;
- if (input('param.goods_price') == 'goods_price') {
- $order = 'goods_promotion_price';
- if (input('param.sort_order') == 'asc') {
- $order .= ' asc';
- } else {
- $order .= ' desc';
- }
- }
- }
- if ($_tmp) {
- $condition[] = array('goods.goods_promotion_type', 'in', $_tmp);
- }
- unset($_tmp);
-
- if (input('param.virtual') == 1) {
- $condition[] = array('goodscommon.is_virtual', '=', 1);
- }
- $goods_list = $goods_model->getGoodsUnionList($condition, $fieldstr, $order, 'goodscommon.goods_commonid', $this->pagesize);
-
-
- $goods_list = $this->_goods_list_extend($goods_list);
- $result = array_merge(array('goods_list' => $goods_list), mobile_page(is_object($goods_model->page_info) ? $goods_model->page_info : ''));
- ds_json_encode(10000, '', $result);
- }
-
- public function get_attribute()
- {
- $this->_model_search = model('search');
- $default_classid = intval(input('param.cate_id'));
-
- list($goods_param, $brand_array, $initial_array, $attr_array, $checked_brand, $checked_attr) = $this->_model_search->getAttribute(input('param.'), $default_classid);
- $result = array(
- 'goods_param' => $goods_param,
- 'brand_array' => $brand_array,
- 'initial_array' => $initial_array,
- 'attr_array' => $attr_array,
- 'checked_brand' => $checked_brand,
- 'checked_attr' => $checked_attr,
- );
- ds_json_encode(10000, '', $result);
- }
-
- public function get_bundling()
- {
- $goods_id = intval(input('param.goods_id'));
- if ($goods_id <= 0) {
- ds_json_encode(10001, lang('param_error'));
- }
-
- $array = model('pbundling')->getBundlingCacheByGoodsId($goods_id);
- if (!empty($array)) {
- $bundling_array = unserialize($array['bundling_array']);
- $b_goods_array = unserialize($array['b_goods_array']);
- ds_json_encode(10000, '', array('bundling_array' => !empty($bundling_array) ? $bundling_array : false, 'b_goods_array' => !empty($b_goods_array) ? $b_goods_array : false));
- } else {
- ds_json_encode(10001, lang('bundling_not_exist'));
- }
- }
-
- private function _goods_list_order($sort_key, $sort_order)
- {
- $result = 'goodscommon.mall_goods_commend desc,goodscommon.mall_goods_sort asc';
- if (!empty($sort_key)) {
- $sequence = 'desc';
- if ($sort_order == 'asc') {
- $sequence = 'asc';
- }
- switch ($sort_key) {
-
- case 'goods_salenum':
- $result = 'goods.goods_salenum' . ' ' . $sequence;
- break;
-
- case 'goods_click':
- $result = 'goods.goods_click' . ' ' . $sequence;
- break;
-
- case 'goods_price':
- $result = 'goodscommon.goods_price' . ' ' . $sequence;
- break;
-
- case 'goods_addtime':
- $result = 'goodscommon.goods_addtime' . ' ' . $sequence;
- break;
- }
- }
- return $result;
- }
- private function _goods_list_extend($goods_list)
- {
-
- $commonid_array = array();
- $goodsid_array = array();
- $goods_model = model('goods');
- foreach ($goods_list as $key => $value) {
- if (!$value['goods_storage']) {
- $goods_info = $goods_model->getGoodsStorageByCommonId($value['goods_commonid']);
- if ($goods_info) {
- $goods_list[$key]['goods_id'] = $value['goods_id'] = $goods_info['goods_id'];
- $goods_list[$key]['goods_promotion_price'] = $goods_info['goods_promotion_price'];
- }
- }
- $commonid_array[] = $value['goods_commonid'];
- $goodsid_array[] = $value['goods_id'];
- }
-
- $store_model = model('store');
- $groupbuy_list = model('groupbuy')->getGroupbuyListByGoodsCommonIDString(implode(',', $commonid_array));
- $xianshi_list = model('pxianshigoods')->getXianshigoodsListByGoodsString(implode(',', $goodsid_array));
- foreach ($goods_list as $key => $value) {
-
- if (isset($groupbuy_list[$value['goods_commonid']])) {
- $goods_list[$key]['goods_price'] = $groupbuy_list[$value['goods_commonid']]['groupbuy_price'];
- $goods_list[$key]['group_flag'] = true;
- } else {
- $goods_list[$key]['group_flag'] = false;
- }
-
- if (isset($xianshi_list[$value['goods_id']]) && !$goods_list[$key]['group_flag']) {
- $goods_list[$key]['goods_price'] = $xianshi_list[$value['goods_id']]['xianshigoods_price'];
- $goods_list[$key]['xianshi_flag'] = true;
- } else {
- $goods_list[$key]['xianshi_flag'] = false;
- }
-
- $goods_list[$key]['goods_image_url'] = goods_cthumb($value['goods_image'], 480, $value['store_id']);
- $store_info = $store_model->getStoreInfoByID($value['store_id']);
- $goods_list[$key]['store_name'] = $store_info['store_name'];
- unset($goods_list[$key]['goods_commonid']);
- unset($goods_list[$key]['nc_distinct']);
- }
- return $goods_list;
- }
-
- public function goods_detail()
- {
- $goods_id = intval(input('param.goods_id'));
- $area_id = intval(input('param.area_id'));
- $bargain_id = intval(input('param.bargain_id'));
-
- $goods_model = model('goods');
- $goods_detail = $goods_model->getGoodsDetail($goods_id);
-
- if (empty($goods_detail)) {
- ds_json_encode(10001, lang('goods_goods_not_exist'));
- }
- foreach ($goods_detail['gift_array'] as $k => $v) {
- $goods_detail['gift_array'][$k]['gift_goodsimage_url'] = goods_cthumb($v['gift_goodsimage'], '240', $goods_detail['goods_info']['store_id']);
- }
-
-
-
- $hot_sales = $goods_model->getGoodsCommendList($goods_detail['goods_info']['store_id'], 6);
- $goodsid_array = array();
- foreach ($hot_sales as $value) {
- $goodsid_array[] = $value['goods_id'];
- }
- $goods_commend_list = array();
- foreach ($hot_sales as $value) {
- $goods_commend = array();
- $goods_commend['goods_id'] = $value['goods_id'];
- $goods_commend['goods_name'] = $value['goods_name'];
- $goods_commend['goods_price'] = $value['goods_price'];
- $goods_commend['goods_promotion_price'] = $value['goods_promotion_price'];
- $goods_commend['goods_img_480'] = goods_cthumb($value['goods_image'], 240);
- $goods_commend['goods_salenum'] = $value['goods_salenum'];
- $goods_commend_list[] = $goods_commend;
- }
- $goods_detail['goods_commend_list'] = $goods_commend_list;
- $store_info = model('store')->getStoreInfoByID($goods_detail['goods_info']['store_id']);
- $goods_detail['store_info']['store_avatar'] = get_store_logo($store_info['store_avatar'], 'store_avatar');
- $goods_detail['store_info']['store_logo'] = get_store_logo($store_info['store_logo'], 'store_logo');
- $goods_detail['store_info']['store_id'] = $store_info['store_id'];
- $goods_detail['store_info']['store_name'] = $store_info['store_name'];
- $goods_detail['store_info']['member_id'] = $store_info['member_id'];
- $goods_detail['store_info']['member_name'] = $store_info['member_name'];
- $goods_detail['store_info']['is_platform_store'] = $store_info['is_platform_store'];
- $goods_detail['store_info']['store_address'] = $store_info['area_info'] . $store_info['store_address'];
- $goods_detail['store_info']['goods_count'] = $store_info['goods_count'];
- $goods_detail['store_info']['store_baozh'] = $store_info['store_baozh'];
- $goods_detail['store_info']['store_shiti'] = $store_info['store_shiti'];
- $goods_detail['store_info']['store_qtian'] = $store_info['store_qtian'];
- $goods_detail['store_info']['store_zhping'] = $store_info['store_zhping'];
- $goods_detail['store_info']['store_erxiaoshi'] = $store_info['store_erxiaoshi'];
- $goods_detail['store_info']['store_tuihuo'] = $store_info['store_tuihuo'];
- $goods_detail['store_info']['store_shiyong'] = $store_info['store_shiyong'];
- $goods_detail['store_info']['store_xiaoxie'] = $store_info['store_xiaoxie'];
- $goods_detail['store_info']['store_huodaofk'] = $store_info['store_huodaofk'];
- $goods_detail['store_info']['store_avaliable_deposit'] = $store_info['store_avaliable_deposit'];
- if ($store_info['is_platform_store']) {
- $goods_detail['store_info']['store_credit'] = array(
- 'store_desccredit' => array(
- 'text' => lang('store_desccredit'),
- 'credit' => 5,
- 'percent' => '----',
- 'percent_class' => 'equal',
- 'percent_text' => lang('percent_text_equal'),
- ),
- 'store_servicecredit' => array(
- 'text' => lang('store_servicecredit'),
- 'credit' => 5,
- 'percent' => '----',
- 'percent_class' => 'equal',
- 'percent_text' => lang('percent_text_equal'),
- ),
- 'store_deliverycredit' => array(
- 'text' => lang('store_deliverycredit'),
- 'credit' => 5,
- 'percent' => '----',
- 'percent_class' => 'equal',
- 'percent_text' => lang('percent_text_equal'),
- ),
- );
- } else {
- $storeCredit = array();
- $percentClassTextMap = array(
- 'equal' => lang('percent_text_equal'),
- 'high' => lang('percent_text_high'),
- 'low' => lang('percent_text_low'),
- );
- foreach ((array) $store_info['store_credit'] as $k => $v) {
- isset($v['percent_class']) && $v['percent_text'] = $percentClassTextMap[$v['percent_class']];
- $storeCredit[$k] = $v;
- }
- $goods_detail['store_info']['store_credit'] = $storeCredit;
- }
-
- $goods_detail = $this->_goods_detail_extend($goods_detail);
- $goods_common_info = $goods_model->getGoodsCommonInfoByID($goods_detail['goods_info']['goods_commonid']);
- $goods_detail['mb_body'] = array();
- if ($goods_common_info['mobile_body'] != '') {
- $goods_detail['mb_body'] = unserialize($goods_common_info['mobile_body']);
- }
-
- if (!$bargain_id) {
- $goods_detail['goods_info']['bargain_info'] = '';
- }
-
- if ($member_id = $this->getMemberIdIfExists()) {
- $c = (int) model('favorites')->getGoodsFavoritesCountByGoodsId($goods_id, $member_id);
- $goods_detail['is_favorate'] = $c > 0;
- $seller_model = model('seller');
- $seller_info = $seller_model->getSellerInfo(array('member_id' => $member_id));
-
- if (empty($seller_info) || $store_info['store_id'] != $seller_info['store_id']) {
- model('goodsbrowse')->addViewedGoods($goods_id, $member_id);
- }
-
- if ($goods_detail['goods_info']['bargain_info'] != '') {
- $pbargainorder_model = model('pbargainorder');
-
- $bargainorder_info = $pbargainorder_model->getOnePbargainorder(array('bargainorder_initiator_id' => $member_id, 'bargain_id' => $goods_detail['goods_info']['bargain_info']['bargain_id']));
- if ($bargainorder_info) {
- if (!$bargainorder_info['order_id']) {
- $goods_detail['goods_info']['bargainorder_info'] = $bargainorder_info;
- } else {
- $goods_detail['goods_info']['bargain_info'] = '';
- }
- }
- }
- if (isset($goods_detail['goods_info']['pintuan_type']) && $goods_detail['goods_info']['pintuan_type']) {
-
- $order_id_list = Db::name('ppintuanorder')->where(array(array('pintuan_id', '=', $goods_detail['goods_info']['pintuan_id']), array('pintuanorder_state', '<>', 0)))->column('order_id');
- if ($order_id_list) {
- if (!$goods_detail['goods_info']['is_virtual']) {
- if ($order_id = Db::name('order')->where(array(array('buyer_id', '=', $member_id), array('order_id', 'in', $order_id_list)))->value('order_id')) {
- $condition = array();
- $condition[] = array('pintuan_id', '=', $goods_detail['goods_info']['pintuan_id']);
- $condition[] = array('order_id', '=', $order_id);
- $condition[] = array('pintuanorder_state', '<>', 0);
- $goods_detail['goods_info']['pintuanorder_state'] = Db::name('ppintuanorder')->where($condition)->value('pintuanorder_state');
- }
- } else {
- if ($order_id = Db::name('vrorder')->where(array(array('buyer_id', '=', $member_id), array('order_id', 'in', $order_id_list)))->value('order_id')) {
- $condition = array();
- $condition[] = array('pintuan_id', '=', $goods_detail['goods_info']['pintuan_id']);
- $condition[] = array('order_id', '=', $order_id);
- $condition[] = array('pintuanorder_state', '<>', 0);
- $goods_detail['goods_info']['pintuanorder_state'] = Db::name('ppintuanorder')->where($condition)->value('pintuanorder_state');
- }
- }
- }
- }
- }
-
- $condition = array();
- $condition[] = array('vouchertemplate_if_private', '=', 0);
- $condition[] = array('vouchertemplate_state', '=', 1);
- $condition[] = array('vouchertemplate_enddate', '>', TIMESTAMP);
- $condition[] = array('vouchertemplate_store_id', '=', $store_info['store_id']);
- $voucher_template = model('voucher')->getVouchertemplateList($condition);
- if (!empty($voucher_template)) {
- foreach ($voucher_template as $val) {
- $param = array();
- $param['vouchertemplate_id'] = $val['vouchertemplate_id'];
- $param['vouchertemplate_price'] = $val['vouchertemplate_price'];
- $param['vouchertemplate_points'] = $val['vouchertemplate_points'];
- $param['vouchertemplate_limit'] = $val['vouchertemplate_limit'];
- $param['vouchertemplate_enddate'] = $val['vouchertemplate_enddate'];
- $goods_detail['voucher'][] = $param;
- }
- }
-
- $goods_eval_list = model('evaluategoods')->getEvaluategoodsList(array('geval_goodsid' => $goods_id), '3');
-
- $goods_detail['goods_eval_list'] = $goods_eval_list;
-
- $goods_evaluate_info = model('evaluategoods')->getEvaluategoodsInfoByGoodsID($goods_id);
- $goods_detail['goods_evaluate_info'] = $goods_evaluate_info;
- $goods_detail['goods_hair_info'] = $this->_calc(0, $goods_id);
- $goods_detail['goods_info']['pintuangroup_share_id'] = intval(input('param.pintuangroup_share_id'));
- $inviter_model = model('inviter');
- $goods_detail['inviter_money'] = 0;
- if (config('ds_config.inviter_show') && config('ds_config.inviter_open') && $goods_detail['goods_info']['inviter_open'] && $member_id && $inviter_model->getInviterInfo('i.inviter_id=' . $member_id . ' AND i.inviter_state=1')) {
- $inviter_money = round($goods_detail['goods_info']['inviter_ratio'] / 100 * $goods_detail['goods_info']['goods_price'] * floatval(config('ds_config.inviter_ratio_1')) / 100, 2);
- if ($inviter_money > 0) {
- $goods_detail['goods_info']['inviter_money'] = $inviter_money;
- }
- }
- if (empty($goods_detail['mansong_info'])) {
- $goods_detail['mansong_info'] = false;
- }
-
- $consult_type = rkcache('consulttype', true);
- $goods_detail['consult_type'] = $consult_type;
- $storeplate_model = model('storeplate');
-
- if ($goods_detail['goods_info']['plateid_top'] > 0) {
- $plate_top = $storeplate_model->getStoreplateInfoByID($goods_detail['goods_info']['plateid_top']);
- if ($plate_top) {
- $plate_top['storeplate_content'] = htmlspecialchars_decode($plate_top['storeplate_content']);
- }
- $goods_detail['goods_info']['plate_top'] = $plate_top;
- }
-
- if ($goods_detail['goods_info']['plateid_bottom'] > 0) {
- $plate_bottom = $storeplate_model->getStoreplateInfoByID($goods_detail['goods_info']['plateid_bottom']);
- if ($plate_bottom) {
- $plate_bottom['storeplate_content'] = htmlspecialchars_decode($plate_bottom['storeplate_content']);
- }
- $goods_detail['goods_info']['plate_bottom'] = $plate_bottom;
- }
- $cache_key = 'goods-live-' . $store_info['store_id'] . '-' . date('H');
- $result = rcache($cache_key);
- if (empty($result)) {
-
- $live_apply_model = model('live_apply');
- $condition = array();
- $condition[] = array('live_apply_state', '=', 1);
- $condition[] = array('live_apply_play_time', '<', strtotime(date('Y-m-d H:0:0')) + 3600);
- $condition[] = array('live_apply_end_time', '>', TIMESTAMP);
- $condition[] = array('live_apply_type', '=', LIVE_APPLY_TYPE_GOODS);
- $condition[] = array('live_apply_user_type', '=', 2);
- $condition[] = array('live_apply_user_id', '=', $store_info['store_id']);
- $live_apply_list = $live_apply_model->getLiveApplyList($condition, '*', 0);
- foreach ($live_apply_list as $key => $val) {
- $live_apply_list[$key]['goods_commonid_array'] = Db::name('live_apply_goods')->where(array(array('live_apply_id', '=', $val['live_apply_id'])))->column('goods_commonid');
- }
- $minute = 60 - intval(date('i'));
- $result = array('live_apply_list' => $live_apply_list);
- wcache($cache_key, $result, $minute * 60);
- }
- $live_apply_list = $result['live_apply_list'];
- foreach ($live_apply_list as $val) {
- if ($val['live_apply_play_time'] < TIMESTAMP && $val['live_apply_end_time'] > TIMESTAMP) {
- if (in_array($goods_detail['goods_info']['goods_commonid'], $val['goods_commonid_array'])) {
- $goods_detail['goods_info']['live_apply_info'] = $val;
- break;
- }
- }
- }
- $goods_detail['goods_info']['goodsvideo_url'] = goods_video($goods_detail['goods_info']['goodsvideo_name']);
- $chain_model = model('chain');
- $chain_ids = Db::name('chain_goods')->where(array(array('goods_id', '=', $goods_id), array('goods_storage', '>', 0)))->column('chain_id');
- $chain_info = $chain_model->getChainOpenInfo(array(array('chain_if_pickup', '=', 1), array('chain_id', 'in', $chain_ids)));
- $goods_detail['goods_info']['if_chain'] = $chain_info ? 1 : 0;
- if ($goods_common_info['store_service_ids']) {
- $store_service_model = model('store_service');
- $condition = array();
- $condition[] = array('store_id', '=', $store_info['store_id']);
- $condition[] = array('store_service_id', 'in', explode(',', $goods_common_info['store_service_ids']));
- $goods_detail['goods_info']['store_service_list'] = $store_service_model->getStoreServiceList($condition, '*', 0);
- }
- ds_json_encode(10000, '', $goods_detail);
- }
-
- public function consulting_list()
- {
- $goods_id = intval(input('param.goods_id'));
- if ($goods_id <= 0) {
- ds_json_encode(10001, lang('param_error'));
- }
-
- $consult_model = model('consult');
- $condition = array();
- $condition[] = array('goods_id', '=', $goods_id);
- if (intval(input('param.ctid')) > 0) {
- $condition[] = array('consulttype_id', '=', intval(input('param.ctid')));
- }
- $consult_list = $consult_model->getConsultList($condition, '*');
- $result = array_merge(array('consult_list' => $consult_list), mobile_page($consult_model->page_info));
- ds_json_encode(10000, '', $result);
- }
-
- public function save_consult()
- {
- $member_id = $this->getMemberIdIfExists();
-
- if (!config('ds_config.guest_comment') && !$member_id) {
- ds_json_encode(10001, lang('goods_index_goods_noallow'));
- }
- $goods_id = intval(input('post.goods_id'));
- if ($goods_id <= 0) {
- ds_json_encode(10001, lang('param_error'));
- }
-
- if (trim(input('post.goods_content')) == "") {
- ds_json_encode(10001, lang('goods_index_input_consult'));
- }
-
- $data = [
- 'goods_content' => input('post.goods_content')
- ];
- $res = word_filter($data['goods_content']);
- if (!$res['code']) {
- ds_json_encode(10001, $res['msg']);
- }
- $data['goods_content'] = $res['data']['text'];
- $goods_validate = ds_validate('goods');
- if (!$goods_validate->scene('save_consult')->check($data)) {
- ds_json_encode(10001, $goods_validate->getError());
- }
-
- $goods = model('goods');
- $goods_info = $goods->getGoodsInfoByID($goods_id);
- if (empty($goods_info)) {
- ds_json_encode(10001, lang('goods_index_goods_not_exists'));
- }
- if ($member_id) {
-
- $member_model = model('member');
- $member_info = $member_model->getMemberInfo(array('member_id' => $member_id));
- if (empty($member_info) || $member_info['is_allowtalk'] == 0) {
- ds_json_encode(10001, lang('goods_index_goods_noallow'));
- }
- $seller_model = model('seller');
- $seller_info = $seller_model->getSellerInfo(array('member_id' => $member_id));
-
- if ($seller_info && $goods_info['store_id'] == $seller_info['store_id']) {
- ds_json_encode(10001, lang('goods_index_consult_store_error'));
- }
- }
-
- $store_model = model('store');
- $store_info = $store_model->getStoreInfoByID($goods_info['store_id']);
- if ($store_info['store_state'] == '0' || intval($store_info['store_state']) == '2' || (intval($store_info['store_endtime']) != 0 && $store_info['store_endtime'] <= TIMESTAMP)) {
- ds_json_encode(10001, lang('goods_index_goods_store_closed'));
- }
-
- $input = array();
- $input['goods_id'] = $goods_id;
- $input['goods_name'] = $goods_info['goods_name'];
- $input['member_id'] = intval($member_id) > 0 ? $member_id : 0;
- $input['member_name'] = isset($member_info) ? $member_info['member_name'] : '';
- $input['store_id'] = $store_info['store_id'];
- $input['store_name'] = $store_info['store_name'];
- $input['consulttype_id'] = intval(input('post.consult_type_id', 1));
- $input['consult_addtime'] = TIMESTAMP;
- $input['consult_content'] = $data['goods_content'];
- $input['consult_isanonymous'] = input('post.hide_name') == 'hide' ? 1 : 0;
- $consult_model = model('consult');
- if ($consult_model->addConsult($input)) {
- ds_json_encode(10000, lang('goods_index_consult_success'));
- } else {
- ds_json_encode(10001, lang('goods_index_consult_fail'));
- }
- }
-
- public function addbrowse()
- {
- $goods_id = intval(input('param.gid'));
- model('goodsbrowse')->addViewedGoods($goods_id, $this->member_info['member_id'], $this->store_info['store_id']);
- exit();
- }
-
- private function _goods_detail_extend($goods_detail)
- {
-
- $goods_detail['spec_detail'] = json_decode($goods_detail['spec_list'], true);
- unset($goods_detail['spec_list']);
- $goods_detail['spec_list'] = $goods_detail['spec_list_mobile'];
- unset($goods_detail['spec_list_mobile']);
-
- unset($goods_detail['goods_image']);
- $goods_detail['goods_image'] = $goods_detail['goods_image_mobile'];
- unset($goods_detail['goods_image_mobile']);
-
- $goods_detail['goods_info']['goods_body'] = htmlspecialchars_decode($goods_detail['goods_info']['goods_body']);
-
-
- unset($goods_detail['goods_info']['gc_id']);
- unset($goods_detail['goods_info']['gc_name']);
- unset($goods_detail['goods_info']['store_id']);
- unset($goods_detail['goods_info']['store_name']);
- unset($goods_detail['goods_info']['brand_id']);
- unset($goods_detail['goods_info']['brand_name']);
- unset($goods_detail['goods_info']['type_id']);
- unset($goods_detail['goods_info']['goods_image']);
- unset($goods_detail['goods_info']['goods_stateremark']);
- unset($goods_detail['goods_info']['goods_verifyremark']);
- unset($goods_detail['goods_info']['goods_lock']);
- unset($goods_detail['goods_info']['goods_addtime']);
- unset($goods_detail['goods_info']['goods_edittime']);
- unset($goods_detail['goods_info']['goods_shelftime']);
- unset($goods_detail['goods_info']['goods_show']);
- unset($goods_detail['goods_info']['goods_commend']);
- unset($goods_detail['goods_info']['explain']);
- unset($goods_detail['goods_info']['buynow_text']);
- unset($goods_detail['groupbuy_info']);
- unset($goods_detail['xianshi_info']);
- return $goods_detail;
- }
-
- public function goods_evaluate()
- {
- $goods_id = intval(input('param.goods_id'));
- $type = intval(input('param.type'));
- $condition = array();
- $condition[] = array('geval_goodsid', '=', $goods_id);
- switch ($type) {
- case '1':
- $condition[] = array('geval_scores', 'in', '5,4');
- break;
- case '2':
- $condition[] = array('geval_scores', 'in', '3,2');
- break;
- case '3':
- $condition[] = array('geval_scores', 'in', '1');
- break;
- case '4':
-
- $condition[] = array('geval_image', '<>', '');
- break;
- case '5':
- $condition[] = array('geval_content_again', '<>', '');
- break;
- }
-
- $evaluategoods_model = model('evaluategoods');
- $goods_eval_list = $evaluategoods_model->getEvaluategoodsList($condition, $this->pagesize);
- foreach ($goods_eval_list as $k => $val) {
- if ($val['geval_isanonymous']) {
- $goods_eval_list[$k]['member_avatar'] = get_member_avatar_for_id(0);
- $goods_eval_list[$k]['geval_frommembername'] = str_cut($val['geval_frommembername'], 2) . '***';
- }
- if (!empty($goods_eval_list[$k]['geval_image'])) {
- $goods_eval_list[$k]['geval_image'] = explode(',', $goods_eval_list[$k]['geval_image']);
- foreach ($goods_eval_list[$k]['geval_image'] as $kk => $vv) {
- $store_id = substr($vv, 0, strpos($vv, '_'));
- $goods_eval_list[$k]['geval_image'][$kk] = ds_get_pic(ATTACH_MALBUM . '/' . $store_id, $vv);
- }
- }
- }
- $goods_eval_list = model('memberevaluate', 'logic')->evaluateListDity($goods_eval_list);
- $result = array_merge(array('goods_eval_list' => $goods_eval_list), mobile_page(is_object($evaluategoods_model->page_info) ? $evaluategoods_model->page_info : 0));
- ds_json_encode(10000, '', $result);
- }
-
- public function calc()
- {
- $area_id = intval(input('param.area_id'));
- $goods_id = intval(input('param.goods_id'));
- ds_json_encode(10000, '', $this->_calc($area_id, $goods_id));
- }
- public function _calc($area_id, $goods_id)
- {
- $goods_info = model('goods')->getGoodsInfo(array('goods_id' => $goods_id), 'transport_id,store_id,goods_freight');
- $store_info = model('store')->getStoreInfoByID($goods_info['store_id']);
- $if_store = true;
- $area_name = '';
- if ($area_id <= 0) {
- if (strpos($store_info['deliver_region'], '|')) {
- $store_info['deliver_region'] = explode('|', $store_info['deliver_region']);
- $store_info['deliver_region_ids'] = explode(' ', $store_info['deliver_region'][0]);
- }
- if (isset($store_info['deliver_region_ids'])) {
- $area_id = intval($store_info['deliver_region_ids'][0]);
- $area_name = $store_info['deliver_region'][1];
- }
- }
- if ($goods_info['transport_id']) {
- $freight_total = model('transport')->calcTransport(intval($goods_info['transport_id']), $area_id);
- if ($freight_total > 0) {
- if ($store_info['store_free_price'] > 0) {
- if ($freight_total >= $store_info['store_free_price']) {
- $freight_total = lang('free_shipping');
- } else {
- $freight_total = lang('freight') . ':' . $freight_total . lang('shop_with') . $store_info['store_free_price'] . lang('goods_index_yuan') . lang('free_shipping');
- }
- } else {
- $freight_total = lang('freight') . ':' . $freight_total . lang('goods_index_yuan');
- }
- } else {
- if ($freight_total === false) {
- $if_store = false;
- }
- $freight_total = lang('free_shipping');
- }
- } else {
- $freight_total = $goods_info['goods_freight'] > 0 ? lang('freight') . ':' . $goods_info['goods_freight'] . lang('goods_index_yuan') : lang('free_shipping');
- }
- return array('content' => $freight_total, 'if_store_cn' => $if_store === false ? lang('goods_out_stock') : lang('goods_stock'), 'if_store' => $if_store === false ? false : true, 'area_name' => $area_name ? $area_name : lang('goods_index_trans_country'));
- }
-
- public function bd_decrypt($bdLat, $bdLon)
- {
- $x = $bdLon - 0.0065;
- $y = $bdLat - 0.006;
- $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $this->x_pi);
- $theta = atan2($y, $x) - 0.000003 * cos($x * $this->x_pi);
- $gcjLon = $z * cos($theta);
- $gcjLat = $z * sin($theta);
- return array('lat' => $gcjLat, 'lon' => $gcjLon);
- }
-
- private function getDistance($lat1, $lng1, $lat2, $lng2)
- {
- $earthRadius = 6367000;
-
- $lat1 = ($lat1 * pi()) / 180;
- $lng1 = ($lng1 * pi()) / 180;
- $lat2 = ($lat2 * pi()) / 180;
- $lng2 = ($lng2 * pi()) / 180;
-
- $calcLongitude = $lng2 - $lng1;
- $calcLatitude = $lat2 - $lat1;
- $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
- $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
- $calculatedDistance = $earthRadius * $stepTwo;
- return round($calculatedDistance);
- }
- private function parseDistance($num = 0)
- {
- $num = floatval($num);
- if ($num >= 1000) {
- $num = $num / 1000;
- return str_replace('.0', '', number_format($num, 1, '.', '')) . 'km';
- } else {
- return $num . 'm';
- }
- }
-
- public function chain_list()
- {
- $area_id = input('param.area_id');
- $goods_id = input('param.goods_id');
- $num = input('param.num');
- if (!$num) {
- !$num = 1;
- }
- $chain_model = model('chain');
- $chain_ids = Db::name('chain_goods')->where(array(array('goods_id', '=', $goods_id), array('goods_storage', '>=', $num)))->column('chain_id');
- $condition = array();
- $condition[] = array('chain_if_pickup', '=', 1);
- $condition[] = array('chain_id', 'in', $chain_ids);
- if ($area_id) {
- $condition[] = array('chain_area_2|chain_area_3', '=', $area_id);
- }
- $chain_list = $chain_model->getChainOpenList($condition);
- $chain_list = array_values($chain_list);
- return ds_json_encode(10000, '', array('chain_list' => $chain_list));
- }
- }
|