Broker.php 9.9 KB

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