From 9c2489c0c360c8dda36d3cbe1dba79222096b2dd Mon Sep 17 00:00:00 2001 From: wangpengfei <274878379@qq.com> Date: 星期一, 07 八月 2023 10:16:39 +0800 Subject: [PATCH] Merge branch 'master' into fly --- model/severity.go | 135 + router/serviceType.go | 17 constvar/timeSpent.go | 12 model/request/file.go | 23 service/faultType.go | 66 service/priorityLevel.go | 66 model/request/serviceCollectionPlan.go | 18 pkg/contextx/contextx.go | 4 router/priorityLevel.go | 17 model/request/serviceOrder.go | 46 model/serviceType.go | 135 + api/v1/timeSpent.go | 110 + api/v1/file.go | 157 + model/serviceFeeManage.go | 81 api/v1/serviceType.go | 110 + router/faq.go | 17 model/response/common.go | 7 router/serviceCollectionPlan.go | 17 service/file.go | 65 model/timeSpent.go | 135 + router/severity.go | 17 constvar/file.go | 12 router/faultType.go | 17 model/request/priorityLevel.go | 22 model/request/faultType.go | 22 service/serviceFollowup.go | 104 api/v1/paymentType.go | 112 + model/receipt.go | 149 + constvar/const.go | 60 constvar/paymentType.go | 12 model/serviceOrder.go | 171 + model/paymentType.go | 140 + api/v1/faq.go | 112 + api/v1/serviceCollectionPlan.go | 112 + model/index.go | 54 service/timeSpent.go | 66 constvar/bankAccount.go | 12 model/faq.go | 135 + api/v1/serviceFollowup.go | 3 model/request/serviceType.go | 22 model/request/paymentType.go | 22 router/bankAccount.go | 17 .gitignore | 3 api/v1/serviceFeeManage.go | 5 service/serviceOrder.go | 64 model/request/serviceFeeManage.go | 6 service/serviceType.go | 66 model/bankAccount.go | 140 + constvar/serviceCollectionPlan.go | 12 api/v1/receipt.go | 112 + service/serviceFeeManage.go | 157 model/serviceFollowup.go | 41 api/v1/bankAccount.go | 112 + constvar/receipt.go | 12 .idea/modules.xml | 2 model/request/serviceFollowup.go | 5 pkg/safe/safe.go | 2 model/request/severity.go | 22 constvar/severity.go | 12 constvar/priorityLevel.go | 12 constvar/faq.go | 12 pkg/structx/structx.go | 16 constvar/faultType.go | 12 router/serviceOrder.go | 17 pkg/httpx/httpx.go | 14 api/v1/serviceOrder.go | 120 + model/file.go | 152 + model/priorityLevel.go | 135 + router/file.go | 15 router/paymentType.go | 17 model/serviceCollectionPlan.go | 159 + service/severity.go | 66 model/serviceContract.go | 64 /dev/null | 4 api/v1/saleChance.go | 5 api/v1/priorityLevel.go | 110 + model/request/receipt.go | 22 router/timeSpent.go | 17 api/v1/serviceContract.go | 14 model/faultType.go | 135 + model/request/serviceContract.go | 5 service/bankAccount.go | 66 service/serviceCollectionPlan.go | 80 constvar/serviceOrder.go | 12 model/request/timeSpent.go | 22 model/request/faq.go | 22 api/v1/faultType.go | 110 + router/index.go | 338 +- constvar/serviceType.go | 12 router/receipt.go | 17 api/v1/severity.go | 110 + service/serviceContract.go | 123 model/request/bankAccount.go | 22 service/receipt.go | 66 service/faq.go | 66 service/paymentType.go | 66 96 files changed, 5,232 insertions(+), 427 deletions(-) diff --git a/.gitignore b/.gitignore index 8b4ba67..aca55e5 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,5 @@ *.test /logs/aps-admin.info.log /logs/aps-admin.err.log -/apsCrm \ No newline at end of file +/apsCrm +.idea/* \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 1c2fda5..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/admin.iml b/.idea/admin.iml deleted file mode 100644 index 62b2204..0000000 --- a/.idea/admin.iml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<module version="4"> - <component name="Go" enabled="true" /> -</module> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 00e73a1..f55d56a 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ <project version="4"> <component name="ProjectModuleManager"> <modules> - <module fileurl="file://$PROJECT_DIR$/.idea/admin.iml" filepath="$PROJECT_DIR$/.idea/admin.iml" /> + <module fileurl="file://$PROJECT_DIR$/.idea/crm.iml" filepath="$PROJECT_DIR$/.idea/crm.iml" /> </modules> </component> </project> \ No newline at end of file diff --git a/api/v1/bankAccount.go b/api/v1/bankAccount.go new file mode 100644 index 0000000..bf81a94 --- /dev/null +++ b/api/v1/bankAccount.go @@ -0,0 +1,112 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type BankAccountApi struct{} + +// Add +// @Tags 閾惰璐︽埛绠$悊 +// @Summary 娣诲姞閾惰璐︽埛 +// @Produce application/json +// @Param object body request.AddBankAccount true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/bankAccount/add [post] +func (s *BankAccountApi) Add(c *gin.Context) { + var params request.AddBankAccount + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewBankAccountService().AddBankAccount(¶ms.BankAccount) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 閾惰璐︽埛绠$悊 +// @Summary 鍒犻櫎閾惰璐︽埛 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/bankAccount/delete/{id} [delete] +func (s *BankAccountApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewBankAccountService().DeleteBankAccount(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 閾惰璐︽埛绠$悊 +// @Summary 鏇存柊閾惰璐︽埛 +// @Produce application/json +// @Param object body request.UpdateBankAccount true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/bankAccount/update [put] +func (s *BankAccountApi) Update(c *gin.Context) { + var params request.UpdateBankAccount + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.BankAccount.Id = params.Id + + errCode := service.NewBankAccountService().UpdateBankAccount(¶ms.BankAccount) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 閾惰璐︽埛绠$悊 +// @Summary 鑾峰彇閾惰璐︽埛鍒楄〃 +// @Produce application/json +// @Param object query request.GetBankAccountList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.BankAccount} +// @Router /api/bankAccount/list [get] +func (s *BankAccountApi) List(c *gin.Context) { + var params request.GetBankAccountList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + bankAccount, total, errCode := service.NewBankAccountService().GetBankAccountList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: bankAccount, + Count: total, + }) +} diff --git a/api/v1/faq.go b/api/v1/faq.go new file mode 100644 index 0000000..350dae2 --- /dev/null +++ b/api/v1/faq.go @@ -0,0 +1,112 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type FaqApi struct{} + +// Add +// @Tags 甯歌闂绠$悊 +// @Summary 娣诲姞甯歌闂 +// @Produce application/json +// @Param object body request.AddFaq true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/faq/add [post] +func (s *FaqApi) Add(c *gin.Context) { + var params request.AddFaq + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewFaqService().AddFaq(¶ms.Faq) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 甯歌闂绠$悊 +// @Summary 鍒犻櫎甯歌闂 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/faq/delete/{id} [delete] +func (s *FaqApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewFaqService().DeleteFaq(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 甯歌闂绠$悊 +// @Summary 鏇存柊甯歌闂 +// @Produce application/json +// @Param object body request.UpdateFaq true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/faq/update [put] +func (s *FaqApi) Update(c *gin.Context) { + var params request.UpdateFaq + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.Faq.Id = params.Id + + errCode := service.NewFaqService().UpdateFaq(¶ms.Faq) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 甯歌闂绠$悊 +// @Summary 鑾峰彇甯歌闂鍒楄〃 +// @Produce application/json +// @Param object body request.GetFaqList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.Faq} +// @Router /api/faq/list [get] +func (s *FaqApi) List(c *gin.Context) { + var params request.GetFaqList + ctx, ok := contextx.NewContext(c, params) + if !ok { + return + } + + faq, total, errCode := service.NewFaqService().GetFaqList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: faq, + Count: total, + }) +} diff --git a/api/v1/faultType.go b/api/v1/faultType.go new file mode 100644 index 0000000..233652f --- /dev/null +++ b/api/v1/faultType.go @@ -0,0 +1,110 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type FaultTypeApi struct{} + +// Add +// @Tags 鏁呴殰绫诲埆绠$悊 +// @Summary 娣诲姞鏁呴殰绫诲埆 +// @Produce application/json +// @Param object body request.AddFaultType true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/faultType/add [post] +func (s *FaultTypeApi) Add(c *gin.Context) { + var params request.AddFaultType + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewFaultTypeService().AddFaultType(¶ms.FaultType) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 鏁呴殰绫诲埆绠$悊 +// @Summary 鍒犻櫎鏁呴殰绫诲埆 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/faultType/delete/{id} [delete] +func (s *FaultTypeApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewFaultTypeService().DeleteFaultType(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鏁呴殰绫诲埆绠$悊 +// @Summary 鏇存柊鏁呴殰绫诲埆 +// @Produce application/json +// @Param object body request.UpdateFaultType true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/faultType/update [put] +func (s *FaultTypeApi) Update(c *gin.Context) { + var params request.UpdateFaultType + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.FaultType.Id = params.Id + + errCode := service.NewFaultTypeService().UpdateFaultType(¶ms.FaultType) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鏁呴殰绫诲埆绠$悊 +// @Summary 鑾峰彇鏁呴殰绫诲埆鍒楄〃 +// @Produce application/json +// @Success 200 {object} response.ListResponse{data=[]model.FaultType} +// @Router /api/faultType/list [get] +func (s *FaultTypeApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + faultType, total, errCode := service.NewFaultTypeService().GetFaultTypeList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: faultType, + Count: total, + }) +} diff --git a/api/v1/file.go b/api/v1/file.go new file mode 100644 index 0000000..1edb6b9 --- /dev/null +++ b/api/v1/file.go @@ -0,0 +1,157 @@ +package v1 + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/pkg/httpx" + "aps_crm/service" + "github.com/flipped-aurora/gin-vue-admin/server/utils/upload" + "github.com/gin-gonic/gin" + "os" + "path/filepath" + "strconv" +) + +type FileApi struct{} + +// Add +// @Tags 闄勪欢绠$悊 +// @Summary 娣诲姞闄勪欢 +// @Produce application/json +// @Param object body request.AddFile true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/file/add [post] +func (s *FileApi) Add(c *gin.Context) { + var params request.AddFile + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + _, header, err := c.Request.FormFile("file") + if err != nil { + ctx.Fail(ecode.ParamsErr) + return + } + + oss := upload.NewOss() + filePath, key, uploadErr := oss.UploadFile(header) + if uploadErr != nil { + ctx.Fail(ecode.ParamsErr) + return + } + + _, filename := filepath.Split(filePath) + + fileRecord := &model.File{ + Name: filename, + Size: header.Size, + FilePath: filePath, + Key: key, + DownloadCount: 0, + PreviewCount: 0, + FileType: httpx.GetMimeType(filePath), + SourceType: params.SourceType, + SourceId: params.SourceId, + } + + errCode := service.NewFileService().AddFile(fileRecord) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 闄勪欢绠$悊 +// @Summary 鍒犻櫎闄勪欢 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/file/delete/{id} [delete] +func (s *FileApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + + file, err := model.NewFileSearch().SetId(id).First() + if err != nil { + ctx.FailWithMsg(ecode.ParamsErr, "鏌ユ壘鏂囦欢澶辫触") + return + } + + err = os.Remove(file.FilePath) + if err != nil { + ctx.FailWithMsg(ecode.ParamsErr, "鍒犻櫎鏂囦欢澶辫触") + return + } + + errCode := service.NewFileService().DeleteFile(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 闄勪欢绠$悊 +// @Summary 鏇存柊闄勪欢 +// @Produce application/json +// @Param object body request.UpdateFile true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/file/update [put] +func (s *FileApi) Update(c *gin.Context) { + var params request.UpdateFile + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.File.Id = params.Id + + errCode := service.NewFileService().UpdateFile(¶ms.File) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 闄勪欢绠$悊 +// @Summary 鑾峰彇闄勪欢鍒楄〃 +// @Produce application/json +// @Param object query request.GetFileList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.File} +// @Router /api/file/list [get] +func (s *FileApi) List(c *gin.Context) { + var params request.GetFileList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + file, total, errCode := service.NewFileService().GetFileList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: file, + Count: total, + }) +} diff --git a/api/v1/paymentType.go b/api/v1/paymentType.go new file mode 100644 index 0000000..28d0dc1 --- /dev/null +++ b/api/v1/paymentType.go @@ -0,0 +1,112 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type PaymentTypeApi struct{} + +// Add +// @Tags 鏀粯鏂瑰紡绠$悊 +// @Summary 娣诲姞鏀粯鏂瑰紡 +// @Produce application/json +// @Param object body request.AddPaymentType true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/paymentType/add [post] +func (s *PaymentTypeApi) Add(c *gin.Context) { + var params request.AddPaymentType + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewPaymentTypeService().AddPaymentType(¶ms.PaymentType) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 鏀粯鏂瑰紡绠$悊 +// @Summary 鍒犻櫎鏀粯鏂瑰紡 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/paymentType/delete/{id} [delete] +func (s *PaymentTypeApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewPaymentTypeService().DeletePaymentType(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鏀粯鏂瑰紡绠$悊 +// @Summary 鏇存柊鏀粯鏂瑰紡 +// @Produce application/json +// @Param object body request.UpdatePaymentType true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/paymentType/update [put] +func (s *PaymentTypeApi) Update(c *gin.Context) { + var params request.UpdatePaymentType + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.PaymentType.Id = params.Id + + errCode := service.NewPaymentTypeService().UpdatePaymentType(¶ms.PaymentType) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鏀粯鏂瑰紡绠$悊 +// @Summary 鑾峰彇鏀粯鏂瑰紡鍒楄〃 +// @Produce application/json +// @Param object query request.GetPaymentTypeList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.PaymentType} +// @Router /api/paymentType/list [get] +func (s *PaymentTypeApi) List(c *gin.Context) { + var params request.GetPaymentTypeList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + paymentType, total, errCode := service.NewPaymentTypeService().GetPaymentTypeList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: paymentType, + Count: total, + }) +} diff --git a/api/v1/priorityLevel.go b/api/v1/priorityLevel.go new file mode 100644 index 0000000..8017e32 --- /dev/null +++ b/api/v1/priorityLevel.go @@ -0,0 +1,110 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type PriorityLevelApi struct{} + +// Add +// @Tags 浼樺厛绾у埆绠$悊 +// @Summary 娣诲姞浼樺厛绾у埆 +// @Produce application/json +// @Param object body request.AddPriorityLevel true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/priorityLevel/add [post] +func (s *PriorityLevelApi) Add(c *gin.Context) { + var params request.AddPriorityLevel + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewPriorityLevelService().AddPriorityLevel(¶ms.PriorityLevel) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 浼樺厛绾у埆绠$悊 +// @Summary 鍒犻櫎浼樺厛绾у埆 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/priorityLevel/delete/{id} [delete] +func (s *PriorityLevelApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewPriorityLevelService().DeletePriorityLevel(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 浼樺厛绾у埆绠$悊 +// @Summary 鏇存柊浼樺厛绾у埆 +// @Produce application/json +// @Param object body request.UpdatePriorityLevel true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/priorityLevel/update [put] +func (s *PriorityLevelApi) Update(c *gin.Context) { + var params request.UpdatePriorityLevel + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.PriorityLevel.Id = params.Id + + errCode := service.NewPriorityLevelService().UpdatePriorityLevel(¶ms.PriorityLevel) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 浼樺厛绾у埆绠$悊 +// @Summary 鑾峰彇浼樺厛绾у埆鍒楄〃 +// @Produce application/json +// @Success 200 {object} response.ListResponse{data=[]model.PriorityLevel} +// @Router /api/priorityLevel/list [get] +func (s *PriorityLevelApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + priorityLevel, total, errCode := service.NewPriorityLevelService().GetPriorityLevelList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: priorityLevel, + Count: total, + }) +} diff --git a/api/v1/receipt.go b/api/v1/receipt.go new file mode 100644 index 0000000..e507d08 --- /dev/null +++ b/api/v1/receipt.go @@ -0,0 +1,112 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type ReceiptApi struct{} + +// Add +// @Tags 鏀舵鍗曠鐞� +// @Summary 娣诲姞鏀舵鍗� +// @Produce application/json +// @Param object body request.AddReceipt true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/receipt/add [post] +func (s *ReceiptApi) Add(c *gin.Context) { + var params request.AddReceipt + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewReceiptService().AddReceipt(¶ms.Receipt) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 鏀舵鍗曠鐞� +// @Summary 鍒犻櫎鏀舵鍗� +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/receipt/delete/{id} [delete] +func (s *ReceiptApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewReceiptService().DeleteReceipt(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鏀舵鍗曠鐞� +// @Summary 鏇存柊鏀舵鍗� +// @Produce application/json +// @Param object body request.UpdateReceipt true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/receipt/update [put] +func (s *ReceiptApi) Update(c *gin.Context) { + var params request.UpdateReceipt + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.Receipt.Id = params.Id + + errCode := service.NewReceiptService().UpdateReceipt(¶ms.Receipt) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鏀舵鍗曠鐞� +// @Summary 鑾峰彇鏀舵鍗曞垪琛� +// @Produce application/json +// @Param object query request.GetReceiptList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.Receipt} +// @Router /api/receipt/list [get] +func (s *ReceiptApi) List(c *gin.Context) { + var params request.GetReceiptList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + receipt, total, errCode := service.NewReceiptService().GetReceiptList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: receipt, + Count: total, + }) +} diff --git a/api/v1/saleChance.go b/api/v1/saleChance.go index bce7c90..feb94a0 100644 --- a/api/v1/saleChance.go +++ b/api/v1/saleChance.go @@ -104,7 +104,6 @@ ctx.Ok() } - // checkSaleChanceParams // 妫�鏌ラ攢鍞満浼氬弬鏁� func checkSaleChanceParams(saleChance request.SaleChance) (int, model.SaleChance) { @@ -191,7 +190,7 @@ // @Summary 閿�鍞満浼氬垪琛� // @Produce application/json // @Param object body request.GetSaleChanceList true "鍙傛暟" -// @Success 200 {object} contextx.Response{data=response.SaleChanceResponse} +// @Success 200 {object} contextx.Response{data=response.SaleChanceResponse} // @Router /api/saleChance/list [post] func (con *SaleChanceApi) List(c *gin.Context) { var params request.GetSaleChanceList @@ -207,7 +206,7 @@ } ctx.OkWithDetailed(response.SaleChanceResponse{ - List: saleChances, + List: saleChances, Count: int(total), }) } \ No newline at end of file diff --git a/api/v1/serviceCollectionPlan.go b/api/v1/serviceCollectionPlan.go new file mode 100644 index 0000000..7476dd7 --- /dev/null +++ b/api/v1/serviceCollectionPlan.go @@ -0,0 +1,112 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type ServiceCollectionPlanApi struct{} + +// Add +// @Tags 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 +// @Summary 娣诲姞鏈嶅姟鍚堝悓鏀舵璁″垝 +// @Produce application/json +// @Param object body request.AddServiceCollectionPlan true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceCollectionPlan/add [post] +func (s *ServiceCollectionPlanApi) Add(c *gin.Context) { + var params request.AddServiceCollectionPlan + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewServiceCollectionPlanService().AddServiceCollectionPlan(params.List) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 +// @Summary 鍒犻櫎鏈嶅姟鍚堝悓鏀舵璁″垝 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceCollectionPlan/delete/{id} [delete] +func (s *ServiceCollectionPlanApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewServiceCollectionPlanService().DeleteServiceCollectionPlan(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 +// @Summary 鏇存柊鏈嶅姟鍚堝悓鏀舵璁″垝 +// @Produce application/json +// @Param object body request.UpdateServiceCollectionPlan true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceCollectionPlan/update [put] +func (s *ServiceCollectionPlanApi) Update(c *gin.Context) { + var params request.UpdateServiceCollectionPlan + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.ServiceCollectionPlan.Id = params.Id + + errCode := service.NewServiceCollectionPlanService().UpdateServiceCollectionPlan(¶ms.ServiceCollectionPlan) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鏈嶅姟鍚堝悓鏀舵璁″垝绠$悊 +// @Summary 鑾峰彇鏈嶅姟鍚堝悓鏀舵璁″垝鍒楄〃 +// @Produce application/json +// @Param object query request.GetServiceCollectionPlanList true "鍙傛暟" +// @Success 200 {object} response.ListResponse{data=[]model.ServiceCollectionPlan} +// @Router /api/serviceCollectionPlan/list [get] +func (s *ServiceCollectionPlanApi) List(c *gin.Context) { + var params request.GetServiceCollectionPlanList + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + serviceCollectionPlan, total, errCode := service.NewServiceCollectionPlanService().GetServiceCollectionPlanList(params.ServiceContractId) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: serviceCollectionPlan, + Count: total, + }) +} diff --git a/api/v1/serviceContract.go b/api/v1/serviceContract.go index 136c362..38b78f2 100644 --- a/api/v1/serviceContract.go +++ b/api/v1/serviceContract.go @@ -150,12 +150,12 @@ // List // -// @Tags ServiceContract -// @Summary 鐢熸垚璁″垝鍒楄〃 -// @Produce application/json -// @Param object body request.GetServiceContractList true "鍙傛暟" -// @Success 200 {object} contextx.Response{data=response.ServiceContractsResponse} -// @Router /api/serviceContract/list [post] +// @Tags ServiceContract +// @Summary 鐢熸垚璁″垝鍒楄〃 +// @Produce application/json +// @Param object body request.GetServiceContractList true "鍙傛暟" +// @Success 200 {object} contextx.Response{data=response.ServiceContractsResponse} +// @Router /api/serviceContract/list [post] func (con *ServiceContractApi) List(c *gin.Context) { var params request.GetServiceContractList ctx, ok := contextx.NewContext(c, ¶ms) @@ -163,7 +163,7 @@ return } - serviceContracts, total, errCode := serviceContractService.GetServiceContractList(params.Page, params.PageSize, params.Keyword) + serviceContracts, total, errCode := serviceContractService.GetServiceContractList(params.Page, params.PageSize, params.QueryClass, params.KeywordType, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return diff --git a/api/v1/serviceFeeManage.go b/api/v1/serviceFeeManage.go index 2021056..ae338c5 100644 --- a/api/v1/serviceFeeManage.go +++ b/api/v1/serviceFeeManage.go @@ -54,7 +54,7 @@ // @Tags ServiceFeeManage // @Summary 鍒犻櫎鏈嶅姟璐圭鐞� // @Produce application/json -// @Param object body request.DeleteServiceFeeManage true "鏌ヨ鍙傛暟" +// @Param object body request.DeleteServiceFeeManage true "鏌ヨ鍙傛暟" // @Success 200 {object} contextx.Response{} // @Router /api/serviceFeeManage/delete [delete] func (s *ServiceFeeManageApi) Delete(c *gin.Context) { @@ -111,7 +111,6 @@ ctx.Ok() } - // checkServiceFeeManageParams func checkServiceFeeManageParams(serviceFeeManage request.ServiceFeeManage) (errCode int, result model.ServiceFeeManage) { //if serviceFeeManage.ClientId == 0 { @@ -152,7 +151,7 @@ return } - serviceFeeManages, total, errCode := serviceFeeManageService.GetServiceFeeManageList(params.Page, params.PageSize, params.Keyword) + serviceFeeManages, total, errCode := serviceFeeManageService.GetServiceFeeManageList(params.Page, params.PageSize, params.QueryClass, params.KeywordType, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return diff --git a/api/v1/serviceFollowup.go b/api/v1/serviceFollowup.go index 1ca9148..b657e7d 100644 --- a/api/v1/serviceFollowup.go +++ b/api/v1/serviceFollowup.go @@ -96,7 +96,6 @@ ctx.Ok() } - // checkServiceFollowupParams func checkServiceFollowupParams(serviceFollowup request.ServiceFollowup) (errCode int, serviceFollowupModel model.ServiceFollowup) { //if serviceFollowup.Number == "" { @@ -141,7 +140,7 @@ return } - serviceFollowups, total, errCode := serviceFollowupService.GetServiceFollowupList(params.Page, params.PageSize, params.Keyword) + serviceFollowups, total, errCode := serviceFollowupService.GetServiceFollowupList(params.Page, params.PageSize, params.KeywordType, params.Keyword) if errCode != ecode.OK { ctx.Fail(errCode) return diff --git a/api/v1/serviceOrder.go b/api/v1/serviceOrder.go new file mode 100644 index 0000000..426dcef --- /dev/null +++ b/api/v1/serviceOrder.go @@ -0,0 +1,120 @@ +package v1 + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/pkg/structx" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type ServiceOrderApi struct{} + +// Add +// @Tags 鏈嶅姟鍗曠鐞� +// @Summary 娣诲姞鏈嶅姟鍗� +// @Produce application/json +// @Param object body request.AddServiceOrder true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceOrder/add [post] +func (s *ServiceOrderApi) Add(c *gin.Context) { + var params request.AddServiceOrder + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + serviceOrder := new(model.ServiceOrder) + if err := structx.AssignTo(params, serviceOrder); err != nil { + ctx.Fail(ecode.ParamsErr) + return + } + + errCode := service.NewServiceOrderService().AddServiceOrder(serviceOrder) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 鏈嶅姟鍗曠鐞� +// @Summary 鍒犻櫎鏈嶅姟鍗� +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceOrder/delete/{id} [delete] +func (s *ServiceOrderApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewServiceOrderService().DeleteServiceOrder(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鏈嶅姟鍗曠鐞� +// @Summary 鏇存柊鏈嶅姟鍗� +// @Produce application/json +// @Param object body request.UpdateServiceOrder true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceOrder/update [put] +func (s *ServiceOrderApi) Update(c *gin.Context) { + var params request.UpdateServiceOrder + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + serviceOrder := new(model.ServiceOrder) + if err := structx.AssignTo(params, serviceOrder); err != nil { + ctx.Fail(ecode.ParamsErr) + return + } + + errCode := service.NewServiceOrderService().UpdateServiceOrder(serviceOrder) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鏈嶅姟鍗曠鐞� +// @Summary 鑾峰彇鏈嶅姟鍗曞垪琛� +// @Produce application/json +// @Success 200 {object} response.ListResponse{data=[]model.ServiceOrder} +// @Router /api/serviceOrder/list [get] +func (s *ServiceOrderApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + serviceOrder, total, errCode := service.NewServiceOrderService().GetServiceOrderList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: serviceOrder, + Count: total, + }) +} diff --git a/api/v1/serviceType.go b/api/v1/serviceType.go new file mode 100644 index 0000000..5888c23 --- /dev/null +++ b/api/v1/serviceType.go @@ -0,0 +1,110 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type ServiceTypeApi struct{} + +// Add +// @Tags 鏈嶅姟鏂瑰紡绠$悊 +// @Summary 娣诲姞鏈嶅姟鏂瑰紡 +// @Produce application/json +// @Param object body request.AddServiceType true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceType/add [post] +func (s *ServiceTypeApi) Add(c *gin.Context) { + var params request.AddServiceType + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewServiceTypeService().AddServiceType(¶ms.ServiceType) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 鏈嶅姟鏂瑰紡绠$悊 +// @Summary 鍒犻櫎鏈嶅姟鏂瑰紡 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceType/delete/{id} [delete] +func (s *ServiceTypeApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewServiceTypeService().DeleteServiceType(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鏈嶅姟鏂瑰紡绠$悊 +// @Summary 鏇存柊鏈嶅姟鏂瑰紡 +// @Produce application/json +// @Param object body request.UpdateServiceType true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/serviceType/update [put] +func (s *ServiceTypeApi) Update(c *gin.Context) { + var params request.UpdateServiceType + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.ServiceType.Id = params.Id + + errCode := service.NewServiceTypeService().UpdateServiceType(¶ms.ServiceType) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鏈嶅姟鏂瑰紡绠$悊 +// @Summary 鑾峰彇鏈嶅姟鏂瑰紡鍒楄〃 +// @Produce application/json +// @Success 200 {object} response.ListResponse{data=[]model.ServiceType} +// @Router /api/serviceType/list [get] +func (s *ServiceTypeApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + serviceType, total, errCode := service.NewServiceTypeService().GetServiceTypeList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: serviceType, + Count: total, + }) +} diff --git a/api/v1/severity.go b/api/v1/severity.go new file mode 100644 index 0000000..a6bff7b --- /dev/null +++ b/api/v1/severity.go @@ -0,0 +1,110 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type SeverityApi struct{} + +// Add +// @Tags 涓ラ噸绋嬪害绠$悊 +// @Summary 娣诲姞涓ラ噸绋嬪害 +// @Produce application/json +// @Param object body request.AddSeverity true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/severity/add [post] +func (s *SeverityApi) Add(c *gin.Context) { + var params request.AddSeverity + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewSeverityService().AddSeverity(¶ms.Severity) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 涓ラ噸绋嬪害绠$悊 +// @Summary 鍒犻櫎涓ラ噸绋嬪害 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/severity/delete/{id} [delete] +func (s *SeverityApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewSeverityService().DeleteSeverity(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 涓ラ噸绋嬪害绠$悊 +// @Summary 鏇存柊涓ラ噸绋嬪害 +// @Produce application/json +// @Param object body request.UpdateSeverity true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/severity/update [put] +func (s *SeverityApi) Update(c *gin.Context) { + var params request.UpdateSeverity + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.Severity.Id = params.Id + + errCode := service.NewSeverityService().UpdateSeverity(¶ms.Severity) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 涓ラ噸绋嬪害绠$悊 +// @Summary 鑾峰彇涓ラ噸绋嬪害鍒楄〃 +// @Produce application/json +// @Success 200 {object} response.ListResponse{data=[]model.Severity} +// @Router /api/severity/list [get] +func (s *SeverityApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + severity, total, errCode := service.NewSeverityService().GetSeverityList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: severity, + Count: total, + }) +} diff --git a/api/v1/timeSpent.go b/api/v1/timeSpent.go new file mode 100644 index 0000000..c22f776 --- /dev/null +++ b/api/v1/timeSpent.go @@ -0,0 +1,110 @@ +package v1 + +import ( + "aps_crm/model/request" + "aps_crm/model/response" + "aps_crm/pkg/contextx" + "aps_crm/pkg/ecode" + "aps_crm/service" + "github.com/gin-gonic/gin" + "strconv" +) + +type TimeSpentApi struct{} + +// Add +// @Tags 鑺辫垂鏃堕棿绠$悊 +// @Summary 娣诲姞鑺辫垂鏃堕棿 +// @Produce application/json +// @Param object body request.AddTimeSpent true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/timeSpent/add [post] +func (s *TimeSpentApi) Add(c *gin.Context) { + var params request.AddTimeSpent + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + + errCode := service.NewTimeSpentService().AddTimeSpent(¶ms.TimeSpent) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Delete +// @Tags 鑺辫垂鏃堕棿绠$悊 +// @Summary 鍒犻櫎鑺辫垂鏃堕棿 +// @Produce application/json +// @Param id path int true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/timeSpent/delete/{id} [delete] +func (s *TimeSpentApi) Delete(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + id, _ := strconv.Atoi(c.Param("id")) + errCode := service.NewTimeSpentService().DeleteTimeSpent(id) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// Update +// @Tags 鑺辫垂鏃堕棿绠$悊 +// @Summary 鏇存柊鑺辫垂鏃堕棿 +// @Produce application/json +// @Param object body request.UpdateTimeSpent true "鏌ヨ鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/timeSpent/update [put] +func (s *TimeSpentApi) Update(c *gin.Context) { + var params request.UpdateTimeSpent + ctx, ok := contextx.NewContext(c, ¶ms) + if !ok { + return + } + if params.Id == 0 { + ctx.Fail(ecode.ParamsErr) + } + params.TimeSpent.Id = params.Id + + errCode := service.NewTimeSpentService().UpdateTimeSpent(¶ms.TimeSpent) + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.Ok() +} + +// List +// @Tags 鑺辫垂鏃堕棿绠$悊 +// @Summary 鑾峰彇鑺辫垂鏃堕棿鍒楄〃 +// @Produce application/json +// @Success 200 {object} response.ListResponse{data=[]model.TimeSpent} +// @Router /api/timeSpent/list [get] +func (s *TimeSpentApi) List(c *gin.Context) { + ctx, ok := contextx.NewContext(c, nil) + if !ok { + return + } + + timeSpent, total, errCode := service.NewTimeSpentService().GetTimeSpentList() + if errCode != ecode.OK { + ctx.Fail(errCode) + return + } + + ctx.OkWithDetailed(response.ListResponse{ + Data: timeSpent, + Count: total, + }) +} diff --git a/constvar/bankAccount.go b/constvar/bankAccount.go new file mode 100644 index 0000000..4e59333 --- /dev/null +++ b/constvar/bankAccount.go @@ -0,0 +1,12 @@ +package constvar +type BankAccountQueryClass string + +const ( + BankAccountQueryClassExpireLessThen60Days BankAccountQueryClass = "" +) + +type BankAccountKeywordType string + +const ( + BankAccountKeywordCustomerName BankAccountKeywordType = "" +) diff --git a/constvar/const.go b/constvar/const.go index ace5948..b73c7f0 100644 --- a/constvar/const.go +++ b/constvar/const.go @@ -66,3 +66,63 @@ VettingTypeSalesChance VettingTypeSalesChanceFollow ) + +type ServiceContractQueryClass string + +const ( + ServiceContractQueryClassExpireAfter30Day ServiceContractQueryClass = "30澶╁悗杩囨湡" + ServiceContractQueryClassExpireAfter60Day ServiceContractQueryClass = "60澶╁悗杩囨湡" + ServiceContractQueryClassExpiredBefore15Day ServiceContractQueryClass = "宸茶繃鏈�15澶�" + ServiceContractQueryClassExpiredBefore60Day ServiceContractQueryClass = "宸茶繃鏈�60澶�" +) + +type ServiceContractKeywordType string + +const ( + ServiceContractKeywordContractNo ServiceContractKeywordType = "鏈嶅姟鍚堝悓缂栧彿" + ServiceContractKeywordCustomerName ServiceContractKeywordType = "瀹㈡埛鍚嶇О" + ServiceContractKeywordContractDate ServiceContractKeywordType = "绛剧害鏃ユ湡" + ServiceContractKeywordContractType ServiceContractKeywordType = "鍚堝悓绫诲瀷" + ServiceContractKeywordContractStatus ServiceContractKeywordType = "鍚堝悓鐘舵��" + ServiceContractKeywordPrincipal ServiceContractKeywordType = "璐熻矗浜�" + ServiceContractKeywordProductName ServiceContractKeywordType = "浜у搧鍚嶇О" + ServiceContractKeywordServiceBeginDate ServiceContractKeywordType = "鏈嶅姟寮�濮嬫棩" + ServiceContractKeywordServiceEndDate ServiceContractKeywordType = "鏈嶅姟鍒版湡鏃�" + ServiceContractKeywordServiceTotalPrice ServiceContractKeywordType = "浠风◣鍚堣" +) + +type ServiceFollowupKeywordType string + +const ( + ServiceFollowupKeywordFollowupNo ServiceFollowupKeywordType = "鍥炶鍗曠紪鍙�" + ServiceFollowupKeywordCustomerName ServiceFollowupKeywordType = "瀹㈡埛鍚嶇О" + ServiceFollowupKeywordContactName ServiceFollowupKeywordType = "鑱旂郴浜哄鍚�" + ServiceFollowupKeywordCustomerServiceNo ServiceFollowupKeywordType = "瀹㈡埛鏈嶅姟鍗�" + ServiceFollowupKeywordVisitor ServiceFollowupKeywordType = "鍥炶浜�" + ServiceFollowupKeywordSatisfactionDegree ServiceFollowupKeywordType = "婊℃剰搴�" +) + +type ServiceFeeQueryClass string + +const ( + ServiceFeeQueryClassExpireLessThen60Days ServiceFeeQueryClass = "杩囨湡鏈弧60澶�" + ServiceFeeQueryClassExpireLessThen30Days ServiceFeeQueryClass = "杩囨湡鏈弧30澶�" + ServiceFeeQueryClassExpireAboutTo60Day ServiceFeeQueryClass = "鍗冲皢杩囨湡60澶�" + ServiceFeeQueryClassExpireAboutTo30Day ServiceFeeQueryClass = "鍗冲皢杩囨湡30澶�" + ServiceFeeQueryClassExpired ServiceFeeQueryClass = "宸茶繃鏈�" + ServiceFeeQueryClassNoService ServiceFeeQueryClass = "鏃犳湇鍔�" +) + +type ServiceFeeKeywordType string + +const ( + ServiceFeeKeywordCustomerName ServiceFeeKeywordType = "瀹㈡埛鍚嶇О" + ServiceFeeKeywordCustomerType ServiceFeeKeywordType = "瀹㈡埛绫诲瀷" + ServiceFeeKeywordSalesPrincipal ServiceFeeKeywordType = "閿�鍞礋璐d汉" + ServiceFeeKeywordCustomerScale ServiceFeeKeywordType = "瀹㈡埛瑙勬ā" + ServiceFeeKeywordClientLevel ServiceFeeKeywordType = "閲嶈绾у埆" + ServiceFeeKeywordCustomerNo ServiceFeeKeywordType = "瀹㈡埛缂栧彿" + ServiceFeeKeywordCustomerStatus ServiceFeeKeywordType = "瀹㈡埛鐘舵��" + ServiceFeeKeywordProductName ServiceFeeKeywordType = "浜у搧鍚嶇О" + ServiceFeeKeywordServiceEndDate ServiceFeeKeywordType = "鏈嶅姟鍒版湡鏃�" +) diff --git a/constvar/faq.go b/constvar/faq.go new file mode 100644 index 0000000..df1e10f --- /dev/null +++ b/constvar/faq.go @@ -0,0 +1,12 @@ +package constvar +type FaqQueryClass string + +const ( + FaqQueryClassExpireLessThen60Days FaqQueryClass = "" +) + +type FaqKeywordType string + +const ( + FaqKeywordCustomerName FaqKeywordType = "" +) diff --git a/constvar/faultType.go b/constvar/faultType.go new file mode 100644 index 0000000..e522e0a --- /dev/null +++ b/constvar/faultType.go @@ -0,0 +1,12 @@ +package constvar +type FaultTypeQueryClass string + +const ( + FaultTypeQueryClassExpireLessThen60Days FaultTypeQueryClass = "" +) + +type FaultTypeKeywordType string + +const ( + FaultTypeKeywordCustomerName FaultTypeKeywordType = "" +) diff --git a/constvar/file.go b/constvar/file.go new file mode 100644 index 0000000..042bbf4 --- /dev/null +++ b/constvar/file.go @@ -0,0 +1,12 @@ +package constvar +type FileQueryClass string + +const ( + FileQueryClassExpireLessThen60Days FileQueryClass = "" +) + +type FileKeywordType string + +const ( + FileKeywordCustomerName FileKeywordType = "" +) diff --git a/constvar/paymentType.go b/constvar/paymentType.go new file mode 100644 index 0000000..f44593a --- /dev/null +++ b/constvar/paymentType.go @@ -0,0 +1,12 @@ +package constvar +type PaymentTypeQueryClass string + +const ( + PaymentTypeQueryClassExpireLessThen60Days PaymentTypeQueryClass = "" +) + +type PaymentTypeKeywordType string + +const ( + PaymentTypeKeywordCustomerName PaymentTypeKeywordType = "" +) diff --git a/constvar/priorityLevel.go b/constvar/priorityLevel.go new file mode 100644 index 0000000..fab4303 --- /dev/null +++ b/constvar/priorityLevel.go @@ -0,0 +1,12 @@ +package constvar +type PriorityLevelQueryClass string + +const ( + PriorityLevelQueryClassExpireLessThen60Days PriorityLevelQueryClass = "" +) + +type PriorityLevelKeywordType string + +const ( + PriorityLevelKeywordCustomerName PriorityLevelKeywordType = "" +) diff --git a/constvar/receipt.go b/constvar/receipt.go new file mode 100644 index 0000000..df8e86e --- /dev/null +++ b/constvar/receipt.go @@ -0,0 +1,12 @@ +package constvar +type ReceiptQueryClass string + +const ( + ReceiptQueryClassExpireLessThen60Days ReceiptQueryClass = "" +) + +type ReceiptKeywordType string + +const ( + ReceiptKeywordCustomerName ReceiptKeywordType = "" +) diff --git a/constvar/serviceCollectionPlan.go b/constvar/serviceCollectionPlan.go new file mode 100644 index 0000000..32450ec --- /dev/null +++ b/constvar/serviceCollectionPlan.go @@ -0,0 +1,12 @@ +package constvar +type ServiceCollectionPlanQueryClass string + +const ( + ServiceCollectionPlanQueryClassExpireLessThen60Days ServiceCollectionPlanQueryClass = "" +) + +type ServiceCollectionPlanKeywordType string + +const ( + ServiceCollectionPlanKeywordCustomerName ServiceCollectionPlanKeywordType = "" +) diff --git a/constvar/serviceOrder.go b/constvar/serviceOrder.go new file mode 100644 index 0000000..959e402 --- /dev/null +++ b/constvar/serviceOrder.go @@ -0,0 +1,12 @@ +package constvar +type ServiceOrderQueryClass string + +const ( + ServiceOrderQueryClassExpireLessThen60Days ServiceOrderQueryClass = "" +) + +type ServiceOrderKeywordType string + +const ( + ServiceOrderKeywordCustomerName ServiceOrderKeywordType = "" +) diff --git a/constvar/serviceType.go b/constvar/serviceType.go new file mode 100644 index 0000000..3a8c856 --- /dev/null +++ b/constvar/serviceType.go @@ -0,0 +1,12 @@ +package constvar +type ServiceTypeQueryClass string + +const ( + ServiceTypeQueryClassExpireLessThen60Days ServiceTypeQueryClass = "" +) + +type ServiceTypeKeywordType string + +const ( + ServiceTypeKeywordCustomerName ServiceTypeKeywordType = "" +) diff --git a/constvar/severity.go b/constvar/severity.go new file mode 100644 index 0000000..f9781c7 --- /dev/null +++ b/constvar/severity.go @@ -0,0 +1,12 @@ +package constvar +type SeverityQueryClass string + +const ( + SeverityQueryClassExpireLessThen60Days SeverityQueryClass = "" +) + +type SeverityKeywordType string + +const ( + SeverityKeywordCustomerName SeverityKeywordType = "" +) diff --git a/constvar/timeSpent.go b/constvar/timeSpent.go new file mode 100644 index 0000000..4f38fe2 --- /dev/null +++ b/constvar/timeSpent.go @@ -0,0 +1,12 @@ +package constvar +type TimeSpentQueryClass string + +const ( + TimeSpentQueryClassExpireLessThen60Days TimeSpentQueryClass = "" +) + +type TimeSpentKeywordType string + +const ( + TimeSpentKeywordCustomerName TimeSpentKeywordType = "" +) diff --git a/model/bankAccount.go b/model/bankAccount.go new file mode 100644 index 0000000..006e9b8 --- /dev/null +++ b/model/bankAccount.go @@ -0,0 +1,140 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // BankAccount 閾惰璐︽埛 + BankAccount struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // BankAccountSearch 閾惰璐︽埛鎼滅储鏉′欢 + BankAccountSearch struct { + BankAccount + Orm *gorm.DB + QueryClass constvar.BankAccountQueryClass + KeywordType constvar.BankAccountKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (BankAccount) TableName() string { + return "bank_account" +} + +func NewBankAccountSearch() *BankAccountSearch { + return &BankAccountSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *BankAccountSearch) build() *gorm.DB { + var db = slf.Orm.Model(&BankAccount{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *BankAccountSearch) Create(record *BankAccount) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *BankAccountSearch) CreateBatch(records []*BankAccount) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *BankAccountSearch) Delete() error { + var db = slf.build() + return db.Delete(&BankAccount{}).Error +} + +func (slf *BankAccountSearch) Update(record *BankAccount) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *BankAccountSearch) FindAll() ([]*BankAccount, error) { + var db = slf.build() + var record = make([]*BankAccount, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *BankAccountSearch) SetId(id int) *BankAccountSearch { + slf.Id = id + return slf +} + +func (slf *BankAccountSearch) SetOrm(tx *gorm.DB) *BankAccountSearch { + slf.Orm = tx + return slf +} + +func (slf *BankAccountSearch) First() (*BankAccount, error) { + var db = slf.build() + var record = new(BankAccount) + err := db.First(record).Error + return record, err +} + +func (slf *BankAccountSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *BankAccountSearch) Save(record *BankAccount) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *BankAccountSearch) Find() ([]*BankAccount, int64, error) { + var db = slf.build() + var records = make([]*BankAccount, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *BankAccountSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*BankAccount{} + return slf.CreateBatch(records) +} diff --git a/model/faq.go b/model/faq.go new file mode 100644 index 0000000..115e1d6 --- /dev/null +++ b/model/faq.go @@ -0,0 +1,135 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // Faq 甯歌闂 + Faq struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // FaqSearch 甯歌闂鎼滅储鏉′欢 + FaqSearch struct { + Faq + Orm *gorm.DB + QueryClass constvar.FaqQueryClass + KeywordType constvar.FaqKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (Faq) TableName() string { + return "faq" +} + +func NewFaqSearch() *FaqSearch { + return &FaqSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *FaqSearch) build() *gorm.DB { + var db = slf.Orm.Model(&Faq{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *FaqSearch) Create(record *Faq) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *FaqSearch) CreateBatch(records []*Faq) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *FaqSearch) Delete() error { + var db = slf.build() + return db.Delete(&Faq{}).Error +} + +func (slf *FaqSearch) Update(record *Faq) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *FaqSearch) FindAll() ([]*Faq, error) { + var db = slf.build() + var record = make([]*Faq, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *FaqSearch) SetId(id int) *FaqSearch { + slf.Id = id + return slf +} + +func (slf *FaqSearch) First() (*Faq, error) { + var db = slf.build() + var record = new(Faq) + err := db.First(record).Error + return record, err +} + +func (slf *FaqSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *FaqSearch) Save(record *Faq) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *FaqSearch) Find() ([]*Faq, int64, error) { + var db = slf.build() + var records = make([]*Faq, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *FaqSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*Faq{} + return slf.CreateBatch(records) +} diff --git a/model/faultType.go b/model/faultType.go new file mode 100644 index 0000000..260cc2f --- /dev/null +++ b/model/faultType.go @@ -0,0 +1,135 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // FaultType 鏁呴殰绫诲埆 + FaultType struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // FaultTypeSearch 鏁呴殰绫诲埆鎼滅储鏉′欢 + FaultTypeSearch struct { + FaultType + Orm *gorm.DB + QueryClass constvar.FaultTypeQueryClass + KeywordType constvar.FaultTypeKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (FaultType) TableName() string { + return "fault_type" +} + +func NewFaultTypeSearch() *FaultTypeSearch { + return &FaultTypeSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *FaultTypeSearch) build() *gorm.DB { + var db = slf.Orm.Model(&FaultType{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *FaultTypeSearch) Create(record *FaultType) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *FaultTypeSearch) CreateBatch(records []*FaultType) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *FaultTypeSearch) Delete() error { + var db = slf.build() + return db.Delete(&FaultType{}).Error +} + +func (slf *FaultTypeSearch) Update(record *FaultType) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *FaultTypeSearch) FindAll() ([]*FaultType, error) { + var db = slf.build() + var record = make([]*FaultType, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *FaultTypeSearch) SetId(id int) *FaultTypeSearch { + slf.Id = id + return slf +} + +func (slf *FaultTypeSearch) First() (*FaultType, error) { + var db = slf.build() + var record = new(FaultType) + err := db.First(record).Error + return record, err +} + +func (slf *FaultTypeSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *FaultTypeSearch) Save(record *FaultType) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *FaultTypeSearch) Find() ([]*FaultType, int64, error) { + var db = slf.build() + var records = make([]*FaultType, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *FaultTypeSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*FaultType{} + return slf.CreateBatch(records) +} diff --git a/model/file.go b/model/file.go new file mode 100644 index 0000000..3b919f3 --- /dev/null +++ b/model/file.go @@ -0,0 +1,152 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // File 闄勪欢 + File struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `gorm:"name" json:"name"` + Size int64 `gorm:"size" json:"size"` // 鏂囦欢澶у皬 + FilePath string `gorm:"file_path" json:"filePath"` // 鏂囦欢璺緞 + Key string `gorm:"key" json:"key"` // 瀵硅薄瀛樺偍key + Bucket string `gorm:"bucket" json:"bucket"` // 瀵硅薄瀛樺偍bucket + DownloadCount int `gorm:"download_count" json:"downloadCount"` // 涓嬫娆℃暟 + PreviewCount int `gorm:"preview_count" json:"previewCount"` // 棰勮娆℃暟 + FileType string `gorm:"file_type" json:"fileType"` // 鏂囦欢绫诲瀷 + SourceType string `gorm:"source_type" json:"sourceType"` // 闄勪欢鏉ユ簮 + SourceId int `gorm:"source_id" json:"sourceId"` // 鏉ユ簮id + CreateTime string `gorm:"create_time" json:"createTime"` // 鍒涘缓鏃堕棿 + UpdateTime string `gorm:"update_time" json:"updateTime"` + Content string `gorm:"content" json:"content"` // 鏂囦欢鍐呭 + } + + // FileSearch 闄勪欢鎼滅储鏉′欢 + FileSearch struct { + File + Orm *gorm.DB + QueryClass constvar.FileQueryClass + KeywordType constvar.FileKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (File) TableName() string { + return "file" +} + +func NewFileSearch() *FileSearch { + return &FileSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *FileSearch) build() *gorm.DB { + var db = slf.Orm.Model(&File{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *FileSearch) Create(record *File) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *FileSearch) CreateBatch(records []*File) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *FileSearch) Delete() error { + var db = slf.build() + return db.Delete(&File{}).Error +} + +func (slf *FileSearch) Update(record *File) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *FileSearch) FindAll() ([]*File, error) { + var db = slf.build() + var record = make([]*File, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *FileSearch) SetId(id int) *FileSearch { + slf.Id = id + return slf +} + +func (slf *FileSearch) SetOrm(tx *gorm.DB) *FileSearch { + slf.Orm = tx + return slf +} + +func (slf *FileSearch) First() (*File, error) { + var db = slf.build() + var record = new(File) + err := db.First(record).Error + return record, err +} + +func (slf *FileSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *FileSearch) Save(record *File) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *FileSearch) Find() ([]*File, int64, error) { + var db = slf.build() + var records = make([]*File, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *FileSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*File{} + return slf.CreateBatch(records) +} diff --git a/model/index.go b/model/index.go index 8c7b0f7..04856fa 100644 --- a/model/index.go +++ b/model/index.go @@ -4,6 +4,8 @@ "aps_crm/conf" "aps_crm/pkg/logx" "aps_crm/pkg/mysqlx" + "aps_crm/pkg/safe" + "gorm.io/gorm/schema" ) func Init() error { @@ -14,7 +16,9 @@ if err := RegisterTables(); err != nil { return err } - + safe.Go(func() { + InsertDefaultData() + }) return nil } @@ -66,19 +70,39 @@ Satisfaction{}, TimelyRate{}, SolveRate{}, - IsVisit{}, - IsVisit{}, - ReportSource{}, - OrderType{}, - ServiceContractStatus{}, - ServiceContractType{}, - RefundMethod{}, - IsInvoice{}, - AccountId{}, - SalesReturnStatus{}, - Repository{}, - QuotationStatus{}, - Currency{}, + IsVisit{}, + IsVisit{}, + ReportSource{}, + OrderType{}, + ServiceContractStatus{}, + ServiceContractType{}, + RefundMethod{}, + IsInvoice{}, + AccountId{}, + SalesReturnStatus{}, + Repository{}, + QuotationStatus{}, + Currency{}, ) return err -} \ No newline at end of file +} + +type InitDefaultData interface { + InitDefaultData() error +} + +func InsertDefaultData() { + models := []interface{}{ + NewServiceTypeSearch(), + NewPriorityLevelSearch(), + NewSeveritySearch(), + NewTimeSpentSearch(), + } + for _, model := range models { + if id, ok := model.(InitDefaultData); ok { + if err := id.InitDefaultData(); err != nil { + logx.Errorf("InitDefaultData for table: %v, err :%v", model.(schema.Tabler).TableName(), err.Error()) + } + } + } +} diff --git a/model/paymentType.go b/model/paymentType.go new file mode 100644 index 0000000..e16a84a --- /dev/null +++ b/model/paymentType.go @@ -0,0 +1,140 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // PaymentType 鏀粯鏂瑰紡 + PaymentType struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // PaymentTypeSearch 鏀粯鏂瑰紡鎼滅储鏉′欢 + PaymentTypeSearch struct { + PaymentType + Orm *gorm.DB + QueryClass constvar.PaymentTypeQueryClass + KeywordType constvar.PaymentTypeKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (PaymentType) TableName() string { + return "payment_type" +} + +func NewPaymentTypeSearch() *PaymentTypeSearch { + return &PaymentTypeSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *PaymentTypeSearch) build() *gorm.DB { + var db = slf.Orm.Model(&PaymentType{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *PaymentTypeSearch) Create(record *PaymentType) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *PaymentTypeSearch) CreateBatch(records []*PaymentType) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *PaymentTypeSearch) Delete() error { + var db = slf.build() + return db.Delete(&PaymentType{}).Error +} + +func (slf *PaymentTypeSearch) Update(record *PaymentType) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *PaymentTypeSearch) FindAll() ([]*PaymentType, error) { + var db = slf.build() + var record = make([]*PaymentType, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *PaymentTypeSearch) SetId(id int) *PaymentTypeSearch { + slf.Id = id + return slf +} + +func (slf *PaymentTypeSearch) SetOrm(tx *gorm.DB) *PaymentTypeSearch { + slf.Orm = tx + return slf +} + +func (slf *PaymentTypeSearch) First() (*PaymentType, error) { + var db = slf.build() + var record = new(PaymentType) + err := db.First(record).Error + return record, err +} + +func (slf *PaymentTypeSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *PaymentTypeSearch) Save(record *PaymentType) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *PaymentTypeSearch) Find() ([]*PaymentType, int64, error) { + var db = slf.build() + var records = make([]*PaymentType, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *PaymentTypeSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*PaymentType{} + return slf.CreateBatch(records) +} diff --git a/model/priorityLevel.go b/model/priorityLevel.go new file mode 100644 index 0000000..fad265d --- /dev/null +++ b/model/priorityLevel.go @@ -0,0 +1,135 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // PriorityLevel 浼樺厛绾у埆 + PriorityLevel struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // PriorityLevelSearch 浼樺厛绾у埆鎼滅储鏉′欢 + PriorityLevelSearch struct { + PriorityLevel + Orm *gorm.DB + QueryClass constvar.PriorityLevelQueryClass + KeywordType constvar.PriorityLevelKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (PriorityLevel) TableName() string { + return "priority_level" +} + +func NewPriorityLevelSearch() *PriorityLevelSearch { + return &PriorityLevelSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *PriorityLevelSearch) build() *gorm.DB { + var db = slf.Orm.Model(&PriorityLevel{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *PriorityLevelSearch) Create(record *PriorityLevel) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *PriorityLevelSearch) CreateBatch(records []*PriorityLevel) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *PriorityLevelSearch) Delete() error { + var db = slf.build() + return db.Delete(&PriorityLevel{}).Error +} + +func (slf *PriorityLevelSearch) Update(record *PriorityLevel) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *PriorityLevelSearch) FindAll() ([]*PriorityLevel, error) { + var db = slf.build() + var record = make([]*PriorityLevel, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *PriorityLevelSearch) SetId(id int) *PriorityLevelSearch { + slf.Id = id + return slf +} + +func (slf *PriorityLevelSearch) First() (*PriorityLevel, error) { + var db = slf.build() + var record = new(PriorityLevel) + err := db.First(record).Error + return record, err +} + +func (slf *PriorityLevelSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *PriorityLevelSearch) Save(record *PriorityLevel) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *PriorityLevelSearch) Find() ([]*PriorityLevel, int64, error) { + var db = slf.build() + var records = make([]*PriorityLevel, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *PriorityLevelSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*PriorityLevel{} + return slf.CreateBatch(records) +} diff --git a/model/receipt.go b/model/receipt.go new file mode 100644 index 0000000..60d1d2a --- /dev/null +++ b/model/receipt.go @@ -0,0 +1,149 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // Receipt 鏀舵鍗� + Receipt struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + ClientId int `gorm:"client_id" json:"clientId"` // 瀹㈡埛id + SourceType int `gorm:"source_type" json:"sourceType"` // 鏉ユ簮绫诲瀷锛�1閿�鍞槑缁嗗崟2鏈嶅姟鍚堝悓3閿�鍞彂绁�4鏀舵璁″垝5鍑哄簱鍗曪級 + SourceId int `gorm:"source_id" json:"sourceId"` // 婧愬崟id + PrincipalId int `gorm:"principal_id" json:"principalId"` // 璐熻矗浜篿d + ReceiptDate string `gorm:"receipt_date" json:"receiptDate"` // 鏀舵鏃ユ湡 + MoneyType string `gorm:"money_type" json:"moneyType"` // 甯佺 + PaymentTypeId int `gorm:"payment_type_id" json:"paymentTypeId"` // 鏀舵鏂瑰紡ID + BankAccountId int `gorm:"bank_account_id" json:"bankAccountId"` // 璐︽埛id + Remark string `gorm:"remark" json:"remark"` // 澶囨敞 + FileId int `gorm:"file_id" json:"fileId"` // 闄勪欢id + } + + // ReceiptSearch 鏀舵鍗曟悳绱㈡潯浠� + ReceiptSearch struct { + Receipt + Orm *gorm.DB + QueryClass constvar.ReceiptQueryClass + KeywordType constvar.ReceiptKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (Receipt) TableName() string { + return "receipt" +} + +func NewReceiptSearch() *ReceiptSearch { + return &ReceiptSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *ReceiptSearch) build() *gorm.DB { + var db = slf.Orm.Model(&Receipt{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *ReceiptSearch) Create(record *Receipt) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *ReceiptSearch) CreateBatch(records []*Receipt) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *ReceiptSearch) Delete() error { + var db = slf.build() + return db.Delete(&Receipt{}).Error +} + +func (slf *ReceiptSearch) Update(record *Receipt) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *ReceiptSearch) FindAll() ([]*Receipt, error) { + var db = slf.build() + var record = make([]*Receipt, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *ReceiptSearch) SetId(id int) *ReceiptSearch { + slf.Id = id + return slf +} + +func (slf *ReceiptSearch) SetOrm(tx *gorm.DB) *ReceiptSearch { + slf.Orm = tx + return slf +} + +func (slf *ReceiptSearch) First() (*Receipt, error) { + var db = slf.build() + var record = new(Receipt) + err := db.First(record).Error + return record, err +} + +func (slf *ReceiptSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *ReceiptSearch) Save(record *Receipt) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *ReceiptSearch) Find() ([]*Receipt, int64, error) { + var db = slf.build() + var records = make([]*Receipt, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *ReceiptSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*Receipt{} + return slf.CreateBatch(records) +} diff --git a/model/request/bankAccount.go b/model/request/bankAccount.go new file mode 100644 index 0000000..3eed94e --- /dev/null +++ b/model/request/bankAccount.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddBankAccount struct { + model.BankAccount +} + +type UpdateBankAccount struct { + Id int `json:"id"` + model.BankAccount +} + +type GetBankAccountList struct { + PageInfo + QueryClass constvar.BankAccountQueryClass `json:"queryClass" form:"queryClass"` + KeywordType constvar.BankAccountKeywordType `json:"keywordType" form:"keywordType"` + Keyword string `json:"keyword" form:"keyword"` +} diff --git a/model/request/faq.go b/model/request/faq.go new file mode 100644 index 0000000..a7d18b7 --- /dev/null +++ b/model/request/faq.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddFaq struct { + model.Faq +} + +type UpdateFaq struct { + Id int `json:"id"` + model.Faq +} + +type GetFaqList struct { + PageInfo + QueryClass constvar.FaqQueryClass `json:"queryClass"` + KeywordType constvar.FaqKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` +} diff --git a/model/request/faultType.go b/model/request/faultType.go new file mode 100644 index 0000000..06ec614 --- /dev/null +++ b/model/request/faultType.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddFaultType struct { + model.FaultType +} + +type UpdateFaultType struct { + Id int `json:"id"` + model.FaultType +} + +type GetFaultTypeList struct { + PageInfo + QueryClass constvar.FaultTypeQueryClass `json:"queryClass"` + KeywordType constvar.FaultTypeKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` +} diff --git a/model/request/file.go b/model/request/file.go new file mode 100644 index 0000000..5b17b6b --- /dev/null +++ b/model/request/file.go @@ -0,0 +1,23 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddFile struct { + SourceType string `gorm:"source_type" json:"sourceType" form:"sourceType" binding:"required"` // 闄勪欢鏉ユ簮 + SourceId int `gorm:"source_id" json:"sourceId" form:"sourceId" binding:"required"` // 鏉ユ簮id +} + +type UpdateFile struct { + Id int `json:"id"` + model.File +} + +type GetFileList struct { + PageInfo + QueryClass constvar.FileQueryClass `json:"queryClass" form:"queryClass"` + KeywordType constvar.FileKeywordType `json:"keywordType" form:"keywordType"` + Keyword string `json:"keyword" form:"keyword"` +} diff --git a/model/request/paymentType.go b/model/request/paymentType.go new file mode 100644 index 0000000..3c9e8ae --- /dev/null +++ b/model/request/paymentType.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddPaymentType struct { + model.PaymentType +} + +type UpdatePaymentType struct { + Id int `json:"id"` + model.PaymentType +} + +type GetPaymentTypeList struct { + PageInfo + QueryClass constvar.PaymentTypeQueryClass `json:"queryClass" form:"queryClass"` + KeywordType constvar.PaymentTypeKeywordType `json:"keywordType" form:"keywordType"` + Keyword string `json:"keyword" form:"keyword"` +} diff --git a/model/request/priorityLevel.go b/model/request/priorityLevel.go new file mode 100644 index 0000000..64701ba --- /dev/null +++ b/model/request/priorityLevel.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddPriorityLevel struct { + model.PriorityLevel +} + +type UpdatePriorityLevel struct { + Id int `json:"id"` + model.PriorityLevel +} + +type GetPriorityLevelList struct { + PageInfo + QueryClass constvar.PriorityLevelQueryClass `json:"queryClass"` + KeywordType constvar.PriorityLevelKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` +} diff --git a/model/request/receipt.go b/model/request/receipt.go new file mode 100644 index 0000000..677d508 --- /dev/null +++ b/model/request/receipt.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddReceipt struct { + model.Receipt +} + +type UpdateReceipt struct { + Id int `json:"id"` + model.Receipt +} + +type GetReceiptList struct { + PageInfo + QueryClass constvar.ReceiptQueryClass `json:"queryClass" form:"queryClass"` + KeywordType constvar.ReceiptKeywordType `json:"keywordType" form:"keywordType"` + Keyword string `json:"keyword" form:"keyword"` +} diff --git a/model/request/serviceCollectionPlan.go b/model/request/serviceCollectionPlan.go new file mode 100644 index 0000000..b8e4f35 --- /dev/null +++ b/model/request/serviceCollectionPlan.go @@ -0,0 +1,18 @@ +package request + +import ( + "aps_crm/model" +) + +type AddServiceCollectionPlan struct { + List []*model.ServiceCollectionPlan +} + +type UpdateServiceCollectionPlan struct { + Id int `json:"id"` + model.ServiceCollectionPlan +} + +type GetServiceCollectionPlanList struct { + ServiceContractId int `gorm:"service_contract_id" form:"serviceContractId"` // 鏈嶅姟鍚堝悓id +} diff --git a/model/request/serviceContract.go b/model/request/serviceContract.go index eec41e6..2ad8995 100644 --- a/model/request/serviceContract.go +++ b/model/request/serviceContract.go @@ -1,6 +1,7 @@ package request import ( + "aps_crm/constvar" "aps_crm/model" ) @@ -34,7 +35,9 @@ type GetServiceContractList struct { PageInfo - Keyword string `json:"keyword"` + QueryClass constvar.ServiceContractQueryClass `json:"queryClass"` + KeywordType constvar.ServiceContractKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` } type DeleteserviceContract struct { diff --git a/model/request/serviceFeeManage.go b/model/request/serviceFeeManage.go index 17db48f..4ba0295 100644 --- a/model/request/serviceFeeManage.go +++ b/model/request/serviceFeeManage.go @@ -1,5 +1,7 @@ package request +import "aps_crm/constvar" + type AddServiceFeeManage struct { ServiceFeeManage Client @@ -20,7 +22,9 @@ type GetServiceFeeManageList struct { PageInfo - Keyword string `json:"keyword"` + QueryClass constvar.ServiceFeeQueryClass `json:"queryClass"` + KeywordType constvar.ServiceFeeKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` } type DeleteServiceFeeManage struct { diff --git a/model/request/serviceFollowup.go b/model/request/serviceFollowup.go index 861389d..e1b5764 100644 --- a/model/request/serviceFollowup.go +++ b/model/request/serviceFollowup.go @@ -1,5 +1,7 @@ package request +import "aps_crm/constvar" + type AddServiceFollowup struct { ServiceFollowup } @@ -27,7 +29,8 @@ type GetServiceFollowupList struct { PageInfo - Keyword string `json:"keyword"` + KeywordType constvar.ServiceFollowupKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` } type DeleteServiceFollowup struct { diff --git a/model/request/serviceOrder.go b/model/request/serviceOrder.go new file mode 100644 index 0000000..869fd9a --- /dev/null +++ b/model/request/serviceOrder.go @@ -0,0 +1,46 @@ +package request + +import ( + "aps_crm/constvar" +) + +type AddServiceOrder struct { + ServiceNumber string `gorm:"service_number" json:"serviceNumber"` // 鏈嶅姟鍗曠紪鍙� + ClientId int `gorm:"client_id" json:"clientId"` // 瀹㈡埛id + ContractId int `gorm:"contract_id" json:"contractId"` // 鍚堝悓id + OrderId int `gorm:"order_id" json:"orderId"` // 閿�鍞鍗昳d + Subject string `gorm:"subject" json:"subject"` // 涓婚 + ProductId int `gorm:"product_id" json:"productId"` // 浜у搧id + ServiceTypeId int `gorm:"service_type_id" json:"serviceTypeId"` // 鏈嶅姟鏂瑰紡id + ServiceManId int `gorm:"service_man_id" json:"serviceManId"` // 鏈嶅姟浜哄憳 + ContactId int `gorm:"linkman_id" json:"contactId"` // 鑱旂郴浜篿d + Address string `gorm:"address" json:"address"` // 涓婇棬鍦板潃 + PriorityLevelId int `gorm:"priority_level_id" json:"priorityLevelId"` // 浼樺厛绾у埆id + AppointmentTime string `gorm:"appointment_time" json:"appointmentTime"` // 棰勭害涓婇棬鏃堕棿 + SaleChanceId int `gorm:"sale_leads" json:"saleChanceId"` // 閿�鍞満浼歩d + FaultTypeId int `gorm:"severity_id" json:"faultTypeId"` // 鏁呴殰绫诲埆id + SeverityId int `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害id + Status int `gorm:"status" json:"status"` // 澶勭悊鐘舵�� + ExpectTime string `gorm:"expect_time" json:"expectTime"` // 甯屾湜澶勭悊鏃堕棿 + RealTime string `gorm:"real_time" json:"realTime"` // 瀹為檯澶勭悊鏃堕棿 + CarFare float64 `gorm:"car_fare" json:"carFare"` // 浜ら�氳垂 + ChargeAmount float64 `gorm:"charge_amount" json:"chargeAmount"` // 鏀惰垂閲戦 + TimeSpentId int `gorm:"time_spent_id" json:"timeSpentId"` // 鑺辫垂鏃堕棿 + FaqId int `gorm:"problem_id" json:"faqId"` // 甯歌闂id + ProblemDesc string `gorm:"problem_desc" json:"problemDesc"` // 闂鎻忚堪 + Solution string `gorm:"solution" json:"solution"` // 瑙e喅鏂规硶 + SolutionRemark string `gorm:"solution_remark" json:"solutionRemark"` // 鍐呴儴澶囨敞 + Remark string `gorm:"remark" json:"remark"` // 澶囨敞 +} + +type UpdateServiceOrder struct { + Id int `json:"id"` + AddServiceOrder +} + +type GetServiceOrderList struct { + PageInfo + QueryClass constvar.ServiceOrderQueryClass `json:"queryClass"` + KeywordType constvar.ServiceOrderKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` +} diff --git a/model/request/serviceType.go b/model/request/serviceType.go new file mode 100644 index 0000000..2eee204 --- /dev/null +++ b/model/request/serviceType.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddServiceType struct { + model.ServiceType +} + +type UpdateServiceType struct { + Id int `json:"id"` + model.ServiceType +} + +type GetServiceTypeList struct { + PageInfo + QueryClass constvar.ServiceTypeQueryClass `json:"queryClass"` + KeywordType constvar.ServiceTypeKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` +} diff --git a/model/request/severity.go b/model/request/severity.go new file mode 100644 index 0000000..70c5eb7 --- /dev/null +++ b/model/request/severity.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddSeverity struct { + model.Severity +} + +type UpdateSeverity struct { + Id int `json:"id"` + model.Severity +} + +type GetSeverityList struct { + PageInfo + QueryClass constvar.SeverityQueryClass `json:"queryClass"` + KeywordType constvar.SeverityKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` +} diff --git a/model/request/timeSpent.go b/model/request/timeSpent.go new file mode 100644 index 0000000..120461a --- /dev/null +++ b/model/request/timeSpent.go @@ -0,0 +1,22 @@ +package request + +import ( + "aps_crm/constvar" + "aps_crm/model" +) + +type AddTimeSpent struct { + model.TimeSpent +} + +type UpdateTimeSpent struct { + Id int `json:"id"` + model.TimeSpent +} + +type GetTimeSpentList struct { + PageInfo + QueryClass constvar.TimeSpentQueryClass `json:"queryClass"` + KeywordType constvar.TimeSpentKeywordType `json:"keywordType"` + Keyword string `json:"keyword"` +} diff --git a/model/response/common.go b/model/response/common.go index b2cbd5a..03433be 100644 --- a/model/response/common.go +++ b/model/response/common.go @@ -6,3 +6,10 @@ Page int `json:"page"` PageSize int `json:"pageSize"` } + +type ListResponse struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` + Count int64 `json:"count"` +} diff --git a/model/serviceCollectionPlan.go b/model/serviceCollectionPlan.go new file mode 100644 index 0000000..be9da1b --- /dev/null +++ b/model/serviceCollectionPlan.go @@ -0,0 +1,159 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // ServiceCollectionPlan 鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlan struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + CollectionType int `gorm:"collection_type" json:"collectionType"` // 绫诲瀷锛�1 璁″垝鏀舵鏃ユ湡 2 椤圭洰鐘舵�侊級 + ServiceContractId int `gorm:"service_contract_id" json:"serviceContractId"` // 鏈嶅姟鍚堝悓id + PrincipalId int `gorm:"principal_id" json:"principalId"` // 鏀舵璐熻矗浜篒D + Term int `gorm:"term" json:"term"` // 鏈熸 + Percent float64 `gorm:"percent" json:"percent"` // 姣斾緥 + Amount float64 `gorm:"amount" json:"amount"` // 閲戦 + MoneyType string `gorm:"money_type" json:"moneyType"` // 甯佺 + CollectionDate string `gorm:"collection_date" json:"collectionDate"` // 璁″垝鏀舵鏃ユ湡 + Remark string `gorm:"remark" json:"remark"` // 澶囨敞 + Status int `gorm:"status" json:"status"` // 鐘舵�侊紙1鏈敹2宸叉敹锛� + FileId int `gorm:"file_id" json:"fileId"` // 闄勪欢id + } + + // ServiceCollectionPlanSearch 鏈嶅姟鍚堝悓鏀舵璁″垝鎼滅储鏉′欢 + ServiceCollectionPlanSearch struct { + ServiceCollectionPlan + Orm *gorm.DB + QueryClass constvar.ServiceCollectionPlanQueryClass + KeywordType constvar.ServiceCollectionPlanKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (ServiceCollectionPlan) TableName() string { + return "service_collection_plan" +} + +func NewServiceCollectionPlanSearch() *ServiceCollectionPlanSearch { + return &ServiceCollectionPlanSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *ServiceCollectionPlanSearch) build() *gorm.DB { + var db = slf.Orm.Model(&ServiceCollectionPlan{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + if slf.ServiceContractId != 0 { + db = db.Where("service_contract_id = ?", slf.ServiceContractId) + } + + return db +} + +func (slf *ServiceCollectionPlanSearch) Create(record *ServiceCollectionPlan) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *ServiceCollectionPlanSearch) CreateBatch(records []*ServiceCollectionPlan) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *ServiceCollectionPlanSearch) Delete() error { + var db = slf.build() + return db.Delete(&ServiceCollectionPlan{}).Error +} + +func (slf *ServiceCollectionPlanSearch) Update(record *ServiceCollectionPlan) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *ServiceCollectionPlanSearch) FindAll() ([]*ServiceCollectionPlan, error) { + var db = slf.build() + var record = make([]*ServiceCollectionPlan, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *ServiceCollectionPlanSearch) SetId(id int) *ServiceCollectionPlanSearch { + slf.Id = id + return slf +} + +func (slf *ServiceCollectionPlanSearch) SetOrm(tx *gorm.DB) *ServiceCollectionPlanSearch { + slf.Orm = tx + return slf +} + +func (slf *ServiceCollectionPlanSearch) SetServiceContractId(id int) *ServiceCollectionPlanSearch { + slf.ServiceContractId = id + return slf +} + +func (slf *ServiceCollectionPlanSearch) First() (*ServiceCollectionPlan, error) { + var db = slf.build() + var record = new(ServiceCollectionPlan) + err := db.First(record).Error + return record, err +} + +func (slf *ServiceCollectionPlanSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *ServiceCollectionPlanSearch) Save(record *ServiceCollectionPlan) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *ServiceCollectionPlanSearch) Find() ([]*ServiceCollectionPlan, int64, error) { + var db = slf.build() + var records = make([]*ServiceCollectionPlan, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *ServiceCollectionPlanSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*ServiceCollectionPlan{} + return slf.CreateBatch(records) +} diff --git a/model/serviceContract.go b/model/serviceContract.go index c9f415a..5b20512 100644 --- a/model/serviceContract.go +++ b/model/serviceContract.go @@ -1,6 +1,7 @@ package model import ( + "aps_crm/constvar" "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" @@ -31,11 +32,13 @@ ServiceContractSearch struct { ServiceContract - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int + Orm *gorm.DB + QueryClass constvar.ServiceContractQueryClass + KeywordType constvar.ServiceContractKeywordType + Keyword interface{} + OrderBy string + PageNum int + PageSize int } ) @@ -51,14 +54,43 @@ func (slf *ServiceContractSearch) build() *gorm.DB { var db = slf.Orm.Model(&ServiceContract{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } if slf.Id != 0 { db = db.Where("id = ?", slf.Id) + } + switch slf.QueryClass { + case constvar.ServiceContractQueryClassExpireAfter30Day: + db = db.Where("end_time > ?", time.Now(), time.Now().AddDate(0, 0, 30)) + case constvar.ServiceContractQueryClassExpireAfter60Day: + db = db.Where("end_time > ?", time.Now(), time.Now().AddDate(0, 0, 60)) + case constvar.ServiceContractQueryClassExpiredBefore15Day: + db = db.Where("end_time < ?", time.Now().AddDate(0, 0, -15)) + case constvar.ServiceContractQueryClassExpiredBefore60Day: + db = db.Where("end_time < ?", time.Now().AddDate(0, 0, -60)) + + } + switch slf.KeywordType { + case constvar.ServiceContractKeywordContractNo: + db = db.Where("number = ?", slf.Keyword) + case constvar.ServiceContractKeywordCustomerName: + db = db.Where("client_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordContractDate: + db = db.Where("sign_time = ?", slf.Keyword) + case constvar.ServiceContractKeywordContractType: + db = db.Where("service_contract_type_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordContractStatus: + db = db.Where("service_contract_status_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordPrincipal: + db = db.Where("member_id = ?", slf.Keyword) + case constvar.ServiceContractKeywordProductName: + subQuery := db.Table("service_contract_id").Select("product_id").Where("product_id = ?", slf.Keyword) + db = db.Where("id = ?", subQuery) + case constvar.ServiceContractKeywordServiceBeginDate: + db = db.Where("start_time = ?", slf.Keyword) + case constvar.ServiceContractKeywordServiceEndDate: + db = db.Where("end_time = ?", slf.Keyword) + case constvar.ServiceContractKeywordServiceTotalPrice: + //todo + } return db @@ -110,6 +142,16 @@ return slf } +func (slf *ServiceContractSearch) SetKeywordType(keyword constvar.ServiceContractKeywordType) *ServiceContractSearch { + slf.KeywordType = keyword + return slf +} + +func (slf *ServiceContractSearch) SetQueryClass(queryClass constvar.ServiceContractQueryClass) *ServiceContractSearch { + slf.QueryClass = queryClass + return slf +} + func (slf *ServiceContractSearch) SetKeyword(keyword string) *ServiceContractSearch { slf.Keyword = keyword return slf diff --git a/model/serviceFeeManage.go b/model/serviceFeeManage.go index 4cea8e9..16ec527 100644 --- a/model/serviceFeeManage.go +++ b/model/serviceFeeManage.go @@ -1,6 +1,7 @@ package model import ( + "aps_crm/constvar" "aps_crm/pkg/mysqlx" "gorm.io/gorm" "time" @@ -20,13 +21,13 @@ ServiceFeeManageSearch struct { ServiceFeeManage - - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int - + Orm *gorm.DB + QueryClass constvar.ServiceFeeQueryClass + KeywordType constvar.ServiceFeeKeywordType + Keyword string + OrderBy string + PageNum int + PageSize int } ) @@ -46,14 +47,54 @@ func (slf *ServiceFeeManageSearch) build() *gorm.DB { var db = slf.Orm.Model(&ServiceFeeManage{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } if slf.Id != 0 { db.Where("id = ?", slf.Id) } if slf.ClientId != 0 { db.Where("client_id = ?", slf.ClientId) + } + switch slf.QueryClass { + case constvar.ServiceFeeQueryClassExpireLessThen60Days: + db = db.Where("latest_date > ? and latest_date < ?", time.Now(), time.Now().AddDate(0, 0, 60)) + case constvar.ServiceFeeQueryClassExpireLessThen30Days: + db = db.Where("latest_date > ? and latest_date < ?", time.Now(), time.Now().AddDate(0, 0, 30)) + case constvar.ServiceFeeQueryClassExpireAboutTo60Day: + db = db.Where("latest_date = ?", time.Now().AddDate(0, 0, -60)) + case constvar.ServiceFeeQueryClassExpireAboutTo30Day: + db = db.Where("latest_date = ?", time.Now().AddDate(0, 0, -30)) + case constvar.ServiceFeeQueryClassExpired: + db = db.Where("latest_date < ?", time.Now()) + case constvar.ServiceFeeQueryClassNoService: + db = db.Where("latest_date < ?", time.Now().AddDate(0, 0, -60)) + + } + + switch slf.KeywordType { + case constvar.ServiceFeeKeywordCustomerName: + db.Joins("left join clients on clients.id = service_fee_manage.client_id") + db = db.Where("clients.name = ?", slf.Keyword) + case constvar.ServiceFeeKeywordCustomerType: + db.Joins("left join clients on clients.id = service_fee_manage.client_id") + db = db.Where("clients.client_type_id = ?", slf.Keyword) + case constvar.ServiceFeeKeywordSalesPrincipal: + db.Joins("left join clients on clients.id = service_fee_manage.client_id") + db = db.Where("clients.member_id = ?", slf.Keyword) + case constvar.ServiceFeeKeywordCustomerScale: + db.Joins("left join clients on clients.id = service_fee_manage.client_id") + db = db.Where("clients.enterprise_scale_id = ?", slf.Keyword) + case constvar.ServiceFeeKeywordClientLevel: + db.Joins("left join clients on clients.id = service_fee_manage.client_id") + db = db.Where("clients.client_level_id = ?", slf.Keyword) + case constvar.ServiceFeeKeywordCustomerNo: + db.Joins("left join clients on clients.id = service_fee_manage.client_id") + db = db.Where("clients.number = ?", slf.Keyword) + case constvar.ServiceFeeKeywordCustomerStatus: + db.Joins("left join clients on clients.id = service_fee_manage.client_id") + db = db.Where("clients.client_status_id = ?", slf.Keyword) + case constvar.ServiceFeeKeywordServiceEndDate: + db = db.Where("latest_date = ?", slf.Keyword) + case constvar.ServiceFeeKeywordProductName: + //todo } return db @@ -76,6 +117,21 @@ func (slf *ServiceFeeManageSearch) SetId(id int) *ServiceFeeManageSearch { slf.Id = id + return slf +} + +func (slf *ServiceFeeManageSearch) SetKeywordType(keyword constvar.ServiceFeeKeywordType) *ServiceFeeManageSearch { + slf.KeywordType = keyword + return slf +} + +func (slf *ServiceFeeManageSearch) SetQueryClass(queryClass constvar.ServiceFeeQueryClass) *ServiceFeeManageSearch { + slf.QueryClass = queryClass + return slf +} + +func (slf *ServiceFeeManageSearch) SetKeyword(keyword string) *ServiceFeeManageSearch { + slf.Keyword = keyword return slf } @@ -103,11 +159,6 @@ err := db.Preload("Client").Find(&records).Error return records, total, err -} - -func (slf *ServiceFeeManageSearch) SetKeyword(keyword string) *ServiceFeeManageSearch { - slf.Keyword = keyword - return slf } func (slf *ServiceFeeManageSearch) SetPage(page, size int) *ServiceFeeManageSearch { diff --git a/model/serviceFollowup.go b/model/serviceFollowup.go index 118ae24..d2d4ada 100644 --- a/model/serviceFollowup.go +++ b/model/serviceFollowup.go @@ -1,6 +1,7 @@ package model import ( + "aps_crm/constvar" "aps_crm/pkg/mysqlx" "gorm.io/gorm" ) @@ -12,6 +13,7 @@ Number string `json:"number" gorm:"column:number;type:varchar(255);comment:鍚堝悓缂栧彿"` ContactId int `json:"contactId" gorm:"column:contact_id;type:int;comment:鑱旂郴浜篿d"` ServiceId int `json:"serviceId" gorm:"column:service_id;type:int;comment:瀹㈡埛鏈嶅姟鍗昳d"` + ServiceOrder ServiceOrder `gorm:"foreignKey:ServiceId"` CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"` MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:鏈嶅姟浜哄憳id"` PlanId int `json:"planId" gorm:"column:plan_id;type:int;comment:鏈嶅姟璁″垝id"` @@ -28,13 +30,12 @@ ServiceFollowupSearch struct { ServiceFollowup - - Orm *gorm.DB - Keyword string - OrderBy string - PageNum int - PageSize int - + Orm *gorm.DB + KeywordType constvar.ServiceFollowupKeywordType + Keyword interface{} + OrderBy string + PageNum int + PageSize int } ) @@ -50,11 +51,24 @@ func (slf *ServiceFollowupSearch) build() *gorm.DB { var db = slf.Orm.Model(&ServiceFollowup{}) - if slf.Keyword != "" { - db = db.Where("name LIKE ?", "%"+slf.Keyword+"%") - } if slf.Id != 0 { db = db.Where("id = ?", slf.Id) + } + + switch slf.KeywordType { + case constvar.ServiceFollowupKeywordFollowupNo: + db = db.Where("number = ?", slf.Keyword) + case constvar.ServiceFollowupKeywordCustomerName: + db = db.Where("client_id = ?", slf.Keyword) + case constvar.ServiceFollowupKeywordContactName: + db = db.Where("contact_id = ?", slf.Keyword) + case constvar.ServiceFollowupKeywordCustomerServiceNo: + db = db.Where("service_id = ?", slf.Keyword) + case constvar.ServiceFollowupKeywordVisitor: + db = db.Where("member_id = ?", slf.Keyword) + case constvar.ServiceFollowupKeywordSatisfactionDegree: + db = db.Where("satisfaction_id = ?", slf.Keyword) + } return db @@ -97,7 +111,7 @@ db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) } - err := db.Preload("CustomerServiceSheet").Find(&records).Error + err := db.Preload("CustomerServiceSheet").Preload("ServiceOrder").Find(&records).Error return records, total, err } @@ -106,7 +120,10 @@ return slf } -// 鍙兘鎬� 甯佺 褰撳墠鐘舵�侊紙閿�鍞満浼氾級 +func (slf *ServiceFollowupSearch) SetKeywordType(keyword constvar.ServiceFollowupKeywordType) *ServiceFollowupSearch { + slf.KeywordType = keyword + return slf +} func (slf *ServiceFollowupSearch) SetKeyword(keyword string) *ServiceFollowupSearch { slf.Keyword = keyword diff --git a/model/serviceOrder.go b/model/serviceOrder.go new file mode 100644 index 0000000..4e30c5a --- /dev/null +++ b/model/serviceOrder.go @@ -0,0 +1,171 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // ServiceOrder 鏈嶅姟鍗� + ServiceOrder struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + ServiceNumber string `gorm:"service_number" json:"serviceNumber"` // 鏈嶅姟鍗曠紪鍙� + ClientId int `gorm:"client_id" json:"clientId"` // 瀹㈡埛id + Client Client `gorm:"foreignKey:ClientId"` + ContractId int `gorm:"contract_id" json:"contractId"` // 鍚堝悓id + Contract Contract `gorm:"foreignKey:ContractId"` + OrderId int `gorm:"order_id" json:"orderId"` // 閿�鍞鍗昳d + OrderManage OrderManage `gorm:"foreignKey:OrderId"` + Subject string `gorm:"subject" json:"subject"` // 涓婚 + ProductId int `gorm:"product_id" json:"productId"` // 浜у搧id + Product Product `gorm:"foreignKey:ProductId"` + ServiceTypeId int `gorm:"service_type_id" json:"serviceTypeId"` // 鏈嶅姟鏂瑰紡id + ServiceType ServiceType `gorm:"foreignKey:ServiceTypeId"` + ServiceManId int `gorm:"service_man_id" json:"serviceManId"` // 鏈嶅姟浜哄憳 + ContactId int `gorm:"linkman_id" json:"contactId"` // 鑱旂郴浜篿d + Contact Contact `gorm:"foreignKey:ContactId"` + Address string `gorm:"address" json:"address"` // 涓婇棬鍦板潃 + PriorityLevelId int `gorm:"priority_level_id" json:"priorityLevelId"` // 浼樺厛绾у埆id + PriorityLevel PriorityLevel `gorm:"foreignKey:PriorityLevelId"` + AppointmentTime string `gorm:"appointment_time" json:"appointmentTime"` // 棰勭害涓婇棬鏃堕棿 + SaleChanceId int `gorm:"sale_leads" json:"saleChanceId"` // 閿�鍞満浼歩d + + SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"` + FaultTypeId int `gorm:"severity_id" json:"faultTypeId"` // 鏁呴殰绫诲埆id + FaultType FaultType `gorm:"foreignKey:FaultTypeId"` + SeverityId int `gorm:"severity_id" json:"severity"` // 涓ラ噸绋嬪害id + Severity Severity `gorm:"foreignKey:SeverityId"` + Status int `gorm:"status" json:"status"` // 澶勭悊鐘舵�� + ExpectTime string `gorm:"expect_time" json:"expectTime"` // 甯屾湜澶勭悊鏃堕棿 + RealTime string `gorm:"real_time" json:"realTime"` // 瀹為檯澶勭悊鏃堕棿 + CarFare float64 `gorm:"car_fare" json:"carFare"` // 浜ら�氳垂 + ChargeAmount float64 `gorm:"charge_amount" json:"chargeAmount"` // 鏀惰垂閲戦 + TimeSpentId int `gorm:"time_spent_id" json:"timeSpentId"` // 鑺辫垂鏃堕棿 + TimeSpent TimeSpent `gorm:"foreignKey:TimeSpentId"` + FaqId int `gorm:"problem_id" json:"faqId"` // 甯歌闂id + Faq Faq `gorm:"foreignKey:FaqId"` + ProblemDesc string `gorm:"problem_desc" json:"problemDesc"` // 闂鎻忚堪 + Solution string `gorm:"solution" json:"solution"` // 瑙e喅鏂规硶 + SolutionRemark string `gorm:"solution_remark" json:"solutionRemark"` // 鍐呴儴澶囨敞 + Remark string `gorm:"remark" json:"remark"` // 澶囨敞 + } + + // ServiceOrderSearch 鏈嶅姟鍗曟悳绱㈡潯浠� + ServiceOrderSearch struct { + ServiceOrder + Orm *gorm.DB + QueryClass constvar.ServiceOrderQueryClass + KeywordType constvar.ServiceOrderKeywordType + Keyword string + PageNum int + PageSize int + Preload bool + } +) + +func (ServiceOrder) TableName() string { + return "service_order" +} + +func NewServiceOrderSearch() *ServiceOrderSearch { + return &ServiceOrderSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *ServiceOrderSearch) build() *gorm.DB { + var db = slf.Orm.Model(&ServiceOrder{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + if slf.Preload { + db = db. + Preload("Client"). + Preload("Contract"). + Preload("OrderManage"). + Preload("Product"). + Preload("ServiceType"). + Preload("Contact"). + Preload("SaleChance"). + Preload("PriorityLevel"). + Preload("Severity"). + Preload("Faq") + } + + return db +} + +func (slf *ServiceOrderSearch) Create(record *ServiceOrder) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *ServiceOrderSearch) Delete() error { + var db = slf.build() + return db.Delete(&ServiceOrder{}).Error +} + +func (slf *ServiceOrderSearch) Update(record *ServiceOrder) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *ServiceOrderSearch) FindAll() ([]*ServiceOrder, error) { + var db = slf.build() + var record = make([]*ServiceOrder, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *ServiceOrderSearch) SetId(id int) *ServiceOrderSearch { + slf.Id = id + return slf +} + +func (slf *ServiceOrderSearch) SetPreload(preload bool) *ServiceOrderSearch { + slf.Preload = preload + return slf +} + +func (slf *ServiceOrderSearch) First() (*ServiceOrder, error) { + var db = slf.build() + var record = new(ServiceOrder) + err := db.First(record).Error + return record, err +} + +func (slf *ServiceOrderSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *ServiceOrderSearch) Save(record *ServiceOrder) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *ServiceOrderSearch) Find() ([]*ServiceOrder, int64, error) { + var db = slf.build() + var records = make([]*ServiceOrder, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} diff --git a/model/serviceType.go b/model/serviceType.go new file mode 100644 index 0000000..e5f7214 --- /dev/null +++ b/model/serviceType.go @@ -0,0 +1,135 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // ServiceType 鏈嶅姟鏂瑰紡 + ServiceType struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // ServiceTypeSearch 鏈嶅姟鏂瑰紡鎼滅储鏉′欢 + ServiceTypeSearch struct { + ServiceType + Orm *gorm.DB + QueryClass constvar.ServiceTypeQueryClass + KeywordType constvar.ServiceTypeKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (ServiceType) TableName() string { + return "service_type" +} + +func NewServiceTypeSearch() *ServiceTypeSearch { + return &ServiceTypeSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *ServiceTypeSearch) build() *gorm.DB { + var db = slf.Orm.Model(&ServiceType{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *ServiceTypeSearch) Create(record *ServiceType) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *ServiceTypeSearch) CreateBatch(records []*ServiceType) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *ServiceTypeSearch) Delete() error { + var db = slf.build() + return db.Delete(&ServiceType{}).Error +} + +func (slf *ServiceTypeSearch) Update(record *ServiceType) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *ServiceTypeSearch) FindAll() ([]*ServiceType, error) { + var db = slf.build() + var record = make([]*ServiceType, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *ServiceTypeSearch) SetId(id int) *ServiceTypeSearch { + slf.Id = id + return slf +} + +func (slf *ServiceTypeSearch) First() (*ServiceType, error) { + var db = slf.build() + var record = new(ServiceType) + err := db.First(record).Error + return record, err +} + +func (slf *ServiceTypeSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *ServiceTypeSearch) Save(record *ServiceType) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *ServiceTypeSearch) Find() ([]*ServiceType, int64, error) { + var db = slf.build() + var records = make([]*ServiceType, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *ServiceTypeSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*ServiceType{} + return slf.CreateBatch(records) +} diff --git a/model/severity.go b/model/severity.go new file mode 100644 index 0000000..291daa3 --- /dev/null +++ b/model/severity.go @@ -0,0 +1,135 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // Severity 涓ラ噸绋嬪害 + Severity struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // SeveritySearch 涓ラ噸绋嬪害鎼滅储鏉′欢 + SeveritySearch struct { + Severity + Orm *gorm.DB + QueryClass constvar.SeverityQueryClass + KeywordType constvar.SeverityKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (Severity) TableName() string { + return "severity" +} + +func NewSeveritySearch() *SeveritySearch { + return &SeveritySearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *SeveritySearch) build() *gorm.DB { + var db = slf.Orm.Model(&Severity{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *SeveritySearch) Create(record *Severity) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *SeveritySearch) CreateBatch(records []*Severity) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *SeveritySearch) Delete() error { + var db = slf.build() + return db.Delete(&Severity{}).Error +} + +func (slf *SeveritySearch) Update(record *Severity) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *SeveritySearch) FindAll() ([]*Severity, error) { + var db = slf.build() + var record = make([]*Severity, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *SeveritySearch) SetId(id int) *SeveritySearch { + slf.Id = id + return slf +} + +func (slf *SeveritySearch) First() (*Severity, error) { + var db = slf.build() + var record = new(Severity) + err := db.First(record).Error + return record, err +} + +func (slf *SeveritySearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *SeveritySearch) Save(record *Severity) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *SeveritySearch) Find() ([]*Severity, int64, error) { + var db = slf.build() + var records = make([]*Severity, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *SeveritySearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*Severity{} + return slf.CreateBatch(records) +} diff --git a/model/timeSpent.go b/model/timeSpent.go new file mode 100644 index 0000000..de29623 --- /dev/null +++ b/model/timeSpent.go @@ -0,0 +1,135 @@ +package model + +import ( + "aps_crm/constvar" + "aps_crm/pkg/mysqlx" + "errors" + "fmt" + "gorm.io/gorm" +) + +type ( + // TimeSpent 鑺辫垂鏃堕棿 + TimeSpent struct { + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + Name string `json:"name" gorm:"column:name"` + } + + // TimeSpentSearch 鑺辫垂鏃堕棿鎼滅储鏉′欢 + TimeSpentSearch struct { + TimeSpent + Orm *gorm.DB + QueryClass constvar.TimeSpentQueryClass + KeywordType constvar.TimeSpentKeywordType + Keyword string + PageNum int + PageSize int + } +) + +func (TimeSpent) TableName() string { + return "time_spent" +} + +func NewTimeSpentSearch() *TimeSpentSearch { + return &TimeSpentSearch{ + Orm: mysqlx.GetDB(), + } +} + +func (slf *TimeSpentSearch) build() *gorm.DB { + var db = slf.Orm.Model(&TimeSpent{}) + if slf.Id != 0 { + db = db.Where("id = ?", slf.Id) + } + + return db +} + +func (slf *TimeSpentSearch) Create(record *TimeSpent) error { + var db = slf.build() + return db.Create(record).Error +} + +func (slf *TimeSpentSearch) CreateBatch(records []*TimeSpent) error { + var db = slf.build() + return db.Create(records).Error +} + +func (slf *TimeSpentSearch) Delete() error { + var db = slf.build() + return db.Delete(&TimeSpent{}).Error +} + +func (slf *TimeSpentSearch) Update(record *TimeSpent) error { + var db = slf.build() + return db.Updates(record).Error +} + +func (slf *TimeSpentSearch) FindAll() ([]*TimeSpent, error) { + var db = slf.build() + var record = make([]*TimeSpent, 0) + err := db.Find(&record).Error + return record, err +} + +func (slf *TimeSpentSearch) SetId(id int) *TimeSpentSearch { + slf.Id = id + return slf +} + +func (slf *TimeSpentSearch) First() (*TimeSpent, error) { + var db = slf.build() + var record = new(TimeSpent) + err := db.First(record).Error + return record, err +} + +func (slf *TimeSpentSearch) Updates(values interface{}) error { + var db = slf.build() + return db.Updates(values).Error +} + +func (slf *TimeSpentSearch) Save(record *TimeSpent) error { + if record.Id == 0 { + return errors.New("id涓虹┖") + } + var db = slf.build() + + if err := db.Save(record).Error; err != nil { + return fmt.Errorf("save err: %v, record: %+v", err, record) + } + + return nil +} + +func (slf *TimeSpentSearch) Find() ([]*TimeSpent, int64, error) { + var db = slf.build() + var records = make([]*TimeSpent, 0) + var total int64 + if err := db.Count(&total).Error; err != nil { + return records, total, err + } + if slf.PageNum > 0 && slf.PageSize > 0 { + db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) + } + + err := db.Find(&records).Error + return records, total, err +} + +// InitDefaultData 鍒濆鍖栨暟鎹� +func (slf *TimeSpentSearch) InitDefaultData() error { + var ( + db = slf.Orm.Table(slf.TableName()) + total int64 = 0 + ) + if err := db.Count(&total).Error; err != nil { + return err + } + if total != 0 { + return nil + } + records := []*TimeSpent{} + return slf.CreateBatch(records) +} diff --git a/pkg/contextx/contextx.go b/pkg/contextx/contextx.go index ff1d839..95a29c6 100644 --- a/pkg/contextx/contextx.go +++ b/pkg/contextx/contextx.go @@ -83,6 +83,10 @@ slf.Result(errCode, map[string]interface{}{}, ecode.GetMsg(errCode)) } +func (slf *Context) FailWithMsg(errCode int, msg string) { + slf.Result(errCode, map[string]interface{}{}, msg) +} + func (slf *Context) FailWithDetailed(errCode int, data interface{}) { slf.Result(errCode, data, ecode.GetMsg(errCode)) } diff --git a/pkg/httpx/httpx.go b/pkg/httpx/httpx.go index 94336ff..00ed1c4 100644 --- a/pkg/httpx/httpx.go +++ b/pkg/httpx/httpx.go @@ -5,6 +5,7 @@ "encoding/json" "io/ioutil" "net/http" + "os" "time" ) @@ -39,3 +40,16 @@ } return respBytes, nil } + +func GetMimeType(filePath string) string { + file, err := os.Open(filePath) + if err != nil { + return "" + } + buffer := make([]byte, 512) + _, _ = file.Read(buffer) + if len(buffer) == 0 { + return "" + } + return http.DetectContentType(buffer) +} diff --git a/pkg/safe/safe.go b/pkg/safe/safe.go index 95855cf..a3e4ee4 100644 --- a/pkg/safe/safe.go +++ b/pkg/safe/safe.go @@ -1,7 +1,7 @@ package safe import ( - "aps_admin/pkg/logx" + "aps_crm/pkg/logx" "runtime/debug" ) diff --git a/pkg/structx/structx.go b/pkg/structx/structx.go new file mode 100644 index 0000000..e038656 --- /dev/null +++ b/pkg/structx/structx.go @@ -0,0 +1,16 @@ +package structx + +import "encoding/json" + +func AssignTo(from interface{}, to interface{}) error { + data, err := json.Marshal(from) + if err != nil { + return err + } + + err = json.Unmarshal(data, to) + if err != nil { + return err + } + return nil +} diff --git a/router/bankAccount.go b/router/bankAccount.go new file mode 100644 index 0000000..d5adf98 --- /dev/null +++ b/router/bankAccount.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitBankAccountRouter(router *gin.RouterGroup) { + BankAccountRouter := router.Group("bankAccount") + BankAccountApi := v1.BankAccountApi{} + { + BankAccountRouter.POST("add", BankAccountApi.Add) // 娣诲姞閾惰璐︽埛 + BankAccountRouter.DELETE("delete/:id", BankAccountApi.Delete) // 鍒犻櫎閾惰璐︽埛 + BankAccountRouter.PUT("update", BankAccountApi.Update) // 鏇存柊閾惰璐︽埛 + BankAccountRouter.GET("list", BankAccountApi.List) // 鑾峰彇閾惰璐︽埛鍒楄〃 + } +} diff --git a/router/faq.go b/router/faq.go new file mode 100644 index 0000000..7d13fd1 --- /dev/null +++ b/router/faq.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitFaqRouter(router *gin.RouterGroup) { + FaqRouter := router.Group("faq") + FaqApi := v1.FaqApi{} + { + FaqRouter.POST("add", FaqApi.Add) // 娣诲姞甯歌闂 + FaqRouter.DELETE("delete/:id", FaqApi.Delete) // 鍒犻櫎甯歌闂 + FaqRouter.PUT("update", FaqApi.Update) // 鏇存柊甯歌闂 + FaqRouter.GET("list", FaqApi.List) // 鑾峰彇甯歌闂鍒楄〃 + } +} diff --git a/router/faultType.go b/router/faultType.go new file mode 100644 index 0000000..4d8d1d5 --- /dev/null +++ b/router/faultType.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitFaultTypeRouter(router *gin.RouterGroup) { + FaultTypeRouter := router.Group("faultType") + FaultTypeApi := v1.FaultTypeApi{} + { + FaultTypeRouter.POST("add", FaultTypeApi.Add) // 娣诲姞鏁呴殰绫诲埆 + FaultTypeRouter.DELETE("delete/:id", FaultTypeApi.Delete) // 鍒犻櫎鏁呴殰绫诲埆 + FaultTypeRouter.PUT("update", FaultTypeApi.Update) // 鏇存柊鏁呴殰绫诲埆 + FaultTypeRouter.GET("list", FaultTypeApi.List) // 鑾峰彇鏁呴殰绫诲埆鍒楄〃 + } +} diff --git a/router/file.go b/router/file.go new file mode 100644 index 0000000..60757b4 --- /dev/null +++ b/router/file.go @@ -0,0 +1,15 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitFileRouter(router *gin.RouterGroup) { + FileRouter := router.Group("file") + FileApi := v1.FileApi{} + { + FileRouter.POST("add", FileApi.Add) // 娣诲姞闄勪欢 + FileRouter.DELETE("delete/:id", FileApi.Delete) // 鍒犻櫎闄勪欢 + } +} diff --git a/router/index.go b/router/index.go index 7062b5a..e40f7c7 100644 --- a/router/index.go +++ b/router/index.go @@ -1,164 +1,174 @@ -package router - -import ( - "aps_crm/conf" - _ "aps_crm/docs" - "github.com/gin-contrib/cors" - "github.com/gin-gonic/gin" - swaggerFiles "github.com/swaggo/files" - ginSwagger "github.com/swaggo/gin-swagger" - "net/http" -) - -type Group struct { - CurrencyRouter - QuotationStatusRouter - RepositoryRouter - SalesReturnStatusRouter - AccountIdRouter - IsInvoiceRouter - RefundMethodRouter - ServiceContractTypeRouter - ServiceContractStatusRouter - OrderTypeRouter - ReportSourceRouter - IsVisitRouter - SolveRateRouter - TimelyRateRouter - BaseRouter - UserRouter - JwtRouter - CountryRouter - ProvinceRouter - CityRouter - RegionRouter - ContactRouter - ClientRouter - ClientStatusRouter - ClientTypeRouter - ClientOriginRouter - ClientLevelRouter - IndustryRouter - EnterpriseNatureRouter - RegisteredCapitalRouter - EnterpriseScaleRouter - SalesLeadsRouter - SalesSourcesRouter - FollowRecordRouter - SaleChanceRouter - SaleStageRouter - SaleTypeRouter - RegularCustomersRouter - PossibilityRouter - StatusRouter - QuotationRouter - MasterOrderRouter - SubOrderRouter - SalesDetailsRouter - SalesReturnRouter - SalesRefundRouter - ContractRouter - PlanRouter - ServiceContractRouter - OrderManageRouter - ServiceFollowupRouter - CustomerServiceSheetRouter - ServiceFeeManageRouter - AuthorityRouter - MenuRouter - DataRouter - DepartmentRouter - SatisfactionRouter - AssignRouter -} - -func InitRouter() *gin.Engine { - gin.SetMode(gin.ReleaseMode) - - Router := gin.Default() - Router.Use(gin.Recovery()) - if conf.Conf.System.Env == "develop" { - Router.Use(gin.Logger()) - } - Router.Use(cors.Default()) - Router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) - - routerGroup := new(Group) - PublicGroup := Router.Group("api") - { - // 鍋ュ悍鐩戞祴 - PublicGroup.GET("/health", func(c *gin.Context) { - c.JSON(http.StatusOK, "ok") - }) - } - { - routerGroup.InitBaseRouter(PublicGroup) // 娉ㄥ唽鍩虹鍔熻兘璺敱 涓嶅仛閴存潈 - routerGroup.InitImageRouter(PublicGroup) // 鍥惧儚鍔熻兘璺敱 - } - - PrivateGroup := Router.Group("api") - //PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) - //PrivateGroup.Use(middleware.JWTAuth()) - //PrivateGroup.Use(middleware.CasbinHandler()) - { - routerGroup.InitJwtRouter(PrivateGroup) // jwt鐩稿叧璺敱 - routerGroup.InitUserRouter(PrivateGroup) // 娉ㄥ唽鐢ㄦ埛璺敱 - routerGroup.InitCountryRouter(PrivateGroup) // 娉ㄥ唽country璺敱 - routerGroup.InitProvinceRouter(PrivateGroup) // 娉ㄥ唽province璺敱 - routerGroup.InitCityRouter(PrivateGroup) // 娉ㄥ唽city璺敱 - routerGroup.InitRegionRouter(PrivateGroup) // 娉ㄥ唽region璺敱 - routerGroup.InitContactRouter(PrivateGroup) // 娉ㄥ唽contact璺敱 - routerGroup.InitClientRouter(PrivateGroup) // 娉ㄥ唽client璺敱 - routerGroup.InitClientStatusRouter(PrivateGroup) // 娉ㄥ唽clientStatus璺敱 - routerGroup.InitClientTypeRouter(PrivateGroup) // 娉ㄥ唽clientType璺敱 - routerGroup.InitClientOriginRouter(PrivateGroup) // 娉ㄥ唽clientOrigin璺敱 - routerGroup.InitClientLevelRouter(PrivateGroup) // 娉ㄥ唽clientLevel璺敱 - routerGroup.InitIndustryRouter(PrivateGroup) // 娉ㄥ唽industry璺敱 - routerGroup.InitEnterpriseNatureRouter(PrivateGroup) // 娉ㄥ唽enterpriseNature璺敱 - routerGroup.InitRegisteredCapitalRouter(PrivateGroup) // 娉ㄥ唽registeredCapital璺敱 - routerGroup.InitEnterpriseScaleRouter(PrivateGroup) // 娉ㄥ唽enterpriseScale璺敱 - routerGroup.InitSalesLeadsRouter(PrivateGroup) // 娉ㄥ唽salesLeads璺敱 - routerGroup.InitSalesSourcesRouter(PrivateGroup) // 娉ㄥ唽salesSources璺敱 - routerGroup.InitFollowRecordRouter(PrivateGroup) // 娉ㄥ唽followRecord璺敱 - routerGroup.InitSaleChanceRouter(PrivateGroup) // 娉ㄥ唽saleChance璺敱 - routerGroup.InitSaleStageRouter(PrivateGroup) // 娉ㄥ唽saleStage璺敱 - routerGroup.InitSaleTypeRouter(PrivateGroup) // 娉ㄥ唽saleType璺敱 - routerGroup.InitRegularCustomersRouter(PrivateGroup) // 娉ㄥ唽regularCustomers璺敱 - routerGroup.InitPossibilityRouter(PrivateGroup) // 娉ㄥ唽possibility璺敱 - routerGroup.InitStatusRouter(PrivateGroup) // 娉ㄥ唽status璺敱 - routerGroup.InitQuotationRouter(PrivateGroup) // 娉ㄥ唽quotation璺敱 - routerGroup.InitMasterOrderRouter(PrivateGroup) // 娉ㄥ唽masterOrder璺敱 - routerGroup.InitSubOrderRouter(PrivateGroup) // 娉ㄥ唽subOrder璺敱 - routerGroup.InitSalesDetailsRouter(PrivateGroup) // 娉ㄥ唽salesDetails璺敱 - routerGroup.InitSalesReturnRouter(PrivateGroup) // 娉ㄥ唽salesReturn璺敱 - routerGroup.InitSalesRefundRouter(PrivateGroup) // 娉ㄥ唽salesRefund璺敱 - routerGroup.InitContractRouter(PrivateGroup) // 娉ㄥ唽contract璺敱 - routerGroup.InitPlanRouter(PrivateGroup) // 娉ㄥ唽plan璺敱 - routerGroup.InitServiceContractRouter(PrivateGroup) // 娉ㄥ唽serviceContract璺敱 - routerGroup.InitOrderManageRouter(PrivateGroup) // 娉ㄥ唽orderManage璺敱 - routerGroup.InitServiceFollowupRouter(PrivateGroup) // 娉ㄥ唽serviceFollowup璺敱 - routerGroup.InitCustomerServiceSheetRouter(PrivateGroup) // 娉ㄥ唽customerServiceSheet璺敱 - routerGroup.InitServiceFeeManageRouter(PrivateGroup) // 娉ㄥ唽serviceFeeManage璺敱 - routerGroup.InitAuthorityRouter(PrivateGroup) // 娉ㄥ唽authority璺敱 - routerGroup.InitMenuRouter(PrivateGroup) // 娉ㄥ唽menu璺敱 - routerGroup.InitDataRouter(PrivateGroup) // 娉ㄥ唽data璺敱 - routerGroup.InitDepartmentRouter(PrivateGroup) // 娉ㄥ唽department璺敱 - routerGroup.InitSatisfactionRouter(PrivateGroup) // 娉ㄥ唽satisfaction璺敱 - routerGroup.InitTimelyRateRouter(PrivateGroup) - routerGroup.InitSolveRateRouter(PrivateGroup) - routerGroup.InitIsVisitRouter(PrivateGroup) - routerGroup.InitReportSourceRouter(PrivateGroup) - routerGroup.InitOrderTypeRouter(PrivateGroup) - routerGroup.InitServiceContractStatusRouter(PrivateGroup) - routerGroup.InitServiceContractTypeRouter(PrivateGroup) - routerGroup.InitRefundMethodRouter(PrivateGroup) - routerGroup.InitIsInvoiceRouter(PrivateGroup) - routerGroup.InitAccountIdRouter(PrivateGroup) - routerGroup.InitSalesReturnStatusRouter(PrivateGroup) - routerGroup.InitRepositoryRouter(PrivateGroup) - routerGroup.InitQuotationStatusRouter(PrivateGroup) - routerGroup.InitCurrencyRouter(PrivateGroup) - routerGroup.InitAssignRouter(PrivateGroup) - } - return Router -} +package router + +import ( + "aps_crm/conf" + _ "aps_crm/docs" + "github.com/gin-contrib/cors" + "github.com/gin-gonic/gin" + swaggerFiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" + "net/http" +) + +type Group struct { + CurrencyRouter + QuotationStatusRouter + RepositoryRouter + SalesReturnStatusRouter + AccountIdRouter + IsInvoiceRouter + RefundMethodRouter + ServiceContractTypeRouter + ServiceContractStatusRouter + OrderTypeRouter + ReportSourceRouter + IsVisitRouter + SolveRateRouter + TimelyRateRouter + BaseRouter + UserRouter + JwtRouter + CountryRouter + ProvinceRouter + CityRouter + RegionRouter + ContactRouter + ClientRouter + ClientStatusRouter + ClientTypeRouter + ClientOriginRouter + ClientLevelRouter + IndustryRouter + EnterpriseNatureRouter + RegisteredCapitalRouter + EnterpriseScaleRouter + SalesLeadsRouter + SalesSourcesRouter + FollowRecordRouter + SaleChanceRouter + SaleStageRouter + SaleTypeRouter + RegularCustomersRouter + PossibilityRouter + StatusRouter + QuotationRouter + MasterOrderRouter + SubOrderRouter + SalesDetailsRouter + SalesReturnRouter + SalesRefundRouter + ContractRouter + PlanRouter + ServiceContractRouter + OrderManageRouter + ServiceFollowupRouter + CustomerServiceSheetRouter + ServiceFeeManageRouter + AuthorityRouter + MenuRouter + DataRouter + DepartmentRouter + SatisfactionRouter + AssignRouter +} + +func InitRouter() *gin.Engine { + gin.SetMode(gin.ReleaseMode) + + Router := gin.Default() + Router.Use(gin.Recovery()) + if conf.Conf.System.Env == "develop" { + Router.Use(gin.Logger()) + } + Router.Use(cors.Default()) + Router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) + + routerGroup := new(Group) + PublicGroup := Router.Group("api") + { + // 鍋ュ悍鐩戞祴 + PublicGroup.GET("/health", func(c *gin.Context) { + c.JSON(http.StatusOK, "ok") + }) + } + { + routerGroup.InitBaseRouter(PublicGroup) // 娉ㄥ唽鍩虹鍔熻兘璺敱 涓嶅仛閴存潈 + routerGroup.InitImageRouter(PublicGroup) // 鍥惧儚鍔熻兘璺敱 + } + + PrivateGroup := Router.Group("api") + //PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) + //PrivateGroup.Use(middleware.JWTAuth()) + //PrivateGroup.Use(middleware.CasbinHandler()) + { + routerGroup.InitJwtRouter(PrivateGroup) // jwt鐩稿叧璺敱 + routerGroup.InitUserRouter(PrivateGroup) // 娉ㄥ唽鐢ㄦ埛璺敱 + routerGroup.InitCountryRouter(PrivateGroup) // 娉ㄥ唽country璺敱 + routerGroup.InitProvinceRouter(PrivateGroup) // 娉ㄥ唽province璺敱 + routerGroup.InitCityRouter(PrivateGroup) // 娉ㄥ唽city璺敱 + routerGroup.InitRegionRouter(PrivateGroup) // 娉ㄥ唽region璺敱 + routerGroup.InitContactRouter(PrivateGroup) // 娉ㄥ唽contact璺敱 + routerGroup.InitClientRouter(PrivateGroup) // 娉ㄥ唽client璺敱 + routerGroup.InitClientStatusRouter(PrivateGroup) // 娉ㄥ唽clientStatus璺敱 + routerGroup.InitClientTypeRouter(PrivateGroup) // 娉ㄥ唽clientType璺敱 + routerGroup.InitClientOriginRouter(PrivateGroup) // 娉ㄥ唽clientOrigin璺敱 + routerGroup.InitClientLevelRouter(PrivateGroup) // 娉ㄥ唽clientLevel璺敱 + routerGroup.InitIndustryRouter(PrivateGroup) // 娉ㄥ唽industry璺敱 + routerGroup.InitEnterpriseNatureRouter(PrivateGroup) // 娉ㄥ唽enterpriseNature璺敱 + routerGroup.InitRegisteredCapitalRouter(PrivateGroup) // 娉ㄥ唽registeredCapital璺敱 + routerGroup.InitEnterpriseScaleRouter(PrivateGroup) // 娉ㄥ唽enterpriseScale璺敱 + routerGroup.InitSalesLeadsRouter(PrivateGroup) // 娉ㄥ唽salesLeads璺敱 + routerGroup.InitSalesSourcesRouter(PrivateGroup) // 娉ㄥ唽salesSources璺敱 + routerGroup.InitFollowRecordRouter(PrivateGroup) // 娉ㄥ唽followRecord璺敱 + routerGroup.InitSaleChanceRouter(PrivateGroup) // 娉ㄥ唽saleChance璺敱 + routerGroup.InitSaleStageRouter(PrivateGroup) // 娉ㄥ唽saleStage璺敱 + routerGroup.InitSaleTypeRouter(PrivateGroup) // 娉ㄥ唽saleType璺敱 + routerGroup.InitRegularCustomersRouter(PrivateGroup) // 娉ㄥ唽regularCustomers璺敱 + routerGroup.InitPossibilityRouter(PrivateGroup) // 娉ㄥ唽possibility璺敱 + routerGroup.InitStatusRouter(PrivateGroup) // 娉ㄥ唽status璺敱 + routerGroup.InitQuotationRouter(PrivateGroup) // 娉ㄥ唽quotation璺敱 + routerGroup.InitMasterOrderRouter(PrivateGroup) // 娉ㄥ唽masterOrder璺敱 + routerGroup.InitSubOrderRouter(PrivateGroup) // 娉ㄥ唽subOrder璺敱 + routerGroup.InitSalesDetailsRouter(PrivateGroup) // 娉ㄥ唽salesDetails璺敱 + routerGroup.InitSalesReturnRouter(PrivateGroup) // 娉ㄥ唽salesReturn璺敱 + routerGroup.InitSalesRefundRouter(PrivateGroup) // 娉ㄥ唽salesRefund璺敱 + routerGroup.InitContractRouter(PrivateGroup) // 娉ㄥ唽contract璺敱 + routerGroup.InitPlanRouter(PrivateGroup) // 娉ㄥ唽plan璺敱 + routerGroup.InitServiceContractRouter(PrivateGroup) // 娉ㄥ唽serviceContract璺敱 + routerGroup.InitOrderManageRouter(PrivateGroup) // 娉ㄥ唽orderManage璺敱 + routerGroup.InitServiceFollowupRouter(PrivateGroup) // 娉ㄥ唽serviceFollowup璺敱 + routerGroup.InitCustomerServiceSheetRouter(PrivateGroup) // 娉ㄥ唽customerServiceSheet璺敱 + routerGroup.InitServiceFeeManageRouter(PrivateGroup) // 娉ㄥ唽serviceFeeManage璺敱 + routerGroup.InitAuthorityRouter(PrivateGroup) // 娉ㄥ唽authority璺敱 + routerGroup.InitMenuRouter(PrivateGroup) // 娉ㄥ唽menu璺敱 + routerGroup.InitDataRouter(PrivateGroup) // 娉ㄥ唽data璺敱 + routerGroup.InitDepartmentRouter(PrivateGroup) // 娉ㄥ唽department璺敱 + routerGroup.InitSatisfactionRouter(PrivateGroup) // 娉ㄥ唽satisfaction璺敱 + routerGroup.InitTimelyRateRouter(PrivateGroup) + routerGroup.InitSolveRateRouter(PrivateGroup) + routerGroup.InitIsVisitRouter(PrivateGroup) + routerGroup.InitReportSourceRouter(PrivateGroup) + routerGroup.InitOrderTypeRouter(PrivateGroup) + routerGroup.InitServiceContractStatusRouter(PrivateGroup) + routerGroup.InitServiceContractTypeRouter(PrivateGroup) + routerGroup.InitRefundMethodRouter(PrivateGroup) + routerGroup.InitIsInvoiceRouter(PrivateGroup) + routerGroup.InitAccountIdRouter(PrivateGroup) + routerGroup.InitSalesReturnStatusRouter(PrivateGroup) + routerGroup.InitRepositoryRouter(PrivateGroup) + routerGroup.InitQuotationStatusRouter(PrivateGroup) + routerGroup.InitCurrencyRouter(PrivateGroup) + routerGroup.InitAssignRouter(PrivateGroup) + InitServiceOrderRouter(PrivateGroup) + InitFaqRouter(PrivateGroup) + InitPriorityLevelRouter(PrivateGroup) + InitServiceTypeRouter(PrivateGroup) + InitSeverityRouter(PrivateGroup) + InitTimeSpentRouter(PrivateGroup) + InitFaultTypeRouter(PrivateGroup) + InitServiceCollectionPlanRouter(PrivateGroup) + InitReceiptRouter(PrivateGroup) + InitBankAccountRouter(PrivateGroup) + } + return Router +} diff --git a/router/paymentType.go b/router/paymentType.go new file mode 100644 index 0000000..a320b69 --- /dev/null +++ b/router/paymentType.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitPaymentTypeRouter(router *gin.RouterGroup) { + PaymentTypeRouter := router.Group("paymentType") + PaymentTypeApi := v1.PaymentTypeApi{} + { + PaymentTypeRouter.POST("add", PaymentTypeApi.Add) // 娣诲姞鏀粯鏂瑰紡 + PaymentTypeRouter.DELETE("delete/:id", PaymentTypeApi.Delete) // 鍒犻櫎鏀粯鏂瑰紡 + PaymentTypeRouter.PUT("update", PaymentTypeApi.Update) // 鏇存柊鏀粯鏂瑰紡 + PaymentTypeRouter.GET("list", PaymentTypeApi.List) // 鑾峰彇鏀粯鏂瑰紡鍒楄〃 + } +} diff --git a/router/priorityLevel.go b/router/priorityLevel.go new file mode 100644 index 0000000..1adf38d --- /dev/null +++ b/router/priorityLevel.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitPriorityLevelRouter(router *gin.RouterGroup) { + PriorityLevelRouter := router.Group("priorityLevel") + PriorityLevelApi := v1.PriorityLevelApi{} + { + PriorityLevelRouter.POST("add", PriorityLevelApi.Add) // 娣诲姞浼樺厛绾у埆 + PriorityLevelRouter.DELETE("delete/:id", PriorityLevelApi.Delete) // 鍒犻櫎浼樺厛绾у埆 + PriorityLevelRouter.PUT("update", PriorityLevelApi.Update) // 鏇存柊浼樺厛绾у埆 + PriorityLevelRouter.GET("list", PriorityLevelApi.List) // 鑾峰彇浼樺厛绾у埆鍒楄〃 + } +} diff --git a/router/receipt.go b/router/receipt.go new file mode 100644 index 0000000..eea9a00 --- /dev/null +++ b/router/receipt.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitReceiptRouter(router *gin.RouterGroup) { + ReceiptRouter := router.Group("receipt") + ReceiptApi := v1.ReceiptApi{} + { + ReceiptRouter.POST("add", ReceiptApi.Add) // 娣诲姞鏀舵鍗� + ReceiptRouter.DELETE("delete/:id", ReceiptApi.Delete) // 鍒犻櫎鏀舵鍗� + ReceiptRouter.PUT("update", ReceiptApi.Update) // 鏇存柊鏀舵鍗� + ReceiptRouter.GET("list", ReceiptApi.List) // 鑾峰彇鏀舵鍗曞垪琛� + } +} diff --git a/router/serviceCollectionPlan.go b/router/serviceCollectionPlan.go new file mode 100644 index 0000000..68c20f7 --- /dev/null +++ b/router/serviceCollectionPlan.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitServiceCollectionPlanRouter(router *gin.RouterGroup) { + ServiceCollectionPlanRouter := router.Group("serviceCollectionPlan") + ServiceCollectionPlanApi := v1.ServiceCollectionPlanApi{} + { + ServiceCollectionPlanRouter.POST("add", ServiceCollectionPlanApi.Add) // 娣诲姞鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlanRouter.DELETE("delete/:id", ServiceCollectionPlanApi.Delete) // 鍒犻櫎鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlanRouter.PUT("update", ServiceCollectionPlanApi.Update) // 鏇存柊鏈嶅姟鍚堝悓鏀舵璁″垝 + ServiceCollectionPlanRouter.GET("list", ServiceCollectionPlanApi.List) // 鑾峰彇鏈嶅姟鍚堝悓鏀舵璁″垝鍒楄〃 + } +} diff --git a/router/serviceOrder.go b/router/serviceOrder.go new file mode 100644 index 0000000..8efdc84 --- /dev/null +++ b/router/serviceOrder.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitServiceOrderRouter(router *gin.RouterGroup) { + ServiceOrderRouter := router.Group("serviceOrder") + ServiceOrderApi := v1.ServiceOrderApi{} + { + ServiceOrderRouter.POST("add", ServiceOrderApi.Add) // 娣诲姞鏈嶅姟鍗� + ServiceOrderRouter.DELETE("delete/:id", ServiceOrderApi.Delete) // 鍒犻櫎鏈嶅姟鍗� + ServiceOrderRouter.PUT("update", ServiceOrderApi.Update) // 鏇存柊鏈嶅姟鍗� + ServiceOrderRouter.GET("list", ServiceOrderApi.List) // 鑾峰彇鏈嶅姟鍗曞垪琛� + } +} diff --git a/router/serviceType.go b/router/serviceType.go new file mode 100644 index 0000000..c396bcf --- /dev/null +++ b/router/serviceType.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitServiceTypeRouter(router *gin.RouterGroup) { + ServiceTypeRouter := router.Group("serviceType") + ServiceTypeApi := v1.ServiceTypeApi{} + { + ServiceTypeRouter.POST("add", ServiceTypeApi.Add) // 娣诲姞鏈嶅姟鏂瑰紡 + ServiceTypeRouter.DELETE("delete/:id", ServiceTypeApi.Delete) // 鍒犻櫎鏈嶅姟鏂瑰紡 + ServiceTypeRouter.PUT("update", ServiceTypeApi.Update) // 鏇存柊鏈嶅姟鏂瑰紡 + ServiceTypeRouter.GET("list", ServiceTypeApi.List) // 鑾峰彇鏈嶅姟鏂瑰紡鍒楄〃 + } +} diff --git a/router/severity.go b/router/severity.go new file mode 100644 index 0000000..78e6dfc --- /dev/null +++ b/router/severity.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitSeverityRouter(router *gin.RouterGroup) { + SeverityRouter := router.Group("severity") + SeverityApi := v1.SeverityApi{} + { + SeverityRouter.POST("add", SeverityApi.Add) // 娣诲姞涓ラ噸绋嬪害 + SeverityRouter.DELETE("delete/:id", SeverityApi.Delete) // 鍒犻櫎涓ラ噸绋嬪害 + SeverityRouter.PUT("update", SeverityApi.Update) // 鏇存柊涓ラ噸绋嬪害 + SeverityRouter.GET("list", SeverityApi.List) // 鑾峰彇涓ラ噸绋嬪害鍒楄〃 + } +} diff --git a/router/timeSpent.go b/router/timeSpent.go new file mode 100644 index 0000000..5b537c7 --- /dev/null +++ b/router/timeSpent.go @@ -0,0 +1,17 @@ +package router + +import ( + v1 "aps_crm/api/v1" + "github.com/gin-gonic/gin" +) + +func InitTimeSpentRouter(router *gin.RouterGroup) { + TimeSpentRouter := router.Group("timeSpent") + TimeSpentApi := v1.TimeSpentApi{} + { + TimeSpentRouter.POST("add", TimeSpentApi.Add) // 娣诲姞鑺辫垂鏃堕棿 + TimeSpentRouter.DELETE("delete/:id", TimeSpentApi.Delete) // 鍒犻櫎鑺辫垂鏃堕棿 + TimeSpentRouter.PUT("update", TimeSpentApi.Update) // 鏇存柊鑺辫垂鏃堕棿 + TimeSpentRouter.GET("list", TimeSpentApi.List) // 鑾峰彇鑺辫垂鏃堕棿鍒楄〃 + } +} diff --git a/service/bankAccount.go b/service/bankAccount.go new file mode 100644 index 0000000..4516672 --- /dev/null +++ b/service/bankAccount.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type BankAccountService struct{} + +func NewBankAccountService() BankAccountService { + return BankAccountService{} +} + +func (BankAccountService) AddBankAccount(bankAccount *model.BankAccount) int { + err := model.NewBankAccountSearch().Create(bankAccount) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (BankAccountService) DeleteBankAccount(id int) int { + err := model.NewBankAccountSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (BankAccountService) GetBankAccountList() ([]*model.BankAccount, int64, int) { + list, total, err := model.NewBankAccountSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (BankAccountService) UpdateBankAccounts(BankAccounts []*request.UpdateBankAccount) int { + for _, v := range BankAccounts { + // check BankAccount exist + _, err := model.NewBankAccountSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewBankAccountSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (BankAccountService) UpdateBankAccount(bankAccount *model.BankAccount) int { + err := model.NewBankAccountSearch().SetId(bankAccount.Id).Save(bankAccount) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/faq.go b/service/faq.go new file mode 100644 index 0000000..bd01165 --- /dev/null +++ b/service/faq.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type FaqService struct{} + +func NewFaqService() FaqService { + return FaqService{} +} + +func (FaqService) AddFaq(faq *model.Faq) int { + err := model.NewFaqSearch().Create(faq) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (FaqService) DeleteFaq(id int) int { + err := model.NewFaqSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (FaqService) GetFaqList() ([]*model.Faq, int64, int) { + list, total, err := model.NewFaqSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (FaqService) UpdateFaqs(Faqs []*request.UpdateFaq) int { + for _, v := range Faqs { + // check Faq exist + _, err := model.NewFaqSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewFaqSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (FaqService) UpdateFaq(faq *model.Faq) int { + err := model.NewFaqSearch().SetId(faq.Id).Save(faq) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/faultType.go b/service/faultType.go new file mode 100644 index 0000000..141ac23 --- /dev/null +++ b/service/faultType.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type FaultTypeService struct{} + +func NewFaultTypeService() FaultTypeService { + return FaultTypeService{} +} + +func (FaultTypeService) AddFaultType(FaultType *model.FaultType) int { + err := model.NewFaultTypeSearch().Create(FaultType) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (FaultTypeService) DeleteFaultType(id int) int { + err := model.NewFaultTypeSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (FaultTypeService) GetFaultTypeList() ([]*model.FaultType, int64, int) { + list, total, err := model.NewFaultTypeSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (FaultTypeService) UpdateFaultTypes(FaultTypes []*request.UpdateFaultType) int { + for _, v := range FaultTypes { + // check FaultType exist + _, err := model.NewFaultTypeSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewFaultTypeSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (FaultTypeService) UpdateFaultType(faultType *model.FaultType) int { + err := model.NewFaultTypeSearch().SetId(faultType.Id).Save(faultType) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/file.go b/service/file.go new file mode 100644 index 0000000..af78875 --- /dev/null +++ b/service/file.go @@ -0,0 +1,65 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type FileService struct{} + +func NewFileService() FileService { + return FileService{} +} + +func (FileService) AddFile(fileRecord *model.File) int { + + err := model.NewFileSearch().Create(fileRecord) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (FileService) DeleteFile(id int) int { + err := model.NewFileSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (FileService) GetFileList() ([]*model.File, int64, int) { + list, total, err := model.NewFileSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (FileService) UpdateFiles(Files []*request.UpdateFile) int { + for _, v := range Files { + // check File exist + _, err := model.NewFileSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewFileSearch().SetId(v.Id).Updates(map[string]interface{}{}) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (FileService) UpdateFile(file *model.File) int { + err := model.NewFileSearch().SetId(file.Id).Save(file) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/paymentType.go b/service/paymentType.go new file mode 100644 index 0000000..83ec447 --- /dev/null +++ b/service/paymentType.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type PaymentTypeService struct{} + +func NewPaymentTypeService() PaymentTypeService { + return PaymentTypeService{} +} + +func (PaymentTypeService) AddPaymentType(paymentType *model.PaymentType) int { + err := model.NewPaymentTypeSearch().Create(paymentType) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (PaymentTypeService) DeletePaymentType(id int) int { + err := model.NewPaymentTypeSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (PaymentTypeService) GetPaymentTypeList() ([]*model.PaymentType, int64, int) { + list, total, err := model.NewPaymentTypeSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (PaymentTypeService) UpdatePaymentTypes(PaymentTypes []*request.UpdatePaymentType) int { + for _, v := range PaymentTypes { + // check PaymentType exist + _, err := model.NewPaymentTypeSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewPaymentTypeSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (PaymentTypeService) UpdatePaymentType(paymentType *model.PaymentType) int { + err := model.NewPaymentTypeSearch().SetId(paymentType.Id).Save(paymentType) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/priorityLevel.go b/service/priorityLevel.go new file mode 100644 index 0000000..9b2b3d3 --- /dev/null +++ b/service/priorityLevel.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type PriorityLevelService struct{} + +func NewPriorityLevelService() PriorityLevelService { + return PriorityLevelService{} +} + +func (PriorityLevelService) AddPriorityLevel(PriorityLevel *model.PriorityLevel) int { + err := model.NewPriorityLevelSearch().Create(PriorityLevel) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (PriorityLevelService) DeletePriorityLevel(id int) int { + err := model.NewPriorityLevelSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (PriorityLevelService) GetPriorityLevelList() ([]*model.PriorityLevel, int64, int) { + list, total, err := model.NewPriorityLevelSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (PriorityLevelService) UpdatePriorityLevels(PriorityLevels []*request.UpdatePriorityLevel) int { + for _, v := range PriorityLevels { + // check PriorityLevel exist + _, err := model.NewPriorityLevelSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewPriorityLevelSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (PriorityLevelService) UpdatePriorityLevel(priorityLevel *model.PriorityLevel) int { + err := model.NewPriorityLevelSearch().SetId(priorityLevel.Id).Save(priorityLevel) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/receipt.go b/service/receipt.go new file mode 100644 index 0000000..834c6df --- /dev/null +++ b/service/receipt.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type ReceiptService struct{} + +func NewReceiptService() ReceiptService { + return ReceiptService{} +} + +func (ReceiptService) AddReceipt(receipt *model.Receipt) int { + err := model.NewReceiptSearch().Create(receipt) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (ReceiptService) DeleteReceipt(id int) int { + err := model.NewReceiptSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (ReceiptService) GetReceiptList() ([]*model.Receipt, int64, int) { + list, total, err := model.NewReceiptSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (ReceiptService) UpdateReceipts(Receipts []*request.UpdateReceipt) int { + for _, v := range Receipts { + // check Receipt exist + _, err := model.NewReceiptSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewReceiptSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (ReceiptService) UpdateReceipt(receipt *model.Receipt) int { + err := model.NewReceiptSearch().SetId(receipt.Id).Save(receipt) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/serviceCollectionPlan.go b/service/serviceCollectionPlan.go new file mode 100644 index 0000000..fdaa235 --- /dev/null +++ b/service/serviceCollectionPlan.go @@ -0,0 +1,80 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" + "gorm.io/gorm" +) + +type ServiceCollectionPlanService struct{} + +func NewServiceCollectionPlanService() ServiceCollectionPlanService { + return ServiceCollectionPlanService{} +} + +func (ServiceCollectionPlanService) AddServiceCollectionPlan(serviceCollectionPlan []*model.ServiceCollectionPlan) int { + if len(serviceCollectionPlan) == 0 { + return ecode.ParamsErr + } + contractId := serviceCollectionPlan[0].ServiceContractId + err := model.WithTransaction(func(db *gorm.DB) error { + err := model.NewServiceCollectionPlanSearch().SetOrm(db).SetServiceContractId(contractId).Delete() + if err != nil { + return err + } + err = model.NewServiceCollectionPlanSearch().SetOrm(db).CreateBatch(serviceCollectionPlan) + if err != nil { + return err + } + return nil + }) + + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (ServiceCollectionPlanService) DeleteServiceCollectionPlan(id int) int { + err := model.NewServiceCollectionPlanSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (ServiceCollectionPlanService) GetServiceCollectionPlanList(contractId int) ([]*model.ServiceCollectionPlan, int64, int) { + list, total, err := model.NewServiceCollectionPlanSearch().SetServiceContractId(contractId).Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (ServiceCollectionPlanService) UpdateServiceCollectionPlans(ServiceCollectionPlans []*request.UpdateServiceCollectionPlan) int { + for _, v := range ServiceCollectionPlans { + // check ServiceCollectionPlan exist + _, err := model.NewServiceCollectionPlanSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewServiceCollectionPlanSearch().SetId(v.Id).Updates(map[string]interface{}{}) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (ServiceCollectionPlanService) UpdateServiceCollectionPlan(serviceCollectionPlan *model.ServiceCollectionPlan) int { + err := model.NewServiceCollectionPlanSearch().SetId(serviceCollectionPlan.Id).Save(serviceCollectionPlan) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/serviceContract.go b/service/serviceContract.go index 2175971..45907c8 100644 --- a/service/serviceContract.go +++ b/service/serviceContract.go @@ -1,59 +1,64 @@ -package service - -import ( - "aps_crm/model" - "aps_crm/pkg/ecode" -) - -type SContractService struct{} - -func (SContractService) AddServiceContract(serviceContract *model.ServiceContract) int { - err := model.NewServiceContractSearch().Create(serviceContract) - if err != nil { - return ecode.SContractExist - } - - return ecode.OK -} - -func (SContractService) UpdateServiceContract(serviceContract *model.ServiceContract) int { - // check serviceContract exist - _, err := model.NewServiceContractSearch().SetId(serviceContract.Id).Find() - if err != nil { - return ecode.SContractNotExist - } - - err = model.NewServiceContractSearch().SetId(serviceContract.Id).Update(serviceContract) - if err != nil { - return ecode.SContractSetErr - } - - return ecode.OK -} - -//func (SContractService) GetServiceContractByContractId(contractId int) ([]*model.ServiceContract, int) { -// list, err := model.NewServiceContractSearch().SetId(contractId).FindAll() -// if err != nil { -// return nil, ecode.SContractListErr -// } -// -// return list, ecode.OK -//} - -func (SContractService) GetServiceContractList(page, pageSize int, keyword string) ([]*model.ServiceContract, int64, int) { - // get contact list - contacts, total, err := model.NewServiceContractSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() - if err != nil { - return nil, 0, ecode.SContractListErr - } - return contacts, total, ecode.OK -} - -func (SContractService) DeleteServiceContract(ids []int) int { - // delete client - err := model.NewServiceContractSearch().SetIds(ids).Delete() - if err != nil { - return ecode.SContractDeleteErr - } - return ecode.OK -} +package service + +import ( + "aps_crm/constvar" + "aps_crm/model" + "aps_crm/pkg/ecode" +) + +type SContractService struct{} + +func (SContractService) AddServiceContract(serviceContract *model.ServiceContract) int { + err := model.NewServiceContractSearch().Create(serviceContract) + if err != nil { + return ecode.SContractExist + } + + return ecode.OK +} + +func (SContractService) UpdateServiceContract(serviceContract *model.ServiceContract) int { + // check serviceContract exist + _, err := model.NewServiceContractSearch().SetId(serviceContract.Id).Find() + if err != nil { + return ecode.SContractNotExist + } + + err = model.NewServiceContractSearch().SetId(serviceContract.Id).Update(serviceContract) + if err != nil { + return ecode.SContractSetErr + } + + return ecode.OK +} + +//func (SContractService) GetServiceContractByContractId(contractId int) ([]*model.ServiceContract, int) { +// list, err := model.NewServiceContractSearch().SetId(contractId).FindAll() +// if err != nil { +// return nil, ecode.SContractListErr +// } +// +// return list, ecode.OK +//} + +func (SContractService) DeleteServiceContract(ids []int) int { + // delete client + err := model.NewServiceContractSearch().SetIds(ids).Delete() + if err != nil { + return ecode.SContractDeleteErr + } + return ecode.OK +} + +func (SContractService) GetServiceContractList(page, pageSize int, queryClass constvar.ServiceContractQueryClass, keywordType constvar.ServiceContractKeywordType, keyword string) ([]*model.ServiceContract, int64, int) { + // get contact list + contacts, total, err := model.NewServiceContractSearch(). + SetKeyword(keyword). + SetKeywordType(keywordType). + SetQueryClass(queryClass). + SetPage(page, pageSize).FindAll() + if err != nil { + return nil, 0, ecode.SContractListErr + } + return contacts, total, ecode.OK +} diff --git a/service/serviceFeeManage.go b/service/serviceFeeManage.go index 54c8b8f..49fa66c 100644 --- a/service/serviceFeeManage.go +++ b/service/serviceFeeManage.go @@ -1,76 +1,81 @@ -package service - -import ( - "aps_crm/model" - "aps_crm/pkg/ecode" - "aps_crm/pkg/mysqlx" -) - -type FeeManageService struct{} - -func (FeeManageService) AddServiceFeeManage(serviceFeeManage *model.ServiceFeeManage) int { - - tx := mysqlx.GetDB().Begin() - - err := model.NewClientSearch(tx).Create(serviceFeeManage.Client) - if err != nil { - tx.Rollback() - return ecode.ClientExist - } - - serviceFeeManage.ClientId = serviceFeeManage.Client.Id - err = model.NewServiceFeeManageSearch(tx).Create(serviceFeeManage) - if err != nil { - tx.Rollback() - return ecode.ServiceFeeManageExist - } - - tx.Commit() - - return ecode.OK -} - -func (FeeManageService) UpdateServiceFeeManage(serviceFeeManage *model.ServiceFeeManage) int { - // check serviceFeeManage exist - _, err := model.NewServiceFeeManageSearch(nil).SetId(serviceFeeManage.Id).Find() - if err != nil { - return ecode.ServiceFeeManageNotExist - } - - tx := mysqlx.GetDB().Begin() - - err = model.NewServiceFeeManageSearch(tx).SetId(serviceFeeManage.Id).Update(serviceFeeManage) - if err != nil { - tx.Rollback() - return ecode.ServiceFeeManageSetErr - } - - // update client - err = model.NewClientSearch(tx).SetId(serviceFeeManage.ClientId).Update(serviceFeeManage.Client) - if err != nil { - tx.Rollback() - return ecode.ClientUpdateErr - } - - tx.Commit() - - return ecode.OK -} - -func (FeeManageService) GetServiceFeeManageList(page, pageSize int, keyword string) ([]*model.ServiceFeeManage, int64, int) { - // get contact list - contacts, total, err := model.NewServiceFeeManageSearch(nil).SetKeyword(keyword).SetPage(page, pageSize).FindAll() - if err != nil { - return nil, 0, ecode.ServiceFeeManageListErr - } - return contacts, total, ecode.OK -} - -func (FeeManageService) DeleteServiceFeeManage(ids []int) int { - // delete client - err := model.NewServiceFeeManageSearch(nil).SetIds(ids).Delete() - if err != nil { - return ecode.ServiceFeeManageDeleteErr - } - return ecode.OK -} +package service + +import ( + "aps_crm/constvar" + "aps_crm/model" + "aps_crm/pkg/ecode" + "aps_crm/pkg/mysqlx" +) + +type FeeManageService struct{} + +func (FeeManageService) AddServiceFeeManage(serviceFeeManage *model.ServiceFeeManage) int { + + tx := mysqlx.GetDB().Begin() + + err := model.NewClientSearch(tx).Create(serviceFeeManage.Client) + if err != nil { + tx.Rollback() + return ecode.ClientExist + } + + serviceFeeManage.ClientId = serviceFeeManage.Client.Id + err = model.NewServiceFeeManageSearch(tx).Create(serviceFeeManage) + if err != nil { + tx.Rollback() + return ecode.ServiceFeeManageExist + } + + tx.Commit() + + return ecode.OK +} + +func (FeeManageService) UpdateServiceFeeManage(serviceFeeManage *model.ServiceFeeManage) int { + // check serviceFeeManage exist + _, err := model.NewServiceFeeManageSearch(nil).SetId(serviceFeeManage.Id).Find() + if err != nil { + return ecode.ServiceFeeManageNotExist + } + + tx := mysqlx.GetDB().Begin() + + err = model.NewServiceFeeManageSearch(tx).SetId(serviceFeeManage.Id).Update(serviceFeeManage) + if err != nil { + tx.Rollback() + return ecode.ServiceFeeManageSetErr + } + + // update client + err = model.NewClientSearch(tx).SetId(serviceFeeManage.ClientId).Update(serviceFeeManage.Client) + if err != nil { + tx.Rollback() + return ecode.ClientUpdateErr + } + + tx.Commit() + + return ecode.OK +} + +func (FeeManageService) DeleteServiceFeeManage(ids []int) int { + // delete client + err := model.NewServiceFeeManageSearch(nil).SetIds(ids).Delete() + if err != nil { + return ecode.ServiceFeeManageDeleteErr + } + return ecode.OK +} + +func (FeeManageService) GetServiceFeeManageList(page, pageSize int, queryClass constvar.ServiceFeeQueryClass, keywordType constvar.ServiceFeeKeywordType, keyword string) ([]*model.ServiceFeeManage, int64, int) { + // get contact list + contacts, total, err := model.NewServiceFeeManageSearch(nil). + SetQueryClass(queryClass). + SetKeywordType(keywordType). + SetKeyword(keyword). + SetPage(page, pageSize).FindAll() + if err != nil { + return nil, 0, ecode.ServiceFeeManageListErr + } + return contacts, total, ecode.OK +} diff --git a/service/serviceFollowup.go b/service/serviceFollowup.go index 43f0a2c..bdcb710 100644 --- a/service/serviceFollowup.go +++ b/service/serviceFollowup.go @@ -1,50 +1,54 @@ -package service - -import ( - "aps_crm/model" - "aps_crm/pkg/ecode" -) - -type FollowupService struct{} - -func (FollowupService) AddServiceFollowup(serviceFollowup *model.ServiceFollowup) int { - err := model.NewServiceFollowupSearch().Create(serviceFollowup) - if err != nil { - return ecode.ServiceFollowupExist - } - - return ecode.OK -} - -func (FollowupService) UpdateServiceFollowup(serviceFollowup *model.ServiceFollowup) int { - // check serviceFollowup exist - _, err := model.NewServiceFollowupSearch().SetId(serviceFollowup.Id).Find() - if err != nil { - return ecode.ServiceFollowupNotExist - } - - err = model.NewServiceFollowupSearch().SetId(serviceFollowup.Id).Update(serviceFollowup) - if err != nil { - return ecode.ServiceFollowupSetErr - } - - return ecode.OK -} - -func (FollowupService) GetServiceFollowupList(page, pageSize int, keyword string) ([]*model.ServiceFollowup, int64, int) { - // get contact list - contacts, total, err := model.NewServiceFollowupSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll() - if err != nil { - return nil, 0, ecode.ServiceFollowupListErr - } - return contacts, total, ecode.OK -} - -func (FollowupService) DeleteServiceFollowup(ids []int) int { - // delete client - err := model.NewServiceFollowupSearch().SetIds(ids).Delete() - if err != nil { - return ecode.ServiceFollowupDeleteErr - } - return ecode.OK -} +package service + +import ( + "aps_crm/constvar" + "aps_crm/model" + "aps_crm/pkg/ecode" +) + +type FollowupService struct{} + +func (FollowupService) AddServiceFollowup(serviceFollowup *model.ServiceFollowup) int { + err := model.NewServiceFollowupSearch().Create(serviceFollowup) + if err != nil { + return ecode.ServiceFollowupExist + } + + return ecode.OK +} + +func (FollowupService) UpdateServiceFollowup(serviceFollowup *model.ServiceFollowup) int { + // check serviceFollowup exist + _, err := model.NewServiceFollowupSearch().SetId(serviceFollowup.Id).Find() + if err != nil { + return ecode.ServiceFollowupNotExist + } + + err = model.NewServiceFollowupSearch().SetId(serviceFollowup.Id).Update(serviceFollowup) + if err != nil { + return ecode.ServiceFollowupSetErr + } + + return ecode.OK +} + +func (FollowupService) DeleteServiceFollowup(ids []int) int { + // delete client + err := model.NewServiceFollowupSearch().SetIds(ids).Delete() + if err != nil { + return ecode.ServiceFollowupDeleteErr + } + return ecode.OK +} + +func (FollowupService) GetServiceFollowupList(page, pageSize int, keywordType constvar.ServiceFollowupKeywordType, keyword string) ([]*model.ServiceFollowup, int64, int) { + // get contact list + contacts, total, err := model.NewServiceFollowupSearch(). + SetKeywordType(keywordType). + SetKeyword(keyword). + SetPage(page, pageSize).FindAll() + if err != nil { + return nil, 0, ecode.ServiceFollowupListErr + } + return contacts, total, ecode.OK +} diff --git a/service/serviceOrder.go b/service/serviceOrder.go new file mode 100644 index 0000000..c33f292 --- /dev/null +++ b/service/serviceOrder.go @@ -0,0 +1,64 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type ServiceOrderService struct{} + +func NewServiceOrderService() ServiceOrderService { + return ServiceOrderService{} +} + +func (ServiceOrderService) AddServiceOrder(ServiceOrder *model.ServiceOrder) int { + err := model.NewServiceOrderSearch().Create(ServiceOrder) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (ServiceOrderService) DeleteServiceOrder(id int) int { + err := model.NewServiceOrderSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (ServiceOrderService) GetServiceOrderList() ([]*model.ServiceOrder, int64, int) { + list, total, err := model.NewServiceOrderSearch().SetPreload(true).Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (ServiceOrderService) UpdateServiceOrders(ServiceOrders []*request.UpdateServiceOrder) int { + for _, v := range ServiceOrders { + // check ServiceOrder exist + _, err := model.NewServiceOrderSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewServiceOrderSearch().SetId(v.Id).Updates(map[string]interface{}{}) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (ServiceOrderService) UpdateServiceOrder(serviceOrder *model.ServiceOrder) int { + err := model.NewServiceOrderSearch().SetId(serviceOrder.Id).Save(serviceOrder) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/serviceType.go b/service/serviceType.go new file mode 100644 index 0000000..59989e4 --- /dev/null +++ b/service/serviceType.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type ServiceTypeService struct{} + +func NewServiceTypeService() ServiceTypeService { + return ServiceTypeService{} +} + +func (ServiceTypeService) AddServiceType(ServiceType *model.ServiceType) int { + err := model.NewServiceTypeSearch().Create(ServiceType) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (ServiceTypeService) DeleteServiceType(id int) int { + err := model.NewServiceTypeSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (ServiceTypeService) GetServiceTypeList() ([]*model.ServiceType, int64, int) { + list, total, err := model.NewServiceTypeSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (ServiceTypeService) UpdateServiceTypes(ServiceTypes []*request.UpdateServiceType) int { + for _, v := range ServiceTypes { + // check ServiceType exist + _, err := model.NewServiceTypeSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewServiceTypeSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (ServiceTypeService) UpdateServiceType(serviceType *model.ServiceType) int { + err := model.NewServiceTypeSearch().SetId(serviceType.Id).Save(serviceType) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/severity.go b/service/severity.go new file mode 100644 index 0000000..73176f4 --- /dev/null +++ b/service/severity.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type SeverityService struct{} + +func NewSeverityService() SeverityService { + return SeverityService{} +} + +func (SeverityService) AddSeverity(Severity *model.Severity) int { + err := model.NewSeveritySearch().Create(Severity) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (SeverityService) DeleteSeverity(id int) int { + err := model.NewSeveritySearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (SeverityService) GetSeverityList() ([]*model.Severity, int64, int) { + list, total, err := model.NewSeveritySearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (SeverityService) UpdateSeveritys(Severitys []*request.UpdateSeverity) int { + for _, v := range Severitys { + // check Severity exist + _, err := model.NewSeveritySearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewSeveritySearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (SeverityService) UpdateSeverity(severity *model.Severity) int { + err := model.NewSeveritySearch().SetId(severity.Id).Save(severity) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} diff --git a/service/timeSpent.go b/service/timeSpent.go new file mode 100644 index 0000000..24450da --- /dev/null +++ b/service/timeSpent.go @@ -0,0 +1,66 @@ +package service + +import ( + "aps_crm/model" + "aps_crm/model/request" + "aps_crm/pkg/ecode" +) + +type TimeSpentService struct{} + +func NewTimeSpentService() TimeSpentService { + return TimeSpentService{} +} + +func (TimeSpentService) AddTimeSpent(TimeSpent *model.TimeSpent) int { + err := model.NewTimeSpentSearch().Create(TimeSpent) + if err != nil { + return ecode.DBErr + } + + return ecode.OK +} + +func (TimeSpentService) DeleteTimeSpent(id int) int { + err := model.NewTimeSpentSearch().SetId(id).Delete() + if err != nil { + return ecode.DBErr + } + return ecode.OK +} + +func (TimeSpentService) GetTimeSpentList() ([]*model.TimeSpent, int64, int) { + list, total, err := model.NewTimeSpentSearch().Find() + if err != nil { + return nil, 0, ecode.DBErr + } + + return list, total, ecode.OK +} + +func (TimeSpentService) UpdateTimeSpents(TimeSpents []*request.UpdateTimeSpent) int { + for _, v := range TimeSpents { + // check TimeSpent exist + _, err := model.NewTimeSpentSearch().SetId(v.Id).First() + if err != nil { + return ecode.DBErr + } + + err = model.NewTimeSpentSearch().SetId(v.Id).Updates(map[string]interface{}{ + + }) + if err != nil { + return ecode.DBErr + } + } + + return ecode.OK +} + +func (TimeSpentService) UpdateTimeSpent(timeSpent *model.TimeSpent) int { + err := model.NewTimeSpentSearch().SetId(timeSpent.Id).Save(timeSpent) + if err != nil { + return ecode.DBErr + } + return ecode.OK +} -- Gitblit v1.8.0