PageRenderTime 74ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/aoliz/core/api/productline/1.0/api_b2b_1_0_productline.php

http://phpfor.googlecode.com/
PHP | 207 lines | 152 code | 26 blank | 29 comment | 34 complexity | 2896370df376ef2b87d47bcb76d58f79 MD5 | raw file
  1. <?php
  2. include_once(CORE_DIR.'/api/shop_api_object.php');
  3. class api_b2b_1_0_productline extends shop_api_object {
  4. var $app_error=array(
  5. 'member has not sell permission'=>array('no'=>'b_productline_001','debug'=>'','level'=>'warning','info'=>'???????','desc'=>'','debug'=>''),
  6. 'member has not product line'=>array('no'=>'b_productline_002','debug'=>'','level'=>'warning','info'=>'?????????','desc'=>'','debug'=>''),
  7. 'serivce data error'=>array('no'=>'b_productline_003','debug'=>'','level'=>'warning','info'=>'??????','desc'=>'','debug'=>''),
  8. 'member has not set sell permission'=>array('no'=>'b_productline_004','debug'=>'','level'=>'warning','info'=>'??????????','desc'=>'','debug'=>'')
  9. );
  10. function getColumns(){
  11. $columns=array(
  12. 'pline_id'=>array('type'=>'int'),
  13. 'pline_name'=>array('type'=>'string'),
  14. 'custom_name'=>array('type'=>'string'),
  15. 'disabled'=>array('type'=>'string'),
  16. 'cat_id'=>array('type'=>'int'),
  17. 'brand_id'=>array('type'=>'int'),
  18. 'last_modify'=>array('type'=>'int')
  19. );
  20. return $columns;
  21. }
  22. /**
  23. * ????????
  24. *
  25. * @param array $data
  26. *
  27. * @return ??????
  28. */
  29. function search_product_line($data){
  30. $data['disabled'] = 'false';
  31. $data['orderby'] = 'pline_id';
  32. $where = $this->before_filter($data);
  33. $result = $this->db->selectrow('select count(*) as all_counts from sdb_product_line where '.implode(' and ',$where));
  34. $result['last_modify_st_time'] = $data['last_modify_st_time'];
  35. $result['last_modify_en_time'] = $data['last_modify_en_time'];
  36. $where =$this->_filter($data);
  37. $data_info = $this->db->select('select '.implode(',',$data['columns']).' from sdb_product_line'.$where);
  38. $result['counts'] = count($data_info);
  39. $result['data_info'] = $data_info;
  40. $this->api_response('true',false,$result);
  41. }
  42. /**
  43. * ???????????
  44. *
  45. * @param array $data
  46. *
  47. * @return ?????????
  48. */
  49. function search_product_line_dealer($data){
  50. $data['orderby'] = 'member_id';
  51. $where = $this->before_filter($data);
  52. $result = $this->db->selectrow('select count(*) as all_counts from sdb_pline_to_dealer where '.implode(' and ',$where));
  53. $where =$this->_filter($data);
  54. $pline_to_dealer_list = $this->db->select('select member_id,pline_id,last_modify from sdb_pline_to_dealer'.$where);
  55. if($pline_to_dealer_list){
  56. $arr_certificate_id = array();
  57. foreach($pline_to_dealer_list as $k=>$pline_to_dealer){
  58. if(!isset($arr_certificate_id[$pline_to_dealer['member_id']])){
  59. $member = $this->db->selectrow('select certificate_id from sdb_members where member_id='.$pline_to_dealer['member_id']);
  60. $arr_certificate_id[$pline_to_dealer['member_id']] = $member['certificate_id'];
  61. $dealer_id = $member['certificate_id'];
  62. }else{
  63. $dealer_id = $arr_certificate_id[$pline_to_dealer['member_id']];
  64. }
  65. $pline_to_dealer_list[$k]['dealer_id'] = $dealer_id;
  66. unset($pline_to_dealer_list[$k]['member_id']);
  67. }
  68. }
  69. $data_info = $pline_to_dealer_list;
  70. $result['counts'] = count($data_info);
  71. $result['data_info'] = $data_info;
  72. $this->api_response('true',false,$result);
  73. }
  74. function before_filter($filter){
  75. $where = array(1);
  76. if(isset($filter['last_modify_st_time'])){
  77. $where[]='last_modify >='.intval($filter['last_modify_st_time']);
  78. }
  79. if(isset($filter['last_modify_en_time'])){
  80. $where[]='last_modify <'.intval($filter['last_modify_en_time']);
  81. }
  82. if(isset($filter['disabled'])){
  83. $where[]='disabled="'.$filter['disabled'].'"';
  84. }
  85. return $where;
  86. }
  87. function _filter($filter){
  88. $where = $this->before_filter($filter);
  89. return parent::_filter($where,$filter);
  90. }
  91. function getPlineListByMember($nMId){
  92. return $this->db->select('SELECT member_id,pline_id,last_modify FROM sdb_pline_to_dealer WHERE member_id = '.$nMId);
  93. }
  94. function getInfo($pline_id){
  95. return $this->db->selectRow("SELECT * FROM sdb_product_line WHERE pline_id=".intval($pline_id));
  96. }
  97. /**
  98. * ?????????
  99. *
  100. * @param array $member
  101. * @param array $arr_goods
  102. *
  103. * @return ?????????
  104. */
  105. function checkDealerPurview($member='',$arr_goods){
  106. if(!is_array($arr_goods) || count($arr_goods)<0)return false;
  107. $dealer_purview = $member['dealer_purview'];
  108. $arr_dealer_purview = array(0,1,2,3);
  109. if(!empty($member) && in_array($dealer_purview,$arr_dealer_purview)){
  110. $member_id = $member['member_id'];
  111. $member_lv_id = $member['member_lv_id'];
  112. switch($dealer_purview){
  113. case 0://??1,2,3??????????????
  114. $this->api_response('fail','data fail',$result,'??????????');
  115. break;
  116. case 1://?????
  117. $this->api_response('fail','data fail',$result,'???????');
  118. break;
  119. case 2://????
  120. break;
  121. case 3://?????
  122. $objPline = &$this->system->loadModel('trading/pline');
  123. $objMemberPline = &$this->system->loadModel('member/memberpline');
  124. $objGoods = &$this->system->loadModel('trading/goods');
  125. $objProductCat = &$this->system->loadModel('goods/productCat');
  126. $member_line_list = $objMemberPline->getPlineListByMember($member_id);
  127. if($member_line_list){
  128. $is_dealer_cat = array();
  129. foreach($member_line_list as $pline){
  130. $pline_info = $objPline->getInfo($pline['pline_id']);
  131. //????????????????????ID?????ID???
  132. if($pline_info['cat_id'] != -1 && !in_array($pline_info['cat_id'],$is_dealer_cat)){
  133. $arr_sub_cat_id = $objProductCat->getSubCatId($pline_info['cat_id']);
  134. if(!empty($arr_sub_cat_id)){
  135. $arr_sub_cat_id[] = $pline_info['cat_id'];
  136. $is_dealer_cat = array_merge($is_dealer_cat,$arr_sub_cat_id);
  137. }else{
  138. $is_dealer_cat[] = $pline_info['cat_id'];
  139. }
  140. }
  141. foreach($arr_goods as $k=>$goods){
  142. if(isset($goods['is_dealer']) && $goods['is_dealer']){continue;}//????????,?????
  143. //???????????ID???ID
  144. if(!isset($goods['cat_id']) || (!isset($goods['brand_id']) && !is_null($goods['brand_id'])) ){
  145. $goods = $objGoods->getFieldById($goods['goods_id']);
  146. }
  147. if($pline_info['cat_id'] == -1 && $pline_info['brand_id'] == -1){
  148. //????????????????????,???
  149. $arr_goods[$k]['is_dealer'] = true;
  150. }else if($pline_info['cat_id'] == -1 && $pline_info['brand_id'] == $goods['brand_id']){
  151. //????????????,????????ID????,???(??????ID?NULL,????????)
  152. $arr_goods[$k]['is_dealer'] = true;
  153. }else if($pline_info['brand_id'] == -1 && in_array($goods['cat_id'],$is_dealer_cat)){
  154. //????????????,????????ID????,???(??????ID?NULL,????????)
  155. $arr_goods[$k]['is_dealer'] = true;
  156. }else if(in_array($goods['cat_id'],$is_dealer_cat) && $pline_info['brand_id'] == $goods['brand_id']){
  157. //???????????????ID???,????????ID????,???
  158. $arr_goods[$k]['is_dealer'] = true;
  159. }else{
  160. //????????
  161. $arr_goods[$k]['is_dealer'] = false;
  162. }
  163. }
  164. }
  165. foreach($arr_goods as $k=>$goods){
  166. if(!$arr_goods[$k]['is_dealer']){
  167. $this->api_response('fail','data fail',$result,'???????');
  168. }
  169. }
  170. }else{//???????????,????????,???????
  171. $this->api_response('fail','data fail',$result,'?????????');
  172. }
  173. break;
  174. default:
  175. $this->api_response('fail','data fail',$result,'???????');
  176. }
  177. }else{
  178. $this->api_response('fail','data fail',$result,'??????');
  179. }
  180. }
  181. }