dao = $dao; } /** * Common: 公共查询模型 * Author: wu-hui * Time: 2024/03/02 14:17 * @param $search * @return \app\common\model\user\UserVipExchangeCode */ public function getSearchModel($search){ return $this->dao->searchList($search); } /** * Common: 获取信息列表 * Author: wu-hui * Time: 2024/03/02 14:18 * @param array $params * @param int $page * @param int $limit * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getList(array $params,int $page,int $limit):array{ $query = $this->dao->searchList($params); $count = $query->count(); $list = $query->page($page,$limit)->select()->toArray(); return compact('count','list'); } /** * Common: 生成创建表单数据 * Author: wu-hui * Time: 2024/03/02 11:38 * @return \FormBuilder\Form * @throws \FormBuilder\Exception\FormBuilderException */ public function getEditFormData():\FormBuilder\Form{ $formData = []; $url = Route::buildUrl('systemUserVipExchangeCodeEditInfo')->build(); $form = Elm::createForm($url); $rules = [ Elm::input('batch_title','当前批次名称')->required()->col(16), Elm::input('create_num','生成数量')->required()->col(16) ->type('number') ->min('1') ->max('999999') ->step('1'), ]; $form->setRule($rules); return $form->setTitle( '添加兑换码')->formData($formData); } /** * Common: 兑换码生成 * Author: wu-hui * Time: 2024/03/02 13:52 * @param $params * @return int */ public function createExchangeCode($params){ // 是否允许生成兑换码 if($params['create_num'] <= 0) throw new ValidateException('生成数量必须大于0'); $isHas = (int)$this->dao->getSearch(['batch_title'=>$params['batch_title']])->value('id'); if($isHas > 0) throw new ValidateException('名称已经存在,请更换名称!'); // 生成操作 $initial = substr(getFirstCharter($params['batch_title']), 0, 1); $batchUnique = strtoupper(uniqid($initial));// 批次唯一编号 $insertData = []; for($i = 0; count($insertData) < $params['create_num']; $i++){ // 兑换码生成 $exchangeCode = strtoupper($initial . substr(uniqid(), -8)); if(!in_array($exchangeCode, array_column($insertData,'exchange_code'))){ $insertData[] = [ 'batch_title' => $params['batch_title'], 'batch_unique' => $batchUnique, 'exchange_code' => strtoupper($initial . substr(uniqid(), -8)), ]; } } return $this->dao->insertAll($insertData); } }