* rows.php
<?php
function fileForEachRow($path, $handler) {
$handle = fopen($path, "r");
if (! $handle ) {
return;
}
while (($buffer = fgets($handle, 1024) ) !== false) {
$buffer = trim($buffer);
call_user_func($handler, $buffer);
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
// $a = [];
fileForEachRow("./table2.txt", function($line) /* use (&$a) */ {
// echo $line.PHP_EOL;
$word = array_shift(explode(' ', $line));
$word = trim($word, '`');
// $a[] = "'".$word."'";
printf("%s string `json:\"%s\" gorm:\"column:%s;not null\" binding:\"required\"`\n",
ucfirst($word), $word, $word);
});
* 查看表结构
show create table tb_users; -- 表名自己改, 复制出来表结构
* table2.txt
`username` varchar(25) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用户名',
`password` varchar(30) NOT NULL COMMENT '密码',
`email` varchar(36) NOT NULL DEFAULT '' COMMENT '邮箱',
...
粘贴出来中间的表结构到table2.txt
* 生成模板
php rows.php
粘贴出来打印的结果,修改数据类型string
字段多的情况下适用
* rows.php 生成的users.txt用于 批量赋值
users.txt
Username string `json:"username"`
Realname string `json:"realname"`
Email string `json:"email"`
Schoolname string `json:"school"`
Provincename string `json:"province"`
Districtname string `json:"districtname"`
Subdistrictname string `json:"subdistrictname"`
* users.php
<?php
function fileForEachRow($path, $handler) {
$handle = fopen($path, "r");
if (! $handle ) {
return;
}
while (($buffer = fgets($handle, 1024) ) !== false) {
$buffer = trim($buffer);
call_user_func($handler, $buffer);
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
fileForEachRow("./users.txt", function($line) use (&$a) {
// echo $line.PHP_EOL;
$word = array_shift(explode(' ', $line));
$word = trim($word, '`');
printf("this.%s = user.%s\n", $word, $word);
});
生成go语言赋值语句如下
this.Username = user.Username
this.Realname = user.Realname
this.Email = user.Email
this.Schoolname = user.Schoolname
this.Provincename = user.Provincename
this.Districtname = user.Districtname
// ...
因为一些字段不返回 只好这么做了
userinfo := UserInfoResponse{}
SendResponse(c, nil, userinfo.FromUser(user))
//
* code.txt
-1 参数为空。信息、电话号码等有空指针,登陆失败
-12 有异常电话号码
-14 实际号码个数超过1000
-999 服务器内部错误
-10001 用户登陆不成功(帐号不存在/停用/密码错误)
-10003 用户余额不足
-10011 信息内容超长
-10029 此用户没有权限从此通道发送信息(用户没有绑定该性质的通道,比如:用户发了小灵通的号码)
-10030 不能发送移动号码
-10031 手机号码(段)非法
-10057 IP受限
-10056 连接数超限
* errorcode.php
<?php
function fileForEachRow($path, $handler) {
$handle = fopen($path, "r");
if (! $handle ) {
return;
}
while (($buffer = fgets($handle, 1024) ) !== false) {
$buffer = trim($buffer);
call_user_func($handler, $buffer);
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
printf("switch (\$code) {\n");
fileForEachRow("./code.txt", function($line) {
$a = explode("\t", $line);
$code = $a[0];
$msg = $a[1];
printf("case %s: \$s=\"%s\"; break;\n", $code, addslashes($msg));
});
printf("default: \$s = \"success\";\n");
printf("}");
* run:
E:\code\php\file>php errorcode.php
switch ($code) {
case -1: $s="参数为空。信息、电话号码等有空指针,登陆失败"; break;
case -12: $s="有异常电话号码"; break;
case -14: $s="实际号码个数超过1000"; break;
case -999: $s="服务器内部错误"; break;
case -10001: $s="用户登陆不成功(帐号不存在/停用/密码错误)"; break;
case -10003: $s="用户余额不足"; break;
case -10011: $s="信息内容超长"; break;
case -10029: $s="此用户没有权限从此通道发送信息(用户没有绑定该性质的通道,比如:用户发了小灵通的号码)"; break;
case -10030: $s="不能发送移动号码"; break;
case -10031: $s="手机号码(段)非法"; break;
case -10057: $s="IP受限"; break;
case -10056: $s="连接数超限"; break;
default: $s = "unknown error";
}