Broker.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\BaseController;
  4. use app\common\model\Config;
  5. use app\common\model\User as UserModel;
  6. use app\common\model\Worker as WorkerModel;
  7. use app\common\model\Agent as AgentModel;
  8. use app\common\model\Broker as BrokerModel;
  9. use app\common\model\Resident as ResidentModel;
  10. use app\common\model\BrokerForm as BrokerFormModel;
  11. use app\common\model\BrokerIncome as BrokerIncomeModel;
  12. use app\common\validate\Broker as BrokerValidate;
  13. use think\exception\ValidateException;
  14. class Broker extends BaseController
  15. {
  16. public function brokerList()
  17. {
  18. $workerlist = WorkerModel::order(['id' => 'desc'])->select();
  19. $agentlist = AgentModel::order(['id' => 'desc'])->select();
  20. return view('broker/brokerlist', [
  21. 'workerlist' => $workerlist,
  22. 'agentlist' => $agentlist,
  23. ]);
  24. }
  25. public function brokerForm()
  26. {
  27. $id = input('id/d, 0');
  28. $broker = BrokerModel::findOrEmpty($id);
  29. $workerlist = WorkerModel::with(['agent', 'muser'])->order(['id' => 'desc'])->select();
  30. return view('broker/brokerform', [
  31. 'workerlist' => $workerlist,
  32. 'broker' => $broker,
  33. ]);
  34. }
  35. public function editBroker()
  36. {
  37. $id = input('id/d');
  38. $data = [
  39. 'title' => input('title/s', ""),
  40. 'mobile' => input('mobile/s', ""),
  41. 'weixin' => input('weixin/s', ""),
  42. 'qq' => input('qq/s', ""),
  43. 'province' => input('province/s', ""),
  44. 'city' => input('city/s', ""),
  45. 'district' => input('district/s', ""),
  46. 'region' => input('region/s', ""),
  47. 'details' => input('details/s', ""),
  48. 'powerreport' => input('powerreport/d') == 1 ? 1 : 2,
  49. 'status' => input('status/d') == 1 ? 1 : 2,
  50. ];
  51. if (empty($id)) {
  52. $vdata = [
  53. 'id' => $id,
  54. 'mobile' => input('mobile/s'),
  55. ];
  56. try {
  57. validate(BrokerValidate::class)->check($vdata);
  58. } catch (ValidateException $e) {
  59. exit(json_encode([
  60. 'code' => 1,
  61. 'msg' => $e->getError(),
  62. ]));
  63. }
  64. $muser = UserModel::where(['mobile' => input('musermobile/s', '')])->findOrEmpty();
  65. if ($muser->isEmpty()) {
  66. exit(json_encode([
  67. 'code' => 1,
  68. 'msg' => "关联的用户不存在。",
  69. ]));
  70. }
  71. $workeragentarr = explode(",", input('workeragent/s'));
  72. $workerid = isset($workeragentarr[0]) ? $workeragentarr[0] : 0;
  73. $agentid = isset($workeragentarr[1]) ? $workeragentarr[1] : 0;
  74. if (empty($workerid) || empty($agentid)) {
  75. exit(json_encode([
  76. 'code' => 1,
  77. 'msg' => "请选择劳务公司和代理门店。",
  78. ]));
  79. }
  80. $broker_user = BrokerModel::where('userid', $muser->id)->find();
  81. if (!empty($broker_user)) {
  82. exit(json_encode([
  83. 'code' => 1,
  84. 'msg' => "该用户已是经纪人。",
  85. ]));
  86. }
  87. $data['userid'] = $muser->id;
  88. $data['workerid'] = $workerid;
  89. $data['agentid'] = $agentid;
  90. $data['createtime'] = time();
  91. $broker = BrokerModel::create($data);
  92. event('brokerAdd', $broker);
  93. } else {
  94. $broker = BrokerModel::find($id);
  95. $broker->save($data);
  96. }
  97. exit(json_encode([
  98. 'code' => 0,
  99. ]));
  100. }
  101. public function fieldBroker()
  102. {
  103. $id = input('id/d', 0);
  104. $broker = BrokerModel::findOrEmpty($id);
  105. if ($broker->isEmpty()) {
  106. exit(json_encode([
  107. 'code' => 1,
  108. 'msg' => "信息不存在",
  109. ]));
  110. } else {
  111. $broker->save([
  112. input('field/s') => input('value'),
  113. ]);
  114. }
  115. exit(json_encode([
  116. 'code' => 0,
  117. ]));
  118. }
  119. public function delBroker()
  120. {
  121. $access_admin = session('access_admin');
  122. $password = input('password');
  123. if ($access_admin['password'] !== md5($password)) {
  124. exit(json_encode([
  125. 'code' => 1,
  126. 'msg' => "操作密码验证失败",
  127. ]));
  128. }
  129. $idarr = input('idarr/a');
  130. $user_check = UserModel::whereIn('brokerid', $idarr)->findOrEmpty();
  131. if (!empty($user_check)) {
  132. exit(json_encode([
  133. 'code' => 1,
  134. 'msg' => "该经纪人还有下线,请先转移再删除",
  135. ]));
  136. }
  137. $user_ids = BrokerModel::whereIn('id', $idarr)->column('userid');
  138. $resident_check = ResidentModel::whereIn('userid', $user_ids)->findOrEmpty();
  139. if (empty($resident_check)) {
  140. exit(json_encode([
  141. 'code' => 1,
  142. 'msg' => "该经纪人是驻场老师,请取消驻场老师资格",
  143. ]));
  144. }
  145. $result = BrokerModel::whereIn('id', $idarr)->delete();
  146. if ($result) {
  147. exit(json_encode([
  148. 'code' => 0,
  149. 'msg' => "",
  150. ]));
  151. }
  152. exit(json_encode([
  153. 'code' => 1,
  154. 'msg' => "删除失败,请稍后重试",
  155. ]));
  156. }
  157. public function listBroker()
  158. {
  159. $limit = input('limit/d', 20);
  160. $page = input('page/d', 1);
  161. $map = [];
  162. $keywords = input('keywords/s');
  163. if (!empty($keywords)) {
  164. $map[] = ['title', 'like', '%' . $keywords . '%'];
  165. }
  166. $status = input('status/d');
  167. if (!empty($status)) {
  168. $map[] = ['status', '=', $status];
  169. }
  170. $workerid = input('workerid/d');
  171. if (!empty($workerid)) {
  172. $map[] = ['workerid', '=', $workerid];
  173. }
  174. $list = BrokerModel::with(['worker', 'agent', 'muser'])->withCount(['user'])->where($map)->order('id', 'DESC')->limit($limit)->page($page)->append(['status_text', 'powerreport_text'])->select();
  175. $count = BrokerModel::where($map)->count();
  176. if ($count == 0) {
  177. exit(json_encode([
  178. 'code' => 1,
  179. 'msg' => "未查询到数据",
  180. ]));
  181. }
  182. exit(json_encode([
  183. 'code' => 0,
  184. 'msg' => "",
  185. 'count' => $count,
  186. 'data' => $list,
  187. ]));
  188. }
  189. // 申请注册经纪人
  190. public function fbrokerList()
  191. {
  192. return view('broker/fbrokerlist');
  193. }
  194. public function fbrokerForm()
  195. {
  196. $id = input('id/d, 0');
  197. $fbroker = BrokerFormModel::findOrEmpty($id);
  198. return view('broker/fbrokerform', [
  199. 'fbroker' => $fbroker,
  200. ]);
  201. }
  202. public function editFbroker()
  203. {
  204. $id = input('id/d');
  205. $fbroker = BrokerFormModel::findOrEmpty($id);
  206. $fbroker->save([
  207. 'realname' => input('realname/s', ""),
  208. 'mobile' => input('mobile/s', ""),
  209. 'address' => input('address/s', ""),
  210. 'idcard' => input('idcard/s', ""),
  211. 'recommender' => input('recommender/s', ""),
  212. 'status' => input('status/d', 1),
  213. 'remark' => input('remark/s', ""),
  214. 'createtime' => input('createtime/s', ""),
  215. ]);
  216. exit(json_encode([
  217. 'code' => 0,
  218. ]));
  219. }
  220. public function fieldFbroker()
  221. {
  222. $id = input('id/d', 0);
  223. $info = BrokerFormModel::findOrEmpty($id);
  224. if ($info->isEmpty()) {
  225. exit(json_encode([
  226. 'code' => 1,
  227. 'msg' => "信息不存在",
  228. ]));
  229. } else {
  230. $info->save([
  231. input('field/s') => input('value'),
  232. ]);
  233. }
  234. exit(json_encode([
  235. 'code' => 0,
  236. ]));
  237. }
  238. public function delFbroker()
  239. {
  240. $idarr = input('idarr/a');
  241. $fbroker = BrokerFormModel::whereIn('id', $idarr)->select();
  242. $result = $fbroker->delete();
  243. if ($result) {
  244. exit(json_encode([
  245. 'code' => 0,
  246. 'msg' => "",
  247. ]));
  248. }
  249. exit(json_encode([
  250. 'code' => 1,
  251. 'msg' => "删除失败,请稍后重试",
  252. ]));
  253. }
  254. public function listFbroker()
  255. {
  256. $limit = input('limit');
  257. $page = input('page');
  258. $map = [];
  259. $keywords = input('keywords/s');
  260. if (!empty($keywords)) {
  261. $map[] = ['realname|mobile', 'like', '%' . $keywords . '%'];
  262. }
  263. $status = input('status/d');
  264. if (!empty($status)) {
  265. $map[] = ['status', '=', $status];
  266. }
  267. $list = BrokerFormModel::where($map)->order('id', 'DESC')->limit($limit)->page($page)->append(['status_text', 'powerreport_text'])->select();
  268. $count = BrokerFormModel::where($map)->count();
  269. if ($count == 0) {
  270. exit(json_encode([
  271. 'code' => 1,
  272. 'msg' => "未查询到数据",
  273. ]));
  274. }
  275. exit(json_encode([
  276. 'code' => 0,
  277. 'msg' => "",
  278. 'count' => $count,
  279. 'data' => $list,
  280. ]));
  281. }
  282. public function brokerdefault()
  283. {
  284. $broker_id = Config::getConfigValue("default_broker");
  285. $broker = [];
  286. if (!empty($broker_id)) {
  287. $broker = BrokerModel::where('id', $broker_id)->find();
  288. }
  289. return view('broker/brokerdefault', [
  290. 'broker' => $broker,
  291. ]);
  292. }
  293. public function brokerajax()
  294. {
  295. $keyword = input('keyword');
  296. $list = BrokerModel::where('title|mobile', 'like', "%{$keyword}%")->limit(10)->select();
  297. exit(json_encode([
  298. 'code' => 0,
  299. 'msg' => "",
  300. 'data' => $list,
  301. ]));
  302. }
  303. public function editdefault()
  304. {
  305. $brokerid = input('brokerid/d', 0);
  306. if (empty($brokerid)) {
  307. exit(json_encode([
  308. 'code' => 1,
  309. 'msg' => "请选择经纪人",
  310. ]));
  311. }
  312. Config::setConfigValue('default_broker', $brokerid);
  313. exit(json_encode(['code' => 0]));
  314. }
  315. public function cashList()
  316. {
  317. return view('broker/cashlist');
  318. }
  319. public function listCash()
  320. {
  321. $limit = input('limit/d', 20);
  322. $page = input('page/d', 1);
  323. $map = [
  324. ['type', '=', 2],
  325. ];
  326. $status = input('status/d');
  327. if (!empty($status)) {
  328. $map[] = ['status', '=', $status];
  329. }
  330. $list = BrokerIncomeModel::with(['broker'])->where($map)->order('status', 'ASC')->limit($limit)->page($page)->append(['status_text'])->select();
  331. foreach ($list as $v) {
  332. $v['value'] = abs($v['value']);
  333. }
  334. $count = BrokerIncomeModel::where($map)->count();
  335. if ($count == 0) {
  336. exit(json_encode([
  337. 'code' => 1,
  338. 'msg' => "未查询到数据",
  339. ]));
  340. }
  341. exit(json_encode([
  342. 'code' => 0,
  343. 'msg' => "",
  344. 'count' => $count,
  345. 'data' => $list,
  346. ]));
  347. }
  348. public function examineCash()
  349. {
  350. $id = input('id/d', 0);
  351. $income = BrokerIncomeModel::findOrEmpty($id);
  352. if ($income->isEmpty()) {
  353. exit('未查询到数据');
  354. }
  355. if ($income->status != 1) {
  356. exit('该记录无需审核');
  357. }
  358. return view('broker/examinecash', [
  359. 'id' => $id,
  360. ]);
  361. }
  362. public function cashExamine()
  363. {
  364. $id = input('id/d', 0);
  365. $income = BrokerIncomeModel::findOrEmpty($id);
  366. if ($income->isEmpty()) {
  367. exit(json_encode([
  368. 'code' => 1,
  369. 'msg' => "未查询到数据",
  370. ]));
  371. }
  372. //更改状态
  373. $status = input('status/d', 0);
  374. if (empty($status)) {
  375. exit(json_encode([
  376. 'code' => 1,
  377. 'msg' => "请选择状态",
  378. ]));
  379. }
  380. $remark = input('remark', '');
  381. $income->status = $status;
  382. $income->remark = $remark;
  383. $income->save();
  384. //审核失败,退钱
  385. if ($status == 3) {
  386. $broker = BrokerModel::where('id', $income['brokerid'])->find();
  387. $broker->income += abs($income['value']);
  388. $broker->save();
  389. }
  390. exit(json_encode([
  391. 'code' => 0,
  392. ]));
  393. }
  394. public function applyList()
  395. {
  396. return view('broker/applylist');
  397. }
  398. public function listApply()
  399. {
  400. $limit = input('limit/d', 20);
  401. $page = input('page/d', 1);
  402. $map = [];
  403. $mobile = input('mobile/s');
  404. if (!empty($mobile)) {
  405. $map[] = ['mobile', 'like', '%' . $mobile . '%'];
  406. }
  407. $status = input('status/d');
  408. if (!empty($status)) {
  409. $map[] = ['status', '=', $status];
  410. }
  411. $list = BrokerFormModel::with(['worker', 'agent'])->where($map)->order('id', 'DESC')->limit($limit)->page($page)->append(['status_text'])->select();
  412. $count = BrokerFormModel::where($map)->count();
  413. if ($count == 0) {
  414. exit(json_encode([
  415. 'code' => 1,
  416. 'msg' => "未查询到数据",
  417. ]));
  418. }
  419. exit(json_encode([
  420. 'code' => 0,
  421. 'msg' => "",
  422. 'count' => $count,
  423. 'data' => $list,
  424. ]));
  425. }
  426. public function delApply()
  427. {
  428. $idarr = input('idarr/a');
  429. $fbroker = BrokerFormModel::whereIn('id', $idarr)->select();
  430. $result = $fbroker->delete();
  431. if ($result) {
  432. exit(json_encode([
  433. 'code' => 0,
  434. 'msg' => "",
  435. ]));
  436. }
  437. exit(json_encode([
  438. 'code' => 1,
  439. 'msg' => "删除失败,请稍后重试",
  440. ]));
  441. }
  442. public function statusApply()
  443. {
  444. $id = input('id');
  445. $status = input('status', 1);
  446. $fbroker = BrokerFormModel::where('id', $id)->find();
  447. if ($fbroker['status'] != 1) {
  448. exit(json_encode([
  449. 'code' => 1,
  450. 'msg' => "请不要重复审核",
  451. ]));
  452. }
  453. $fbroker->status = $status;
  454. $fbroker->save();
  455. if ($status == 2) {
  456. $broker_user = BrokerModel::where('userid', $fbroker['userid'])->find();
  457. if (!empty($broker_user)) {
  458. exit(json_encode([
  459. 'code' => 0,
  460. 'msg' => "",
  461. ]));
  462. }
  463. $data['userid'] = $fbroker['userid'];
  464. $data['workerid'] = $fbroker['workerid'];
  465. $data['agentid'] = $fbroker['agentid'];
  466. $data['title'] = $fbroker['title'];
  467. $data['avatar'] = $fbroker['avatar'];
  468. $data['mobile'] = $fbroker['mobile'];
  469. $data['province'] = $fbroker['province'];
  470. $data['city'] = $fbroker['city'];
  471. $data['district'] = $fbroker['district'];
  472. $data['region'] = $fbroker['region'];
  473. $data['createtime'] = time();
  474. $broker = BrokerModel::create($data);
  475. event('brokerAdd', $broker);
  476. }
  477. exit(json_encode([
  478. 'code' => 0,
  479. 'msg' => "",
  480. ]));
  481. }
  482. }