Customer.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. <?php
  2. namespace app\user\controller;
  3. use app\user\model\CustomerInfo;
  4. use app\user\model\CustomerMember;
  5. use app\user\model\Headquarters;
  6. use think\App;
  7. use think\facade\Validate;
  8. class Customer extends Base{
  9. public function __construct(App $app) {
  10. parent::__construct($app);
  11. $this->model = new CustomerInfo();
  12. }
  13. /**
  14. * @return \think\response\Json|void
  15. */
  16. public function create(){
  17. $param = $this->request->only([
  18. 'companyName'=>"",
  19. 'parent' => 0,
  20. 'is_del' => 0,
  21. 'customer_member',
  22. 'branch',
  23. 'middle',
  24. 'area',
  25. ], 'post', 'trim');
  26. $val = Validate::rule([
  27. 'companyName|客户名称' => 'require|max:255|unique:app\user\model\CustomerInfo,companyName^parent^is_del',
  28. 'customer_member|联系方式' => 'require|array|max:100',
  29. 'branch|省级' => 'require',
  30. 'middle|市级' => 'require',
  31. 'area|区域' => 'require',
  32. ]);
  33. if ($val->check($param) == false) return error($val->getError());
  34. $code= makeNo("KH");
  35. $data = [
  36. 'companyNo' => $code,
  37. 'companyName' => $param['companyName'],
  38. 'parent' => $param['parent'],
  39. 'itemid' => $param['parent'],
  40. 'area' =>$param['area'],
  41. 'status' => 0,
  42. 'branch' =>$param['branch'],
  43. 'middle' =>$param['middle'],
  44. 'is_del' => 0,
  45. 'createrid' => $this->uid,
  46. 'creater' => $this->uname,
  47. ];
  48. $member=[];
  49. if(!empty($param['customer_member'])){
  50. foreach ($param['customer_member'] as $key => $value) {
  51. $member[] = [
  52. 'commobile' => $value['commobile'] ?? '',
  53. 'contactor' => $value['contactor'] ?? '',
  54. 'position' => $value['position'] ?? '',
  55. 'wxaccount' => $value['wxaccount'] ?? '',
  56. 'qqaccount' => $value['qqaccount'] ?? '',
  57. 'email' => $value['email'] ?? '',
  58. 'comdepart' => $value['comdepart'] ?? '',
  59. 'status' => $value['status'] ?? '',
  60. 'createrid' => $this->uid,
  61. 'creater' => $this->uname,
  62. 'companyNo' => $code,
  63. ];
  64. }
  65. }
  66. $this->model->startTrans();
  67. try{
  68. $create=$this->model->create($data);
  69. if($create->isEmpty()) return error("创建失败");
  70. if(!empty($member)){
  71. $memberAdd= $this->model->member()->saveAll($member);
  72. if($memberAdd==false) return error("创建失败");
  73. }
  74. $create->updater = $this->uname;
  75. $create->updaterid = $this->uid;
  76. $heq=Headquarters::createInfo($create,2);
  77. if($heq==false) return error("创建失败");
  78. $this->model->commit();
  79. }catch (\Exception $e){
  80. $this->model->rollback();
  81. return error($e->getMessage());
  82. }
  83. return success("创建成功");
  84. }
  85. /**
  86. * @param id 主键id
  87. * companyName 客户名称
  88. * parent 父级id
  89. * is_del 删除状态
  90. * customer_member 联系方式
  91. * branch 省级
  92. * middle 市级
  93. * area 区域
  94. * @return \think\Response|\think\response\Json|void
  95. * @throws \think\exception\PDOException
  96. */
  97. public function save(){
  98. $param = $this->request->only([
  99. 'id'=>"",
  100. 'companyName'=>"",
  101. 'parent' => 0,
  102. 'is_del' => 0,
  103. 'customer_member',
  104. 'branch',
  105. 'middle',
  106. 'area',
  107. ], 'post', 'trim');
  108. $val = Validate::rule([
  109. 'id|主键ID' => 'require',
  110. 'companyName|客户名称' => 'require|max:255|unique:app\user\model\CustomerInfo,companyName^parent^is_del',
  111. 'customer_member|联系方式' => 'require|array|max:100',
  112. 'branch|省级' => 'require',
  113. 'middle|市级' => 'require',
  114. 'area|区域' => 'require',
  115. ]);
  116. if ($val->check($param) == false) return error($val->getError());
  117. $info=$this->model->findOrEmpty($param['id']);
  118. if($info->isEmpty()) return error("客户不存在");
  119. if($info->status==1) return error("客户已启用,不能修改");
  120. $member=[];
  121. if(!empty($param['customer_member'])){
  122. foreach ($param['customer_member'] as $key => $value) {
  123. $member[] = [
  124. "id"=>$value['id'] ?? null,
  125. 'commobile' => $value['commobile'] ?? '',
  126. 'contactor' => $value['contactor'] ?? '',
  127. 'position' => $value['position'] ?? '',
  128. 'wxaccount' => $value['wxaccount'] ?? '',
  129. 'qqaccount' => $value['qqaccount'] ?? '',
  130. 'email' => $value['email'] ?? '',
  131. 'comdepart' => $value['comdepart'] ?? '',
  132. 'status' => $value['status'] ?? '',
  133. 'createrid' => $this->uid,
  134. 'creater' => $this->uname,
  135. 'companyNo' => $info->companyNo,
  136. ];
  137. }
  138. }
  139. $info->companyName=$param['companyName'];
  140. $info->parent=$param['parent'];
  141. $info->branch=$param['branch'];
  142. $info->middle=$param['middle'];
  143. $info->area=$param['area'];
  144. $this->model->startTrans();
  145. try{
  146. $info->save();
  147. if(!empty($member)){
  148. $memberAdd= $this->model->member()->saveAll($member);
  149. if($memberAdd==false) return error("修改失败");
  150. }
  151. $info->updater = $this->uname;
  152. $info->updaterid = $this->uid;
  153. $heq=Headquarters::createInfo($info,2);
  154. if($heq==false) return error("修改失败");
  155. $this->model->commit();
  156. }catch (\Exception $e){
  157. $this->model->rollback();
  158. return error($e->getMessage());
  159. }
  160. return success("修改成功");
  161. }
  162. /**
  163. * @param id 主键id
  164. * @return \think\Response|\think\response\Json|void
  165. * @throws \think\exception\PDOException
  166. */
  167. public function delete(){
  168. $id=$this->request->param('id');
  169. if(empty($id)) return error("参数错误");
  170. $info=$this->model->findOrEmpty($id);
  171. if($info->isEmpty()) return error("客户不存在");
  172. if($info->status==1) return error("客户已启用,不能删除");
  173. $this->model->startTrans();
  174. try{
  175. $info->is_del=1;
  176. $del=$info->save();
  177. if($del==false) return error("删除失败");
  178. $delHq=Headquarters::where('code',$info->companyNo)->findOrEmpty();
  179. if($delHq->isEmpty()) return error("数据未找到");
  180. $delHq->is_del=1;
  181. $delHq->updater = $this->uname;
  182. $delHq->updaterid = $this->uid;
  183. $delHq->save();
  184. $this->model->commit();
  185. }catch (\Exception $e){
  186. $this->model->rollback();
  187. return error($e->getMessage());
  188. }
  189. return success("删除成功");
  190. }
  191. /**
  192. * @return \think\Response|\think\response\Json|void
  193. */
  194. public function info(){
  195. $id=$this->request->param('id');
  196. if(empty($id)) return error("参数错误");
  197. $info=$this->model->with(['member','parentInfo'])->findOrEmpty($id);
  198. if($info->isEmpty()) return error("客户不存在");
  199. return success("获取成功",$info);
  200. }
  201. /**
  202. * @param page 页码
  203. * @param size 页
  204. * companyName 客户名称
  205. * status 状态
  206. * createrId 创建人id
  207. * start 开始时间
  208. * end 结束时间
  209. * companyNo 公司编号
  210. * itemid 项目id
  211. * @return \think\Response|\think\response\Json|void
  212. */
  213. public function list(){
  214. $param=$this->request->param(["page"=>1,"size"=>10,"companyName"=>"","status"=>"","createrId"=>"","start"=>"",
  215. "companyNo"=>"","itemid"=>0,"end"=>""],"post","trim");
  216. $where= [["is_del","=",0]];
  217. if($param['companyName']!="") $where[]=["companyName","like","%".$param['companyName']."%"];
  218. if($param['status']!="") $where[]=["status","=",$param['status']];
  219. if($param['createrId']!="") $where[]=["createrid","=",$param['createrId']];
  220. if($param['start']!="")$where[]=["addtime",">=",startTime($param['start'])];
  221. if($param['end']!="")$where[]=["addtime","<=",endTime($param['end'])];
  222. if($param['companyNo']!="") $where[]=["companyNo","=",$param['companyNo']];
  223. if($param['itemid']!=0)$where[]=["itemid","=",$param['itemid']];
  224. $list=$this->model->with(["member","parentInfo"])
  225. ->where($where)
  226. ->order("id","desc")
  227. ->paginate(["list_rows"=>$param['size'],"page"=>$param['page']]);
  228. return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
  229. }
  230. /**
  231. * @param page 页码
  232. * companyNo 客户编号
  233. * status 状态
  234. * createrId 创建人id
  235. * start 开始时间
  236. * end 结束时间
  237. * @return \think\Response|\think\response\Json
  238. * @throws \think\exception\DbException
  239. */
  240. public function customerMember(){
  241. $param=$this->request->param(["page"=>1,"size"=>10,"companyNo"=>"","status"=>"","createrId"=>"","start"=>"",
  242. "end"=>""],"post","trim");
  243. $where= [["is_del","=",0]];
  244. if($param['companyNo']!="") $where[]=["companyNo","=",$param['companyNo']];
  245. if($param['status']!="") $where[]=["status","=",$param['status']];
  246. if($param['createrId']!="") $where[]=["createrid","=",$param['createrId']];
  247. if($param['start']!="")$where[]=["addtime",">=",startTime($param['start'])];
  248. if($param['end']!="")$where[]=["addtime","<=",endTime($param['end'])];
  249. $customerMember= new CustomerMember();
  250. $list=$customerMember->with(["customer"])
  251. ->where($where)
  252. ->order("id","desc")
  253. ->paginate(["list_rows"=>$param['size'],"page"=>$param['page']]);
  254. return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]);
  255. }
  256. /**
  257. * @return \think\Response|\think\response\Json|void
  258. */
  259. public function status(){
  260. $param=$this->request->param(['id','status'],"post","trim");
  261. $valid=Validate::rule([
  262. "id|主键id"=>"require|number|gt:0",
  263. "status|状态"=>"require|number|in:0,1"
  264. ]);
  265. if(!$valid->check($param)) return error($valid->getError());
  266. $info=$this->model->findOrEmpty($param['id']);
  267. if($info->isEmpty()) return error("客户不存在");
  268. $this->model->startTrans();
  269. try{
  270. $info->status=$param['status'];
  271. $save=$info->save();
  272. if($save==false) return error("修改失败");
  273. $saveHq=Headquarters::where('code',$info->companyNo)->findOrEmpty();
  274. if($saveHq->isEmpty()) return error("数据未找到");
  275. $saveHq->status=$param['status'];
  276. $saveHq->updater =$this->uname;
  277. $saveHq->updaterid =$this->uid;
  278. $saveHq->save();
  279. $this->model->commit();
  280. return success("修改成功");
  281. }catch (\Exception $e){
  282. $this->model->rollback();
  283. return error($e->getMessage());
  284. }
  285. }
  286. }