正在显示
1 个修改的文件
包含
230 行增加
和
0 行删除
| 1 | +/** | ||
| 2 | + @author: stevechan | ||
| 3 | + @date: 2021/2/1 | ||
| 4 | + @note: | ||
| 5 | +**/ | ||
| 6 | + | ||
| 7 | +package main | ||
| 8 | + | ||
| 9 | +import ( | ||
| 10 | + "fmt" | ||
| 11 | + "time" | ||
| 12 | + | ||
| 13 | + "github.com/go-pg/pg/v10" | ||
| 14 | + "github.com/go-pg/pg/v10/orm" | ||
| 15 | +) | ||
| 16 | + | ||
| 17 | +// 默认选中栏目 | ||
| 18 | +var DefaultColumns = []Column{ | ||
| 19 | + { | ||
| 20 | + Id: "index", | ||
| 21 | + ParamCn: "序号", | ||
| 22 | + ParamFix: 1, | ||
| 23 | + }, { | ||
| 24 | + Id: "orderId", | ||
| 25 | + ParamCn: "订单号", | ||
| 26 | + ParamFix: 2, | ||
| 27 | + }, { | ||
| 28 | + Id: "shipmentsId", | ||
| 29 | + ParamCn: "发货单号", | ||
| 30 | + ParamFix: 2, | ||
| 31 | + }, { | ||
| 32 | + Id: "saleDate", | ||
| 33 | + ParamCn: "销售日期", | ||
| 34 | + ParamFix: 2, | ||
| 35 | + }, { | ||
| 36 | + Id: "orderNum", | ||
| 37 | + ParamCn: "订单数量", | ||
| 38 | + ParamFix: 2, | ||
| 39 | + }, { | ||
| 40 | + Id: "quantityControl", | ||
| 41 | + ParamCn: "数量调整", | ||
| 42 | + ParamFix: 2, | ||
| 43 | + }, { | ||
| 44 | + Id: "orderPrice", | ||
| 45 | + ParamCn: "订单金额", | ||
| 46 | + ParamFix: 2, | ||
| 47 | + }, { | ||
| 48 | + Id: "priceControl", | ||
| 49 | + ParamCn: "金额调整", | ||
| 50 | + ParamFix: 2, | ||
| 51 | + }, { | ||
| 52 | + Id: "orderDist", | ||
| 53 | + ParamCn: "订单区域", | ||
| 54 | + ParamFix: 2, | ||
| 55 | + }, { | ||
| 56 | + Id: "partnerCategory", | ||
| 57 | + ParamCn: "合伙人类型", | ||
| 58 | + ParamFix: 2, | ||
| 59 | + }, { | ||
| 60 | + Id: "buyer", | ||
| 61 | + ParamCn: "客户", | ||
| 62 | + ParamFix: 2, | ||
| 63 | + }, { | ||
| 64 | + Id: "partner", | ||
| 65 | + ParamCn: "合伙人", | ||
| 66 | + ParamFix: 2, | ||
| 67 | + }, | ||
| 68 | +} | ||
| 69 | + | ||
| 70 | +// 默认未选中栏目 | ||
| 71 | +var DefaultInvalidColumns = []Column{ | ||
| 72 | + { | ||
| 73 | + Id: "updateTime", | ||
| 74 | + ParamCn: "更新时间", | ||
| 75 | + ParamFix: 2, | ||
| 76 | + }, { | ||
| 77 | + Id: "createTime", | ||
| 78 | + ParamCn: "创建时间", | ||
| 79 | + ParamFix: 2, | ||
| 80 | + }, | ||
| 81 | +} | ||
| 82 | + | ||
| 83 | +// 栏目项值对象 | ||
| 84 | +type Column struct { | ||
| 85 | + // 列标记 | ||
| 86 | + Id string `json:"id"` | ||
| 87 | + // 列标记中文 | ||
| 88 | + ParamCn string `json:"paramCn"` | ||
| 89 | + // 列标记是否固定,1:固定,2:不固定 | ||
| 90 | + ParamFix int `json:"paramFix"` | ||
| 91 | +} | ||
| 92 | + | ||
| 93 | +type ColumnSetting struct { | ||
| 94 | + // 栏目设置id | ||
| 95 | + Id int64 | ||
| 96 | + // 栏目设置关联用户公司id | ||
| 97 | + CompanyId int | ||
| 98 | + // 栏目设置创建时间 | ||
| 99 | + CreatedAt time.Time | ||
| 100 | + // 栏目设置描述 | ||
| 101 | + Description string | ||
| 102 | + // 栏目设置模块名称 | ||
| 103 | + Key string | ||
| 104 | + // 栏目设置关联用户uid | ||
| 105 | + Uid int64 | ||
| 106 | + // 栏目设置更新时间 | ||
| 107 | + UpdatedAt time.Time | ||
| 108 | + // 栏目设置关联用户名称 | ||
| 109 | + UserName string | ||
| 110 | + // 栏目数组 | ||
| 111 | + Value []Column `pg:",array"` | ||
| 112 | + // 无效栏目数组 | ||
| 113 | + InvalidValue []Column `pg:",array"` | ||
| 114 | +} | ||
| 115 | + | ||
| 116 | +func (c ColumnSetting) String() string { | ||
| 117 | + return fmt.Sprintf("Story<%d %v %v>", c.Id, c.CompanyId, c.Uid) | ||
| 118 | +} | ||
| 119 | + | ||
| 120 | +type AdminPermissionBase struct { | ||
| 121 | + Id int64 `json:"id"` | ||
| 122 | + Code string `json:"code"` | ||
| 123 | +} | ||
| 124 | + | ||
| 125 | +type Partner struct { | ||
| 126 | + // 合伙人ID | ||
| 127 | + Id int64 `json:"id"` | ||
| 128 | + // 合伙人姓名 | ||
| 129 | + PartnerName string `json:"partnerName"` | ||
| 130 | + // 登录账号 | ||
| 131 | + Account string `json:"account"` | ||
| 132 | +} | ||
| 133 | + | ||
| 134 | +type Users struct { | ||
| 135 | + tableName struct{} `pg:"users"` | ||
| 136 | + Id int64 `pg:",pk"` //用户id | ||
| 137 | + CompanyId int64 //公司id | ||
| 138 | + OpenId int64 //统一用户中心 | ||
| 139 | + Name string //用户名称 | ||
| 140 | + Sex int8 //性别:【0:未知】【1:男】【2:女】 | ||
| 141 | + JobNum string //工号 | ||
| 142 | + Phone string //手机号,同账号 | ||
| 143 | + PrivatePhone string //私人手机号 | ||
| 144 | + Email string //邮件 | ||
| 145 | + ExtensionNum string //分机号 | ||
| 146 | + EntryTime time.Time //入职时间 | ||
| 147 | + Workspace string //工作地 | ||
| 148 | + Status int8 //状态:【1:正常】【 2:禁用】 | ||
| 149 | + Avatar string ///头像 | ||
| 150 | + Remarks string //备注 | ||
| 151 | + AdminType int8 //是否为当前公司负责人 【1:是】【2:否】 | ||
| 152 | + ChargeStatus int8 //是否为当前公司主管 【1:是】【2:否】 | ||
| 153 | + Permission []AdminPermissionBase //权限 | ||
| 154 | + AccessPartners []Partner //可查看的合伙人 | ||
| 155 | + IsSenior int8 //是否是公司高管【1:是】【2:否】;用于确定是否可以拥有“可查看的合伙人” | ||
| 156 | + CreateAt time.Time | ||
| 157 | + UpdateAt time.Time | ||
| 158 | + DeleteAt time.Time | ||
| 159 | +} | ||
| 160 | + | ||
| 161 | +func (u Users) String() string { | ||
| 162 | + return fmt.Sprintf("User<%d %s %v>", u.Id, u.Name, u.CompanyId) | ||
| 163 | +} | ||
| 164 | + | ||
| 165 | +func main() { | ||
| 166 | + db := pg.Connect(&pg.Options{ | ||
| 167 | + User: "postgres", | ||
| 168 | + Addr: ":5432", | ||
| 169 | + Password: "1993618jack", | ||
| 170 | + Database: "partner_test", | ||
| 171 | + }) | ||
| 172 | + defer db.Close() | ||
| 173 | + | ||
| 174 | + err := createSchema(db) | ||
| 175 | + if err != nil { | ||
| 176 | + panic(err) | ||
| 177 | + } | ||
| 178 | + | ||
| 179 | + // Select all users. | ||
| 180 | + var users []Users | ||
| 181 | + err = db.Model(&users).Select() | ||
| 182 | + if err != nil { | ||
| 183 | + panic(err) | ||
| 184 | + } | ||
| 185 | + | ||
| 186 | + var companyUidMap = map[int64]int64{} | ||
| 187 | + | ||
| 188 | + for _, user := range users { | ||
| 189 | + companyUidMap[user.CompanyId] = user.Id | ||
| 190 | + } | ||
| 191 | + | ||
| 192 | + for companyId, uid := range companyUidMap { | ||
| 193 | + newColumnSetting := &ColumnSetting{ | ||
| 194 | + CompanyId: int(companyId), | ||
| 195 | + CreatedAt: time.Now(), | ||
| 196 | + Description: "订单栏目设置", | ||
| 197 | + Key: "order_base", | ||
| 198 | + Uid: uid, | ||
| 199 | + UpdatedAt: time.Now(), | ||
| 200 | + UserName: "", | ||
| 201 | + Value: DefaultColumns, | ||
| 202 | + InvalidValue: DefaultInvalidColumns, | ||
| 203 | + } | ||
| 204 | + | ||
| 205 | + _, err = db.Model(newColumnSetting).Insert() | ||
| 206 | + if err != nil { | ||
| 207 | + panic(err) | ||
| 208 | + } | ||
| 209 | + } | ||
| 210 | +} | ||
| 211 | + | ||
| 212 | +// createSchema creates database schema for User and Story models. | ||
| 213 | +func createSchema(db *pg.DB) error { | ||
| 214 | + models := []interface{}{ | ||
| 215 | + (*Users)(nil), | ||
| 216 | + (*ColumnSetting)(nil), | ||
| 217 | + } | ||
| 218 | + | ||
| 219 | + for _, model := range models { | ||
| 220 | + err := db.Model(model).CreateTable(&orm.CreateTableOptions{ | ||
| 221 | + Temp: false, | ||
| 222 | + IfNotExists: true, | ||
| 223 | + FKConstraints: true, | ||
| 224 | + }) | ||
| 225 | + if err != nil { | ||
| 226 | + return err | ||
| 227 | + } | ||
| 228 | + } | ||
| 229 | + return nil | ||
| 230 | +} |
-
请 注册 或 登录 后发表评论