VipchargeController.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. <?php
  2. /**
  3. * vip充值记录
  4. */
  5. namespace app\admin\controller;
  6. use cmf\controller\AdminBaseController;
  7. use think\facade\Db;
  8. class VipchargeController extends AdminbaseController {
  9. protected function getStatus($k=''){
  10. $status=array(
  11. '0'=>'未支付',
  12. '1'=>'已完成',
  13. );
  14. if($k===''){
  15. return $status;
  16. }
  17. return isset($status[$k]) ? $status[$k]: '';
  18. }
  19. protected function getTypes($k=''){
  20. $type=array(
  21. '1'=>'支付宝',
  22. '2'=>'微信',
  23. '3'=>'苹果支付',
  24. '4'=>'余额',
  25. '5'=>'微信小程序',
  26. '6'=>'paypal',
  27. '7'=>'braintree_paypal',
  28. );
  29. if($k===''){
  30. return $type;
  31. }
  32. return isset($type[$k]) ? $type[$k]: '';
  33. }
  34. protected function getAmbient($k=''){
  35. $ambient=array(
  36. "1"=>array(
  37. '0'=>'App',
  38. '1'=>'PC',
  39. ),
  40. "2"=>array(
  41. '0'=>'App',
  42. '1'=>'公众号',
  43. '2'=>'PC',
  44. ),
  45. "3"=>array(
  46. '0'=>'沙盒',
  47. '1'=>'生产',
  48. ),
  49. "4"=>array(
  50. '0'=>'App',
  51. '1'=>'PC',
  52. ),
  53. "5"=>array(
  54. '0'=>'沙盒',
  55. '1'=>'生产',
  56. ),
  57. "6"=>array(
  58. '0'=>'沙盒',
  59. '1'=>'生产',
  60. ),
  61. "7"=>array(
  62. '0'=>'沙盒',
  63. '1'=>'生产',
  64. ),
  65. );
  66. if($k===''){
  67. return $ambient;
  68. }
  69. return isset($ambient[$k]) ? $ambient[$k]: '';
  70. }
  71. function index(){
  72. $data = $this->request->param();
  73. $map=[];
  74. $start_time=isset($data['start_time']) ? $data['start_time']: '';
  75. $end_time=isset($data['end_time']) ? $data['end_time']: '';
  76. if($start_time!=""){
  77. $map[]=['addtime','>=',strtotime($start_time)];
  78. }
  79. if($end_time!=""){
  80. $map[]=['addtime','<=',strtotime($end_time) + 60*60*24];
  81. }
  82. $status=isset($data['status']) ? $data['status']: '';
  83. if($status!=''){
  84. $map[]=['status','=',$status];
  85. }
  86. $uid=isset($data['uid']) ? $data['uid']: '';
  87. if($uid!=''){
  88. $map[]=['uid','=',$uid];
  89. }
  90. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  91. if($keyword!=''){
  92. $map[]=['orderno|trade_no','like','%'.$keyword.'%'];
  93. }
  94. $lists = Db::name("user_vip_charge")
  95. ->where($map)
  96. ->order("id desc")
  97. ->paginate(20);
  98. $lists->each(function($v,$k){
  99. $v['userinfo']=getUserInfo($v['uid']);
  100. return $v;
  101. });
  102. $lists->appends($data);
  103. $page = $lists->render();
  104. $this->assign('lists', $lists);
  105. $this->assign("page", $page);
  106. $this->assign('status', $this->getStatus());
  107. $this->assign('type', $this->getTypes());
  108. $this->assign('ambient', $this->getAmbient());
  109. $moneysum = Db::name("user_vip_charge")
  110. ->where($map)
  111. ->sum('money');
  112. if(!$moneysum){
  113. $moneysum=0;
  114. }
  115. $this->assign('moneysum', $moneysum);
  116. $configpub=getConfigPub();
  117. $this->assign('name_coin', $configpub['name_coin']);
  118. return $this->fetch();
  119. }
  120. function setPay(){
  121. $id = $this->request->param('id', 0, 'intval');
  122. if($id){
  123. $result=Db::name("user_vip_charge")->where(["id"=>$id,"status"=>0])->find();
  124. if($result){
  125. $now=time();
  126. /* 更新会员vip到期时间 */
  127. $vipinfo=getUserVipInfo($result['touid']);
  128. $days=$result['days']*24*60*60;
  129. if($vipinfo['isvip']==0){ //用户不是vip
  130. $endtime=$now+$days;
  131. }else{
  132. $endtime=Db::name("user")->where("id='{$result['touid']}'")->value("vip_endtime");
  133. $endtime=$endtime+$days;
  134. }
  135. Db::name("user")->where("id='{$result['touid']}'")->update(array("vip_endtime"=>$endtime));
  136. /* 更新 订单状态 */
  137. Db::name("user_vip_charge")->where("id='{$result['id']}'")->update(array("status"=>1));
  138. $this->success('操作成功');
  139. }else{
  140. $this->error('数据传入失败!');
  141. }
  142. }else{
  143. $this->error('数据传入失败!');
  144. }
  145. }
  146. function del(){
  147. $id = $this->request->param('id', 0, 'intval');
  148. $rs = Db::name('user_vip_charge')->where("id={$id}")->delete();
  149. if(!$rs){
  150. $this->error("删除失败!");
  151. }
  152. $this->success("删除成功!");
  153. }
  154. function export(){
  155. $data = $this->request->param();
  156. $map=[];
  157. $start_time=isset($data['start_time']) ? $data['start_time']: '';
  158. $end_time=isset($data['end_time']) ? $data['end_time']: '';
  159. if($start_time!=""){
  160. $map[]=['addtime','>=',strtotime($start_time)];
  161. }
  162. if($end_time!=""){
  163. $map[]=['addtime','<=',strtotime($end_time) + 60*60*24];
  164. }
  165. $status=isset($data['status']) ? $data['status']: '';
  166. if($status!=''){
  167. $map[]=['status','=',$status];
  168. }
  169. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  170. if($keyword!=''){
  171. $map[]=['uid|orderno|trade_no','like','%'.$keyword.'%'];
  172. }
  173. $xlsName = "VIP充值记录";
  174. $xlsData=Db::name("user_vip_charge")
  175. ->field('id,uid,money,days,orderno,type,trade_no,status,addtime,coin,ambient')
  176. ->where($map)
  177. ->order('addtime desc')
  178. ->select()
  179. ->toArray();
  180. foreach ($xlsData as $k => $v){
  181. $userinfo=getUserInfo($v['uid']);
  182. $xlsData[$k]['user_nickname']= $userinfo['user_nickname']."(".$v['uid'].")";
  183. $xlsData[$k]['addtime']=date("Y-m-d H:i:s",$v['addtime']);
  184. $xlsData[$k]['type']=$this->getTypes($v['type']);
  185. $xlsData[$k]['status']=$this->getStatus($v['status']);
  186. $ambient=$this->getAmbient($v['type']);
  187. $xlsData[$k]['ambient']=$ambient[$v['ambient']];
  188. }
  189. $cellName = array('A','B','C','D','E','F','G','H','I','J','K');
  190. $xlsCell = array(
  191. array('id','序号'),
  192. array('user_nickname','会员'),
  193. array('money','人民币金额'),
  194. array('coin','消费钻石数'),
  195. array('days','充值vip天数'),
  196. array('orderno','商户订单号'),
  197. array('type','支付类型'),
  198. array('ambient','支付环境'),
  199. array('trade_no','第三方支付订单号'),
  200. array('status','订单状态'),
  201. array('addtime','提交时间')
  202. );
  203. exportExcel($xlsName,$xlsCell,$xlsData,$cellName);
  204. }
  205. }