UserWithdrawController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. <?php
  2. namespace App\Http\Controllers\Admins;
  3. require_once (base_path().'/public/phpexcel/PHPExcel.php');
  4. require_once (base_path().'/public/phpexcel/PHPExcel/Writer/Excel2007.php');
  5. use App\Modes\AccountLog;
  6. use App\Modes\MsgTemplate;
  7. use App\Modes\User;
  8. use App\Modes\UserMsg;
  9. use App\Modes\UserWithdraw;
  10. use Illuminate\Http\Request;
  11. use App\Http\Controllers\Controller;
  12. class UserWithdrawController extends Controller
  13. {
  14. /**
  15. * 提现列表
  16. * @author lyh
  17. * @date 2019/4/10
  18. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  19. * @description
  20. * 显示字段:申请人ID、手机号、提现金额(元)、银行卡号、申请时间、审核状态
  21. * 查询条件:申请时间、申请人(手机号、id)
  22. */
  23. public function index(Request $request)
  24. {
  25. $validator = \Validator::make($param = $request->all(), [
  26. 'word' => 'integer',
  27. 'startTime' => 'date',
  28. 'endTime' => 'date',
  29. ]);
  30. if ($validator->fails()) {
  31. return showJsonErr($validator->errors()->first());
  32. }
  33. if (Admin()->is_frontend == 1) {
  34. return showJsonErr('抱歉,您没有权限查看该列表');
  35. }
  36. // \DB::enableQueryLog();
  37. $user = \DB::table('user_withdraw as up')
  38. ->join('user as u', 'u.id', '=', 'up.uid')
  39. ->leftJoin('user_bank as b','up.bank_number','=','b.bank_number')
  40. ->select([
  41. 'up.id',
  42. 'up.uid',
  43. 'u.mobile',
  44. 'up.money',
  45. 'up.bank_name',
  46. 'up.bank_number',
  47. 'up.status',
  48. 'up.created_at',
  49. 'b.username'
  50. ])
  51. ->orderByDesc('up.id');
  52. // 如果是地区管理员,则不显示同等级的用户信息
  53. if (\Auth::user()->is_super == 3) {
  54. $user->whereIn('u.id', getIds());
  55. }
  56. // 时间查询
  57. if (!empty($param['startTime']) && !empty($param['endTime'])) {
  58. $user->whereBetween('up.created_at', [$param['startTime'], $param['endTime']]);
  59. } else if (!empty($param['endTime']) && empty($param['startTime'])) {
  60. $user->where('up.created_at', '<', $param['endTime']);
  61. } else if (empty($param['endTime']) && !empty($param['startTime'])) {
  62. $user->where('up.created_at', '>', $param['endTime']);
  63. }
  64. //状态查询
  65. if(isset($param['status'])&&is_numeric($param['status'])){
  66. $user->where('up.status','=',$param['status']);
  67. }
  68. // 关键词查询
  69. if (!empty($param['word'])) {
  70. $user->where(function ($q)use ($param){
  71. $q->where('up.uid','=',$param['word'])
  72. ->orWhere('u.mobile','like','%'.$param['word'].'%');
  73. });
  74. //$user->where(\DB::raw("concat(up.uid,u.mobile)"), 'like', "%{$param['word']}%");
  75. }
  76. $user->groupBy('up.id');
  77. //echo $user->toSql();exit;
  78. $res = $user->paginate(perPage());
  79. if ($res->isNotEmpty()) {
  80. collect($res->items())->each(function ($item, $key) {
  81. });
  82. }
  83. // dd(\DB::connection()->getQueryLog(), $param);
  84. return showJsonSucc(1001, $res);
  85. }
  86. /**
  87. * 审核提现
  88. * @author lyh
  89. * @date 2019/4/10
  90. * @param Request $request
  91. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  92. * @throws \Exception
  93. * @description
  94. */
  95. public function audit(Request $request)
  96. {
  97. $validator = \Validator::make($param = $request->all(), [
  98. 'ids' => 'required|array',
  99. 'status' => 'required|integer|in:1,2',
  100. //'audit_remark' => 'required_if:status,2'
  101. ]);
  102. if ($validator->fails()) {
  103. return showJsonErr($validator->errors()->first());
  104. }
  105. if($param['status']==2 && empty($param['audit_remark'])){
  106. return showJsonErr('请输入不通过原因');
  107. }
  108. if (Admin()->is_frontend == 1) {
  109. return showJsonErr('抱歉,您没有权限操作');
  110. }
  111. \DB::beginTransaction();
  112. try {
  113. foreach ($param['ids'] as $id) {
  114. $userWithdraw = UserWithdraw::find($id);
  115. if (empty($userWithdraw)) {
  116. return showJsonErr("抱歉,【id:{$id}】不存在");
  117. }
  118. if ($userWithdraw->status != 0) {
  119. \DB::rollBack();
  120. return showJsonErr("抱歉,提现记录【id:{$id}】不是待审核状态");
  121. }
  122. // 修改提现状态
  123. $modifyData = ['status' => $param['status']];
  124. if (!empty($param['audit_remark'])) {
  125. $modifyData['audit_remark'] = $param['audit_remark'];
  126. }
  127. UserWithdraw::whereId($id)->update($modifyData);
  128. $msg_content=MsgTemplate::getTemplateContent(12);
  129. $msgarr=['title'=>'提现审核通知','uid'=>$userWithdraw->uid,'type'=>2,'content'=>$msg_content];
  130. //退款 edit by wsl
  131. if ($param['status'] == 2) {
  132. User::whereId($userWithdraw->uid)->increment('balance', $userWithdraw->money);
  133. $msg_content=MsgTemplate::getTemplateContent(13);
  134. $msgarr=['title'=>'提现审核通知','uid'=>$userWithdraw->uid,'type'=>2,'content'=>$msg_content];
  135. // 提现添加流水记录
  136. $remark = "管理员拒绝提现申请,提现金额¥{$userWithdraw->money}已返回余额";
  137. $result = AccountLog::insert([
  138. 'uid' => $userWithdraw->uid,
  139. 'type' => 1,
  140. 'money_type' => 2,
  141. 'money' => (abs($userWithdraw->money)),
  142. 'current_money' => User::find($userWithdraw->uid)->balance,
  143. 'remark' => $remark
  144. ]);
  145. if (empty($result)) {
  146. \DB::rollBack();
  147. return showJsonErr('添加账号流水失败');
  148. }
  149. }
  150. UserMsg::SendGetui($msgarr);
  151. }
  152. \DB::commit();
  153. return showJsonSucc('审核成功');
  154. } catch (\Exception $e) {
  155. \DB::rollBack();
  156. return showJsonErr($e->getMessage());
  157. }
  158. }
  159. /**
  160. * 获取用户提现记录
  161. * @author lyh
  162. * @date 2019/4/9
  163. * @modify_author lyh
  164. * @modify_time 2019-4-26 12:22:47
  165. * @modify 确认已区分系统管理员与地区管理员权限
  166. * @param Request $request
  167. * @description
  168. */
  169. public function getListByUid(Request $request)
  170. {
  171. $validator = \Validator::make($param = $request->all(), [
  172. 'id' => 'required|exists:user,id'
  173. ]);
  174. if ($validator->fails()) {
  175. return showJsonErr($validator->errors()->first());
  176. }
  177. // 区分系统管理员与地区管理员数据
  178. if (\Auth::user()->is_super == 3 && !in_array(Admin()->id, getIds())) {
  179. return showJsonErr('抱歉,您没有权限查看该用户信息');
  180. }
  181. $uw = UserWithdraw::whereUid($param['id'])->select(['money', 'created_at'])->orderBy('created_at','desc');
  182. $result=$uw->paginate(perPage());
  183. return showJsonSucc(1001, $result);
  184. }
  185. /*
  186. * 导出提现记录 wsl
  187. * 20190725
  188. *
  189. * */
  190. public function outputToExcel(Request $request){
  191. $param=$request->all();
  192. if (Admin()->is_frontend == 1) {
  193. return showJsonErr('抱歉,您没有权限导出该列表');
  194. }
  195. // \DB::enableQueryLog();
  196. $user = \DB::table('user_withdraw as up')
  197. ->join('user as u', 'u.id', '=', 'up.uid')
  198. ->join('user_bank as b','up.bank_number','=','b.bank_number')
  199. ->select([
  200. 'up.id',
  201. 'up.uid',
  202. 'u.mobile',
  203. 'up.money',
  204. 'up.bank_name',
  205. 'up.bank_number',
  206. 'up.status',
  207. 'up.created_at',
  208. 'b.username'
  209. ])
  210. ->orderByDesc('up.id');
  211. // 如果是地区管理员,则不显示同等级的用户信息
  212. if (\Auth::user()->is_super == 3) {
  213. $user->whereIn('u.id', getIds());
  214. }
  215. // 时间查询
  216. if(!empty($param['startTime'])){
  217. $user->where('up.created_at','>',$param['startTime']);
  218. }
  219. if(!empty($param['endTime'])){
  220. $user->where('up.created_at','<',$param['endTime']);
  221. }
  222. //状态查询
  223. if(isset($param['status'])&&is_numeric($param['status'])){
  224. $user->where('up.status','=',$param['status']);
  225. }
  226. // 关键词查询
  227. if (!empty($param['word'])) {
  228. $user->where(function ($q)use ($param){
  229. $q->where('up.uid','=',$param['word'])
  230. ->orWhere('u.mobile','like','%'.$param['word'].'%');
  231. });
  232. //$user->where(\DB::raw("concat(up.uid,u.mobile)"), 'like', "%{$param['word']}%");
  233. }
  234. $user->groupBy('up.id');
  235. $list=$user->get();
  236. //$filename=\Auth::user()->mobile.'提现记录';
  237. $filename=\Auth::user()->mobile.'提现记录';
  238. $phpexcel=new \PHPExcel();
  239. $phpexcel->getProperties()
  240. ->setTitle($filename);
  241. $lines=[
  242. 'A'=>['title'=>'申请人ID','width'=>10],
  243. 'B'=>['title'=>'手机号','width'=>20],
  244. 'C'=>['title'=>'提现金额','width'=>15],
  245. 'D'=>['title'=>'收款人姓名','width'=>20],
  246. 'E'=>['title'=>'收款人账号','width'=>30],
  247. 'F'=>['title'=>'开户银行名称','width'=>30],
  248. 'G'=>['title'=>'申请日期','width'=>20],
  249. 'H'=>['title'=>'审核状态','width'=>10],
  250. ];
  251. $objtitle=$phpexcel->setActiveSheetIndex(0);
  252. foreach($lines as $k=>$v){
  253. $phpexcel->getActiveSheet()->getColumnDimension($k)->setWidth($v['width']);
  254. $objtitle->setCellValue($k.'1',$v['title']);
  255. }
  256. //填入数据
  257. $i=0;
  258. foreach($list as $key=>$item){
  259. $statusstr='';
  260. switch($item->status){
  261. case 0:$statusstr='待审核';break;
  262. case 1:$statusstr='审核通过';break;
  263. case 2:$statusstr='拒绝';break;
  264. }
  265. $itemvalues=[
  266. 'A'=>$item->uid,
  267. 'B'=>$item->mobile,
  268. 'C'=>$item->money,
  269. 'D'=>$item->username,
  270. 'E'=>$item->bank_number."\t",
  271. 'F'=>$item->bank_name,
  272. 'G'=>$item->created_at,
  273. 'H'=>$statusstr
  274. ];
  275. foreach($lines as $kk=>$vv){
  276. $phpexcel->getActiveSheet(0)->setCellValue($kk.($i+2),$itemvalues[$kk]);
  277. }
  278. $i++;
  279. }
  280. $phpexcel->setActiveSheetIndex(0);
  281. header('Content-Type: application/vnd.ms-excel');
  282. header('Content-Disposition: attachment;filename="' . @date('Y-m-d H:i:s') . '提现记录.xls"');
  283. header('Cache-Control: max-age=0');
  284. $objWriter = \PHPExcel_IOFactory::createWriter($phpexcel, 'Excel2007');
  285. $objWriter->save('php://output');
  286. /*
  287. $obj=\PHPExcel_IOFactory::createWriter($phpexcel,'Excel2007');
  288. $savepath=base_path().'/excel/'.$filename.'.xlsx';
  289. $obj->save($savepath);
  290. $r=file_exists($savepath);
  291. if($r){
  292. return showJsonSucc('导出文件成功',['url'=>$savepath]);
  293. }else{
  294. return showJsonErr('导出文件失败');
  295. }*/
  296. }
  297. }