作者 陈志颖

Merge branch 'dev' of http://gitlab.fjmaimaimai.com/mmm-go/partnermg into v0.8.0-dev

@@ -225,20 +225,14 @@ func (service OrderInfoService) CreateNewOrder(cmd command.CreateOrderCommand) ( @@ -225,20 +225,14 @@ func (service OrderInfoService) CreateNewOrder(cmd command.CreateOrderCommand) (
225 }); err != nil { 225 }); err != nil {
226 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) 226 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
227 } 227 }
228 - //检查order_code是否重复  
229 - // if ok, err := orderBaseDao.OrderCodeExist(cmd.OrderCode, cmd.PartnerCategory, cmd.PartnerId); err != nil {  
230 - // return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())  
231 - // } else if ok {  
232 - // return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单号已存在")  
233 - // }  
234 - //检查delivery_code是否重复  
235 - if len(cmd.DeliveryCode) > 0 {  
236 - if ok, err := orderBaseDao.DeliveryCodeExist(cmd.DeliveryCode, cmd.CompanyId); err != nil {  
237 - return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())  
238 - } else if ok {  
239 - return nil, lib.ThrowError(lib.BUSINESS_ERROR, "发货号已存在")  
240 - } 228 +
  229 + if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode,
  230 + cmd.PartnerCategory, cmd.PartnerId, 0); err != nil {
  231 + return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
  232 + } else if ok {
  233 + return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单已存在")
241 } 234 }
  235 +
242 newOrder := &domain.OrderBase{ 236 newOrder := &domain.OrderBase{
243 OrderType: cmd.OrderType, OrderCode: cmd.OrderCode, 237 OrderType: cmd.OrderType, OrderCode: cmd.OrderCode,
244 DeliveryCode: cmd.DeliveryCode, 238 DeliveryCode: cmd.DeliveryCode,
@@ -436,12 +430,10 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) @@ -436,12 +430,10 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand)
436 // } 430 // }
437 // } 431 // }
438 //检查delivery_code是否重复 432 //检查delivery_code是否重复
439 - if cmd.DeliveryCode != oldOrderData.DeliveryCode {  
440 - if ok, err := orderBaseDao.DeliveryCodeExist(cmd.DeliveryCode, cmd.CompanyId, cmd.Id); err != nil {  
441 - return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())  
442 - } else if ok {  
443 - return nil, lib.ThrowError(lib.BUSINESS_ERROR, "发货号已存在")  
444 - } 433 + if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode, cmd.PartnerCategory, cmd.PartnerId, cmd.Id); err != nil {
  434 + return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
  435 + } else if ok {
  436 + return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单已存在")
445 } 437 }
446 //获取旧的订单中的商品 438 //获取旧的订单中的商品
447 oldOrderGoods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{ 439 oldOrderGoods, _, err = orderGoodRepository.Find(domain.OrderGoodFindQuery{
1 package command 1 package command
2 2
  3 +import (
  4 + "errors"
  5 +
  6 + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain"
  7 +)
  8 +
3 type EditUserPermissionCommand struct { 9 type EditUserPermissionCommand struct {
4 Id int64 `json:"id"` 10 Id int64 `json:"id"`
5 CompanyId int64 `json:"-"` 11 CompanyId int64 `json:"-"`
6 PermissionType []int64 `json:"permissionType"` //权限数据 12 PermissionType []int64 `json:"permissionType"` //权限数据
7 CheckedPartner []int64 `json:"checkedPartner"` //可查看合伙人列表合伙人 13 CheckedPartner []int64 `json:"checkedPartner"` //可查看合伙人列表合伙人
  14 + IsSenior int8 `json:"isSenior"`
  15 +}
  16 +
  17 +func (cmd EditUserPermissionCommand) Validate() error {
  18 + if cmd.IsSenior <= 0 {
  19 + return errors.New("是否是高管必填")
  20 + }
  21 + if !(cmd.IsSenior == domain.UserIsSeniorNo || cmd.IsSenior == domain.UserIsSeniorYes) {
  22 + return errors.New("是否是高管必填")
  23 + }
  24 + return nil
8 } 25 }
@@ -383,6 +383,7 @@ func (service UsersService) buildGetUserData(userData *domain.Users, partnerList @@ -383,6 +383,7 @@ func (service UsersService) buildGetUserData(userData *domain.Users, partnerList
383 "isAdmin": 0, 383 "isAdmin": 0,
384 "status": 0, 384 "status": 0,
385 "checkedPartner": []map[string]interface{}{}, 385 "checkedPartner": []map[string]interface{}{},
  386 + "isSenior": userData.IsSenior,
386 } 387 }
387 if userData.IsSuperAdmin() { 388 if userData.IsSuperAdmin() {
388 result["isAdmin"] = 1 389 result["isAdmin"] = 1
@@ -433,6 +434,9 @@ func (service UsersService) EditUserPermission(cmd command.EditUserPermissionCom @@ -433,6 +434,9 @@ func (service UsersService) EditUserPermission(cmd command.EditUserPermissionCom
433 transactionContext, _ = factory.CreateTransactionContext(nil) 434 transactionContext, _ = factory.CreateTransactionContext(nil)
434 err error 435 err error
435 ) 436 )
  437 + if err = cmd.Validate(); err != nil {
  438 + return lib.ThrowError(lib.BUSINESS_ERROR, err.Error())
  439 + }
436 if err = transactionContext.StartTransaction(); err != nil { 440 if err = transactionContext.StartTransaction(); err != nil {
437 return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) 441 return lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
438 } 442 }
@@ -501,9 +505,6 @@ func (service UsersService) EditUserPermission(cmd command.EditUserPermissionCom @@ -501,9 +505,6 @@ func (service UsersService) EditUserPermission(cmd command.EditUserPermissionCom
501 partners = append(partners, p) 505 partners = append(partners, p)
502 } 506 }
503 for i := range permissionList { 507 for i := range permissionList {
504 - // if permissionList[i].Code == domain.PERMINSSION_ADMIN_USER && !usersData.IsSuperAdmin() {  
505 - // return lib.ThrowError(lib.BUSINESS_ERROR, "操作异常")  
506 - // }  
507 p := domain.AdminPermissionBase{ 508 p := domain.AdminPermissionBase{
508 Id: permissionList[i].Id, 509 Id: permissionList[i].Id,
509 Code: permissionList[i].Code, 510 Code: permissionList[i].Code,
@@ -512,6 +513,7 @@ func (service UsersService) EditUserPermission(cmd command.EditUserPermissionCom @@ -512,6 +513,7 @@ func (service UsersService) EditUserPermission(cmd command.EditUserPermissionCom
512 } 513 }
513 updateMap := map[string]interface{}{ 514 updateMap := map[string]interface{}{
514 "AccessPartners": partners, 515 "AccessPartners": partners,
  516 + "IsSenior": cmd.IsSenior,
515 } 517 }
516 if !usersData.IsSuperAdmin() { 518 if !usersData.IsSuperAdmin() {
517 updateMap["Permission"] = permissionsBase 519 updateMap["Permission"] = permissionsBase
@@ -20,29 +20,36 @@ const ( @@ -20,29 +20,36 @@ const (
20 UserIsAdmin int8 = 2 20 UserIsAdmin int8 = 2
21 ) 21 )
22 22
  23 +//Users.IsSenior 用户是否是公司高管【1:是】【2:否】
  24 +const (
  25 + UserIsSeniorYes int8 = 1
  26 + UserIsSeniorNo int8 = 2
  27 +)
  28 +
23 //Users 企业平台的用户 29 //Users 企业平台的用户
24 type Users struct { 30 type Users struct {
25 - Id int64 //用户id  
26 - CompanyId int64 //公司id  
27 - OpenId int64 //统一用户中心  
28 - Name string //用户名称  
29 - Sex int8 //性别:【0:未知】【1:男】【2:女】  
30 - JobNum string //工号  
31 - Phone string //手机号,同账号  
32 - PrivatePhone string //私人手机号  
33 - Email string //邮件  
34 - ExtensionNum string //分机号  
35 - EntryTime time.Time //入职时间  
36 - Workspace string //工作地  
37 - Status int8 //状态:【1:正常】【 2:禁用】  
38 - Avatar string ///头像  
39 - Remarks string //备注  
40 - ChargeStatus int8 //是否为当前公司主管 【1:是】【2:否】  
41 - CreateAt time.Time  
42 - UpdateAt time.Time 31 + Id int64 //用户id
  32 + CompanyId int64 //公司id
  33 + OpenId int64 //统一用户中心
  34 + Name string //用户名称
  35 + Sex int8 //性别:【0:未知】【1:男】【2:女】
  36 + JobNum string //工号
  37 + Phone string //手机号,同账号
  38 + PrivatePhone string //私人手机号
  39 + Email string //邮件
  40 + ExtensionNum string //分机号
  41 + EntryTime time.Time //入职时间
  42 + Workspace string //工作地
  43 + Status int8 //状态:【1:正常】【 2:禁用】
  44 + Avatar string ///头像
  45 + Remarks string //备注
  46 + ChargeStatus int8 //是否为当前公司主管 【1:是】【2:否】
  47 + CreateAt time.Time //
  48 + UpdateAt time.Time //
43 Permission []AdminPermissionBase //权限 49 Permission []AdminPermissionBase //权限
44 - AccessPartners []Partner  
45 - AdminType int8 //是否是公司负责人,即超级管理员 1普通用户 2主管理员 50 + AccessPartners []Partner //
  51 + AdminType int8 //是否是公司负责人,即超级管理员 1普通用户 2主管理员
  52 + IsSenior int8 //是否是公司高管【1:是】【2:否】;用于确定是否可以拥有“可查看的合伙人”
46 } 53 }
47 54
48 //IsUsable 用户是否可用 55 //IsUsable 用户是否可用
@@ -71,6 +78,17 @@ func (u Users) HasPermissionByCode(code string) bool { @@ -71,6 +78,17 @@ func (u Users) HasPermissionByCode(code string) bool {
71 return false 78 return false
72 } 79 }
73 80
  81 +func (u *Users) SetIsSenior(senior int8) {
  82 + switch senior {
  83 + case UserIsSeniorYes:
  84 + u.IsSenior = senior
  85 + case UserIsSeniorNo:
  86 + u.IsSenior = senior
  87 + u.AccessPartners = make([]Partner, 0)
  88 + default:
  89 + }
  90 +}
  91 +
74 func (u *Users) Update(m map[string]interface{}) error { 92 func (u *Users) Update(m map[string]interface{}) error {
75 if v, ok := m["CompanyId"]; ok { 93 if v, ok := m["CompanyId"]; ok {
76 u.CompanyId = v.(int64) 94 u.CompanyId = v.(int64)
@@ -126,6 +144,10 @@ func (u *Users) Update(m map[string]interface{}) error { @@ -126,6 +144,10 @@ func (u *Users) Update(m map[string]interface{}) error {
126 if v, ok := m["AdminType"]; ok { 144 if v, ok := m["AdminType"]; ok {
127 u.AdminType = v.(int8) 145 u.AdminType = v.(int8)
128 } 146 }
  147 + if v, ok := m["IsSenior"]; ok {
  148 + senior := v.(int8)
  149 + u.SetIsSenior(senior)
  150 + }
129 return nil 151 return nil
130 } 152 }
131 153
@@ -23,26 +23,20 @@ func NewOrderBaseDao(transactionContext *transaction.TransactionContext) (*Order @@ -23,26 +23,20 @@ func NewOrderBaseDao(transactionContext *transaction.TransactionContext) (*Order
23 } 23 }
24 } 24 }
25 25
26 -//OrderCodeExist 检查order_code是否重复  
27 -//  
28 -func (dao OrderBaseDao) OrderCodeExist(code string, partnerCategory int64, partnerId int64) (bool, error) { 26 +//CheckOrderUnique 检查订单的是否已存在
  27 +//@companyId 公司id
  28 +//@orderCode 订单号
  29 +//@deliveryCode 发货单号
  30 +//@partnerCategoryCode 合伙人类型编号
  31 +func (dao OrderBaseDao) CheckOrderExist(companyId int64, orderCode string,
  32 + deliveryCode string, partnerCategory int64, partnerId int64, notId int64) (bool, error) {
29 tx := dao.transactionContext.GetDB() 33 tx := dao.transactionContext.GetDB()
30 - m := &models.OrderBase{}  
31 - query := tx.Model(m).  
32 - Where("order_code=?", code). 34 + query := tx.Model(&models.OrderBase{}).
  35 + Where("company_id=?", companyId).
  36 + Where("order_code=?", orderCode).
33 Where("partner_id=?", partnerId). 37 Where("partner_id=?", partnerId).
34 - Where(`partner_category @>'{"id":?}'`, partnerCategory)  
35 - ok, err := query.Exists()  
36 - return ok, err  
37 -}  
38 -  
39 -func (dao OrderBaseDao) DeliveryCodeExist(code string, companyId int64, notId ...int64) (bool, error) {  
40 - tx := dao.transactionContext.GetDB()  
41 - m := &models.OrderBase{}  
42 - query := tx.Model(m).Where("delivery_code=?", code).Where("company_id=?", companyId)  
43 - if len(notId) > 0 {  
44 - query = query.WhereIn("id not in(?)", notId)  
45 - } 38 + Where(`partner_category @>'{"id":?}'`, partnerCategory).
  39 + Where("id<>?", notId)
46 ok, err := query.Exists() 40 ok, err := query.Exists()
47 return ok, err 41 return ok, err
48 } 42 }
@@ -29,6 +29,7 @@ type Users struct { @@ -29,6 +29,7 @@ type Users struct {
29 ChargeStatus int8 //是否为当前公司主管 【1:是】【2:否】 29 ChargeStatus int8 //是否为当前公司主管 【1:是】【2:否】
30 Permission []domain.AdminPermissionBase //权限 30 Permission []domain.AdminPermissionBase //权限
31 AccessPartners []domain.Partner //可查看的合伙人 31 AccessPartners []domain.Partner //可查看的合伙人
  32 + IsSenior int8 //是否是公司高管【1:是】【2:否】;用于确定是否可以拥有“可查看的合伙人”
32 CreateAt time.Time 33 CreateAt time.Time
33 UpdateAt time.Time 34 UpdateAt time.Time
34 DeleteAt time.Time 35 DeleteAt time.Time
@@ -48,6 +48,7 @@ func (repository UsersRepository) transformPgModelToDomainModel(m *models.Users) @@ -48,6 +48,7 @@ func (repository UsersRepository) transformPgModelToDomainModel(m *models.Users)
48 Permission: m.Permission, 48 Permission: m.Permission,
49 AccessPartners: m.AccessPartners, 49 AccessPartners: m.AccessPartners,
50 AdminType: m.AdminType, 50 AdminType: m.AdminType,
  51 + IsSenior: m.IsSenior,
51 }, nil 52 }, nil
52 } 53 }
53 54
@@ -78,6 +79,7 @@ func (reponsitory UsersRepository) Add(u *domain.Users) error { @@ -78,6 +79,7 @@ func (reponsitory UsersRepository) Add(u *domain.Users) error {
78 Permission: u.Permission, 79 Permission: u.Permission,
79 AccessPartners: u.AccessPartners, 80 AccessPartners: u.AccessPartners,
80 AdminType: u.AdminType, 81 AdminType: u.AdminType,
  82 + IsSenior: u.IsSenior,
81 } 83 }
82 _, err = tx.Model(m).Insert() 84 _, err = tx.Model(m).Insert()
83 return err 85 return err
@@ -110,6 +112,7 @@ func (reponsitory UsersRepository) Edit(u *domain.Users) error { @@ -110,6 +112,7 @@ func (reponsitory UsersRepository) Edit(u *domain.Users) error {
110 Permission: u.Permission, 112 Permission: u.Permission,
111 AccessPartners: u.AccessPartners, 113 AccessPartners: u.AccessPartners,
112 AdminType: u.AdminType, 114 AdminType: u.AdminType,
  115 + IsSenior: u.IsSenior,
113 } 116 }
114 _, err = tx.Model(m).WherePK().Update() 117 _, err = tx.Model(m).WherePK().Update()
115 return err 118 return err
@@ -122,6 +122,7 @@ func (c *UserController) EditUserPermission() { @@ -122,6 +122,7 @@ func (c *UserController) EditUserPermission() {
122 Id int64 `json:"id"` 122 Id int64 `json:"id"`
123 PermissionType []int64 `json:"permissionType"` 123 PermissionType []int64 `json:"permissionType"`
124 CheckedPartner []int64 `json:"checkedPartner"` //合伙人 124 CheckedPartner []int64 `json:"checkedPartner"` //合伙人
  125 + IsSenior int8 `json:"isSenior"` //是否是高管【1:是】【2:否】
125 } 126 }
126 var ( 127 var (
127 param UserDetailParam 128 param UserDetailParam
@@ -139,6 +140,7 @@ func (c *UserController) EditUserPermission() { @@ -139,6 +140,7 @@ func (c *UserController) EditUserPermission() {
139 CompanyId: companyId, 140 CompanyId: companyId,
140 PermissionType: param.PermissionType, 141 PermissionType: param.PermissionType,
141 CheckedPartner: param.CheckedPartner, 142 CheckedPartner: param.CheckedPartner,
  143 + IsSenior: param.IsSenior,
142 }) 144 })
143 if err != nil { 145 if err != nil {
144 c.ResponseError(err) 146 c.ResponseError(err)