Note.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <?php
  2. namespace app\bug\controller;
  3. use app\bug\model\Moudel;
  4. use app\user\model\Account;use think\facade\Db;
  5. use think\App;use think\facade\Validate;use think\helper\Str;
  6. class Note extends Base
  7. {
  8. // protected $noLogin=[];
  9. public function __construct(App $app)
  10. {
  11. parent::__construct($app);
  12. $this->model= new \app\bug\model\Note();
  13. }
  14. public function create(){
  15. $param = $this->request->param(["title"=>"","remark"=>"","company_type"=>"","model_id"=>[],"noteNo"=>"",
  16. "level"=>2,"weight"=>1,"type"=>2,"status"=>0,"submit"=>1],"post","trim");
  17. $valid =Validate::rule([
  18. "title|标题"=>"require|max:255",
  19. "remark|描述"=>"require|max:5000",
  20. "company_type|公司平台类别"=>"require|max:255",
  21. "model_id|模块分类"=>"require",
  22. ]);
  23. if($valid->check($param)==false)return error($valid->getError());
  24. $bugNo=makeNo("BG");
  25. $data=[
  26. "model_id"=>!empty($param['model_id']) ? array_pop($param['model_id']):"0",
  27. "bugNo"=>$bugNo,
  28. "noteNo"=>$param['noteNo'],
  29. "title"=>$param['title'],
  30. "remark"=>$param['remark'],
  31. "company_type"=>$param['company_type'],
  32. "apply_id"=>$this->uid,
  33. "apply_name"=>$this->uname,
  34. "updater"=>$this->uname,
  35. "updaterid"=>$this->uid,
  36. "level"=>$param['level'],
  37. "type"=>$param['type'],
  38. "submit"=>$param['submit'],
  39. "weight"=>$param['weight'],
  40. "status"=>$param['status']
  41. ];
  42. $create = \app\bug\model\Note::create($data);
  43. if($create->isEmpty()) return error("创建失败");
  44. return success("创建成功");
  45. }
  46. public function list(){
  47. $param = $this->request->param([
  48. 'bugNo'=>'','is_created'=>'','company_type'=>'','model_id'=>'','noteNo'=>'','page'=>1,'size'=>10,
  49. 'apply_name'=>'','type'=>'','status'=>'','start'=>'','end'=>'','level'=>'',"deal_name"=>"","title"=>""],
  50. 'post','trim');
  51. $where =[['is_del','=',0]];
  52. if($param['bugNo']!=""){
  53. $where[]=['bugNo',"like","%{$param['bugNo']}%"];
  54. }
  55. if($param['model_id']!=""){
  56. $where[]=['model_id',"=",$param['model_id']];
  57. }
  58. if($param['noteNo']!=""){
  59. $where[]=['noteNo',"like","%{$param['noteNo']}%"];
  60. }
  61. if($param['company_type']!=""){
  62. $where[]=['company_type',"=",$param['company_type']];
  63. }
  64. if($param['apply_name']!==""){
  65. $where[]=['apply_name',"like","%{$param['apply_name']}%"];
  66. }
  67. $status = $param['status'];
  68. if($status!==""){
  69. if($status<8){
  70. $where[]=['status',"=",$status];
  71. }elseif ($status==8){
  72. $where[]=['status',"<=",$status];
  73. $where[]=['status',"not in",[4,5]];
  74. }elseif ($status===9){
  75. }elseif ($status===10){
  76. $str = Db::name('deal')->where(['action_id'=>$this->uid,'is_del'=>0])->select()->toArray();
  77. $data =array_unique(array_column($str,'bugNo')) ;
  78. $where[]=['bugNo',"in",$data];
  79. }elseif ($status===11){
  80. $var = Db::name('deal')->where(['deal_id'=>$this->uid,'is_del'=>0,'status'=>0])->select()->toArray();
  81. $da =array_unique(array_column($var,'bugNo')) ;
  82. $where[]=['bugNo',"in",$da];
  83. }
  84. }
  85. if($param['is_created']==1){
  86. $where[]=['apply_id',"=",$this->uid];
  87. }
  88. if($param['start']!==""){
  89. $where[]=['addtime',">=",startTime($param['start'])];
  90. }
  91. if($param['end']!==""){
  92. $where[]=['addtime',"<",endTime($param['end'])];
  93. }
  94. if($param['title']!==""){
  95. $where[]=['title',"like","%{$param['title']}%"];
  96. }
  97. if($param['level']!==""){
  98. $where[]=['level','=',$param['level']];
  99. }
  100. if($param['type']!==""){
  101. $where[]=['type','=',$param['type']];
  102. }
  103. if ($param['deal_name']!==""){
  104. $item = \app\bug\model\Deal::where([["deal_name","like","%{$param['deal_name']}%"],["is_del","=",0],['status',"=",0]])
  105. ->select()
  106. ->toArray();
  107. $cn =array_unique(array_column($item,'bugNo'));
  108. $where[]=["bugNo","in",$cn];
  109. }
  110. $list = $this->model->where($where)->order('addtime desc')->paginate(["list_rows"=>$param['size'],
  111. "page"=>$param['page']]);
  112. $appLyid= array_column($list->items(),"apply_id");
  113. $bugArr= array_column($list->items(),"bugNo");
  114. $departByUid=(new \app\bug\model\DepartUser())->GetDepartNameByUid($appLyid);
  115. $dealArr = \app\bug\model\Deal::where([["bugNo","in",$bugArr],["status","=",0],["is_del","=",0]])->column
  116. ("deal_name","bugNo");
  117. foreach ($list->items() as &$value){
  118. $value['deal_name']=$dealArr[$value['bugNo']]??"";
  119. $value['can']=Moudel::GetModelByCid($value['model_id'],$value['company_type']);
  120. $value['company_name']=$departByUid[$value['apply_id']]??"";
  121. $data[]=$value;
  122. }
  123. return success("获取成功",['list'=>$list->items(),'count'=>$list->total()]);
  124. }
  125. public function edit(){
  126. $param = $this->request->param(["id"=>"",'title'=>'','remark'=>'','company_type'=>'','model_id'=>[],'noteNo'=>'',
  127. 'level'=>1,'weight'=>0,'type'=>0,'status'=>0,"deal_id"=>""],'post','trim');
  128. $valid =Validate::rule([
  129. 'id|标题Id'=>'require|number|gt:0',
  130. 'title|标题'=>'require|max:255',
  131. 'remark|描述'=>'require|max:5000',
  132. 'company_type|公司平台类别'=>'require|max:255',
  133. 'model_id|模块分类'=>'array',
  134. 'level|优先级'=>'require|number|in:1,2,3',
  135. 'type|问题类型'=>'require|number',
  136. ]);
  137. if($valid->check($param)==false)return error($valid->getError());
  138. $info=$this->model->where(['id'=>$param['id'],'is_del'=>0])->findOrEmpty();
  139. if($info->isEmpty())return error("未找到数据");
  140. $inf=\app\bug\model\Deal::where(['bugNo'=>$info['bugNo'],'status'=>0,"is_del"=>0])->findOrEmpty();
  141. $oldStatus=$info->status;
  142. $deal = Account::with(["user_info"])->where("id",$param['deal_id'])->findOrEmpty();
  143. $this->model->startTrans();
  144. try{
  145. $info->title= $param['title'];
  146. $info->noteNo= $param['noteNo'];
  147. $info->remark= $param['remark'];
  148. $info->model_id= !empty($param['model_id'])?array_pop( $param['model_id']):0;
  149. $info->company_type= $param['company_type'];
  150. $info->updater= $this->uname;
  151. $info->updaterid= $this->uid;
  152. $info->level= $param['level'];
  153. $info->type= $param['type'];
  154. $info->weight= $param['weight'];
  155. $info->status= $param['status'];
  156. $datainfo =$info->save();
  157. if($datainfo){
  158. $inf->action_id=$this->uid;
  159. $inf->action_name=$this->uname;
  160. $inf->deal_id=$param['deal_id'];
  161. $inf->deal_name=$deal->nickname??"";
  162. $inf->bugNo=$info->bugNo;
  163. $info->level= 1;
  164. $info->type= 1;
  165. $inf->status=$oldStatus!=$param['status']?1:0;
  166. $dc = $inf->save();
  167. if($dc==false)throw new \Exception("更新失败");
  168. }else throw new \Exception('更新失败');
  169. $this->model->commit();
  170. return success("更新成功");
  171. }catch (\Exception $e){
  172. $this->model->rollback();
  173. return error($e->getMessage());
  174. }
  175. }
  176. public function info(){
  177. $id=$this->request->post("id/d");
  178. $info = $this->model->where(['id'=>$id,'is_del'=>0])->findOrEmpty();
  179. $departByUid=(new \app\bug\model\DepartUser())->GetDepartNameByUid($info->apply_id);
  180. $item = \app\bug\model\Deal::where(['bugNo'=>$info['bugNo'],'is_del'=>0,'status'=>0])->findOrEmpty();
  181. $info['deal_id']=isset($item['deal_id']) ? $item['deal_id']:"";
  182. $info['deal_name']=isset($item['deal_name']) ? $item['deal_name']:"";
  183. $info['can']=Moudel::GetModelByCid($info['model_id'],$info['company_type']);
  184. $info['company_name']=$departByUid[$info->apply_id]??"";
  185. $info['model_id']=array_column($info['can'],"id");
  186. if($info->isEmpty()) return error("未找到数据");
  187. return success("获取成功",$info);
  188. }
  189. public function del(){
  190. $id=$this->request->post('id/d');
  191. $info = $this->model->where(['id'=>$id,'is_del'=>0])->findOrEmpty();
  192. if($info->isEmpty()) return error('未找到数据');
  193. $info->is_del=1;
  194. $del=$info->save();
  195. return $del ? success("删除成功") :error("删除失败");
  196. }
  197. }