Broker.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. <?php
  2. namespace app\agent\controller;
  3. use app\agent\BaseController;
  4. use app\common\model\UserPart as UserPartModel;
  5. use app\common\model\Broker as BrokerModel;
  6. use app\common\model\User as UserModel;
  7. use app\common\model\BrokerIncome as BrokerIncomeModel;
  8. use app\common\service\IncomeService;
  9. use app\common\validate\Broker as BrokerValidate;
  10. use think\exception\ValidateException;
  11. class Broker extends BaseController
  12. {
  13. public function brokerList()
  14. {
  15. $agent = $this->access_agent;
  16. return view('broker/brokerlist', [
  17. 'agent' => $agent,
  18. ]);
  19. }
  20. public function brokerForm()
  21. {
  22. $id = input('id/d, 0');
  23. $broker = BrokerModel::with(['muser'])->findOrEmpty($id);
  24. $agent = $this->access_agent;
  25. $townlist = file_get_contents(root_path('public/static/jscss') . 'village.json');
  26. $agentid = $this->access_agent['id'];
  27. $partner = BrokerModel::where([
  28. ['agentid', '=', $agentid],
  29. ['is_partner', '=', 1],
  30. ['id', '<>', $id],
  31. ])->select();
  32. return view('broker/brokerform', [
  33. 'agent' => $agent,
  34. 'broker' => $broker,
  35. 'townlist' => $townlist,
  36. 'partner' => $partner,
  37. ]);
  38. }
  39. public function editBroker()
  40. {
  41. $agent = $this->access_agent;
  42. $id = input('id/d');
  43. $data = [
  44. 'workerid' => $agent['workerid'],
  45. 'agentid' => $agent['id'],
  46. 'title' => input('title/s', ""),
  47. 'mobile' => input('mobile/s', ""),
  48. 'weixin' => input('weixin/s', ""),
  49. 'qq' => input('qq/s', ""),
  50. 'province' => input('province/s', ""),
  51. 'city' => input('city/s', ""),
  52. 'district' => input('district/s', ""),
  53. 'region' => input('region/s', ""),
  54. 'details' => input('details/s', ""),
  55. 'powerreport' => input('powerreport/d', 0) == 1 ? 1 : 2,
  56. 'status' => input('status/d') == 1 ? 1 : 2,
  57. 'latitude' => input('latitude/f', 0),
  58. 'longitude' => input('longitude/f', 0),
  59. 'type' => input('type/f', 1),
  60. 'is_partner' => input('is_partner/f', 2),
  61. 'pid' => input('pid/f', 0),
  62. ];
  63. //就业合伙人
  64. if ($data['is_partner'] == 1) {
  65. $data['pid'] = 0;
  66. }
  67. if (empty($data['latitude']) || empty($data['longitude'])) {
  68. exit(json_encode([
  69. 'code' => 1,
  70. 'msg' => '请选择地理位置',
  71. ]));
  72. }
  73. //镇街
  74. $townvillage = input('townvillage');
  75. if (empty($townvillage)) {
  76. exit(json_encode([
  77. 'code' => 1,
  78. 'msg' => '请选择镇街',
  79. ]));
  80. }
  81. $townvillage = explode(',', $townvillage);
  82. $data['town'] = $townvillage[0];
  83. $data['village'] = $townvillage[1];
  84. $password = input('password/s', "");
  85. if (empty($id)) {
  86. $data['password'] = empty($password) ? md5("123456789") : md5($password);
  87. $vdata = [
  88. 'id' => $id,
  89. 'mobile' => input('mobile/s'),
  90. ];
  91. try {
  92. validate(BrokerValidate::class)->check($vdata);
  93. } catch (ValidateException $e) {
  94. exit(json_encode([
  95. 'code' => 1,
  96. 'msg' => $e->getError(),
  97. ]));
  98. }
  99. $muser = UserModel::where(['mobile' => input('musermobile/s', '')])->findOrEmpty();
  100. if ($muser->isEmpty()) {
  101. exit(json_encode([
  102. 'code' => 1,
  103. 'msg' => "关联的用户不存在。",
  104. ]));
  105. }
  106. $broker_user = BrokerModel::where('userid', $muser->id)->find();
  107. if (!empty($broker_user)) {
  108. exit(json_encode([
  109. 'code' => 1,
  110. 'msg' => "该用户已是经纪人。",
  111. ]));
  112. }
  113. $data['userid'] = $muser->id;
  114. $data['createtime'] = time();
  115. $broker = BrokerModel::create($data);
  116. event('brokerAdd', $broker);
  117. } else {
  118. if (!empty($password)) {
  119. $data['password'] = md5($password);
  120. }
  121. $broker = BrokerModel::find($id);
  122. $broker->save($data);
  123. }
  124. exit(json_encode([
  125. 'code' => 0,
  126. ]));
  127. }
  128. public function fieldBroker()
  129. {
  130. $id = input('id/d', 0);
  131. $broker = BrokerModel::findOrEmpty($id);
  132. if ($broker->isEmpty()) {
  133. exit(json_encode([
  134. 'code' => 1,
  135. 'msg' => "信息不存在",
  136. ]));
  137. } else {
  138. $broker->save([
  139. input('field/s') => input('value'),
  140. ]);
  141. }
  142. exit(json_encode([
  143. 'code' => 0,
  144. ]));
  145. }
  146. public function delBroker()
  147. {
  148. $idarr = input('idarr/a');
  149. $user_check = UserModel::whereIn('brokerid', $idarr)->find();
  150. if (!empty($user_check)) {
  151. exit(json_encode([
  152. 'code' => 1,
  153. 'msg' => "该经纪人还有下线,请先转移再删除",
  154. ]));
  155. }
  156. $broker = BrokerModel::whereIn('id', $idarr)->select();
  157. $result = $broker->delete();
  158. if ($result) {
  159. exit(json_encode([
  160. 'code' => 0,
  161. 'msg' => "",
  162. ]));
  163. }
  164. exit(json_encode([
  165. 'code' => 1,
  166. 'msg' => "删除失败,请稍后重试",
  167. ]));
  168. }
  169. public function listBroker()
  170. {
  171. $agentid = $this->access_agent['id'];
  172. $limit = input('limit/d', 20);
  173. $page = input('page/d', 1);
  174. $map = [];
  175. $map[] = ['agentid', '=', $agentid];
  176. $keywords = input('keywords/s');
  177. if (!empty($keywords)) {
  178. $map[] = ['title', 'like', '%' . $keywords . '%'];
  179. }
  180. $status = input('status/d');
  181. if (!empty($status)) {
  182. $map[] = ['status', '=', $status];
  183. }
  184. $is_partner = input('is_partner/d');
  185. if (!empty($is_partner)) {
  186. $map[] = ['is_partner', '=', $is_partner];
  187. }
  188. $list = BrokerModel::with(['agent', 'muser'])
  189. ->withCount(['user'])
  190. ->where($map)
  191. ->order('id', 'DESC')
  192. ->limit($limit)
  193. ->page($page)
  194. ->append(['status_text', 'powerreport_text', 'type_text', 'is_partner_text'])
  195. ->select();
  196. $count = BrokerModel::where($map)->count();
  197. if ($count == 0) {
  198. exit(json_encode([
  199. 'code' => 1,
  200. 'msg' => "未查询到数据",
  201. ]));
  202. }
  203. exit(json_encode([
  204. 'code' => 0,
  205. 'msg' => "",
  206. 'count' => $count,
  207. 'data' => $list,
  208. ]));
  209. }
  210. public function transferFrom()
  211. {
  212. $broker_id = input('broker_id/d, 0');
  213. $agentid = $this->access_agent['id'];
  214. $broker_list = BrokerModel::where('agentid', $agentid)->where('id', '<>', $broker_id)->select();
  215. return view('broker/transferform', [
  216. 'origin_broker_id' => $broker_id,
  217. 'broker_list' => $broker_list,
  218. ]);
  219. }
  220. public function edittransfer()
  221. {
  222. $origin_broker_id = input('origin_broker_id/d, 0');
  223. $broker_id = input('broker_id/d, 0');
  224. if (empty($origin_broker_id) || empty($broker_id)) {
  225. exit(json_encode([
  226. 'code' => 1,
  227. 'msg' => "参数错误",
  228. ]));
  229. }
  230. if ($origin_broker_id == $broker_id) {
  231. exit(json_encode([
  232. 'code' => 1,
  233. 'msg' => "不可以转移给自己",
  234. ]));
  235. }
  236. $origin_broker = BrokerModel::where('id', $origin_broker_id)->find();
  237. $broker = BrokerModel::where('id', $broker_id)->find();
  238. if (empty($origin_broker) || empty($broker)) {
  239. exit(json_encode([
  240. 'code' => 1,
  241. 'msg' => "参数错误",
  242. ]));
  243. }
  244. if ($origin_broker['agentid'] != $broker['agentid']) {
  245. exit(json_encode([
  246. 'code' => 1,
  247. 'msg' => "只有相同门店的经纪人才可以转移",
  248. ]));
  249. }
  250. UserModel::where('brokerid', $origin_broker_id)->update(['brokerid' => $broker_id]);
  251. UserPartModel::where('puserid', $origin_broker['userid'])->update(['puserid' => $broker['userid']]);
  252. exit(json_encode([
  253. 'code' => 0,
  254. ]));
  255. }
  256. public function incomeList()
  257. {
  258. $brokerid = input('brokerid');
  259. if (empty($brokerid)) {
  260. exit("未查询到数据");
  261. }
  262. return view('broker/incomelist', [
  263. 'brokerid' => $brokerid,
  264. ]);
  265. }
  266. public function listIncome()
  267. {
  268. $brokerid = input('brokerid');
  269. if (empty($brokerid)) {
  270. exit(json_encode([
  271. 'code' => 1,
  272. 'msg' => "未查询到数据",
  273. ]));
  274. }
  275. $limit = input('limit/d', 20);
  276. $page = input('page/d', 1);
  277. $map = [
  278. ['brokerid', '=', $brokerid],
  279. ];
  280. $list = BrokerIncomeModel::where($map)->order('id', 'DESC')->limit($limit)->page($page)->append(['status_text', 'powerreport_text'])->select();
  281. $count = BrokerIncomeModel::where($map)->count();
  282. if ($count == 0) {
  283. exit(json_encode([
  284. 'code' => 1,
  285. 'msg' => "未查询到数据",
  286. ]));
  287. }
  288. exit(json_encode([
  289. 'code' => 0,
  290. 'msg' => "",
  291. 'count' => $count,
  292. 'data' => $list,
  293. ]));
  294. }
  295. public function settleIncome()
  296. {
  297. $brokerid = input('brokerid');
  298. $value = input('value');
  299. if (empty($brokerid) || $value <= 0) {
  300. exit(json_encode([
  301. 'code' => 1,
  302. 'msg' => "参数错误",
  303. ]));
  304. }
  305. $broker = BrokerModel::find($brokerid);
  306. if (empty($broker)) {
  307. exit(json_encode([
  308. 'code' => 1,
  309. 'msg' => "未查询到数据",
  310. ]));
  311. }
  312. if ($broker['income'] < $value) {
  313. exit(json_encode([
  314. 'code' => 1,
  315. 'msg' => "经纪人收益不足",
  316. ]));
  317. }
  318. $incomeService = new IncomeService();
  319. $incomeService->add($brokerid, -$value, '门店结算', '门店与经纪人线下结算');
  320. exit(json_encode([
  321. 'code' => 0,
  322. 'msg' => "",
  323. ]));
  324. }
  325. }