member_ugc.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/7/5
  6. * Time: 下午4:02
  7. */
  8. require_once(BASE_ROOT_PATH . '/mobile/control/special.php');
  9. require_once(BASE_ROOT_PATH . '/helper/ugc_helper.php');
  10. require_once(BASE_ROOT_PATH . '/helper/search/tcp_client.php');
  11. class member_ugcControl extends specialControl
  12. {
  13. const greater = 0;
  14. const lesser = 1;
  15. public function __construct()
  16. {
  17. parent::__construct();
  18. }
  19. public function pub_listOp()
  20. {
  21. return $this->fetch('pub_list');
  22. }
  23. public function pri_listOp()
  24. {
  25. $this->need_login();
  26. return $this->fetch('pub_list');
  27. }
  28. public function mine_listOp()
  29. {
  30. $this->need_login();
  31. return $this->fetch('mine_list');
  32. }
  33. private function fetch($type)
  34. {
  35. $special_id = intval($_GET['special_id']);
  36. $count = $this->page_size();
  37. if(empty($special_id) || $special_id == -1) {
  38. $special_id = -1;
  39. $direct = self::lesser;
  40. }
  41. else {
  42. $direct = $this->direct();
  43. }
  44. if($type == "pub_list") {
  45. $result = search\relation_client::instance()->fetch_pub_special(['special_id' => $special_id,'count'=> $count,'type' => $direct]);
  46. }
  47. elseif($type == 'pri_list') {
  48. $result = search\relation_client::instance()->fetch_pri_special(['user_id' => intval($_SESSION['member_id']),
  49. 'special_id' => $special_id,'count'=> $count,'type' => $direct]);
  50. }
  51. elseif($type == "mine_list") {
  52. $result = search\relation_client::instance()->fetch_self_special(['user_id' => intval($_SESSION['member_id']),
  53. 'special_id' => $special_id,'count'=> $count,'type' => $direct]);
  54. }
  55. else {
  56. return self::outerr(errcode::ErrParamter);
  57. }
  58. $specials = $this->specials($result);
  59. if($specials == false) {
  60. return self::outsuccess(array('special_list' => null,'mobile_page' => mobile_page(0)));
  61. }
  62. else
  63. {
  64. $special_list = $this->special_list($specials,$ugcs);
  65. return self::outsuccess(array('special_list' => $special_list,
  66. 'ugcs' => $ugcs,
  67. 'summary' => null,
  68. 'groupbuy' => null,
  69. 'limitime' => null,
  70. 'bundling' => null,
  71. 'mobile_page' => mobile_page(1)));
  72. }
  73. }
  74. private function direct()
  75. {
  76. $cur_page = $this->page_no();
  77. if($cur_page == 1) {
  78. return self::greater;
  79. } else {
  80. return self::lesser;
  81. }
  82. }
  83. private function specials($result)
  84. {
  85. if(empty($result)) return false;
  86. $code = intval($result['code']);
  87. if($code != 200) {
  88. return false;
  89. }
  90. else {
  91. $specials = $result['data']['specials'];
  92. return empty($specials) ? false : $specials;
  93. }
  94. }
  95. private function special_list($spids, &$ugcs)
  96. {
  97. $result = [];
  98. $mod_special = Model('mb_special');
  99. $items = $mod_special->getMbSpecialList(['special_id' => ['in',$spids]]);
  100. $users = [];
  101. $specials = [];
  102. foreach ($items as $item)
  103. {
  104. $special = new ugc\special($item);
  105. $specials[] = $special;
  106. $sender = $special->memberid();
  107. $users[] = $sender;
  108. }
  109. sort($users);
  110. array_unique($users);
  111. $minfos = [];
  112. if(!empty($users))
  113. {
  114. $mod_member = Model('member');
  115. $members = $mod_member->getMemberList(['member_id' => ['in',$users]]);
  116. foreach ($members as $member) {
  117. $info = new member_info($member);
  118. $mid = $info->member_id();
  119. $minfos[$mid] = $info;
  120. }
  121. }
  122. $ugcs = [];
  123. foreach ($specials as $special)
  124. {
  125. $block = special_formater::format_ugc($special);
  126. $result[] = $block;
  127. $divider = special_formater::def_divider();
  128. $result[] = $divider;
  129. $mid = $special->memberid();
  130. $minfo = $minfos[$mid];
  131. $ugc = $this->formate_ugc($minfo,$special);
  132. $ugcs[] = $ugc;
  133. }
  134. return $result;
  135. }
  136. private function formate_ugc(member_info $minfo,ugc\special $special)
  137. {
  138. $ret['special_id'] = $special->special_id();
  139. $ret['member_avatar'] = $minfo->avatar();
  140. $ret['member_nickname'] = $minfo->nickname();
  141. $ret['has_vote'] = $special->has_vote();
  142. $ret['appreciate_num'] = 100;
  143. $ret['comment_num'] = $special->comments();
  144. $ret['clicks'] = $special->clicks();
  145. $ret['pubtime'] = $special->editime();
  146. $ret['desc'] = $special->description();
  147. return $ret;
  148. }
  149. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  150. public function addOp()
  151. {
  152. $this->need_login();
  153. $contet = $_POST['content'];
  154. if(empty($contet)) {
  155. return self::outerr(errcode::ErrParamter,"上传的内容不能为空");
  156. }
  157. $sp_data = json_decode($contet,true);
  158. if(empty($sp_data)) {
  159. return self::outerr(errcode::ErrParamter,"上传的内容不能为空");
  160. }
  161. $spobj = ugc_helper::crate_special($sp_data,$err);
  162. if($spobj == false) {
  163. return self::outerr($err['code'],$err['msg']);
  164. }
  165. if($spobj->count() > 0)
  166. {
  167. $special_id = $spobj->save($_SESSION['member_id'],$sp_data);
  168. } else {
  169. $special_id = false;
  170. }
  171. if($special_id == false) {
  172. return self::outerr(errcode::ErrUGC,"抱歉,内容云同步失败 :(");
  173. }
  174. else {
  175. return self::outsuccess(['special_id' => $special_id]);
  176. }
  177. }
  178. public function previewOp()
  179. {
  180. $this->need_login();
  181. return parent::indexOp();
  182. }
  183. public function editOp()
  184. {
  185. }
  186. public function publishOp()
  187. {
  188. $this->need_login();
  189. $special_id = intval($_GET['special_id']);
  190. $setting = $_GET['setting'];
  191. if($special_id < 0 || empty($setting)) {
  192. return self::outerr(errcode::ErrParamter);
  193. }
  194. $setting = json_decode($setting,true);
  195. if(ugc_helper::pub_special($special_id,$setting,$err) == false) {
  196. return self::outerr($err['code'],$err['msg']);
  197. }
  198. else {
  199. return self::outsuccess(['special_id' => $special_id]);
  200. }
  201. }
  202. public function mineOp()
  203. {
  204. $this->need_login();
  205. $user_id = $_SESSION['member_id'];
  206. }
  207. public function delOp()
  208. {
  209. }
  210. }