post; $type = isset($post['type'])&& $post['type']!="" ? intval($post['type']) :""; if($type==''){ return error_show(1004,"参数 type 不能未空"); } if($post['relaComNo']!=""){ $companyNo = isset($post['relaComNo'])&& $post['relaComNo']!="" ? trim($post['relaComNo']) :""; }else{ $companyNo = isset($post['companyNo'])&& $post['companyNo']!="" ? trim($post['companyNo']) :""; } if($companyNo==''){ return error_show(1004,"参数 companyNo 不能未空"); } $tagName =isset($post['tag_name'])&&$post['tag_name']!='' ? trim($post['tag_name']):""; if($tagName==''){ return error_show(1004,"参数 tag_name 不能未空"); } $isT =Db::name("order_tag")->where(["type"=>$type,"companyNo"=>$companyNo,"tag_name"=>$tagName,"is_del"=>0]) ->findOrEmpty(); if(!empty($isT)){ return error_show(1004,"标签名称已存在"); } $tagData=[ "type"=>$type, "tag_name"=>$tagName, "status"=>1, "companyNo"=>$companyNo, "apply_id"=>$this->uid, "apply_name"=>$this->uname, "addtime"=>date("Y-m-d H:i:s"), "updatetime"=>date("Y-m-d H:i:s") ]; $ins=Db::name("order_tag")->insert($tagData); return $ins?app_show(0,"标签新建成功"): error_show(1004,"标签新建失败"); } //标签列表翻页 public function list(){ $page = isset($this->post['page'])&&$this->post['page']!=''?intval($this->post['page']):1; $size = isset($this->post['size'])&&$this->post['size']!=''?intval($this->post['size']):15; $type = isset($this->post['type'])&&$this->post['type']!=''?intval($this->post['type']):''; $status = isset($this->post['status'])&&$this->post['status']!==''?intval($this->post['status']):''; if($this->post['relaComNo']!=""){ $companyNo = isset($this->post['relaComNo'])&& $this->post['relaComNo']!="" ? trim($this->post['relaComNo']) :""; }else{ $companyNo = isset($this->post['companyNo'])&& $this->post['companyNo']!="" ? trim($this->post['companyNo']) :""; } $condition =[["is_del","=",0]]; if($type!=''){ $condition[]=["type","=",$type]; } if($status!==''){ $condition[]=["status","=",$status]; } $tagName =isset($this->post['tag_name'])&&$this->post['tag_name']!='' ? trim($this->post['tag_name']):""; if($tagName!=''){ $condition[]=["tag_name","like","%$tagName%"]; } if($companyNo!=''){ $condition[]=["companyNo","=",$companyNo]; } $count =Db::name("order_tag")->where($condition)->count(); $total=ceil($count/$size); $page = $page>=$total ? intval($total):$page; $list =Db::name("order_tag")->where($condition)->page($page,$size)->order("addtime desc")->select()->toArray(); $comNo=array_column($list,"companyNo"); $ComArr=Db::name("supplier_info")->where(["code"=>$comNo])->column("name","code"); foreach ($list as &$item){ $item['companyName']=$ComArr[$item['companyNo']]??""; } return app_show(0,"获取成功",["list"=>$list,"count"=>$count]); } //根据条件筛选合适的标签数据 public function query(){ $type = isset($this->post['type'])&&$this->post['type']!=''?intval($this->post['type']):''; $condition =[["is_del","=",0]]; if($type!=''){ $condition[]=["type","=",$type]; } if($this->post['relaComNo']!=""){ $companyNo = isset($this->post['relaComNo'])&& $this->post['relaComNo']!="" ? trim($this->post['relaComNo']) :""; }else{ $companyNo = isset($this->post['companyNo'])&& $this->post['companyNo']!="" ? trim($this->post['companyNo']) :""; } if($companyNo!=''){ $condition[]=["companyNo","=",$companyNo]; } $tagName =isset($this->post['tag_name'])&&$this->post['tag_name']!='' ? trim($this->post['tag_name']):""; if($tagName!=''){ $condition[]=["tag_name","like","%$tagName%"]; } $status = isset($this->post['status'])&&$this->post['status']!==''?intval($this->post['status']):''; if($status!==''){ $condition[]=["status","=",$status]; } $list =Db::name("order_tag")->where($condition)->order("addtime desc")->select()->toArray(); return app_show(0,"获取成功",$list); } //启禁用状态 public function status(){ $id =isset($this->post['id'])&&$this->post['id']!=''?intval($this->post['id']):''; if($id==''){ return error_show(1004,"参数 id 不能为空"); } $taginfo =Db::name("order_tag")->find(["id"=>$id]); if($taginfo==false){ return error_show(1004,"标签数据不存在"); } $status=isset($this->post['status'])&&$this->post['status']!==''?intval($this->post['status']):''; if($status===''){ return error_show(1004,"参数 status 不能为空"); } $update =["status"=>$status,"updatetime"=>date("Y-m-d H:i:s")]; $up =Db::name("order_tag")->where($taginfo)->update($update); return $up?app_show(0,"标签更新成功"): error_show(1004,"标签更新失败"); } //编辑标签名称类型数据 public function save(){ $id =isset($this->post['id'])&&$this->post['id']!=''?intval($this->post['id']):''; if($id==''){ return error_show(1004,"参数 id 不能为空"); } $taginfo =Db::name("order_tag")->where(["id"=>$id,"is_del"=>0])->find(); if($taginfo==false){ return error_show(1004,"标签数据不存在"); } $tagName=isset($this->post['tag_name'])&&$this->post['tag_name']!=''?trim($this->post['tag_name']):''; if($tagName===''){ return error_show(1004,"参数 tag_name 不能为空"); } $type=isset($this->post['type'])&&$this->post['type']!=''?intval($this->post['type']):''; if($type==''){ return error_show(1004,"参数 type 不能为空"); } // if($this->post['relaComNo']!=""){ // $companyNo = isset($this->post['relaComNo'])&& $this->post['relaComNo']!="" ? trim($this->post['relaComNo']) :""; // }else{ // $companyNo = isset($this->post['companyNo'])&& $this->post['companyNo']!="" ? trim($this->post['companyNo']) :""; // } // if($companyNo==''){ // return error_show(1004,"参数 companyNo 不能为空"); // } $tag =Db::name("order_tag")->where([['tag_name',"=",$tagName],['companyNo',"=",$taginfo['companyNo']], ['type',"=",$type], ["id","<>",$id],["is_del","=",0]])->find(); if($tag!=false){ return error_show(1004,"标签名称已存在"); } $update =["type"=>$type,"tag_name"=>$tagName,"updatetime"=>date("Y-m-d H:i:s")]; $up =Db::name("order_tag")->where($taginfo)->update($update); return $up?app_show(0,"标签更新成功"): error_show(1004,"标签更新失败"); } //删除标签 public function delete(){ $id =isset($this->post['id'])&&$this->post['id']!=''?intval($this->post['id']):''; if($id==''){ return error_show(1004,"参数 id 不能为空"); } $taginfo =Db::name("order_tag")->find(["id"=>$id]); if($taginfo==false){ return error_show(1004,"标签数据不存在"); } $update=["is_del"=>1,"updatetime"=>date("Y-m-d H:i:s")]; $up =Db::name("order_tag")->where($taginfo)->update($update); return $up?app_show(0,"标签删除成功"): error_show(1004,"标签删除失败"); } //单号添加标签 public function AddTag(){ $tagid =isset($this->post["tag_id"]) && $this->post["tag_id"]!=""?intval($this->post["tag_id"]) :""; if($tagid==""){ return error_show(1004,"参数 tag_id 不能为空"); } $taginfo =Db::name("order_tag")->where(["id"=>$tagid,"is_del"=>0])->find(); if($taginfo==false){ return error_show(1005,"标签数据不存在"); } if($taginfo['status']==0){ return error_show(1005,"标签已禁用"); } $code =isset($this->post['code']) &&$this->post["code"]!="" ? trim($this->post["code"]):""; if($code==''){ return error_show(1004,"参数 code 不能为空"); } $taglog =Db::name("tag_log")->where(["tag_id"=>$tagid,"code"=>$code,"status"=>1])->findOrEmpty(); $total_fee =isset($this->post['total_fee']) &&$this->post["total_fee"]!=="" ? floatval($this->post["total_fee"]):""; if($total_fee==''){ return error_show(1004,"参数 total_fee 不能为空"); } $tagimg=isset($this->post["tag_img"]) && $this->post["tag_img"]!=""?$this->post["tag_img"]:""; $tag_remark=isset($this->post["tag_remark"]) && $this->post["tag_remark"]!=""?$this->post["tag_remark"]:""; Db::startTrans(); try{ if(!empty($taglog)){ $up = Db::name("tag_log")->where($taglog)->update(["status"=>0,"updatetime"=>date("Y-m-d H:i:s")]); if($up==false){ Db::rollback(); return error_show(1004,"标签日志新建失败"); } } if($taginfo['type']==1 || $taginfo['type']==2){ $result= $this->payTag($taginfo['type'],$code,$total_fee); } if($taginfo['type']==3|| $taginfo['type']==4){ $result= $this->qrdTag($taginfo['type'],$code,$total_fee); } $tagdata=[ "code"=>$code, "tag_id"=>$tagid, "creater"=>$this->uname, "createrid"=>$this->uid, "tag_fee"=>$total_fee, "tag_img"=>$tagimg, "tag_remark"=>$tag_remark, "status"=>1, "addtime"=>date("Y-m-d H:i:s"), "updatetime"=>date("Y-m-d H:i:s") ]; $in =Db::name("tag_log")->insert($tagdata); if($in==false){ Db::rollback(); return error_show(1004,"标签日志新建失败"); } $data =$result->getData(); if($data['code']==0){ Db::commit(); return app_show(0,"标签添加成功"); } Db::rollback(); return error_show($data['code'],$data['message']); }catch (\Exception $e){ Db::rollback(); return error_show(1004,$e->getMessage()); } } /** * @param $tagId 标签类型 1 付款2回票 * @param $code 对账单编号 * @param $total_fee 标签金额 * @return \think\response\Json|void * @throws \think\db\exception\DbException */ private function payTag($tagId,$code,$total_fee){ $pay=Db::name("pay")->where(["payNo"=>$code,"is_del"=>0])->findOrEmpty(); if(empty($pay)){ return error_show(1004,"未找到对账单数据"); } $update=["updatetime"=>date("Y-m-d H:i:s")]; if($tagId==1){ if($pay['wpay_fee']+$pay['pay_tag_fee']<$total_fee){ return error_show(1004,"对账单未付金额不足"); } $update['wpay_fee']=$pay['wpay_fee']+$pay['pay_tag_fee']-$total_fee; $status = $update['wpay_fee']==0 &&$pay['pay_fee']==0 ? 3:($pay['apay_fee']==0?1:2); $update['pay_tag_fee'] = $total_fee; $update['pay_status'] = $status; $update['pay_tag'] = 1; } if($tagId==2){ if($pay['winv_fee']+$pay['inv_tag_fee']<$total_fee){ return error_show(1004,"对账单未付金额不足"); } $update['winv_fee']=$pay['winv_fee']+$pay['inv_tag_fee']-$total_fee; $status = $update['winv_fee']==0 &&$pay['inv_fee']==0 ? 3:($pay['ainv_fee']==0?1:2); $update['inv_tag_fee'] = $total_fee; $update['inv_status'] = $status; $update['inv_tag'] = 1; } $resulr= Db::name("pay")->where($pay)->update($update); return $resulr? app_show(0,"标签添加成功"):error_show(1004,"标签添加失败"); } /** * @param $tagId 标签类型 3 回款4开票 * @param $code 销售单编号 * @param $total_fee 标签金额 * @return \think\response\Json|void * @throws \think\db\exception\DbException */ private function qrdTag($tagId,$code,$total_fee){ $qrd=Db::name("qrd_info")->where(["sequenceNo"=>$code,"is_del"=>0])->findOrEmpty(); if(empty($qrd)){ return error_show(1004,"未找到销售单数据"); } $update=["updatetime"=>date("Y-m-d H:i:s")]; if($tagId==3){ if($qrd['wpay_fee']+$qrd['pay_tag_fee']<$total_fee){ return error_show(1004,"对账单未付金额不足"); } $update['wpay_fee']=$qrd['wpay_fee']+$qrd['pay_tag_fee']-$total_fee; $status = $update['wpay_fee']==0 &&$qrd['pay_fee']==0 ? 3:($qrd['apay_fee']==0?1:2); $update['pay_tag_fee'] = $total_fee; $update['pay_status'] = $status; $update['pay_tag'] = 1; } if($tagId==4){ if($qrd['winv_fee']+$qrd['inv_tag_fee']<$total_fee){ return error_show(1004,"对账单未付金额不足"); } $update['winv_fee']=$qrd['winv_fee']+$qrd['inv_tag_fee']-$total_fee; $status = $update['winv_fee']==0 &&$qrd['inv_fee']==0 ? 3:($qrd['ainv_fee']==0?1:2); $update['inv_tag_fee'] = $total_fee; $update['inv_status'] = $status; $update['inv_tag'] = 1; } $resulr= Db::name("qrd_info")->where($qrd)->update($update); return $resulr? app_show(0,"标签添加成功"):error_show(1004,"标签添加失败"); } }