正在显示
10 个修改的文件
包含
454 行增加
和
105 行删除
| @@ -59,3 +59,12 @@ func CreateUsersRepository(options map[string]interface{}) (domain.UsersReposito | @@ -59,3 +59,12 @@ func CreateUsersRepository(options map[string]interface{}) (domain.UsersReposito | ||
| 59 | } | 59 | } |
| 60 | return repository.NewUsersRepository(transactionContext) | 60 | return repository.NewUsersRepository(transactionContext) |
| 61 | } | 61 | } |
| 62 | + | ||
| 63 | +// CreateUsersRepository 公司企业信息 | ||
| 64 | +func CreateCompanyRepository(options map[string]interface{}) (domain.CompanyRepository, error) { | ||
| 65 | + var transactionContext *transaction.TransactionContext | ||
| 66 | + if value, ok := options["transactionContext"]; ok { | ||
| 67 | + transactionContext = value.(*transaction.TransactionContext) | ||
| 68 | + } | ||
| 69 | + return repository.NewCompanyRepository(transactionContext) | ||
| 70 | +} |
| 1 | package service | 1 | package service |
| 2 | 2 | ||
| 3 | +import ( | ||
| 4 | + "encoding/json" | ||
| 5 | + "errors" | ||
| 6 | + "fmt" | ||
| 7 | + "time" | ||
| 8 | + | ||
| 9 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/factory" | ||
| 10 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | ||
| 11 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | ||
| 12 | +) | ||
| 13 | + | ||
| 3 | type SyncCompanyService struct{} | 14 | type SyncCompanyService struct{} |
| 4 | 15 | ||
| 5 | -func (service SyncCompanyService) DoAction(action string, data []byte) error { | 16 | +//企业平台的公司基础数据 |
| 17 | +type CompanyBase struct { | ||
| 18 | + Id int64 `json:"id"` //id | ||
| 19 | + Name string `json:"name"` //公司名称名称 | ||
| 20 | + AdminCompanyId int `json:"admin_company_id"` //总后台的公司id | ||
| 21 | + Logo string `json:"logo"` //公司图标 | ||
| 22 | + Remarks string `json:"remarks"` //备注 | ||
| 23 | + Status int8 `json:"status"` | ||
| 24 | +} | ||
| 25 | + | ||
| 26 | +// CompanytData 企业平台发送过来的公司数据数据 | ||
| 27 | +type CompanytData struct { | ||
| 28 | + Company CompanyBase `json:"company"` | ||
| 29 | + User EmployeeData `json:"user"` | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +//CompanyCharge 企业平台发送过来的变更公司主管数据 | ||
| 33 | +type CompanyCharge struct { | ||
| 34 | + Id int64 `json:"id"` | ||
| 35 | + Charge []int64 `json:"charge"` | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +func (service SyncCompanyService) DoAction(action string, byteData []byte) error { | ||
| 39 | + switch action { | ||
| 40 | + case "add": | ||
| 41 | + //添加公司 | ||
| 42 | + var ( | ||
| 43 | + data CompanytData | ||
| 44 | + err error | ||
| 45 | + ) | ||
| 46 | + err = json.Unmarshal(byteData, &data) | ||
| 47 | + if err != nil { | ||
| 48 | + return fmt.Errorf("数据解析失败:%s", err) | ||
| 49 | + } | ||
| 50 | + return service.addCompany(data) | ||
| 51 | + case "edit": | ||
| 52 | + //编辑 | ||
| 53 | + var ( | ||
| 54 | + data CompanytData | ||
| 55 | + err error | ||
| 56 | + ) | ||
| 57 | + err = json.Unmarshal(byteData, &data) | ||
| 58 | + if err != nil { | ||
| 59 | + return fmt.Errorf("数据解析失败:%s", err) | ||
| 60 | + } | ||
| 61 | + return service.updateCompany(data) | ||
| 62 | + case "setCompanyCharge": | ||
| 63 | + //设置公司主管 | ||
| 64 | + var ( | ||
| 65 | + data CompanyCharge | ||
| 66 | + err error | ||
| 67 | + ) | ||
| 68 | + err = json.Unmarshal(byteData, &data) | ||
| 69 | + if err != nil { | ||
| 70 | + return fmt.Errorf("数据解析失败:%s", err) | ||
| 71 | + } | ||
| 72 | + return service.updateCompanyCharge(data) | ||
| 73 | + default: | ||
| 74 | + return errors.New("action not found") | ||
| 75 | + } | ||
| 76 | + return nil | ||
| 77 | +} | ||
| 78 | + | ||
| 79 | +func (service SyncCompanyService) addCompany(data CompanytData) error { | ||
| 80 | + var ( | ||
| 81 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 82 | + err error | ||
| 83 | + ) | ||
| 84 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 85 | + return err | ||
| 86 | + } | ||
| 87 | + defer func() { | ||
| 88 | + transactionContext.RollbackTransaction() | ||
| 89 | + }() | ||
| 90 | + var ( | ||
| 91 | + companyRespository domain.CompanyRepository | ||
| 92 | + userRespository domain.UsersRepository | ||
| 93 | + ) | ||
| 94 | + if companyRespository, err = factory.CreateCompanyRepository(map[string]interface{}{ | ||
| 95 | + "transactionContext": transactionContext, | ||
| 96 | + }); err != nil { | ||
| 97 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 98 | + } | ||
| 99 | + if userRespository, err = factory.CreateUsersRepository(map[string]interface{}{ | ||
| 100 | + "transactionContext": transactionContext, | ||
| 101 | + }); err != nil { | ||
| 102 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 103 | + } | ||
| 104 | + comany := domain.Company{ | ||
| 105 | + Id: data.Company.Id, | ||
| 106 | + Name: data.Company.Name, | ||
| 107 | + Phone: "", | ||
| 108 | + Logo: data.Company.Logo, | ||
| 109 | + Remarks: data.Company.Remarks, | ||
| 110 | + AdminCompanyId: data.Company.AdminCompanyId, | ||
| 111 | + Status: data.Company.Status, | ||
| 112 | + Enable: domain.CompanyEnableNo, //默认初始化值 | ||
| 113 | + } | ||
| 114 | + err = companyRespository.Add(&comany) | ||
| 115 | + if err != nil { | ||
| 116 | + return fmt.Errorf("添加公司数据失败,%s", err) | ||
| 117 | + } | ||
| 118 | + user := domain.Users{ | ||
| 119 | + Id: data.User.Id, | ||
| 120 | + CompanyId: data.User.CompanyId, | ||
| 121 | + OpenId: data.User.OpenId, | ||
| 122 | + Name: data.User.Name, | ||
| 123 | + Sex: data.User.Sex, | ||
| 124 | + JobNum: data.User.JobNum, | ||
| 125 | + Phone: data.User.Phone, | ||
| 126 | + PrivatePhone: data.User.PrivatePhone, | ||
| 127 | + Email: data.User.Email, | ||
| 128 | + ExtensionNum: data.User.ExtensionNum, | ||
| 129 | + Workspace: data.User.WorkSpace, | ||
| 130 | + Status: data.User.Status, | ||
| 131 | + Avatar: data.User.Avatar, | ||
| 132 | + Remarks: data.User.Remarks, | ||
| 133 | + ChargeStatus: data.User.ChargeStatus, | ||
| 134 | + Permission: []domain.AdminPermissionBase{}, //初始化权限 | ||
| 135 | + AccessPartners: []domain.Partner{}, //默认初始化 | ||
| 136 | + } | ||
| 137 | + err = userRespository.Add(&user) | ||
| 138 | + if err != nil { | ||
| 139 | + return fmt.Errorf("添加用户数据失败,%s", err) | ||
| 140 | + } | ||
| 141 | + err = transactionContext.CommitTransaction() | ||
| 142 | + return nil | ||
| 143 | +} | ||
| 144 | + | ||
| 145 | +func (service SyncCompanyService) updateCompany(data CompanytData) error { | ||
| 146 | + var ( | ||
| 147 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 148 | + err error | ||
| 149 | + ) | ||
| 150 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 151 | + return err | ||
| 152 | + } | ||
| 153 | + defer func() { | ||
| 154 | + transactionContext.RollbackTransaction() | ||
| 155 | + }() | ||
| 156 | + var ( | ||
| 157 | + companyRespository domain.CompanyRepository | ||
| 158 | + userRespository domain.UsersRepository | ||
| 159 | + oldCompany domain.Company | ||
| 160 | + oldUser domain.Users | ||
| 161 | + ) | ||
| 162 | + if companyRespository, err = factory.CreateCompanyRepository(map[string]interface{}{ | ||
| 163 | + "transactionContext": transactionContext, | ||
| 164 | + }); err != nil { | ||
| 165 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 166 | + } | ||
| 167 | + if userRespository, err = factory.CreateUsersRepository(map[string]interface{}{ | ||
| 168 | + "transactionContext": transactionContext, | ||
| 169 | + }); err != nil { | ||
| 170 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 171 | + } | ||
| 172 | + oldCompany, err = companyRespository.FindOne(map[string]interface{}{ | ||
| 173 | + "Id": data.Company.Id, | ||
| 174 | + }) | ||
| 175 | + oldUser, err = userRespository.FindOne(map[string]interface{}{ | ||
| 176 | + "Id": data.User.Id, | ||
| 177 | + }) | ||
| 178 | + oldCompany.Update(map[string]interface{}{ | ||
| 179 | + "Name": data.Company.Name, | ||
| 180 | + "Logo": data.Company.Logo, | ||
| 181 | + "Remarks": data.Company.Remarks, | ||
| 182 | + "AdminCompanyId": data.Company.AdminCompanyId, | ||
| 183 | + "Status": data.User.Status, | ||
| 184 | + }) | ||
| 185 | + entryTime, _ := time.Parse("2006-01-02", data.User.EntryTime) | ||
| 186 | + oldUser.Update(map[string]interface{}{ | ||
| 187 | + "CompanyId": data.User.CompanyId, | ||
| 188 | + "OpenId": data.User.OpenId, | ||
| 189 | + "Name": data.User.Name, | ||
| 190 | + "Sex": data.User.Sex, | ||
| 191 | + "JobNum": data.User.JobNum, | ||
| 192 | + "Phone": data.User.Phone, | ||
| 193 | + "PrivatePhone": data.User.PrivatePhone, | ||
| 194 | + "Email": data.User.Email, | ||
| 195 | + "ExtensionNum": data.User.ExtensionNum, | ||
| 196 | + "Workspace": data.User.WorkSpace, | ||
| 197 | + "Status": data.User.Status, | ||
| 198 | + "Avatar": data.User.Avatar, | ||
| 199 | + "Remarks": data.User.Remarks, | ||
| 200 | + "ChargeStatus": data.User.ChargeStatus, | ||
| 201 | + "EntryTime": entryTime, | ||
| 202 | + }) | ||
| 203 | + err = companyRespository.Edit(&oldCompany) | ||
| 204 | + if err != nil { | ||
| 205 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 206 | + } | ||
| 207 | + err = userRespository.Edit(&oldUser) | ||
| 208 | + if err != nil { | ||
| 209 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 210 | + } | ||
| 211 | + err = transactionContext.CommitTransaction() | ||
| 212 | + return nil | ||
| 213 | +} | ||
| 214 | + | ||
| 215 | +func (service SyncCompanyService) updateCompanyCharge(data CompanyCharge) error { | ||
| 216 | + var ( | ||
| 217 | + transactionContext, _ = factory.CreateTransactionContext(nil) | ||
| 218 | + err error | ||
| 219 | + ) | ||
| 220 | + if err = transactionContext.StartTransaction(); err != nil { | ||
| 221 | + return err | ||
| 222 | + } | ||
| 223 | + defer func() { | ||
| 224 | + transactionContext.RollbackTransaction() | ||
| 225 | + }() | ||
| 226 | + var ( | ||
| 227 | + userRespository domain.UsersRepository | ||
| 228 | + ) | ||
| 229 | + if userRespository, err = factory.CreateUsersRepository(map[string]interface{}{ | ||
| 230 | + "transactionContext": transactionContext, | ||
| 231 | + }); err != nil { | ||
| 232 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 233 | + } | ||
| 234 | + var oldUsers []domain.Users | ||
| 235 | + _, oldUsers, err = userRespository.Find(map[string]interface{}{ | ||
| 236 | + "CompanyId": data.Id, | ||
| 237 | + "charge_status": domain.UserIsCompanyCharge, | ||
| 238 | + "Limit": -1, | ||
| 239 | + }) | ||
| 240 | + for i := range oldUsers { | ||
| 241 | + _ = oldUsers[i].Update(map[string]interface{}{ | ||
| 242 | + "charge_status": domain.UserIsNotCompanyCharge, | ||
| 243 | + }) | ||
| 244 | + err = userRespository.Edit(&oldUsers[i]) | ||
| 245 | + if err != nil { | ||
| 246 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, "更新用户的charge_status失败:"+err.Error()) | ||
| 247 | + } | ||
| 248 | + } | ||
| 249 | + for _, v := range data.Charge { | ||
| 250 | + var userToUpdate domain.Users | ||
| 251 | + userToUpdate, err := userRespository.FindOne(map[string]interface{}{ | ||
| 252 | + "Id": v, | ||
| 253 | + }) | ||
| 254 | + if err != nil { | ||
| 255 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("获取用户id=%d的失败:%s", v, err.Error())) | ||
| 256 | + } | ||
| 257 | + _ = userToUpdate.Update(map[string]interface{}{ | ||
| 258 | + "charge_status": domain.UserIsCompanyCharge, | ||
| 259 | + }) | ||
| 260 | + err = userRespository.Edit(&userToUpdate) | ||
| 261 | + if err != nil { | ||
| 262 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, fmt.Sprintf("更新用户id=%d的失败:%s", v, err.Error())) | ||
| 263 | + } | ||
| 264 | + } | ||
| 265 | + err = transactionContext.CommitTransaction() | ||
| 6 | return nil | 266 | return nil |
| 7 | } | 267 | } |
| @@ -87,7 +87,7 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | @@ -87,7 +87,7 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | ||
| 87 | if err != nil { | 87 | if err != nil { |
| 88 | return fmt.Errorf("数据解析失败:%s", err) | 88 | return fmt.Errorf("数据解析失败:%s", err) |
| 89 | } | 89 | } |
| 90 | - err = service.addEmployeeData(data) | 90 | + err = service.addEmployeeData([]EmployeeData{data}) |
| 91 | return err | 91 | return err |
| 92 | case "edit": | 92 | case "edit": |
| 93 | //编辑更新 | 93 | //编辑更新 |
| @@ -99,7 +99,7 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | @@ -99,7 +99,7 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | ||
| 99 | if err != nil { | 99 | if err != nil { |
| 100 | return fmt.Errorf("数据解析失败:%s", err) | 100 | return fmt.Errorf("数据解析失败:%s", err) |
| 101 | } | 101 | } |
| 102 | - err = service.updateEmployeeData(data) | 102 | + err = service.updateEmployeeData([]EmployeeData{data}) |
| 103 | return err | 103 | return err |
| 104 | case "batchDelete": | 104 | case "batchDelete": |
| 105 | //批量删除 | 105 | //批量删除 |
| @@ -123,10 +123,9 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | @@ -123,10 +123,9 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | ||
| 123 | return fmt.Errorf("数据解析失败:%s", err) | 123 | return fmt.Errorf("数据解析失败:%s", err) |
| 124 | } | 124 | } |
| 125 | return service.updateUsersStatus(data) | 125 | return service.updateUsersStatus(data) |
| 126 | - | ||
| 127 | - case "batchRemove": | ||
| 128 | - //移动通讯录用户部门 暂时不需要 | ||
| 129 | - return nil | 126 | + // case "batchRemove": |
| 127 | + // //移动通讯录用户部门 暂时不需要 | ||
| 128 | + // return nil | ||
| 130 | case "import": | 129 | case "import": |
| 131 | //批量导入 | 130 | //批量导入 |
| 132 | var ( | 131 | var ( |
| @@ -137,19 +136,18 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | @@ -137,19 +136,18 @@ func (service SyncEmployeeService) DoAction(action string, byteData []byte) erro | ||
| 137 | if err != nil { | 136 | if err != nil { |
| 138 | return fmt.Errorf("数据解析失败:%s", err) | 137 | return fmt.Errorf("数据解析失败:%s", err) |
| 139 | } | 138 | } |
| 140 | - // service.addEmployeeData(data.Add) | ||
| 141 | - // for i := range data.Edit { | ||
| 142 | - // UpdateEmployeeData(data.Edit[i]) | ||
| 143 | - // } | 139 | + err1 := service.addEmployeeData(data.Add) |
| 140 | + err2 := service.updateEmployeeData(data.Edit) | ||
| 141 | + if err1 != nil || err2 != nil { | ||
| 142 | + return fmt.Errorf("添加用户错误:%s,更新用户发生错误:%s", err1, err2) | ||
| 143 | + } | ||
| 144 | return nil | 144 | return nil |
| 145 | - | ||
| 146 | default: | 145 | default: |
| 147 | - return errors.New("nothing todo") | 146 | + return errors.New("action not found") |
| 148 | } | 147 | } |
| 149 | - return nil | ||
| 150 | } | 148 | } |
| 151 | 149 | ||
| 152 | -func (service SyncEmployeeService) addEmployeeData(data EmployeeData) error { | 150 | +func (service SyncEmployeeService) addEmployeeData(datas []EmployeeData) error { |
| 153 | var ( | 151 | var ( |
| 154 | transactionContext, _ = factory.CreateTransactionContext(nil) | 152 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| 155 | err error | 153 | err error |
| @@ -166,34 +164,37 @@ func (service SyncEmployeeService) addEmployeeData(data EmployeeData) error { | @@ -166,34 +164,37 @@ func (service SyncEmployeeService) addEmployeeData(data EmployeeData) error { | ||
| 166 | }); err != nil { | 164 | }); err != nil { |
| 167 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 165 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 168 | } | 166 | } |
| 169 | - newUser := domain.Users{ | ||
| 170 | - Id: data.Id, | ||
| 171 | - CompanyId: data.CompanyId, | ||
| 172 | - OpenId: data.OpenId, | ||
| 173 | - Name: data.Name, | ||
| 174 | - Sex: data.Sex, | ||
| 175 | - JobNum: data.JobNum, | ||
| 176 | - Phone: data.Phone, | ||
| 177 | - PrivatePhone: data.PrivatePhone, | ||
| 178 | - Email: data.Email, | ||
| 179 | - ExtensionNum: data.ExtensionNum, | ||
| 180 | - Workspace: data.WorkSpace, | ||
| 181 | - Status: data.Status, | ||
| 182 | - Avatar: data.Avatar, | ||
| 183 | - Remarks: data.Remarks, | ||
| 184 | - ChargeStatus: data.ChargeStatus, | ||
| 185 | - Permission: []domain.AdminPermissionBase{}, //权限 | ||
| 186 | - AccessPartners: []domain.Partner{}, | ||
| 187 | - } | ||
| 188 | - newUser.EntryTime, _ = time.Parse("2006-01-02", data.EntryTime) | ||
| 189 | - if err = usersRepository.Add(&newUser); err != nil { | ||
| 190 | - return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 167 | + for i := range datas { |
| 168 | + data := datas[i] | ||
| 169 | + newUser := domain.Users{ | ||
| 170 | + Id: data.Id, | ||
| 171 | + CompanyId: data.CompanyId, | ||
| 172 | + OpenId: data.OpenId, | ||
| 173 | + Name: data.Name, | ||
| 174 | + Sex: data.Sex, | ||
| 175 | + JobNum: data.JobNum, | ||
| 176 | + Phone: data.Phone, | ||
| 177 | + PrivatePhone: data.PrivatePhone, | ||
| 178 | + Email: data.Email, | ||
| 179 | + ExtensionNum: data.ExtensionNum, | ||
| 180 | + Workspace: data.WorkSpace, | ||
| 181 | + Status: data.Status, | ||
| 182 | + Avatar: data.Avatar, | ||
| 183 | + Remarks: data.Remarks, | ||
| 184 | + ChargeStatus: data.ChargeStatus, | ||
| 185 | + Permission: []domain.AdminPermissionBase{}, //初始化权限 | ||
| 186 | + AccessPartners: []domain.Partner{}, //默认初始化 | ||
| 187 | + } | ||
| 188 | + newUser.EntryTime, _ = time.Parse("2006-01-02", data.EntryTime) | ||
| 189 | + if err = usersRepository.Add(&newUser); err != nil { | ||
| 190 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 191 | + } | ||
| 191 | } | 192 | } |
| 192 | err = transactionContext.CommitTransaction() | 193 | err = transactionContext.CommitTransaction() |
| 193 | return err | 194 | return err |
| 194 | } | 195 | } |
| 195 | 196 | ||
| 196 | -func (service SyncEmployeeService) updateEmployeeData(data EmployeeData) error { | 197 | +func (service SyncEmployeeService) updateEmployeeData(datas []EmployeeData) error { |
| 197 | var ( | 198 | var ( |
| 198 | transactionContext, _ = factory.CreateTransactionContext(nil) | 199 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| 199 | err error | 200 | err error |
| @@ -210,39 +211,42 @@ func (service SyncEmployeeService) updateEmployeeData(data EmployeeData) error { | @@ -210,39 +211,42 @@ func (service SyncEmployeeService) updateEmployeeData(data EmployeeData) error { | ||
| 210 | }); err != nil { | 211 | }); err != nil { |
| 211 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 212 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 212 | } | 213 | } |
| 213 | - var oldUser domain.Users | ||
| 214 | - oldUser, err = usersRepository.FindOne(domain.UsersFindOneQuery{ | ||
| 215 | - Id: data.Id, | ||
| 216 | - }) | ||
| 217 | - if err != nil { | ||
| 218 | - return lib.ThrowError(lib.BUSINESS_ERROR, err.Error()) | ||
| 219 | - } | ||
| 220 | - entryTime, _ := time.Parse("2006-01-02", data.EntryTime) | ||
| 221 | - _ = oldUser.Update(map[string]interface{}{ | ||
| 222 | - "Id": data.Id, | ||
| 223 | - "CompanyId": data.CompanyId, | ||
| 224 | - "OpenId": data.OpenId, | ||
| 225 | - "Name": data.Name, | ||
| 226 | - "Sex": data.Sex, | ||
| 227 | - "JobNum": data.JobNum, | ||
| 228 | - "Phone": data.Phone, | ||
| 229 | - "PrivatePhone": data.PrivatePhone, | ||
| 230 | - "Email": data.Email, | ||
| 231 | - "ExtensionNum": data.ExtensionNum, | ||
| 232 | - "Workspace": data.WorkSpace, | ||
| 233 | - "Status": data.Status, | ||
| 234 | - "Avatar": data.Avatar, | ||
| 235 | - "Remarks": data.Remarks, | ||
| 236 | - "ChargeStatus": data.ChargeStatus, | ||
| 237 | - "EntryTime": entryTime, | ||
| 238 | - }) | ||
| 239 | - if err = usersRepository.Edit(&oldUser); err != nil { | ||
| 240 | - return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 214 | + for i := range datas { |
| 215 | + data := datas[i] | ||
| 216 | + var oldUser domain.Users | ||
| 217 | + oldUser, err = usersRepository.FindOne(map[string]interface{}{ | ||
| 218 | + "Id": data.Id, | ||
| 219 | + }) | ||
| 220 | + if err != nil { | ||
| 221 | + return lib.ThrowError(lib.BUSINESS_ERROR, err.Error()) | ||
| 222 | + } | ||
| 223 | + entryTime, _ := time.Parse("2006-01-02", data.EntryTime) | ||
| 224 | + _ = oldUser.Update(map[string]interface{}{ | ||
| 225 | + "CompanyId": data.CompanyId, | ||
| 226 | + "OpenId": data.OpenId, | ||
| 227 | + "Name": data.Name, | ||
| 228 | + "Sex": data.Sex, | ||
| 229 | + "JobNum": data.JobNum, | ||
| 230 | + "Phone": data.Phone, | ||
| 231 | + "PrivatePhone": data.PrivatePhone, | ||
| 232 | + "Email": data.Email, | ||
| 233 | + "ExtensionNum": data.ExtensionNum, | ||
| 234 | + "Workspace": data.WorkSpace, | ||
| 235 | + "Status": data.Status, | ||
| 236 | + "Avatar": data.Avatar, | ||
| 237 | + "Remarks": data.Remarks, | ||
| 238 | + "ChargeStatus": data.ChargeStatus, | ||
| 239 | + "EntryTime": entryTime, | ||
| 240 | + }) | ||
| 241 | + if err = usersRepository.Edit(&oldUser); err != nil { | ||
| 242 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 243 | + } | ||
| 241 | } | 244 | } |
| 242 | err = transactionContext.CommitTransaction() | 245 | err = transactionContext.CommitTransaction() |
| 243 | return err | 246 | return err |
| 244 | } | 247 | } |
| 245 | 248 | ||
| 249 | +//deleteEmployeeData 删除用户 | ||
| 246 | func (service SyncEmployeeService) deleteEmployeeData(data DeleteUserData) error { | 250 | func (service SyncEmployeeService) deleteEmployeeData(data DeleteUserData) error { |
| 247 | var ( | 251 | var ( |
| 248 | transactionContext, _ = factory.CreateTransactionContext(nil) | 252 | transactionContext, _ = factory.CreateTransactionContext(nil) |
| @@ -291,3 +295,8 @@ func (service SyncEmployeeService) updateUsersStatus(data ForbidAllowUserData) e | @@ -291,3 +295,8 @@ func (service SyncEmployeeService) updateUsersStatus(data ForbidAllowUserData) e | ||
| 291 | err = transactionContext.CommitTransaction() | 295 | err = transactionContext.CommitTransaction() |
| 292 | return err | 296 | return err |
| 293 | } | 297 | } |
| 298 | + | ||
| 299 | +//ChangeAdmin 变更公司负责人,超级管理员 | ||
| 300 | +func (service SyncEmployeeService) ChangeAdmin() error { | ||
| 301 | + return nil | ||
| 302 | +} |
| 1 | package domain | 1 | package domain |
| 2 | 2 | ||
| 3 | -import "time" | 3 | +import ( |
| 4 | + "fmt" | ||
| 5 | + "time" | ||
| 6 | +) | ||
| 4 | 7 | ||
| 5 | // 公司的状态 1正常 2禁用 | 8 | // 公司的状态 1正常 2禁用 |
| 6 | const ( | 9 | const ( |
| @@ -48,6 +51,34 @@ func (c Company) EnableIsOk() bool { | @@ -48,6 +51,34 @@ func (c Company) EnableIsOk() bool { | ||
| 48 | return c.Enable == CompanyEnableYes | 51 | return c.Enable == CompanyEnableYes |
| 49 | } | 52 | } |
| 50 | 53 | ||
| 54 | +func (c *Company) Update(m map[string]interface{}) error { | ||
| 55 | + if v, ok := m["Name"]; ok { | ||
| 56 | + c.Name = fmt.Sprint(v) | ||
| 57 | + } | ||
| 58 | + if v, ok := m["Phone"]; ok { | ||
| 59 | + c.Phone = fmt.Sprint(v) | ||
| 60 | + } | ||
| 61 | + if v, ok := m["Logo"]; ok { | ||
| 62 | + c.Logo = fmt.Sprint(v) | ||
| 63 | + } | ||
| 64 | + if v, ok := m["Remarks"]; ok { | ||
| 65 | + c.Remarks = fmt.Sprint(v) | ||
| 66 | + } | ||
| 67 | + if v, ok := m["AdminCompanyId"]; ok { | ||
| 68 | + c.AdminCompanyId = v.(int) | ||
| 69 | + } | ||
| 70 | + if v, ok := m["Remarks"]; ok { | ||
| 71 | + c.Remarks = fmt.Sprint(v) | ||
| 72 | + } | ||
| 73 | + if v, ok := m["Status"]; ok { | ||
| 74 | + c.Status = v.(int8) | ||
| 75 | + } | ||
| 76 | + if v, ok := m["Enable"]; ok { | ||
| 77 | + c.Enable = v.(int8) | ||
| 78 | + } | ||
| 79 | + return nil | ||
| 80 | +} | ||
| 81 | + | ||
| 51 | type CompanyRepository interface { | 82 | type CompanyRepository interface { |
| 52 | Add(*Company) error | 83 | Add(*Company) error |
| 53 | Edit(*Company) error | 84 | Edit(*Company) error |
| @@ -10,8 +10,8 @@ const ( | @@ -10,8 +10,8 @@ const ( | ||
| 10 | 10 | ||
| 11 | //用户是否是主管 :【1:是主管】【 2:不是主管】 | 11 | //用户是否是主管 :【1:是主管】【 2:不是主管】 |
| 12 | const ( | 12 | const ( |
| 13 | - userIsCharge int8 = 1 | ||
| 14 | - userIsNotCharge int8 = 2 | 13 | + UserIsCompanyCharge int8 = 1 |
| 14 | + UserIsNotCompanyCharge int8 = 2 | ||
| 15 | ) | 15 | ) |
| 16 | 16 | ||
| 17 | //Users 企业平台的用户 | 17 | //Users 企业平台的用户 |
| @@ -36,6 +36,7 @@ type Users struct { | @@ -36,6 +36,7 @@ type Users struct { | ||
| 36 | UpdateAt time.Time | 36 | UpdateAt time.Time |
| 37 | Permission []AdminPermissionBase //权限 | 37 | Permission []AdminPermissionBase //权限 |
| 38 | AccessPartners []Partner | 38 | AccessPartners []Partner |
| 39 | + AdminType int8 //是否是公司负责人,即超级管理员 | ||
| 39 | } | 40 | } |
| 40 | 41 | ||
| 41 | //IsUsable 用户是否可用 | 42 | //IsUsable 用户是否可用 |
| @@ -45,7 +46,7 @@ func (u Users) IsUsable() bool { | @@ -45,7 +46,7 @@ func (u Users) IsUsable() bool { | ||
| 45 | 46 | ||
| 46 | //IsCharge 用户是否是主管 | 47 | //IsCharge 用户是否是主管 |
| 47 | func (u Users) IsCharge() bool { | 48 | func (u Users) IsCharge() bool { |
| 48 | - return u.ChargeStatus == userIsCharge | 49 | + return u.ChargeStatus == UserIsCompanyCharge |
| 49 | } | 50 | } |
| 50 | 51 | ||
| 51 | func (u Users) InCompany(companyid int64) bool { | 52 | func (u Users) InCompany(companyid int64) bool { |
| @@ -104,23 +105,26 @@ func (u *Users) Update(m map[string]interface{}) error { | @@ -104,23 +105,26 @@ func (u *Users) Update(m map[string]interface{}) error { | ||
| 104 | if v, ok := m["AccessPartners"]; ok { | 105 | if v, ok := m["AccessPartners"]; ok { |
| 105 | u.AccessPartners = v.([]Partner) | 106 | u.AccessPartners = v.([]Partner) |
| 106 | } | 107 | } |
| 108 | + if v, ok := m["AdminType"]; ok { | ||
| 109 | + u.AdminType = v.(int8) | ||
| 110 | + } | ||
| 107 | return nil | 111 | return nil |
| 108 | } | 112 | } |
| 109 | 113 | ||
| 110 | -type UsersFindOneQuery struct { | ||
| 111 | - Id int64 | ||
| 112 | - Phone string | ||
| 113 | -} | 114 | +// type UsersFindOneQuery struct { |
| 115 | +// Id int64 | ||
| 116 | +// Phone string | ||
| 117 | +// } | ||
| 114 | 118 | ||
| 115 | -type UsersFindQuery struct { | ||
| 116 | - Ids []int64 | ||
| 117 | - Offset int | ||
| 118 | - Limit int | ||
| 119 | -} | 119 | +// type UsersFindQuery struct { |
| 120 | +// Ids []int64 | ||
| 121 | +// Offset int | ||
| 122 | +// Limit int | ||
| 123 | +// } | ||
| 120 | type UsersRepository interface { | 124 | type UsersRepository interface { |
| 121 | Add(*Users) error | 125 | Add(*Users) error |
| 122 | Edit(*Users) error | 126 | Edit(*Users) error |
| 123 | Remove([]int64) error | 127 | Remove([]int64) error |
| 124 | - FindOne(UsersFindOneQuery) (Users, error) | ||
| 125 | - Find(UsersFindQuery) (int, []Users, error) | 128 | + FindOne(queryOptions map[string]interface{}) (Users, error) |
| 129 | + Find(queryOptions map[string]interface{}) (int, []Users, error) | ||
| 126 | } | 130 | } |
| @@ -6,7 +6,7 @@ import "time" | @@ -6,7 +6,7 @@ import "time" | ||
| 6 | type Company struct { | 6 | type Company struct { |
| 7 | tableName struct{} `pg:"company"` | 7 | tableName struct{} `pg:"company"` |
| 8 | // 唯一标识 | 8 | // 唯一标识 |
| 9 | - Id int64 | 9 | + Id int64 `pg:",pk"` |
| 10 | // 名称 | 10 | // 名称 |
| 11 | Name string | 11 | Name string |
| 12 | // 手机号码 | 12 | // 手机号码 |
| @@ -8,7 +8,7 @@ import ( | @@ -8,7 +8,7 @@ import ( | ||
| 8 | 8 | ||
| 9 | type Users struct { | 9 | type Users struct { |
| 10 | tableName struct{} `pg:"users"` | 10 | tableName struct{} `pg:"users"` |
| 11 | - Id int64 //用户id | 11 | + Id int64 `pg:",pk"` //用户id |
| 12 | CompanyId int64 //公司id | 12 | CompanyId int64 //公司id |
| 13 | OpenId int64 //统一用户中心 | 13 | OpenId int64 //统一用户中心 |
| 14 | Name string //用户名称 | 14 | Name string //用户名称 |
| @@ -23,6 +23,7 @@ type Users struct { | @@ -23,6 +23,7 @@ type Users struct { | ||
| 23 | Status int8 //状态:【1:正常】【 2:禁用】 | 23 | Status int8 //状态:【1:正常】【 2:禁用】 |
| 24 | Avatar string ///头像 | 24 | Avatar string ///头像 |
| 25 | Remarks string //备注 | 25 | Remarks string //备注 |
| 26 | + AdminType int8 //是否为当前公司负责人 【1:是】【2:否】 | ||
| 26 | ChargeStatus int8 //是否为当前公司主管 【1:是】【2:否】 | 27 | ChargeStatus int8 //是否为当前公司主管 【1:是】【2:否】 |
| 27 | Permission []domain.AdminPermissionBase //权限 | 28 | Permission []domain.AdminPermissionBase //权限 |
| 28 | AccessPartners []domain.Partner //可查看的合伙人 | 29 | AccessPartners []domain.Partner //可查看的合伙人 |
| 1 | package transaction | 1 | package transaction |
| 2 | 2 | ||
| 3 | -import "github.com/go-pg/pg/v10" | 3 | +import ( |
| 4 | + "github.com/go-pg/pg/v10" | ||
| 5 | + "github.com/go-pg/pg/v10/orm" | ||
| 6 | +) | ||
| 4 | 7 | ||
| 5 | type TransactionContext struct { | 8 | type TransactionContext struct { |
| 6 | PgDd *pg.DB | 9 | PgDd *pg.DB |
| @@ -26,6 +29,13 @@ func (transactionContext *TransactionContext) RollbackTransaction() error { | @@ -26,6 +29,13 @@ func (transactionContext *TransactionContext) RollbackTransaction() error { | ||
| 26 | return err | 29 | return err |
| 27 | } | 30 | } |
| 28 | 31 | ||
| 32 | +func (transactionContext *TransactionContext) GetDB() orm.DB { | ||
| 33 | + if transactionContext.PgTx != nil { | ||
| 34 | + return transactionContext.PgTx | ||
| 35 | + } | ||
| 36 | + return transactionContext.PgDd | ||
| 37 | +} | ||
| 38 | + | ||
| 29 | func NewPGTransactionContext(pgDd *pg.DB) *TransactionContext { | 39 | func NewPGTransactionContext(pgDd *pg.DB) *TransactionContext { |
| 30 | return &TransactionContext{ | 40 | return &TransactionContext{ |
| 31 | PgDd: pgDd, | 41 | PgDd: pgDd, |
| 1 | package repository | 1 | package repository |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "errors" | ||
| 4 | "fmt" | 5 | "fmt" |
| 5 | 6 | ||
| 6 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | 7 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" |
| @@ -82,7 +83,25 @@ func (reponsitory CompanyRepository) Edit(m *domain.Company) error { | @@ -82,7 +83,25 @@ func (reponsitory CompanyRepository) Edit(m *domain.Company) error { | ||
| 82 | } | 83 | } |
| 83 | 84 | ||
| 84 | func (reponsitory CompanyRepository) FindOne(queryOptions map[string]interface{}) (domain.Company, error) { | 85 | func (reponsitory CompanyRepository) FindOne(queryOptions map[string]interface{}) (domain.Company, error) { |
| 85 | - return domain.Company{}, nil | 86 | + |
| 87 | + if len(queryOptions) == 0 { | ||
| 88 | + return domain.Company{}, errors.New("queryOptions empty") | ||
| 89 | + } | ||
| 90 | + var ( | ||
| 91 | + err error | ||
| 92 | + tx = reponsitory.transactionContext.PgTx | ||
| 93 | + m models.Company | ||
| 94 | + ) | ||
| 95 | + | ||
| 96 | + query := tx.Model(&m) | ||
| 97 | + if v, ok := queryOptions["Id"]; ok { | ||
| 98 | + query = query.Where("id=?", v) | ||
| 99 | + } | ||
| 100 | + err = query.First() | ||
| 101 | + if err != nil { | ||
| 102 | + return domain.Company{}, err | ||
| 103 | + } | ||
| 104 | + return reponsitory.transformPgModelToDomainModel(&m) | ||
| 86 | } | 105 | } |
| 87 | 106 | ||
| 88 | func (reponsitory CompanyRepository) Find(queryOptions map[string]interface{}) (int64, []domain.Company, error) { | 107 | func (reponsitory CompanyRepository) Find(queryOptions map[string]interface{}) (int64, []domain.Company, error) { |
| 1 | package repository | 1 | package repository |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | + "errors" | ||
| 4 | "fmt" | 5 | "fmt" |
| 5 | "time" | 6 | "time" |
| 6 | 7 | ||
| @@ -110,24 +111,19 @@ func (reponsitory UsersRepository) Edit(u *domain.Users) error { | @@ -110,24 +111,19 @@ func (reponsitory UsersRepository) Edit(u *domain.Users) error { | ||
| 110 | return err | 111 | return err |
| 111 | } | 112 | } |
| 112 | 113 | ||
| 113 | -func (reponsitory UsersRepository) FindOne(queryOptions domain.UsersFindOneQuery) (domain.Users, error) { | 114 | +func (reponsitory UsersRepository) FindOne(queryOptions map[string]interface{}) (domain.Users, error) { |
| 115 | + if len(queryOptions) == 0 { | ||
| 116 | + return domain.Users{}, errors.New("queryOptions empty") | ||
| 117 | + } | ||
| 114 | var ( | 118 | var ( |
| 115 | - err error | ||
| 116 | - tx = reponsitory.transactionContext.PgTx | ||
| 117 | - m models.Users | ||
| 118 | - hasWhere bool | 119 | + err error |
| 120 | + tx = reponsitory.transactionContext.PgTx | ||
| 121 | + m models.Users | ||
| 119 | ) | 122 | ) |
| 123 | + | ||
| 120 | query := tx.Model(&m) | 124 | query := tx.Model(&m) |
| 121 | - if queryOptions.Id > 0 { | ||
| 122 | - query = query.Where("id=?", queryOptions.Id) | ||
| 123 | - hasWhere = true | ||
| 124 | - } | ||
| 125 | - if len(queryOptions.Phone) > 0 { | ||
| 126 | - query = query.Where("phone=?", queryOptions.Id) | ||
| 127 | - hasWhere = true | ||
| 128 | - } | ||
| 129 | - if !hasWhere { | ||
| 130 | - return domain.Users{}, fmt.Errorf("queryOptions 中没有搜索条件") | 125 | + if v, ok := queryOptions["Id"]; ok { |
| 126 | + query = query.Where("id=?", v) | ||
| 131 | } | 127 | } |
| 132 | err = query.First() | 128 | err = query.First() |
| 133 | if err != nil { | 129 | if err != nil { |
| @@ -136,15 +132,25 @@ func (reponsitory UsersRepository) FindOne(queryOptions domain.UsersFindOneQuery | @@ -136,15 +132,25 @@ func (reponsitory UsersRepository) FindOne(queryOptions domain.UsersFindOneQuery | ||
| 136 | return reponsitory.transformPgModelToDomainModel(&m) | 132 | return reponsitory.transformPgModelToDomainModel(&m) |
| 137 | } | 133 | } |
| 138 | 134 | ||
| 139 | -func (reponsitory UsersRepository) Find(queryOption domain.UsersFindQuery) (int, []domain.Users, error) { | 135 | +func (reponsitory UsersRepository) Find(queryOption map[string]interface{}) (int, []domain.Users, error) { |
| 140 | db := reponsitory.transactionContext.PgTx | 136 | db := reponsitory.transactionContext.PgTx |
| 141 | usersModels := []models.Users{} | 137 | usersModels := []models.Users{} |
| 142 | query := db.Model(&usersModels) | 138 | query := db.Model(&usersModels) |
| 143 | - if queryOption.Offset > -1 { | ||
| 144 | - query = query.Offset(queryOption.Offset) | 139 | + if v, ok := queryOption["CompanyId"]; ok { |
| 140 | + query = query.Where("company_id=?", v) | ||
| 141 | + } | ||
| 142 | + if v, ok := queryOption["ChargeStatus"]; ok { | ||
| 143 | + query = query.Where("charge_status=?", v) | ||
| 145 | } | 144 | } |
| 146 | - if queryOption.Limit > 0 { | ||
| 147 | - query = query.Limit(queryOption.Limit) | 145 | + if v, ok := queryOption["Offset"]; ok { |
| 146 | + offset := v.(int) | ||
| 147 | + query = query.Offset(offset) | ||
| 148 | + } | ||
| 149 | + if v, ok := queryOption["Limit"]; ok { | ||
| 150 | + limit := v.(int) | ||
| 151 | + if limit > 0 { | ||
| 152 | + query = query.Limit(limit) | ||
| 153 | + } | ||
| 148 | } else { | 154 | } else { |
| 149 | query = query.Limit(20) | 155 | query = query.Limit(20) |
| 150 | } | 156 | } |
-
请 注册 或 登录 后发表评论