正在显示
16 个修改的文件
包含
606 行增加
和
114 行删除
@@ -109,3 +109,11 @@ func CreateExchangeCashPersonListRepository(options map[string]interface{}) (dom | @@ -109,3 +109,11 @@ func CreateExchangeCashPersonListRepository(options map[string]interface{}) (dom | ||
109 | } | 109 | } |
110 | return repository.NewExchangeCashPersonListRepository(transactionContext) | 110 | return repository.NewExchangeCashPersonListRepository(transactionContext) |
111 | } | 111 | } |
112 | + | ||
113 | +func CreateListIntervalRepository(options map[string]interface{}) (domain.ListIntervalRepository, error) { | ||
114 | + var transactionContext *pg.TransactionContext | ||
115 | + if value, ok := options["transactionContext"]; ok { | ||
116 | + transactionContext = value.(*pg.TransactionContext) | ||
117 | + } | ||
118 | + return repository.NewListIntervalRepository(transactionContext) | ||
119 | +} |
@@ -9,7 +9,7 @@ type GetListIntervalQuery struct { | @@ -9,7 +9,7 @@ type GetListIntervalQuery struct { | ||
9 | ListIntervalId int `json:"listIntervalId"` // 排行榜id | 9 | ListIntervalId int `json:"listIntervalId"` // 排行榜id |
10 | } | 10 | } |
11 | 11 | ||
12 | -func (getListIntervalQuery *GetListIntervalQuery) ValidateCommand() error { | 12 | +func (getListIntervalQuery *GetListIntervalQuery) ValidateQuery() error { |
13 | valid := validation.Validation{} | 13 | valid := validation.Validation{} |
14 | b, err := valid.Valid(getListIntervalQuery) | 14 | b, err := valid.Valid(getListIntervalQuery) |
15 | if err != nil { | 15 | if err != nil { |
@@ -6,7 +6,9 @@ import ( | @@ -6,7 +6,9 @@ import ( | ||
6 | ) | 6 | ) |
7 | 7 | ||
8 | type ListListIntervalQuery struct { | 8 | type ListListIntervalQuery struct { |
9 | - CompanyId int `json:"companyId"` // 公司id | 9 | + CompanyId int64 `json:"companyId"` // 公司id |
10 | + Offset int `json:"offset,omitempty"` // 查询偏离量 | ||
11 | + Limit int `json:"limit,omitempty"` // 查询限制 | ||
10 | } | 12 | } |
11 | 13 | ||
12 | func (listListIntervalQuery *ListListIntervalQuery) ValidateQuery() error { | 14 | func (listListIntervalQuery *ListListIntervalQuery) ValidateQuery() error { |
1 | -package service | ||
2 | - | ||
3 | -import ( | ||
4 | - "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/command" | ||
5 | - "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/query" | ||
6 | -) | ||
7 | - | ||
8 | -type ListIntervalService struct { | ||
9 | - | ||
10 | -} | ||
11 | - | ||
12 | -// TODO 创建排行榜时间 | ||
13 | -func (listIntervalService *ListIntervalService) CreateListInterval(createListIntervalComand *command.CreateListIntervalCommand) (interface{}, error) { | ||
14 | - return nil, nil | ||
15 | -} | ||
16 | - | ||
17 | -// TODO 返回排行榜时间列表 | ||
18 | -func (listIntervalService *ListIntervalService) ListListInterval(listListIntervalQuery *query.ListListIntervalQuery) (interface{}, error) { | ||
19 | - return nil, nil | ||
20 | -} | ||
21 | - | ||
22 | -// TODO 返回排行榜时间 | ||
23 | -func (listIntervalService *ListIntervalService) GetListInterval(getListIntervalQuery *query.GetListIntervalQuery) (interface{}, error) { | ||
24 | - return nil, nil | ||
25 | -} | ||
26 | - | ||
27 | -// TODO 更新排行榜时间 | ||
28 | -func (listIntervalService *ListIntervalService) UpdateListInterval(updateListIntervalCommand *command.UpdateListIntervalCommand) (interface{}, error) { | ||
29 | - return nil, nil | ||
30 | -} | ||
31 | - | ||
32 | -// TODO 移除排行榜时间 | ||
33 | -func (listIntervalService *ListIntervalService) RemoveListInterval(removeListIntervalCommand *command.RemoveListIntervalCommand) (interface{}, error) { | ||
34 | - return nil, nil | ||
35 | -} | ||
36 | - | ||
37 | -func NewListIntervalService(options map[string] interface{}) *ListIntervalService { | ||
38 | - newListIntervalService := &ListIntervalService{} | ||
39 | - return newListIntervalService | ||
40 | -} |
1 | +package service | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "github.com/linmadan/egglib-go/core/application" | ||
6 | + "github.com/linmadan/egglib-go/utils/tool_funs" | ||
7 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/factory" | ||
8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/command" | ||
9 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/query" | ||
10 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
11 | +) | ||
12 | + | ||
13 | +type ListIntervalService struct { | ||
14 | +} | ||
15 | + | ||
16 | +// 创建排行榜时间 | ||
17 | +func (listIntervalService *ListIntervalService) CreateListInterval(createListIntervalCommand *command.CreateListIntervalCommand) (interface{}, error) { | ||
18 | + if err := createListIntervalCommand.ValidateCommand(); err != nil { | ||
19 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
20 | + } | ||
21 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
22 | + if err != nil { | ||
23 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
24 | + } | ||
25 | + if err := transactionContext.StartTransaction(); err != nil { | ||
26 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
27 | + } | ||
28 | + defer func() { | ||
29 | + transactionContext.RollbackTransaction() | ||
30 | + }() | ||
31 | + newListInterval := &domain.ListInterval { | ||
32 | + CompanyId: createListIntervalCommand.CompanyId, | ||
33 | + IntervalStartTime: createListIntervalCommand.ListIntervalStartTime, | ||
34 | + IntervalEndTime: createListIntervalCommand.ListIntervalEndTime, | ||
35 | + } | ||
36 | + var listIntervalRepository domain.ListIntervalRepository | ||
37 | + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{ | ||
38 | + "transactionContext": transactionContext, | ||
39 | + }); err != nil { | ||
40 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
41 | + } else { | ||
42 | + listIntervalRepository = value | ||
43 | + } | ||
44 | + if listInterval, err := listIntervalRepository.Save(newListInterval); err != nil { | ||
45 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
46 | + } else { | ||
47 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
48 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
49 | + } | ||
50 | + return listInterval, nil | ||
51 | + } | ||
52 | +} | ||
53 | + | ||
54 | +// 返回排行榜时间列表 | ||
55 | +func (listIntervalService *ListIntervalService) ListListInterval(listListIntervalQuery *query.ListListIntervalQuery) (interface{}, error) { | ||
56 | + if err := listListIntervalQuery.ValidateQuery(); err != nil { | ||
57 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
58 | + } | ||
59 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
60 | + if err != nil { | ||
61 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
62 | + } | ||
63 | + if err := transactionContext.StartTransaction(); err != nil { | ||
64 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
65 | + } | ||
66 | + defer func() { | ||
67 | + transactionContext.RollbackTransaction() | ||
68 | + }() | ||
69 | + var listIntervalRepository domain.ListIntervalRepository | ||
70 | + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{ | ||
71 | + "transactionContext": transactionContext, | ||
72 | + }); err != nil { | ||
73 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
74 | + } else { | ||
75 | + listIntervalRepository = value | ||
76 | + } | ||
77 | + if count, listIntervals, err := listIntervalRepository.Find(tool_funs.SimpleStructToMap(listListIntervalQuery)); err != nil { | ||
78 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
79 | + } else { | ||
80 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
81 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
82 | + } | ||
83 | + return map[string]interface{}{ | ||
84 | + "count": count, | ||
85 | + "taskNatures": listIntervals, | ||
86 | + }, nil | ||
87 | + } | ||
88 | +} | ||
89 | + | ||
90 | +// 返回排行榜时间 | ||
91 | +func (listIntervalService *ListIntervalService) GetListInterval(getListIntervalQuery *query.GetListIntervalQuery) (interface{}, error) { | ||
92 | + if err := getListIntervalQuery.ValidateQuery(); err != nil { | ||
93 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
94 | + } | ||
95 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
96 | + if err != nil { | ||
97 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
98 | + } | ||
99 | + if err := transactionContext.StartTransaction(); err != nil { | ||
100 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
101 | + } | ||
102 | + defer func() { | ||
103 | + transactionContext.RollbackTransaction() | ||
104 | + }() | ||
105 | + var listIntervalRepository domain.ListIntervalRepository | ||
106 | + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{ | ||
107 | + "transactionContext": transactionContext, | ||
108 | + }); err != nil { | ||
109 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
110 | + } else { | ||
111 | + listIntervalRepository = value | ||
112 | + } | ||
113 | + listInterval, err := listIntervalRepository.FindOne(map[string]interface{}{"listId": getListIntervalQuery.ListIntervalId}) | ||
114 | + if err != nil { | ||
115 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
116 | + } | ||
117 | + if listInterval == nil { | ||
118 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getListIntervalQuery.ListIntervalId))) | ||
119 | + } else { | ||
120 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
121 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
122 | + } | ||
123 | + return listInterval, nil | ||
124 | + } | ||
125 | +} | ||
126 | + | ||
127 | +// 更新排行榜时间 | ||
128 | +func (listIntervalService *ListIntervalService) UpdateListInterval(updateListIntervalCommand *command.UpdateListIntervalCommand) (interface{}, error) { | ||
129 | + if err := updateListIntervalCommand.ValidateCommand(); err != nil { | ||
130 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
131 | + } | ||
132 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
133 | + if err != nil { | ||
134 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
135 | + } | ||
136 | + if err := transactionContext.StartTransaction(); err != nil { | ||
137 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
138 | + } | ||
139 | + defer func() { | ||
140 | + transactionContext.RollbackTransaction() | ||
141 | + }() | ||
142 | + var listIntervalRepository domain.ListIntervalRepository | ||
143 | + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{ | ||
144 | + "transactionContext": transactionContext, | ||
145 | + }); err != nil { | ||
146 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
147 | + } else { | ||
148 | + listIntervalRepository = value | ||
149 | + } | ||
150 | + listInterval, err := listIntervalRepository.FindOne(map[string]interface{}{"listId": updateListIntervalCommand.ListIntervalId}) | ||
151 | + if err != nil { | ||
152 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
153 | + } | ||
154 | + if listInterval == nil { | ||
155 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateListIntervalCommand.ListIntervalId))) | ||
156 | + } | ||
157 | + if err := listInterval.Update(tool_funs.SimpleStructToMap(updateListIntervalCommand)); err != nil { | ||
158 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
159 | + } | ||
160 | + if listInterval, err := listIntervalRepository.Save(listInterval); err != nil { | ||
161 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
162 | + } else { | ||
163 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
164 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
165 | + } | ||
166 | + return listInterval, nil | ||
167 | + } | ||
168 | +} | ||
169 | + | ||
170 | +// 移除排行榜时间 | ||
171 | +func (listIntervalService *ListIntervalService) RemoveListInterval(removeListIntervalCommand *command.RemoveListIntervalCommand) (interface{}, error) { | ||
172 | + if err := removeListIntervalCommand.ValidateCommand(); err != nil { | ||
173 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
174 | + } | ||
175 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
176 | + if err != nil { | ||
177 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
178 | + } | ||
179 | + if err := transactionContext.StartTransaction(); err != nil { | ||
180 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
181 | + } | ||
182 | + defer func() { | ||
183 | + transactionContext.RollbackTransaction() | ||
184 | + }() | ||
185 | + var listIntervalRepository domain.ListIntervalRepository | ||
186 | + if value, err := factory.CreateListIntervalRepository(map[string]interface{}{ | ||
187 | + "transactionContext": transactionContext, | ||
188 | + }); err != nil { | ||
189 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
190 | + } else { | ||
191 | + listIntervalRepository = value | ||
192 | + } | ||
193 | + listInterval, err := listIntervalRepository.FindOne(map[string]interface{}{"listId": removeListIntervalCommand.ListIntervalId}) | ||
194 | + if err != nil { | ||
195 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
196 | + } | ||
197 | + if listInterval == nil { | ||
198 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeListIntervalCommand.ListIntervalId))) | ||
199 | + } | ||
200 | + if listInterval, err := listIntervalRepository.Remove(listInterval); err != nil { | ||
201 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
202 | + } else { | ||
203 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
204 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
205 | + } | ||
206 | + return listInterval, nil | ||
207 | + } | ||
208 | +} | ||
209 | + | ||
210 | +func NewListIntervalService(options map[string] interface{}) *ListIntervalService { | ||
211 | + newListIntervalService := &ListIntervalService{} | ||
212 | + return newListIntervalService | ||
213 | +} |
@@ -8,7 +8,7 @@ import ( | @@ -8,7 +8,7 @@ import ( | ||
8 | 8 | ||
9 | type OperationSuMoneyCommand struct { | 9 | type OperationSuMoneyCommand struct { |
10 | Uid int64 `json:"uid" valid:"Required"` // 素币拥有者UID | 10 | Uid int64 `json:"uid" valid:"Required"` // 素币拥有者UID |
11 | - OperationType int `json:"operationType" valid:"Required"` // 操作类型(1增加,2扣除) | 11 | + OperationType int `json:"operationType" valid:"Required"` // 操作类型(1增加,2扣除, 3兑换物资, 4兑换现金) |
12 | SuMoney float64 `json:"suMoney" valid:"Required"` // 素币值 | 12 | SuMoney float64 `json:"suMoney" valid:"Required"` // 素币值 |
13 | Operator int64 `json:"operator,omitempty"` // 操作人UID | 13 | Operator int64 `json:"operator,omitempty"` // 操作人UID |
14 | OperationDescription string `json:"operationDescription" valid:"Required"` // 理由描述 | 14 | OperationDescription string `json:"operationDescription" valid:"Required"` // 理由描述 |
@@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
8 | // 移除兑换现金人员 | 8 | // 移除兑换现金人员 |
9 | type RemoveExchangeCashPersonCommand struct { | 9 | type RemoveExchangeCashPersonCommand struct { |
10 | ListId int64 `json:"listId" valid:"Required"` // 兑换现金人员编号 | 10 | ListId int64 `json:"listId" valid:"Required"` // 兑换现金人员编号 |
11 | + Operator int64 `json:"operator,omitempty"` // 操作人 | ||
11 | } | 12 | } |
12 | 13 | ||
13 | func (removeExchangeCashPersonCommand *RemoveExchangeCashPersonCommand) ValidateCommand() error { | 14 | func (removeExchangeCashPersonCommand *RemoveExchangeCashPersonCommand) ValidateCommand() error { |
@@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
8 | type UpdateExchangeCashPersonCommand struct { | 8 | type UpdateExchangeCashPersonCommand struct { |
9 | ListId int64 `json:"listId" valid:"Required"` // 兑换现金人员编号 | 9 | ListId int64 `json:"listId" valid:"Required"` // 兑换现金人员编号 |
10 | ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换的素币(需要和当前的已兑换素币进行比较,少于当前已兑换素币则生成一条扣除素币记录,大于当前已兑换素币则生成一条增加素币记录) | 10 | ExchangedSuMoney float64 `json:"exchangedSuMoney"` // 已兑换的素币(需要和当前的已兑换素币进行比较,少于当前已兑换素币则生成一条扣除素币记录,大于当前已兑换素币则生成一条增加素币记录) |
11 | + Operator int64 `json:"operator,omitempty"` // 操作人 | ||
11 | } | 12 | } |
12 | 13 | ||
13 | func (updateExchangeCashPersonCommand *UpdateExchangeCashPersonCommand) ValidateCommand() error { | 14 | func (updateExchangeCashPersonCommand *UpdateExchangeCashPersonCommand) ValidateCommand() error { |
@@ -3,6 +3,9 @@ package service | @@ -3,6 +3,9 @@ package service | ||
3 | import ( | 3 | import ( |
4 | "fmt" | 4 | "fmt" |
5 | "github.com/linmadan/egglib-go/utils/tool_funs" | 5 | "github.com/linmadan/egglib-go/utils/tool_funs" |
6 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain/service" | ||
7 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/dao" | ||
8 | + "strconv" | ||
6 | "time" | 9 | "time" |
7 | 10 | ||
8 | "github.com/linmadan/egglib-go/core/application" | 11 | "github.com/linmadan/egglib-go/core/application" |
@@ -32,29 +35,32 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -32,29 +35,32 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
32 | transactionContext.RollbackTransaction() | 35 | transactionContext.RollbackTransaction() |
33 | }() | 36 | }() |
34 | 37 | ||
35 | - // TODO 判断公司是否存在 | ||
36 | - | ||
37 | - //var cashPoolDao *dao.CashPoolDao | ||
38 | - //if value, err := factory.CreateCashPoolDao(map[string]interface{}{ | ||
39 | - // "transactionContext": transactionContext, | ||
40 | - //}); err != nil { | ||
41 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
42 | - //} else { | ||
43 | - // cashPoolDao = value | ||
44 | - //} | ||
45 | - | ||
46 | - // TODO 统计系统已兑换现金、未兑换现金、已兑换素币、未兑换素币 | 38 | + var employeeDao *dao.EmployeeDao |
39 | + if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | ||
40 | + "transactionContext": transactionContext, | ||
41 | + }); err != nil { | ||
42 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
43 | + } else { | ||
44 | + employeeDao = value | ||
45 | + } | ||
47 | 46 | ||
48 | - var systemUnExchangeCash float64 | ||
49 | - //systemExchangedCash, err := cashPoolDao.CalculateSystemCash(createCashPoolCommand.CompanyId) | ||
50 | - //if err != nil { | ||
51 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
52 | - //} | 47 | + // 统计系统素币 |
48 | + systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(createCashPoolCommand.CompanyId) | ||
49 | + if err != nil { | ||
50 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
51 | + } | ||
52 | + if systemSuMoneyStatistics == nil { | ||
53 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | ||
54 | + } | ||
53 | 55 | ||
54 | - //systemChangedSuMoney, systemUnChangeSuMoney, err := cashPoolDao.CalculateSystemSuMoney(createCashPoolCommand.CompanyId) | ||
55 | - //if err != nil { | ||
56 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
57 | - //} | 56 | + // 统计系统现金 |
57 | + systemCashStatistics, err := employeeDao.CalculateSystemCash(createCashPoolCommand.CompanyId) | ||
58 | + if err != nil { | ||
59 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
60 | + } | ||
61 | + if systemCashStatistics == nil { | ||
62 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | ||
63 | + } | ||
58 | 64 | ||
59 | var cashPoolRepository domain.CashPoolRepository | 65 | var cashPoolRepository domain.CashPoolRepository |
60 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { | 66 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { |
@@ -65,38 +71,25 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -65,38 +71,25 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
65 | cashPoolRepository = value | 71 | cashPoolRepository = value |
66 | } | 72 | } |
67 | 73 | ||
68 | - // TODO 获取系统未兑换现金 | ||
69 | - | ||
70 | - //count, cashPools, err := cashPoolRepository.Find(map[string]interface{}{ | ||
71 | - // "companyId": createCashPoolCommand.CompanyId, | ||
72 | - //}) | ||
73 | - //if err != nil { | ||
74 | - // return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
75 | - //} | ||
76 | - //if count == 0 { | ||
77 | - // systemUnExchangeCash = 0 | ||
78 | - //} else { | ||
79 | - // systemUnExchangeCash = cashPools[0].UnExchangeCash | ||
80 | - //} | 74 | + systemExchangedCash := systemCashStatistics["systemExchangedCash"].(float64) |
75 | + systemUnExchangeCash := systemCashStatistics["systemUnExchangeCash"].(float64) | ||
76 | + systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) | ||
77 | + systemUnExchangeSuMoney := systemSuMoneyStatistics["systemUnExchangeSuMoney"].(float64) | ||
81 | 78 | ||
82 | // TODO 计算系统平均兑换汇率 | 79 | // TODO 计算系统平均兑换汇率 |
83 | - //rate, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", systemExchangedCash / systemChangedSuMoney), 64) // 平均兑换汇率 | 80 | + rate, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", systemExchangedCash / systemExchangedSuMoney), 64) // 平均兑换汇率 |
84 | 81 | ||
82 | + // 新建现金池 | ||
85 | newCashPool := &domain.CashPool{ | 83 | newCashPool := &domain.CashPool{ |
86 | CompanyId: createCashPoolCommand.CompanyId, | 84 | CompanyId: createCashPoolCommand.CompanyId, |
87 | Cash: createCashPoolCommand.Cash, | 85 | Cash: createCashPoolCommand.Cash, |
88 | - //ExchangedCash: systemExchangedCash, | ||
89 | - ExchangedCash: 0, | 86 | + ExchangedCash: systemExchangedCash, |
90 | UnExchangeCash: createCashPoolCommand.Cash + systemUnExchangeCash, | 87 | UnExchangeCash: createCashPoolCommand.Cash + systemUnExchangeCash, |
91 | - //ExchangedSuMoney: systemChangedSuMoney, | ||
92 | - ExchangedSuMoney: 0, | ||
93 | - //UnExchangeSuMoney: systemUnChangeSuMoney, | ||
94 | - UnExchangeSuMoney: 0, | ||
95 | - //Rate: rate, | ||
96 | - Rate: 0, | 88 | + ExchangedSuMoney: systemExchangedSuMoney, |
89 | + UnExchangeSuMoney: systemUnExchangeSuMoney, | ||
90 | + Rate: rate, | ||
97 | CreateTime: time.Now(), | 91 | CreateTime: time.Now(), |
98 | } | 92 | } |
99 | - | ||
100 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { | 93 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { |
101 | "transactionContext": transactionContext, | 94 | "transactionContext": transactionContext, |
102 | }); err != nil { | 95 | }); err != nil { |
@@ -104,7 +97,6 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | @@ -104,7 +97,6 @@ func (cashPoolService *CashPoolService) CreateCashPool(createCashPoolCommand *co | ||
104 | } else { | 97 | } else { |
105 | cashPoolRepository = value | 98 | cashPoolRepository = value |
106 | } | 99 | } |
107 | - | ||
108 | if cashPool, err := cashPoolRepository.Save(newCashPool); err != nil { | 100 | if cashPool, err := cashPoolRepository.Save(newCashPool); err != nil { |
109 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 101 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
110 | } else { | 102 | } else { |
@@ -130,6 +122,28 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | @@ -130,6 +122,28 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | ||
130 | defer func() { | 122 | defer func() { |
131 | transactionContext.RollbackTransaction() | 123 | transactionContext.RollbackTransaction() |
132 | }() | 124 | }() |
125 | + | ||
126 | + var employeeDao *dao.EmployeeDao | ||
127 | + if value, err := factory.CreateEmployeeDao(map[string]interface{}{ | ||
128 | + "transactionContext": transactionContext, | ||
129 | + }); err != nil { | ||
130 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
131 | + } else { | ||
132 | + employeeDao = value | ||
133 | + } | ||
134 | + | ||
135 | + // 统计系统素币 | ||
136 | + systemSuMoneyStatistics, err := employeeDao.CalculateSystemSuMoney(getCashPoolQuery.CompanyId) | ||
137 | + if err != nil { | ||
138 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
139 | + } | ||
140 | + if systemSuMoneyStatistics == nil { | ||
141 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "无效的公司") | ||
142 | + } | ||
143 | + | ||
144 | + systemExchangedSuMoney := systemSuMoneyStatistics["systemExchangedSuMoney"].(float64) | ||
145 | + systemUnExchangeSuMoney := systemSuMoneyStatistics["systemUnExchangeSuMoney"].(float64) | ||
146 | + | ||
133 | var cashPoolRepository domain.CashPoolRepository | 147 | var cashPoolRepository domain.CashPoolRepository |
134 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { | 148 | if value, err := factory.CreateCashPoolRepository(map[string] interface{} { |
135 | "transactionContext": transactionContext, | 149 | "transactionContext": transactionContext, |
@@ -144,7 +158,7 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | @@ -144,7 +158,7 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | ||
144 | if err := transactionContext.CommitTransaction(); err != nil { | 158 | if err := transactionContext.CommitTransaction(); err != nil { |
145 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 159 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
146 | } | 160 | } |
147 | - // TODO 初始状态下,现金池返回默认值 | 161 | + // 初始状态下,现金池返回默认值 |
148 | if count == 0 { | 162 | if count == 0 { |
149 | return map[string] interface{} { | 163 | return map[string] interface{} { |
150 | "cashPoolId": 0, | 164 | "cashPoolId": 0, |
@@ -152,8 +166,8 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | @@ -152,8 +166,8 @@ func (cashPoolService *CashPoolService) GetCashPool(getCashPoolQuery *query.GetC | ||
152 | "companyId": getCashPoolQuery.CompanyId, | 166 | "companyId": getCashPoolQuery.CompanyId, |
153 | "exchangedCash": 0, | 167 | "exchangedCash": 0, |
154 | "unExchangeCash": 0, | 168 | "unExchangeCash": 0, |
155 | - "exchangedSuMoney": 0, | ||
156 | - "unExchangeSuMoney": 0, | 169 | + "exchangedSuMoney": systemExchangedSuMoney, |
170 | + "unExchangeSuMoney": systemUnExchangeSuMoney, | ||
157 | "rate": 0, | 171 | "rate": 0, |
158 | "createTime": time.Now(), | 172 | "createTime": time.Now(), |
159 | }, nil | 173 | }, nil |
@@ -345,6 +359,9 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashActivity(updateExchang | @@ -345,6 +359,9 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashActivity(updateExchang | ||
345 | defer func() { | 359 | defer func() { |
346 | transactionContext.RollbackTransaction() | 360 | transactionContext.RollbackTransaction() |
347 | }() | 361 | }() |
362 | + | ||
363 | + // TODO 更新汇率处理: | ||
364 | + | ||
348 | var exchangeCashActivityRepository domain.ExchangeActivityRepository | 365 | var exchangeCashActivityRepository domain.ExchangeActivityRepository |
349 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ | 366 | if value, err := factory.CreateExchangeCashActivityRepository(map[string]interface{}{ |
350 | "transactionContext": transactionContext, | 367 | "transactionContext": transactionContext, |
@@ -440,7 +457,11 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | @@ -440,7 +457,11 @@ func (cashPoolService *CashPoolService) CreateExchangeCashPerson(createExchangeC | ||
440 | if person, err := exchangeCashPersonListRepository.Save(newPerson); err != nil { | 457 | if person, err := exchangeCashPersonListRepository.Save(newPerson); err != nil { |
441 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 458 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
442 | } else { | 459 | } else { |
443 | - // TODO 更新活动已兑换素币值、已兑换现金值、兑换汇率 | 460 | + // TODO 更新个人素币 |
461 | + | ||
462 | + // TODO 更新活动数据 | ||
463 | + | ||
464 | + // TODO 更新现金池数据 | ||
444 | 465 | ||
445 | if err := transactionContext.CommitTransaction(); err != nil { | 466 | if err := transactionContext.CommitTransaction(); err != nil { |
446 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 467 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -537,6 +558,14 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | @@ -537,6 +558,14 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | ||
537 | defer func() { | 558 | defer func() { |
538 | transactionContext.RollbackTransaction() | 559 | transactionContext.RollbackTransaction() |
539 | }() | 560 | }() |
561 | + var operationSuMoneyService service.OperationSuMoneyService | ||
562 | + if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ | ||
563 | + "transactionContext": transactionContext, | ||
564 | + }); err != nil { | ||
565 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
566 | + } else { | ||
567 | + operationSuMoneyService = value | ||
568 | + } | ||
540 | var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository | 569 | var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository |
541 | if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ | 570 | if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ |
542 | "transactionContext": transactionContext, | 571 | "transactionContext": transactionContext, |
@@ -555,11 +584,29 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | @@ -555,11 +584,29 @@ func (cashPoolService *CashPoolService) RemoveExchangeCashPerson(removeExchangeC | ||
555 | if personDeleted, err := exchangeCashPersonListRepository.Remove(person); err != nil { | 584 | if personDeleted, err := exchangeCashPersonListRepository.Remove(person); err != nil { |
556 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 585 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
557 | } else { | 586 | } else { |
587 | + // TODO 更新个人素币,个人素币值需要还原,理由:素币兑换现金调整 | ||
588 | + operationSuMoneyCommand := &command.OperationSuMoneyCommand{ | ||
589 | + Uid: person.EmployeeInfo.Uid, | ||
590 | + Operator: removeExchangeCashPersonCommand.Operator, | ||
591 | + SuMoney: 0, | ||
592 | + OperationType: 5, | ||
593 | + OperationDescription: "素币兑换现金调整", | ||
594 | + } | ||
595 | + task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription) | ||
596 | + if err != nil { | ||
597 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
598 | + } | ||
599 | + if task == nil { | ||
600 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | ||
601 | + } | ||
602 | + | ||
603 | + // TODO 更新兑换活动数据 | ||
604 | + | ||
605 | + // TODO 更新现金池数据 | ||
606 | + | ||
558 | if err := transactionContext.CommitTransaction(); err != nil { | 607 | if err := transactionContext.CommitTransaction(); err != nil { |
559 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 608 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
560 | } | 609 | } |
561 | - // TODO 个人素币值需要还原,理由:素币兑换现金调整 | ||
562 | - | ||
563 | return personDeleted, nil | 610 | return personDeleted, nil |
564 | } | 611 | } |
565 | } | 612 | } |
@@ -579,6 +626,15 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | @@ -579,6 +626,15 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | ||
579 | defer func() { | 626 | defer func() { |
580 | transactionContext.RollbackTransaction() | 627 | transactionContext.RollbackTransaction() |
581 | }() | 628 | }() |
629 | + var operationSuMoneyService service.OperationSuMoneyService | ||
630 | + if value, err := factory.CreateOperationSuMoneyService(map[string]interface{}{ | ||
631 | + "transactionContext": transactionContext, | ||
632 | + }); err != nil { | ||
633 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
634 | + } else { | ||
635 | + operationSuMoneyService = value | ||
636 | + } | ||
637 | + | ||
582 | var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository | 638 | var exchangeCashPersonListRepository domain.ExchangeCashPersonListRepository |
583 | if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ | 639 | if value, err := factory.CreateExchangeCashPersonListRepository(map[string]interface{}{ |
584 | "transactionContext": transactionContext, | 640 | "transactionContext": transactionContext, |
@@ -600,9 +656,25 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | @@ -600,9 +656,25 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashPerson(updateExchangeC | ||
600 | if personUpdated, err := exchangeCashPersonListRepository.Save(person); err != nil { | 656 | if personUpdated, err := exchangeCashPersonListRepository.Save(person); err != nil { |
601 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 657 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
602 | } else { | 658 | } else { |
659 | + operationSuMoneyCommand := &command.OperationSuMoneyCommand{ | ||
660 | + Uid: person.EmployeeInfo.Uid, | ||
661 | + Operator: updateExchangeCashPersonCommand.Operator, | ||
662 | + SuMoney: updateExchangeCashPersonCommand.ExchangedSuMoney, | ||
663 | + OperationType: 5, | ||
664 | + OperationDescription: "参与兑换素币活动", | ||
665 | + } | ||
603 | // TODO 更新个人当前可用素币值,生成素币兑换流水记录(获取更新前的已兑换素币值,判断是扣除还是增加),记录描述:参与素币兑换现金活动(红色表示取活动名称) | 666 | // TODO 更新个人当前可用素币值,生成素币兑换流水记录(获取更新前的已兑换素币值,判断是扣除还是增加),记录描述:参与素币兑换现金活动(红色表示取活动名称) |
667 | + task, err := operationSuMoneyService.Operation(operationSuMoneyCommand.Uid, operationSuMoneyCommand.Operator, operationSuMoneyCommand.SuMoney, operationSuMoneyCommand.OperationType, operationSuMoneyCommand.OperationDescription) | ||
668 | + if err != nil { | ||
669 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
670 | + } | ||
671 | + if task == nil { | ||
672 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(operationSuMoneyCommand.Uid))) | ||
673 | + } | ||
674 | + | ||
675 | + // TODO 更新兑换活动数据 | ||
604 | 676 | ||
605 | - // TODO 更新相应兑换活动已兑换素币值、已兑换现金值、兑换汇率 | 677 | + // TODO 更新现金池 |
606 | 678 | ||
607 | if err := transactionContext.CommitTransaction(); err != nil { | 679 | if err := transactionContext.CommitTransaction(); err != nil { |
608 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 680 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
1 | package domain | 1 | package domain |
2 | 2 | ||
3 | +import "time" | ||
4 | + | ||
5 | +// 排行榜时间 | ||
6 | +type ListInterval struct { | ||
7 | + ListIntervalId int `json:"listIntervalId"` // 排行榜时间id | ||
8 | + CompanyId int64 `json:"companyId"` // 公司id | ||
9 | + IntervalStartTime time.Time `json:"intervalStartTime"` // 排行榜开始时间 | ||
10 | + IntervalEndTime time.Time `json:"intervalEndTime"` // 排行榜结束时间 | ||
11 | +} | ||
12 | + | ||
13 | +type ListIntervalRepository interface { | ||
14 | + Save(listInterval *ListInterval) (*ListInterval, error) | ||
15 | + Remove(listInterval *ListInterval) (*ListInterval, error) | ||
16 | + FindOne(queryOptions map[string]interface{}) (*ListInterval, error) | ||
17 | + Find(queryOptions map[string]interface{}) (int64, []*ListInterval, error) | ||
18 | +} | ||
19 | + | ||
20 | +func (listInterval *ListInterval) Identify() interface{} { | ||
21 | + if listInterval.ListIntervalId == 0 { | ||
22 | + return nil | ||
23 | + } | ||
24 | + return listInterval.ListIntervalId | ||
25 | +} | ||
26 | + | ||
27 | +func (listInterval *ListInterval) Update(data map[string]interface{}) error { | ||
28 | + if intervalStartTime, ok := data["intervalStartTime"]; ok { | ||
29 | + listInterval.IntervalStartTime = intervalStartTime.(time.Time) | ||
30 | + } | ||
31 | + if intervalEndTime, ok := data["intervalEndTime"]; ok { | ||
32 | + listInterval.IntervalStartTime = intervalEndTime.(time.Time) | ||
33 | + } | ||
34 | + return nil | ||
35 | +} |
@@ -3,10 +3,11 @@ package domain | @@ -3,10 +3,11 @@ package domain | ||
3 | import "time" | 3 | import "time" |
4 | 4 | ||
5 | const ( | 5 | const ( |
6 | - SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE = iota + 1 //兑换(物资、现金) | 6 | + SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE = iota + 1 //兑换物资 |
7 | SU_MONEY_TRANSACTION_RECORD_TYPE_AWARD //任务奖励 | 7 | SU_MONEY_TRANSACTION_RECORD_TYPE_AWARD //任务奖励 |
8 | SU_MONEY_TRANSACTION_RECORD_TYPE_INCREASE //增加 | 8 | SU_MONEY_TRANSACTION_RECORD_TYPE_INCREASE //增加 |
9 | SU_MONEY_TRANSACTION_RECORD_TYPE_DEDUCT //扣除 | 9 | SU_MONEY_TRANSACTION_RECORD_TYPE_DEDUCT //扣除 |
10 | + SU_MONEY_TRANSACTION_RECORD_TYPE_EXCHANGE_CASH //兑换现金 | ||
10 | ) | 11 | ) |
11 | 12 | ||
12 | // 素币事务记录 | 13 | // 素币事务记录 |
@@ -16,10 +17,10 @@ type SuMoneyTransactionRecord struct { | @@ -16,10 +17,10 @@ type SuMoneyTransactionRecord struct { | ||
16 | Employee *EmployeeInfo `json:"employee"` // 记录关联员工 | 17 | Employee *EmployeeInfo `json:"employee"` // 记录关联员工 |
17 | SuMoneyBeforeTransaction float64 `json:"suMoneyBeforeTransaction"` // 事务处理前素币值 | 18 | SuMoneyBeforeTransaction float64 `json:"suMoneyBeforeTransaction"` // 事务处理前素币值 |
18 | CurrentSuMoney float64 `json:"currentSuMoney"` // 当前素币值 | 19 | CurrentSuMoney float64 `json:"currentSuMoney"` // 当前素币值 |
19 | - //CashPoolBeforeTransaction *CashPool `json:"cashPoolBeforeTransaction"` // 事务处理前现金池,用于兑换现金操作 | ||
20 | - //CurrentCashPool *CashPool `json:"currentCashPool"` // 当前现金池,用于兑换现金操作 | ||
21 | SuMoney float64 `json:"suMoney"` // 事务素币值 | 20 | SuMoney float64 `json:"suMoney"` // 事务素币值 |
22 | - //Cash float64 `json:"cash"` // 事务现金值,用于兑换现金操作 | 21 | + CashBeforeTransaction float64 `json:"cashBeforeTransaction"` // 事务处理前现金值 |
22 | + CurrentCash float64 `json:"currentCash"` // 当前现金值 | ||
23 | + Cash float64 `json:"cash"` // 事务现金值 | ||
23 | Operator *EmployeeInfo `json:"operator"` // 操作人 | 24 | Operator *EmployeeInfo `json:"operator"` // 操作人 |
24 | RecordDescription string `json:"recordDescription"` // 素币事务记录描述 | 25 | RecordDescription string `json:"recordDescription"` // 素币事务记录描述 |
25 | CreateTime time.Time `json:"createTime"` // 创建时间 | 26 | CreateTime time.Time `json:"createTime"` // 创建时间 |
1 | package repository | 1 | package repository |
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "github.com/go-pg/pg" | ||
6 | + pgTransaction "github.com/linmadan/egglib-go/transaction/pg" | ||
7 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/domain" | ||
8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/infrastructure/pg/models" | ||
9 | +) | ||
10 | + | ||
11 | +type ListIntervalRepository struct { | ||
12 | + transactionContext *pgTransaction.TransactionContext | ||
13 | +} | ||
14 | + | ||
15 | +func (repository *ListIntervalRepository) Save(listInterval *domain.ListInterval) (*domain.ListInterval, error) { | ||
16 | + tx := repository.transactionContext.PgTx | ||
17 | + if listInterval.Identify() == nil { | ||
18 | + if _, err := tx.QueryOne( | ||
19 | + pg.Scan(&listInterval.ListIntervalId, &listInterval.CompanyId, &listInterval.IntervalStartTime, &listInterval.IntervalEndTime), | ||
20 | + "INSERT INTO list_intervals (list_interval_start_time, list_interval_end_time, company_id) VALUES (?, ?, ?) RETURNING id, company_id, list_interval_start_time, list_interval_end_time", | ||
21 | + listInterval.ListIntervalId, listInterval.CompanyId, listInterval.IntervalStartTime, listInterval.IntervalEndTime); err != nil { | ||
22 | + return listInterval, err | ||
23 | + } | ||
24 | + } else { | ||
25 | + if _, err := tx.QueryOne( | ||
26 | + pg.Scan(&listInterval.ListIntervalId, &listInterval.CompanyId, &listInterval.IntervalStartTime, &listInterval.IntervalEndTime), | ||
27 | + "UPDATE list_intervals SET list_interval_start_time=?, list_interval_end_time=? WHERE id=? RETURNING id, company_id, list_interval_start_time, list_interval_end_time", | ||
28 | + listInterval.IntervalStartTime, listInterval.IntervalEndTime, listInterval.Identify()); err != nil { | ||
29 | + return listInterval, err | ||
30 | + } | ||
31 | + } | ||
32 | + return listInterval, nil | ||
33 | +} | ||
34 | + | ||
35 | +func (repository *ListIntervalRepository) Remove(listInterval *domain.ListInterval) (*domain.ListInterval, error) { | ||
36 | + tx := repository.transactionContext.PgTx | ||
37 | + listIntervalModel := new(models.ListInterval) | ||
38 | + listIntervalModel.Id = listInterval.Identify().(int) | ||
39 | + if _, err := tx.Model(listIntervalModel).WherePK().Delete(); err != nil { | ||
40 | + return listInterval, err | ||
41 | + } | ||
42 | + return listInterval, nil | ||
43 | +} | ||
44 | + | ||
45 | +func (repository *ListIntervalRepository) FindOne(queryOptions map[string]interface{}) (*domain.ListInterval, error) { | ||
46 | + tx := repository.transactionContext.PgTx | ||
47 | + listIntervalModel := new(models.ListInterval) | ||
48 | + query := tx.Model(listIntervalModel) | ||
49 | + if listIntervalId, ok := queryOptions["listId"]; ok { | ||
50 | + query = query.Where("list_interval.id = ?", listIntervalId) | ||
51 | + } | ||
52 | + if err := query.First(); err != nil { | ||
53 | + if err.Error() == "pg: no rows in result set" { | ||
54 | + return nil, fmt.Errorf("没有此资源") | ||
55 | + } else { | ||
56 | + return nil, err | ||
57 | + } | ||
58 | + } | ||
59 | + if listIntervalModel.Id == 0 { | ||
60 | + return nil, nil | ||
61 | + } else { | ||
62 | + return repository.transformPgModelToDomainModel(listIntervalModel) | ||
63 | + } | ||
64 | +} | ||
65 | + | ||
66 | +func (repository *ListIntervalRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.ListInterval, error) { | ||
67 | + tx := repository.transactionContext.PgTx | ||
68 | + var listIntervalModels []*models.ListInterval | ||
69 | + listIntervals := make([]*domain.ListInterval, 0) | ||
70 | + query := tx.Model(&listIntervalModels) | ||
71 | + if companyId, ok := queryOptions["companyId"]; ok { | ||
72 | + query = query.Where("list_interval.company_id = ?", companyId) | ||
73 | + } | ||
74 | + if offset, ok := queryOptions["offset"]; ok { | ||
75 | + offset := offset.(int) | ||
76 | + if offset > -1 { | ||
77 | + query = query.Offset(offset) | ||
78 | + } | ||
79 | + } else { | ||
80 | + query = query.Offset(0) | ||
81 | + } | ||
82 | + if limit, ok := queryOptions["limit"]; ok { | ||
83 | + limit := limit.(int) | ||
84 | + if limit > -1 { | ||
85 | + query = query.Limit(limit) | ||
86 | + } | ||
87 | + } else { | ||
88 | + query = query.Limit(20) | ||
89 | + } | ||
90 | + if count, err := query.Order("id DESC").SelectAndCount(); err != nil { | ||
91 | + return 0, listIntervals, err | ||
92 | + } else { | ||
93 | + for _, listIntervalModel := range listIntervalModels { | ||
94 | + if listInterval, err := repository.transformPgModelToDomainModel(listIntervalModel); err != nil { | ||
95 | + return 0, listIntervals, err | ||
96 | + } else { | ||
97 | + listIntervals = append(listIntervals, listInterval) | ||
98 | + } | ||
99 | + } | ||
100 | + return int64(count), listIntervals, nil | ||
101 | + } | ||
102 | +} | ||
103 | + | ||
104 | +func (repository *ListIntervalRepository) transformPgModelToDomainModel(listIntervalModel *models.ListInterval) (*domain.ListInterval, error) { | ||
105 | + return &domain.ListInterval{ | ||
106 | + ListIntervalId: listIntervalModel.Id, | ||
107 | + CompanyId: listIntervalModel.CompanyId, | ||
108 | + IntervalStartTime: listIntervalModel.ListIntervalStartTime, | ||
109 | + IntervalEndTime: listIntervalModel.ListIntervalEndTime, | ||
110 | + }, nil | ||
111 | +} | ||
112 | + | ||
113 | +func NewListIntervalRepository(transactionContext *pgTransaction.TransactionContext) (*ListIntervalRepository, error) { | ||
114 | + if transactionContext == nil { | ||
115 | + return nil, fmt.Errorf("transactionContext参数不能为nil") | ||
116 | + } else { | ||
117 | + return &ListIntervalRepository{ | ||
118 | + transactionContext: transactionContext, | ||
119 | + }, nil | ||
120 | + } | ||
121 | +} |
1 | package controllers | 1 | package controllers |
2 | 2 | ||
3 | -import "github.com/astaxie/beego" | 3 | +import ( |
4 | + "encoding/json" | ||
5 | + "github.com/astaxie/beego" | ||
6 | + "github.com/linmadan/egglib-go/web/beego/utils" | ||
7 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/command" | ||
8 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/query" | ||
9 | + "gitlab.fjmaimaimai.com/linmadan/mmm-worth/pkg/application/listInterval/service" | ||
10 | +) | ||
4 | 11 | ||
5 | type ListIntervalController struct { | 12 | type ListIntervalController struct { |
6 | beego.Controller | 13 | beego.Controller |
7 | } | 14 | } |
8 | 15 | ||
9 | -// TODO 新增榜单时间段 | 16 | +// 新增榜单时间段 |
10 | func (controller *ListIntervalController) CreateListInterval() { | 17 | func (controller *ListIntervalController) CreateListInterval() { |
11 | - | 18 | + listIntervalService := service.NewListIntervalService(nil) |
19 | + createListIntervalCommand := &command.CreateListIntervalCommand{} | ||
20 | + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), createListIntervalCommand) | ||
21 | + data, err := listIntervalService.CreateListInterval(createListIntervalCommand) | ||
22 | + var response utils.JsonResponse | ||
23 | + if err != nil { | ||
24 | + response = utils.ResponseError(controller.Ctx, err) | ||
25 | + } else { | ||
26 | + response = utils.ResponseData(controller.Ctx, data) | ||
27 | + } | ||
28 | + controller.Data["json"] = response | ||
29 | + controller.ServeJSON() | ||
12 | } | 30 | } |
13 | 31 | ||
14 | -// TODO 更新榜单时间段 | 32 | +// 更新榜单时间段 |
15 | func (controller *ListIntervalController) UpdateListInterval() { | 33 | func (controller *ListIntervalController) UpdateListInterval() { |
16 | - | 34 | + listIntervalService := service.NewListIntervalService(nil) |
35 | + updateListIntervalCommand := &command.UpdateListIntervalCommand{} | ||
36 | + json.Unmarshal(controller.Ctx.Input.GetData("requestBody").([]byte), updateListIntervalCommand) | ||
37 | + listId, _ := controller.GetInt(":listId") | ||
38 | + updateListIntervalCommand.ListIntervalId = listId | ||
39 | + data, err := listIntervalService.UpdateListInterval(updateListIntervalCommand) | ||
40 | + var response utils.JsonResponse | ||
41 | + if err != nil { | ||
42 | + response = utils.ResponseError(controller.Ctx, err) | ||
43 | + } else { | ||
44 | + response = utils.ResponseData(controller.Ctx, data) | ||
45 | + } | ||
46 | + controller.Data["json"] = response | ||
47 | + controller.ServeJSON() | ||
17 | } | 48 | } |
18 | 49 | ||
19 | -// TODO 获取榜单时间段 | 50 | +// 获取榜单时间段 |
20 | func (controller *ListIntervalController) GetListInterval() { | 51 | func (controller *ListIntervalController) GetListInterval() { |
21 | - | 52 | + listIntervalService := service.NewListIntervalService(nil) |
53 | + getListIntervalQuery := &query.GetListIntervalQuery{} | ||
54 | + listId, _ := controller.GetInt(":listId") | ||
55 | + getListIntervalQuery.ListIntervalId = listId | ||
56 | + data, err := listIntervalService.GetListInterval(getListIntervalQuery) | ||
57 | + var response utils.JsonResponse | ||
58 | + if err != nil { | ||
59 | + response = utils.ResponseError(controller.Ctx, err) | ||
60 | + } else { | ||
61 | + response = utils.ResponseData(controller.Ctx, data) | ||
62 | + } | ||
63 | + controller.Data["json"] = response | ||
64 | + controller.ServeJSON() | ||
22 | } | 65 | } |
23 | 66 | ||
24 | -// TODO 获取榜单时间段列表 | 67 | +// 获取榜单时间段列表 |
25 | func (controller *ListIntervalController) ListListInterval() { | 68 | func (controller *ListIntervalController) ListListInterval() { |
26 | - | 69 | + listIntervalService := service.NewListIntervalService(nil) |
70 | + listListIntervalQuery := &query.ListListIntervalQuery{} | ||
71 | + companyId, _ := controller.GetInt64(":companyID") | ||
72 | + listListIntervalQuery.CompanyId = companyId | ||
73 | + offset, _ := controller.GetInt("offset") | ||
74 | + listListIntervalQuery.Offset = offset | ||
75 | + limit, _ := controller.GetInt("limit") | ||
76 | + listListIntervalQuery.Limit = limit | ||
77 | + data, err := listIntervalService.ListListInterval(listListIntervalQuery) | ||
78 | + var response utils.JsonResponse | ||
79 | + if err != nil { | ||
80 | + response = utils.ResponseError(controller.Ctx, err) | ||
81 | + } else { | ||
82 | + response = utils.ResponseData(controller.Ctx, data) | ||
83 | + } | ||
84 | + controller.Data["json"] = response | ||
85 | + controller.ServeJSON() | ||
27 | } | 86 | } |
28 | 87 | ||
29 | -// TODO 移除榜单时间段 | 88 | +// 移除榜单时间段 |
30 | func (controller *ListIntervalController) RemoveListInterval() { | 89 | func (controller *ListIntervalController) RemoveListInterval() { |
31 | - | 90 | + listIntervalService := service.NewListIntervalService(nil) |
91 | + removeListIntervalQuery := &command.RemoveListIntervalCommand{} | ||
92 | + listId, _ := controller.GetInt(":listId") | ||
93 | + removeListIntervalQuery.ListIntervalId = listId | ||
94 | + data, err := listIntervalService.RemoveListInterval(removeListIntervalQuery) | ||
95 | + var response utils.JsonResponse | ||
96 | + if err != nil { | ||
97 | + response = utils.ResponseError(controller.Ctx, err) | ||
98 | + } else { | ||
99 | + response = utils.ResponseData(controller.Ctx, data) | ||
100 | + } | ||
101 | + controller.Data["json"] = response | ||
102 | + controller.ServeJSON() | ||
32 | } | 103 | } |
33 | 104 |
@@ -7,8 +7,8 @@ import ( | @@ -7,8 +7,8 @@ import ( | ||
7 | 7 | ||
8 | func init() { | 8 | func init() { |
9 | beego.Router("/list-interval/", &controllers.ListIntervalController{}, "Post:CreateListInterval") | 9 | beego.Router("/list-interval/", &controllers.ListIntervalController{}, "Post:CreateListInterval") |
10 | - beego.Router("/list-interval/:intervalId", &controllers.ListIntervalController{}, "Put:UpdateListInterval") | ||
11 | - beego.Router("/list-interval/:intervalId", &controllers.ListIntervalController{}, "Get:GetListInterval") | ||
12 | - beego.Router("/list-interval/:intervalId", &controllers.ListIntervalController{}, "Delete:RemoveListInterval") | 10 | + beego.Router("/list-interval/:listId", &controllers.ListIntervalController{}, "Put:UpdateListInterval") |
11 | + beego.Router("/list-interval/:listId", &controllers.ListIntervalController{}, "Get:GetListInterval") | ||
12 | + beego.Router("/list-interval/:listId", &controllers.ListIntervalController{}, "Delete:RemoveListInterval") | ||
13 | beego.Router("/list-interval/", &controllers.ListIntervalController{}, "Get:ListListInterval") | 13 | beego.Router("/list-interval/", &controllers.ListIntervalController{}, "Get:ListListInterval") |
14 | } | 14 | } |
@@ -11,5 +11,5 @@ func init() { | @@ -11,5 +11,5 @@ func init() { | ||
11 | beego.Router("/statistics/person-su-money", &controllers.StatisticsController{}, "Post:PersonSuMoneyStatistics") | 11 | beego.Router("/statistics/person-su-money", &controllers.StatisticsController{}, "Post:PersonSuMoneyStatistics") |
12 | beego.Router("/statistics/person-notification", &controllers.StatisticsController{}, "Post:PersonNotificationStatistics") | 12 | beego.Router("/statistics/person-notification", &controllers.StatisticsController{}, "Post:PersonNotificationStatistics") |
13 | beego.Router("/statistics/system-su-money", &controllers.StatisticsController{}, "Post:SystemSuMoneyStatistics") // 系统素币统计 | 13 | beego.Router("/statistics/system-su-money", &controllers.StatisticsController{}, "Post:SystemSuMoneyStatistics") // 系统素币统计 |
14 | - beego.Router("/statistics/system-cashPool", &controllers.StatisticsController{}, "Post:SystemCashStatistics") // 系统现金统计 | 14 | + beego.Router("/statistics/system-cash", &controllers.StatisticsController{}, "Post:SystemCashStatistics") // 系统现金统计 |
15 | } | 15 | } |
-
请 注册 或 登录 后发表评论