getFind([ 'id' => $param['id'] ], "storeids as store_id_str,coupon_gradeid as grade_id_str,coupon_name"); break; case 2: //券包 $PackageCouponModel = new RetailMCouponGroupModel(); $info = $PackageCouponModel->getFind([ 'id' => $param['id'] ], "storeids as store_id_str,gradeids as grade_id_str,coupon_group_name as coupon_name"); break; } if (empty($info)) { return callBack(statusCode()['error'], '未找到该券'); } //门店 if ($info['store_id_str'] != '0') { $StoreClass = new Store(); $storeResult = $StoreClass->storeNameList([ 'store_id_gather' => $info['store_id_str'] ]); $store_list = $storeResult['data']['list']; } else { $store_list = ['0' => '所有门店']; } //获取等级 if ($info['grade_id_str'] == '-1') { // 指定plus $grade_list = ['0' => 'plus专属']; } else if ($info['grade_id_str'] == '0') { // 所有会员等级 $grade_list = ['0' => '所有等级']; } else { $VipIntegralModel = new RetailVipIntegralModel(); $grade_list = $VipIntegralModel->getFindField([ 'id' => ['in', $info['grade_id_str']], 'merchantid' => $param['merchant_id'] ], 'cardname', true); } return callBack(statusCode()['success'], "查询成功", [ 'store_list' => $store_list, 'grade_list' => $grade_list, 'coupon_name' => $info['coupon_name'] ]); } /** * @param $param * [ * user_type 3商户 4门店 * merchant_id * coupon_type 1优惠券 2券包 * id 优惠券或券包id * search_info 搜索内容 * page * limit * ] * @return mixed */ public function getAppointVipList($param) { if (!in_array($param['coupon_type'], ['1', '2'])) { return callBack(statusCode()['error'], '请输入券类型'); } if (empty($param['id'])) { return callBack(statusCode()['error'], "缺少券ID"); } switch ($param['coupon_type']) { case 1: //优惠券 $CouponModel = new RetailMCouponModel(); $info = $CouponModel->getFind([ 'id' => $param['id'] ], "id,coupon_name,storeids as store_id_str,coupon_gradeid as grade_id_str"); break; case 2: //券包 $PackageCouponModel = new RetailMCouponGroupModel(); $info = $PackageCouponModel->getFind([ 'id' => $param['id'] ], "id,coupon_group_name as coupon_name,storeids as store_id_str,gradeids as grade_id_str"); break; } if (empty($info)) { return callBack(statusCode()['error'], '未找到该券'); } if ($info['grade_id_str'] == '-1') { $fields = [ 'v.id,v.storeid,v.mobile_phone,v.balance,v.name,v.nickname,v.integral,v.card_key,v.grade_integral,v.plus_type,v.plus_state' ]; } else { $fields = [ 'id,storeid,mobile_phone,balance,name,nickname,integral,card_key,grade_integral,plus_type,plus_state' ]; } $VipInfoClass = new VipInfo(); $vipResult = $VipInfoClass->basisStoreGetVip([ 'user_type' => $param['user_type'], 'merchant_id' => $param['merchant_id'], 'store_id_str' => $info['store_id_str'], 'grade_id_str' => $info['grade_id_str'], 'search_info' => $param['search_info'], 'fields' => $fields, 'need_count' => 1, 'page' => $param['page'], 'limit' => $param['limit'] ]); if ($vipResult['status'] != 1) { return $vipResult; } $vip_list = $vipResult['data']['vip_id_arr']; $count = $vipResult['data']['count']; if (!empty($vip_list)) { $StoreModel = new RetailStoreModel(); foreach ($vip_list as $key => &$value) { $value['store_name'] = $StoreModel->getFindField([ 'id' => $value['storeid'] ], 'storetag'); $name = $value['name'] ? $value['name'] : '未设置'; $nickname = $value['nickname'] ? $value['nickname'] : '未设置'; $value['user_name'] = $name . '|' . $nickname; $value['card_key'] = !$value['card_key'] || $value['card_key'] == 0 || $value['card_key'] == '0' ? '暂无' : $value['card_key']; $value['balance'] = $value['balance'] > 0 ? $value['balance'] : 0; $value['integral'] = $value['integral'] > 0 ? $value['integral'] : 0; if ($value['plus_type'] == 2) { // plus会员 $value['vip_grade_name'] = 'Plus会员'; } else { $value['vip_grade_name'] = '常规会员'; } } } return callBack(statusCode()['success'], "查询成功", [ 'list' => $vip_list, 'count' => $count ]); } /** * 券包详情 * @param $param * [ * id 券包id * merchant_id * ] * @return mixed */ public function couponPackageInfo($param) { if (empty($param['id'])) { return callBack(statusCode()['error'], "缺少券包id"); } try { $CouponPackageModel = new RetailMCouponGroupModel(); $CouponModel = new RetailMCouponModel(); $info = $CouponPackageModel->getFind(['id' => $param['id']]); if (empty($info)) { return callBack(statusCode()['error'], "未找到该券包"); } $coupon = [ 'coupon_name' => $info['coupon_group_name'], 'coupon_amount' => $info['coupon_group_allnum'], 'coupon_group_money' => $info['coupon_group_money'], 'grant_type' => $info['give_status'], 'choose_store' => $info['storeids'] == '0' ? '0' : '1', 'store_id_arr' => $info['storeids'] ]; if ($info['gradeids'] == '0' || $info['gradeids'] == '-1') { $coupon['choose_grade'] = $info['gradeids']; } else { $coupon['choose_grade'] = '1'; $coupon['vip_grade_id'] = $info['gradeids']; } $coupon_list = $CouponModel->getSelect([ 'type' => 2, 'mcoupon_group_id' => $param['id'], 'status' => ['neq', 3] ], 'id,coupon_name,needmoney,reducemoney,daynum,starttime,endtime,detailmsg,coupontype,appoint_type,appoint_id_str', 'id asc'); if (!empty($coupon_list)) { $Classify = new GoodsClassify(); $SaleClass = new SaleGoods(); $coupon_list_new = []; foreach ($coupon_list as $key => $value) { $coupon_list_new[$key]['id'] = $value['id']; if ($value['coupontype'] == 1) { $coupon_list_new[$key]['start_time'] = date('Y-m-d H:i:s', $value['starttime']); $coupon_list_new[$key]['end_time'] = date('Y-m-d H:i:s', $value['endtime']); } $coupon_list_new[$key]['validity_time_type'] = $value['coupontype']; $coupon_list_new[$key]['consumption_threshold'] = $value['needmoney']; $coupon_list_new[$key]['discount_amount'] = $value['reducemoney']; $coupon_list_new[$key]['explain'] = $value['detailmsg']; $coupon_list_new[$key]['appoint_type'] = $value['appoint_type']; $coupon_list_new[$key]['day_num'] = $value['daynum']; $coupon_list_new[$key]['coupon_name'] = $value['coupon_name']; if ($value['appoint_type'] == 2) { //指定分类 $coupon_list_new[$key]['class_list'] = $Classify->appointClass([ 'merchant_id' => $info['merchantid'], 'store_id' => $info['storeids'], 'class_id_str' => $value['appoint_id_str'] ]); } else if ($value['appoint_type'] == 3) { //指定商品 $coupon_list_new[$key]['goods_list'] = $SaleClass->appointGoodsList($value['appoint_id_str']); } $coupon_list_new[$key]['appoint_id_arr'] = $value['appoint_id_str']; } } $coupon['coupon_list'] = $coupon_list_new ? $coupon_list_new : []; return callBack(statusCode()['success'], "查询成功", $coupon); } catch (\Exception $e) { return callBack(statusCode()['error'], "查询失败"); } } /** * 优惠券发放记录 * @param $param * [ * user_type 3商户 4门店 * merchant_id * store_id * type 1单张优惠券 2券包 * id 券id * search_info=>[ * search_type 1会员昵称 2会员手机号 * search_text 会员昵称、会员手机号 * usage_status 1,可使用 2,已使用,3,已过期 * ] * page * limit * ] * @return mixed */ public function couponGrantRecord($param) { if (empty($param['id'])) { return callBack(statusCode()['error'], "缺少券id"); } $time = $_SERVER['REQUEST_TIME']; $where = [ 'r.merchantid' => $param['merchant_id'], 'r.status' => ['in', ['1', '2']] ]; switch ($param['type']) { case 1: $where['r.mcouponid'] = $param['id']; $where['r.type'] = 1; break; case 2: $where['r.mcoupon_group_id'] = $param['id']; $where['r.type'] = 2; break; } switch ($param['search_info']['usage_status']) { case 1: $where['r.isuse'] = 1; $where[] = [ [ 'c.coupontype' => 1, 'c.endtime' => ['gt', $time] ], [ 'c.coupontype' => 2, 'r.addtime + (c.daynum*86400)' => ['gt', $time] ], [ 'c.coupontype' => 3, 'r.addtime+86400' => ['lt', $time], 'r.addtime+86400+(c.daynum*86400)' => ['gt', $time] ], '_logic' => 'OR' ]; break; case 2: $where['r.isuse'] = 2; break; case 3: $where['r.isuse'] = ['neq', 2]; $where[] = [ [ 'c.coupontype' => 1, 'c.endtime' => ['elt', $time] ], [ 'c.coupontype' => 2, 'r.addtime + (c.daynum*86400)' => ['lt', $time] ], [ 'c.coupontype' => 3, 'r.addtime+(c.daynum*86400)' => ['lt', $time], ], '_logic' => 'OR' ]; break; } if (!empty($param['search_info']['search_type'])) { $vip_map = [ 'status' => ['neq', 2], 'merchantid' => $param['merchant_id'] ]; switch ($param['search_info']['search_type']) { case 1: //会员昵称 $vip_map['nickname|name'] = ['like', '%' . $param['search_info']['search_text'] . '%']; break; case 2: //会员手机号 $vip_map['mobile_phone'] = ['like', '%' . $param['search_info']['search_text'] . '%']; break; } try { $VipModel = new RetailVipModel(); $vip_id = $VipModel->getFindField($vip_map, "id", true); } catch (\Exception $e) { $vip_id = []; } if (!empty($vip_id)) { $where['r.vid'] = ['in', $vip_id]; } else { return callBack(statusCode()['success'], "查询成功", [ 'list' => [], 'count' => 0 ]); } } $result = $this->grantRecordRotate([ 'where' => $where, 'page' => $param['page'], 'limit' => $param['limit'] ]); return $result; } /** * 发放记录字段转换 * @param $param * [ * where 条件 * page * limit * ] * @return mixed */ public function grantRecordRotate($param) { $where = $param['where']; try { $fields = [ 'r.id', 'r.vid', 'r.mcouponid', 'r.isuse', 'r.usetime', 'r.addtime', 'r.storeid', 'r.type', 'c.starttime', 'c.endtime', 'c.needmoney', 'c.reducemoney', 'c.coupon_name', 'c.coupontype', 'c.daynum', 'v.name', 'v.nickname', 'v.mobile_phone', ]; $VipCouponModel = new RetailVipMCouponModel(); $list = $VipCouponModel->getGrantRecord($where, $fields, 'r.usetime desc,r.addtime desc', $param['page'], $param['limit']); } catch (\Exception $e) { $list = []; } if (!empty($list)) { $time = $_SERVER['REQUEST_TIME']; $count = $VipCouponModel->getGrantRecordCount($where); $StoreModel = new RetailStoreModel(); foreach ($list as $key => &$val) { $val['index'] = $key + 1; switch ($val['coupontype']) { case 1: $start_time_str = $val['starttime']; $end_time_str = $val['endtime']; break; case 2: $start_time_str = $val['addtime']; $end_time_str = $val['addtime'] + ($val['daynum'] * 86400); break; case 3: $start_time_str = $val['addtime'] + 86400; $end_time_str = ($val['addtime'] + 86400) + ($val['daynum'] * 86400); break; } if ($val['isuse'] == 2) { //已使用 $val['isuse_name'] = '已使用'; $val['use_time'] = date('Y-m-d H:i:s', $val['usetime']); $val['use_store'] = $StoreModel->getFindField(['id' => $val['storeid']], "storetag"); } else { $val['use_time'] = ''; $val['use_store'] = ''; if ($end_time_str > $time) { $val['isuse_name'] = '未使用'; } else { $val['isuse_name'] = '已过期'; } } $val['vip_name'] = $val['name'] ? $val['name'] : ($val['nickname'] ? $val['nickname'] : '未设置名称'); $val['vip_phone'] = $val['mobile_phone']; $val['addtime'] = date('Y-m-d H:i:s', $val['addtime']); $start_time = date('Y-m-d H:i:s', $start_time_str); $end_time = date('Y-m-d H:i:s', $end_time_str); $val['canusetime'] = $start_time . '至' . $end_time; } } return callBack(statusCode()['success'], "查询成功", [ 'list' => $list, 'count' => $count ? $count : 0 ]); } /** * 券包列表 * @param $param * [ * user_type 3商户 4门店 * merchant_id * store_id * search_ino=>[ * coupon_group_name 券包名称 * start_time 创建时间(起) * end_time 创建时间(止) * ] * ] * @return mixed */ public function couponPackageList($param) { $search_ino = $param['search_ino']; $map['merchantid'] = $param['merchant_id']; // 名称搜索 if (trim($search_ino['coupon_group_name'], '')) { $map['coupon_group_name'] = array('like', "%" . trim($search_ino['coupon_group_name'], '') . "%"); } // 创建时间 if (!empty($search_ino['start_time']) && !empty($search_ino['end_time'])) { $start_time = strtotime($search_ino['start_time']); $end_time = strtotime($search_ino['end_time']); $map['addtime'] = array("between", "$start_time,$end_time"); } else if (!empty($search_ino['start_time'])) { $start_time = strtotime($search_ino['start_time']); $map['addtime'] = array('gt', $start_time); } else if (!empty($search_ino['end_time'])) { $end_time = strtotime($search_ino['end_time']); $map['addtime'] = array('lt', $end_time); } // $map['user_type'] = $param['user_type']; if ($param['user_type'] == 4) { $map[] = [ 'FIND_IN_SET("' . $param['store_id'] . '",storeids)', 'storeids' => '0', '_logic' => 'OR', ]; // $map['storeids'] = $param['store_id']; } try { $PackageModel = new RetailMCouponGroupModel(); $packageList = $PackageModel->getSelect($map, '*', $order = 'addtime desc', $param['page'] . ',' . $param['limit']); if (!empty($packageList)) { $count = $PackageModel->getCount($map); $StoreClass = new Store(); $storeList = $StoreClass->getStoreList([ 'merchant_id' => $param['merchant_id'] ]); $storeList = array_column($storeList, null, 'id'); foreach ($packageList as &$val) { $val['addtime'] = date('Y-m-d H:i:s', $val['addtime']); $val['coupon_group_allnum'] = floatval($val['coupon_group_allnum']); $val['coupon_group_num'] = floatval($val['coupon_group_num']); $val['coupon_group_money'] = floatval($val['coupon_group_money']); if ($val['give_status'] == 1) { $val['give_name'] = '自主发放'; } else if ($val['give_status'] == 2) { $val['give_name'] = '充值赠送'; } else { $val['give_name'] = '未知类型'; } $store_name = ''; if (!empty($val['storeids'])) { $store_id_arr = explode(',', $val['storeids']); foreach ($store_id_arr as $value) { $store_name .= $storeList[$value]['storetag'] . ','; } $store_name = trim($store_name, ','); } else { $store_name = '不限制门店'; } $val['store_name'] = $store_name; } } return callBack(statusCode()['success'], "查询成功", [ 'list' => $packageList ? $packageList : [], 'count' => $count ? $count : 0 ]); } catch (\Exception $e) { return callBack(statusCode()['error'], "查询失败", [ 'list' => [], 'count' => 0 ]); } } /** * 单张券详情 * @param $param * [ * id 优惠券id * ] * @return mixed */ public function couponInfo($param) { $id = $param['id']; if (empty($id)) { return callBack(statusCode()['error'], "请选择优惠券"); } try { $CouponModel = new RetailMCouponModel(); $SaleGoodsClass = new SaleGoods(); $Classify = new GoodsClassify(); $info = $CouponModel->getFind([ 'id' => $id ]); if (empty($info)) { return callBack(statusCode()['error'], "未找到该优惠券"); } $coupon['coupon'] = [ 'coupon_name' => $info['coupon_name'], 'coupon_amount' => $info['coupon_allnum'], 'discount_amount' => $info['reducemoney'], 'consumption_threshold' => $info['needmoney'], 'grant_type' => $info['give_status'], 'choose_store' => $info['storeids'] == '0' ? '0' : '1', 'store_id_arr' => $info['storeids'] != '0' ? $info['storeids'] : '', 'validity_time_type' => $info['coupontype'], 'start_time' => $info['starttime'] ? newDate('Y-m-d H:i:s', $info['starttime']) : '', 'end_time' => $info['endtime'] ? newDate('Y-m-d H:i:s', $info['endtime']) : '', 'day_num' => $info['daynum'], 'explain' => $info['detailmsg'], 'appoint_id_arr' => $info['appoint_id_str'] ]; if ($info['coupon_gradeid'] == '-1' || $info['coupon_gradeid'] == '0') { $coupon['coupon']['choose_grade'] = $info['coupon_gradeid']; } else { $coupon['coupon']['choose_grade'] = '1'; $coupon['coupon']['vip_grade_id'] = $info['coupon_gradeid']; } if ($coupon['coupon']['choose_store'] == 1 && count($coupon['coupon']['store_id_arr']) == 1) { //指定单门店 $coupon['coupon']['appoint_type'] = $info['appoint_type']; if ($coupon['coupon']['appoint_type'] == 2 || $coupon['coupon']['appoint_type'] == 3) { if ($coupon['coupon']['appoint_type'] == 2) { //指定分类 $coupon['class_list'] = $Classify->appointClass([ 'class_id_str' => $info['appoint_id_str'], 'merchant_id' => $info['merchantid'], 'store_id' => $info['storeids'] ]); } else if ($coupon['coupon']['appoint_type'] == 3) { //指定商品 $coupon['goods_list'] = $SaleGoodsClass->appointGoodsList($info['appoint_id_str']); } } } return callBack(statusCode()['success'], "查询成功", $coupon); } catch (\Exception $e) { return callBack(statusCode()['success'], "查询失败", []); } } /** * 优惠券列表 * @param $param * [ * operator_type 1后台 2收银端 3助手端 * user_type 3商户 4门店 * merchant_id * store_id * search_info=>[ * coupon_state 1全部 2未开始 3进行中 4已结束 * coupon_name 优惠券名称 * start_time 开始时间 * end_time 结束时间 * appoint_type 1 全部商品 2指定分类 3指定商品 * ] * page * limit * ] * @return mixed */ public function couponList($param) { $verifyResult = $this->couponListVerify($param); //参数验证 if ($verifyResult['status'] != 1) { return $verifyResult; } if (!in_array($param['search_info']['coupon_state'], ['1', '2', '3', '4'])) { return callBack(statusCode()['error'], '查询类型有问题'); } $where = $this->couponTerm($param); //查询条件 try { $CouponModel = new RetailMCouponModel(); $list = $CouponModel->getSelect($where, '*', 'id desc', $param['page'] . ',' . $param['limit']); if (!empty($list)) { $count = $CouponModel->getCount($where); $StoreClass = new Store(); $storeList = $StoreClass->getStoreList([ 'merchant_id' => $param['merchant_id'] ]); $storeList = array_column($storeList, null, 'id'); $list = $this->convertList([ 'storeList' => $storeList ? $storeList : [], 'list' => $list, ]); } return callBack(statusCode()['success'], "查询成功", [ 'list' => $list ? $list : [], 'count' => $count ? $count : 0, ]); } catch (\Exception $e) { return callBack(statusCode()['success'], "查询成功", [ 'list' => [], 'count' => 0, 'e' => $e, ]); } } /** * 优惠券列表字段转换 * @param $param * [ * user_type 3商户 4门店 * list 需要转换的数组 * storeList 门店列表 * ] * @return mixed */ public function convertList($param) { $list = $param['list']; $storeList = $param['storeList']; $time = $_SERVER['REQUEST_TIME']; foreach ($list as &$val) { $store_name = ''; if (!empty($val['storeids'])) { $store_id_arr = explode(',', $val['storeids']); foreach ($store_id_arr as $value) { $store_name .= $storeList[$value]['storetag'] . ','; } $store_name = trim($store_name, ','); } else { $store_name = '不限制门店'; } $val['store_name'] = $store_name; $val['addtime'] = date('Y-m-d H:i:s', $val['addtime']); if ($val['status'] == 2) { $val['state'] = 2; $val['type_name'] = '已结束'; } else { switch ($val['coupontype']) { case 1: $val['validity_time'] = date('Y-m-d H:i:s', $val['starttime']) . '至' . date('Y-m-d H:i:s', $val['endtime']); if ($val['starttime'] > $time) { $val['state'] = 1; $val['type_name'] = '未开始'; } else if ($val['endtime'] < $time || $val['coupon_num'] <= 0) { $val['state'] = 2; $val['type_name'] = '已结束'; } else { $val['state'] = 1; $val['type_name'] = '进行中'; } break; case 2: $val['validity_time'] = "会员领取当日起" . $val['daynum'] . '天内有效'; $val['type_name'] = $val['coupon_num'] > 0 ? '进行中' : '已结束'; $val['state'] = $val['coupon_num'] > 0 ? 1 : 2; break; case 3: $val['validity_time'] = "会员领取次日日起" . $val['daynum'] . '天内有效'; $val['type_name'] = $val['coupon_num'] > 0 ? '进行中' : '已结束'; $val['state'] = $val['coupon_num'] > 0 ? 1 : 2; break; } } switch ($val['give_status']) { case 1: $val['give_name'] = '自主发放'; break; case 2: $val['give_name'] = '充值赠送'; break; case 3: $val['give_name'] = '支付发放'; break; } } return $list; } /** * 优惠券列表验证 * @param $param * [ * operator_type 1后台 2收银端 3助手端 * user_type 3商户 4门店 * merchant_id * store_id * search_info=>[ * coupon_state 1全部 2未开始 3进行中 4已结束 * coupon_name 优惠券名称 * start_time 开始时间 * end_time 结束时间 * appoint_type 1 全部商品 2指定分类 3指定商品 * ] * ] * @return mixed */ public function couponTerm($param) { $search_info = $param['search_info']; $time = $_SERVER['REQUEST_TIME']; $where = [ 'merchantid' => $param['merchant_id'], 'type' => 1 ]; if ($param['user_type'] == 4) { $where[] = [ 'FIND_IN_SET("' . $param['store_id'] . '",storeids)', 'storeids' => '0', '_logic' => 'OR', ]; } if (!empty($search_info['coupon_name'])) { $where['coupon_name'] = ['like', '%' . trim($search_info['coupon_name'], '') . '%']; } if(!empty($search_info['start_time'])){ $start_time = strtotime($search_info['start_time']); } if(!empty($search_info['end_time'])){ $end_time = strtotime($search_info['end_time']); } if (!empty($search_info['start_time']) && !empty($search_info['end_time'])) { $where['addtime'] = ['between', [$start_time, $end_time]]; } else if (!empty($search_info['start_time'])) { $where['addtime'] = ['egt', $start_time]; } else if (!empty($search_info['end_time'])) { $where['addtime'] = ['elt', $end_time]; } if (!empty($search_info['appoint_type'])) { $where['appoint_type'] = $search_info['appoint_type']; } switch ($search_info['coupon_state']) { case 1: $where['status'] = ['in', ['1', '2']]; // 正常、失效的优惠券 break; case 2: $where['status'] = 1; $where['coupontype'] = 1; $where['starttime'] = array('gt', $time); $where['coupon_num'] = array('gt', 0); break; case 3: $where['status'] = 1; $where['coupon_num'] = array('gt', 0); $where['_string'] = "(coupontype = 1 AND starttime < {$time} AND endtime > {$time}) OR (coupontype = 2) OR (coupontype = 3)"; break; case 4: $where['_string'] = "(status != 3 AND ((coupontype = 1 AND endtime < {$time}) OR (coupon_num <= 0))) OR (status = 2)"; break; } return $where; } /** * 优惠券列表的参数验证 * @param $param * [ * operator_type 1后台 2收银端 3助手端 * user_type 3商户 4门店 * merchant_id * store_id * search_info=>[ * coupon_state 1全部 2未开始 3进行中 4已结束 * coupon_name 优惠券名称 * start_time 开始时间 * end_time 结束时间 * appoint_type 1 全部商品 2指定分类 3指定商品 * ] * ] * @return mixed */ public function couponListVerify($param) { $VerifyClass = new VerifyParam(); $verifyResult = $VerifyClass->identityVerify($param); if ($verifyResult['status'] != 1) { return $verifyResult; } if (!in_array($param['search_info']['coupon_state'], ['1', '2', '3', '4'])) { return callBack(statusCode()['error'], '请选择正确的券状态'); } return callBack(statusCode()['success'], "验证成功"); } }