作者 陈志颖

合并分支 'dev' 到 'test'

Dev



查看合并请求 !6
正在显示 73 个修改的文件 包含 2769 行增加26 行删除
... ... @@ -8,6 +8,7 @@ _obj
_test
public/file
logs
download
# Architecture specific extensions/prefixes
*.[568vq]
... ... @@ -25,4 +26,4 @@ _testmain.go
*.test
.log
.idea
.vscode
... ...
#mmm-worth 1
\ No newline at end of file
# 价值系统后台管理服务
## 系统架构图
![diagram](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/diagram.png)
## 项目使用框架
- http框架:beego
- orm框架:go-pg
- 数据存储:postgresql
- 项目结构分层:基于端口适配器架构(六边形架构)实现领域驱动设计(DDD领域驱动)
## 项目目录结构
```
├─conf 项目配置文件
├─deploy 项目部署文件
├─document 接口文档
├─test 业务接口集成测试
├─dsl 领域描述语言文档
├─pkg
│ ├─application 应用层
│ │ ├─employee 员工
│ │ ├─task 任务
│ │ ├─suMoney 素币
│ │ ├─statistics 统计
│ │ ├─notification 消息通知
│ │ ├─customerValue 客户价值
│ │ ├─projectBelong 项目归属
│ │ ├─taskNature 任务性质
│ │ ├─unifiedUserCenter 统一用户中心适配
│ │ ├─event 注册领域业务事件订阅以及处理
│ │ └─factory 工厂类,组装复杂对象或者聚合
│ ├─domain 领域层(核心业务逻辑建模,实体,聚合根)
│ │ ├─event 领域事件
│ │ ├─service 领域服务
│ │ ├─domain... 领域对象
│ │ └─task 任务状态机实现
│ ├─infrastructure 基础设施层
│ │ ├─dao 数据访问对象
│ │ ├─domain_service 领域服务具体实现
│ │ ├─pg 数据模型定义
│ │ ├─repository 实体或者聚合根模型仓储
│ │ └─service_gateway 微服务网关,其他业务接口或者第三方服务接口网关
│ ├─constant 项目配置常量设置
│ ├─log 日志模块
│ └─port 用户接入层
│ └─beego beego框架接入实现http接口
└─logs 日志文件
```
## 主要业务模块
- 企业员工模块(application/employee)
- 素币模块(application/suMoney)
- 任务模块(application/task)
- 统计模块(application/statistics)
- 消息通知模块(application/notification)
- 适配统一用户中心模块(application/unifiedUserCenter)
## 任务有限状态机
![taskFSM]()
## 领域驱动设计-战略建模
### 领域
### 限界上下文
### 上下文映射
## 领域驱动设计-战术建模
### 实体
员工实体:Employee
现金池实体:CashPool
客户价值实体:CustomerValue
素币兑换活动实体:ExchangeCashActivity
素币兑换清单实体:ExchangeCashPerson
排行版时间实体:ListInterval
提醒消息实体:Notification
关闭任务记录实体:OffTaskRecord
项目归属实体:ProjectBelong
引用资源实体:ReferenceResource
驳回任务记录实体:RejectTaskRecord
任务实体:Task
素币事务记录实体:SuMoneyTransactionRecord
任务性质实体:TaskNature
已发送通知实体:SentNotification
### 值对象
员工信息值对象:EmployeeInfo
竞标任务信息值对象:BidInfo
竞标人值对象:BidderInfo
引用资源项值对象:ReferenceResourceItem
抢单任务信息值对象:RobInfo
任务贡献占比项值对象:TaskPercentageItem
解决评分项值对象:SolveScoreItem
### 聚合根
### 领域服务
验收任务服务
申请完成任务服务
竞标任务服务
选择竞标成功人服务
确认抢单任务服务
兑换素币服务
关闭任务服务
操作素币服务
已读全部消息服务
已读消息服务
驳回任务服务
发布任务服务
抢单任务服务
### 领域事件
## 领域驱动设计工程实现
### 模块
### 领域对象
### 资源库
### 防腐层
### 领域服务
### 数据流转
![avatar](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/dto.png)
### 上下文集成
### 分离领域
![avatar](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/dispatch.png)
## 安装与使用
[价值系统代码仓库地址](http://gitlab.fjmaimaimai.com/linmadan/mmm-worth)
### 新建开发分支,如:xxx-dev,下载相应分支代码
```
git clone -b xxx-dev http://gitlab.fjmaimaimai.com/linmadan/mmm-worth.git
```
### 安装项目依赖:
```
go mod tidy
```
### 启动项目
```
bee run
```
... ...
version: v1
kind: HttpApi
metadata:
service: config
path: /config
endpoints:
- method: listTaskStatus
route:
get: /task-statuses
- method: listTaskType
route:
get: /task-types
- method: listTaskNature
route:
get: /task-natures
- method: listCustomerValue
route:
get: /customer-values
- method: listReferenceResourceType
route:
get: /reference-resource-types
- method: listBidTimeMatch
route:
get: /bid-time-matchs
- method: listEmployeePermission
route:
get: /employee-permissions
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: customerValue
path: /customer-values
endpoints:
- method: createCustomerValue
route:
post: /
- method: updateCustomerValue
route:
put: /{customerValueId}
- method: getCustomerValue
route:
get: /{customerValueId}
- method: removeCustomerValue
route:
delete: /{customerValueId}
- method: listCustomerValue
route:
get: /
params:
- name: companyId
- name: customerValueName
- name: customerValueNameMatch
- name: offset
- name: limit
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: employee
path: /employees
endpoints:
- method: createEmployee
route:
post: /
- method: updateEmployee
route:
put: /{uid}
- method: getEmployee
route:
get: /{uid}
- method: removeEmployee
route:
delete: /{uid}
- method: listEmployee
route:
get: /
params:
- name: companyId
- name: employeeNameMatch
- name: offset
- name: limit
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: notification
path: /notifications
endpoints:
- method: readSentNotification
route:
post: /{sentNotificationId}/read
- method: readAllUnReadSentNotification
route:
post: /read-all
- method: listSentNotification
route:
get: /
params:
- name: receiverId
- name: notificationType
- name: offset
- name: limit
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: task
path: /off-task-records
endpoints:
- method: getOffTaskRecord
route:
get: /{offTaskRecordId}
- method: searchOffTaskRecord
route:
post: /search-off-task-record
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: projectBelong
path: /project-belongs
endpoints:
- method: createProjectBelong
route:
post: /
- method: updateProjectBelong
route:
put: /{projectBelongId}
- method: getProjectBelong
route:
get: /{projectBelongId}
- method: removeProjectBelong
route:
delete: /{projectBelongId}
- method: listProjectBelong
route:
get: /
params:
- name: companyId
- name: projectBelongName
- name: projectBelongNameMatch
- name: offset
- name: limit
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: task
path: /reject-task-records
endpoints:
- method: getRejectTaskRecord
route:
get: /{rejectTaskRecordId}
- method: searchRejectTaskRecord
route:
post: /search-reject-task-record
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: statistics
path: /statistics
endpoints:
- method: systemTaskStatistics
route:
post: /system-task
- method: personTaskStatistics
route:
post: /person-task
- method: personSuMoneyStatistics
route:
post: /person-su-money
- method: personNotificationStatistics
route:
post: /person-notification
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: suMoney
path: /su-money
endpoints:
- method: operationSuMoney
route:
post: /operation
- method: getSuMoneyTransactionRecord
route:
get: /su-money-transaction-records/{suMoneyTransactionRecordId}
- method: exchangeSuMoney
route:
post: /exchange
- method: searchSuMoneyTransactionRecord
route:
post: /search-su-money-transaction-record
- method: suMoneyTransactionRecordStatistics
route:
post: /su-money-transaction-record-statistics
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: task
path: /tasks
endpoints:
- method: rejectTaskReceiver
route:
post: /{taskId}/reject-task-receiver
- method: confirmRobTask
route:
post: /{taskId}/confirm-rob-task
- method: robTask
route:
post: /{taskId}/rob
- method: bidTask
route:
post: /{taskId}/bid
- method: applyCompleteTask
route:
post: /{taskId}/apply-complete
- method: releaseTask
route:
post: /{taskId}/release
- method: chooseSuccessfulBidder
route:
post: /{taskId}/choose-successful-bidder
- method: offTask
route:
post: /{taskId}/dff
- method: acceptanceTask
route:
post: /{taskId}/acceptance
- method: searchTask
route:
post: /search
- method: createTask
route:
post: /
- method: updateTask
route:
put: /{taskId}
- method: getTask
route:
get: /{taskId}
- method: removeTask
route:
delete: /{taskId}
- method: listTask
route:
get: /
params:
- name: companyId
- name: sponsor
- name: taskContentMatch
- name: taskType
- name: taskStatus
- name: customerValue
- name: taskNature
- name: isRewardTake
- name: bidTimeMatch
- name: receiver
- name: participator
- name: offset
- name: limit
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: taskNature
path: /task-natures
endpoints:
- method: createTaskNature
route:
post: /
- method: updateTaskNature
route:
put: /{taskNatureId}
- method: getTaskNature
route:
get: /{taskNatureId}
- method: removeTaskNature
route:
delete: /{taskNatureId}
- method: listTaskNature
route:
get: /
params:
- name: companyId
- name: taskNatureName
- name: taskNatureNameMatch
- name: offset
- name: limit
\ No newline at end of file
... ...
version: v1
kind: HttpApi
metadata:
service: unifiedUserCenter
path: /
endpoints:
- method: syncEmployeeCallback
route:
post: /api/business/index
\ No newline at end of file
... ...
version: v1
kind: Attribute
metadata:
name: companyId
description: 公司ID
type:
primitive: int64
... ...
version: v1
kind: Attribute
metadata:
name: count
description: 结果总数
type:
primitive: int64
... ...
version: v1
kind: Attribute
metadata:
name: createTime
description: 创建时间
type:
primitive: datetime
... ...
version: v1
kind: Attribute
metadata:
name: description
description: 描述
type:
primitive: string
... ...
version: v1
kind: Attribute
metadata:
name: id
description: ID
type:
primitive: int
... ...
version: v1
kind: Attribute
metadata:
name: limit
description: 查询限制
type:
primitive: int
... ...
version: v1
kind: Attribute
metadata:
name: name
description: 名称
type:
primitive: string
... ...
version: v1
kind: Attribute
metadata:
name: notificationId
description: 通知ID
type:
primitive: int64
... ...
version: v1
kind: Attribute
metadata:
name: offset
description: 查询偏离量
type:
primitive: int
... ...
version: v1
kind: Attribute
metadata:
name: sentNotificationId
description: 发送出的通知ID
type:
primitive: int64
... ...
version: v1
kind: Attribute
metadata:
name: taskId
description: 任务ID
type:
primitive: int64
... ...
version: v1
kind: Attribute
metadata:
name: uid
description: 统一用户UID
type:
primitive: int64
... ...
version: v1
kind: Project
metadata:
name: mmm-worth
description: 买买买价值系统
version: 0.0.1
repository: gitlab.fjmaimaimai.com/linmadan/mmm-worth
contact:
name: linmadan
email: 772181827@qq.com
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: bidInfo
description: 竞标任务信息
attributes:
- name: bidderInfos
description: 竞标人员列表
type:
array: bidderInfo
- name: successfulBidder
description: 中标人
type:
schema: employeeInfo
required: true
- name: bidStartTime
description: 竞标开始时间
type:
primitive: datetime
required: true
- name: bidEndTime
description: 竞标结束时间
type:
primitive: datetime
required: true
- name: isRemind
description: 是否截止时间前一天提醒
type:
primitive: boolean
- name: winBidTime
description: 中标时间
type:
primitive: datetime
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: bidderInfo
description: 竞标人员信息
attributes:
- name: bidder
description: 竞标人员
type:
schema: employeeInfo
required: true
- name: bidTime
description: 竞标时间
type:
primitive: datetime
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: config
description: 配置字典
attributes:
- ref: id
required: true
- ref: name
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: customerValue
description: 客户价值
attributes:
- name: customerValueId
description: 客户价值ID
type:
primitive: int
required: true
- name: customerValueName
description: 客户价值名称
type:
primitive: string
required: true
- ref: companyId
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: employee
description: 员工
attributes:
- name: employeeId
description: 员工ID
type:
primitive: int64
required: true
- ref: companyId
required: true
- name: employeeInfo
description: 员工信息
type:
schema: employeeInfo
- name: suMoney
description: 当前素币
type:
primitive: float64
required: true
- name: status
description: 员工状态(启用或者禁用)
type:
primitive: int
- name: permissions
description: 员工权限集合
type:
array: int
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: employeeInfo
description: 员工信息
attributes:
- ref: uid
required: true
- name: employeeName
description: 员工姓名
type:
primitive: string
required: true
- name: employeeAccount
description: 员工账号
type:
primitive: string
- name: employeeAvatarUrl
description: 员工头像URL
type:
primitive: string
- name: isPrincipal
description: 是否公司负责人
type:
primitive: boolean
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: notification
description: 通知
attributes:
- ref: notificationId
required: true
- name: notificationType
description: 通知类型(1.系统通知2.互动通知)
type:
primitive: int
required: true
- name: notificationTitle
description: 通知标题
type:
primitive: string
required: true
- name: notificationContent
description: 通知内容
type:
primitive: string
required: true
- name: notificationTime
description: 通知时间
type:
primitive: datetime
required: true
- name: externalResourceType
description: 外部资源引用类型(1任务2驳回任务记录)
type:
primitive: int
required: true
- name: externalResource
description: 外部资源引用
type:
primitive: int64
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: offTaskRecord
description: 关闭任务记录
attributes:
- name: offTaskRecordId
description: 关闭任务记录ID
type:
primitive: int64
required: true
- name: task
description: 任务
type:
schema: task
required: true
- name: operator
description: 操作人
type:
schema: employeeInfo
required: true
- name: offReason
description: 关闭理由
type:
primitive: string
required: true
- ref: createTime
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: projectBelong
description: 项目归属
attributes:
- name: projectBelongId
description: 项目归属ID
type:
primitive: int
required: true
- name: projectBelongName
description: 项目归属名称
type:
primitive: string
required: true
- ref: companyId
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: referenceResource
description: 引用资源
attributes:
- name: referenceResourceType
description: 引用类型
type:
primitive: int
required: true
- name: referenceResourceItems
description: 引用资源项列表
type:
array: referenceResourceItem
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: referenceResourceItem
description: 引用资源项
attributes:
- name: referenceResourceId
description: 引用资源ID
type:
primitive: int64
required: true
- name: serialNumber
description: 编号
type:
primitive: int64
required: true
- name: title
description: 标题
type:
primitive: string
required: true
- name: content
description: 内容
type:
primitive: string
required: true
- name: issueScore
description: 问题总分
type:
primitive: float64
- name: solveScore
description: 解决评分明细
type:
array: solveScoreItem
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: rejectTaskRecord
description: 驳回任务记录
attributes:
- name: rejectTaskRecordId
description: 驳回任务记录ID
type:
primitive: int64
required: true
- name: task
description: 任务
type:
schema: task
required: true
- name: operator
description: 操作人
type:
schema: employeeInfo
required: true
- name: rejectReason
description: 驳回理由
type:
primitive: string
required: true
- ref: createTime
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: robInfo
description: 抢单任务信息
attributes:
- name: receiver
description: 领取人
type:
schema: employeeInfo
required: true
- name: receiveTime
description: 领取时间
type:
primitive: datetime
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: sentNotification
description: 发送出的通知
attributes:
- ref: sentNotificationId
required: true
- name: notification
description: 通知
type:
schema: notification
required: true
- name: receiver
description: 通知接收者
type:
schema: employeeInfo
required: true
- name: isRead
description: 是否已读
type:
primitive: boolean
required: true
- name: readTime
description: 通知读取时间
type:
primitive: datetime
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: solveScoreItem
description: 解决评分项
attributes:
- name: contributor
description: 贡献者
type:
schema: employeeInfo
required: true
- name: isReceiver
description: 是否领取人
type:
primitive: boolean
required: true
- name: percentage
description: 解决占比
type:
primitive: int
required: true
- name: score
description: 解决评分
type:
primitive: float64
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: suMoneyTransactionRecord
description: 素币事务记录
attributes:
- name: suMoneyTransactionRecordId
description: 素币事务记录ID
type:
primitive: int64
required: true
- name: recordType
description: 记录类型(1兑换,2任务奖励,3增加,4扣除)
type:
primitive: int
required: true
- name: employee
description: 记录关联员工
type:
schema: employeeInfo
required: true
- name: suMoneyBeforeTransaction
description: 事务处理前素币值
type:
primitive: float64
required: true
- name: currentSuMoney
description: 当前素币值
type:
primitive: float64
required: true
- name: suMoney
description: 事务素币值
type:
primitive: float64
required: true
- name: operator
description: 操作人
type:
schema: employeeInfo
required: true
- name: recordDescription
description: 素币事务记录描述
type:
primitive: string
required: true
- ref: createTime
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: task
description: 任务
attributes:
- ref: taskId
required: true
- ref: companyId
required: true
- name: taskName
description: 任务名称
type:
primitive: string
required: true
- name: taskType
description: 任务类型(1.抢单任务2.竞标任务3.指派任务)
type:
primitive: int
required: true
- name: sponsor
description: 任务发起者
type:
schema: employeeInfo
required: true
- name: taskStatus
description: 任务状态(1.待发布2.待领取3.进行中4.待验收5.已完成6.关闭7.待确认)
type:
primitive: int
required: true
- name: referenceResource
description: 引用资源
type:
schema: referenceResource
- name: projectBelong
description: 项目归属
type:
primitive: int
required: true
- name: customerValues
description: 客户价值列表
type:
array: int
required: true
- name: taskNature
description: 任务性质
type:
primitive: int
required: true
- name: suMoney
description: 奖励素币
type:
primitive: float64
required: true
- name: acceptanceStandard
description: 验收标准
type:
primitive: string
required: true
- name: taskDescription
description: 任务描述
type:
primitive: string
required: true
- name: taskPictureUrls
description: 任务图片URL列表
type:
array: string
- name: isRewardTake
description: 是否悬赏任务
type:
primitive: boolean
- name: robInfo
description: 抢单任务信息
type:
schema: robInfo
- name: bidInfo
description: 竞标任务信息
type:
schema: bidInfo
- name: participators
description: 任务参与者列表
type:
array: employeeInfo
- name: taskPercentage
description: 任务贡献占比
type:
array: taskPercentageItem
- name: solveReport
description: 解决报告
type:
primitive: string
- name: solvePictureUrls
description: 解决图片URL列表
type:
array: string
- ref: createTime
required: true
- name: assignedPerson
description: 指派人员
type:
schema: employeeInfo
- name: plannedCompletionTime
description: 计划完成时间
type:
primitive: datetime
- name: actualCompletionTime
description: 实际完成时间
type:
primitive: datetime
- name: releaseTime
description: 发布任务时间
type:
primitive: datetime
- name: receiveTime
description: 领取任务时间
type:
primitive: datetime
- name: completeTime
description: 完成任务操作时间
type:
primitive: datetime
- name: acceptanceTime
description: 验收方验收时间
type:
primitive: datetime
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: taskNature
description: 任务性质
attributes:
- name: taskNatureId
description: 任务性质ID
type:
primitive: int
required: true
- name: taskNatureName
description: 任务性质名称
type:
primitive: string
required: true
- ref: companyId
required: true
\ No newline at end of file
... ...
version: v1
kind: Schema
metadata:
name: taskPercentageItem
description: 任务贡献占比项
attributes:
- name: contributor
description: 贡献者
type:
schema: employeeInfo
required: true
- name: isReceiver
description: 是否领取人
type:
primitive: boolean
required: true
- name: percentage
description: 任务贡献占比
type:
primitive: int
required: true
- name: suMoney
description: 分配到的奖励素币
type:
primitive: float64
required: true
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: config
description: 配置服务
methods:
- name: listTaskStatus
description: 返回任务状态字典列表(1待发布,2待领取,3进行中,4待验收,5已完成,7待确认)
type: query
result:
- name: taskStatuses
type:
array: config
- name: listTaskType
description: 返回任务类型字典列表(1抢单任务,2竞标任务,3指派任务)
type: query
result:
- name: taskTypes
type:
array: config
- name: listTaskNature
description: 返回任务性质字典列表
type: query
result:
- name: taskNatures
type:
array: config
- name: listCustomerValue
description: 返回客户价值字典列表
type: query
result:
- name: customerValues
type:
array: config
- name: listReferenceResourceType
description: 返回任务引用资源类型字典列表
type: query
result:
- name: referenceResourceTypes
type:
array: config
- name: listBidTimeMatch
description: 返回竞标时间字典列表(1全部,2已截止,3未截止)
type: query
result:
- name: bidTimeMatchs
type:
array: config
- name: listEmployeePermission
description: 返回员工权限字典列表(1任务管理,2素币管理,3成员管理,4标签管理)
type: query
result:
- name: employeePermissions
type:
array: config
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: customerValue
description: 客户价值服务
methods:
- name: createCustomerValue
type: command
description: 创建客户价值
payload:
- ref: companyId
required: true
- name: customerValueName
description: 客户价值名称
type:
primitive: string
required: true
result:
- name: customerValue
type:
schema: customerValue
- name: getCustomerValue
description: 返回客户价值
type: query
payload:
- name: customerValueId
description: 客户价值ID
type:
primitive: int
required: true
result:
- name: customerValue
type:
schema: customerValue
- name: updateCustomerValue
type: command
description: 更新客户价值
payload:
- name: customerValueId
description: 客户价值ID
type:
primitive: int
- name: customerValueName
description: 客户价值名称
type:
primitive: string
result:
- name: customerValue
type:
schema: customerValue
- name: removeCustomerValue
description: 移除客户价值
type: command
payload:
- name: customerValueId
description: 客户价值ID
type:
primitive: int
required: true
result:
- name: customerValue
type:
schema: customerValue
- name: listCustomerValue
description: 返回客户价值列表
type: query
payload:
- ref: companyId
required: true
- name: customerValueName
description: 客户价值名称
type:
primitive: string
- name: customerValueNameMatch
description: 客户价值名称匹配
type:
primitive: string
- ref: offset
- ref: limit
result:
- ref: count
- name: customerValues
type:
array: customerValue
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: employee
description: 员工服务
methods:
- name: createEmployee
type: command
description: 创建新员工
payload:
- ref: uid
required: true
- name: employeeName
description: 员工姓名
type:
primitive: string
- name: employeeAccount
description: 员工账号
type:
primitive: string
- name: employeeAvatarUrl
description: 员工头像URL
type:
primitive: string
result:
- name: employee
type:
schema: employee
- name: getEmployee
description: 返回员工
type: query
payload:
- ref: uid
required: true
result:
- name: employee
type:
schema: employee
- name: updateEmployee
type: command
description: 更新员工
payload:
- ref: uid
required: true
- name: employeeName
description: 员工姓名
type:
primitive: string
- name: employeeAccount
description: 员工账号
type:
primitive: string
- name: employeeAvatarUrl
description: 员工头像URL
type:
primitive: string
- name: permissions
description: 员工权限集合
type:
array: int
result:
- name: employee
type:
schema: employee
- name: removeEmployee
description: 移除员工
type: command
payload:
- ref: uid
required: true
result:
- name: employee
type:
schema: employee
- name: listEmployee
description: 返回员工列表
type: query
payload:
- ref: companyId
required: true
- name: employeeNameMatch
description: 员工姓名匹配
type:
primitive: string
- ref: offset
- ref: limit
result:
- ref: count
- name: employees
type:
array: employee
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: notification
description: 通知服务
methods:
- name: readSentNotification
description: 读取发送出的通知
type: command
payload:
- ref: sentNotificationId
required: true
result:
- name: sentNotification
type:
schema: sentNotification
- name: readAllUnReadSentNotification
type: command
description: 读取全部未读取的发送出的通知
payload:
- name: receiverId
description: 通知接收者Uid
type:
primitive: int64
required: true
- name: receiverId
description: 通知接收者Uid
type:
primitive: int64
required: true
- name: notificationType
description: 通知类型(1.系统通知2.互动通知)
type:
primitive: int
result:
- name: readCount
description: 读取消息数
type:
primitive: int
- name: listSentNotification
description: 返回发送出的通知列表
type: query
payload:
- name: receiverId
description: 通知接收者Uid
type:
primitive: int64
required: true
- name: notificationType
description: 通知类型(1.系统通知2.互动通知)
type:
primitive: int
- ref: offset
- ref: limit
result:
- ref: count
- name: sentNotifications
type:
array: sentNotification
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: projectBelong
description: 项目归属服务
methods:
- name: createProjectBelong
type: command
description: 创建项目归属
payload:
- ref: companyId
required: true
- name: projectBelongName
description: 项目归属名称
type:
primitive: string
required: true
result:
- name: projectBelong
type:
schema: projectBelong
- name: getProjectBelong
description: 返回项目归属
type: query
payload:
- name: projectBelongId
description: 项目归属ID
type:
primitive: int
required: true
result:
- name: projectBelong
type:
schema: projectBelong
- name: updateProjectBelong
type: command
description: 更新项目归属
payload:
- name: projectBelongId
description: 项目归属ID
type:
primitive: int
- name: projectBelongName
description: 项目归属名称
type:
primitive: string
result:
- name: projectBelong
type:
schema: projectBelong
- name: removeProjectBelong
description: 移除项目归属
type: command
payload:
- name: projectBelongId
description: 项目归属ID
type:
primitive: int
required: true
result:
- name: projectBelong
type:
schema: projectBelong
- name: listProjectBelong
description: 返回项目归属列表
type: query
payload:
- ref: companyId
required: true
- name: projectBelongName
description: 项目归属名称
type:
primitive: string
- name: projectBelongNameMatch
description: 项目归属名称匹配
type:
primitive: string
- ref: offset
- ref: limit
result:
- ref: count
- name: projectBelongs
type:
array: projectBelong
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: statistics
description: 数据统计服务
methods:
- name: personNotificationStatistics
description: 获取个人消息通知统计
type: command
payload:
- ref: uid
required: true
result:
- name: unReadSystemNotification
description: 未读系统消息条数
type:
primitive: int
- name: unReadInteractionNotification
description: 未读互动消息条数
type:
primitive: int
- name: systemTaskStatistics
description: 获取系统任务统计
type: command
payload:
- ref: companyId
required: true
result:
- name: released
description: 发布的任务数
type:
primitive: int64
- name: underway
description: 进行中的任务数
type:
primitive: int64
- name: completed
description: 已完成的任务数
type:
primitive: int64
- name: personTaskStatistics
description: 获取个人任务统计
type: command
payload:
- ref: uid
required: true
result:
- name: underwayAsAssignedPerson
description: 指派我的进行中任务
type:
primitive: int64
required: true
- name: unAcceptanceAsAssignedPerson
description: 指派我的待验收任务
type:
primitive: int64
required: true
- name: completedAsAssignedPerson
description: 指派我的已完成任务
type:
primitive: int64
required: true
- name: unConfirmedAsReceiver
description: 个人领取的待确认任务
type:
primitive: int64
required: true
- name: underwayAsReceiver
description: 个人领取的进行中任务
type:
primitive: int64
required: true
- name: unAcceptanceAsReceiver
description: 个人领取的待验收任务
type:
primitive: int64
required: true
- name: completedAsReceiver
description: 个人领取的已完成任务
type:
primitive: int64
required: true
- name: unReleasedAsSponsor
description: 个人发起的待发布任务
type:
primitive: int64
required: true
- name: unClaimedAsSponsor
description: 个人发起的待领取任务
type:
primitive: int64
required: true
- name: unConfirmedAsSponsor
description: 个人发起的待确认任务
type:
primitive: int64
required: true
- name: underwayAsSponsor
description: 个人发起的进行中任务
type:
primitive: int64
required: true
- name: unAcceptanceAsSponsor
description: 个人发起的待验收任务
type:
primitive: int64
required: true
- name: completedAsSponsor
description: 个人发起的已完成任务
type:
primitive: int64
required: true
- name: bidAsParticipator
description: 个人参与的竞标中任务
type:
primitive: int64
required: true
- name: completedAsParticipator
description: 个人参与的已完成任务
type:
primitive: int64
required: true
- name: personSuMoneyStatistics
description: 获取个人素币统计
type: command
payload:
- ref: uid
required: true
result:
- name: incomeSuMoney
description: 任务奖励素币总数
type:
primitive: float64
- name: incomeSuMoneyOfYesterday
description: 昨日任务奖励素币数
type:
primitive: float64
- name: currentSuMoney
description: 当前素币数
type:
primitive: float64
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: suMoney
description: 素币服务
methods:
- name: operationSuMoney
type: command
description: 操作素币
payload:
- ref: uid
description: 素币拥有者UID
required: true
- name: operationType
description: 操作类型(1增加,2扣除)
type:
primitive: int
required: true
- name: suMoney
description: 素币值
type:
primitive: float64
required: true
- name: operator
description: 操作人UID
type:
primitive: int64
- name: operationDescription
description: 理由描述
type:
primitive: string
required: true
result:
- name: suMoneyTransactionRecord
type:
schema: suMoneyTransactionRecord
- name: exchangeSuMoney
type: command
description: 素币兑换
payload:
- ref: uid
description: 兑换人UID
required: true
- name: suMoney
description: 素币值
type:
primitive: float64
required: true
- name: operator
description: 操作人UID
type:
primitive: int64
- name: exchangeDescription
description: 兑换描述
type:
primitive: string
required: true
result:
- name: suMoneyTransactionRecord
type:
schema: suMoneyTransactionRecord
- name: getSuMoneyTransactionRecord
description: 返回素币事务记录
type: query
payload:
- name: suMoneyTransactionRecordId
description: 素币事务记录ID
type:
primitive: int64
required: true
result:
- name: suMoneyTransactionRecord
type:
schema: suMoneyTransactionRecord
- name: searchSuMoneyTransactionRecord
description: 搜索素币事务记录
type: command
payload:
- ref: uid
required: true
- name: recordType
description: 记录类型(1兑换,2任务奖励,3增加,4扣除)
type:
primitive: int
- name: recordTypes
description: 记录类型列表(1兑换,2任务奖励,3增加,4扣除)
type:
array: int
- name: transactionStartTime
description: 事务时间区间-开始时间
type:
primitive: datetime
- name: transactionEndTime
description: 事务时间区间-截止时间
type:
primitive: datetime
- name: operator
description: 操作人UID
type:
primitive: int64
- ref: offset
- ref: limit
result:
- ref: count
- name: suMoneyTransactionRecords
type:
array: suMoneyTransactionRecord
- name: suMoneyTransactionRecordStatistics
description: 素币事务记录统计
type: command
payload:
- ref: uid
required: true
- name: transactionStartTime
description: 事务时间区间-开始时间
type:
primitive: datetime
- name: transactionEndTime
description: 事务时间区间-截止时间
type:
primitive: datetime
result:
- name: incomeSuMoney
description: 收入素币
type:
primitive: float64
required: true
- name: expendSuMoney
description: 支出素币
type:
primitive: float64
required: true
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: task
description: 任务服务
methods:
- name: rejectTaskReceiver
description: 驳回任务领取人
type: command
payload:
- ref: taskId
required: true
- name: operator
description: 操作人uid
type:
primitive: int64
required: true
- name: rejectReason
description: 驳回理由
type:
primitive: string
required: true
result:
- name: task
type:
schema: task
- name: confirmRobTask
description: 对抢单任务进行确认
type: command
payload:
- ref: taskId
required: true
- name: operator
description: 操作人uid
type:
primitive: int64
required: true
- name: plannedCompletionTime
description: 计划完成时间
type:
primitive: datetime
required: true
result:
- name: task
type:
schema: task
- name: robTask
description: 对任务进行抢单
type: command
payload:
- ref: taskId
required: true
- name: receiver
description: 领取人uid
type:
primitive: int64
required: true
result:
- name: task
type:
schema: task
- name: bidTask
description: 对任务进行竞标
type: command
payload:
- ref: taskId
required: true
- name: bidder
description: 竞标人uid
type:
primitive: int64
required: true
result:
- name: task
type:
schema: task
- name: chooseSuccessfulBidder
description: 选择竞标任务的中标人
type: command
payload:
- ref: taskId
required: true
- name: operator
description: 操作人uid
type:
primitive: int64
required: true
- name: successfulBidder
description: 中标者uid
type:
primitive: int64
required: true
- name: plannedCompletionTime
description: 计划完成时间
type:
primitive: datetime
required: true
result:
- name: task
type:
schema: task
- name: applyCompleteTask
description: 申请完成任务
type: command
payload:
- ref: taskId
required: true
- name: receiver
description: 领取人或者中标人uid
type:
primitive: int64
required: true
result:
- name: task
type:
schema: task
- name: releaseTask
description: 发布任务
type: command
payload:
- ref: taskId
required: true
- name: operator
description: 操作人uid
type:
primitive: int64
required: true
result:
- name: task
type:
schema: task
- name: offTask
description: 关闭任务
type: command
payload:
- ref: taskId
required: true
- name: operator
description: 操作人uid
type:
primitive: int64
required: true
- name: offReason
description: 关闭理由
type:
primitive: string
required: true
result:
- name: task
type:
schema: task
- name: acceptanceTask
description: 验收任务
type: command
payload:
- ref: taskId
required: true
- name: operator
description: 操作人uid
type:
primitive: int64
required: true
- name: participators
description: 任务参与者UID列表
type:
array: int64
- name: taskPercentage
description: 任务贡献占比
type:
array: taskPercentageItem
required: true
- name: referenceResourceScore
description: 引用资源解决分
type:
array: referenceResourceItem
- name: solveReport
description: 解决报告
type:
primitive: string
- name: solvePictureUrls
description: 解决图片URL列表
type:
array: string
- name: actualCompletionTime
description: 实际完成时间
type:
primitive: datetime
required: true
result:
- name: task
type:
schema: task
- name: createTask
type: command
description: 创建新任务
payload:
- ref: companyId
required: true
- name: taskName
description: 任务名称
type:
primitive: string
required: true
- name: taskType
description: 任务类型
type:
primitive: int
- name: sponsor
description: 任务发起者uid
type:
primitive: int64
required: true
- name: referenceResource
description: 引用资源
type:
schema: referenceResource
- name: projectBelong
description: 项目归属
type:
primitive: int
- name: customerValues
description: 客户价值列表
type:
array: int
- name: taskNature
description: 任务性质
type:
primitive: int
- name: suMoney
description: 奖励素币
type:
primitive: float64
- name: acceptanceStandard
description: 验收标准
type:
primitive: string
- name: taskDescription
description: 任务描述
type:
primitive: string
- name: taskPictureUrls
description: 任务图片URL列表
type:
array: string
- name: isRewardTake
description: 是否悬赏任务
type:
primitive: boolean
- name: bidStartTime
description: 竞标开始时间
type:
primitive: datetime
- name: bidEndTime
description: 竞标结束时间
type:
primitive: datetime
- name: isRemind
description: 是否截止时间前一天提醒
type:
primitive: boolean
- name: plannedCompletionTime
description: 计划完成时间
type:
primitive: datetime
- name: assignedPerson
description: 指派人员uid
type:
primitive: int64
result:
- name: task
type:
schema: task
- name: getTask
description: 返回任务
type: query
payload:
- ref: taskId
required: true
result:
- name: task
type:
schema: task
- name: updateTask
type: command
description: 更新任务
payload:
- ref: taskId
required: true
- name: taskName
description: 任务名称
type:
primitive: string
- name: referenceResource
description: 引用资源
type:
schema: referenceResource
- name: projectBelong
description: 项目归属
type:
primitive: int
- name: customerValues
description: 客户价值列表
type:
array: int
- name: taskNature
description: 任务性质
type:
primitive: int
- name: suMoney
description: 奖励素币
type:
primitive: float64
- name: acceptanceStandard
description: 验收标准
type:
primitive: string
- name: taskDescription
description: 任务描述
type:
primitive: string
- name: taskPictureUrls
description: 任务图片URL列表
type:
array: string
- name: isRewardTake
description: 是否悬赏任务
type:
primitive: boolean
- name: bidStartTime
description: 竞标开始时间
type:
primitive: datetime
- name: bidEndTime
description: 竞标结束时间
type:
primitive: datetime
- name: isRemind
description: 是否截止时间前一天提醒
type:
primitive: boolean
- name: plannedCompletionTime
description: 计划完成时间
type:
primitive: datetime
- name: assignedPerson
description: 指派人员uid
type:
primitive: int64
result:
- name: task
type:
schema: task
- name: removeTask
description: 移除任务
type: command
payload:
- ref: taskId
required: true
result:
- name: task
type:
schema: task
- name: listTask
description: 返回任务列表
type: query
payload:
- ref: companyId
required: true
- name: sponsor
description: 任务发起者UID
type:
primitive: int64
- name: taskContentMatch
description: 任务内容匹配
type:
primitive: string
- name: taskType
description: 任务类型
type:
primitive: int
- name: taskStatus
description: 任务状态
type:
primitive: int
- name: customerValue
description: 客户价值
type:
array: string
- name: taskNature
description: 任务性质
type:
primitive: string
- name: isRewardTake
description: 是否悬赏任务
type:
primitive: boolean
- name: bidder
description: 竞标参与者UID
type:
primitive: int64
- name: bidTimeMatch
description: 竞标时间(1全部,2已截止,3未截止)
type:
primitive: int
- name: receiver
description: 任务领取人UID
type:
primitive: int64
- name: participator
description: 任务参与者UID
type:
primitive: int64
- name: isFilterCloseStatus
description: 是否过滤关闭状态任务
type:
primitive: boolean
- name: isFilterUnReleasedStatus
description: 是否过滤待发布状态任务
type:
primitive: boolean
- name: sortByCreateTime
description: 按创建任务时间排序(ASC,DESC)
type:
primitive: string
- name: sortByReleaseTime
description: 按发布任务时间排序(ASC,DESC)
type:
primitive: string
- name: sortByReceiveTime
description: 按领取任务时间排序(ASC,DESC)
type:
primitive: string
- name: sortByCompleteTime
description: 按完成任务操作时间排序(ASC,DESC)
type:
primitive: string
- name: sortByAcceptanceTime
description: 按验收方验收时间排序(ASC,DESC)
type:
primitive: string
- name: sortByBidTime
description: 按参与竞标时间排序(ASC,DESC)
type:
primitive: string
- ref: offset
- ref: limit
result:
- ref: count
- name: tasks
type:
array: task
- name: searchTask
description: 搜索任务
type: command
payload:
- ref: companyId
required: true
- name: sponsor
description: 任务发起者UID
type:
primitive: int64
- name: taskContentMatch
description: 任务内容匹配
type:
primitive: string
- name: taskType
description: 任务类型
type:
primitive: int
- name: taskTypes
description: 任务类型列表
type:
array: int
- name: taskStatus
description: 任务状态
type:
primitive: int
- name: projectBelongs
description: 项目归属
type:
array: int
- name: customerValues
description: 客户价值
type:
array: int
- name: taskNatures
description: 任务性质
type:
array: int
- name: isRewardTake
description: 是否悬赏任务
type:
primitive: boolean
- name: bidder
description: 竞标参与者UID
type:
primitive: int64
- name: bidTimeMatch
description: 竞标时间(1全部,2已截止,3未截止)
type:
primitive: int
- name: receiver
description: 任务领取人UID
type:
primitive: int64
- name: participator
description: 任务参与者UID
type:
primitive: int64
- name: assignedPerson
description: 指派人员UID
type:
primitive: int64
- name: isFilterCloseStatus
description: 是否过滤关闭状态任务
type:
primitive: boolean
- name: isFilterUnReleasedStatus
description: 是否过滤待发布状态任务
type:
primitive: boolean
- name: sortByCreateTime
description: 按创建任务时间排序(ASC,DESC)
type:
primitive: string
- name: sortByReleaseTime
description: 按发布任务时间排序(ASC,DESC)
type:
primitive: string
- name: sortByReceiveTime
description: 按领取任务时间排序(ASC,DESC)
type:
primitive: string
- name: sortByCompleteTime
description: 按完成任务操作时间排序(ASC,DESC)
type:
primitive: string
- name: sortByAcceptanceTime
description: 按验收方验收时间排序(ASC,DESC)
type:
primitive: string
- ref: offset
- ref: limit
result:
- ref: count
- name: tasks
type:
array: task
- name: searchOffTaskRecord
description: 搜索关闭任务记录
type: command
payload:
- ref: companyId
required: true
- name: taskContentMatch
description: 任务内容匹配
type:
primitive: string
- name: taskType
description: 任务类型
type:
primitive: int
- name: projectBelongs
description: 项目归属
type:
array: int
- name: customerValues
description: 客户价值
type:
array: int
- name: taskNatures
description: 任务性质
type:
array: int
- name: offStartTime
description: 关闭任务时间区间-开始时间
type:
primitive: datetime
- name: offEndTime
description: 关闭任务时间区间-截止时间
type:
primitive: datetime
- ref: offset
- ref: limit
result:
- ref: count
- name: offTaskRecords
type:
array: offTaskRecord
- name: getOffTaskRecord
description: 返回关闭任务记录
type: query
payload:
- name: offTaskRecordId
description: 关闭任务记录ID
type:
primitive: int64
required: true
result:
- name: offTaskRecord
type:
schema: offTaskRecord
- name: searchRejectTaskRecord
description: 搜索驳回任务记录
type: command
payload:
- ref: companyId
required: true
- name: taskContentMatch
description: 任务内容匹配
type:
primitive: string
- name: taskType
description: 任务类型
type:
primitive: int
- name: projectBelongs
description: 项目归属
type:
array: int
- name: customerValues
description: 客户价值
type:
array: int
- name: taskNatures
description: 任务性质
type:
array: int
- name: rejectStartTime
description: 驳回任务时间区间-开始时间
type:
primitive: datetime
- name: rejectEndTime
description: 驳回任务时间区间-截止时间
type:
primitive: datetime
- ref: offset
- ref: limit
result:
- ref: count
- name: rejectTaskRecords
type:
array: rejectTaskRecord
- name: getRejectTaskRecord
description: 返回驳回任务记录
type: query
payload:
- name: rejectTaskRecordId
description: 驳回任务记录ID
type:
primitive: int64
required: true
result:
- name: rejectTaskRecord
type:
schema: rejectTaskRecord
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: taskNature
description: 任务性质服务
methods:
- name: createTaskNature
type: command
description: 创建任务性质
payload:
- ref: companyId
required: true
- name: taskNatureName
description: 任务性质名称
type:
primitive: string
required: true
result:
- name: taskNature
type:
schema: taskNature
- name: getTaskNature
description: 返回任务性质
type: query
payload:
- name: taskNatureId
description: 任务性质ID
type:
primitive: int
required: true
result:
- name: taskNature
type:
schema: taskNature
- name: updateTaskNature
type: command
description: 更新任务性质
payload:
- name: taskNatureId
description: 任务性质ID
type:
primitive: int
- name: taskNatureName
description: 任务性质名称
type:
primitive: string
result:
- name: taskNature
type:
schema: taskNature
- name: removeTaskNature
description: 移除任务性质
type: command
payload:
- name: taskNatureId
description: 任务性质ID
type:
primitive: int
required: true
result:
- name: taskNature
type:
schema: taskNature
- name: listTaskNature
description: 返回任务性质列表
type: query
payload:
- ref: companyId
required: true
- name: taskNatureName
description: 任务性质名称
type:
primitive: string
- name: taskNatureNameMatch
description: 任务性质名称匹配
type:
primitive: string
- ref: offset
- ref: limit
result:
- ref: count
- name: taskNatures
type:
array: taskNature
\ No newline at end of file
... ...
version: v1
kind: Service
metadata:
name: unifiedUserCenter
description: 统一用户中心适配服务
methods:
- name: syncEmployeeCallback
description: 同步企业员工回调
type: command
payload:
- name: module
description: position:职位,department:部门,employee:员工,company:公司,profile员工档案
type:
primitive: string
required: true
- name: action
description: add:添加,edit:编辑,delete删除,batchDelete:批量删除,setCompanyCharge:更改公司主管,batchForbid:批量禁用用户,batchRemove:批量更改用户部门,changeAdmin换管理员
type:
primitive: string
required: true
- name: data
description: 具体的对象JSON数据
type:
primitive: string
required: true
result:
- name: employee
type:
schema: employee
\ No newline at end of file
... ...
... ... @@ -15,7 +15,7 @@ require (
github.com/imkira/go-interpol v1.1.0 // indirect
github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect
github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb
github.com/mattn/go-colorable v0.1.6 // indirect
github.com/mattn/go-colorable v0.1.8 // indirect
github.com/moul/http2curl v1.0.0 // indirect
github.com/onsi/ginkgo v1.10.3
github.com/onsi/gomega v1.7.1
... ... @@ -29,6 +29,9 @@ require (
github.com/yudai/gojsondiff v1.0.0 // indirect
github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
github.com/yudai/pp v2.0.1+incompatible // indirect
golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e // indirect
google.golang.org/protobuf v1.25.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
replace gitlab.fjmaimaimai.com/linmadan/mmm-worth => ../mmm-worth
... ...
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1 h1:j56fC19WoD3z+u+ZHxm2XwRGyS1XmdSMk7058BLhdsM=
github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1/go.mod h1:gXEhMjm1VadSGjAzyDlBxmdYglP8eJpYWxpwJnmXRWw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM=
... ... @@ -14,6 +16,8 @@ github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkY
github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU=
github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
github.com/couchbase/go-couchbase v0.0.0-20181122212707-3e9b6e1258bb/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U=
github.com/couchbase/gomemcached v0.0.0-20181122193126-5125a94a666c/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c=
... ... @@ -29,6 +33,8 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk=
github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 h1:DddqAaWDpywytcG8w/qoQ5sAN8X12d3Z3koB0C3Rxsc=
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
... ... @@ -42,13 +48,28 @@ github.com/go-pg/pg v8.0.6+incompatible/go.mod h1:a2oXow+aFOrvwcKs3eIA0lNFmMilrx
github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
... ... @@ -81,8 +102,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb h1:Ocxw5BWyRrRkTHSsTmQx0UnGsAYZDOwa3K9oGlXF8Jo=
github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk=
github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
... ... @@ -101,6 +122,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/richardlehane/mscfb v1.0.3 h1:rD8TBkYWkObWO0oLDFCbwMeZ4KoalxQy+QgniCj3nKI=
github.com/richardlehane/mscfb v1.0.3/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
... ... @@ -167,11 +189,18 @@ golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf/go.mod h1:LzIPMQfyMNhhGPh
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM=
golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/image v0.0.0-20200922025426-e59bae62ef32 h1:E+SEVulmY8U4+i6vSB88YSc2OKAFfvbHPU/uDTdQu7M=
golang.org/x/image v0.0.0-20200922025426-e59bae62ef32/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
... ... @@ -181,8 +210,11 @@ golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA=
golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
... ... @@ -196,18 +228,43 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepx
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs=
golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20200117065230-39095c1d176c h1:FodBYPZKH5tAN2O60HlglMwXGAeV/4k+NKbli79M/2c=
golang.org/x/tools v0.0.0-20200117065230-39095c1d176c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
... ... @@ -224,7 +281,11 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
mellium.im/sasl v0.2.1 h1:nspKSRg7/SyO0cRGY71OkfHab8tf9kCts6a6oTDut0w=
mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ=
... ...
package main
import (
"time"
"github.com/astaxie/beego"
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/notification/service"
_ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg"
_ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego"
"time"
)
func main() {
... ... @@ -36,9 +37,5 @@ func main() {
}
}()
//// excel文件路径映射
//beego.SetStaticPath("/download", "download")
//beego.SetStaticPath("/logs", "log")
beego.Run()
}
... ...
... ... @@ -2,6 +2,8 @@ package service
import (
"fmt"
"time"
"github.com/linmadan/egglib-go/core/application"
"github.com/linmadan/egglib-go/utils/tool_funs"
"github.com/shopspring/decimal"
... ... @@ -10,7 +12,6 @@ import (
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory"
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao"
"time"
)
// 员工服务
... ...
... ... @@ -31,7 +31,7 @@ func (subscriber *MmmOpenApiServiceServiceSubscriber) HandleEvent(domainEvent co
employeeRepository = repository
}
uids := make([]int64, 0)
if _, employees, err := employeeRepository.Find(map[string]interface{}{"companyId": taskReleasedEvent.CompanyId}); err != nil {
if _, employees, err := employeeRepository.FindAll(map[string]interface{}{"companyId": taskReleasedEvent.CompanyId, "status": 1}); err != nil {
fmt.Println(err.Error())
return nil
} else {
... ...
... ... @@ -4,11 +4,10 @@ import "os"
const SERVICE_NAME = "mmm-worth"
var LOG_LEVEL = "debug"
var ABILITY_SERVICE_HOST = "https://suplus-worth-app-gateway-dev.fjmaimaimai.com"
var MMM_OPEN_API_SERVICE_HOST = "http://mmm-open-api-dev.fjmaimaimai.com"
//var LOG_LEVEL = "debug"
var LOG_LEVEL = "debug"
var LOG_File = "logs/app.log"
func init() {
... ...
... ... @@ -2,7 +2,7 @@ package constant
import "os"
var POSTGRESQL_DB_NAME = "mmm-worth"
var POSTGRESQL_DB_NAME = "mmm_worth"
var POSTGRESQL_USER = "postgres"
var POSTGRESQL_PASSWORD = "1993618jack"
var POSTGRESQL_HOST = "127.0.0.1"
... ...
/**
@author: stevechan
@date: 2020/12/11
@note:
**/
package service
... ...
... ... @@ -6,6 +6,13 @@ import (
"time"
)
/**
* @Author SteveChan
* @Description //TODO
* @Date 16:50 2020/12/10
* @Param
* @return
**/
func StringSliceEqualBCE(a, b []int) bool {
if len(a) != len(b) {
return false
... ... @@ -25,6 +32,13 @@ func StringSliceEqualBCE(a, b []int) bool {
return true
}
/**
* @Author SteveChan
* @Description //TODO
* @Date 16:50 2020/12/10
* @Param
* @return
**/
func IsContain(items []interface{}, item string) bool {
for _, eachItem := range items {
if eachItem == item {
... ... @@ -34,6 +48,13 @@ func IsContain(items []interface{}, item string) bool {
return false
}
/**
* @Author SteveChan
* @Description //TODO
* @Date 16:50 2020/12/10
* @Param
* @return
**/
func IsContainInt(items map[int64]interface{}, item int64) bool {
for _, eachItem := range items {
if eachItem == item {
... ... @@ -43,22 +64,27 @@ func IsContainInt(items map[int64]interface{}, item int64) bool {
return false
}
type LocalTime time.Time
// MarshalJSON satify the json marshal interface
func (l LocalTime) MarshalJSON() ([]byte, error) {
stamp := fmt.Sprintf("\"%s\"", time.Time(l).Format("2006-01-02 15:04:05"))
return []byte(stamp), nil
}
type LocalDate time.Time
// MarshalJSON satify the json marshal interface
/**
* @Author SteveChan
* @Description // MarshalJSON satify the json marshal interface
* @Date 16:49 2020/12/10
* @Param
* @return
**/
func (l LocalDate) MarshalJSON() ([]byte, error) {
stamp := fmt.Sprintf("\"%s\"", time.Time(l).Format("2006-01-02"))
return []byte(stamp), nil
}
/**
* @Author SteveChan
* @Description //TODO
* @Date 16:49 2020/12/10
* @Param
* @return
**/
func JsonToMap(jsonStr string) (map[string]string, error) {
m := make(map[string]string)
err := json.Unmarshal([]byte(jsonStr), &m)
... ... @@ -74,6 +100,15 @@ func JsonToMap(jsonStr string) (map[string]string, error) {
return m, nil
}
/**
* @Author SteveChan
* @Description 插入切片指定位置
* @Date 16:46 2020/12/10
* @Param index int 插入的位置
* @Param newStr []string 待插入的切片
* @Param str []string 源切片
* @return ns []string 返回新的切片
**/
func InsertSlice(index int, newstr []string, src []string) (ns []string) {
ns = append(ns, src[:index]...) // 切片后加..., 相当于拆包成单个元素
ns = append(ns, newstr...)
... ... @@ -81,6 +116,32 @@ func InsertSlice(index int, newstr []string, src []string) (ns []string) {
return
}
/**
* @Author SteveChan
* @Description 查找相同的手机号
* @Date 16:45 2020/12/10
* @Param nums []int 数组
* @return int
**/
func findRepeatNumber(nums []int) int {
maps := make(map[int]bool)
for _,num:=range nums{
if maps[num]{
return num
}else{
maps[num]=true
}
}
return -1
}
/**
* @Author SteveChan
* @Description //
* @Date 16:49 2020/12/10
* @Param
* @return
**/
//RankPeriodCheckTime 设置赛季时检查时间范围的合法性
//func RankPeriodCheckTime(rankTypeId int64, beginTime int64, endTime int64, idNot int64) bool {
// sql := `SELECT count(*) FROM rank_period
... ...
package beego
import (
"time"
"github.com/astaxie/beego"
"github.com/linmadan/egglib-go/web/beego/filters"
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/constant"
. "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/log"
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego/middleware"
_ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego/routers"
"time"
)
func init() {
... ... @@ -19,10 +20,11 @@ func init() {
beego.InsertFilter("/*", beego.BeforeExec, middleware.CreateRequstLogFilter(Logger))
beego.InsertFilter("/*", beego.AfterExec, middleware.CreateResponseLogFilter(Logger), false)
// 默认时区设置
timeLocal, _ := time.LoadLocation("Asia/Chongqing")
time.Local = timeLocal
// excel文件路径映射
// 静态文件路径映射
beego.SetStaticPath("/download", "download")
beego.SetStaticPath("/log", constant.LOG_File)
}
... ...
/**
@author: stevechan
@date: 2020/12/10
@note:
**/
package list_interval
... ...
/**
@author: stevechan
@date: 2020/12/11
@note:
**/
package list_interval
... ...
/**
@author: stevechan
@date: 2020/12/11
@note:
**/
package list_interval
... ...
/**
@author: stevechan
@date: 2020/12/11
@note:
**/
package list_interval
... ...
/**
@author: stevechan
@date: 2020/12/10
@note:
**/
package list_interval
... ...
/**
@author: stevechan
@date: 2020/12/10
@note:
**/
package su_money
... ...
/**
@author: stevechan
@date: 2020/12/10
@note:
**/
package su_money
... ...