Member.class.php 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  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. $condition = array('uid' => $uid);
  112. $totals = $objLottery -> getLotteryDataListNum($condition);
  113. $offset = 0;
  114. $size = 10;
  115. $data = $objLottery->getLotteryDataList($condition, "{$offset},{$size}", 'create_time desc');
  116. $events_ids = array();
  117. foreach($data as $key=> $d) {
  118. $events_ids[$d['run_time_data']['events']['id']] = $d['run_time_data']['events']['id'];
  119. }
  120. $objDLotteryEvents = new LotteryEvents();
  121. $eventsData = $objDLotteryEvents -> gets($events_ids);
  122. # 剩余天数
  123. $TIME = time();
  124. $objArticleLikeCounter = new ArticleLikeCounter();
  125. foreach ($eventsData as $tmpKey => $tmpData) {
  126. $rday = ($tmpData['end_time'] - $TIME) / (24 * 60 * 60);
  127. $eventsData[$tmpKey]['rday'] = ceil($rday);
  128. # 参与人数
  129. $objMLotteryLog = new LotteryLog ( null, $tmpData['id'] );
  130. $eventsData[$tmpKey]['user_total'] = $objMLotteryLog->getUserParticipateLogNumGroupByUid ();
  131. if ($tmpData['type'] == 9) {
  132. # 阅读人数
  133. $eventsData[$tmpKey]['click_num'] = $tmpData['click_num'] + ($tmpData['article_pass_base_num']?$tmpData['click_num'] + $tmpData['article_pass_base_num']:0);
  134. # 点赞人数
  135. $eventsData[$tmpKey]['likes'] = $objArticleLikeCounter->getLikes($tmpData['id']);
  136. $eventsData[$tmpKey]['likes'] = $eventsData[$tmpKey]['likes'] + $tmpData['article_praise'];
  137. } else {
  138. if (isset($tmpData['base_num']) && $tmpData['base_num']) {
  139. $eventsData[$tmpKey]['user_total'] += $tmpData['base_num'];
  140. }
  141. }
  142. }
  143. $this->setOutput('eventsData', $eventsData);
  144. $this->setOutput('title', '我参与的活动');
  145. $this->setOutput('totals', ceil($totals / $size));
  146. $this->tpl = 'my_act';
  147. $this->setOutput('action', 'gift');
  148. $this->setOutput('plat_form_id', $plat_form_id);
  149. $this->setOutput('display', 1);
  150. $this->setOutput('notShowWeixinShare', true);
  151. }
  152. /**
  153. * 事件:ajax翻页
  154. */
  155. public function doActAjax() {
  156. $page = Request::varGetInt('page', 1);
  157. $thisTime = time();
  158. $objLottery = new Lottery();
  159. $uid = $this->getRunTimeUid();
  160. $condition = array('uid' => $uid);
  161. $totals = $objLottery -> getLotteryDataListNum($condition);
  162. $size = 10;
  163. $offset = ($page - 1) * $size;
  164. $limit = "{$offset},{$size}";
  165. $data = $objLottery->getLotteryDataList($condition, "{$offset},{$size}", 'create_time desc');
  166. $newData = array();
  167. $events_ids = array();
  168. $events_ids = array();
  169. foreach($data as $key=> $d) {
  170. $events_ids[$d['run_time_data']['events']['id']] = $d['run_time_data']['events']['id'];
  171. }
  172. $objDLotteryEvents = new LotteryEvents();
  173. $eventsData = $objDLotteryEvents -> gets($events_ids);
  174. # 剩余天数
  175. $TIME = time();
  176. $objArticleLikeCounter = new ArticleLikeCounter();
  177. foreach ($eventsData as $tmpKey => $tmpData) {
  178. $rday = ($tmpData['end_time'] - $TIME) / (24 * 60 * 60);
  179. $eventsData[$tmpKey]['rday'] = ceil($rday);
  180. # 参与人数
  181. $objMLotteryLog = new LotteryLog ( null, $tmpData['id'] );
  182. $eventsData[$tmpKey]['user_total'] = $objMLotteryLog->getUserParticipateLogNumGroupByUid ();
  183. if ($tmpData['type'] == 9) {
  184. # 阅读人数
  185. $eventsData[$tmpKey]['click_num'] = $tmpData['click_num'] + ($tmpData['article_pass_base_num']?$tmpData['click_num'] + $tmpData['article_pass_base_num']:0);
  186. # 点赞人数
  187. $eventsData[$tmpKey]['likes'] = $objArticleLikeCounter->getLikes($tmpData['id']);
  188. $eventsData[$tmpKey]['likes'] = $eventsData[$tmpKey]['likes'] + $tmpData['article_praise'];
  189. } else {
  190. if (isset($tmpData['base_num']) && $tmpData['base_num']) {
  191. $eventsData[$tmpKey]['user_total'] += $tmpData['base_num'];
  192. }
  193. }
  194. }
  195. $this->setOutput('eventsData', $eventsData);
  196. $this->tpl = 'ajax_my_act';
  197. $this->ajax_success_exit($this->render(true));
  198. }
  199. /**
  200. * 我的礼品
  201. */
  202. public function doGifts() {
  203. //填写收货地址 c=Express&lottery_data_id=3
  204. $objLottery = new Lottery();
  205. $thisTime = time();
  206. $plat_form_id = $this->getPlatFormId();
  207. # 获取用户信息
  208. $objUserData = new UserInfo();
  209. $uid = $this->getRunTimeUid();
  210. $userData = $objUserData -> get($uid);
  211. $this->setOutput('userData', $userData);
  212. # 获取登录地址
  213. $url = Request::g('url');
  214. $thisUrl = Request::schemeDomain().'/member/gifts';
  215. $loginUrl = $this -> getLoginUrl($thisUrl);
  216. $this->setOutput('loginUrl', $loginUrl);
  217. # 判断是否需要登录
  218. $ckLogin = $this->ckLogin();
  219. $this->setOutput('ckLogin', $ckLogin);
  220. $condition = array('audit' => 2, 'uid' => $uid,'scratch_receive' => LotteryData::EVENT_SCRATCH_RECEIVE_TRUE);
  221. $totals = $objLottery -> getLotteryDataListNum($condition);
  222. $offset = 0;
  223. $size = 6;
  224. $order = 'id desc';
  225. $data = $objLottery->getLotteryDataList($condition, "{$offset},{$size}", 'create_time desc');
  226. $newData = array();
  227. $events_ids = array();
  228. $objLotteryUserFeedback = new LotteryUserFeedback();
  229. foreach($data as $key=> $d){
  230. $data[$key]['feedback'] = 1;//不需要填写反馈
  231. $events_ids[$d['run_time_data']['events']['id']] = $d['run_time_data']['events']['id'];
  232. if (in_array($d['run_time_data']['events']['type'], array(4,0))) {
  233. $data[$key]['feedback'] = 2;//未填写反馈
  234. $where = array();
  235. $where['uid'] = $d['uid'];
  236. $where['events_id'] = $d['run_time_data']['events']['id'];
  237. $where['status'] = 1;
  238. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  239. if ($ids) {
  240. $data[$key]['feedback'] = 3;//已填写反馈
  241. }
  242. /*
  243. if (isset($d['express']) && $d['express']) {
  244. $data[$key]['feedback'] = 2;//未填写反馈
  245. $where = array();
  246. $where['uid'] = $d['uid'];
  247. $where['events_id'] = $d['run_time_data']['events']['id'];
  248. $where['status'] = 1;
  249. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  250. if ($ids) {
  251. $data[$key]['feedback'] = 3;//已填写反馈
  252. }
  253. } else {
  254. $data[$key]['feedback'] = 4;//未填写收货地址
  255. }
  256. */
  257. }
  258. }
  259. $objDLotteryEvents = new LotteryEvents();
  260. $eventsData = $objDLotteryEvents -> gets($events_ids);
  261. $time = time();
  262. foreach($data as $key=> $d){
  263. $eventsInfo = $eventsData[$d['run_time_data']['events']['id']];
  264. if ($v['feedback'] == 3) {
  265. # 查看是否过期
  266. if ($time > $eventsInfo['end_time']) {
  267. $data[$key]['feedback'] = 5;//未填写收货地址并且已经过期
  268. }
  269. }
  270. $newData[$key] = array();
  271. $newData[$key]['feedback'] = $d['feedback'];
  272. $thisEventID = $d['run_time_data']['events']['id'];
  273. $newData[$key]['prize_id'] = $d['prize_id'];
  274. $newData[$key]['prize_name'] = $d['run_time_data']['prize'][$d['prize_id']]['prize_name'];
  275. $newData[$key]['prize_type'] = $d['run_time_data']['prize'][$d['prize_id']]['type'];
  276. $newData[$key]['prize_express'] = $d['run_time_data']['prize'][$d['prize_id']]['express'];
  277. if ($d['run_time_data']['events']['type'] == LotteryEvents::TYPE_EVENTS_CODE) {
  278. //$newData[$key]['prize_img_url'] = $d['run_time_data']['events']['weixinShare']['imgUrl'];
  279. $newData[$key]['prize_img_url'] = $d['run_time_data']['prize'][$d['prize_id']]['img_url'];
  280. } else {
  281. $newData[$key]['prize_img_url'] = $d['run_time_data']['prize'][$d['prize_id']]['img_url'];
  282. }
  283. $newData[$key]['events_id'] = $thisEventID;
  284. $newData[$key]['events_delivery'] = $eventsData[$thisEventID]['delivery'];
  285. $newData[$key]['events_name'] = $eventsData[$thisEventID]['events_name'];
  286. $newData[$key]['events_type'] = $eventsData[$thisEventID]['type'];
  287. $newData[$key]['end_time_receive_prizes'] = $eventsData[$thisEventID]['end_time_receive_prizes'];
  288. $newData[$key]['virtual_data'] = $d['virtual_data'];
  289. $newData[$key]['express'] = $d['express'];
  290. $newData[$key]['lottery_data_id'] = $key;
  291. $newData[$key]['show_up_express_a'] = false;
  292. if($newData[$key]['end_time_receive_prizes'] < time() && empty($newData[$key]['express'])){
  293. $newData[$key]['show_up_express_a'] = true;
  294. }
  295. $newData[$key]['url'] = $objLottery -> getEventsUrl($eventsInfo['type'],$eventsInfo['create_time'],$this->platform['url']);
  296. }
  297. $this->tpl = 'gifts';
  298. $this->setOutput('thisTime', $thisTime);
  299. $this->setOutput('title', '我的奖品');
  300. $this->setOutput('data', $data);
  301. $this->setOutput('newData', $newData);
  302. $this->setOutput('totals', ceil($totals / $size));
  303. $this->setOutput('action', 'gift');
  304. $this->setOutput('display', 1);
  305. $this->setOutput('notShowWeixinShare', true);
  306. }
  307. /**
  308. * 事件:ajax翻页
  309. */
  310. public function doAjax() {
  311. $page = Request::varGetInt('page', 1);
  312. $thisTime = time();
  313. $objLottery = new Lottery();
  314. $uid = $this->getRunTimeUid();
  315. $condition = array('audit' => 2, 'uid' => $uid,'scratch_receive' => LotteryData::EVENT_SCRATCH_RECEIVE_TRUE);
  316. $totals = $objLottery -> getLotteryDataListNum($condition);
  317. $order = 'create_time desc';
  318. $size = 6;
  319. $offset = ($page - 1) * $size;
  320. $limit = "{$offset},{$size}";
  321. $data = $objLottery->getLotteryDataList($condition, "{$offset},{$size}", 'create_time desc');
  322. $newData = array();
  323. $events_ids = array();
  324. $objLotteryUserFeedback = new LotteryUserFeedback();
  325. foreach($data as $key=> $d){
  326. $data[$key]['feedback'] = 1;//不需要填写反馈
  327. $events_ids[$d['run_time_data']['events']['id']] = $d['run_time_data']['events']['id'];
  328. if (in_array($d['run_time_data']['events']['type'], array(4,0))) {
  329. $data[$key]['feedback'] = 2;//未填写反馈
  330. $where = array();
  331. $where['uid'] = $d['uid'];
  332. $where['events_id'] = $d['run_time_data']['events']['id'];
  333. $where['status'] = 1;
  334. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  335. $info = $objLotteryUserFeedback->gets ( $ids );
  336. if ($info) {
  337. $data[$key]['feedback'] = 3;//已填写反馈
  338. }
  339. /*
  340. if (isset($d['express']) && $d['express']) {
  341. $data[$key]['feedback'] = 2;//未填写反馈
  342. $where = array();
  343. $where['uid'] = $d['uid'];
  344. $where['events_id'] = $d['run_time_data']['events']['id'];
  345. $where['status'] = 1;
  346. $ids = $objLotteryUserFeedback->findIdsBy ( $where, 1, $order = ' id desc');
  347. $info = $objLotteryUserFeedback->gets ( $ids );
  348. if ($info) {
  349. $data[$key]['feedback'] = 3;//已填写反馈
  350. }
  351. } else {
  352. $data[$key]['feedback'] = 4;//未填写收货地址
  353. }
  354. */
  355. }
  356. }
  357. $objDLotteryEvents = new LotteryEvents();
  358. $eventsData = $objDLotteryEvents -> gets($events_ids);
  359. foreach($data as $key=> $d){
  360. $newData[$key] = array();
  361. $thisEventID = $d['run_time_data']['events']['id'];
  362. $newData[$key]['prize_id'] = $d['prize_id'];
  363. $newData[$key]['prize_name'] = $d['run_time_data']['prize'][$d['prize_id']]['prize_name'];
  364. $newData[$key]['prize_type'] = $d['run_time_data']['prize'][$d['prize_id']]['type'];
  365. $newData[$key]['prize_express'] = $d['run_time_data']['prize'][$d['prize_id']]['express'];
  366. if ($d['run_time_data']['events']['type'] == LotteryEvents::TYPE_EVENTS_CODE) {
  367. $newData[$key]['prize_img_url'] = $d['run_time_data']['events']['weixinShare']['imgUrl'];
  368. } else {
  369. $newData[$key]['prize_img_url'] = $d['run_time_data']['prize'][$d['prize_id']]['img_url'];
  370. }
  371. $newData[$key]['events_id'] = $thisEventID;
  372. $newData[$key]['events_delivery'] = $eventsData[$thisEventID]['delivery'];
  373. $newData[$key]['events_name'] = $eventsData[$thisEventID]['events_name'];
  374. $newData[$key]['events_type'] = $eventsData[$thisEventID]['type'];
  375. $newData[$key]['end_time_receive_prizes'] = $eventsData[$thisEventID]['end_time_receive_prizes'];
  376. $newData[$key]['virtual_data'] = $d['virtual_data'];
  377. $newData[$key]['express'] = $d['express'];
  378. $newData[$key]['lottery_data_id'] = $key;
  379. $newData[$key]['show_up_express_a'] = false;
  380. if($newData[$key]['end_time_receive_prizes'] < time() && empty($newData[$key]['express'])){
  381. $newData[$key]['show_up_express_a'] = true;
  382. }
  383. }
  384. $this->setOutput('data', $data);
  385. $this->setOutput('newData', $newData);
  386. $this->tpl = 'ajax_gifts';
  387. $this->ajax_success_exit($this->render(true));
  388. }
  389. public function display() {
  390. return $this->render();
  391. }
  392. }