leftJoin("new_integral_project p", "p.id=i.projectId")->field("i.*,p.type,if(stepNeedAmount > 0,if(stepIsYear=1,3,2),1) as plan")->findOrEmpty($id); } public static function getList($params) { $order = $params["order"] ?: "desc"; $offset = $params["offset"] ?: 0; $limit = $params["limit"] ?: 10; $where[] = ["i.delete", "=", 0]; if ($params["type"]) { $where[] = ["p.type", "=", $params["type"]]; } if ($params["name"]) { $where[] = ["i.name", "like", "%{$params["name"]}%"]; } if ($params["projectType"]) { $where[] = ["p.projectType", "=", $params["projectType"]]; } if ($params["active"]) { $where[] = ["i.active", "=", $params["active"]]; } $count = IntegralItem::alias("i")->leftJoin("new_integral_project p", "p.id=i.projectId")->where($where)->count(); $list = IntegralItem::alias("i")->leftJoin("new_integral_project p", "p.id=i.projectId")->where($where) ->field("i.*,p.type,p.name as projectName,p.projectType,if(i.updateTime is null,i.createTime,i.updateTime) as orderTime") ->limit($offset, $limit)->order("orderTime desc")->select()->toArray(); return ["total" => $count, "rows" => $list]; } public static function getAll($where = []) { $where[] = ["delete", "=", 0]; $list = IntegralItem::where($where)->field("*,if(updateTime is null,createTime,updateTime) as orderTime")->order("orderTime desc")->select()->toArray(); return $list; } public static function edit($params) { $model = new IntegralItem(); $data["projectId"] = $params["projectId"]; $data["name"] = $params["name"]; $data["unit"] = $params["unit"]; $data["fstNeedAmount"] = $params["fstNeedAmount"]; $data["fstGainPoints"] = $params["fstGainPoints"]; $data["fileTypeId"] = $params["fileTypeId"] ? implode(",", $params["fileTypeId"]) : null; $data["active"] = $params["active"]; $data["stepIsYear"] = 0; //通用,可以当作较上次新增 if (in_array($params["plan"], [2, 3])) { $data["stepNeedAmount"] = $params["stepNeedAmount"]; $data["stepGainPoints"] = $params["stepGainPoints"]; if ($params["plan"] == 3) { $data["stepIsYear"] = 1; //较上年度新增 } } else { $data["stepNeedAmount"] = 0; $data["stepGainPoints"] = 0; } $data["limit"] = $params["limit"]; if ($data["limit"] == 1) { $data["yearly"] = $params["yearly"]; $data["max"] = $params["max"]; } else { $data["yearly"] = 0; $data["max"] = 0; } if ($params["id"]) { $item = $model->find($params["id"]); $data["updateTime"] = date("Y-m-d H:i:s"); $data["updateUser"] = session("user")["uid"]; return $item->save($data); } else { $data["createTime"] = date("Y-m-d H:i:s"); $data["createUser"] = session("user")["uid"]; return $model->save($data); } } public static function delete($id) { $data["id"] = $id; $data["delete"] = 1; $data["updateUser"] = session("user")["uid"]; $data["updateTime"] = date("Y-m-d H:i:s"); return IntegralItem::update($data); } public static function chkExist($name, $projectId, $id = 0) { $where = []; $where[] = ["projectId", "=", $projectId]; $where[] = ["name", "=", $name]; $where[] = ["delete", "=", 0]; if ($id) { $where[] = ["id", "<>", $id]; } return IntegralItem::where($where)->find(); } }