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" => "已经有同单位的人员在操作同一条记录,请稍候片刻"]);
- }
- }
- }
- }
|