member_bonus.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 16/4/16
  6. * Time: 下午6:08
  7. */
  8. require_once (BASE_ROOT_PATH . '/helper/bonus_helper.php');
  9. require_once (BASE_ROOT_PATH . '/helper/session_helper.php');
  10. require_once (BASE_ROOT_PATH . '/helper/text_filter.php');
  11. require_once (BASE_ROOT_PATH . '/helper/shaker_helper.php');
  12. require_once (BASE_ROOT_PATH . '/helper/ranklist_helper.php');
  13. class member_bonusControl extends mbMemberControl
  14. {
  15. public function predepositOp()
  16. {
  17. $predeposit = new predeposit_helper($_SESSION['member_id']);
  18. $pred = $predeposit->get_predeposit();
  19. return self::outsuccess(array('predeposit_total' => $pred['total_value'], 'predeposit_freeze' => $pred['freeze_value']));
  20. }
  21. public function makeOp()
  22. {
  23. $param = bonus_helper::check_personal($_GET,$ret);
  24. if($param == false) {
  25. return self::outerr($ret['code'],$ret['msg']);
  26. }
  27. $pre_helper = new predeposit_helper($_SESSION['member_id']);
  28. if(!$pre_helper->is_enough($param['total_amount'])) {
  29. return self::outerr(errcode::ErrBonusNotEnough,'余额不够发送红包');
  30. }
  31. $param['sender_id'] = $_SESSION['member_id'];
  32. $param['sender_mobile'] = $_SESSION['member_mobile'];
  33. $param['sender_name'] = session_helper::nickname();
  34. $ret = bonus_helper::make_bonus($param);
  35. if($ret === false) {
  36. return self::outerr(errcode::ErrBonus,"生成红包失败.");
  37. } else {
  38. $type_sn = $ret['type_sn'];
  39. $money = $ret['money'];
  40. $pre_helper = new predeposit_helper($_SESSION['member_id']);
  41. $pre_helper->handout_bonus($money,$type_sn,session_helper::nickname(),"发送了{$money}元的红包.");
  42. bonus_helper::withold($_SESSION['member_id'],$money);
  43. $url = BASE_SITE_URL . "/mobile/index.php?act=bonusex&op=open&client_type=wap&type_sn={$type_sn}";
  44. return self::outsuccess(array('type_sn' => $ret,'url' => "{$url}"));
  45. }
  46. }
  47. public function makeactivityOp()
  48. {
  49. $param_active = bonus_helper::check_activity($_GET,$ret);
  50. if($param_active == false) {
  51. return self::outerr($ret['code'],$ret['msg']);
  52. }
  53. $param_personal = bonus_helper::check_personal($_GET,$ret);
  54. if($param_personal == false) {
  55. return self::outerr($ret['code'],$ret['msg']);
  56. }
  57. $param = array_merge($param_active,$param_personal);
  58. $pre_helper = new predeposit_helper($_SESSION['member_id']);
  59. if(!$pre_helper->is_enough($param['total_amount'])) {
  60. return self::outerr(errcode::ErrBonusNotEnough,'余额不够发送红包');
  61. }
  62. $param['sender_id'] = $_SESSION['member_id'];
  63. $param['sender_mobile'] = $_SESSION['member_mobile'];
  64. $param['sender_name'] = session_helper::nickname();
  65. $ret = bonus_helper::make_bonus($param);
  66. if($ret === false) {
  67. return self::outerr(errcode::ErrBonus,"生成红包失败.");
  68. } else {
  69. $type_sn = $ret['type_sn'];
  70. $money = $ret['money'];
  71. $pre_helper = new predeposit_helper($_SESSION['member_id']);
  72. $pre_helper->handout_bonus($money,$type_sn,session_helper::nickname(),"发送了{$money}元的红包.");
  73. $url = BASE_SITE_URL . "/mobile/index.php?act=bonusex&op=open&client_type=wap&type_sn={$type_sn}";
  74. return self::outsuccess(array('type_sn' => $ret,'url' => "{$url}"));
  75. }
  76. }
  77. public function share_oneOp()
  78. {
  79. if(!isset($_GET['bonus_sn']) || empty($_GET['bonus_sn'])) {
  80. return self::outerr(errcode::ErrParamter,"需要红包序列号.");
  81. }
  82. $bonus_sn = $_GET['bonus_sn'];
  83. $ret = account_helper::share_bonus($_SESSION['member_id'],$bonus_sn,$msg);
  84. if($ret === false) {
  85. return self::outerr(errcode::ErrBonus,empty($msg) ? "生成红包失败." : $msg);
  86. } else {
  87. $type_sn = $ret['type_sn'];
  88. $url = BASE_SITE_URL . "/mobile/index.php?act=bonusex&op=open&client_type=wap&type_sn={$type_sn}";
  89. return self::outsuccess(array('type_sn' => $ret,'url' => "{$url}"));
  90. }
  91. }
  92. public function topupOp()
  93. {
  94. $bonuses = bonus_helper::topup_bonus($_SESSION['member_mobile']);
  95. if($bonuses === false) {
  96. return self::outsuccess(array("$bonuses" => array()));
  97. }
  98. else
  99. {
  100. $ret = array();
  101. foreach($bonuses as $bonus)
  102. {
  103. $all_type_info = bonus_helper::get_typeinfo($bonus['type_sn']);
  104. if(!empty($all_type_info) && !empty($all_type_info['type_info']))
  105. {
  106. $type_info = bonus_helper::filter_type($all_type_info['type_info']);
  107. $bonus_info = bonus_helper::filter_bonus($bonus);
  108. array_push($ret,array('type_info' => $type_info,'bonus_info' => $bonus_info));
  109. }
  110. }
  111. return self::outsuccess(array("$bonuses" => $ret));
  112. }
  113. }
  114. public function topupexOp()
  115. {
  116. $bonuses = bonus_helper::topup_bonus($_SESSION['member_mobile']);
  117. if($bonuses === false) {
  118. return self::outsuccess(array("count" => 0,'total_amount' => 0.00));
  119. }
  120. else
  121. {
  122. $total_amount = 0.00;
  123. foreach($bonuses as $bonus) {
  124. $total_amount += floatval($bonus['bonus_value']);
  125. }
  126. $count = count($bonuses);
  127. $title = "您新领了{$count}个红包,价值{$total_amount}元.";
  128. return self::outsuccess(array("count" => $count,'total_amount' => $total_amount,'title' => $title));
  129. }
  130. }
  131. //我已经发送的红包
  132. public function send_listOp()
  133. {
  134. $mod_type = Model('bonus_type');
  135. $cond = array();
  136. $cond['sender_id|relayer_id'] = array('_multi'=>true,$_SESSION['member_id'],$_SESSION['member_id']);
  137. $cond['make_type'] = array('in',array(bonus\type::MakeSendType,bonus\type::MakePayType));
  138. $count = $mod_type->getTypeCount($cond);
  139. if($count == 0) {
  140. return self::outsuccess(array('type_infos' => array(), 'mobile_page' => mobile_page(0)));
  141. }
  142. $items = $mod_type->getTypeList($cond,$this->page_size(),'*','type_id desc');
  143. $type_infos = array();
  144. foreach($items as $val) {
  145. $type_info = bonus_helper::filter_type($val);
  146. array_push($type_infos,$type_info);
  147. }
  148. $pages = $this->pages($count);
  149. return self::outsuccess(array('type_infos' => $type_infos, 'mobile_page' => mobile_page($pages)));
  150. }
  151. //我收到的红包
  152. public function recv_listOp()
  153. {
  154. $mod_bonus = Model('user_bonus');
  155. $cond = array('user_id' => $_SESSION['member_id'],'bonus_status' => 3);
  156. $count = $mod_bonus->getBonusCount($cond);
  157. if($count == 0) {
  158. return self::outsuccess(array('bonuses' => array(), 'mobile_page' => mobile_page(0)));
  159. }
  160. $pages = $this->pages($count);
  161. if($this->page_no() > $pages) {
  162. return self::outsuccess(array('bonuses' => NULL,'mobile_page' => mobile_page($pages)));
  163. }
  164. $result = array();
  165. $items = $mod_bonus->getBonusList($cond,'*','bonus_id desc',$this->page_size(),$count);
  166. $type_ids = array();
  167. foreach ($items as $val) {
  168. array_push($type_ids,intval($val['type_id']));
  169. }
  170. $types = array();
  171. $type_items = Model('bonus_type')->getTypeList(array('type_id' => array('in',$type_ids)));
  172. foreach ($type_items as $val) {
  173. $type = bonus\type::crate_by_paramer($val);
  174. $types[$type->getType_id()] = $type;
  175. }
  176. foreach($items as $val) {
  177. $user_bonus = bonus\user_bonus::create_by_param($val);
  178. $item = array();
  179. $item['bonus_sn'] = $user_bonus->bonus_sn();
  180. $item['bonus_value'] = $user_bonus->bonus_value();
  181. $item['remain_amount'] = $user_bonus->remain_amount();
  182. $item['usable_time'] = $user_bonus->usable_time();
  183. $item['expired'] = $user_bonus->expired();
  184. $item['spend_over'] = $user_bonus->spend_over();
  185. $item['get_time'] = $user_bonus->get_time();
  186. $type = $types[$user_bonus->type_id()];
  187. $item['sender_name'] = $type->sender_name();
  188. $item['rand_type'] = $type->isRandomAmount();
  189. $item['show_type'] = self::show_type($type->make_type());
  190. array_push($result,$item);
  191. }
  192. return self::outsuccess(array('bonuses' => $result,'mobile_page' => mobile_page($pages)));
  193. }
  194. private function show_type($make_type)
  195. {
  196. switch ($make_type) {
  197. case bonus\type::MakeSendType: //抢
  198. return 1;
  199. case bonus\type::MakeBonusRefundType: //退
  200. case bonus\type::MakePayRefundType:
  201. case bonus\type::MakeOrderCancelType:
  202. return 2;
  203. case bonus\type::MakeShakeGainType: //摇
  204. case bonus\type::MakeShakeLostType:
  205. return 3;
  206. case bonus\type::MakePayType: //赠
  207. case bonus\type::MakeRegister:
  208. return 4;
  209. default:
  210. return 0; //什么都不显示
  211. }
  212. }
  213. //预存款收支记录
  214. public function pdlogOp()
  215. {
  216. $mod_pd = Model('predeposit');
  217. $count = $mod_pd->getPdLogCount(array('lg_member_id' => $_SESSION['member_id']));
  218. $items = $mod_pd->getPdLogList(array('lg_member_id' => $_SESSION['member_id']),$this->page_size(),'*','lg_id desc');
  219. if(empty($items)) {
  220. return self::outsuccess(array('pd_logs' => array(),'mobile_page' => mobile_page(0)));
  221. }
  222. $predeposit = new predeposit_helper($_SESSION['member_id']);
  223. $pd_logs = $predeposit->filter_pd_log($items);
  224. $pages = $this->pages($count);
  225. return self::outsuccess(array('pd_logs' => $pd_logs,'mobile_page' => mobile_page($pages)));
  226. }
  227. public function shakeOp()
  228. {
  229. if(!isset($_POST['strength']) || empty($_POST['strength'])) {
  230. $strength = intval($_POST['strength']);
  231. } else {
  232. $strength = 3;
  233. }
  234. $shaker = new shaker_helper();
  235. $items = $shaker->shake($strength,$err);
  236. if($items == false) {
  237. return self::outerr($err['code'],$err['msg']);
  238. }
  239. else
  240. {
  241. $total_amount = 0;
  242. $bonuses = array();
  243. foreach ($items as $bonus)
  244. {
  245. $user_bonus = bonus\user_bonus::create_by_param($bonus);
  246. $type_info = bonus_helper::get_typeinfo($user_bonus->type_sn());
  247. $type_info = $type_info['type_info'];
  248. $type = bonus\type::crate_by_paramer($type_info);
  249. $item = array();
  250. if($_SESSION['member_id'] == $user_bonus->user_id()) {
  251. $item['direction'] = 'gain';
  252. $item['name'] = $type->sender_name();
  253. $item['bonus_value'] = $user_bonus->bonus_value();
  254. $total_amount += $user_bonus->bonus_value();
  255. $minfo = new member_info($type->sender_id());
  256. } else {
  257. $item['direction'] = 'lost';
  258. $item['name'] = $user_bonus->user_name();
  259. $item['bonus_value'] = $user_bonus->bonus_value();
  260. $total_amount -= $user_bonus->bonus_value();
  261. $minfo = new member_info($user_bonus->user_id());
  262. }
  263. $item['is_man'] = $minfo->is_man();
  264. $item['avatar'] = $minfo->avatar();
  265. array_push($bonuses,$item);
  266. }
  267. $count = count($bonuses);
  268. return self::outsuccess(array("bonuses" => $bonuses,"info" => array('count' => $count, 'money' => $total_amount)));
  269. }
  270. }
  271. public function daily_rankOp()
  272. {
  273. $count = ranklist_helper::list_count($_SESSION['member_id'],$err);
  274. if($count == false) {
  275. return self::outerr($err['code'],$err['msg']);
  276. }
  277. $start_index = ($this->page_no() - 1) * $this->page_size();
  278. $end = $start_index + $this->page_size();
  279. $end = $end > $count ? $count : $end;
  280. $times = array();
  281. $start_tm = time();
  282. for ($index = $start_index; $index < $end; ++$index) {
  283. $date_time = date_helper::sub_days($start_tm,$index + 1);
  284. array_push($times,$date_time);
  285. }
  286. $mids = array();
  287. array_push($mids,intval($_SESSION['member_id']));
  288. $top_infos = array();
  289. $tops = ranklist_helper::ranklists($_SESSION['member_id'],$times);
  290. foreach ($tops as $key => $top) {
  291. $item = array();
  292. $item['list_sn'] = $top->list_sn();
  293. $item['list_rank'] = $top->get_rank() + 1;
  294. $item['list_value'] = $top->money();
  295. $item['list_date'] = $top->list_date();
  296. $item['top_id'] = $top->top_id();
  297. $item['top_money'] = $top->top_money();
  298. if(in_array($top->top_id(),$mids) == false) {
  299. array_push($mids,$top->top_id());
  300. }
  301. array_push($top_infos,$item);
  302. }
  303. $mem_desc = array();
  304. $members = Model('member')->getMemberList(array('member_id' => array('in',$mids)));
  305. foreach ($members as $val) {
  306. $info = new member_info($val);
  307. array_push($mem_desc,$info->filter());
  308. }
  309. $pages = intval($count / $this->page_size()) + ( ($count % $this->page_size()) == 0 ? 0 : 1);
  310. return self::outsuccess(array('top_list' => $top_infos,'mem_desc' => $mem_desc,'mobile_page' => mobile_page($pages)));
  311. }
  312. }