提交 c1c4cf46 authored 作者: 游宗学's avatar 游宗学

no message

上级 4c110b33
<?php
/**
* Created by PhpStorm.
* User: king
* Date: 16/11/3
* Time: 下午3:28
*/
namespace Common\Helper\Api;
use Common\Helper\BaseHelper;
class MyApplyForHelper extends BaseHelper
{
/**
* @name 添加一条数据的方法
* @version 2017年6月9日
* @author zsc
* @param $data 数组参数
* @return status
*/
public function addOne($data)
{
$item = D('Api\MyApplyFor');
$rec = $item->data($data)->add();
if ($rec === false){
return array('status' => 0, 'message' => '失败', 'data' => []);
}
return array('status' => 1, 'message' => '成功', 'data' => $rec);
}
/**
* @name 查询一条数据
* @version 2017年6月9日
* @author zsc
* @param $where 任何条件 $field 过滤字段
* @return array
*/
public function getOne($where = [], $field = '*')
{
$item = D('Api\MyApplyFor');
$rec = $item->field($field)->where($where)->find();
if ($rec === false) {
return array('status' => 0, 'message' => '失败', 'data' => []);
}
return array('status' => 1, 'message' => '成功', 'data' => $rec);
}
/**
* @name 查询多条数据
* @version 2017年6月9日
* @author zsc
* @param $where 任何条件 $field 过滤字段 $page 当前页 $num 每页显示的数量 $order 排序规则 $group 分组规则
* @return array
*/
public function getList($where = [], $field = '*', $page = 1, $num = 100000, $order = 'create_time desc',$group =null)
{
$item = D('Api\MyApplyFor');
$rec = $item->field($field)->where($where)->page($page, $num)->order($order)->select();
if ($rec === false){
return array('status' => 0, 'message' => '失败', 'data' => []);
}
return array('status' => 1, 'message' => '成功', 'data' => $rec);
}
/**
* @name 修改数据的方法
* @version 2017年6月9日
* @author zsc
* @param $data 数组形式的数据 $where 条件
* @return status
*/
public function updateOne($data,$where)
{
$item = D('Api\MyApplyFor');
$rec = $item->where($where)->save($data);
if ($rec === false) {
return array('status' => 0, 'message' => '失败', 'data' => []);
}
return array('status' => 1, 'message' => '成功', 'data' => []);
}
/**
* @name 删除数据的方法
* @version 2017年6月9日
* @author zsc
* @param $where 条件
* @return status
*/
public function deleteDate($where = []){
$item = D('Api\MyApplyFor');
$rec = $item->where($where)->delete();
if ($rec === false){
return array('status' => 0, 'message' => '失败', 'data' => []);
}
return array('status' => 1, 'message' => '成功', 'data' => $rec);
}
public function add($data)
{
return D('Api\MyApplyFor')->add($data);
}
public function getCount($map)
{
$map['status'] = 1;
return D('Api\MyApplyFor')->where($map)->count();
}
/**
* @name 统计报名总人数带家属等
* @version 2017年3月22日
* @author zsc
* @return int
*/
public function getSum($map)
{
$map['status'] = 1;
return D('Api\MyApplyFor')->where($map)->sum('people_number');
}
/**
* @name 查询租客是否已经报名
* @version 2017年2月10日
* @author ft
* @param $tenantId
* @param $articleId
* @return int
*/
public function searchWhetherEnroll($tenantId, $articleId)
{
$tableName = D('Api\Article')->getTableName();
return D('Api\MyApplyFor')
->where(['tenant_id' => $tenantId, 'table_id' => $articleId, 'table_name' => $tableName])->find();
}
/**
* @name 获取用户的报名
* @param $where
* @return mixed
*/
public function getEnroll($where)
{
return D('Api\MyApplyFor')->where($where)->select();
}
/**
* @name 根据活动ID查看活动报名情况
* @version 2017-02-10 11:14:25
* @author zsc
*
*/
public function getApplyForList($article_id)
{
if (!$article_id) {
return ['status' => 0, 'message' => '活动ID不能为空', 'data' => []];
}
$where = ['table_name' => 'article', 'table_id' => $article_id, 'status' => 1];
//报名数据
$enrollList = D('Api\MyApplyFor')->where($where)->select();
if (empty($enrollList)) {
return ['status' => 0, 'message' => '该活动没有报名!', 'data' => []];
}
$enrollList = custom_array_column($enrollList, 'tenant_id');
$tenantIds = array_keys($enrollList);
$fields = 'tenant_id, nickname as name, gender, apartment_id';
$usersInfo = $this->helper('Api\UserInfo')->getUsersInfo($tenantIds, $fields);
// if ($usersInfo) {
// $apartmentIds = array_rid_repeat(array_column($usersInfo, 'apartment_id'));
// $apartments = $this->helper('Apartment')->getApartmentById($apartmentIds, 'apartment_id, apartment_name');
// $apartments = custom_array_column($apartments, 'apartment_id');
// }
foreach ($usersInfo as &$user) {
if ($enrollList[$user['tenant_id']]) {
$user['phone'] = $enrollList[$user['tenant_id']]['phone'];
$user['apply_time'] = date('Y-m-d', $enrollList[$user['tenant_id']]['create_time']);
}
//获取用户门店【合同里面的最新的一个】
$contract = $this->logic('Contract\Contract')->getContractList($user['tenant_id'], $is_over = 1)['data'];
$user['apartment'] = $contract['0']['apartment_name'];
$user['people_num'] = $enrollList[$user['tenant_id']]['people_number'];
}
if (empty($usersInfo)) {
return ['status' => 0, 'message' => '该活动没有报名数据!', 'data' => []];
}
return ['status' => 1, 'message' => '获取成功', 'data' => $usersInfo];
}
/**
* @name 查询当前用户报名的活动
* @param array $articleId
* @param int $tenantId
* @return array
*/
public function searchMyEnrollArticle($articleId, $tenantId)
{
$tenantEnrolls = D('Api\MyApplyFor')
->where(['tenant_id' => $tenantId, 'status' => 1, 'article_id' => ['in', $articleId]])
->select();
return custom_array_column($tenantEnrolls, 'table_id');
}
/**
* @name 活动报名
* @version 2017年3月7日
* @author ft
* @param array $user
* @return array
*/
public function articleEnroll($user)
{
$articleId = I('post.article_id', 0, 'intval');
$price = I('post.price', 0, 'floatval');
$phone = I('post.phone', '', 'string');
$peopleNumber = I('post.people_number', 0, 'intval');
if (empty($user['tenant_id'])) {
return ['status' => 0, 'message' => '没有用户ID!'];
}
if ($articleId == 0) {
return ['status' => 0, 'message' => '没有活动ID!'];
}
if ($peopleNumber == 0) {
return ['status' => 0, 'message' => '请选择报名人数!'];
}
if ($price < 0) {
return ['status' => 0, 'message' => '没有报名价格!'];
}
if ($phone == '' || !is_phone($phone)) {
return ['status' => 0, 'message' => '请输入正确的电话号码!'];
}
$article = $this->helper('Api\Article')->getArticleById($articleId);
if (empty($article)) {
return ['status' => 0, 'message' => '报名的活动不存在!'];
}
if ($article['price'] < 0 || $peopleNumber < 0) {
return ['status' => 0, 'message' => '报名价格或者报名人数错误!'];
}
$enrollResult = $this->searchWhetherEnroll($user['tenant_id'], $articleId);
// if ($enrollResult) {
// return ['status' => 0, 'message' => '不能重复报名同一个活动!'];
// }
//预防支付前系统管理员将活动价格更改 和 抓包篡改数据的情况
$systemPrice = $article['price'] * $peopleNumber;
if ((string)$price != (string)$systemPrice) {
return ['status' => 0, 'message' => '活动报名价格有变动,您应支付' . $systemPrice . '元', 'data' => "$systemPrice"];
}
$myApplyModel = D('Api\MyApplyFor');
$myApplyModel->startTrans();
if ($article['price'] > 0) {
$orderData = [
'tenant_id' => $user['tenant_id'],
'order_name' => $article['title'],
'table_name' => D('Api\MyApplyFor')->getTableName(),
'price' => $price,
'type' => 'ARTICLE'
];
$orderModel = D('Api\Orders');
$payWay = [
'pay_channel' => $orderModel::CHANNEL_WX,
'pay_way' => $orderModel::WECHAT_APP_PAY,
'from_way' => $orderModel::$fromWay['app']
];
//生成订单
$ordersResult = $this->helper('Api\Orders')->ordersGenerate($orderData, $payWay);
if ($ordersResult['status'] != 1) {
$myApplyModel->rollback();
return $ordersResult;
}
}
$orderId = isset($ordersResult) ? array_shift($ordersResult['data']) : 0;
if (empty($enrollResult)) { //如果没有报过名
$myApplyData = [
'tenant_id' => $user['tenant_id'],
'order_id' => $orderId,
'table_name' => D('Api\Article')->getTableName(),
'table_id' => $articleId,
'people_number' => $peopleNumber,
'phone' => $phone,
'status' => isset($ordersResult) ? 0 : 1 //这里是为了兼容免费报名,免费报名不生成订单
];
$result = D('Api\MyApplyFor')->add($myApplyData);
if ($result) {
if (isset($ordersResult)) { //生成订单再去修改,否则不修改
$orderUpd = D('Api\Orders')->where(['orders_id' => $myApplyData['order_id']])->save(['table_id'
=> $result]);
if (!$orderUpd) {
$myApplyModel->rollback();
return ['status' => 0, 'message' => '订单关联失败!'];
}
}
//报名后加入群逻辑
$group = $this->helper('Im\ImGroup')->searchGroupExists(['im_group_id' => $article['im_group_id']]);
if ($article['im_group_id'] > 0 && $group) {
$groupRes = $this->helper('Im\ImGroupUserRelationship')
->articleEnrollJoinGroup($article['im_group_id'], $user['tenant_id'], $group['im_group_name']);
if (!$groupRes) {
$myApplyModel->rollback();
return ['status' => 0, 'message' => '加入群组失败!'];
}
}
$myApplyModel->commit();
return ['status' => 1, 'data' => isset($ordersResult) ? $ordersResult['data'] : (object)[]];
}
return ['status' => 0, 'message' => '报名失败!'];
} else if ($article['price'] > 0) {
$this->helper('Api\Orders')->cancelOrderPay($enrollResult['order_id']);
//更新报名信息
$updateData = ['order_id' => $orderId, 'people_number' => $peopleNumber, 'phone' => $phone];
$result = $this->updateEnrollInfo($enrollResult['my_apply_for_id'], $updateData);
if (!$result) {
return ['status' => 0, 'message' => '购买失败!'];
}
$orderUpd = D('Api\Orders')->where(['orders_id' => $orderId])->save(['table_id' => $enrollResult['my_apply_for_id']]);
if (!$orderUpd) {
$myApplyModel->rollback();
return ['status' => 0, 'message' => '订单关联失败!'];
}
}
$myApplyModel->commit();
return ['status' => 1, 'data' => isset($ordersResult) ? $ordersResult['data'] : (object)[]];
}
/**
* @name 更新报名报中的订单ID
* @version 2017年5月10日
* @author ft
* @param int $enrollId
* @param array $updateData
* @param int $updateData[order_id] 订单ID
* @param int $updateData[people_number] 报名人数
* @param string $updateData[phone] 联系电话
* @return boolean
*/
public function updateEnrollInfo($enrollId, $updateData)
{
return D('Api\MyApplyFor')->where(['my_apply_for_id' => $enrollId])->save($updateData);
}
/**
* @name 活动报名-如果已有报名信息就更新或者删除报名
* @version 2017年6月23日
* @author zsc
* @param array $data
* @return boolean
*/
public function addEnroll($data)
{
// $where['tenant_id'] = $data['tenant_id'];
// $where['table_id'] = $data['table_id'];
// $where['table_name'] = $data['table_name'];
// $where['people_number'] = $data['people_number'];
// $where['phone'] = $data['phone'];
// $where['status'] = $data['status'];
$where = $data;
$is_have = $this->getOne($where);
if (empty($is_have['data'])){
$res = $this->addOne($data);
}else{
//return ['status' => 0, 'message' => '请不要重复报名','data'=>[]];
//先删除以前的报名后添加
$this->deleteDate($where);
$res = $this->addOne($data);
}
if ($res['status'] == 0){
return $res;
}
return ['status' => 1, 'message' => '报名记录添加成功','data'=>$res['data']];
}
}
\ No newline at end of file
<?php
namespace Common\Helper\Pay;
use Common\Helper\BaseHelper;
/**
* @name
* @author lcc
*
*/
class WeChatPayHelper extends BaseHelper{
/**
* @name 生成预支付订单
* @version 2017年4月18日
* @author lcc
* @param $data
* @return status
*/
public function unifiedorder($pay_bill_id){
if(!is_numeric($pay_bill_id) || empty($pay_bill_id)){
return array('status' => 0, 'message' => '账单ID错误', 'data' => $pay_bill_id);
}
//根据账单ID查询订单信息
$pay_bill_model = D('Pay\PayBill');
$where['pay_bill_id'] = $pay_bill_id;
$where['pay_status'] = $pay_bill_model::PAY_NOT;
$where['pay_channel'] = $pay_bill_model::CHANNEL_WX;
$field = "pay_bill_id,product_name,document_number,pay_money";
$result_bill = $this->helper('Pay\PayBill')->getOne($where,$field);
if($result_bill['status'] == 0 || $result_bill['data']['pay_bill_id'] == null){
return array('status' => 0, 'message' => '账单不存在', 'data' => $pay_bill_id);
}
//组装数据准备请求微信接口生成预支付订单
$body = C('WECHATPAY_CONFIG')['APPNAME']."-".$result_bill['data']['product_name'];
$postArr = array('appid'=>C('WECHATPAY_CONFIG')['APPID'],
'mch_id'=>C('WECHATPAY_CONFIG')['MCHID'],
'nonce_str'=>guid(32),
'body'=>$body,
'out_trade_no'=>$result_bill['data']['document_number'],
'total_fee'=>$result_bill['data']['pay_money'],
'spbill_create_ip'=>$_SERVER['REMOTE_ADDR'],
'notify_url'=>C('WECHATPAY_CONFIG')['NOTIFYURL'],
'trade_type'=>C('WECHATPAY_CONFIG')['TRADETYPE']);
//签名
$sign = $this->makeSign($postArr);
$postArr['sign'] = $sign;
//数组转为XML格式
$post_xml = $this->arrayToXml($postArr);
//发起预支付订单请求
$result = $this->postXmlCurl($post_xml,"https://api.mch.weixin.qq.com/pay/unifiedorder");
if($result == false || empty($result)){
return array('status' => 0, 'message' => '发起预支付请求失败', 'data' => $result);
}
//XML返回结果转为数组
$result_arr = $this->xmlToArray($result);
if($result_arr == false || $result_arr['return_code'] != 'SUCCESS' || $result_arr['result_code'] != 'SUCCESS'){
return array('status' => 0, 'message' => '预支付请求失败', 'data' => $result_arr);
}
//组装APP支付需要的参数
$data_app = array('appid'=>C('WECHATPAY_CONFIG')['APPID'],
'partnerid'=>C('WECHATPAY_CONFIG')['MCHID'],
'noncestr'=>guid(32),
'prepayid'=>$result_arr['prepay_id'],
'package'=>'Sign=WXPay',
'timestamp'=>(string)NOW_TIME);
//签名
$sign = $this->makeSign($data_app);
$data_app['sign'] = $sign;
return array('status' => 1, 'message' => '成功', 'data' => $data_app);
}
/**
* @name 查询订单
* @version 2017年4月18日
* @author lcc
* @param $data
* @return status
*/
public function checkOrderHelper($document_number){
if (empty($document_number)) {
return array('status' => 0, 'message' => '订单号错误', 'data' => []);
}
$postArr = array('appid'=>C('WECHATPAY_CONFIG')['APPID'],
'mch_id'=>C('WECHATPAY_CONFIG')['MCHID'],
'nonce_str'=>guid(32),
'out_trade_no'=>$document_number);
//签名
$sign = $this->makeSign($postArr);
$postArr['sign'] = $sign;
//数组转为XML格式
$post_xml = $this->arrayToXml($postArr);
//发起预支付订单请求
$result = $this->postXmlCurl($post_xml,"https://api.mch.weixin.qq.com/pay/orderquery");
if($result == false || empty($result)){
return array('status' => 0, 'message' => '发起查询订单请求失败', 'data' => $result);
}
//XML返回结果转为数组
$result_arr = $this->xmlToArray($result);
if($result_arr == false || $result_arr['return_code'] != 'SUCCESS' || $result_arr['result_code'] != 'SUCCESS'){
return array('status' => 0, 'message' => '查询请求失败', 'data' => $result_arr);
}
return array('status' => 1, 'message' => '查询成功', 'data' => $result_arr);
}
/**
* @name 取消交易--APP支付
* @author lcc
*
*/
public function cancelThirdPayHelper($document_number){
if (empty($document_number)) {
return array('status' => 0, 'message' => '订单号错误', 'data' => []);
}
$postArr = array('appid'=>C('WECHATPAY_CONFIG')['APPID'],
'mch_id'=>C('WECHATPAY_CONFIG')['MCHID'],
'nonce_str'=>guid(32),
'out_trade_no'=>$document_number);
//签名
$sign = $this->makeSign($postArr);
$postArr['sign'] = $sign;
//数组转为XML格式
$post_xml = $this->arrayToXml($postArr);
//发起预支付订单请求
$result = $this->postXmlCurl($post_xml,"https://api.mch.weixin.qq.com/pay/closeorder");
if($result == false || empty($result)){
return array('status' => 0, 'message' => '发起查询订单请求失败', 'data' => $result);
}
//XML返回结果转为数组
$result_arr = $this->xmlToArray($result);
if($result_arr == false || $result_arr['return_code'] != 'SUCCESS'){
return array('status' => 0, 'message' => '查询请求失败', 'data' => $result_arr);
}
if($result_arr['err_code'] != '' && $result_arr['err_code'] != 'ORDERCLOSED'){
return array('status' => 0, 'message' => '关闭订单失败,'.$result_arr['err_code_des'], 'data' => $result_arr);
}
return array('status' => 1, 'message' => '成功', 'data' => $result_arr);
}
/**
* 生成签名
* @return 签名,本函数不覆盖sign成员变量,如要设置签名需要调用SetSign方法赋值
*/
public function makeSign($arr)
{
//签名步骤一:按字典序排序参数
ksort($arr);
$string = $this->toUrlParams($arr);
//签名步骤二:在string后加入KEY
$string = $string . "&key=".C('WECHATPAY_CONFIG')['KEY'];
//签名步骤三:MD5加密
$string = md5($string);
//签名步骤四:所有字符转为大写
$result = strtoupper($string);
return $result;
}
/**
* 格式化参数格式化成url参数
*/
public function toUrlParams($arr)
{
$buff = "";
foreach ($arr as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
/**
* 发起post请求,请求参数为XML
*/
public function postXmlCurl($xml,$url,$second=30)
{
//初始化curl
$ch = curl_init();
//设置超时
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
//这里设置代理,如果有的话
//curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
//设置header
curl_setopt($ch, CURLOPT_HEADER, FALSE);
//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//post提交方式
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
//运行curl
$data = curl_exec($ch);
//返回结果
if($data)
{
curl_close($ch);
return $data;
}
else
{
$error = curl_errno($ch);
echo "curl出错,错误码:$error"."<br>";
echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";
curl_close($ch);
return false;
}
}
/**
* @name 数组格式转换为XML格式
* @param $arr
* @param int $dom
* @param int $item
* @return mixed
*/
function arrayToXml($arr)
{
$xml = "<xml>";
foreach ($arr as $key=>$val)
{
if (is_numeric($val))
{
$xml.="<".$key.">".$val."</".$key.">";
}
else
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
$xml.="</xml>";
return $xml;
}
/**
* 作用:将xml转为array
*/
public function xmlToArray($xml)
{
//将XML转为array
$array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
return $array_data;
}
}
<?php
/**
* Created by PhpStorm.
* User: king
* Date: 16/11/3
* Time: 下午3:26
*/
namespace Common\Model\Api;
use Common\Model\BaseModel;
class MyApplyForModel extends BaseModel{
protected $connection = 'DB_APP';
protected $tableName = "my_apply_for";
}
\ No newline at end of file
<?php
namespace Common\Model\Api;
use Common\Model\BaseModel;
class MyAppointmentModel extends BaseModel
{
protected $connection = 'DB_APP';
protected $tableName = "my_appointment";
//订单过期时间2017-05-15 zsc 新增
const EXPIRATION_TIME = 10800;//订单三小时过期
const STATUS_MAKE_NOW = 0;
const STATUS_UNDERWAY = 1;
const STATUS_PERFORM = 2;
const STATUS_ABNORMAL_END = 3;
const STATUS_CANCEL = 4;
/**
* @var 进行状态
*/
public static $_STATUS = [
self::STATUS_MAKE_NOW => '待保洁',
//self::STATUS_UNDERWAY => '进行中',
self::STATUS_PERFORM => '已完成',
self::STATUS_ABNORMAL_END => '异常结束',
self::STATUS_CANCEL => '已取消',
];
const TENANT_COUNT = 99; //租客每月可预约保洁数量 阿东说默认改成99 2018年01月10日15:37:25
const APARTMENT_COUNT = 8;//部门每日预约保洁数量
const TYPE_CLEANING = 1; //保洁预约
const TYPE_REPAIR = 2; //维修预约
const REPAIR_TYPE_PLUMBING = 1;
const REPAIR_TYPE_ELECTRIC = 2;
const REPAIR_TYPE_LOCK = 3;
const REPAIR_TYPE_FURNITURE = 4;
const REPAIR_TYPE_CIRCUIT = 5;
const REPAIR_TYPE_OTHER = 6;
/**
* @var 维修预约类型
*/
public static $_REPAIR_TYPE = [
self::REPAIR_TYPE_PLUMBING => '水暖',
self::REPAIR_TYPE_ELECTRIC => '电器',
self::REPAIR_TYPE_LOCK => '门锁',
self::REPAIR_TYPE_FURNITURE => '家具',
self::REPAIR_TYPE_CIRCUIT => '电路',
self::REPAIR_TYPE_OTHER => '其他',
];
const APPOINTMENT_TIME_TYPE_ALL = 0;
const APPOINTMENT_TIME_TYPE_AM = 1;
const APPOINTMENT_TIME_TYPE_PM = 2;
/**
* @var 预约时段
*/
public static $_APPOINTMENT_TIME_TYPE = [
//self::APPOINTMENT_TIME_TYPE_ALL => '未区分时段',
self::APPOINTMENT_TIME_TYPE_AM => '9:00 - 12:00',
self::APPOINTMENT_TIME_TYPE_PM => '13:00 - 18:00',
];
/**
* @name 预约维修状态
* @var array
*/
public static $_APPOINTMENT_REPAIR_STATUS = [
self::STATUS_MAKE_NOW => '待维修',
self::STATUS_PERFORM => '已完成',
self::STATUS_ABNORMAL_END => '异常结束',
self::STATUS_CANCEL => '已取消',
];
/**
* @name 预约保洁维修状态
* @var array
*/
public static $_APPOINTMENT_CLEANING_STATUS = [
self::STATUS_MAKE_NOW => '待保洁',
self::STATUS_PERFORM => '已完成',
self::STATUS_ABNORMAL_END => '异常结束',
self::STATUS_CANCEL => '已取消',
];
}
\ No newline at end of file
<html>
<head>
<title></title>
<meta charset="UTF-8">
<link href="__CDN_WEIXIN__/client/css/mui.css" rel="stylesheet" />
<link href="__CDN_WEIXIN__/client/css/weui.css" rel="stylesheet" />
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
</head>
<body>
<script src="__CDN_WEIXIN__client/js/mui.min.js"></script>
<script type="text/javascript" src="__CDN_WEIXIN__client/js/public/config.js"></script>
<script type="text/javascript" src="__CDN_WEIXIN__client/js/showHTML.js"></script>
</body>
</html>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论