ItemController.class.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <?php
  2. namespace Api\Controller;
  3. use Think\Controller;
  4. class ItemController extends BaseController {
  5. //项目详情
  6. public function detail(){
  7. $login_user = $this->checkLogin();
  8. $item_id = I("item_id/d");
  9. $uid = $login_user['uid'] ;
  10. if(!$this->checkItemCreator($uid , $item_id)){
  11. $this->sendError(10303);
  12. return ;
  13. }
  14. $items = D("Item")->where("item_id = '$item_id' ")->find();
  15. $items = $items ? $items : array();
  16. $this->sendResult($items);
  17. }
  18. //更新项目信息
  19. public function update(){
  20. $login_user = $this->checkLogin();
  21. $item_id = I("item_id/d");
  22. $item_name = I("item_name");
  23. $item_description = I("item_description");
  24. $item_domain = I("item_domain");
  25. $password = I("password");
  26. $uid = $login_user['uid'] ;
  27. if(!$this->checkItemCreator($uid , $item_id)){
  28. $this->sendError(10303);
  29. return ;
  30. }
  31. if ($item_domain) {
  32. if(!ctype_alnum($item_domain) || is_numeric($item_domain) ){
  33. //echo '个性域名只能是字母或数字的组合';exit;
  34. $this->sendError(10305);
  35. return false;
  36. }
  37. $item = D("Item")->where("item_domain = '%s' and item_id !='%s' ",array($item_domain,$item_id))->find();
  38. if ($item) {
  39. //个性域名已经存在
  40. $this->sendError(10304);
  41. return false;
  42. }
  43. }
  44. $save_data = array(
  45. "item_name" => $item_name ,
  46. "item_description" => $item_description ,
  47. "item_domain" => $item_domain ,
  48. "password" => $password ,
  49. );
  50. $items = D("Item")->where("item_id = '$item_id' ")->save($save_data);
  51. $items = $items ? $items : array();
  52. $this->sendResult($items);
  53. }
  54. //转让项目
  55. public function attorn(){
  56. $login_user = $this->checkLogin();
  57. $username = I("username");
  58. $item_id = I("item_id/d");
  59. $password = I("password");
  60. $item = D("Item")->where("item_id = '$item_id' ")->find();
  61. if(!$this->checkItemCreator($login_user['uid'] , $item['item_id'])){
  62. $this->sendError(10303);
  63. return ;
  64. }
  65. if(! D("User")-> checkLogin($item['username'],$password)){
  66. $this->sendError(10208);
  67. return ;
  68. }
  69. $member = D("User")->where(" username = '%s' ",array($username))->find();
  70. if (!$member) {
  71. $this->sendError(10209);
  72. return ;
  73. }
  74. $data['username'] = $member['username'] ;
  75. $data['uid'] = $member['uid'] ;
  76. $id = D("Item")->where(" item_id = '$item_id' ")->save($data);
  77. $return = D("Item")->where("item_id = '$item_id' ")->find();
  78. if (!$return) {
  79. $this->sendError(10101);
  80. }
  81. $this->sendResult($return);
  82. }
  83. //删除项目
  84. public function delete(){
  85. $login_user = $this->checkLogin();
  86. $item_id = I("item_id/d");
  87. $password = I("password");
  88. $item = D("Item")->where("item_id = '$item_id' ")->find();
  89. if(!$this->checkItemCreator($login_user['uid'] , $item['item_id'])){
  90. $this->sendError(10303);
  91. return ;
  92. }
  93. if(! D("User")-> checkLogin($item['username'],$password)){
  94. $this->sendError(10208);
  95. return ;
  96. }
  97. D("Page")->where("item_id = '$item_id' ")->delete();
  98. D("Catalog")->where("item_id = '$item_id' ")->delete();
  99. D("PageHistory")->where("item_id = '$item_id' ")->delete();
  100. D("ItemMember")->where("item_id = '$item_id' ")->delete();
  101. $return = D("Item")->where("item_id = '$item_id' ")->delete();
  102. if (!$return) {
  103. $this->sendError(10101);
  104. }else{
  105. }
  106. $this->sendResult($return);
  107. }
  108. public function getKey(){
  109. $login_user = $this->checkLogin();
  110. $item_id = I("item_id/d");
  111. $item = D("Item")->where("item_id = '$item_id' ")->find();
  112. if(!$this->checkItemCreator($login_user['uid'] , $item['item_id'])){
  113. $this->sendError(10303);
  114. return ;
  115. }
  116. $item_token = D("ItemToken")->getTokenByItemId($item_id);
  117. if (!$item_token) {
  118. $this->sendError(10101);
  119. }
  120. $this->sendResult($item_token);
  121. }
  122. public function resetKey(){
  123. $login_user = $this->checkLogin();
  124. $item_id = I("item_id/d");
  125. $item = D("Item")->where("item_id = '$item_id' ")->find();
  126. if(!$this->checkItemCreator($login_user['uid'] , $item['item_id'])){
  127. $this->sendError(10303);
  128. return ;
  129. }
  130. $ret = D("ItemToken")->where("item_id = '$item_id' ")->delete();
  131. if ($ret) {
  132. $this->getKey();
  133. }else{
  134. $this->sendError(10101);
  135. }
  136. }
  137. public function updateByApi(){
  138. $api_key = I("api_key");
  139. $api_token = I("api_token");
  140. $cat_name = I("cat_name");
  141. $cat_name_sub = I("cat_name_sub");
  142. $page_title = I("page_title");
  143. $page_content = I("page_content");
  144. $s_number = I("s_number") ? I("s_number") : 99;
  145. $ret = D("ItemToken")->getTokenByKey($api_key);
  146. if ($ret && $ret['api_token'] == $api_token) {
  147. $item_id = $ret['item_id'] ;
  148. D("ItemToken")->setLastTime($item_id);
  149. }else{
  150. $this->sendError(10306);
  151. return false;
  152. }
  153. //如果传送了二级目录
  154. if ($cat_name) {
  155. $cat_name_array = D("Catalog")->where(" item_id = '$item_id' and level = 2 and cat_name = '%s' ",array($cat_name))->find();
  156. //如果不存在则新建
  157. if (!$cat_name_array) {
  158. $add_data = array(
  159. "cat_name" => $cat_name,
  160. "item_id" => $item_id,
  161. "addtime" => time(),
  162. "level" => 2
  163. );
  164. D("Catalog")->add($add_data);
  165. $cat_name_array = D("Catalog")->where(" item_id = '$item_id' and level = 2 and cat_name = '%s' ",array($cat_name))->find();
  166. }
  167. }
  168. //如果传送了三级目录
  169. if ($cat_name_sub) {
  170. $cat_name_sub_array = D("Catalog")->where(" item_id = '$item_id' and level = 3 and cat_name = '%s' ",array($cat_name_sub))->find();
  171. //如果不存在则新建
  172. if (!$cat_name_sub_array) {
  173. $add_data = array(
  174. "cat_name" => $cat_name_sub,
  175. "item_id" => $item_id,
  176. "parent_cat_id" => $cat_name_array['cat_id'],
  177. "addtime" => time(),
  178. "level" => 3
  179. );
  180. D("Catalog")->add($add_data);
  181. $cat_name_sub_array = D("Catalog")->where(" item_id = '$item_id' and level = 3 and cat_name = '%s' ",array($cat_name_sub))->find();
  182. }
  183. }
  184. //目录id
  185. $cat_id = 0 ;
  186. if ($cat_name_array && $cat_name_array['cat_id'] > 0 ) {
  187. $cat_id = $cat_name_array['cat_id'] ;
  188. }
  189. if ($cat_name_sub_array && $cat_name_sub_array['cat_id'] > 0 ) {
  190. $cat_id = $cat_name_sub_array['cat_id'] ;
  191. }
  192. if ($page_content) {
  193. $page_array = D("Page")->where(" item_id = '$item_id' and cat_id = '$cat_id' and page_title ='%s' ",array($page_title))->find();
  194. //如果不存在则新建
  195. if (!$page_array) {
  196. $add_data = array(
  197. "author_username" => "from_api",
  198. "item_id" => $item_id,
  199. "cat_id" => $cat_id,
  200. "page_title" => $page_title,
  201. "page_content" => $page_content,
  202. "s_number" => $s_number,
  203. "addtime" => time(),
  204. );
  205. $page_id = D("Page")->add($add_data);
  206. }else{
  207. $page_id = $page_array['page_id'] ;
  208. $update_data = array(
  209. "author_username" => "from_api",
  210. "item_id" => $item_id,
  211. "cat_id" => $cat_id,
  212. "page_title" => $page_title,
  213. "page_content" => $page_content,
  214. "s_number" => $s_number,
  215. );
  216. D("Page")->where(" page_id = '$page_id' ")->save($update_data);
  217. }
  218. }
  219. if ($page_id) {
  220. $ret = D("Page")->where(" page_id = '$page_id' ")->find();
  221. $this->sendResult($ret);
  222. }else{
  223. $this->sendError(10101);
  224. }
  225. }
  226. }