model = new Test(); } // 添加 public function add(array $data) { $list = []; for ($x=0; $x<$data['nums']; $x++) { $item=[ "state"=>0, "number"=>$this->generateOrderNumber(), "code"=>$this->generateActivationCode(18), "type"=>intval($data['type']) ]; array_push($list,$item); } return $this->model->saveAll($list); } // 获取列表 public function get(array $where = []) { $search_model = $this->model->withSearch(['number','create_time','state'],$where)->order('create_time desc'); return $this->pageQuery($search_model); } // 删除 public function del(int $id) { return $this->model->find($id)->delete(); } // 生成订单号 function generateOrderNumber() { $microtime = microtime(true); $microtimeStr = str_replace('.', '', (string)$microtime); // 移除小数点 $uniqidPart = substr(uniqid(), -8); // 或者 substr(uniqid(), 7, 8) 去除前缀 return date('Ymd') . substr($microtimeStr, -6) . $uniqidPart; } // 生成激活码 // 使用 uniqid() 函数结合微秒时间戳获取基础唯一标识符 function generateActivationCode($length = 32) { $uniqidPart = bin2hex(openssl_random_pseudo_bytes(16)); // 或者使用 uniqid('', true) // 可选:添加额外的安全性,如用户ID或其它上下文信息(如果适用) // $userId = get_current_user_id(); // 假设这是一个获取当前用户ID的方法 // $contextInfo = hash('sha256', $userId . time()); // $activationBase = $uniqidPart . $contextInfo; // 直接使用 uniqidPart $activationBase = $uniqidPart; // 使用安全的哈希函数进一步处理,例如 SHA-256 $activationCode = hash('sha256', $activationBase); // 如果需要特定长度的激活码,可以截取哈希值的一部分或者用更短的哈希函数 if ($length > 0 && $length < strlen($activationCode)) { $activationCode = substr($activationCode, 0, $length); } return strtoupper($activationCode); // 返回大写字符串形式的激活码 } }