goods_helper.php 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/3/30
  6. * Time: 下午3:31
  7. */
  8. require_once (BASE_ROOT_PATH . '/helper/field_helper.php');
  9. require_once (BASE_ROOT_PATH . '/helper/model_helper.php');
  10. require_once (BASE_ROOT_PATH . '/helper/activity_helper.php');
  11. require_once (BASE_ROOT_PATH . '/helper/goods/commonid_helper.php');
  12. require_once (BASE_ROOT_PATH . '/helper/predeposit_helper.php');
  13. require_once (BASE_ROOT_PATH . '/helper/brand_helper.php');
  14. require_once (BASE_ROOT_PATH . '/helper/user_session/favorite.php');
  15. require_once (BASE_ROOT_PATH . '/helper/user_session/anotice.php');
  16. class goods_helper
  17. {
  18. const fieldstr = 'goods_id,goods_commonid,goods_state,store_id,brand_id,gc_id,goods_name,goods_price,goods_marketprice,goods_promotion_price,goods_jingle,
  19. goods_image,goods_salenum,evaluation_good_star,evaluation_count,goods_storage,goods_storage_alarm,is_virtual,is_presell,
  20. is_fcode,have_gift,goods_mobile_name,goods_spec,goods_collect,
  21. goods_addtime,goods_edittime';
  22. private $mUseMainPage;
  23. public function __construct($main_page = true) {
  24. $this->mUseMainPage = $main_page;
  25. }
  26. public function get_distinct($goods_commonids)
  27. {
  28. $goods_list = Model('goods')->cls()->getGoodsListByColorDistinct(array('goods_commonid' => array('in', $goods_commonids)),self::fieldstr);
  29. $goods_list = $this->goods_list_extend($goods_list);
  30. return $goods_list;
  31. }
  32. public function get_infos($goods_ids)
  33. {
  34. $goods_list = Model('goods')->cls()->getGoodsOnlineList(array('goods_id' => array('in', $goods_ids)),self::fieldstr);
  35. $goods_list = $this->goods_list_extend($goods_list);
  36. return $goods_list;
  37. }
  38. //show_gid => 显示这个sku的详情
  39. public function get_spu($common_id,$show_gid,&$err)
  40. {
  41. $err = errcode::Success;
  42. $common_id = intval($common_id);
  43. $mod = Model('goods');
  44. $common_info = $mod->getGoodeCommonInfoByID($common_id);
  45. if(empty($common_info)) {
  46. $err = array('code' => errcode::ErrParamter,'msg' =>'商品不存在或者已经删除');
  47. return false;
  48. }
  49. $goods_list = $mod->getGoodsOnlineList(array('goods_commonid' => $common_id),self::fieldstr);
  50. if(empty($goods_list)) {
  51. $err = array('code' => errcode::ErrParamter,'msg' =>'抱歉,商品已经下架了,不能查看详情~');
  52. return false;
  53. }
  54. foreach ($goods_list as $goods_info) {
  55. $mod->click_goods($goods_info['goods_id']);
  56. }
  57. $ret = array();
  58. $gcommon = new goods_common($common_info,$goods_list,$show_gid);
  59. $ret['common_info'] = $gcommon->format();
  60. $ret_summary = $this->summary($goods_list,$related_goods);
  61. $summary = $ret_summary['summary'];
  62. if(!empty($related_goods)) {
  63. $ret_related = $this->online_summary($related_goods,$x);
  64. $summary = array_merge($summary,$ret_related['summary']);
  65. }
  66. $ret['summary'] = $summary;
  67. if(empty($ret['common_info']['images']))
  68. {
  69. $images = [];
  70. foreach ($summary as $item) {
  71. $images[] = $item['goods_image_url'];
  72. }
  73. $ret['common_info']['images'] = $images;
  74. }
  75. $ret['groupbuy'] = $ret_summary['groupbuy'];
  76. $ret['limitime'] = $ret_summary['limitime'];
  77. $ret['bundling'] = $ret_summary['bundling'];
  78. return $ret;
  79. }
  80. public function common_summary($common_ids, &$goods_ids, &$related_goods)
  81. {
  82. $mod = Model('goods');
  83. $goods_list = $mod->getGoodsListByColorDistinct(array('goods_commonid' => array('in', $common_ids)),self::fieldstr);
  84. $goods_ids = array();
  85. foreach ($goods_list as $goods) {
  86. $goods_ids[] = intval($goods['goods_id']);
  87. }
  88. return $this->summary($goods_list,$related_goods);
  89. }
  90. public function online_summary(&$goods_ids, &$related_goods)
  91. {
  92. $goods_list = Model('goods')->cls()->getGoodsOnlineList(array('goods_id' => array('in', $goods_ids)),self::fieldstr);
  93. $goods_ids = array();
  94. foreach ($goods_list as $goods) {
  95. $goods_id = intval($goods['goods_id']);
  96. $goods_ids[] = $goods_id;
  97. }
  98. $goods_ids = array_unique($goods_ids);
  99. $ret = $this->summary($goods_list,$related_goods);
  100. return $ret;
  101. }
  102. public function cart_summary($goods_ids,&$related_goods)
  103. {
  104. $goods_list = Model('goods')->cls()->getGoodsList(array('goods_id' => array('in', $goods_ids)),self::fieldstr);
  105. return $this->summary($goods_list,$related_goods);
  106. }
  107. public function summary($goods_list, &$related_goods)
  108. {
  109. $related_goods = [];
  110. $summary_list = [];
  111. $sort_summarys = [];
  112. $favorate = new user_session\favorite();
  113. $anotice = new user_session\anotice();
  114. foreach ($goods_list as $goods)
  115. {
  116. $summary = new goods_summary($goods);
  117. $info = $summary->format($act_type,$act_id,$favorate,$anotice,$this->mUseMainPage);
  118. $goods_id = intval($goods['goods_id']);
  119. $sort_summarys[$goods_id] = $info;
  120. $summary_list[] = $info;
  121. $related_goods = array_merge($related_goods,$summary->related_goods());
  122. }
  123. $related_goods = array_unique($related_goods);
  124. $gbuys = [];
  125. $ltimes = [];
  126. $bundling = [];
  127. foreach ($summary_list as $summary)
  128. {
  129. $act_id = intval($summary['act_id']);
  130. $act_type = intval($summary['act_type']);
  131. if($act_type == activity_helper::ACTIVITY_GROUPBUY)
  132. {
  133. if(isset($gbuys[$act_id]) == false) {
  134. $info = activity\groupbuy::instance()->get_info($act_id);
  135. $gbuys[$act_id] = $info;
  136. }
  137. }
  138. elseif($act_type == activity_helper::ACTIVITY_LIMITTIME)
  139. {
  140. if(isset($ltimes[$act_id]) == false) {
  141. $info = activity\limitime::instance()->get_info($act_id);
  142. $ltimes[$act_id] = $info;
  143. }
  144. }
  145. else {
  146. }
  147. $have_bundle = $summary['have_bundle'];
  148. if($have_bundle)
  149. {
  150. foreach ($summary['bundles'] as $bl_id) {
  151. $info = activity\bundling::instance()->get_info($bl_id,$goods_ids);
  152. $bundling[$bl_id] = $info;
  153. }
  154. }
  155. }
  156. $ret = array();
  157. $ret['summary'] = $summary_list;
  158. $ret['sort_summary'] = $sort_summarys;
  159. $ret['groupbuy'] = array();
  160. foreach ($gbuys as $key => $val) {
  161. array_push($ret['groupbuy'],$val);
  162. }
  163. $ret['limitime'] = array();
  164. foreach ($ltimes as $key => $val) {
  165. array_push($ret['limitime'],$val);
  166. }
  167. $ret['bundling'] = array();
  168. foreach ($bundling as $key => $val) {
  169. array_push($ret['bundling'],$val);
  170. }
  171. return $ret;
  172. }
  173. /**
  174. * 处理商品列表(抢购、限时折扣、商品图片)
  175. */
  176. private function goods_list_extend($goods_list)
  177. {
  178. if(empty($goods_list)) return $goods_list;
  179. foreach ($goods_list as $key => &$value)
  180. {
  181. $value['group_flag'] = false;
  182. $value['xianshi_flag'] = false;
  183. //商品图片url
  184. $value['goods_image_url'] = cthumb($value['goods_image'], 360, $value['store_id']);
  185. $value['goods_state'] = 1;
  186. $value['goods_storage_state'] = intval($value['goods_storage']) > 0 ? 1 : 0;
  187. $value['goods_name'] = $value['goods_mobile_name'];
  188. $fields = 'store_id,nc_distinct,gc_id,goods_image,goods_salenum,evaluation_good_star,evaluation_count,is_virtual,is_presell,' .
  189. 'is_fcode,have_gift,goods_storage,goods_storage_alarm,goods_attr,group_flag,xianshi_flag';
  190. field_helper::unset_column($value,$fields);
  191. }
  192. return $goods_list;
  193. }
  194. }