No Description

CustomerDepositController.php 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. <?php
  2. /**
  3. * Created by Sublime.
  4. * User: Williamslife Wang
  5. * Date: 17/10/18
  6. * Time: 上午11:20
  7. */
  8. namespace App\Http\Controllers\Admin;
  9. use App\Http\Controllers\Controller;
  10. use App\Admin;
  11. use Illuminate\Http\Request;
  12. use App\CustomerInfo;
  13. use App\CustomerDeposit;
  14. use App\CustomerConsum;
  15. use App\CustomerDepositPackages;
  16. use Illuminate\Support\Facades\DB;
  17. class CustomerDepositController extends Controller
  18. {
  19. /**
  20. * @return \Illuminate\View\View
  21. */
  22. public function customerList(Request $request)
  23. {
  24. $admin_id = (int)$request->input('admin_id');
  25. $self_role = session('role_name');
  26. $self_id = session('admin_id');
  27. $saler_ids = null;
  28. if($self_role == '管理员'){
  29. $team_id = DB::table('admin')->where('id', $self_id)->pluck('team_id');
  30. $saler_ids = DB::table('admin')->where('team_id', $team_id)->lists('id');
  31. }
  32. $phone = trim( $request->input('phone') );
  33. $name = trim( $request->input('name') );
  34. $page = (int)$request->input('page');
  35. $pageSize = 20;
  36. if($page<=0){
  37. $page = 1;
  38. }
  39. $offset = ($page-1) * $pageSize;
  40. $count = CustomerInfo::where(function($query) use($phone, $name, $admin_id, $saler_ids){
  41. if($phone) $query->where('phone', $phone);
  42. if($name) $query->where('name', 'like', '%'. $name. '%');
  43. if($admin_id) $query->where('admin_id', $admin_id);
  44. if( !empty($saler_ids) ) $query->whereIn('admin_id', $saler_ids);
  45. })->count();
  46. if ($count > 1) {
  47. // 总页数
  48. $pages = ceil($count/$pageSize);
  49. }else{
  50. // 总页数
  51. $pages = 1;
  52. }
  53. $result = CustomerInfo::where(function($query) use($phone, $name, $admin_id, $saler_ids){
  54. if($phone) $query->where('phone', $phone);
  55. if($name) $query->where('name', 'like', '%'. $name. '%');
  56. if($admin_id) $query->where('admin_id', $admin_id);
  57. if( !empty($saler_ids) ) $query->whereIn('admin_id', $saler_ids);
  58. })->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  59. $result = json_decode(json_encode($result),true);
  60. foreach($result as $k=>&$v){
  61. $v['phonei'] = substr($v['phone'],0,3).'****'.substr($v['phone'],7);
  62. }
  63. return view('deposit/customerList', ['result' =>$result,
  64. 'page' =>$page,
  65. 'count' =>$count,
  66. 'pages' =>$pages,
  67. 'phone' =>$phone,
  68. 'name' =>$name,
  69. ]);
  70. }
  71. /**
  72. * @return \Illuminate\View\View
  73. */
  74. public function index(Request $request)
  75. {
  76. $phone = $request->input('phone');
  77. $page = (int)$request->input('page');
  78. $pageSize = 20;
  79. if($page<=0){
  80. $page = 1;
  81. }
  82. $offset = ($page-1) * $pageSize;
  83. $count = CustomerDeposit::where(function($query) use($phone){
  84. if($phone) $query->where('phone', $phone);
  85. })->where('is_del',0)->count();
  86. if ($count > 1) {
  87. // 总页数
  88. $pages = ceil($count/$pageSize);
  89. }else{
  90. // 总页数
  91. $pages = 1;
  92. }
  93. $result = CustomerDeposit::where(function($query) use($phone){
  94. if($phone) $query->where('phone', $phone);
  95. })->where('is_del',0)->orderBy('pay_time', 'desc')->offset($offset)->limit($pageSize)->get();
  96. $result = json_decode(json_encode($result),true);
  97. foreach($result as $k=>&$v){
  98. $v['phone'] = substr($v['phone'],0,3).'****'.substr($v['phone'],7);
  99. if($v['payment_type'] == 1){
  100. $v['payment_type'] = '微信支付';
  101. }elseif($v['payment_type'] == 3){
  102. $v['payment_type'] = '个体户支付';
  103. }else{
  104. $v['payment_type'] = '';
  105. }
  106. }
  107. return view('deposit/index', ['result' =>$result,
  108. 'page' =>$page,
  109. 'count' =>$count,
  110. 'pages' =>$pages,
  111. 'phone' =>$phone
  112. ]);
  113. }
  114. /**
  115. * @return \Illuminate\View\View
  116. */
  117. public function create(Request $request)
  118. {
  119. $phone = $request->input('phone');
  120. //查询套餐
  121. $packages = CustomerDepositPackages::where('is_del', 0)->orderBy('pay_amount', 'asc')->get();
  122. $phonei = substr($phone,0,3).'****'.substr($phone,7);
  123. $self_role = session('role_name');
  124. $team_id = null;
  125. if($self_role == '管理员'){
  126. $admin_id = session('admin_id');
  127. $team_id = DB::table('admin')->where('id', $admin_id)->pluck('team_id');
  128. }
  129. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where(function($query) use($team_id){
  130. if($team_id>0) $query->where('team_id', $team_id);
  131. })->where('id','>', 1)->get();
  132. $adminList = json_decode(json_encode($adminList), true);
  133. return view('deposit/create', ['packages'=>$packages, 'phone'=>$phone, 'phonei'=>$phonei, 'adminlist'=>$adminList, 'self_role'=>$self_role]);
  134. }
  135. /**
  136. * @param Request $request
  137. * @return \Illuminate\Http\RedirectResponse
  138. */
  139. public function store(Request $request)
  140. {
  141. $pay_money = $request->input('pay_money');
  142. $pack_required = 'required';
  143. if($pay_money>0){
  144. $pack_required = '';
  145. }
  146. $this->validate($request, [
  147. 'phone' => 'required',
  148. 'package_id' => $pack_required,
  149. 'pay_time' => 'required',
  150. ], [
  151. 'phone.required' => '手机号不能为空',
  152. 'package_id.required' => '必须选择套餐',
  153. 'pay_time.required' => '充值时间必须选择',
  154. ]);
  155. $admin_id = (int)$request->input('admin_id');
  156. if(!$admin_id) $admin_id = session('admin_id');
  157. $deposit = new CustomerDeposit();
  158. $deposit->phone = $request->input('phone');
  159. $deposit->admin_id = $admin_id;
  160. $deposit->pay_time = $request->input('pay_time');
  161. $deposit->payment_type = $request->input('payment_type');
  162. if($pay_money>0){
  163. //自定义充值
  164. $deposit->pay_amount = $pay_money;
  165. $deposit->discount = 0;
  166. $deposit->deposit_amount = $pay_money;
  167. $deposit->note = '自定义充值';
  168. }else{
  169. $package_id = (int)$request->input('package_id');
  170. $package_info = CustomerDepositPackages::where('id', $package_id)->first();
  171. $deposit->pay_amount = $package_info->pay_amount;
  172. $deposit->discount = $package_info->discount;
  173. $deposit->deposit_amount = $deposit->pay_amount + $deposit->discount;
  174. $deposit->note = $package_info->note;
  175. }
  176. if($deposit->save()){
  177. //变更余额
  178. $name = trim( $request->input('name') );
  179. $customerInfo = CustomerInfo::where('phone', $deposit->phone)->first();
  180. if(!empty($customerInfo)){
  181. $customerInfo->balance = $customerInfo->balance + $deposit->deposit_amount;
  182. $customerInfo->deposit_total = $customerInfo->deposit_total + $deposit->deposit_amount;
  183. $customerInfo->deposit_times = $customerInfo->deposit_times + 1;
  184. $customerInfo->save();
  185. }else{
  186. $customerInfo = new CustomerInfo();
  187. $customerInfo->phone = $deposit->phone;
  188. $customerInfo->deposit_times = 1;
  189. $customerInfo->balance = $deposit->deposit_amount;
  190. $customerInfo->deposit_total = $deposit->deposit_amount;
  191. if(!empty($name)) $customerInfo->name = $name;
  192. $customerInfo->admin_id = $admin_id;
  193. $customerInfo->save();
  194. }
  195. }
  196. return redirect('/admin/deposit/index?phone='.$deposit->phone)->with('info', '添加成功');
  197. }
  198. /**
  199. * @param $id
  200. * @return \Illuminate\View\View
  201. */
  202. public function edit($id)
  203. {
  204. $deposit = CustomerDeposit::findOrFail($id);
  205. return view('deposit/edit', ['deposit' => $deposit, 'id'=>$id]);
  206. }
  207. /**
  208. * @param Request $request
  209. * @return \Illuminate\Http\RedirectResponse
  210. */
  211. public function update(Request $request)
  212. {
  213. $id = (int)$request->input('id');
  214. $this->validate($request, [
  215. 'phone' => 'required',
  216. 'pay_amount' => 'required',
  217. 'discount' => 'required',
  218. ], [
  219. 'phone.required' => '手机号不能为空',
  220. 'pay_amount.required' => '参数有误',
  221. 'discount.required' => '参数有误',
  222. ]);
  223. $template = Templates::findOrFail($id);
  224. $template->url = trim($request->input('url'));
  225. $template->note = trim($request->input('note'));
  226. //图片上传 阿里云oss
  227. if ($request->hasFile('img') && $request->file('img')->isValid()) {
  228. $file = $request->file('img');
  229. $ossClient=new oss();
  230. // 上传阿里云
  231. $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His'));
  232. $img=$file['oss-request-url'];
  233. $template->img=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img);
  234. }
  235. $template->save();
  236. return redirect('/admin/template/index')->with('info', '修改模板成功');
  237. }
  238. //获余额
  239. public function getBalance($phone){
  240. $result = CustomerInfo::where('phone', $phone)->pluck('balance');
  241. if(empty($result)){
  242. exit('0');
  243. }
  244. exit($result);
  245. }
  246. /**
  247. * @return \Illuminate\View\View
  248. */
  249. public function consumList(Request $request)
  250. {
  251. $phone = $request->input('phone');
  252. $page = (int)$request->input('page');
  253. $pageSize = 20;
  254. if($page<=0){
  255. $page = 1;
  256. }
  257. $offset = ($page-1) * $pageSize;
  258. $count = CustomerConsum::where(function($query) use($phone){
  259. if($phone) $query->where('phone', $phone);
  260. })->where('is_del',0)->count();
  261. if ($count > 1) {
  262. // 总页数
  263. $pages = ceil($count/$pageSize);
  264. }else{
  265. // 总页数
  266. $pages = 1;
  267. }
  268. $result = CustomerConsum::where(function($query) use($phone){
  269. if($phone) $query->where('phone', $phone);
  270. })->where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  271. $result = json_decode(json_encode($result),true);
  272. foreach($result as $k=>&$v){
  273. $v['phone'] = substr($v['phone'],0,3).'****'.substr($v['phone'],7);
  274. }
  275. return view('deposit/consumList', ['result' =>$result,
  276. 'page' =>$page,
  277. 'count' =>$count,
  278. 'pages' =>$pages,
  279. 'phone' =>$phone
  280. ]);
  281. }
  282. /**
  283. * 编辑充值方式
  284. */
  285. public function editPayType(Request $request){
  286. $id = (int)$request->input('id');
  287. $payment_type = $request->input('payment_type');
  288. $data = array();
  289. if(isset($payment_type)){
  290. if(empty($payment_type)){
  291. $payment_type = null;
  292. }
  293. $data['payment_type'] = (int)$payment_type;
  294. }
  295. if($id>0 && !empty($data)){
  296. $res = CustomerDeposit::where('id', $id)->update($data);
  297. }
  298. return 1;
  299. }
  300. }