作者 陈志颖

fix:修改消息推送

# 价值系统后台管理服务
项目使用框架
## 系统架构图
![diagram](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/diagram.png)
## 项目使用框架
- http框架:beego
- orm框架:go-pg
- 数据存储:postgresql
- 项目结构分层:基于端口适配器架构(六边形架构)实现领域驱动设计(DDD领域驱动)
项目目录结构
## 项目目录结构
```
├─conf 项目配置文件
├─deploy 项目部署文件
├─document 接口文档
├─test 业务接口集成测试
├─dsl 领域描述语言文档
├─pkg
│ ├─application 应用层
│ │ ├─employee 员工
│ │ ├─task 任务
│ │ ├─suMoney 素币
│ │ ├─statistics 统计
│ │ ├─notification 消息通知
│ │ ├─notification 消息通知
│ │ ├─customerValue 客户价值
│ │ ├─projectBelong 项目归属
│ │ ├─taskNature 任务性质
... ... @@ -25,12 +28,12 @@
│ │ ├─event 注册领域业务事件订阅以及处理
│ │ └─factory 工厂类,组装复杂对象或者聚合
│ ├─domain 领域层(核心业务逻辑建模,实体,聚合根)
│ │ ├─event/ 领域事件
│ │ ├─service/ 领域服务
│ │ ├─domain... 领域对象
│ │ └─task 任务状态机实现
│ │ ├─event 领域事件
│ │ ├─service 领域服务
│ │ ├─domain... 领域对象
│ │ └─task 任务状态机实现
│ ├─infrastructure 基础设施层
│ │ ├─dao 数据访问对象
│ │ ├─dao 数据访问对象
│ │ ├─domain_service 领域服务具体实现
│ │ ├─pg 数据模型定义
│ │ ├─repository 实体或者聚合根模型仓储
... ... @@ -42,7 +45,7 @@
└─logs 日志文件
```
主要业务模块
## 主要业务模块
- 企业员工模块(application/employee)
- 素币模块(application/suMoney)
- 任务模块(application/task)
... ... @@ -50,18 +53,123 @@
- 消息通知模块(application/notification)
- 适配统一用户中心模块(application/unifiedUserCenter)
# 安装与使用
[价值系统代码仓库地址](http://gitlab.fjmaimaimai.com/linmadan/mmm-worth)
## 任务有限状态机
![taskFSM]()
## 领域驱动设计-战略建模
### 领域
### 限界上下文
### 上下文映射
## 领域驱动设计-战术建模
### 实体
员工实体:Employee
现金池实体:CashPool
客户价值实体:CustomerValue
素币兑换活动实体:ExchangeCashActivity
素币兑换清单实体:ExchangeCashPerson
排行版时间实体:ListInterval
提醒消息实体:Notification
关闭任务记录实体:OffTaskRecord
项目归属实体:ProjectBelong
引用资源实体:ReferenceResource
驳回任务记录实体:RejectTaskRecord
任务实体:Task
素币事务记录实体:SuMoneyTransactionRecord
任务性质实体:TaskNature
已发送通知实体:SentNotification
### 值对象
员工信息值对象:EmployeeInfo
竞标任务信息值对象:BidInfo
竞标人值对象:BidderInfo
引用资源项值对象:ReferenceResourceItem
抢单任务信息值对象:RobInfo
任务贡献占比项值对象:TaskPercentageItem
新建开发分支,如:xxx-dev,下载相应分支代码
解决评分项值对象:SolveScoreItem
### 聚合根
### 领域服务
验收任务服务
申请完成任务服务
竞标任务服务
选择竞标成功人服务
确认抢单任务服务
兑换素币服务
关闭任务服务
操作素币服务
已读全部消息服务
已读消息服务
驳回任务服务
发布任务服务
抢单任务服务
### 领域事件
## 领域驱动设计工程实现
### 模块
### 领域对象
### 资源库
### 防腐层
### 领域服务
### 数据流转
![avatar](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/dto.png)
### 上下文集成
### 分离领域
![avatar](http://gitlab.fjmaimaimai.com/chenzhiying/img-folder/raw/master/dispatch.png)
## 安装与使用
[价值系统代码仓库地址](http://gitlab.fjmaimaimai.com/linmadan/mmm-worth)
### 新建开发分支,如:xxx-dev,下载相应分支代码
```
git clone -b xxx-dev http://gitlab.fjmaimaimai.com/linmadan/mmm-worth.git
```
安装项目依赖:
### 安装项目依赖:
```
go mod tidy
```
启动项目
### 启动项目
```
bee run
```
... ...
... ... @@ -2,6 +2,8 @@ package service
import (
"fmt"
"time"
"github.com/linmadan/egglib-go/core/application"
"github.com/linmadan/egglib-go/utils/tool_funs"
"github.com/shopspring/decimal"
... ... @@ -10,7 +12,6 @@ import (
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory"
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain"
"gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao"
"time"
)
// 员工服务
... ...
... ... @@ -31,7 +31,7 @@ func (subscriber *MmmOpenApiServiceServiceSubscriber) HandleEvent(domainEvent co
employeeRepository = repository
}
uids := make([]int64, 0)
if _, employees, err := employeeRepository.Find(map[string]interface{}{"companyId": taskReleasedEvent.CompanyId}); err != nil {
if _, employees, err := employeeRepository.FindAll(map[string]interface{}{"companyId": taskReleasedEvent.CompanyId, "status": 1}); err != nil {
fmt.Println(err.Error())
return nil
} else {
... ...
... ... @@ -4,11 +4,10 @@ import "os"
const SERVICE_NAME = "mmm-worth"
var LOG_LEVEL = "debug"
var ABILITY_SERVICE_HOST = "https://suplus-worth-app-gateway-dev.fjmaimaimai.com"
var MMM_OPEN_API_SERVICE_HOST = "http://mmm-open-api-dev.fjmaimaimai.com"
//var LOG_LEVEL = "debug"
var LOG_LEVEL = "debug"
var LOG_File = "logs/app.log"
func init() {
... ...