feat(ik3cloud): 新增联系人与工厂模块功能
Some checks failed
Go / build (push) Failing after 19s

- 新增联系人保存与删除逻辑处理
- 新增工厂信息保存逻辑,支持银行、财务等详细信息
- 部门与员工模块接口参数调整,统一使用实体对象返回
- 优化部门与员工的增删改查操作,去除冗余代码
- 统一使用 constant 包管理业务类型常量
- 增加性别转换与整型数组转字符串工具函数
- RPC 注册新增工厂与联系人服务路由
- 调整客户端调用参数结构,增强代码可读性与维护性
This commit is contained in:
2025-11-27 11:57:47 +08:00
parent b70ca388cf
commit c5030bf438
13 changed files with 493 additions and 357 deletions

View File

@@ -11,6 +11,7 @@ import (
"path/filepath"
"reflect"
"regexp"
"strconv"
"strings"
"time"
@@ -336,3 +337,21 @@ func InsertSorted[T any](array []T, value T, comp func(int) bool) []T {
array[i] = value // 插入值
return array
}
// GetGender @TITLE 获取性别
func GetGender(sex string) string {
if InArray(sex, []string{"男", "M"}) {
return "SEX01_SYS"
} else if InArray(sex, []string{"女", "F"}) {
return "SEX02_SYS"
}
return ""
}
func IntArrayToString(args []int64) string {
var result []string
for _, item := range args {
result = append(result, strconv.FormatInt(item, 10))
}
return strings.Join(result, ",")
}

22
app/controller/contact.go Normal file
View File

@@ -0,0 +1,22 @@
package controller
import (
"context"
"ik3cloud/app/logic"
"git.kumo.work/shama/service/ik3cloud"
)
type Contact struct {
}
// Save @TITLE 保存联系人
func (f *Contact) Save(ctx context.Context, args ik3cloud.ArgsContactSave, entity *[]ik3cloud.Entity) (err error) {
*entity, err = logic.ContactLogic.Save(args.CompanyType, args.Contacts)
return err
}
// Delete @TITLE 删除联系人
func (f *Contact) Delete(ctx context.Context, args ik3cloud.Unique, reply *int) error {
return logic.ContactLogic.Delete(args.Numbers, args.Ids)
}

View File

@@ -17,8 +17,8 @@ func (d *Department) All(ctx context.Context, args int, reply *[]ik3cloud.Depart
}
// Add @TITLE 添加部门
func (d *Department) Add(ctx context.Context, args ik3cloud.ArgsDepartmentAdd, departmentId *int64) (err error) {
*departmentId, err = logic.DepartmentLogic.Add(args)
func (d *Department) Add(ctx context.Context, args ik3cloud.ArgsDepartmentAdd, entity *ik3cloud.Entity) (err error) {
*entity, err = logic.DepartmentLogic.Add(args)
return err
}
@@ -28,6 +28,6 @@ func (d *Department) Edit(ctx context.Context, args ik3cloud.ArgsDepartmentEdit,
}
// Delete @TITLE 删除部门
func (d *Department) Delete(ctx context.Context, numbers []string, reply *int) error {
return logic.DepartmentLogic.Delete(numbers)
func (d *Department) Delete(ctx context.Context, args ik3cloud.Unique, reply *int) error {
return logic.DepartmentLogic.Delete(args.Numbers, args.Ids)
}

17
app/controller/factory.go Normal file
View File

@@ -0,0 +1,17 @@
package controller
import (
"context"
"ik3cloud/app/logic"
"git.kumo.work/shama/service/ik3cloud"
)
type Factory struct {
}
// Save @TITLE 保存工厂
func (f *Factory) Save(ctx context.Context, args ik3cloud.ArgsFactorySave, entity *ik3cloud.Entity) (err error) {
*entity, err = logic.FactoryLogic.Save(args)
return err
}

View File

@@ -21,8 +21,8 @@ func (s *Staff) List(ctx context.Context, args ik3cloud.ArgsStaffList, reply *ik
}
// Add @TITLE 添加员工
func (s *Staff) Add(ctx context.Context, args ik3cloud.ArgsStaffAdd, staffId *int64) (err error) {
*staffId, err = logic.StaffLogic.Add(args)
func (s *Staff) Add(ctx context.Context, args ik3cloud.ArgsStaffAdd, entity *ik3cloud.Entity) (err error) {
*entity, err = logic.StaffLogic.Add(args)
return
}
@@ -32,16 +32,16 @@ func (s *Staff) Edit(ctx context.Context, args ik3cloud.ArgsStaffEdit, reply *in
}
// Disable @TITLE 禁用员工
func (s *Staff) Disable(ctx context.Context, numbers []string, reply *int) error {
return logic.StaffLogic.Disable(numbers)
func (s *Staff) Disable(ctx context.Context, args ik3cloud.Unique, reply *int) error {
return logic.StaffLogic.Disable(args.Numbers, args.Ids)
}
// Enable @TITLE 启用员工
func (s *Staff) Enable(ctx context.Context, numbers []string, reply *int) error {
return logic.StaffLogic.Enable(numbers)
func (s *Staff) Enable(ctx context.Context, args ik3cloud.Unique, reply *int) error {
return logic.StaffLogic.Enable(args.Numbers, args.Ids)
}
// Delete @TITLE 删除
func (s *Staff) Delete(ctx context.Context, numbers []string, reply *int) error {
return logic.StaffLogic.Delete(numbers)
func (s *Staff) Delete(ctx context.Context, args ik3cloud.Unique, reply *int) error {
return logic.StaffLogic.Delete(args.Numbers, args.Ids)
}

View File

@@ -0,0 +1,18 @@
package bean
import "ik3cloud/app/lib/ik3cloud"
type ContactData struct {
FCreateOrgId ik3cloud.FNumber `json:"FCreateOrgId"`
FCompanyType string `json:"FCompanyType"`
FCompany ik3cloud.FNumber `json:"FCompany"`
FEmail string `json:"FEmail"`
FFax string `json:"FFax"`
FIsDefaultContact bool `json:"FIsDefaultContact"`
FMobile string `json:"FMobile"`
FName string `json:"FName"`
FNumber string `json:"FNumber"`
FPost string `json:"FPost"`
FTel string `json:"FTel"`
Fex ik3cloud.FNumber `json:"Fex"`
}

View File

@@ -2,10 +2,19 @@ package ik3cloud
import (
"encoding/json"
"errors"
"ik3cloud/app/common"
"ik3cloud/app/config"
"ik3cloud/app/lib/logger"
"log"
"strings"
"git.kumo.work/shama/service/ik3cloud"
"git.kumo.work/shama/service/ik3cloud/constant"
"github.com/deep-project/kingdee"
"github.com/deep-project/kingdee/adapters"
client2 "github.com/deep-project/kingdee/pkg/client"
"go.uber.org/zap"
)
var Client = &client{}
@@ -14,7 +23,9 @@ type client struct {
config *Config
*client2.Client
}
type FNumber struct {
FNumber string `json:"FNumber"`
}
type Config struct {
Host string // 接口地址
AccountId string // 账套ID
@@ -57,11 +68,7 @@ type result struct {
Message string `json:"Message"`
DIndex int `json:"DIndex"`
} `json:"Errors"`
SuccessEntitys []struct {
Id int `json:"Id"`
Number string `json:"Number"`
DIndex int `json:"DIndex"`
} `json:"SuccessEntitys"`
SuccessEntitys []ik3cloud.Entity `json:"SuccessEntitys"`
SuccessMessages []interface{} `json:"SuccessMessages"`
MsgCode int `json:"MsgCode"`
} `json:"ResponseStatus"`
@@ -70,3 +77,185 @@ type result struct {
NeedReturnData []any `json:"NeedReturnData"`
} `json:"Result"`
}
// Save @TITLE 保存
func (c *client) Save(companyType constant.Action, editFields []string, model map[string]any) (entity ik3cloud.Entity, err error) {
raw, err := c.Client.Save(companyType, map[string]any{
"NeedUpDateFields": editFields,
"Model": model,
})
marshal, _ := json.Marshal(model)
log.Println(string(marshal))
log.Println(string(raw))
if err != nil {
return entity, errors.New("保存失败")
}
result, _ := c.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("保存失败", zap.Error(err))
return entity, errors.New(item.Message)
}
return entity, errors.New("保存失败")
}
entity = result.Result.ResponseStatus.SuccessEntitys[0]
return
}
// MultiSave @TITLE 批量保存
func (c *client) MultiSave(companyType constant.Action, editFields []string, model any) (Entities []ik3cloud.Entity, err error) {
raw, err := c.Client.BatchSave(companyType, map[string]any{
"NeedUpDateFields": editFields,
"Model": model,
})
if err != nil {
return Entities, errors.New("保存失败")
}
result, _ := c.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("保存失败", zap.Error(err))
return Entities, errors.New(item.Message)
}
return Entities, errors.New("保存失败")
}
Entities = result.Result.ResponseStatus.SuccessEntitys
return
}
// Submit @Title 提交
func (c *client) Submit(companyType constant.Action, numbers []string, ids []int64) error {
raw, err := c.Client.Submit(companyType, map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
"Ids": common.IntArrayToString(ids),
})
if err != nil {
return errors.New("提交失败")
}
result, err := c.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("提交失败", zap.Error(err))
return errors.New(item.Message)
}
}
return nil
}
// Audit @Title 审核
func (c *client) Audit(companyType constant.Action, numbers []string, ids []int64) error {
raw, err := c.Client.Audit(companyType, map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
"Ids": common.IntArrayToString(ids),
})
if err != nil {
return errors.New("审核失败")
}
result, err := c.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("提交失败", zap.Error(err))
return errors.New(item.Message)
}
}
return nil
}
// UnAudit @Title 反审
func (c *client) UnAudit(companyType constant.Action, numbers []string, ids []int64) error {
raw, err := c.Client.UnAudit(companyType, map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
"Ids": common.IntArrayToString(ids),
})
if err != nil {
return errors.New("反审失败")
}
result, err := c.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("提交失败", zap.Error(err))
return errors.New(item.Message)
}
}
return nil
}
// Delete @TITLE 删除
func (c *client) Delete(companyType constant.Action, numbers []string, ids []int64) error {
if err := c.UnAudit(companyType, numbers, ids); err != nil {
logger.Logger.Error("删除失败", zap.Error(err))
}
raw, err := c.Client.Delete(companyType, map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
"Ids": common.IntArrayToString(ids),
})
if err != nil {
return errors.New("删除失败")
}
result, err := c.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("提交失败", zap.Error(err))
return errors.New(item.Message)
}
}
return nil
}
// Enable @TITLE 启用
func (c *client) Enable(companyType constant.Action, numbers []string, ids []int64) error {
raw, err := c.Client.ExecuteOperation(companyType, "Enable", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
"Ids": common.IntArrayToString(ids),
})
if err != nil {
return errors.New("启用失败")
}
result, _ := c.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("提交失败", zap.Error(err))
return errors.New(item.Message)
}
return errors.New("启用失败")
}
return nil
}
// Disable @TITLE 禁用账户
func (c *client) Disable(companyType constant.Action, numbers []string, ids []int64) error {
raw, err := c.Client.ExecuteOperation(companyType, "Forbid", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
"Ids": common.IntArrayToString(ids),
})
if err != nil {
return errors.New("禁用失败")
}
result, _ := c.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
logger.Logger.Error("提交失败", zap.Error(err))
return errors.New(item.Message)
}
return errors.New("禁用失败")
}
return nil
}

55
app/logic/contact.go Normal file
View File

@@ -0,0 +1,55 @@
package logic
import (
"ik3cloud/app/common"
"ik3cloud/app/config"
"ik3cloud/app/lib/ik3cloud"
ik3cloud2 "git.kumo.work/shama/service/ik3cloud"
"git.kumo.work/shama/service/ik3cloud/constant"
)
var ContactLogic = &contactLogic{}
type contactLogic struct {
}
// Save @TITLE 保存联系人
func (c *contactLogic) Save(companyType constant.Action, datas []ik3cloud2.ContactItem) (entities []ik3cloud2.Entity, err error) {
var model []map[string]any
for _, data := range datas {
fex := ""
if common.InArray(data.Sex, []string{"男", "M"}) {
fex = "SEX01_SYS"
} else if common.InArray(data.Sex, []string{"女", "F"}) {
fex = "SEX02_SYS"
}
model = append(model, map[string]any{
"FCONTACTID": data.ContactId,
"FCreateOrgId": map[string]any{
"FNumber": config.Config.Ik3cloud.OrganizationNumber,
},
"FNumber": data.Number,
"FName": data.Name,
"Fex": map[string]any{
"FNumber": fex,
}, // 性别
"FPost": data.Job, // 职务
"FCompanyType": companyType,
"FCompany": map[string]any{
"FNumber": data.CompanyNumber,
},
"FTel": data.Tel,
"FMobile": data.Phone,
"FFax": data.Fax,
"FEmail": data.Email,
"FIsDefaultContact": data.IsDefault,
})
}
return ik3cloud.Client.MultiSave(constant.ActionContact, nil, model)
}
// Delete @TITLE 删除联系人
func (c *contactLogic) Delete(numbers []string, ids []int64) error {
return ik3cloud.Client.Delete(constant.ActionContact, numbers, ids)
}

View File

@@ -6,12 +6,10 @@ import (
"ik3cloud/app/common"
"ik3cloud/app/config"
"ik3cloud/app/lib/ik3cloud"
"ik3cloud/app/lib/logger"
"strings"
"time"
ik3cloud2 "git.kumo.work/shama/service/ik3cloud"
"go.uber.org/zap"
"git.kumo.work/shama/service/ik3cloud/constant"
)
var DepartmentLogic = &departmentLogic{}
@@ -29,7 +27,7 @@ type departmentItem struct {
// All @TITLE 全部部门
func (d *departmentLogic) All() (result []ik3cloud2.DepartmentItem, err error) {
raw, err := ik3cloud.Client.BillQuery(map[string]any{
"FormId": "BD_Department",
"FormId": constant.ActionDepartment,
"FieldKeys": "FNumber,FName,FParentID.FNumber,FParentID.FName,FDEPTID",
"FilterString": []map[string]any{{
"FieldName": "FUseOrgId.FNumber",
@@ -60,9 +58,8 @@ func (d *departmentLogic) All() (result []ik3cloud2.DepartmentItem, err error) {
}
// Add @TITLE 添加部门
func (d *departmentLogic) Add(data ik3cloud2.ArgsDepartmentAdd) (departmentId int64, err error) {
raw, err := ik3cloud.Client.Save("BD_Department", map[string]any{
"Model": map[string]any{
func (d *departmentLogic) Add(data ik3cloud2.ArgsDepartmentAdd) (entity ik3cloud2.Entity, err error) {
return ik3cloud.Client.Save(constant.ActionDepartment, nil, map[string]any{
"FCreateOrgId": map[string]any{
"FNumber": config.Config.Ik3cloud.OrganizationNumber,
},
@@ -81,32 +78,7 @@ func (d *departmentLogic) Add(data ik3cloud2.ArgsDepartmentAdd) (departmentId in
},
"FIsCopyFlush": false,
"FIsDetailDpt": false,
},
})
if err != nil {
err = errors.New("添加部门失败")
return
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
err = errors.New("添加部门失败")
return
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return departmentId, errors.New(item.Message)
}
}
departmentId = result.Result.Id
if err1 := d.submit([]string{data.Number}); err1 != nil {
logger.Logger.Error("部门提交失败", zap.Error(err1))
return
}
if err1 := d.audit([]string{data.Number}); err1 != nil {
logger.Logger.Error("部门审核失败", zap.Error(err1))
return
}
return
}
// Edit @TITLE 编辑部门
@@ -114,52 +86,22 @@ func (d *departmentLogic) Edit(departmentId int64, data ik3cloud2.ArgsDepartment
if departmentId == 0 {
return errors.New("部门错误")
}
raw, err := ik3cloud.Client.Save("BD_Department", map[string]any{
"NeedUpDateFields": []string{"FName", "FNumber", "FParentID.FNumber"},
"Model": map[string]any{
if _, err := ik3cloud.Client.Save(constant.ActionDepartment, []string{"FName", "FNumber", "FParentID.FNumber"}, map[string]any{
"FDEPTID": departmentId,
"FNumber": data.Number,
"FName": data.Name,
"FParentID": map[string]any{
"FNumber": data.ParentNumber,
},
},
})
if err != nil {
return errors.New("编辑部门失败")
}
result, _ := ik3cloud.Client.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
return errors.New("编辑部门失败")
}); err != nil {
return errors.New("部门编辑失败")
}
return nil
}
// Delete @TITLE 删除部门
func (d *departmentLogic) Delete(numbers []string) error {
if err := d.unAudit(numbers); err != nil {
logger.Logger.Error("部门反审失败", zap.Error(err))
}
raw, err := ik3cloud.Client.Delete("BD_Department", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("删除部门失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
func (d *departmentLogic) Delete(numbers []string, ids []int64) error {
return ik3cloud.Client.Delete(constant.ActionDepartment, numbers, ids)
}
// @Title 获取菜单树
@@ -182,66 +124,3 @@ func (d *departmentLogic) getTree(datas []ik3cloud2.DepartmentItem) (result []ik
}
return
}
// @Title 提交
func (d *departmentLogic) submit(numbers []string) error {
raw, err := ik3cloud.Client.Submit("BD_Department", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("部门提交失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
}
// @Title 审核
func (d *departmentLogic) audit(numbers []string) error {
raw, err := ik3cloud.Client.Audit("BD_Department", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("部门审核失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
}
// @Title 反审
func (d *departmentLogic) unAudit(numbers []string) error {
raw, err := ik3cloud.Client.UnAudit("BD_Department", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("部门反审失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
}

81
app/logic/factory.go Normal file
View File

@@ -0,0 +1,81 @@
package logic
import (
"ik3cloud/app/common"
"ik3cloud/app/config"
"ik3cloud/app/lib/ik3cloud"
ik3cloud2 "git.kumo.work/shama/service/ik3cloud"
"git.kumo.work/shama/service/ik3cloud/constant"
)
var FactoryLogic = &factoryLogic{}
type factoryLogic struct {
}
// Save @TITLE 保存工厂
func (f *factoryLogic) Save(data ik3cloud2.ArgsFactorySave) (entity ik3cloud2.Entity, err error) {
var contants []map[string]any
for _, contact := range data.Contacts {
contants = append(contants, map[string]any{
"FContactNumber": contact.ContactNumber,
"FContact": contact.Name,
"FPost": contact.Job,
"FTel": contact.Tel,
"FMobile": contact.Phone,
"FFax": contact.Fax,
"FEmail": contact.Email,
"FGender": map[string]any{"FNumber": common.GetGender(contact.Sex)}, // 性别
"FContactIsDefault": contact.IsDefault,
})
}
return ik3cloud.Client.Save(constant.ActionFactory, nil, map[string]any{
"FSupplierId": data.FactoryId,
"FCreateOrgId": map[string]any{
"FNumber": config.Config.Ik3cloud.OrganizationNumber,
},
"FNumber": data.Number,
"FName": data.Name,
"FUseOrgId": map[string]any{
"FNumber": config.Config.Ik3cloud.OrganizationNumber,
},
"FShortName": data.ShortName,
"FBaseInfo": map[string]any{
"FAddress": data.Address,
"FZip": data.ZipCode,
"FLegalPerson": data.LegalPerson,
"FRegisterCode": data.TaxNumber,
"FTendPermit": data.TaxNumber,
"FSOCIALCRECODE": data.TaxNumber,
"FRegisterAddress": data.RegAddress,
//"FRegisterFund": 11.0,
"FSupplyClassify": "CG",
},
"FFinanceInfo": map[string]any{
"FPayCurrencyId": map[string]any{
"FNumber": "PRE001",
},
"FPayAdvanceAmount": 0,
"FTaxType": map[string]any{
"FNumber": "SFL02_SYS",
},
"FInvoiceType": 0,
"FTaxRateId": map[string]any{
"FNumber": "SL02_SYS",
},
},
"FBankInfo": []map[string]any{
{
"FBankCountry": map[string]any{
"FNumber": "China",
},
"FBankCode": data.BankAccount,
"FBankHolder": data.Name,
"FOpenBankName": data.Bank,
"FBankIsDefault": true,
},
},
"FSupplierContact": contants,
})
}

View File

@@ -6,14 +6,12 @@ import (
"ik3cloud/app/common"
"ik3cloud/app/config"
"ik3cloud/app/lib/ik3cloud"
"ik3cloud/app/lib/logger"
"log"
"strings"
"time"
ik3cloud2 "git.kumo.work/shama/service/ik3cloud"
"git.kumo.work/shama/service/ik3cloud/constant"
"git.kumo.work/shama/service/lib/bean"
"go.uber.org/zap"
)
var StaffLogic = &staffLogic{}
@@ -85,7 +83,7 @@ func (s *staffLogic) List(page bean.Page, search ik3cloud2.StaffSearch) (list []
}
}
raw, err := ik3cloud.Client.BillQuery(map[string]interface{}{
"FormId": "BD_Empinfo",
"FormId": constant.ActionStaff,
"FieldKeys": "FName,FStaffNumber,FBaseProperty,FMobile,FTel,FForbidStatus",
"FilterString": where,
"StartRow": page.GetStart(),
@@ -118,9 +116,8 @@ func (s *staffLogic) List(page bean.Page, search ik3cloud2.StaffSearch) (list []
}
// Add @TITLE 添加员工
func (s *staffLogic) Add(data ik3cloud2.ArgsStaffAdd) (staffId int64, err error) {
raw, err := ik3cloud.Client.Save("BD_Empinfo", map[string]any{
"Model": map[string]any{
func (s *staffLogic) Add(data ik3cloud2.ArgsStaffAdd) (entity ik3cloud2.Entity, err error) {
return ik3cloud.Client.Save(constant.ActionStaff, nil, map[string]any{
"FCreateOrgId": map[string]any{
"FNumber": config.Config.Ik3cloud.OrganizationNumber,
},
@@ -136,32 +133,7 @@ func (s *staffLogic) Add(data ik3cloud2.ArgsStaffAdd) (staffId int64, err error)
"FCreateUser": false,
"FCreateCashier": false,
"FJoinDate": time.Now().Format("2006-01-02 15:04:05"),
},
})
if err != nil {
err = errors.New("添加员工失败")
return
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
err = errors.New("添加员工失败")
return
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return staffId, errors.New(item.Message)
}
}
staffId = result.Result.Id
if err1 := s.submit([]string{data.Number}); err1 != nil {
logger.Logger.Error("员工提交失败", zap.Error(err1))
return
}
if err1 := s.audit([]string{data.Number}); err1 != nil {
logger.Logger.Error("员工审核失败", zap.Error(err1))
return
}
return
}
// Edit @TITLE 员工编辑
@@ -169,151 +141,30 @@ func (s *staffLogic) Edit(staffId int64, data ik3cloud2.ArgsStaffAdd) error {
if staffId == 0 {
return errors.New("员工错误")
}
raw, err := ik3cloud.Client.Save("BD_Empinfo", map[string]any{
"NeedUpDateFields": []string{"FStaffNumber", "FName", "FMobile", "FTel", "FEmail"},
"Model": map[string]any{
if _, err := ik3cloud.Client.Save(constant.ActionStaff, []string{"FStaffNumber", "FName", "FMobile", "FTel", "FEmail"}, map[string]any{
"FID": staffId,
"FStaffNumber": data.Number,
"FName": data.Name,
"FMobile": data.Mobile,
"FTel": data.Tel,
"FEmail": data.Email,
},
})
if err != nil {
return errors.New("编辑员工失败")
}
result, _ := ik3cloud.Client.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}); err != nil {
return errors.New("编辑员工失败")
}
return nil
}
// Disable @TITLE 禁用账户
func (s *staffLogic) Disable(numbers []string) error {
raw, err := ik3cloud.Client.ExecuteOperation("BD_Empinfo", "Forbid", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("禁用员工失败")
}
result, _ := ik3cloud.Client.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
return errors.New("禁用员工失败")
}
return nil
func (s *staffLogic) Disable(numbers []string, ids []int64) error {
return ik3cloud.Client.Disable(constant.ActionStaff, numbers, ids)
}
// Enable @TITLE 启用账户
func (s *staffLogic) Enable(numbers []string) error {
raw, err := ik3cloud.Client.ExecuteOperation("BD_Empinfo", "Enable", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("启用员工失败")
}
result, _ := ik3cloud.Client.GetResult(raw)
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
return errors.New("启用员工失败")
}
return nil
func (s *staffLogic) Enable(numbers []string, ids []int64) error {
return ik3cloud.Client.Enable(constant.ActionStaff, numbers, ids)
}
// Delete @TITLE 删除
func (s *staffLogic) Delete(numbers []string) error {
if err := s.unAudit(numbers); err != nil {
logger.Logger.Error("部门反审失败", zap.Error(err))
}
raw, err := ik3cloud.Client.Delete("BD_Empinfo", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("删除员工失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
}
// @Title 提交
func (s *staffLogic) submit(numbers []string) error {
raw, err := ik3cloud.Client.Submit("BD_Empinfo", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("员工提交失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
}
// @Title 审核
func (s *staffLogic) audit(numbers []string) error {
raw, err := ik3cloud.Client.Audit("BD_Empinfo", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("员工审核失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
}
// @Title 反审
func (s *staffLogic) unAudit(numbers []string) error {
raw, err := ik3cloud.Client.UnAudit("BD_Empinfo", map[string]any{
"CreateOrgId": config.Config.Ik3cloud.OrganizationId,
"Numbers": strings.Join(numbers, ","),
})
if err != nil {
return errors.New("员工反审失败")
}
result, err := ik3cloud.Client.GetResult(raw)
if err != nil {
return err
}
if !result.Result.ResponseStatus.IsSuccess {
for _, item := range result.Result.ResponseStatus.Errors {
return errors.New(item.Message)
}
}
return nil
func (s *staffLogic) Delete(numbers []string, ids []int64) error {
return ik3cloud.Client.Delete(constant.ActionStaff, numbers, ids)
}

View File

@@ -16,4 +16,10 @@ func SetRouter(server *server.Server) {
if err := server.RegisterName("department", &controller.Department{}, ""); err != nil {
return
}
// 工厂
if err := server.RegisterName("factory", &controller.Factory{}, ""); err != nil {
}
// 联系人
if err := server.RegisterName("contact", &controller.Contact{}, ""); err != nil {
}
}

View File

@@ -5,6 +5,7 @@ import (
"ik3cloud"
"ik3cloud/app/config"
"ik3cloud/app/router"
"log"
"strings"
"time"
"unsafe"
@@ -21,12 +22,10 @@ func main() {
defer fn()
}
//query.SetDefault(mysql.Db)
s := server.NewServer()
// 注册中心
ik3cloud.AddRegistryPlugin(s)
//ik3cloud.AddRegistryPlugin(s)
// 设置路由
router.SetRouter(s)
@@ -64,7 +63,7 @@ func main() {
}
*((*time.Time)(ptr)) = location
})
log.Println(config.Config.Server.Port)
if err := s.Serve("tcp", fmt.Sprintf(":%d", config.Config.Server.Port)); err != nil {
return
}