作者 陈志颖

fix:解决冲突

正在显示 78 个修改的文件 包含 2787 行增加31 行删除
@@ -8,6 +8,7 @@ _obj @@ -8,6 +8,7 @@ _obj
8 _test 8 _test
9 public/file 9 public/file
10 logs 10 logs
  11 +download
11 12
12 # Architecture specific extensions/prefixes 13 # Architecture specific extensions/prefixes
13 *.[568vq] 14 *.[568vq]
@@ -25,4 +26,4 @@ _testmain.go @@ -25,4 +26,4 @@ _testmain.go
25 *.test 26 *.test
26 .log 27 .log
27 .idea 28 .idea
28 - 29 +.vscode
1 -#mmm-worth 1  
  1 +# 价值系统后台管理服务
  2 +## 系统架构图
  3 +![diagram](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/diagram.png)
  4 +## 项目使用框架
  5 + - http框架:beego
  6 + - orm框架:go-pg
  7 + - 数据存储:postgresql
  8 + - 项目结构分层:基于端口适配器架构(六边形架构)实现领域驱动设计(DDD领域驱动)
  9 +
  10 +## 项目目录结构
  11 + ```
  12 + ├─conf 项目配置文件
  13 + ├─deploy 项目部署文件
  14 + ├─document 接口文档
  15 + ├─test 业务接口集成测试
  16 + ├─dsl 领域描述语言文档
  17 + ├─pkg
  18 + │ ├─application 应用层
  19 + │ │ ├─employee 员工
  20 + │ │ ├─task 任务
  21 + │ │ ├─suMoney 素币
  22 + │ │ ├─statistics 统计
  23 + │ │ ├─notification 消息通知
  24 + │ │ ├─customerValue 客户价值
  25 + │ │ ├─projectBelong 项目归属
  26 + │ │ ├─taskNature 任务性质
  27 + │ │ ├─unifiedUserCenter 统一用户中心适配
  28 + │ │ ├─event 注册领域业务事件订阅以及处理
  29 + │ │ └─factory 工厂类,组装复杂对象或者聚合
  30 + │ ├─domain 领域层(核心业务逻辑建模,实体,聚合根)
  31 + │ │ ├─event 领域事件
  32 + │ │ ├─service 领域服务
  33 + │ │ ├─domain... 领域对象
  34 + │ │ └─task 任务状态机实现
  35 + │ ├─infrastructure 基础设施层
  36 + │ │ ├─dao 数据访问对象
  37 + │ │ ├─domain_service 领域服务具体实现
  38 + │ │ ├─pg 数据模型定义
  39 + │ │ ├─repository 实体或者聚合根模型仓储
  40 + │ │ └─service_gateway 微服务网关,其他业务接口或者第三方服务接口网关
  41 + │ ├─constant 项目配置常量设置
  42 + │ ├─log 日志模块
  43 + │ └─port 用户接入层
  44 + │ └─beego beego框架接入实现http接口
  45 + └─logs 日志文件
  46 + ```
  47 +
  48 +## 主要业务模块
  49 + - 企业员工模块(application/employee)
  50 + - 素币模块(application/suMoney)
  51 + - 任务模块(application/task)
  52 + - 统计模块(application/statistics)
  53 + - 消息通知模块(application/notification)
  54 + - 适配统一用户中心模块(application/unifiedUserCenter)
  55 +
  56 +## 任务有限状态机
  57 +![taskFSM]()
  58 +
  59 +## 领域驱动设计-战略建模
  60 +### 领域
  61 +
  62 +### 限界上下文
  63 +
  64 +### 上下文映射
  65 +
  66 +## 领域驱动设计-战术建模
  67 +### 实体
  68 +员工实体:Employee
  69 +
  70 +现金池实体:CashPool
  71 +
  72 +客户价值实体:CustomerValue
  73 +
  74 +素币兑换活动实体:ExchangeCashActivity
  75 +
  76 +素币兑换清单实体:ExchangeCashPerson
  77 +
  78 +排行版时间实体:ListInterval
  79 +
  80 +提醒消息实体:Notification
  81 +
  82 +关闭任务记录实体:OffTaskRecord
  83 +
  84 +项目归属实体:ProjectBelong
  85 +
  86 +引用资源实体:ReferenceResource
  87 +
  88 +驳回任务记录实体:RejectTaskRecord
  89 +
  90 +任务实体:Task
  91 +
  92 +素币事务记录实体:SuMoneyTransactionRecord
  93 +
  94 +任务性质实体:TaskNature
  95 +
  96 +已发送通知实体:SentNotification
  97 +
  98 +### 值对象
  99 +员工信息值对象:EmployeeInfo
  100 +
  101 +竞标任务信息值对象:BidInfo
  102 +
  103 +竞标人值对象:BidderInfo
  104 +
  105 +引用资源项值对象:ReferenceResourceItem
  106 +
  107 +抢单任务信息值对象:RobInfo
  108 +
  109 +任务贡献占比项值对象:TaskPercentageItem
  110 +
  111 +解决评分项值对象:SolveScoreItem
  112 +
  113 +### 聚合根
  114 +
  115 +### 领域服务
  116 +验收任务服务
  117 +
  118 +申请完成任务服务
  119 +
  120 +竞标任务服务
  121 +
  122 +选择竞标成功人服务
  123 +
  124 +确认抢单任务服务
  125 +
  126 +兑换素币服务
  127 +
  128 +关闭任务服务
  129 +
  130 +操作素币服务
  131 +
  132 +已读全部消息服务
  133 +
  134 +已读消息服务
  135 +
  136 +驳回任务服务
  137 +
  138 +发布任务服务
  139 +
  140 +抢单任务服务
  141 +
  142 +### 领域事件
  143 +
  144 +## 领域驱动设计工程实现
  145 +### 模块
  146 +
  147 +### 领域对象
  148 +
  149 +### 资源库
  150 +
  151 +### 防腐层
  152 +
  153 +### 领域服务
  154 +
  155 +### 数据流转
  156 +![avatar](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/dto.png)
  157 +### 上下文集成
  158 +
  159 +### 分离领域
  160 +![avatar](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/dispatch.png)
  161 +
  162 +## 安装与使用
  163 +[价值系统代码仓库地址](http://gitlab.fjmaimaimai.com/linmadan/mmm-worth)
  164 +### 新建开发分支,如:xxx-dev,下载相应分支代码
  165 +```
  166 +git clone -b xxx-dev http://gitlab.fjmaimaimai.com/linmadan/mmm-worth.git
  167 +```
  168 +### 安装项目依赖:
  169 +```
  170 +go mod tidy
  171 +```
  172 +### 启动项目
  173 +```
  174 +bee run
  175 +```
@@ -69,6 +69,8 @@ spec: @@ -69,6 +69,8 @@ spec:
69 value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" 69 value: "https://suplus-worth-app-gateway-dev.fjmaimaimai.com"
70 - name: MMM_OPEN_API_SERVICE_HOST 70 - name: MMM_OPEN_API_SERVICE_HOST
71 value: "http://mmm-open-api-dev.fjmaimaimai.com" 71 value: "http://mmm-open-api-dev.fjmaimaimai.com"
  72 + - name: LOG_PREFIX
  73 + value: "[mmm-worth_dev]"
72 volumes: 74 volumes:
73 - name: accesslogs 75 - name: accesslogs
74 emptyDir: {} 76 emptyDir: {}
@@ -72,6 +72,8 @@ spec: @@ -72,6 +72,8 @@ spec:
72 value: "https://suplus-worth-app-gateway-prd.fjmaimaimai.com" 72 value: "https://suplus-worth-app-gateway-prd.fjmaimaimai.com"
73 - name: MMM_OPEN_API_SERVICE_HOST 73 - name: MMM_OPEN_API_SERVICE_HOST
74 value: "https://public-interface.fjmaimaimai.com/openapi" 74 value: "https://public-interface.fjmaimaimai.com/openapi"
  75 + - name: LOG_PREFIX
  76 + value: "[mmm-worth_prd]"
75 volumes: 77 volumes:
76 - name: accesslogs 78 - name: accesslogs
77 emptyDir: {} 79 emptyDir: {}
@@ -69,6 +69,8 @@ spec: @@ -69,6 +69,8 @@ spec:
69 value: "https://suplus-worth-app-gateway-test.fjmaimaimai.com" 69 value: "https://suplus-worth-app-gateway-test.fjmaimaimai.com"
70 - name: MMM_OPEN_API_SERVICE_HOST 70 - name: MMM_OPEN_API_SERVICE_HOST
71 value: "http://mmm-open-api-test.fjmaimaimai.com" 71 value: "http://mmm-open-api-test.fjmaimaimai.com"
  72 + - name: LOG_PREFIX
  73 + value: "[mmm-worth_test]"
72 volumes: 74 volumes:
73 - name: accesslogs 75 - name: accesslogs
74 emptyDir: {} 76 emptyDir: {}
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: config
  5 + path: /config
  6 + endpoints:
  7 + - method: listTaskStatus
  8 + route:
  9 + get: /task-statuses
  10 + - method: listTaskType
  11 + route:
  12 + get: /task-types
  13 + - method: listTaskNature
  14 + route:
  15 + get: /task-natures
  16 + - method: listCustomerValue
  17 + route:
  18 + get: /customer-values
  19 + - method: listReferenceResourceType
  20 + route:
  21 + get: /reference-resource-types
  22 + - method: listBidTimeMatch
  23 + route:
  24 + get: /bid-time-matchs
  25 + - method: listEmployeePermission
  26 + route:
  27 + get: /employee-permissions
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: customerValue
  5 + path: /customer-values
  6 + endpoints:
  7 + - method: createCustomerValue
  8 + route:
  9 + post: /
  10 + - method: updateCustomerValue
  11 + route:
  12 + put: /{customerValueId}
  13 + - method: getCustomerValue
  14 + route:
  15 + get: /{customerValueId}
  16 + - method: removeCustomerValue
  17 + route:
  18 + delete: /{customerValueId}
  19 + - method: listCustomerValue
  20 + route:
  21 + get: /
  22 + params:
  23 + - name: companyId
  24 + - name: customerValueName
  25 + - name: customerValueNameMatch
  26 + - name: offset
  27 + - name: limit
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: employee
  5 + path: /employees
  6 + endpoints:
  7 + - method: createEmployee
  8 + route:
  9 + post: /
  10 + - method: updateEmployee
  11 + route:
  12 + put: /{uid}
  13 + - method: getEmployee
  14 + route:
  15 + get: /{uid}
  16 + - method: removeEmployee
  17 + route:
  18 + delete: /{uid}
  19 + - method: listEmployee
  20 + route:
  21 + get: /
  22 + params:
  23 + - name: companyId
  24 + - name: employeeNameMatch
  25 + - name: offset
  26 + - name: limit
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: notification
  5 + path: /notifications
  6 + endpoints:
  7 + - method: readSentNotification
  8 + route:
  9 + post: /{sentNotificationId}/read
  10 + - method: readAllUnReadSentNotification
  11 + route:
  12 + post: /read-all
  13 + - method: listSentNotification
  14 + route:
  15 + get: /
  16 + params:
  17 + - name: receiverId
  18 + - name: notificationType
  19 + - name: offset
  20 + - name: limit
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: task
  5 + path: /off-task-records
  6 + endpoints:
  7 + - method: getOffTaskRecord
  8 + route:
  9 + get: /{offTaskRecordId}
  10 + - method: searchOffTaskRecord
  11 + route:
  12 + post: /search-off-task-record
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: projectBelong
  5 + path: /project-belongs
  6 + endpoints:
  7 + - method: createProjectBelong
  8 + route:
  9 + post: /
  10 + - method: updateProjectBelong
  11 + route:
  12 + put: /{projectBelongId}
  13 + - method: getProjectBelong
  14 + route:
  15 + get: /{projectBelongId}
  16 + - method: removeProjectBelong
  17 + route:
  18 + delete: /{projectBelongId}
  19 + - method: listProjectBelong
  20 + route:
  21 + get: /
  22 + params:
  23 + - name: companyId
  24 + - name: projectBelongName
  25 + - name: projectBelongNameMatch
  26 + - name: offset
  27 + - name: limit
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: task
  5 + path: /reject-task-records
  6 + endpoints:
  7 + - method: getRejectTaskRecord
  8 + route:
  9 + get: /{rejectTaskRecordId}
  10 + - method: searchRejectTaskRecord
  11 + route:
  12 + post: /search-reject-task-record
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: statistics
  5 + path: /statistics
  6 + endpoints:
  7 + - method: systemTaskStatistics
  8 + route:
  9 + post: /system-task
  10 + - method: personTaskStatistics
  11 + route:
  12 + post: /person-task
  13 + - method: personSuMoneyStatistics
  14 + route:
  15 + post: /person-su-money
  16 + - method: personNotificationStatistics
  17 + route:
  18 + post: /person-notification
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: suMoney
  5 + path: /su-money
  6 + endpoints:
  7 + - method: operationSuMoney
  8 + route:
  9 + post: /operation
  10 + - method: getSuMoneyTransactionRecord
  11 + route:
  12 + get: /su-money-transaction-records/{suMoneyTransactionRecordId}
  13 + - method: exchangeSuMoney
  14 + route:
  15 + post: /exchange
  16 + - method: searchSuMoneyTransactionRecord
  17 + route:
  18 + post: /search-su-money-transaction-record
  19 + - method: suMoneyTransactionRecordStatistics
  20 + route:
  21 + post: /su-money-transaction-record-statistics
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: task
  5 + path: /tasks
  6 + endpoints:
  7 + - method: rejectTaskReceiver
  8 + route:
  9 + post: /{taskId}/reject-task-receiver
  10 + - method: confirmRobTask
  11 + route:
  12 + post: /{taskId}/confirm-rob-task
  13 + - method: robTask
  14 + route:
  15 + post: /{taskId}/rob
  16 + - method: bidTask
  17 + route:
  18 + post: /{taskId}/bid
  19 + - method: applyCompleteTask
  20 + route:
  21 + post: /{taskId}/apply-complete
  22 + - method: releaseTask
  23 + route:
  24 + post: /{taskId}/release
  25 + - method: chooseSuccessfulBidder
  26 + route:
  27 + post: /{taskId}/choose-successful-bidder
  28 + - method: offTask
  29 + route:
  30 + post: /{taskId}/dff
  31 + - method: acceptanceTask
  32 + route:
  33 + post: /{taskId}/acceptance
  34 + - method: searchTask
  35 + route:
  36 + post: /search
  37 + - method: createTask
  38 + route:
  39 + post: /
  40 + - method: updateTask
  41 + route:
  42 + put: /{taskId}
  43 + - method: getTask
  44 + route:
  45 + get: /{taskId}
  46 + - method: removeTask
  47 + route:
  48 + delete: /{taskId}
  49 + - method: listTask
  50 + route:
  51 + get: /
  52 + params:
  53 + - name: companyId
  54 + - name: sponsor
  55 + - name: taskContentMatch
  56 + - name: taskType
  57 + - name: taskStatus
  58 + - name: customerValue
  59 + - name: taskNature
  60 + - name: isRewardTake
  61 + - name: bidTimeMatch
  62 + - name: receiver
  63 + - name: participator
  64 + - name: offset
  65 + - name: limit
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: taskNature
  5 + path: /task-natures
  6 + endpoints:
  7 + - method: createTaskNature
  8 + route:
  9 + post: /
  10 + - method: updateTaskNature
  11 + route:
  12 + put: /{taskNatureId}
  13 + - method: getTaskNature
  14 + route:
  15 + get: /{taskNatureId}
  16 + - method: removeTaskNature
  17 + route:
  18 + delete: /{taskNatureId}
  19 + - method: listTaskNature
  20 + route:
  21 + get: /
  22 + params:
  23 + - name: companyId
  24 + - name: taskNatureName
  25 + - name: taskNatureNameMatch
  26 + - name: offset
  27 + - name: limit
  1 +version: v1
  2 +kind: HttpApi
  3 +metadata:
  4 + service: unifiedUserCenter
  5 + path: /
  6 + endpoints:
  7 + - method: syncEmployeeCallback
  8 + route:
  9 + post: /api/business/index
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: companyId
  5 + description: 公司ID
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: count
  5 + description: 结果总数
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: createTime
  5 + description: 创建时间
  6 + type:
  7 + primitive: datetime
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: description
  5 + description: 描述
  6 + type:
  7 + primitive: string
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: id
  5 + description: ID
  6 + type:
  7 + primitive: int
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: limit
  5 + description: 查询限制
  6 + type:
  7 + primitive: int
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: name
  5 + description: 名称
  6 + type:
  7 + primitive: string
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: notificationId
  5 + description: 通知ID
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: offset
  5 + description: 查询偏离量
  6 + type:
  7 + primitive: int
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: sentNotificationId
  5 + description: 发送出的通知ID
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: taskId
  5 + description: 任务ID
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Attribute
  3 +metadata:
  4 + name: uid
  5 + description: 统一用户UID
  6 + type:
  7 + primitive: int64
  1 +version: v1
  2 +kind: Project
  3 +metadata:
  4 + name: mmm-worth
  5 + description: 买买买价值系统
  6 + version: 0.0.1
  7 + repository: gitlab.fjmaimaimai.com/linmadan/mmm-worth
  8 + contact:
  9 + name: linmadan
  10 + email: 772181827@qq.com
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: bidInfo
  5 + description: 竞标任务信息
  6 + attributes:
  7 + - name: bidderInfos
  8 + description: 竞标人员列表
  9 + type:
  10 + array: bidderInfo
  11 + - name: successfulBidder
  12 + description: 中标人
  13 + type:
  14 + schema: employeeInfo
  15 + required: true
  16 + - name: bidStartTime
  17 + description: 竞标开始时间
  18 + type:
  19 + primitive: datetime
  20 + required: true
  21 + - name: bidEndTime
  22 + description: 竞标结束时间
  23 + type:
  24 + primitive: datetime
  25 + required: true
  26 + - name: isRemind
  27 + description: 是否截止时间前一天提醒
  28 + type:
  29 + primitive: boolean
  30 + - name: winBidTime
  31 + description: 中标时间
  32 + type:
  33 + primitive: datetime
  34 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: bidderInfo
  5 + description: 竞标人员信息
  6 + attributes:
  7 + - name: bidder
  8 + description: 竞标人员
  9 + type:
  10 + schema: employeeInfo
  11 + required: true
  12 + - name: bidTime
  13 + description: 竞标时间
  14 + type:
  15 + primitive: datetime
  16 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: config
  5 + description: 配置字典
  6 + attributes:
  7 + - ref: id
  8 + required: true
  9 + - ref: name
  10 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: customerValue
  5 + description: 客户价值
  6 + attributes:
  7 + - name: customerValueId
  8 + description: 客户价值ID
  9 + type:
  10 + primitive: int
  11 + required: true
  12 + - name: customerValueName
  13 + description: 客户价值名称
  14 + type:
  15 + primitive: string
  16 + required: true
  17 + - ref: companyId
  18 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: employee
  5 + description: 员工
  6 + attributes:
  7 + - name: employeeId
  8 + description: 员工ID
  9 + type:
  10 + primitive: int64
  11 + required: true
  12 + - ref: companyId
  13 + required: true
  14 + - name: employeeInfo
  15 + description: 员工信息
  16 + type:
  17 + schema: employeeInfo
  18 + - name: suMoney
  19 + description: 当前素币
  20 + type:
  21 + primitive: float64
  22 + required: true
  23 + - name: status
  24 + description: 员工状态(启用或者禁用)
  25 + type:
  26 + primitive: int
  27 + - name: permissions
  28 + description: 员工权限集合
  29 + type:
  30 + array: int
  31 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: employeeInfo
  5 + description: 员工信息
  6 + attributes:
  7 + - ref: uid
  8 + required: true
  9 + - name: employeeName
  10 + description: 员工姓名
  11 + type:
  12 + primitive: string
  13 + required: true
  14 + - name: employeeAccount
  15 + description: 员工账号
  16 + type:
  17 + primitive: string
  18 + - name: employeeAvatarUrl
  19 + description: 员工头像URL
  20 + type:
  21 + primitive: string
  22 + - name: isPrincipal
  23 + description: 是否公司负责人
  24 + type:
  25 + primitive: boolean
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: notification
  5 + description: 通知
  6 + attributes:
  7 + - ref: notificationId
  8 + required: true
  9 + - name: notificationType
  10 + description: 通知类型(1.系统通知2.互动通知)
  11 + type:
  12 + primitive: int
  13 + required: true
  14 + - name: notificationTitle
  15 + description: 通知标题
  16 + type:
  17 + primitive: string
  18 + required: true
  19 + - name: notificationContent
  20 + description: 通知内容
  21 + type:
  22 + primitive: string
  23 + required: true
  24 + - name: notificationTime
  25 + description: 通知时间
  26 + type:
  27 + primitive: datetime
  28 + required: true
  29 + - name: externalResourceType
  30 + description: 外部资源引用类型(1任务2驳回任务记录)
  31 + type:
  32 + primitive: int
  33 + required: true
  34 + - name: externalResource
  35 + description: 外部资源引用
  36 + type:
  37 + primitive: int64
  38 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: offTaskRecord
  5 + description: 关闭任务记录
  6 + attributes:
  7 + - name: offTaskRecordId
  8 + description: 关闭任务记录ID
  9 + type:
  10 + primitive: int64
  11 + required: true
  12 + - name: task
  13 + description: 任务
  14 + type:
  15 + schema: task
  16 + required: true
  17 + - name: operator
  18 + description: 操作人
  19 + type:
  20 + schema: employeeInfo
  21 + required: true
  22 + - name: offReason
  23 + description: 关闭理由
  24 + type:
  25 + primitive: string
  26 + required: true
  27 + - ref: createTime
  28 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: projectBelong
  5 + description: 项目归属
  6 + attributes:
  7 + - name: projectBelongId
  8 + description: 项目归属ID
  9 + type:
  10 + primitive: int
  11 + required: true
  12 + - name: projectBelongName
  13 + description: 项目归属名称
  14 + type:
  15 + primitive: string
  16 + required: true
  17 + - ref: companyId
  18 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: referenceResource
  5 + description: 引用资源
  6 + attributes:
  7 + - name: referenceResourceType
  8 + description: 引用类型
  9 + type:
  10 + primitive: int
  11 + required: true
  12 + - name: referenceResourceItems
  13 + description: 引用资源项列表
  14 + type:
  15 + array: referenceResourceItem
  16 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: referenceResourceItem
  5 + description: 引用资源项
  6 + attributes:
  7 + - name: referenceResourceId
  8 + description: 引用资源ID
  9 + type:
  10 + primitive: int64
  11 + required: true
  12 + - name: serialNumber
  13 + description: 编号
  14 + type:
  15 + primitive: int64
  16 + required: true
  17 + - name: title
  18 + description: 标题
  19 + type:
  20 + primitive: string
  21 + required: true
  22 + - name: content
  23 + description: 内容
  24 + type:
  25 + primitive: string
  26 + required: true
  27 + - name: issueScore
  28 + description: 问题总分
  29 + type:
  30 + primitive: float64
  31 + - name: solveScore
  32 + description: 解决评分明细
  33 + type:
  34 + array: solveScoreItem
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: rejectTaskRecord
  5 + description: 驳回任务记录
  6 + attributes:
  7 + - name: rejectTaskRecordId
  8 + description: 驳回任务记录ID
  9 + type:
  10 + primitive: int64
  11 + required: true
  12 + - name: task
  13 + description: 任务
  14 + type:
  15 + schema: task
  16 + required: true
  17 + - name: operator
  18 + description: 操作人
  19 + type:
  20 + schema: employeeInfo
  21 + required: true
  22 + - name: rejectReason
  23 + description: 驳回理由
  24 + type:
  25 + primitive: string
  26 + required: true
  27 + - ref: createTime
  28 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: robInfo
  5 + description: 抢单任务信息
  6 + attributes:
  7 + - name: receiver
  8 + description: 领取人
  9 + type:
  10 + schema: employeeInfo
  11 + required: true
  12 + - name: receiveTime
  13 + description: 领取时间
  14 + type:
  15 + primitive: datetime
  16 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: sentNotification
  5 + description: 发送出的通知
  6 + attributes:
  7 + - ref: sentNotificationId
  8 + required: true
  9 + - name: notification
  10 + description: 通知
  11 + type:
  12 + schema: notification
  13 + required: true
  14 + - name: receiver
  15 + description: 通知接收者
  16 + type:
  17 + schema: employeeInfo
  18 + required: true
  19 + - name: isRead
  20 + description: 是否已读
  21 + type:
  22 + primitive: boolean
  23 + required: true
  24 + - name: readTime
  25 + description: 通知读取时间
  26 + type:
  27 + primitive: datetime
  28 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: solveScoreItem
  5 + description: 解决评分项
  6 + attributes:
  7 + - name: contributor
  8 + description: 贡献者
  9 + type:
  10 + schema: employeeInfo
  11 + required: true
  12 + - name: isReceiver
  13 + description: 是否领取人
  14 + type:
  15 + primitive: boolean
  16 + required: true
  17 + - name: percentage
  18 + description: 解决占比
  19 + type:
  20 + primitive: int
  21 + required: true
  22 + - name: score
  23 + description: 解决评分
  24 + type:
  25 + primitive: float64
  26 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: suMoneyTransactionRecord
  5 + description: 素币事务记录
  6 + attributes:
  7 + - name: suMoneyTransactionRecordId
  8 + description: 素币事务记录ID
  9 + type:
  10 + primitive: int64
  11 + required: true
  12 + - name: recordType
  13 + description: 记录类型(1兑换,2任务奖励,3增加,4扣除)
  14 + type:
  15 + primitive: int
  16 + required: true
  17 + - name: employee
  18 + description: 记录关联员工
  19 + type:
  20 + schema: employeeInfo
  21 + required: true
  22 + - name: suMoneyBeforeTransaction
  23 + description: 事务处理前素币值
  24 + type:
  25 + primitive: float64
  26 + required: true
  27 + - name: currentSuMoney
  28 + description: 当前素币值
  29 + type:
  30 + primitive: float64
  31 + required: true
  32 + - name: suMoney
  33 + description: 事务素币值
  34 + type:
  35 + primitive: float64
  36 + required: true
  37 + - name: operator
  38 + description: 操作人
  39 + type:
  40 + schema: employeeInfo
  41 + required: true
  42 + - name: recordDescription
  43 + description: 素币事务记录描述
  44 + type:
  45 + primitive: string
  46 + required: true
  47 + - ref: createTime
  48 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: task
  5 + description: 任务
  6 + attributes:
  7 + - ref: taskId
  8 + required: true
  9 + - ref: companyId
  10 + required: true
  11 + - name: taskName
  12 + description: 任务名称
  13 + type:
  14 + primitive: string
  15 + required: true
  16 + - name: taskType
  17 + description: 任务类型(1.抢单任务2.竞标任务3.指派任务)
  18 + type:
  19 + primitive: int
  20 + required: true
  21 + - name: sponsor
  22 + description: 任务发起者
  23 + type:
  24 + schema: employeeInfo
  25 + required: true
  26 + - name: taskStatus
  27 + description: 任务状态(1.待发布2.待领取3.进行中4.待验收5.已完成6.关闭7.待确认)
  28 + type:
  29 + primitive: int
  30 + required: true
  31 + - name: referenceResource
  32 + description: 引用资源
  33 + type:
  34 + schema: referenceResource
  35 + - name: projectBelong
  36 + description: 项目归属
  37 + type:
  38 + primitive: int
  39 + required: true
  40 + - name: customerValues
  41 + description: 客户价值列表
  42 + type:
  43 + array: int
  44 + required: true
  45 + - name: taskNature
  46 + description: 任务性质
  47 + type:
  48 + primitive: int
  49 + required: true
  50 + - name: suMoney
  51 + description: 奖励素币
  52 + type:
  53 + primitive: float64
  54 + required: true
  55 + - name: acceptanceStandard
  56 + description: 验收标准
  57 + type:
  58 + primitive: string
  59 + required: true
  60 + - name: taskDescription
  61 + description: 任务描述
  62 + type:
  63 + primitive: string
  64 + required: true
  65 + - name: taskPictureUrls
  66 + description: 任务图片URL列表
  67 + type:
  68 + array: string
  69 + - name: isRewardTake
  70 + description: 是否悬赏任务
  71 + type:
  72 + primitive: boolean
  73 + - name: robInfo
  74 + description: 抢单任务信息
  75 + type:
  76 + schema: robInfo
  77 + - name: bidInfo
  78 + description: 竞标任务信息
  79 + type:
  80 + schema: bidInfo
  81 + - name: participators
  82 + description: 任务参与者列表
  83 + type:
  84 + array: employeeInfo
  85 + - name: taskPercentage
  86 + description: 任务贡献占比
  87 + type:
  88 + array: taskPercentageItem
  89 + - name: solveReport
  90 + description: 解决报告
  91 + type:
  92 + primitive: string
  93 + - name: solvePictureUrls
  94 + description: 解决图片URL列表
  95 + type:
  96 + array: string
  97 + - ref: createTime
  98 + required: true
  99 + - name: assignedPerson
  100 + description: 指派人员
  101 + type:
  102 + schema: employeeInfo
  103 + - name: plannedCompletionTime
  104 + description: 计划完成时间
  105 + type:
  106 + primitive: datetime
  107 + - name: actualCompletionTime
  108 + description: 实际完成时间
  109 + type:
  110 + primitive: datetime
  111 + - name: releaseTime
  112 + description: 发布任务时间
  113 + type:
  114 + primitive: datetime
  115 + - name: receiveTime
  116 + description: 领取任务时间
  117 + type:
  118 + primitive: datetime
  119 + - name: completeTime
  120 + description: 完成任务操作时间
  121 + type:
  122 + primitive: datetime
  123 + - name: acceptanceTime
  124 + description: 验收方验收时间
  125 + type:
  126 + primitive: datetime
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: taskNature
  5 + description: 任务性质
  6 + attributes:
  7 + - name: taskNatureId
  8 + description: 任务性质ID
  9 + type:
  10 + primitive: int
  11 + required: true
  12 + - name: taskNatureName
  13 + description: 任务性质名称
  14 + type:
  15 + primitive: string
  16 + required: true
  17 + - ref: companyId
  18 + required: true
  1 +version: v1
  2 +kind: Schema
  3 +metadata:
  4 + name: taskPercentageItem
  5 + description: 任务贡献占比项
  6 + attributes:
  7 + - name: contributor
  8 + description: 贡献者
  9 + type:
  10 + schema: employeeInfo
  11 + required: true
  12 + - name: isReceiver
  13 + description: 是否领取人
  14 + type:
  15 + primitive: boolean
  16 + required: true
  17 + - name: percentage
  18 + description: 任务贡献占比
  19 + type:
  20 + primitive: int
  21 + required: true
  22 + - name: suMoney
  23 + description: 分配到的奖励素币
  24 + type:
  25 + primitive: float64
  26 + required: true
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: config
  5 + description: 配置服务
  6 + methods:
  7 + - name: listTaskStatus
  8 + description: 返回任务状态字典列表(1待发布,2待领取,3进行中,4待验收,5已完成,7待确认)
  9 + type: query
  10 + result:
  11 + - name: taskStatuses
  12 + type:
  13 + array: config
  14 + - name: listTaskType
  15 + description: 返回任务类型字典列表(1抢单任务,2竞标任务,3指派任务)
  16 + type: query
  17 + result:
  18 + - name: taskTypes
  19 + type:
  20 + array: config
  21 + - name: listTaskNature
  22 + description: 返回任务性质字典列表
  23 + type: query
  24 + result:
  25 + - name: taskNatures
  26 + type:
  27 + array: config
  28 + - name: listCustomerValue
  29 + description: 返回客户价值字典列表
  30 + type: query
  31 + result:
  32 + - name: customerValues
  33 + type:
  34 + array: config
  35 + - name: listReferenceResourceType
  36 + description: 返回任务引用资源类型字典列表
  37 + type: query
  38 + result:
  39 + - name: referenceResourceTypes
  40 + type:
  41 + array: config
  42 + - name: listBidTimeMatch
  43 + description: 返回竞标时间字典列表(1全部,2已截止,3未截止)
  44 + type: query
  45 + result:
  46 + - name: bidTimeMatchs
  47 + type:
  48 + array: config
  49 + - name: listEmployeePermission
  50 + description: 返回员工权限字典列表(1任务管理,2素币管理,3成员管理,4标签管理)
  51 + type: query
  52 + result:
  53 + - name: employeePermissions
  54 + type:
  55 + array: config
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: customerValue
  5 + description: 客户价值服务
  6 + methods:
  7 + - name: createCustomerValue
  8 + type: command
  9 + description: 创建客户价值
  10 + payload:
  11 + - ref: companyId
  12 + required: true
  13 + - name: customerValueName
  14 + description: 客户价值名称
  15 + type:
  16 + primitive: string
  17 + required: true
  18 + result:
  19 + - name: customerValue
  20 + type:
  21 + schema: customerValue
  22 + - name: getCustomerValue
  23 + description: 返回客户价值
  24 + type: query
  25 + payload:
  26 + - name: customerValueId
  27 + description: 客户价值ID
  28 + type:
  29 + primitive: int
  30 + required: true
  31 + result:
  32 + - name: customerValue
  33 + type:
  34 + schema: customerValue
  35 + - name: updateCustomerValue
  36 + type: command
  37 + description: 更新客户价值
  38 + payload:
  39 + - name: customerValueId
  40 + description: 客户价值ID
  41 + type:
  42 + primitive: int
  43 + - name: customerValueName
  44 + description: 客户价值名称
  45 + type:
  46 + primitive: string
  47 + result:
  48 + - name: customerValue
  49 + type:
  50 + schema: customerValue
  51 + - name: removeCustomerValue
  52 + description: 移除客户价值
  53 + type: command
  54 + payload:
  55 + - name: customerValueId
  56 + description: 客户价值ID
  57 + type:
  58 + primitive: int
  59 + required: true
  60 + result:
  61 + - name: customerValue
  62 + type:
  63 + schema: customerValue
  64 + - name: listCustomerValue
  65 + description: 返回客户价值列表
  66 + type: query
  67 + payload:
  68 + - ref: companyId
  69 + required: true
  70 + - name: customerValueName
  71 + description: 客户价值名称
  72 + type:
  73 + primitive: string
  74 + - name: customerValueNameMatch
  75 + description: 客户价值名称匹配
  76 + type:
  77 + primitive: string
  78 + - ref: offset
  79 + - ref: limit
  80 + result:
  81 + - ref: count
  82 + - name: customerValues
  83 + type:
  84 + array: customerValue
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: employee
  5 + description: 员工服务
  6 + methods:
  7 + - name: createEmployee
  8 + type: command
  9 + description: 创建新员工
  10 + payload:
  11 + - ref: uid
  12 + required: true
  13 + - name: employeeName
  14 + description: 员工姓名
  15 + type:
  16 + primitive: string
  17 + - name: employeeAccount
  18 + description: 员工账号
  19 + type:
  20 + primitive: string
  21 + - name: employeeAvatarUrl
  22 + description: 员工头像URL
  23 + type:
  24 + primitive: string
  25 + result:
  26 + - name: employee
  27 + type:
  28 + schema: employee
  29 + - name: getEmployee
  30 + description: 返回员工
  31 + type: query
  32 + payload:
  33 + - ref: uid
  34 + required: true
  35 + result:
  36 + - name: employee
  37 + type:
  38 + schema: employee
  39 + - name: updateEmployee
  40 + type: command
  41 + description: 更新员工
  42 + payload:
  43 + - ref: uid
  44 + required: true
  45 + - name: employeeName
  46 + description: 员工姓名
  47 + type:
  48 + primitive: string
  49 + - name: employeeAccount
  50 + description: 员工账号
  51 + type:
  52 + primitive: string
  53 + - name: employeeAvatarUrl
  54 + description: 员工头像URL
  55 + type:
  56 + primitive: string
  57 + - name: permissions
  58 + description: 员工权限集合
  59 + type:
  60 + array: int
  61 + result:
  62 + - name: employee
  63 + type:
  64 + schema: employee
  65 + - name: removeEmployee
  66 + description: 移除员工
  67 + type: command
  68 + payload:
  69 + - ref: uid
  70 + required: true
  71 + result:
  72 + - name: employee
  73 + type:
  74 + schema: employee
  75 + - name: listEmployee
  76 + description: 返回员工列表
  77 + type: query
  78 + payload:
  79 + - ref: companyId
  80 + required: true
  81 + - name: employeeNameMatch
  82 + description: 员工姓名匹配
  83 + type:
  84 + primitive: string
  85 + - ref: offset
  86 + - ref: limit
  87 + result:
  88 + - ref: count
  89 + - name: employees
  90 + type:
  91 + array: employee
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: notification
  5 + description: 通知服务
  6 + methods:
  7 + - name: readSentNotification
  8 + description: 读取发送出的通知
  9 + type: command
  10 + payload:
  11 + - ref: sentNotificationId
  12 + required: true
  13 + result:
  14 + - name: sentNotification
  15 + type:
  16 + schema: sentNotification
  17 + - name: readAllUnReadSentNotification
  18 + type: command
  19 + description: 读取全部未读取的发送出的通知
  20 + payload:
  21 + - name: receiverId
  22 + description: 通知接收者Uid
  23 + type:
  24 + primitive: int64
  25 + required: true
  26 + - name: receiverId
  27 + description: 通知接收者Uid
  28 + type:
  29 + primitive: int64
  30 + required: true
  31 + - name: notificationType
  32 + description: 通知类型(1.系统通知2.互动通知)
  33 + type:
  34 + primitive: int
  35 + result:
  36 + - name: readCount
  37 + description: 读取消息数
  38 + type:
  39 + primitive: int
  40 + - name: listSentNotification
  41 + description: 返回发送出的通知列表
  42 + type: query
  43 + payload:
  44 + - name: receiverId
  45 + description: 通知接收者Uid
  46 + type:
  47 + primitive: int64
  48 + required: true
  49 + - name: notificationType
  50 + description: 通知类型(1.系统通知2.互动通知)
  51 + type:
  52 + primitive: int
  53 + - ref: offset
  54 + - ref: limit
  55 + result:
  56 + - ref: count
  57 + - name: sentNotifications
  58 + type:
  59 + array: sentNotification
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: projectBelong
  5 + description: 项目归属服务
  6 + methods:
  7 + - name: createProjectBelong
  8 + type: command
  9 + description: 创建项目归属
  10 + payload:
  11 + - ref: companyId
  12 + required: true
  13 + - name: projectBelongName
  14 + description: 项目归属名称
  15 + type:
  16 + primitive: string
  17 + required: true
  18 + result:
  19 + - name: projectBelong
  20 + type:
  21 + schema: projectBelong
  22 + - name: getProjectBelong
  23 + description: 返回项目归属
  24 + type: query
  25 + payload:
  26 + - name: projectBelongId
  27 + description: 项目归属ID
  28 + type:
  29 + primitive: int
  30 + required: true
  31 + result:
  32 + - name: projectBelong
  33 + type:
  34 + schema: projectBelong
  35 + - name: updateProjectBelong
  36 + type: command
  37 + description: 更新项目归属
  38 + payload:
  39 + - name: projectBelongId
  40 + description: 项目归属ID
  41 + type:
  42 + primitive: int
  43 + - name: projectBelongName
  44 + description: 项目归属名称
  45 + type:
  46 + primitive: string
  47 + result:
  48 + - name: projectBelong
  49 + type:
  50 + schema: projectBelong
  51 + - name: removeProjectBelong
  52 + description: 移除项目归属
  53 + type: command
  54 + payload:
  55 + - name: projectBelongId
  56 + description: 项目归属ID
  57 + type:
  58 + primitive: int
  59 + required: true
  60 + result:
  61 + - name: projectBelong
  62 + type:
  63 + schema: projectBelong
  64 + - name: listProjectBelong
  65 + description: 返回项目归属列表
  66 + type: query
  67 + payload:
  68 + - ref: companyId
  69 + required: true
  70 + - name: projectBelongName
  71 + description: 项目归属名称
  72 + type:
  73 + primitive: string
  74 + - name: projectBelongNameMatch
  75 + description: 项目归属名称匹配
  76 + type:
  77 + primitive: string
  78 + - ref: offset
  79 + - ref: limit
  80 + result:
  81 + - ref: count
  82 + - name: projectBelongs
  83 + type:
  84 + array: projectBelong
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: statistics
  5 + description: 数据统计服务
  6 + methods:
  7 + - name: personNotificationStatistics
  8 + description: 获取个人消息通知统计
  9 + type: command
  10 + payload:
  11 + - ref: uid
  12 + required: true
  13 + result:
  14 + - name: unReadSystemNotification
  15 + description: 未读系统消息条数
  16 + type:
  17 + primitive: int
  18 + - name: unReadInteractionNotification
  19 + description: 未读互动消息条数
  20 + type:
  21 + primitive: int
  22 + - name: systemTaskStatistics
  23 + description: 获取系统任务统计
  24 + type: command
  25 + payload:
  26 + - ref: companyId
  27 + required: true
  28 + result:
  29 + - name: released
  30 + description: 发布的任务数
  31 + type:
  32 + primitive: int64
  33 + - name: underway
  34 + description: 进行中的任务数
  35 + type:
  36 + primitive: int64
  37 + - name: completed
  38 + description: 已完成的任务数
  39 + type:
  40 + primitive: int64
  41 + - name: personTaskStatistics
  42 + description: 获取个人任务统计
  43 + type: command
  44 + payload:
  45 + - ref: uid
  46 + required: true
  47 + result:
  48 + - name: underwayAsAssignedPerson
  49 + description: 指派我的进行中任务
  50 + type:
  51 + primitive: int64
  52 + required: true
  53 + - name: unAcceptanceAsAssignedPerson
  54 + description: 指派我的待验收任务
  55 + type:
  56 + primitive: int64
  57 + required: true
  58 + - name: completedAsAssignedPerson
  59 + description: 指派我的已完成任务
  60 + type:
  61 + primitive: int64
  62 + required: true
  63 + - name: unConfirmedAsReceiver
  64 + description: 个人领取的待确认任务
  65 + type:
  66 + primitive: int64
  67 + required: true
  68 + - name: underwayAsReceiver
  69 + description: 个人领取的进行中任务
  70 + type:
  71 + primitive: int64
  72 + required: true
  73 + - name: unAcceptanceAsReceiver
  74 + description: 个人领取的待验收任务
  75 + type:
  76 + primitive: int64
  77 + required: true
  78 + - name: completedAsReceiver
  79 + description: 个人领取的已完成任务
  80 + type:
  81 + primitive: int64
  82 + required: true
  83 + - name: unReleasedAsSponsor
  84 + description: 个人发起的待发布任务
  85 + type:
  86 + primitive: int64
  87 + required: true
  88 + - name: unClaimedAsSponsor
  89 + description: 个人发起的待领取任务
  90 + type:
  91 + primitive: int64
  92 + required: true
  93 + - name: unConfirmedAsSponsor
  94 + description: 个人发起的待确认任务
  95 + type:
  96 + primitive: int64
  97 + required: true
  98 + - name: underwayAsSponsor
  99 + description: 个人发起的进行中任务
  100 + type:
  101 + primitive: int64
  102 + required: true
  103 + - name: unAcceptanceAsSponsor
  104 + description: 个人发起的待验收任务
  105 + type:
  106 + primitive: int64
  107 + required: true
  108 + - name: completedAsSponsor
  109 + description: 个人发起的已完成任务
  110 + type:
  111 + primitive: int64
  112 + required: true
  113 + - name: bidAsParticipator
  114 + description: 个人参与的竞标中任务
  115 + type:
  116 + primitive: int64
  117 + required: true
  118 + - name: completedAsParticipator
  119 + description: 个人参与的已完成任务
  120 + type:
  121 + primitive: int64
  122 + required: true
  123 + - name: personSuMoneyStatistics
  124 + description: 获取个人素币统计
  125 + type: command
  126 + payload:
  127 + - ref: uid
  128 + required: true
  129 + result:
  130 + - name: incomeSuMoney
  131 + description: 任务奖励素币总数
  132 + type:
  133 + primitive: float64
  134 + - name: incomeSuMoneyOfYesterday
  135 + description: 昨日任务奖励素币数
  136 + type:
  137 + primitive: float64
  138 + - name: currentSuMoney
  139 + description: 当前素币数
  140 + type:
  141 + primitive: float64
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: suMoney
  5 + description: 素币服务
  6 + methods:
  7 + - name: operationSuMoney
  8 + type: command
  9 + description: 操作素币
  10 + payload:
  11 + - ref: uid
  12 + description: 素币拥有者UID
  13 + required: true
  14 + - name: operationType
  15 + description: 操作类型(1增加,2扣除)
  16 + type:
  17 + primitive: int
  18 + required: true
  19 + - name: suMoney
  20 + description: 素币值
  21 + type:
  22 + primitive: float64
  23 + required: true
  24 + - name: operator
  25 + description: 操作人UID
  26 + type:
  27 + primitive: int64
  28 + - name: operationDescription
  29 + description: 理由描述
  30 + type:
  31 + primitive: string
  32 + required: true
  33 + result:
  34 + - name: suMoneyTransactionRecord
  35 + type:
  36 + schema: suMoneyTransactionRecord
  37 + - name: exchangeSuMoney
  38 + type: command
  39 + description: 素币兑换
  40 + payload:
  41 + - ref: uid
  42 + description: 兑换人UID
  43 + required: true
  44 + - name: suMoney
  45 + description: 素币值
  46 + type:
  47 + primitive: float64
  48 + required: true
  49 + - name: operator
  50 + description: 操作人UID
  51 + type:
  52 + primitive: int64
  53 + - name: exchangeDescription
  54 + description: 兑换描述
  55 + type:
  56 + primitive: string
  57 + required: true
  58 + result:
  59 + - name: suMoneyTransactionRecord
  60 + type:
  61 + schema: suMoneyTransactionRecord
  62 + - name: getSuMoneyTransactionRecord
  63 + description: 返回素币事务记录
  64 + type: query
  65 + payload:
  66 + - name: suMoneyTransactionRecordId
  67 + description: 素币事务记录ID
  68 + type:
  69 + primitive: int64
  70 + required: true
  71 + result:
  72 + - name: suMoneyTransactionRecord
  73 + type:
  74 + schema: suMoneyTransactionRecord
  75 + - name: searchSuMoneyTransactionRecord
  76 + description: 搜索素币事务记录
  77 + type: command
  78 + payload:
  79 + - ref: uid
  80 + required: true
  81 + - name: recordType
  82 + description: 记录类型(1兑换,2任务奖励,3增加,4扣除)
  83 + type:
  84 + primitive: int
  85 + - name: recordTypes
  86 + description: 记录类型列表(1兑换,2任务奖励,3增加,4扣除)
  87 + type:
  88 + array: int
  89 + - name: transactionStartTime
  90 + description: 事务时间区间-开始时间
  91 + type:
  92 + primitive: datetime
  93 + - name: transactionEndTime
  94 + description: 事务时间区间-截止时间
  95 + type:
  96 + primitive: datetime
  97 + - name: operator
  98 + description: 操作人UID
  99 + type:
  100 + primitive: int64
  101 + - ref: offset
  102 + - ref: limit
  103 + result:
  104 + - ref: count
  105 + - name: suMoneyTransactionRecords
  106 + type:
  107 + array: suMoneyTransactionRecord
  108 + - name: suMoneyTransactionRecordStatistics
  109 + description: 素币事务记录统计
  110 + type: command
  111 + payload:
  112 + - ref: uid
  113 + required: true
  114 + - name: transactionStartTime
  115 + description: 事务时间区间-开始时间
  116 + type:
  117 + primitive: datetime
  118 + - name: transactionEndTime
  119 + description: 事务时间区间-截止时间
  120 + type:
  121 + primitive: datetime
  122 + result:
  123 + - name: incomeSuMoney
  124 + description: 收入素币
  125 + type:
  126 + primitive: float64
  127 + required: true
  128 + - name: expendSuMoney
  129 + description: 支出素币
  130 + type:
  131 + primitive: float64
  132 + required: true
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: task
  5 + description: 任务服务
  6 + methods:
  7 + - name: rejectTaskReceiver
  8 + description: 驳回任务领取人
  9 + type: command
  10 + payload:
  11 + - ref: taskId
  12 + required: true
  13 + - name: operator
  14 + description: 操作人uid
  15 + type:
  16 + primitive: int64
  17 + required: true
  18 + - name: rejectReason
  19 + description: 驳回理由
  20 + type:
  21 + primitive: string
  22 + required: true
  23 + result:
  24 + - name: task
  25 + type:
  26 + schema: task
  27 + - name: confirmRobTask
  28 + description: 对抢单任务进行确认
  29 + type: command
  30 + payload:
  31 + - ref: taskId
  32 + required: true
  33 + - name: operator
  34 + description: 操作人uid
  35 + type:
  36 + primitive: int64
  37 + required: true
  38 + - name: plannedCompletionTime
  39 + description: 计划完成时间
  40 + type:
  41 + primitive: datetime
  42 + required: true
  43 + result:
  44 + - name: task
  45 + type:
  46 + schema: task
  47 + - name: robTask
  48 + description: 对任务进行抢单
  49 + type: command
  50 + payload:
  51 + - ref: taskId
  52 + required: true
  53 + - name: receiver
  54 + description: 领取人uid
  55 + type:
  56 + primitive: int64
  57 + required: true
  58 + result:
  59 + - name: task
  60 + type:
  61 + schema: task
  62 + - name: bidTask
  63 + description: 对任务进行竞标
  64 + type: command
  65 + payload:
  66 + - ref: taskId
  67 + required: true
  68 + - name: bidder
  69 + description: 竞标人uid
  70 + type:
  71 + primitive: int64
  72 + required: true
  73 + result:
  74 + - name: task
  75 + type:
  76 + schema: task
  77 + - name: chooseSuccessfulBidder
  78 + description: 选择竞标任务的中标人
  79 + type: command
  80 + payload:
  81 + - ref: taskId
  82 + required: true
  83 + - name: operator
  84 + description: 操作人uid
  85 + type:
  86 + primitive: int64
  87 + required: true
  88 + - name: successfulBidder
  89 + description: 中标者uid
  90 + type:
  91 + primitive: int64
  92 + required: true
  93 + - name: plannedCompletionTime
  94 + description: 计划完成时间
  95 + type:
  96 + primitive: datetime
  97 + required: true
  98 + result:
  99 + - name: task
  100 + type:
  101 + schema: task
  102 + - name: applyCompleteTask
  103 + description: 申请完成任务
  104 + type: command
  105 + payload:
  106 + - ref: taskId
  107 + required: true
  108 + - name: receiver
  109 + description: 领取人或者中标人uid
  110 + type:
  111 + primitive: int64
  112 + required: true
  113 + result:
  114 + - name: task
  115 + type:
  116 + schema: task
  117 + - name: releaseTask
  118 + description: 发布任务
  119 + type: command
  120 + payload:
  121 + - ref: taskId
  122 + required: true
  123 + - name: operator
  124 + description: 操作人uid
  125 + type:
  126 + primitive: int64
  127 + required: true
  128 + result:
  129 + - name: task
  130 + type:
  131 + schema: task
  132 + - name: offTask
  133 + description: 关闭任务
  134 + type: command
  135 + payload:
  136 + - ref: taskId
  137 + required: true
  138 + - name: operator
  139 + description: 操作人uid
  140 + type:
  141 + primitive: int64
  142 + required: true
  143 + - name: offReason
  144 + description: 关闭理由
  145 + type:
  146 + primitive: string
  147 + required: true
  148 + result:
  149 + - name: task
  150 + type:
  151 + schema: task
  152 + - name: acceptanceTask
  153 + description: 验收任务
  154 + type: command
  155 + payload:
  156 + - ref: taskId
  157 + required: true
  158 + - name: operator
  159 + description: 操作人uid
  160 + type:
  161 + primitive: int64
  162 + required: true
  163 + - name: participators
  164 + description: 任务参与者UID列表
  165 + type:
  166 + array: int64
  167 + - name: taskPercentage
  168 + description: 任务贡献占比
  169 + type:
  170 + array: taskPercentageItem
  171 + required: true
  172 + - name: referenceResourceScore
  173 + description: 引用资源解决分
  174 + type:
  175 + array: referenceResourceItem
  176 + - name: solveReport
  177 + description: 解决报告
  178 + type:
  179 + primitive: string
  180 + - name: solvePictureUrls
  181 + description: 解决图片URL列表
  182 + type:
  183 + array: string
  184 + - name: actualCompletionTime
  185 + description: 实际完成时间
  186 + type:
  187 + primitive: datetime
  188 + required: true
  189 + result:
  190 + - name: task
  191 + type:
  192 + schema: task
  193 + - name: createTask
  194 + type: command
  195 + description: 创建新任务
  196 + payload:
  197 + - ref: companyId
  198 + required: true
  199 + - name: taskName
  200 + description: 任务名称
  201 + type:
  202 + primitive: string
  203 + required: true
  204 + - name: taskType
  205 + description: 任务类型
  206 + type:
  207 + primitive: int
  208 + - name: sponsor
  209 + description: 任务发起者uid
  210 + type:
  211 + primitive: int64
  212 + required: true
  213 + - name: referenceResource
  214 + description: 引用资源
  215 + type:
  216 + schema: referenceResource
  217 + - name: projectBelong
  218 + description: 项目归属
  219 + type:
  220 + primitive: int
  221 + - name: customerValues
  222 + description: 客户价值列表
  223 + type:
  224 + array: int
  225 + - name: taskNature
  226 + description: 任务性质
  227 + type:
  228 + primitive: int
  229 + - name: suMoney
  230 + description: 奖励素币
  231 + type:
  232 + primitive: float64
  233 + - name: acceptanceStandard
  234 + description: 验收标准
  235 + type:
  236 + primitive: string
  237 + - name: taskDescription
  238 + description: 任务描述
  239 + type:
  240 + primitive: string
  241 + - name: taskPictureUrls
  242 + description: 任务图片URL列表
  243 + type:
  244 + array: string
  245 + - name: isRewardTake
  246 + description: 是否悬赏任务
  247 + type:
  248 + primitive: boolean
  249 + - name: bidStartTime
  250 + description: 竞标开始时间
  251 + type:
  252 + primitive: datetime
  253 + - name: bidEndTime
  254 + description: 竞标结束时间
  255 + type:
  256 + primitive: datetime
  257 + - name: isRemind
  258 + description: 是否截止时间前一天提醒
  259 + type:
  260 + primitive: boolean
  261 + - name: plannedCompletionTime
  262 + description: 计划完成时间
  263 + type:
  264 + primitive: datetime
  265 + - name: assignedPerson
  266 + description: 指派人员uid
  267 + type:
  268 + primitive: int64
  269 + result:
  270 + - name: task
  271 + type:
  272 + schema: task
  273 + - name: getTask
  274 + description: 返回任务
  275 + type: query
  276 + payload:
  277 + - ref: taskId
  278 + required: true
  279 + result:
  280 + - name: task
  281 + type:
  282 + schema: task
  283 + - name: updateTask
  284 + type: command
  285 + description: 更新任务
  286 + payload:
  287 + - ref: taskId
  288 + required: true
  289 + - name: taskName
  290 + description: 任务名称
  291 + type:
  292 + primitive: string
  293 + - name: referenceResource
  294 + description: 引用资源
  295 + type:
  296 + schema: referenceResource
  297 + - name: projectBelong
  298 + description: 项目归属
  299 + type:
  300 + primitive: int
  301 + - name: customerValues
  302 + description: 客户价值列表
  303 + type:
  304 + array: int
  305 + - name: taskNature
  306 + description: 任务性质
  307 + type:
  308 + primitive: int
  309 + - name: suMoney
  310 + description: 奖励素币
  311 + type:
  312 + primitive: float64
  313 + - name: acceptanceStandard
  314 + description: 验收标准
  315 + type:
  316 + primitive: string
  317 + - name: taskDescription
  318 + description: 任务描述
  319 + type:
  320 + primitive: string
  321 + - name: taskPictureUrls
  322 + description: 任务图片URL列表
  323 + type:
  324 + array: string
  325 + - name: isRewardTake
  326 + description: 是否悬赏任务
  327 + type:
  328 + primitive: boolean
  329 + - name: bidStartTime
  330 + description: 竞标开始时间
  331 + type:
  332 + primitive: datetime
  333 + - name: bidEndTime
  334 + description: 竞标结束时间
  335 + type:
  336 + primitive: datetime
  337 + - name: isRemind
  338 + description: 是否截止时间前一天提醒
  339 + type:
  340 + primitive: boolean
  341 + - name: plannedCompletionTime
  342 + description: 计划完成时间
  343 + type:
  344 + primitive: datetime
  345 + - name: assignedPerson
  346 + description: 指派人员uid
  347 + type:
  348 + primitive: int64
  349 + result:
  350 + - name: task
  351 + type:
  352 + schema: task
  353 + - name: removeTask
  354 + description: 移除任务
  355 + type: command
  356 + payload:
  357 + - ref: taskId
  358 + required: true
  359 + result:
  360 + - name: task
  361 + type:
  362 + schema: task
  363 + - name: listTask
  364 + description: 返回任务列表
  365 + type: query
  366 + payload:
  367 + - ref: companyId
  368 + required: true
  369 + - name: sponsor
  370 + description: 任务发起者UID
  371 + type:
  372 + primitive: int64
  373 + - name: taskContentMatch
  374 + description: 任务内容匹配
  375 + type:
  376 + primitive: string
  377 + - name: taskType
  378 + description: 任务类型
  379 + type:
  380 + primitive: int
  381 + - name: taskStatus
  382 + description: 任务状态
  383 + type:
  384 + primitive: int
  385 + - name: customerValue
  386 + description: 客户价值
  387 + type:
  388 + array: string
  389 + - name: taskNature
  390 + description: 任务性质
  391 + type:
  392 + primitive: string
  393 + - name: isRewardTake
  394 + description: 是否悬赏任务
  395 + type:
  396 + primitive: boolean
  397 + - name: bidder
  398 + description: 竞标参与者UID
  399 + type:
  400 + primitive: int64
  401 + - name: bidTimeMatch
  402 + description: 竞标时间(1全部,2已截止,3未截止)
  403 + type:
  404 + primitive: int
  405 + - name: receiver
  406 + description: 任务领取人UID
  407 + type:
  408 + primitive: int64
  409 + - name: participator
  410 + description: 任务参与者UID
  411 + type:
  412 + primitive: int64
  413 + - name: isFilterCloseStatus
  414 + description: 是否过滤关闭状态任务
  415 + type:
  416 + primitive: boolean
  417 + - name: isFilterUnReleasedStatus
  418 + description: 是否过滤待发布状态任务
  419 + type:
  420 + primitive: boolean
  421 + - name: sortByCreateTime
  422 + description: 按创建任务时间排序(ASC,DESC)
  423 + type:
  424 + primitive: string
  425 + - name: sortByReleaseTime
  426 + description: 按发布任务时间排序(ASC,DESC)
  427 + type:
  428 + primitive: string
  429 + - name: sortByReceiveTime
  430 + description: 按领取任务时间排序(ASC,DESC)
  431 + type:
  432 + primitive: string
  433 + - name: sortByCompleteTime
  434 + description: 按完成任务操作时间排序(ASC,DESC)
  435 + type:
  436 + primitive: string
  437 + - name: sortByAcceptanceTime
  438 + description: 按验收方验收时间排序(ASC,DESC)
  439 + type:
  440 + primitive: string
  441 + - name: sortByBidTime
  442 + description: 按参与竞标时间排序(ASC,DESC)
  443 + type:
  444 + primitive: string
  445 + - ref: offset
  446 + - ref: limit
  447 + result:
  448 + - ref: count
  449 + - name: tasks
  450 + type:
  451 + array: task
  452 + - name: searchTask
  453 + description: 搜索任务
  454 + type: command
  455 + payload:
  456 + - ref: companyId
  457 + required: true
  458 + - name: sponsor
  459 + description: 任务发起者UID
  460 + type:
  461 + primitive: int64
  462 + - name: taskContentMatch
  463 + description: 任务内容匹配
  464 + type:
  465 + primitive: string
  466 + - name: taskType
  467 + description: 任务类型
  468 + type:
  469 + primitive: int
  470 + - name: taskTypes
  471 + description: 任务类型列表
  472 + type:
  473 + array: int
  474 + - name: taskStatus
  475 + description: 任务状态
  476 + type:
  477 + primitive: int
  478 + - name: projectBelongs
  479 + description: 项目归属
  480 + type:
  481 + array: int
  482 + - name: customerValues
  483 + description: 客户价值
  484 + type:
  485 + array: int
  486 + - name: taskNatures
  487 + description: 任务性质
  488 + type:
  489 + array: int
  490 + - name: isRewardTake
  491 + description: 是否悬赏任务
  492 + type:
  493 + primitive: boolean
  494 + - name: bidder
  495 + description: 竞标参与者UID
  496 + type:
  497 + primitive: int64
  498 + - name: bidTimeMatch
  499 + description: 竞标时间(1全部,2已截止,3未截止)
  500 + type:
  501 + primitive: int
  502 + - name: receiver
  503 + description: 任务领取人UID
  504 + type:
  505 + primitive: int64
  506 + - name: participator
  507 + description: 任务参与者UID
  508 + type:
  509 + primitive: int64
  510 + - name: assignedPerson
  511 + description: 指派人员UID
  512 + type:
  513 + primitive: int64
  514 + - name: isFilterCloseStatus
  515 + description: 是否过滤关闭状态任务
  516 + type:
  517 + primitive: boolean
  518 + - name: isFilterUnReleasedStatus
  519 + description: 是否过滤待发布状态任务
  520 + type:
  521 + primitive: boolean
  522 + - name: sortByCreateTime
  523 + description: 按创建任务时间排序(ASC,DESC)
  524 + type:
  525 + primitive: string
  526 + - name: sortByReleaseTime
  527 + description: 按发布任务时间排序(ASC,DESC)
  528 + type:
  529 + primitive: string
  530 + - name: sortByReceiveTime
  531 + description: 按领取任务时间排序(ASC,DESC)
  532 + type:
  533 + primitive: string
  534 + - name: sortByCompleteTime
  535 + description: 按完成任务操作时间排序(ASC,DESC)
  536 + type:
  537 + primitive: string
  538 + - name: sortByAcceptanceTime
  539 + description: 按验收方验收时间排序(ASC,DESC)
  540 + type:
  541 + primitive: string
  542 + - ref: offset
  543 + - ref: limit
  544 + result:
  545 + - ref: count
  546 + - name: tasks
  547 + type:
  548 + array: task
  549 + - name: searchOffTaskRecord
  550 + description: 搜索关闭任务记录
  551 + type: command
  552 + payload:
  553 + - ref: companyId
  554 + required: true
  555 + - name: taskContentMatch
  556 + description: 任务内容匹配
  557 + type:
  558 + primitive: string
  559 + - name: taskType
  560 + description: 任务类型
  561 + type:
  562 + primitive: int
  563 + - name: projectBelongs
  564 + description: 项目归属
  565 + type:
  566 + array: int
  567 + - name: customerValues
  568 + description: 客户价值
  569 + type:
  570 + array: int
  571 + - name: taskNatures
  572 + description: 任务性质
  573 + type:
  574 + array: int
  575 + - name: offStartTime
  576 + description: 关闭任务时间区间-开始时间
  577 + type:
  578 + primitive: datetime
  579 + - name: offEndTime
  580 + description: 关闭任务时间区间-截止时间
  581 + type:
  582 + primitive: datetime
  583 + - ref: offset
  584 + - ref: limit
  585 + result:
  586 + - ref: count
  587 + - name: offTaskRecords
  588 + type:
  589 + array: offTaskRecord
  590 + - name: getOffTaskRecord
  591 + description: 返回关闭任务记录
  592 + type: query
  593 + payload:
  594 + - name: offTaskRecordId
  595 + description: 关闭任务记录ID
  596 + type:
  597 + primitive: int64
  598 + required: true
  599 + result:
  600 + - name: offTaskRecord
  601 + type:
  602 + schema: offTaskRecord
  603 + - name: searchRejectTaskRecord
  604 + description: 搜索驳回任务记录
  605 + type: command
  606 + payload:
  607 + - ref: companyId
  608 + required: true
  609 + - name: taskContentMatch
  610 + description: 任务内容匹配
  611 + type:
  612 + primitive: string
  613 + - name: taskType
  614 + description: 任务类型
  615 + type:
  616 + primitive: int
  617 + - name: projectBelongs
  618 + description: 项目归属
  619 + type:
  620 + array: int
  621 + - name: customerValues
  622 + description: 客户价值
  623 + type:
  624 + array: int
  625 + - name: taskNatures
  626 + description: 任务性质
  627 + type:
  628 + array: int
  629 + - name: rejectStartTime
  630 + description: 驳回任务时间区间-开始时间
  631 + type:
  632 + primitive: datetime
  633 + - name: rejectEndTime
  634 + description: 驳回任务时间区间-截止时间
  635 + type:
  636 + primitive: datetime
  637 + - ref: offset
  638 + - ref: limit
  639 + result:
  640 + - ref: count
  641 + - name: rejectTaskRecords
  642 + type:
  643 + array: rejectTaskRecord
  644 + - name: getRejectTaskRecord
  645 + description: 返回驳回任务记录
  646 + type: query
  647 + payload:
  648 + - name: rejectTaskRecordId
  649 + description: 驳回任务记录ID
  650 + type:
  651 + primitive: int64
  652 + required: true
  653 + result:
  654 + - name: rejectTaskRecord
  655 + type:
  656 + schema: rejectTaskRecord
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: taskNature
  5 + description: 任务性质服务
  6 + methods:
  7 + - name: createTaskNature
  8 + type: command
  9 + description: 创建任务性质
  10 + payload:
  11 + - ref: companyId
  12 + required: true
  13 + - name: taskNatureName
  14 + description: 任务性质名称
  15 + type:
  16 + primitive: string
  17 + required: true
  18 + result:
  19 + - name: taskNature
  20 + type:
  21 + schema: taskNature
  22 + - name: getTaskNature
  23 + description: 返回任务性质
  24 + type: query
  25 + payload:
  26 + - name: taskNatureId
  27 + description: 任务性质ID
  28 + type:
  29 + primitive: int
  30 + required: true
  31 + result:
  32 + - name: taskNature
  33 + type:
  34 + schema: taskNature
  35 + - name: updateTaskNature
  36 + type: command
  37 + description: 更新任务性质
  38 + payload:
  39 + - name: taskNatureId
  40 + description: 任务性质ID
  41 + type:
  42 + primitive: int
  43 + - name: taskNatureName
  44 + description: 任务性质名称
  45 + type:
  46 + primitive: string
  47 + result:
  48 + - name: taskNature
  49 + type:
  50 + schema: taskNature
  51 + - name: removeTaskNature
  52 + description: 移除任务性质
  53 + type: command
  54 + payload:
  55 + - name: taskNatureId
  56 + description: 任务性质ID
  57 + type:
  58 + primitive: int
  59 + required: true
  60 + result:
  61 + - name: taskNature
  62 + type:
  63 + schema: taskNature
  64 + - name: listTaskNature
  65 + description: 返回任务性质列表
  66 + type: query
  67 + payload:
  68 + - ref: companyId
  69 + required: true
  70 + - name: taskNatureName
  71 + description: 任务性质名称
  72 + type:
  73 + primitive: string
  74 + - name: taskNatureNameMatch
  75 + description: 任务性质名称匹配
  76 + type:
  77 + primitive: string
  78 + - ref: offset
  79 + - ref: limit
  80 + result:
  81 + - ref: count
  82 + - name: taskNatures
  83 + type:
  84 + array: taskNature
  1 +version: v1
  2 +kind: Service
  3 +metadata:
  4 + name: unifiedUserCenter
  5 + description: 统一用户中心适配服务
  6 + methods:
  7 + - name: syncEmployeeCallback
  8 + description: 同步企业员工回调
  9 + type: command
  10 + payload:
  11 + - name: module
  12 + description: position:职位,department:部门,employee:员工,company:公司,profile员工档案
  13 + type:
  14 + primitive: string
  15 + required: true
  16 + - name: action
  17 + description: add:添加,edit:编辑,delete删除,batchDelete:批量删除,setCompanyCharge:更改公司主管,batchForbid:批量禁用用户,batchRemove:批量更改用户部门,changeAdmin换管理员
  18 + type:
  19 + primitive: string
  20 + required: true
  21 + - name: data
  22 + description: 具体的对象JSON数据
  23 + type:
  24 + primitive: string
  25 + required: true
  26 + result:
  27 + - name: employee
  28 + type:
  29 + schema: employee
@@ -15,7 +15,7 @@ require ( @@ -15,7 +15,7 @@ require (
15 github.com/imkira/go-interpol v1.1.0 // indirect 15 github.com/imkira/go-interpol v1.1.0 // indirect
16 github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect 16 github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect
17 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb 17 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb
18 - github.com/mattn/go-colorable v0.1.6 // indirect 18 + github.com/mattn/go-colorable v0.1.8 // indirect
19 github.com/moul/http2curl v1.0.0 // indirect 19 github.com/moul/http2curl v1.0.0 // indirect
20 github.com/onsi/ginkgo v1.10.3 20 github.com/onsi/ginkgo v1.10.3
21 github.com/onsi/gomega v1.7.1 21 github.com/onsi/gomega v1.7.1
@@ -29,6 +29,9 @@ require ( @@ -29,6 +29,9 @@ require (
29 github.com/yudai/gojsondiff v1.0.0 // indirect 29 github.com/yudai/gojsondiff v1.0.0 // indirect
30 github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect 30 github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect
31 github.com/yudai/pp v2.0.1+incompatible // indirect 31 github.com/yudai/pp v2.0.1+incompatible // indirect
  32 + golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e // indirect
  33 + google.golang.org/protobuf v1.25.0 // indirect
  34 + gopkg.in/yaml.v2 v2.4.0 // indirect
32 ) 35 )
33 36
34 replace gitlab.fjmaimaimai.com/linmadan/mmm-worth => ../mmm-worth 37 replace gitlab.fjmaimaimai.com/linmadan/mmm-worth => ../mmm-worth
  1 +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
1 github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1 h1:j56fC19WoD3z+u+ZHxm2XwRGyS1XmdSMk7058BLhdsM= 2 github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1 h1:j56fC19WoD3z+u+ZHxm2XwRGyS1XmdSMk7058BLhdsM=
2 github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1/go.mod h1:gXEhMjm1VadSGjAzyDlBxmdYglP8eJpYWxpwJnmXRWw= 3 github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1/go.mod h1:gXEhMjm1VadSGjAzyDlBxmdYglP8eJpYWxpwJnmXRWw=
  4 +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
3 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= 5 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
4 github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= 6 github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
5 github.com/OwnLocal/goes v1.0.0/go.mod h1:8rIFjBGTue3lCU0wplczcUgt9Gxgrkkrw7etMIcn8TM= 7 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 @@ -14,6 +16,8 @@ github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd/go.mod h1:1b+Y/CofkY
14 github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU= 16 github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542/go.mod h1:kSeGC/p1AbBiEp5kat81+DSQrZenVBZXklMLaELspWU=
15 github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= 17 github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
16 github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE= 18 github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
  19 +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
  20 +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
17 github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= 21 github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80=
18 github.com/couchbase/go-couchbase v0.0.0-20181122212707-3e9b6e1258bb/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U= 22 github.com/couchbase/go-couchbase v0.0.0-20181122212707-3e9b6e1258bb/go.mod h1:TWI8EKQMs5u5jLKW/tsb9VwauIrMIxQG1r5fMsswK5U=
19 github.com/couchbase/gomemcached v0.0.0-20181122193126-5125a94a666c/go.mod h1:srVSlQLB8iXBVXHgnqemxUXqN6FCvClgCMPCsjBDR7c= 23 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 @@ -29,6 +33,8 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP
29 github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= 33 github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
30 github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk= 34 github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3CKKpKinvZLFk=
31 github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= 35 github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
  36 +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
  37 +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
32 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 h1:DddqAaWDpywytcG8w/qoQ5sAN8X12d3Z3koB0C3Rxsc= 38 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072 h1:DddqAaWDpywytcG8w/qoQ5sAN8X12d3Z3koB0C3Rxsc=
33 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= 39 github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
34 github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= 40 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 @@ -42,13 +48,28 @@ github.com/go-pg/pg v8.0.6+incompatible/go.mod h1:a2oXow+aFOrvwcKs3eIA0lNFmMilrx
42 github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= 48 github.com/go-redis/redis v6.14.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
43 github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= 49 github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
44 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= 50 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
  51 +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
  52 +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
45 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 53 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
46 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 54 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
47 github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= 55 github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
48 github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 56 github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
  57 +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
  58 +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
  59 +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
  60 +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
  61 +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
  62 +github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0=
  63 +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
49 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 64 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
50 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 65 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
51 github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= 66 github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
  67 +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
  68 +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
  69 +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
  70 +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
  71 +github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
  72 +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
52 github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= 73 github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
53 github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= 74 github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
54 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= 75 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= @@ -81,8 +102,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
81 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= 102 github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
82 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb h1:Ocxw5BWyRrRkTHSsTmQx0UnGsAYZDOwa3K9oGlXF8Jo= 103 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb h1:Ocxw5BWyRrRkTHSsTmQx0UnGsAYZDOwa3K9oGlXF8Jo=
83 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk= 104 github.com/linmadan/egglib-go v0.0.0-20201125083542-25358a549edb/go.mod h1:S1zYn9bb6h+Qzu1aOO8raFhHniewOBaif3YvA9qA6lk=
84 -github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=  
85 -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= 105 +github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
  106 +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
86 github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= 107 github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
87 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= 108 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
88 github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= 109 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 @@ -101,6 +122,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
101 github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= 122 github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
102 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 123 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
103 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 124 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
  125 +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
104 github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= 126 github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
105 github.com/richardlehane/mscfb v1.0.3 h1:rD8TBkYWkObWO0oLDFCbwMeZ4KoalxQy+QgniCj3nKI= 127 github.com/richardlehane/mscfb v1.0.3 h1:rD8TBkYWkObWO0oLDFCbwMeZ4KoalxQy+QgniCj3nKI=
106 github.com/richardlehane/mscfb v1.0.3/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= 128 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 @@ -167,11 +189,18 @@ golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf/go.mod h1:LzIPMQfyMNhhGPh
167 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 189 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
168 golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= 190 golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM=
169 golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 191 golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
  192 +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
170 golang.org/x/image v0.0.0-20200922025426-e59bae62ef32 h1:E+SEVulmY8U4+i6vSB88YSc2OKAFfvbHPU/uDTdQu7M= 193 golang.org/x/image v0.0.0-20200922025426-e59bae62ef32 h1:E+SEVulmY8U4+i6vSB88YSc2OKAFfvbHPU/uDTdQu7M=
171 golang.org/x/image v0.0.0-20200922025426-e59bae62ef32/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= 194 golang.org/x/image v0.0.0-20200922025426-e59bae62ef32/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
  195 +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
  196 +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
  197 +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
172 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= 198 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
  199 +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  200 +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
173 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 201 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
174 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 202 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
  203 +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
175 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 204 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
176 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 205 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
177 golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 206 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 @@ -181,8 +210,11 @@ golang.org/x/net v0.0.0-20190923162816-aa69164e4478 h1:l5EDrHhldLYb3ZRHDUhXF7Om7
181 golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 210 golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
182 golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA= 211 golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA=
183 golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= 212 golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
  213 +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
184 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 214 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  215 +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
185 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 216 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
  217 +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
186 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 218 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
187 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 219 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
188 golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 220 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 @@ -196,18 +228,43 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepx
196 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 228 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
197 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= 229 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
198 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 230 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
  231 +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e h1:AyodaIpKjppX+cBfTASF2E1US3H2JFBj920Ot3rtDjs=
  232 +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
199 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 233 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
200 golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= 234 golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
201 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 235 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
202 golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= 236 golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
203 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 237 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
204 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 238 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
  239 +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
  240 +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
  241 +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
205 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 242 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
  243 +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
206 golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= 244 golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
207 golang.org/x/tools v0.0.0-20200117065230-39095c1d176c h1:FodBYPZKH5tAN2O60HlglMwXGAeV/4k+NKbli79M/2c= 245 golang.org/x/tools v0.0.0-20200117065230-39095c1d176c h1:FodBYPZKH5tAN2O60HlglMwXGAeV/4k+NKbli79M/2c=
208 golang.org/x/tools v0.0.0-20200117065230-39095c1d176c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= 246 golang.org/x/tools v0.0.0-20200117065230-39095c1d176c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
209 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 247 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
  248 +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
  249 +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
  250 +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
  251 +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
210 google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= 252 google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
  253 +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
  254 +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
  255 +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
  256 +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
  257 +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
  258 +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
  259 +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
  260 +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
  261 +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
  262 +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
  263 +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
  264 +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
  265 +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
  266 +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
  267 +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
211 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 268 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
212 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= 269 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
213 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 270 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= @@ -224,7 +281,11 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
224 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 281 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
225 gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= 282 gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
226 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 283 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
  284 +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
  285 +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
227 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= 286 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
228 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 287 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
  288 +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
  289 +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
229 mellium.im/sasl v0.2.1 h1:nspKSRg7/SyO0cRGY71OkfHab8tf9kCts6a6oTDut0w= 290 mellium.im/sasl v0.2.1 h1:nspKSRg7/SyO0cRGY71OkfHab8tf9kCts6a6oTDut0w=
230 mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ= 291 mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ=
1 package main 1 package main
2 2
3 import ( 3 import (
  4 + "time"
  5 +
4 "github.com/astaxie/beego" 6 "github.com/astaxie/beego"
5 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/notification/service" 7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/notification/service"
6 _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg" 8 _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg"
7 _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego" 9 _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego"
8 - "time"  
9 ) 10 )
10 11
11 func main() { 12 func main() {
@@ -36,9 +37,5 @@ func main() { @@ -36,9 +37,5 @@ func main() {
36 } 37 }
37 }() 38 }()
38 39
39 - // excel文件路径映射  
40 - beego.SetStaticPath("/download", "download")  
41 - beego.SetStaticPath("/logs", "log")  
42 -  
43 beego.Run() 40 beego.Run()
44 } 41 }
@@ -2,6 +2,8 @@ package service @@ -2,6 +2,8 @@ package service
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "time"
  6 +
5 "github.com/linmadan/egglib-go/core/application" 7 "github.com/linmadan/egglib-go/core/application"
6 "github.com/linmadan/egglib-go/utils/tool_funs" 8 "github.com/linmadan/egglib-go/utils/tool_funs"
7 "github.com/shopspring/decimal" 9 "github.com/shopspring/decimal"
@@ -10,7 +12,6 @@ import ( @@ -10,7 +12,6 @@ import (
10 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" 12 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory"
11 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" 13 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
12 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao" 14 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao"
13 - "time"  
14 ) 15 )
15 16
16 // 员工服务 17 // 员工服务
@@ -2,6 +2,7 @@ package subscriber @@ -2,6 +2,7 @@ package subscriber
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 +
5 coreDomain "github.com/linmadan/egglib-go/core/domain" 6 coreDomain "github.com/linmadan/egglib-go/core/domain"
6 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 7 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" 8 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory"
@@ -31,11 +32,7 @@ func (subscriber *MmmOpenApiServiceServiceSubscriber) HandleEvent(domainEvent co @@ -31,11 +32,7 @@ func (subscriber *MmmOpenApiServiceServiceSubscriber) HandleEvent(domainEvent co
31 employeeRepository = repository 32 employeeRepository = repository
32 } 33 }
33 uids := make([]int64, 0) 34 uids := make([]int64, 0)
34 - if _, employees, err := employeeRepository.Find(map[string]interface{}{  
35 - "companyId": taskReleasedEvent.CompanyId,  
36 - "offset": 0,  
37 - "limit": 0,  
38 - }); err != nil { 35 + if _, employees, err := employeeRepository.FindAll(map[string]interface{}{"companyId": taskReleasedEvent.CompanyId, "status": 1}); err != nil {
39 fmt.Println(err.Error()) 36 fmt.Println(err.Error())
40 return nil 37 return nil
41 } else { 38 } else {
@@ -4,12 +4,12 @@ import "os" @@ -4,12 +4,12 @@ import "os"
4 4
5 const SERVICE_NAME = "mmm-worth" 5 const SERVICE_NAME = "mmm-worth"
6 6
7 -var LOG_LEVEL = "debug"  
8 var ABILITY_SERVICE_HOST = "https://suplus-worth-app-gateway-dev.fjmaimaimai.com" 7 var ABILITY_SERVICE_HOST = "https://suplus-worth-app-gateway-dev.fjmaimaimai.com"
9 var MMM_OPEN_API_SERVICE_HOST = "http://mmm-open-api-dev.fjmaimaimai.com" 8 var MMM_OPEN_API_SERVICE_HOST = "http://mmm-open-api-dev.fjmaimaimai.com"
10 9
11 -//var LOG_LEVEL = "debug" 10 +var LOG_LEVEL = "debug"
12 var LOG_File = "logs/app.log" 11 var LOG_File = "logs/app.log"
  12 +var LOG_PREFIX = "[mmm-worth_dev]"
13 13
14 func init() { 14 func init() {
15 if os.Getenv("LOG_LEVEL") != "" { 15 if os.Getenv("LOG_LEVEL") != "" {
@@ -21,4 +21,7 @@ func init() { @@ -21,4 +21,7 @@ func init() {
21 if os.Getenv("MMM_OPEN_API_SERVICE_HOST") != "" { 21 if os.Getenv("MMM_OPEN_API_SERVICE_HOST") != "" {
22 MMM_OPEN_API_SERVICE_HOST = os.Getenv("MMM_OPEN_API_SERVICE_HOST") 22 MMM_OPEN_API_SERVICE_HOST = os.Getenv("MMM_OPEN_API_SERVICE_HOST")
23 } 23 }
  24 + if os.Getenv("LOG_PREFIX") != "" {
  25 + LOG_PREFIX = os.Getenv("LOG_PREFIX")
  26 + }
24 } 27 }
@@ -2,7 +2,7 @@ package constant @@ -2,7 +2,7 @@ package constant
2 2
3 import "os" 3 import "os"
4 4
5 -var POSTGRESQL_DB_NAME = "mmm-worth" 5 +var POSTGRESQL_DB_NAME = "mmm_worth"
6 var POSTGRESQL_USER = "postgres" 6 var POSTGRESQL_USER = "postgres"
7 var POSTGRESQL_PASSWORD = "1993618jack" 7 var POSTGRESQL_PASSWORD = "1993618jack"
8 var POSTGRESQL_HOST = "127.0.0.1" 8 var POSTGRESQL_HOST = "127.0.0.1"
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/11
  4 + @note:
  5 +**/
  6 +
  7 +package service
  8 +
@@ -102,7 +102,7 @@ func (repository *SuMoneyTransactionRecordRepository) Find(queryOptions map[stri @@ -102,7 +102,7 @@ func (repository *SuMoneyTransactionRecordRepository) Find(queryOptions map[stri
102 if uid, ok := queryOptions["uid"]; ok && (uid != int64(0)) { 102 if uid, ok := queryOptions["uid"]; ok && (uid != int64(0)) {
103 query = query.Where(`su_money_transaction_record.employee @> '{"uid":?}'`, uid) 103 query = query.Where(`su_money_transaction_record.employee @> '{"uid":?}'`, uid)
104 } 104 }
105 - if employeeMatchName, ok := queryOptions["employeeMatchName"]; ok && (employeeMatchName.(string) != "") { 105 + if employeeMatchName, ok := queryOptions["employeeMatchName"]; ok && (employeeMatchName != "") {
106 query = query.Where(`(su_money_transaction_record.employee->>'employeeName')::text LIKE ?`, fmt.Sprintf("%%%s%%", employeeMatchName.(string))) 106 query = query.Where(`(su_money_transaction_record.employee->>'employeeName')::text LIKE ?`, fmt.Sprintf("%%%s%%", employeeMatchName.(string)))
107 } 107 }
108 if recordType, ok := queryOptions["recordType"]; ok && (recordType != 0) { 108 if recordType, ok := queryOptions["recordType"]; ok && (recordType != 0) {
@@ -6,6 +6,13 @@ import ( @@ -6,6 +6,13 @@ import (
6 "time" 6 "time"
7 ) 7 )
8 8
  9 +/**
  10 + * @Author SteveChan
  11 + * @Description //TODO
  12 + * @Date 16:50 2020/12/10
  13 + * @Param
  14 + * @return
  15 + **/
9 func StringSliceEqualBCE(a, b []int) bool { 16 func StringSliceEqualBCE(a, b []int) bool {
10 if len(a) != len(b) { 17 if len(a) != len(b) {
11 return false 18 return false
@@ -25,6 +32,13 @@ func StringSliceEqualBCE(a, b []int) bool { @@ -25,6 +32,13 @@ func StringSliceEqualBCE(a, b []int) bool {
25 return true 32 return true
26 } 33 }
27 34
  35 +/**
  36 + * @Author SteveChan
  37 + * @Description //TODO
  38 + * @Date 16:50 2020/12/10
  39 + * @Param
  40 + * @return
  41 + **/
28 func IsContain(items []interface{}, item string) bool { 42 func IsContain(items []interface{}, item string) bool {
29 for _, eachItem := range items { 43 for _, eachItem := range items {
30 if eachItem == item { 44 if eachItem == item {
@@ -34,6 +48,13 @@ func IsContain(items []interface{}, item string) bool { @@ -34,6 +48,13 @@ func IsContain(items []interface{}, item string) bool {
34 return false 48 return false
35 } 49 }
36 50
  51 +/**
  52 + * @Author SteveChan
  53 + * @Description //TODO
  54 + * @Date 16:50 2020/12/10
  55 + * @Param
  56 + * @return
  57 + **/
37 func IsContainInt(items map[int64]interface{}, item int64) bool { 58 func IsContainInt(items map[int64]interface{}, item int64) bool {
38 for _, eachItem := range items { 59 for _, eachItem := range items {
39 if eachItem == item { 60 if eachItem == item {
@@ -43,22 +64,27 @@ func IsContainInt(items map[int64]interface{}, item int64) bool { @@ -43,22 +64,27 @@ func IsContainInt(items map[int64]interface{}, item int64) bool {
43 return false 64 return false
44 } 65 }
45 66
46 -type LocalTime time.Time  
47 -  
48 -// MarshalJSON satify the json marshal interface  
49 -func (l LocalTime) MarshalJSON() ([]byte, error) {  
50 - stamp := fmt.Sprintf("\"%s\"", time.Time(l).Format("2006-01-02 15:04:05"))  
51 - return []byte(stamp), nil  
52 -}  
53 -  
54 type LocalDate time.Time 67 type LocalDate time.Time
55 68
56 -// MarshalJSON satify the json marshal interface 69 +/**
  70 + * @Author SteveChan
  71 + * @Description // MarshalJSON satify the json marshal interface
  72 + * @Date 16:49 2020/12/10
  73 + * @Param
  74 + * @return
  75 + **/
57 func (l LocalDate) MarshalJSON() ([]byte, error) { 76 func (l LocalDate) MarshalJSON() ([]byte, error) {
58 stamp := fmt.Sprintf("\"%s\"", time.Time(l).Format("2006-01-02")) 77 stamp := fmt.Sprintf("\"%s\"", time.Time(l).Format("2006-01-02"))
59 return []byte(stamp), nil 78 return []byte(stamp), nil
60 } 79 }
61 80
  81 +/**
  82 + * @Author SteveChan
  83 + * @Description //TODO
  84 + * @Date 16:49 2020/12/10
  85 + * @Param
  86 + * @return
  87 + **/
62 func JsonToMap(jsonStr string) (map[string]string, error) { 88 func JsonToMap(jsonStr string) (map[string]string, error) {
63 m := make(map[string]string) 89 m := make(map[string]string)
64 err := json.Unmarshal([]byte(jsonStr), &m) 90 err := json.Unmarshal([]byte(jsonStr), &m)
@@ -74,6 +100,15 @@ func JsonToMap(jsonStr string) (map[string]string, error) { @@ -74,6 +100,15 @@ func JsonToMap(jsonStr string) (map[string]string, error) {
74 return m, nil 100 return m, nil
75 } 101 }
76 102
  103 +/**
  104 + * @Author SteveChan
  105 + * @Description 插入切片指定位置
  106 + * @Date 16:46 2020/12/10
  107 + * @Param index int 插入的位置
  108 + * @Param newStr []string 待插入的切片
  109 + * @Param str []string 源切片
  110 + * @return ns []string 返回新的切片
  111 + **/
77 func InsertSlice(index int, newstr []string, src []string) (ns []string) { 112 func InsertSlice(index int, newstr []string, src []string) (ns []string) {
78 ns = append(ns, src[:index]...) // 切片后加..., 相当于拆包成单个元素 113 ns = append(ns, src[:index]...) // 切片后加..., 相当于拆包成单个元素
79 ns = append(ns, newstr...) 114 ns = append(ns, newstr...)
@@ -81,6 +116,32 @@ func InsertSlice(index int, newstr []string, src []string) (ns []string) { @@ -81,6 +116,32 @@ func InsertSlice(index int, newstr []string, src []string) (ns []string) {
81 return 116 return
82 } 117 }
83 118
  119 +/**
  120 + * @Author SteveChan
  121 + * @Description 查找相同的手机号
  122 + * @Date 16:45 2020/12/10
  123 + * @Param nums []int 数组
  124 + * @return int
  125 + **/
  126 +func findRepeatNumber(nums []int) int {
  127 + maps := make(map[int]bool)
  128 + for _,num:=range nums{
  129 + if maps[num]{
  130 + return num
  131 + }else{
  132 + maps[num]=true
  133 + }
  134 + }
  135 + return -1
  136 +}
  137 +
  138 +/**
  139 + * @Author SteveChan
  140 + * @Description //
  141 + * @Date 16:49 2020/12/10
  142 + * @Param
  143 + * @return
  144 + **/
84 //RankPeriodCheckTime 设置赛季时检查时间范围的合法性 145 //RankPeriodCheckTime 设置赛季时检查时间范围的合法性
85 //func RankPeriodCheckTime(rankTypeId int64, beginTime int64, endTime int64, idNot int64) bool { 146 //func RankPeriodCheckTime(rankTypeId int64, beginTime int64, endTime int64, idNot int64) bool {
86 // sql := `SELECT count(*) FROM rank_period 147 // sql := `SELECT count(*) FROM rank_period
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 2
3 //var Logger log.Logger 3 //var Logger log.Logger
4 4
5 -// TODO 日志输出 5 +// 日志输出
6 //func init() { 6 //func init() {
7 // Logger = logrus.NewLogrusLogger() 7 // Logger = logrus.NewLogrusLogger()
8 // Logger.SetServiceName(constant.SERVICE_NAME) 8 // Logger.SetServiceName(constant.SERVICE_NAME)
@@ -51,6 +51,7 @@ func NewBeegoLogger(conf LoggerConfig) *logs.BeeLogger { @@ -51,6 +51,7 @@ func NewBeegoLogger(conf LoggerConfig) *logs.BeeLogger {
51 log.SetLevel(ilv) 51 log.SetLevel(ilv)
52 log.EnableFuncCallDepth(true) 52 log.EnableFuncCallDepth(true)
53 log.SetLogFuncCallDepth(5) 53 log.SetLogFuncCallDepth(5)
  54 + log.SetPrefix(constant.LOG_PREFIX)
54 return log 55 return log
55 } 56 }
56 57
1 package beego 1 package beego
2 2
3 import ( 3 import (
  4 + "time"
  5 +
4 "github.com/astaxie/beego" 6 "github.com/astaxie/beego"
5 "github.com/linmadan/egglib-go/web/beego/filters" 7 "github.com/linmadan/egglib-go/web/beego/filters"
  8 + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/constant"
6 . "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/log" 9 . "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/log"
7 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego/middleware" 10 "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego/middleware"
8 _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego/routers" 11 _ "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/port/beego/routers"
9 - "time"  
10 ) 12 )
11 13
12 func init() { 14 func init() {
@@ -18,6 +20,11 @@ func init() { @@ -18,6 +20,11 @@ func init() {
18 beego.InsertFilter("/*", beego.BeforeExec, middleware.CreateRequstLogFilter(Logger)) 20 beego.InsertFilter("/*", beego.BeforeExec, middleware.CreateRequstLogFilter(Logger))
19 beego.InsertFilter("/*", beego.AfterExec, middleware.CreateResponseLogFilter(Logger), false) 21 beego.InsertFilter("/*", beego.AfterExec, middleware.CreateResponseLogFilter(Logger), false)
20 22
  23 + // 默认时区设置
21 timeLocal, _ := time.LoadLocation("Asia/Chongqing") 24 timeLocal, _ := time.LoadLocation("Asia/Chongqing")
22 time.Local = timeLocal 25 time.Local = timeLocal
  26 +
  27 + // 静态文件路径映射
  28 + beego.SetStaticPath("/download", "download")
  29 + beego.SetStaticPath("/log", constant.LOG_File)
23 } 30 }
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/10
  4 + @note:
  5 +**/
  6 +
  7 +package list_interval
  8 +
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/11
  4 + @note:
  5 +**/
  6 +
  7 +package list_interval
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/11
  4 + @note:
  5 +**/
  6 +
  7 +package list_interval
  8 +
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/11
  4 + @note:
  5 +**/
  6 +
  7 +package list_interval
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/10
  4 + @note:
  5 +**/
  6 +
  7 +package list_interval
  8 +
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/10
  4 + @note:
  5 +**/
  6 +
  7 +package su_money
  1 +/**
  2 + @author: stevechan
  3 + @date: 2020/12/10
  4 + @note:
  5 +**/
  6 +
  7 +package su_money