WalletLogic.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <?php
  2. /**
  3. * WalletLogic.php UTF-8
  4. * 钱包处理逻辑
  5. *
  6. * @date : 2018/1/25 15:08
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : linjiebin <ljb@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace web\pc\logic;
  13. use huo\model\common\CommonModel;
  14. use huolib\constant\OrderConst;
  15. use think\Session;
  16. use think\Validate;
  17. use think\Db;
  18. class WalletLogic extends CommonModel {
  19. private $mem_id;
  20. public function initialize($mem_id = 0) {
  21. parent::initialize();
  22. $this->mem_id = $mem_id;
  23. if (empty($this->mem_id)) {
  24. $this->mem_id = Session::get('user.id');
  25. }
  26. }
  27. // 获取折扣信息
  28. public function getPtbRate() {
  29. $amount = request()->param('amount');
  30. $money_arr = Db::name('ptb_rate')->column('start_money', 'id');
  31. $mem['total'] = $amount;
  32. $rank_arr = array_merge($money_arr, $mem);
  33. sort($rank_arr);
  34. $arr = array_values($rank_arr);
  35. $grades = array_search($amount, $arr);
  36. if (0 == $grades) {
  37. $data['discount'] = 1;
  38. } else {
  39. $data['discount'] = Db::name('ptb_rate')->where('id', $grades)->value('rate');
  40. }
  41. return $data;
  42. }
  43. public function getMemPtb() {
  44. $_mem_id = $this->mem_id;
  45. if (empty($_mem_id)) {
  46. $_remain = 0;
  47. } else {
  48. $_remain = Db::name('mem_ext')
  49. ->where(array('mem_id' => $_mem_id))
  50. ->value('ptb_cnt');
  51. if (empty($_remain)) {
  52. $_remain = 0;
  53. }
  54. }
  55. return $_remain;
  56. }
  57. public function getMemGmlist($app_id = 0, $page) {
  58. $mem_id = $this->mem_id;
  59. if (empty($mem_id)) {
  60. return [];
  61. }
  62. if (!empty($app_id)) {
  63. $_gm_map['app_id'] = $app_id;
  64. $_map['app_id'] = $app_id;
  65. }
  66. $_gm_map['remain'] = ['>', 0];
  67. $_gm_map['mem_id'] = $mem_id;
  68. $_list = Db::name('gm_mem')->where($_gm_map)->column('remain gmcnt', 'app_id');
  69. if (empty($_list)) {
  70. return [];
  71. }
  72. $_ids = [];
  73. foreach ($_list as $_k => $v) {
  74. $_ids[] = $_k;
  75. }
  76. $_map['id'] = ['in', $_ids];
  77. $_game_list = Db::name('game')->where($_map)->page($page)->select()->toArray();
  78. $_rdata = $_game_list;
  79. if (empty($_rdata)) {
  80. return null;
  81. }
  82. foreach ($_rdata as $_k => $_v) {
  83. $_rdata[$_k]['gmcnt'] = $_list[$_v['id']];
  84. }
  85. if (empty($_rdata)) {
  86. return [];
  87. }
  88. return $_rdata;
  89. }
  90. /**
  91. * 游戏币充值记录
  92. *
  93. * @param $page
  94. *
  95. * @return array
  96. */
  97. public function getGmRechargeList($page = '1,10') {
  98. $mem_id = $this->mem_id;
  99. if (empty($mem_id)) {
  100. return ['count' => 0, 'list' => []];
  101. }
  102. $_map['gmc.mem_id'] = $mem_id;
  103. // $_map['gmc.flag'] = 4;
  104. $_map['gmc.status'] = 2;
  105. $_count = Db::name('gm_charge')->alias('gmc')->where($_map)->count();
  106. $_join = [
  107. [
  108. '__PAYWAY__ pw',
  109. 'gmc.payway = pw.payname',
  110. 'LEFT'
  111. ],
  112. [
  113. '__GAME__ g',
  114. 'gmc.app_id = g.id',
  115. 'LEFT'
  116. ]
  117. ];
  118. if ($_count > 0) {
  119. $_field = [
  120. 'pw.payname' => 'paytype',
  121. "IFNULL(gmc.amount,0)" => 'amount',
  122. "IFNULL(gmc.gm_cnt,0)" => 'gm_num',
  123. "CASE gmc.status WHEN 1 THEN '待处理'
  124. WHEN 2 THEN '成功' WHEN 3 THEN '失败' END" => 'status',
  125. "gmc.order_id" => 'orderid',
  126. 'FROM_UNIXTIME(gmc.create_time)' => 'pay_time',
  127. "g.name" => "gamename",
  128. "g.id" => "gameid"
  129. ];
  130. $_order = " gmc.create_time DESC ";
  131. $_list = Db::name('gm_charge')
  132. ->alias('gmc')
  133. ->field($_field)
  134. ->join($_join)
  135. ->where($_map)
  136. // ->order($_order)
  137. ->page($page)
  138. ->select();
  139. if (empty($_list)) {
  140. $_rdata['list'] = [];
  141. } else {
  142. $_rdata['list'] = $_list;
  143. }
  144. $_rdata['count'] = $_count;
  145. } else {
  146. $_rdata = ['count' => 0, 'list' => []];
  147. }
  148. return $_rdata;
  149. }
  150. /**
  151. * 平台币充值记录
  152. *
  153. * @param string $page
  154. *
  155. * @return null
  156. */
  157. public function getPtbRechargeList($page = '1,10') {
  158. $mem_id = $this->mem_id;
  159. if (empty($mem_id)) {
  160. return null;
  161. }
  162. $_map['p.mem_id'] = $mem_id;
  163. $_map['p.status'] = 2;
  164. $_count = Db::name('ptb_charge')->alias('p')->where($_map)->count();
  165. $_join = [
  166. [
  167. '__PAYWAY__ pw',
  168. 'p.payway = pw.payname',
  169. 'LEFT'
  170. ]
  171. ];
  172. if ($_count > 0) {
  173. $_field = [
  174. 'pw.payname' => 'paytype',
  175. "IFNULL(p.amount,0)" => 'amount',
  176. "CASE p.status WHEN 1 THEN '待处理'
  177. WHEN 2 THEN '成功' WHEN 3 THEN '失败' END" => 'status',
  178. "p.order_id" => 'orderid',
  179. 'FROM_UNIXTIME(p.create_time)' => 'pay_time',
  180. 'p.ptb_cnt' => 'ptbcnt'
  181. ];
  182. $_order = " p.create_time DESC ";
  183. $_list = Db::name('ptb_charge')
  184. ->alias('p')
  185. ->field($_field)
  186. ->join($_join)
  187. ->where($_map)
  188. // ->order($_order)
  189. ->page($page)
  190. ->select();
  191. if (empty($_list)) {
  192. $_rdata['list'] = null;
  193. } else {
  194. $_rdata['list'] = $_list;
  195. }
  196. $_rdata['count'] = $_count;
  197. } else {
  198. $_rdata = null;
  199. }
  200. if (empty($_rdata)) {
  201. return null;
  202. }
  203. return $_rdata;
  204. }
  205. /**
  206. * 消费记录
  207. * @param string $page
  208. *
  209. * @return null
  210. */
  211. public function getConsumelist($page = '1,10') {
  212. $mem_id = $this->mem_id;
  213. if (empty($mem_id)) {
  214. return null;
  215. }
  216. $_map['p.mem_id'] = $mem_id;
  217. $_map['p.status'] = OrderConst::PAY_STATUS_SUC;
  218. $_map['p.payway'] = ['NEQ', '0'];
  219. $_count = Db::name('pay')->alias('p')->where($_map)->count();
  220. $_join = [
  221. [
  222. '__GAME__ g', 'g.id = p.app_id', 'LEFT'
  223. ],
  224. [
  225. '__PAYWAY__ pw',
  226. 'p.payway =pw.payname',
  227. 'LEFT'
  228. ]
  229. ];
  230. if ($_count > 0) {
  231. $_field = [
  232. 'p.app_id' => 'gameid',
  233. 'g.name' => 'gamename',
  234. 'pw.payname' => 'paytype',
  235. "IFNULL(p.amount,0)" => 'amount',
  236. "CASE p.status WHEN 1 THEN '待处理'
  237. WHEN 2 THEN '成功' WHEN 3 THEN '失败' END" => 'status',
  238. "p.order_id" => 'orderid',
  239. 'FROM_UNIXTIME(p.create_time)' => 'pay_time'
  240. ];
  241. $_order = " p.create_time DESC ";
  242. $_list = Db::name('pay')
  243. ->alias('p')
  244. ->field($_field)
  245. ->join($_join)
  246. ->where($_map)
  247. // ->order($_order)
  248. ->page($page)
  249. ->select();
  250. if (empty($_list)) {
  251. $_rdata['list'] = null;
  252. } else {
  253. $_rdata['list'] = $_list;
  254. }
  255. $_rdata['count'] = $_count;
  256. } else {
  257. $_rdata = null;
  258. }
  259. if (empty($_rdata)) {
  260. return null;
  261. }
  262. return $_rdata;
  263. }
  264. }