|
| 1 | + |
| 2 | +## 鸟币app使用的能自动生成 golang model 和 ios model代码的代码。 |
| 3 | + |
| 4 | +### 快速上手: |
| 5 | + |
| 6 | +以鸟币的oc和go的model生成为示例 |
| 7 | +1. 修改在ibisModel/main.go 中的path |
| 8 | + |
| 9 | + //把这两项替换成你自己的 |
| 10 | + goModelPath := "/Users/cooerson/Documents/go/src/niaoshenhao.com/ibis/models" |
| 11 | + iosModelPath := "/Users/cooerson/Documents/ios/Ibis-ios/Ibiscoin/Ibiscoin/Model" |
| 12 | + |
| 13 | + |
| 14 | +2. :执行 go run main.go 即可 |
| 15 | + |
| 16 | + |
| 17 | + |
| 18 | +## 书写规则 |
| 19 | +1. 示例 |
| 20 | + |
| 21 | +``` |
| 22 | +-ID 0 //用户ID |
| 23 | +-Phone 1 //用户手机号,不可重复 |
| 24 | +-pwd 1 -j //密码不返回 |
| 25 | +-avatar utils.Pic //头像 原图/640/320/160 |
| 26 | +-userActivity 0 bo:activity |
| 27 | +-isFounder 2 jo:founder b:founder //是否是发起人 |
| 28 | +``` |
| 29 | + |
| 30 | +## go匹配规则 |
| 31 | + |
| 32 | +1. 匹配以`//`开头的一行 |
| 33 | +指定为`注释` |
| 34 | + |
| 35 | +1. 匹配`=xx`或`Xx` |
| 36 | +指定为struct的名称Xx |
| 37 | + |
| 38 | +1. 匹配`-ID`或`-id`或`-Id` |
| 39 | +指定字段名为 `ID` |
| 40 | +指定类型为 `bson.ObjectId` |
| 41 | +指定json为 -Xx或-xx的XxID |
| 42 | +指定bson为 `_id,omitempty` |
| 43 | + |
| 44 | +1. 匹配`-xx`或`-Xx` |
| 45 | +指定字段名为`Xx` |
| 46 | + |
| 47 | +1. 匹配类型:例如0、1、2、3、4、5、6、自定义字符串 |
| 48 | +0:指定字段类型为`bson.ObjectId`,同时指定bson为`omitempty` |
| 49 | +1:指定字段类型为`string` |
| 50 | +2:指定字段类型为`bool` |
| 51 | +3:指定字段类型为`float64` |
| 52 | +4:指定字段类型为`int64` |
| 53 | +5:指定字段类型为`int8` |
| 54 | +6:指定字段类型为`time.Time` |
| 55 | + |
| 56 | +1. 匹配 无指定json\bson内容 |
| 57 | +默认指定json为 首字母小写,忽略空 |
| 58 | +默认指定bson为 首字母小写 |
| 59 | + |
| 60 | +1. 匹配 `j:xx`或`Xx` |
| 61 | +指定json为 xx 首字母变小写 |
| 62 | + |
| 63 | +1. 匹配 `jo:xx`或`Xx` |
| 64 | +指定json为 xx,omitempty 首字母变小写 |
| 65 | + |
| 66 | +1. 匹配 `b:xx`或`Xx` |
| 67 | +指定bson为 xx 首字母变小写 |
| 68 | + |
| 69 | +1. 匹配 `bo:xx`或`Xx` |
| 70 | +指定bson为 `xx,omitempty` 首字母变小写 |
| 71 | + |
| 72 | +1. 匹配 `-j`或`-b` |
| 73 | +指定为 `json:"-"` 或 `bson:"-"` |
| 74 | + |
| 75 | +1. 匹配 `@` |
| 76 | +指定为go独有 |
| 77 | + |
| 78 | +1. 匹配`多个###` |
| 79 | +指定为一个struct结束 |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | +## oc匹配规则 |
| 84 | + |
| 85 | +在go的匹配规则基础上, |
| 86 | + |
| 87 | +1. 匹配`~` |
| 88 | +指定为oc独有 |
| 89 | + |
| 90 | +1. 匹配`=xx`或`=Xx` |
| 91 | +指定为interface的名称Xx |
| 92 | + |
| 93 | +1. 匹配`-ID`或`-id`或`-Id` |
| 94 | +指定字段名为 `xxID` |
| 95 | +指定类型为 `NSString` |
| 96 | + |
| 97 | +1. 匹配`-xx`或`-Xx` |
| 98 | +指定字段名为`Xx,首字母小写 |
| 99 | + |
| 100 | +1. 匹配类型:例如0、1、2、3、4、5、6、自定义字符串 |
| 101 | +0:指定字段类型为`bson.ObjectId`->`(nonatomic, strong) NSString` |
| 102 | +1:指定字段类型为`string`->`(nonatomic, strong) NSString` |
| 103 | +2:指定字段类型为`bool`->`(nonatomic) BOOL` |
| 104 | +3:指定字段类型为`float64`->`(nonatomic) double` |
| 105 | +4:指定字段类型为`int64`->`(nonatomic) NSInteger` |
| 106 | +5:指定字段类型为`int8`->`(nonatomic) NSInteger` |
| 107 | +6:指定字段类型为`time.Time`->`(nonatomic, strong) NSString` |
| 108 | + |
| 109 | +1. 自定义类型用|符号分割 |
| 110 | +不带空格,go的index为[0],oc的index为[1] |
| 111 | +如 -weixin utils.Pic|Pic*| |
| 112 | + |
| 113 | +1. 匹配`多个###` |
| 114 | +指定为一个interface结束 |
| 115 | + |
| 116 | +## 在以上两个的基础上 |
| 117 | + |
| 118 | +1. Form 文件中是所有提交数据所要用到的字段 |
| 119 | +Return 文件中是所有返回数据中所要用的到的字段 |
| 120 | + |
| 121 | +2. 字段属性后全部变成json |
| 122 | +#### 注意,gin 的默认 form 类型是 json,所以 formsmodel 中,提交图片时,form类型是"multipart/form-data",记得在 model中用 form 标记,而不是 json 标记 |
| 123 | +改用 form标记加上 -f |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | + 1. f(form)\fj(form+json)\bfo(form+bson,omitempty) \fjbo(form+json+bson,omitempty) |
| 128 | + 2. '新建的'form 和 '更新的'form 中,xxID的bson需要为omitempty |
| 129 | + 3. 字段不接受为空的更新(默认值可以为空,只是更新不为空),匹配 -bfo (bson form omitempty),指定 bson 为omitempty |
| 130 | + |
| 131 | + |
| 132 | +## 其他 |
| 133 | +指定 tag 的必须按照 f-->j(包括jo、-j)-->b(包括bo、fbo、-b)的前后顺序出现! |
0 commit comments