1
0

Crm.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. <?php
  2. namespace app\adminall\controller;
  3. use app\BaseController;
  4. use think\facade\View;
  5. use think\facade\Session;
  6. use toolkits\Aec;
  7. use app\model\User;
  8. use app\model\Admin;
  9. use app\model\Customer as CrmModel;
  10. use app\model\Company;
  11. use app\model\Org;
  12. use app\model\CustomerVisitLog;
  13. use app\model\Employee;
  14. use app\model\CustomerInvalidLog;
  15. class Crm extends BaseController
  16. {
  17. public function index()
  18. {
  19. if (!request()->isAjax()) {
  20. return View::fetch();
  21. }
  22. $param = request()->param();
  23. $org_id = Org::where([['path','like','%1035-%']])->column('id');
  24. $where = [
  25. ['org_id','in',$org_id]
  26. ];
  27. if(!empty($param['keyword'])){
  28. $aec = new Aec(config('app.aec_key'), config('app.aec_iv'));
  29. $phone = $aec->encrypt($param['keyword']);
  30. $where[] = ['phone','=',$phone];
  31. }
  32. $crm = CrmModel::with(['employee','org'])->where($where)->page($param['page'], $param['limit'])->order(['state'=>'asc', 'addtime'=>'asc'])->select();
  33. $count = CrmModel::where($where)->count();
  34. return json(['code'=>0, 'data'=>$crm, 'count'=>$count]);
  35. }
  36. public function visitlog()
  37. {
  38. $param = request()->param();
  39. if (!request()->isAjax()) {
  40. View::assign('customer_id',$param['id']);
  41. View::assign('employee_id',$param['employee_id']);
  42. return View::fetch();
  43. }
  44. $data = CustomerVisitLog::with('employee')->where([['customer_id','=',$param['customer_id']]])->order('addtime')->select();
  45. $count = CustomerVisitLog::where([['customer_id','=',$param['customer_id']]])->count();
  46. return json(['code'=>0, 'data'=>$data, 'count'=>$count]);
  47. }
  48. public function save_state()
  49. {
  50. $id = input('id');
  51. $list = CustomerVisitLog::where('customer_id','=',$id)->select()->toArray();
  52. foreach($list as $key=>$val){
  53. $ms = CustomerVisitLog::where('id','=',$val['id'])->update(['state'=>10,'confirm_date'=>$val['addtime']]);
  54. }
  55. //$ms = CustomerVisitLog::where('customer_id','=',$id)->update(['state'=>10]);
  56. if($ms){
  57. return json(['code'=>0,'msg'=>'修改成功']);
  58. }else{
  59. return json(['code'=>1,'msg'=>'修改失败']);
  60. }
  61. }
  62. /**
  63. * 无效记录
  64. */
  65. public function wuxiaolog_list()
  66. {
  67. $customer_id = input('customer_id');
  68. $employee_id = input('employee_id');
  69. if (!request()->isAjax()) {
  70. View::assign('customer_id',$customer_id);
  71. View::assign('employee_id',$employee_id);
  72. return View::fetch();
  73. }
  74. $list = CustomerInvalidLog::where([['customer_id','=',$customer_id]])->select()->toArray();
  75. foreach($list as $key=>$val){
  76. $list[$key]['name'] = CrmModel::where([['id','=',$val['customer_id']],['org_id','in',orgSubIds($val['root_id'])]])->value('name');
  77. $list[$key]['empname'] = Employee::where([['root_id','=',$val['root_id']],['id','=',$val['employee_id']]])->value('name');
  78. $list[$key]['designer_name'] = !empty($val['designer_id']) ? Employee::where([['root_id','=',$val['root_id']],['id','=',$val['designer_id']]])->value('name') : '';
  79. $list[$key]['org_name'] = Org::where('id',$val['org_id'])->value('name');
  80. $list[$key]['company_name'] = Company::where('root_id',$val['root_id'])->value('company_name');
  81. }
  82. return json(['code'=>0,'data'=>$list,'msg'=>'获取成功']);
  83. }
  84. /**
  85. * 修改无效记录状态
  86. */
  87. public function savewxlogstate()
  88. {
  89. $customer_id = input('customer_id');
  90. $id = input('id');
  91. $log = CustomerInvalidLog::where([['id','=',$id],['customer_id','=',$customer_id]])->find();
  92. $status = $log->status == 1 ? 2 : 1;
  93. $log->status = $status;
  94. $ms = $log->save();
  95. if($ms){
  96. return json(['code'=>0,'msg'=>'修改成功']);
  97. }else{
  98. return json(['code'=>1,'msg'=>'修改失败']);
  99. }
  100. }
  101. public function savecusstate()
  102. {
  103. $customer_id = input('customer_id');
  104. $employee_id = input('employee_id');
  105. $state = input('state');
  106. if (!request()->isAjax()) {
  107. View::assign('customer_id',$customer_id);
  108. View::assign('employee_id',$employee_id);
  109. return View::fetch();
  110. }
  111. $allstate = [0,1,2,5,6,7];
  112. if(!in_array($state,$allstate)) return json(['code'=>1,'msg'=>'参数错误']);
  113. $ms = CrmModel::where([['id','=',$customer_id],['employee_id','=',$employee_id]])->update(['state'=>$state]);
  114. if($ms){
  115. return json(['code'=>0,'msg'=>'修改成功']);
  116. }else{
  117. return json(['code'=>1,'msg'=>'修改失败']);
  118. }
  119. }
  120. public function savelogstate()
  121. {
  122. $customer_id = input('customer_id');
  123. $id = input('id');
  124. $state = input('state');
  125. if (!request()->isAjax()) {
  126. View::assign('customer_id',$customer_id);
  127. View::assign('id',$id);
  128. return View::fetch();
  129. }
  130. $allstate = [1,10,7,2,3,11];
  131. if(!in_array($state,$allstate)) return json(['code'=>1,'msg'=>'参数错误']);
  132. $ms = CustomerVisitLog::where([['customer_id','=',$customer_id],['id','=',$id]])->update(['state'=>$state]);
  133. if($ms){
  134. return json(['code'=>0,'msg'=>'修改成功']);
  135. }else{
  136. return json(['code'=>1,'msg'=>'修改失败']);
  137. }
  138. }
  139. public function addlog()
  140. {
  141. $param = request()->param();
  142. if (!request()->isAjax()) {
  143. View::assign('customer_id',$param['customer_id']);
  144. View::assign('employee_id',$param['employee_id']);
  145. return View::fetch();
  146. }
  147. //待确认
  148. if($param['state'] == 1) {
  149. $employee = Employee::where('id',$param['employee_id'])->find();
  150. $data = [
  151. 'customer_id' => $param['customer_id'],
  152. 'type' => '',
  153. 'addtime' => $param['addtime'],
  154. 'employee_id' => $param['employee_id'],
  155. 'user_id' => $employee['uid'],
  156. 'state' => $param['state'],
  157. 'remark' => $param['remark'],
  158. 'org_id' => $employee['org_id'],
  159. 'next_contact_date' => date('Y-m-d'),
  160. ];
  161. $add = CustomerVisitLog::insert($data);
  162. if($add){
  163. return json(['code'=>0,'msg'=>'成功']);
  164. }
  165. }
  166. //定金
  167. if($param['state'] == 2) {
  168. $employee = Employee::where('id',$param['employee_id'])->find();
  169. $data = [
  170. 'customer_id' => $param['customer_id'],
  171. 'type' => '',
  172. 'next_contact_date' => date('Y-m-d',strtotime($param['addtime'])),
  173. 'addtime' => $param['addtime'],
  174. 'employee_id' => $param['employee_id'],
  175. 'user_id' => $employee['uid'],
  176. 'state' => $param['state'],
  177. 'remark' => $param['remark'],
  178. 'org_id' => $employee['org_id'],
  179. 'confirm_date' => $param['confirm_date'],
  180. 'money' => $param['money']
  181. ];
  182. $add = CustomerVisitLog::insert($data);
  183. if($add){
  184. return json(['code'=>0,'msg'=>'成功']);
  185. }
  186. }
  187. //签单
  188. if($param['state'] == 3) {
  189. $employee = Employee::where('id',$param['employee_id'])->find();
  190. $data = [
  191. 'customer_id' => $param['customer_id'],
  192. 'type' => '',
  193. 'next_contact_date' => date('Y-m-d',strtotime($param['addtime'])),
  194. 'addtime' => $param['addtime'],
  195. 'employee_id' => $param['employee_id'],
  196. 'user_id' => $employee['uid'],
  197. 'state' => $param['state'],
  198. 'remark' => $param['remark'],
  199. 'org_id' => $employee['org_id'],
  200. 'confirm_date' => $param['confirm_date'],
  201. 'money' => $param['money']
  202. ];
  203. $add = CustomerVisitLog::insert($data);
  204. if($add){
  205. return json(['code'=>0,'msg'=>'成功']);
  206. }
  207. }
  208. //到店
  209. if($param['state'] == 7) {
  210. $employee = Employee::where('id',$param['employee_id'])->find();
  211. $data = [
  212. 'customer_id' => $param['customer_id'],
  213. 'type' => '',
  214. 'next_contact_date' => date('Y-m-d',strtotime($param['addtime'])),
  215. 'addtime' => $param['addtime'],
  216. 'employee_id' => $param['employee_id'],
  217. 'user_id' => $employee['uid'],
  218. 'state' => $param['state'],
  219. 'remark' => $param['remark'],
  220. 'org_id' => $employee['org_id'],
  221. 'confirm_date' => $param['addtime'],
  222. ];
  223. $add = CustomerVisitLog::insert($data);
  224. if($add){
  225. return json(['code'=>0,'msg'=>'成功']);
  226. }
  227. }
  228. //未到访
  229. if($param['state'] == 10) {
  230. $employee = Employee::where('id',$param['employee_id'])->find();
  231. $data = [
  232. 'customer_id' => $param['customer_id'],
  233. 'type' => '',
  234. 'next_contact_date' => date('Y-m-d'),
  235. 'addtime' => $param['addtime'],
  236. 'employee_id' => $param['employee_id'],
  237. 'user_id' => $employee['uid'],
  238. 'state' => $param['state'],
  239. 'remark' => $param['remark'],
  240. 'org_id' => $employee['org_id'],
  241. ];
  242. $add = CustomerVisitLog::insert($data);
  243. if($add){
  244. return json(['code'=>0,'msg'=>'成功']);
  245. }
  246. }
  247. return json(['code'=>-1,'msg'=>'失败']);
  248. }
  249. // public function editlog()
  250. // {
  251. // $param = request()->param();
  252. // if (!request()->isAjax()) {
  253. // $res = CustomerVisitLog::where('id', $param['id'])->find();
  254. // $data = $res;
  255. // if(in_array($res['state'],['回访', '待确认', '预约回访'])){
  256. // $data->state = 1;
  257. // }
  258. // if(in_array($res['state'],['交定', '定金', '已交定', '收定'])){
  259. // $data['state'] = 2;
  260. // }
  261. // if(in_array($res['state'],['签单', '已签单'])){
  262. // $data['state'] = 3;
  263. // }
  264. // if(in_array($res['state'],['已到访', '已到店', '确定到店', '确认到店'])){
  265. // $data['state'] = 7;
  266. // }
  267. // if(in_array($res['state'],['未到访'])){
  268. // $data['state'] = 10;
  269. // }
  270. // if(in_array($res['state'],['无效'])){
  271. // $data['state'] = 11;
  272. // }
  273. // print_r($data['state']);
  274. // View::assign('data',$data);
  275. // return View::fetch();
  276. // }
  277. // }
  278. }