| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 | <?php/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */namespace app\admin\controller;use app\admin\common\AdminController;use think\facade\Db;/** * Description of Policy * * @author sgq */class Policy extends AdminController {    protected $companyId;    public function __construct(\think\App $app) {        parent::__construct($app);        $this->companyId = $this->user["companyId"];        echo "政策录入已经结束";        exit();    }    public function index() {        $company = \app\common\api\CompanyApi::getOne($this->companyId);        $tmps = Db::table("new_policy_tmp")->where("companyId", "=", $this->companyId)->column("files", "policyId");        $policyIds = array_keys($tmps);        $policys = Db::table("new_policy")->order("level asc")->select()->toArray();        foreach ($policys as $key => $policy) {            if (in_array($policy["id"], $policyIds)) {                $policys[$key]["checked"] = true;            }            $policys[$key]["files"] = $tmps[$policy["id"]];        }        return view("", ["company" => $company, "policys" => $policys]);    }    public function submit() {        if ($this->request->isPost()) {            $datas = $this->request["data"];            $success = 0;            $error = 0;            foreach ($datas as $key => $data) {                $policyId = $data["id"];                $uniqueId = sprintf("%s_%s", $policyId, $this->companyId);                $record = Db::table("new_policy_tmp")->where("id", "=", $uniqueId)->findOrEmpty();                if ($data["checked"] == 1) {                    //需要本单位审核                    $save["id"] = $uniqueId;                    $save["companyId"] = $this->companyId;                    $save["policyId"] = $policyId;                    $save["files"] = $data["files"];                    if ($record) {                        $save["updateUser"] = $this->user["uid"];                        $save["updateTime"] = date("Y-m-d H:i:s");                        if (Db::table("new_policy_tmp")->update($save)) {                            $success++;                        } else {                            $error++;                        }                    } else {                        $save["createUser"] = $this->user["uid"];                        $save["createTime"] = date("Y-m-d H:i:s");                        if (Db::table("new_policy_tmp")->insert($save)) {                            $success++;                        } else {                            $error++;                        }                    }                } else {                    //取消本单位审核                    if ($record) {                        if (Db::table("new_policy_tmp")->delete($uniqueId)) {                            $success++;                        } else {                            $error++;                        }                    } else {                        $success++;                    }                }            }            return json(["msg" => sprintf("共处理{%d}条审核单位设置,成功{%d}条,失败{%d}条", count($datas), $success, $error)]);        }    }    public function checked() {        if ($this->request->isPost()) {            $policyId = $this->request->param("id");            $uniqueId = sprintf("%s_%s", $policyId, $this->companyId);            $checked = $this->request->param("checked") ?: 1;            $lockFileName = sprintf("storage/policy_logs/%s.lock", $uniqueId);            if (!file_exists("storage/policy_logs")) {                mkdir("storage/policy_logs");            }            $lockFile = fopen($lockFileName, "a");            if (flock($lockFile, LOCK_EX | LOCK_NB)) {//文件锁(独占)                try {                    $record = Db::table("new_policy_tmp")->where("id", "=", $uniqueId)->findOrEmpty();                    if ($checked == 1) {                        //需要本单位审核                        if ($record) {                            $log = sprintf("[%s][account:%s][ERR]Already checked!", date("Y-m-d H:i:s"), $this->user["account"]);                            fwrite($lockFile, $log . "\n");                            return json(["msg" => "已经添加审核,不需要重复添加"]);                        } else {                            $data["id"] = $uniqueId;                            $data["companyId"] = $this->companyId;                            $data["policyId"] = $policyId;                            $data["createUser"] = $this->user["uid"];                            $data["createTime"] = date("Y-m-d H:i:s");                            if (Db::table("new_policy_tmp")->insert($data)) {                                $log = sprintf("[%s][account:%s][INFO]Checked!", date("Y-m-d H:i:s"), $this->user["account"]);                                fwrite($lockFile, $log . "\n");                                return json(["msg" => "添加审核成功", "code" => 200]);                            } else {                                $log = sprintf("[%s][account:%s][ERR]Check failure!", date("Y-m-d H:i:s"), $this->user["account"]);                                fwrite($lockFile, $log . "\n");                                return json(["msg" => "添加审核失败"]);                            }                        }                    } else {                        //取消本单位审核                        if ($record) {                            if (Db::table("new_policy_tmp")->delete($uniqueId)) {                                $log = sprintf("[%s][account:%s][INFO]Deleted!", date("Y-m-d H:i:s"), $this->user["account"]);                                fwrite($lockFile, $log . "\n");                                return json(["msg" => "取消审核成功", "code" => 200]);                            } else {                                $log = sprintf("[%s][account:%s][ERR]Delete failure!", date("Y-m-d H:i:s"), $this->user["account"]);                                fwrite($lockFile, $log . "\n");                                return json(["msg" => "取消审核失败"]);                            }                        } else {                            $log = sprintf("[%s][account:%s][ERR]Already deleted!", date("Y-m-d H:i:s"), $this->user["account"]);                            fwrite($lockFile, $log . "\n");                            return json(["msg" => "已经取消审核,不需要重复取消"]);                        }                    }                } catch (\Exception $e) {                    $log = sprintf("[%s][account:%s][ERR]%s", date("Y-m-d H:i:s"), $this->user["account"], $e->getMessage());                    fwrite($lockFile, $log . "\n");                    return json(["msg" => $e->getMessage()]);                } finally {                    flock($lockFile, LOCK_UN);                }            } else {                return json(["msg" => "已经有同单位的人员在操作同一条记录,请稍候片刻"]);            }        }    }}
 |