Member.class.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. <?php
  2. namespace Cas\Controller;
  3. use Cas\Dao\LotteryData;
  4. use Cas\Dao\LotteryEvents;
  5. use KIF\Core\Request;
  6. use Cas\Module\Lottery;
  7. use Cas\Dao\UserInfo;
  8. use Cas\Dao\LotteryUserFeedback;
  9. use Cas\Dao\ArticleLikeCounter;
  10. use Cas\Dao\LotteryUserHelp;
  11. use Cas\Module\LotteryLog;
  12. use Cas\Dao\LotteryUserExpress;
  13. /**
  14. *
  15. * 用户资料设置
  16. */
  17. class Member extends EventsController {
  18. public function doDefault() {
  19. $this->tpl = 'member';
  20. }
  21. /**
  22. * 我的首页
  23. */
  24. public function doMy() {
  25. # 获取当前用户的信息
  26. $objUserData = new UserInfo();
  27. $uid = $this->getRunTimeUid();
  28. $userData = $objUserData -> get($uid);
  29. $this->setOutput('userData', $userData);
  30. $thisTime = time();
  31. # 获取登录地址
  32. $url = Request::g('url');
  33. $thisUrl = Request::schemeDomain().'/member/my';
  34. $loginUrl = $this -> getLoginUrl($thisUrl);
  35. $this->setOutput('loginUrl', $loginUrl);
  36. # 判断是否需要登录
  37. $ckLogin = $this->ckLogin();
  38. $this->setOutput('ckLogin', $ckLogin);
  39. # 获取我的助力值
  40. $condition = array (
  41. //'events_id' => $events_id,
  42. 'uid' => $uid,
  43. );
  44. $objLotteryUserHelp = new LotteryUserHelp();
  45. $info = $objLotteryUserHelp->fetchAll ( $condition, 10000, 'id desc' );
  46. $num = 0;
  47. if ($info) {
  48. foreach ($info as $k => $v) {
  49. $num += $v['num'];
  50. }
  51. }
  52. $this->tpl = 'my';
  53. $this->setOutput('thisTime', $thisTime);
  54. $this->setOutput('title', '我的');
  55. $this->setOutput('num', $num);
  56. $this->setOutput('action', 'gift');
  57. $this->setOutput('display', 1);
  58. $this->setOutput('notShowWeixinShare', true);
  59. }
  60. /**
  61. * 资料设置
  62. */
  63. public function doSet() {
  64. # 获取当前用户的信息
  65. $objUserData = new UserInfo();
  66. $uid = $this->getRunTimeUid();
  67. $userData = $objUserData -> get($uid);
  68. $this->setOutput('userData', $userData);
  69. $thisTime = time();
  70. # 获取登录地址
  71. $url = Request::g('url');
  72. $thisUrl = Request::schemeDomain().'/member/set';
  73. $loginUrl = $this -> getLoginUrl($thisUrl);
  74. $this->setOutput('loginUrl', $loginUrl);
  75. # 判断是否需要登录
  76. $ckLogin = $this->ckLogin();
  77. $this->setOutput('ckLogin', $ckLogin);
  78. # 获取用户最新收货地址
  79. $objDLotteryUserExpress = new LotteryUserExpress();
  80. $userExpress = $objDLotteryUserExpress -> getUserExpress($uid);
  81. # 获取我的资料
  82. $this->tpl = 'my_set';
  83. $this->setOutput('thisTime', $thisTime);
  84. $this->setOutput('title', '我的资料');
  85. $this->setOutput('my', $userExpress);
  86. $this->setOutput('action', 'gift');
  87. $this->setOutput('display', 1);
  88. $this->setOutput('notShowWeixinShare', true);
  89. }
  90. /**
  91. * 我参与的活动
  92. */
  93. public function doAct() {
  94. # 获取当前用户的信息
  95. $objUserData = new UserInfo();
  96. $uid = $this->getRunTimeUid();
  97. $userData = $objUserData -> get($uid);
  98. $this->setOutput('userData', $userData);
  99. $thisTime = time();
  100. # 获取登录地址
  101. $url = Request::g('url');
  102. $thisUrl = Request::schemeDomain().'/member/act';
  103. $loginUrl = $this -> getLoginUrl($thisUrl);
  104. $this->setOutput('loginUrl', $loginUrl);
  105. # 判断是否需要登录
  106. $ckLogin = $this->ckLogin();
  107. $this->setOutput('ckLogin', $ckLogin);
  108. $plat_form_id = $this->getPlatFormId();
  109. $objLottery = new Lottery();
  110. # 根据uid,得到参与的活动
  111. $objMLotteryLog = new LotteryLog ();
  112. $condition = array('uid' => $uid);
  113. $totals = $objMLotteryLog -> getUserParticipateLogNum($condition);
  114. $offset = 0;
  115. $size = 10;
  116. $data = $objMLotteryLog->findUserParticipateData($condition, "{$offset},{$size}", 'create_time desc');
  117. $events_ids = array();
  118. foreach($data as $key=> $d) {
  119. $events_ids[$d['events_id']] = $d['events_id'];
  120. }
  121. $objDLotteryEvents = new LotteryEvents();
  122. $eventsData = $objDLotteryEvents -> gets($events_ids);
  123. # 剩余天数
  124. $TIME = time();
  125. $objArticleLikeCounter = new ArticleLikeCounter();
  126. foreach ($eventsData as $tmpKey => $tmpData) {
  127. $rday = ($tmpData['end_time'] - $TIME) / (24 * 60 * 60);
  128. $eventsData[$tmpKey]['rday'] = ceil($rday);
  129. # 参与人数
  130. $objMLotteryLog = new LotteryLog ( null, $tmpData['id'] );
  131. $eventsData[$tmpKey]['user_total'] = $objMLotteryLog->getUserParticipateLogNumGroupByUid ();
  132. if ($tmpData['type'] == 9) {
  133. # 阅读人数
  134. $eventsData[$tmpKey]['click_num'] = $tmpData['click_num'] + ($tmpData['article_pass_base_num']?$tmpData['click_num'] + $tmpData['article_pass_base_num']:0);
  135. # 点赞人数
  136. $eventsData[$tmpKey]['likes'] = $objArticleLikeCounter->getLikes($tmpData['id']);
  137. $eventsData[$tmpKey]['likes'] = $eventsData[$tmpKey]['likes'] + $tmpData['article_praise'];
  138. } else {
  139. if (isset($tmpData['base_num']) && $tmpData['base_num']) {
  140. $eventsData[$tmpKey]['user_total'] += $tmpData['base_num'];
  141. }
  142. }
  143. }
  144. $this->setOutput('eventsData', $eventsData);
  145. $this->setOutput('title', '我参与的活动');
  146. $this->setOutput('totals', ceil($totals / $size));
  147. $this->tpl = 'my_act';
  148. $this->setOutput('action', 'gift');
  149. $this->setOutput('plat_form_id', $plat_form_id);
  150. $this->setOutput('display', 1);
  151. $this->setOutput('notShowWeixinShare', true);
  152. }
  153. /**
  154. * 事件:ajax翻页
  155. */
  156. public function doActAjax() {
  157. $page = Request::varGetInt('page', 1);
  158. $thisTime = time();
  159. $objLottery = new Lottery();
  160. $uid = $this->getRunTimeUid();
  161. $condition = array('uid' => $uid);
  162. $totals = $objLottery -> getLotteryDataListNum($condition);
  163. $size = 10;
  164. $offset = ($page - 1) * $size;
  165. $limit = "{$offset},{$size}";
  166. $data = $objLottery->getLotteryDataList($condition, "{$offset},{$size}", 'create_time desc');
  167. $newData = array();
  168. $events_ids = array();
  169. $events_ids = array();
  170. foreach($data as $key=> $d) {
  171. $events_ids[$d['run_time_data']['events']['id']] = $d['run_time_data']['events']['id'];
  172. }
  173. $objDLotteryEvents = new LotteryEvents();
  174. $eventsData = $objDLotteryEvents -> gets($events_ids);
  175. # 剩余天数
  176. $TIME = time();
  177. $objArticleLikeCounter = new ArticleLikeCounter();
  178. foreach ($eventsData as $tmpKey => $tmpData) {
  179. $rday = ($tmpData['end_time'] - $TIME) / (24 * 60 * 60);
  180. $eventsData[$tmpKey]['rday'] = ceil($rday);
  181. # 参与人数
  182. $objMLotteryLog = new LotteryLog ( null, $tmpData['id'] );
  183. $eventsData[$tmpKey]['user_total'] = $objMLotteryLog->getUserParticipateLogNumGroupByUid ();
  184. if ($tmpData['type'] == 9) {
  185. # 阅读人数
  186. $eventsData[$tmpKey]['click_num'] = $tmpData['click_num'] + ($tmpData['article_pass_base_num']?$tmpData['click_num'] + $tmpData['article_pass_base_num']:0);
  187. # 点赞人数
  188. $eventsData[$tmpKey]['likes'] = $objArticleLikeCounter->getLikes($tmpData['id']);
  189. $eventsData[$tmpKey]['likes'] = $eventsData[$tmpKey]['likes'] + $tmpData['article_praise'];
  190. } else {
  191. if (isset($tmpData['base_num']) && $tmpData['base_num']) {
  192. $eventsData[$tmpKey]['user_total'] += $tmpData['base_num'];
  193. }
  194. }
  195. }
  196. $this->setOutput('eventsData', $eventsData);
  197. $this->tpl = 'ajax_my_act';
  198. $this->ajax_success_exit($this->render(true));
  199. }
  200. /**
  201. * 我的礼品
  202. */
  203. public function doGifts() {
  204. //填写收货地址 c=Express&lottery_data_id=3
  205. $objLottery = new Lottery();
  206. $thisTime = time();
  207. $plat_form_id = $this->getPlatFormId();
  208. # 获取用户信息
  209. $objUserData = new UserInfo();
  210. $uid = $this->getRunTimeUid();
  211. $userData = $objUserData -> get($uid);
  212. $this->setOutput('userData', $userData);
  213. # 获取登录地址
  214. $url = Request::g('url');
  215. $thisUrl = Request::schemeDomain().'/member/gifts';
  216. $loginUrl = $this -> getLoginUrl($thisUrl);
  217. $this->setOutput('loginUrl', $loginUrl);
  218. # 判断是否需要登录
  219. $ckLogin = $this->ckLogin();
  220. $this->setOutput('ckLogin', $ckLogin);
  221. $condition = array('audit' => 2, 'uid' => $uid,'scratch_receive' => LotteryData::EVENT_SCRATCH_RECEIVE_TRUE);
  222. $totals = $objLottery -> getLotteryDataListNum($condition);
  223. $offset = 0;
  224. $size = 6;
  225. $order = 'id desc';
  226. $data = $objLottery->getLotteryDataList($condition, "{$offset},{$size}", 'create_time desc');
  227. $newData = array();
  228. $events_ids = array();
  229. $objLotteryUserFeedback = new LotteryUserFeedback();
  230. foreach($data as $key=> $d){
  231. $data[$key]['feedback'] = 1;//不需要填写反馈
  232. $events_ids[$d['run_time_data']['events']['id']] = $d['run_time_data']['events']['id'];
  233. if (in_array($d['run_time_data']['events']['type'], array(4,0))) {
  234. $data[$key]['feedback'] = 2;//未填写反馈
  235. $where = array();
  236. $where['uid'] = $d['uid'];
  237. $where['events_id'] = $d['run_time_data']['events']['id'];
  238. $where['status'] = 1;
  239. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  240. if ($ids) {
  241. $data[$key]['feedback'] = 3;//已填写反馈
  242. }
  243. /*
  244. if (isset($d['express']) && $d['express']) {
  245. $data[$key]['feedback'] = 2;//未填写反馈
  246. $where = array();
  247. $where['uid'] = $d['uid'];
  248. $where['events_id'] = $d['run_time_data']['events']['id'];
  249. $where['status'] = 1;
  250. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  251. if ($ids) {
  252. $data[$key]['feedback'] = 3;//已填写反馈
  253. }
  254. } else {
  255. $data[$key]['feedback'] = 4;//未填写收货地址
  256. }
  257. */
  258. }
  259. }
  260. $objDLotteryEvents = new LotteryEvents();
  261. $eventsData = $objDLotteryEvents -> gets($events_ids);
  262. $time = time();
  263. foreach($data as $key=> $d){
  264. $eventsInfo = $eventsData[$d['run_time_data']['events']['id']];
  265. if ($v['feedback'] == 3) {
  266. # 查看是否过期
  267. if ($time > $eventsInfo['end_time']) {
  268. $data[$key]['feedback'] = 5;//未填写收货地址并且已经过期
  269. }
  270. }
  271. $newData[$key] = array();
  272. $newData[$key]['feedback'] = $d['feedback'];
  273. $thisEventID = $d['run_time_data']['events']['id'];
  274. $newData[$key]['prize_id'] = $d['prize_id'];
  275. $newData[$key]['prize_name'] = $d['run_time_data']['prize'][$d['prize_id']]['prize_name'];
  276. $newData[$key]['prize_type'] = $d['run_time_data']['prize'][$d['prize_id']]['type'];
  277. $newData[$key]['prize_express'] = $d['run_time_data']['prize'][$d['prize_id']]['express'];
  278. if ($d['run_time_data']['events']['type'] == LotteryEvents::TYPE_EVENTS_CODE) {
  279. //$newData[$key]['prize_img_url'] = $d['run_time_data']['events']['weixinShare']['imgUrl'];
  280. $newData[$key]['prize_img_url'] = $d['run_time_data']['prize'][$d['prize_id']]['img_url'];
  281. } else {
  282. $newData[$key]['prize_img_url'] = $d['run_time_data']['prize'][$d['prize_id']]['img_url'];
  283. }
  284. $newData[$key]['events_id'] = $thisEventID;
  285. $newData[$key]['events_delivery'] = $eventsData[$thisEventID]['delivery'];
  286. $newData[$key]['events_name'] = $eventsData[$thisEventID]['events_name'];
  287. $newData[$key]['events_type'] = $eventsData[$thisEventID]['type'];
  288. $newData[$key]['end_time_receive_prizes'] = $eventsData[$thisEventID]['end_time_receive_prizes'];
  289. $newData[$key]['virtual_data'] = $d['virtual_data'];
  290. $newData[$key]['express'] = $d['express'];
  291. $newData[$key]['lottery_data_id'] = $key;
  292. $newData[$key]['show_up_express_a'] = false;
  293. if($newData[$key]['end_time_receive_prizes'] < time() && empty($newData[$key]['express'])){
  294. $newData[$key]['show_up_express_a'] = true;
  295. }
  296. $newData[$key]['url'] = $objLottery -> getEventsUrl($eventsInfo['type'],$eventsInfo['create_time'],$this->platform['url']);
  297. }
  298. $this->tpl = 'gifts';
  299. $this->setOutput('thisTime', $thisTime);
  300. $this->setOutput('title', '我的奖品');
  301. $this->setOutput('data', $data);
  302. $this->setOutput('newData', $newData);
  303. $this->setOutput('totals', ceil($totals / $size));
  304. $this->setOutput('action', 'gift');
  305. $this->setOutput('display', 1);
  306. $this->setOutput('notShowWeixinShare', true);
  307. }
  308. /**
  309. * 事件:ajax翻页
  310. */
  311. public function doAjax() {
  312. $page = Request::varGetInt('page', 1);
  313. $thisTime = time();
  314. $objLottery = new Lottery();
  315. $uid = $this->getRunTimeUid();
  316. $condition = array('audit' => 2, 'uid' => $uid,'scratch_receive' => LotteryData::EVENT_SCRATCH_RECEIVE_TRUE);
  317. $totals = $objLottery -> getLotteryDataListNum($condition);
  318. $order = 'create_time desc';
  319. $size = 6;
  320. $offset = ($page - 1) * $size;
  321. $limit = "{$offset},{$size}";
  322. $data = $objLottery->getLotteryDataList($condition, "{$offset},{$size}", 'create_time desc');
  323. $newData = array();
  324. $events_ids = array();
  325. $objLotteryUserFeedback = new LotteryUserFeedback();
  326. foreach($data as $key=> $d){
  327. $data[$key]['feedback'] = 1;//不需要填写反馈
  328. $events_ids[$d['run_time_data']['events']['id']] = $d['run_time_data']['events']['id'];
  329. if (in_array($d['run_time_data']['events']['type'], array(4,0))) {
  330. $data[$key]['feedback'] = 2;//未填写反馈
  331. $where = array();
  332. $where['uid'] = $d['uid'];
  333. $where['events_id'] = $d['run_time_data']['events']['id'];
  334. $where['status'] = 1;
  335. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  336. $info = $objLotteryUserFeedback->gets ( $ids );
  337. if ($info) {
  338. $data[$key]['feedback'] = 3;//已填写反馈
  339. }
  340. /*
  341. if (isset($d['express']) && $d['express']) {
  342. $data[$key]['feedback'] = 2;//未填写反馈
  343. $where = array();
  344. $where['uid'] = $d['uid'];
  345. $where['events_id'] = $d['run_time_data']['events']['id'];
  346. $where['status'] = 1;
  347. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  348. $info = $objLotteryUserFeedback->gets ( $ids );
  349. if ($info) {
  350. $data[$key]['feedback'] = 3;//已填写反馈
  351. }
  352. } else {
  353. $data[$key]['feedback'] = 4;//未填写收货地址
  354. }
  355. */
  356. }
  357. }
  358. $objDLotteryEvents = new LotteryEvents();
  359. $eventsData = $objDLotteryEvents -> gets($events_ids);
  360. foreach($data as $key=> $d){
  361. $newData[$key] = array();
  362. $thisEventID = $d['run_time_data']['events']['id'];
  363. $newData[$key]['prize_id'] = $d['prize_id'];
  364. $newData[$key]['prize_name'] = $d['run_time_data']['prize'][$d['prize_id']]['prize_name'];
  365. $newData[$key]['prize_type'] = $d['run_time_data']['prize'][$d['prize_id']]['type'];
  366. $newData[$key]['prize_express'] = $d['run_time_data']['prize'][$d['prize_id']]['express'];
  367. if ($d['run_time_data']['events']['type'] == LotteryEvents::TYPE_EVENTS_CODE) {
  368. $newData[$key]['prize_img_url'] = $d['run_time_data']['events']['weixinShare']['imgUrl'];
  369. } else {
  370. $newData[$key]['prize_img_url'] = $d['run_time_data']['prize'][$d['prize_id']]['img_url'];
  371. }
  372. $newData[$key]['events_id'] = $thisEventID;
  373. $newData[$key]['events_delivery'] = $eventsData[$thisEventID]['delivery'];
  374. $newData[$key]['events_name'] = $eventsData[$thisEventID]['events_name'];
  375. $newData[$key]['events_type'] = $eventsData[$thisEventID]['type'];
  376. $newData[$key]['end_time_receive_prizes'] = $eventsData[$thisEventID]['end_time_receive_prizes'];
  377. $newData[$key]['virtual_data'] = $d['virtual_data'];
  378. $newData[$key]['express'] = $d['express'];
  379. $newData[$key]['lottery_data_id'] = $key;
  380. $newData[$key]['show_up_express_a'] = false;
  381. if($newData[$key]['end_time_receive_prizes'] < time() && empty($newData[$key]['express'])){
  382. $newData[$key]['show_up_express_a'] = true;
  383. }
  384. }
  385. $this->setOutput('data', $data);
  386. $this->setOutput('newData', $newData);
  387. $this->tpl = 'ajax_gifts';
  388. $this->ajax_success_exit($this->render(true));
  389. }
  390. public function display() {
  391. return $this->render();
  392. }
  393. }