作者 tangxvhui

更新

package command
//AddCompanyCommand 数据来源 企业平台 推送的消息
//新建公司
type AddCompanyCommand struct {
//新添加的公司
Comapany struct {
Id int64 `json:"id" `
Logo string `json:"logo"` // 公司logo
Name string `json:"name"` // 公司名称
Status int `json:"status"` // 公司状态,1正常 2禁用
} `json:"company"`
//新添加公司时, 新建的公司主管理员
User struct {
Id int64 ` json:"id"` // 用户Id
Phone string `json:"phone"` // 用户账号
Avatar string `json:"avatar"` // 用户头像URL
CompanyId int64 `json:"company_id"` // 公司编号
AdminType int `json:"admin_type"` // 1普通员工 2 主管理员
Name string `json:"name"` // 用户姓名
Status int `json:"status"` // 用户状态(1正常 2禁用)
} `json:"user"`
}
... ...
package command
//ChangeAdminCommand 数据来源 企业平台 推送的消息
// 换管理员
type ChangeAdminCommand struct {
CompanyId int64 `json:"company_id"`
UserAccount string `json:"phone"`
}
... ...
package command
//SetCompanyCharge 编辑公司主管
type SetCompanyCharge struct {
CompanyId int64 `json:"id" ` //公司id
ChargeUserIds []int64 `json:"charge" ` //主管id
}
... ...
package command
//UpdateCompanyCommand 数据来源 企业平台 推送的消息
type UpdateCompanyCommand struct {
Id int64 `json:"id,string"` // 公司编号
Logo string `json:"logo"` // 公司logo
Name string `json:"name"` // 公司名称
Status int `json:"status"` // 公司状态,1正常 2禁用
// 公司主管理员
User struct {
Id int64 ` json:"id"` // 用户Id
Phone string `json:"phone"` // 用户账号
Avatar string `json:"avatar"` // 用户头像URL
CompanyId int64 `json:"company_id"` // 公司编号
AdminType int `json:"admin_type"` // 1普通员工 2 主管理员
Name string `json:"name"` // 用户姓名
Status int `json:"status"` // 用户状态(1正常 2禁用)
} `json:"user"`
}
... ...
package company
type CompanyAction struct {
type CompanyServices struct {
}
//从BusinessAdmins 接收消息,变更公司数据
func (c CompanyAction) BusinessAdminCompany() error {
func (c CompanyServices) BusinessAdminCompany() error {
return nil
}
func (c CompanyAction) AddCompany() error {
func (c CompanyServices) AddCompany() error {
return nil
}
func (c CompanyAction) EditCompany() error {
func (c CompanyServices) EditCompany() error {
return nil
}
func (c CompanyAction) ChangeAdmin() error {
func (c CompanyServices) ChangeAdmin() error {
return nil
}
func (c CompanyAction) SetCompanyCharge() error {
func (c CompanyServices) SetCompanyCharge() error {
return nil
}
... ...
... ... @@ -9,11 +9,12 @@ type Company struct {
Status int //公司状态,1正常 2禁用
UpdateAt time.Time //更新时间
CreatedAt time.Time //创建时间
DeleteAt *time.Time
}
type CompanyRepository interface {
Save(company *Company) (*Company, error)
Remove(company *Company) (*Company, error)
FindOne(queryOptions map[string]interface{}) (*Company, error)
Find(queryOptions map[string]interface{}) (int64, []*Company, error)
Find(queryOptions map[string]interface{}) (int, []*Company, error)
}
... ...
... ... @@ -3,21 +3,23 @@ package domain
import "time"
type User struct {
UserId int64 // 用户Id
UserAccount string // 用户账号
UserAvatarUrl string // 用户头像URL
CompanyId int64 // 公司编号
IsPrincipal bool // 是否公司负责人
AdminType int // 1普通员工 2 主管理员
UserName string // 用户姓名
UserRoleId int64 // 用户角色id
UserStatus int // 用户状态(1正常 2禁用)
UpdateAt time.Time // 更新时间
Id int64 // 用户Id
Account string // 用户账号
AvatarUrl string // 用户头像URL
CompanyId int64 // 公司编号
IsPrincipal bool // 是否公司负责人
AdminType int // 1普通员工 2 主管理员
Name string // 用户姓名
RoleId int64 // 用户角色id
Status int // 用户状态(1正常 2禁用)
UpdateAt time.Time // 更新时间
DeleteAt *time.Time
CreateAt time.Time
}
type UserRepository interface {
Save(user *User) (*User, error)
Remove(user *User) (*User, error)
FindOne(queryOptions map[string]interface{}) (*User, error)
Find(queryOptions map[string]interface{}) (int64, []*User, error)
Find(queryOptions map[string]interface{}) (int, []*User, error)
}
... ...
package models
import "time"
type Company struct {
tableName struct{} `pg:"company"`
Id int64 `pg:"pk:id"` //公司id
Logo string //公司logo
Name string //公司名称
Status int //公司状态,1正常 2禁用
UpdateAt time.Time //更新时间
CreateAt time.Time //创建时间
DeleteAt *time.Time //删除时间
}
... ...
package models
import "time"
type User struct {
tableName struct{} `pg:"user"`
Id int64 `pg:"pk:id"` // 用户Id
Account string // 用户账号
AvatarUrl string // 用户头像URL
CompanyId int64 // 公司编号
IsPrincipal bool // 是否公司负责人
AdminType int // 1普通员工 2 主管理员
Name string // 用户姓名
RoleId int64 // 用户角色id
Status int // 用户状态(1正常 2禁用)
UpdateAt time.Time // 更新时间
CreateAt time.Time // 创建时间
DeleteAt *time.Time // 删除时间
}
... ...
... ... @@ -2,9 +2,12 @@ package repository
import (
"errors"
"time"
"github.com/go-pg/pg/v10"
pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
)
type CompanyRepository struct {
... ... @@ -13,24 +16,88 @@ type CompanyRepository struct {
var _ domain.CompanyRepository = (*CompanyRepository)(nil)
func (repo *CompanyRepository) Save(user *domain.Company) (*domain.Company, error) {
return user, nil
func (repo *CompanyRepository) Save(u *domain.Company) (*domain.Company, error) {
companyModel := models.Company{
Id: u.Id,
Logo: u.Logo,
Name: u.Name,
Status: u.Status,
UpdateAt: u.UpdateAt,
CreateAt: u.CreatedAt,
DeleteAt: u.DeleteAt,
}
tx := repo.transactionContext.PgTx
if companyModel.Id == 0 {
_, err := tx.Model(&companyModel).Insert()
if err != nil {
return nil, err
}
u.Id = companyModel.Id
} else {
_, err := tx.Model(&companyModel).WherePK().Update()
if err != nil {
return nil, err
}
}
return u, nil
}
func (repo *CompanyRepository) Remove(user *domain.Company) (*domain.Company, error) {
// tx := repository.transactionContext.PgTx
// userModel := new(models.Company)
// userModel.UserId = user.Identify().(int64)
// if _, err := tx.Model(userModel).WherePK().Delete(); err != nil {
// return user, err
// }
return user, errors.New("no support")
func (repo *CompanyRepository) Remove(u *domain.Company) (*domain.Company, error) {
nowTime := time.Now()
u.DeleteAt = &nowTime
_, err := repo.Save(u)
return u, err
}
func (repo *CompanyRepository) FindOne(queryOptions map[string]interface{}) (*domain.Company, error) {
return nil, nil
tx := repo.transactionContext.PgTx
companyModel := models.Company{}
query := tx.Model(&companyModel)
if v, ok := queryOptions["id"]; ok {
query.Where("id=?", v)
}
err := query.First()
if err == pg.ErrNoRows {
return nil, errors.New("company 不存在")
}
if err != nil {
return nil, err
}
result := repo.TransformToCompanyDomain(&companyModel)
return result, nil
}
func (repo *CompanyRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Company, error) {
return 0, nil, nil
func (repo *CompanyRepository) Find(queryOptions map[string]interface{}) (int, []*domain.Company, error) {
tx := repo.transactionContext.PgTx
companyModel := []models.Company{}
query := tx.Model(&companyModel).
Limit(20)
if v, ok := queryOptions["limit"]; ok {
query.Limit(v.(int))
}
if v, ok := queryOptions["offset"]; ok {
query.Offset(v.(int))
}
cnt, err := query.SelectAndCount()
if err != nil {
return 0, nil, err
}
var resultList []*domain.Company
for i := range companyModel {
result := repo.TransformToCompanyDomain(&companyModel[i])
resultList = append(resultList, result)
}
return cnt, resultList, nil
}
func (repo *CompanyRepository) TransformToCompanyDomain(m *models.Company) *domain.Company {
return &domain.Company{
Id: m.Id,
Logo: m.Logo,
Name: m.Name,
Status: m.Status,
UpdateAt: m.UpdateAt,
CreatedAt: m.CreateAt,
DeleteAt: m.DeleteAt,
}
}
... ...
... ... @@ -2,9 +2,12 @@ package repository
import (
"errors"
"time"
"github.com/go-pg/pg/v10"
pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/pg/models"
)
type UserRepository struct {
... ... @@ -14,23 +17,97 @@ type UserRepository struct {
var _ domain.UserRepository = (*UserRepository)(nil)
func (repo *UserRepository) Save(user *domain.User) (*domain.User, error) {
userModel := models.User{
Id: user.Id,
Account: user.Account,
AvatarUrl: user.AvatarUrl,
CompanyId: user.CompanyId,
IsPrincipal: user.IsPrincipal,
AdminType: user.AdminType,
Name: user.Name,
RoleId: user.RoleId,
Status: user.Status,
UpdateAt: user.UpdateAt,
CreateAt: user.CreateAt,
DeleteAt: user.DeleteAt,
}
tx := repo.transactionContext.PgTx
if userModel.Id == 0 {
_, err := tx.Model(&userModel).Insert()
if err != nil {
return nil, err
}
user.Id = userModel.Id
} else {
_, err := tx.Model(&userModel).WherePK().Update()
if err != nil {
return nil, err
}
}
return user, nil
}
func (repo *UserRepository) Remove(user *domain.User) (*domain.User, error) {
// tx := repository.transactionContext.PgTx
// userModel := new(models.User)
// userModel.UserId = user.Identify().(int64)
// if _, err := tx.Model(userModel).WherePK().Delete(); err != nil {
// return user, err
// }
return user, errors.New("no support")
nowTime := time.Now()
user.DeleteAt = &nowTime
_, err := repo.Save(user)
return user, err
}
func (repo *UserRepository) FindOne(queryOptions map[string]interface{}) (*domain.User, error) {
return nil, nil
tx := repo.transactionContext.PgTx
userModel := models.User{}
query := tx.Model(&userModel)
if v, ok := queryOptions["id"]; ok {
query.Where("id=?", v)
}
err := query.First()
if err == pg.ErrNoRows {
return nil, errors.New("user 不存在")
}
if err != nil {
return nil, err
}
result := repo.TransformToUserDomain(&userModel)
return result, nil
}
func (repo *UserRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.User, error) {
return 0, nil, nil
func (repo *UserRepository) Find(queryOptions map[string]interface{}) (int, []*domain.User, error) {
tx := repo.transactionContext.PgTx
userModel := []models.User{}
query := tx.Model(&userModel).
Limit(20)
if v, ok := queryOptions["limit"]; ok {
query.Limit(v.(int))
}
if v, ok := queryOptions["offset"]; ok {
query.Offset(v.(int))
}
cnt, err := query.SelectAndCount()
if err != nil {
return 0, nil, err
}
var resultList []*domain.User
for i := range userModel {
result := repo.TransformToUserDomain(&userModel[i])
resultList = append(resultList, result)
}
return cnt, resultList, nil
}
func (repo *UserRepository) TransformToUserDomain(user *models.User) *domain.User {
return &domain.User{
Id: user.Id,
Account: user.Account,
AvatarUrl: user.AvatarUrl,
CompanyId: user.CompanyId,
IsPrincipal: user.IsPrincipal,
AdminType: user.AdminType,
Name: user.Name,
RoleId: user.RoleId,
Status: user.Status,
UpdateAt: user.UpdateAt,
CreateAt: user.CreateAt,
DeleteAt: user.DeleteAt,
}
}
... ...