initial crm server

This commit is contained in:
zchengo
2022-11-28 16:38:30 +08:00
parent 61122aef6a
commit af7cd0c44c
36 changed files with 2615 additions and 0 deletions
+95
View File
@@ -0,0 +1,95 @@
package api
import (
"crm/models"
"crm/response"
"crm/service"
"fmt"
"strconv"
"github.com/gin-gonic/gin"
)
type ContractApi struct {
contractService *service.ContractService
}
func NewContractApi() *ContractApi {
contractApi := ContractApi{
contractService: &service.ContractService{},
}
return &contractApi
}
// 创建合同
func (c *ContractApi) Create(context *gin.Context) {
var param models.ContractCreateParam
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
err := context.ShouldBind(&param)
if uid <= 0 || err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
fmt.Println(param)
param.Creator = int64(uid)
errCode := c.contractService.Create(&param)
response.Result(errCode, nil, context)
}
// 更新合同
func (c *ContractApi) Update(context *gin.Context) {
var param models.ContractUpdateParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := c.contractService.Update(&param)
response.Result(errCode, nil, context)
}
// 删除合同
func (c *ContractApi) Delete(context *gin.Context) {
var param models.ContractDeleteParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := c.contractService.Delete(&param)
response.Result(errCode, nil, context)
}
// 查询合同列表
func (c *ContractApi) QueryList(context *gin.Context) {
var param models.ContractQueryParam
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
err := context.ShouldBind(&param)
if uid <= 0 || err != nil || param.Page.PageNum <= 0 || param.Page.PageSize <= 0 {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
param.Creator = int64(uid)
productList, rows, errCode := c.contractService.QueryList(&param)
response.PageResult(errCode, productList, rows, context)
}
// 查询合同信息
func (c *ContractApi) QueryInfo(context *gin.Context) {
var param models.ContractQueryParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
productInfo, errCode := c.contractService.QueryInfo(&param)
response.Result(errCode, productInfo, context)
}
// 编辑合同时,查询产品列表
func (p *ContractApi) QueryPlist(context *gin.Context) {
var param models.ProductQueryParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
productList, errCode := p.contractService.QueryPlist(&param)
response.Result(errCode, productList, context)
}
+93
View File
@@ -0,0 +1,93 @@
package api
import (
"crm/models"
"crm/response"
"crm/service"
"strconv"
"github.com/gin-gonic/gin"
)
type CustomerApi struct {
customerService *service.CustomerService
}
func NewCustomerApi() *CustomerApi {
customerApi := CustomerApi{
customerService: &service.CustomerService{},
}
return &customerApi
}
// 创建产品
func (c *CustomerApi) Create(context *gin.Context) {
var param models.CustomerCreateParam
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
err := context.ShouldBind(&param)
if uid <= 0 || err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
param.Creator = int64(uid)
errCode := c.customerService.Create(&param)
response.Result(errCode, nil, context)
}
// 更新产品
func (c *CustomerApi) Update(context *gin.Context) {
var param models.CustomerUpdateParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := c.customerService.Update(&param)
response.Result(errCode, nil, context)
}
// 删除客户
func (c *CustomerApi) Delete(context *gin.Context) {
var param models.CustomerDeleteParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := c.customerService.Delete(&param)
response.Result(errCode, nil, context)
}
// 查询客户列表
func (c *CustomerApi) QueryList(context *gin.Context) {
var param models.CustomerQueryParam
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
err := context.ShouldBind(&param)
if uid <= 0 || err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
param.Creator = int64(uid)
customerList, rows, errCode := c.customerService.QueryList(&param)
response.PageResult(errCode, customerList, rows, context)
}
// 查询客户信息
func (c *CustomerApi) QueryInfo(context *gin.Context) {
var param models.CustomerQueryParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
customerInfo, errCode := c.customerService.QueryInfo(&param)
response.Result(errCode, customerInfo, context)
}
// 查询客户选项
func (c *CustomerApi) QueryOption(context *gin.Context) {
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
if uid <= 0 {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
customerOption, errCode := c.customerService.QueryOption(int64(uid))
response.Result(errCode, customerOption, context)
}
+27
View File
@@ -0,0 +1,27 @@
package api
import (
"crm/response"
"crm/service"
"strconv"
"github.com/gin-gonic/gin"
)
type DashboardApi struct {
dashboardService *service.DashboardService
}
func NewDashboardApi() *DashboardApi {
dashboardApi := DashboardApi{
dashboardService: &service.DashboardService{},
}
return &dashboardApi
}
// 获取数据汇总
func (d *DashboardApi) Summary(context *gin.Context) {
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
sum := d.dashboardService.Summary(int64(uid))
response.Result(response.ErrCodeSuccess, sum, context)
}
+82
View File
@@ -0,0 +1,82 @@
package api
import (
"crm/models"
"crm/response"
"crm/service"
"strconv"
"github.com/gin-gonic/gin"
)
type ProductApi struct {
productService *service.ProductService
}
func NewProductApi() *ProductApi {
productApi := ProductApi{
productService: &service.ProductService{},
}
return &productApi
}
// 创建产品
func (p *ProductApi) Create(context *gin.Context) {
var param models.ProductCreateParam
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
err := context.ShouldBind(&param)
if uid <= 0 || err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
param.Creator = int64(uid)
errCode := p.productService.Create(&param)
response.Result(errCode, nil, context)
}
// 更新产品
func (p *ProductApi) Update(context *gin.Context) {
var param models.ProductUpdateParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := p.productService.Update(&param)
response.Result(errCode, nil, context)
}
// 删除产品
func (p *ProductApi) Delete(context *gin.Context) {
var param models.ProductDeleteParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := p.productService.Delete(&param)
response.Result(errCode, nil, context)
}
// 查询产品列表
func (p *ProductApi) QueryList(context *gin.Context) {
var param models.ProductQueryParam
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
err := context.ShouldBind(&param)
if uid <= 0 || err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
param.Creator = int64(uid)
productList, rows, errCode := p.productService.QueryList(&param)
response.PageResult(errCode, productList, rows, context)
}
// 查询产品信息
func (p *ProductApi) QueryInfo(context *gin.Context) {
var param models.ProductQueryParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
productInfo, errCode := p.productService.QueryInfo(&param)
response.Result(errCode, productInfo, context)
}
+157
View File
@@ -0,0 +1,157 @@
package api
import (
"crm/models"
"crm/response"
"crm/service"
"log"
"regexp"
"strconv"
"github.com/gin-gonic/gin"
)
type UserApi struct {
userService *service.UserService
}
func NewUserApi() *UserApi {
userApi := UserApi{
userService: &service.UserService{},
}
return &userApi
}
// 用户注册
func (u *UserApi) Register(context *gin.Context) {
var param models.UserCreateParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
log.Printf("[error]UserApi:Register:%s", err)
return
}
if !verifyEmailFormat(param.Email) {
response.Result(response.ErrCodeEmailFormatInvalid, nil, context)
return
}
errCode := u.userService.Register(&param)
response.Result(errCode, nil, context)
}
// 用户登录
func (u *UserApi) Login(context *gin.Context) {
var param models.UserLoginParam
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
if !verifyEmailFormat(param.Email) {
response.Result(response.ErrCodeEmailFormatInvalid, nil, context)
return
}
userInfo, errCode := u.userService.Login(&param)
if userInfo == nil {
response.Result(errCode, nil, context)
return
}
response.Result(errCode, userInfo, context)
}
// 获取验证码
func (u *UserApi) GetVerifyCode(context *gin.Context) {
email := context.Query("email")
if email == "" {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
if !verifyEmailFormat(email) {
response.Result(response.ErrCodeEmailFormatInvalid, nil, context)
return
}
errCode := u.userService.GetVerifyCode(email)
response.Result(errCode, nil, context)
}
// 忘记密码
func (u *UserApi) ForgotPass(context *gin.Context) {
var param models.UserPassParam
if verifyEmailFormat(param.Email) {
response.Result(response.ErrCodeEmailFormatInvalid, nil, context)
return
}
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := u.userService.ForgotPass(&param)
response.Result(errCode, nil, context)
}
// 修改邮箱
func (u *UserApi) UpdateMail(context *gin.Context) {
var param models.UserMailParam
if verifyEmailFormat(param.Email) && verifyEmailFormat(param.NewEmail) {
response.Result(response.ErrCodeEmailFormatInvalid, nil, context)
return
}
if err := context.ShouldBind(&param); err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := u.userService.UpdateMail(&param)
response.Result(errCode, nil, context)
}
// 退出登录
func (u *UserApi) Logout(context *gin.Context) {
token := context.Request.Header.Get("token")
if token == "" {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
errCode := u.userService.Logout(token)
response.Result(errCode, nil, context)
}
// 注销账号
func (u *UserApi) Delete(context *gin.Context) {
var param models.UserDeleteParam
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
err := context.ShouldBind(&param)
if uid <= 0 || err != nil {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
param.Id = int64(uid)
errCode := u.userService.Delete(param)
response.Result(errCode, nil, context)
}
// 获取用户信息
func (u *UserApi) GetInfo(context *gin.Context) {
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
if uid <= 0 {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
userInfo, errCode := u.userService.GetInfo(int64(uid))
response.Result(errCode, userInfo, context)
}
// 订阅个人版
func (u *UserApi) Buy(context *gin.Context) {
uid, _ := strconv.Atoi(context.Request.Header.Get("uid"))
if uid <= 0 {
response.Result(response.ErrCodeParamInvalid, nil, context)
return
}
versionInfo, errCode := u.userService.Buy(int64(uid))
response.Result(errCode, versionInfo, context)
}
// 邮箱格式校验
func verifyEmailFormat(email string) bool {
pattern := `\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*`
reg := regexp.MustCompile(pattern)
return reg.MatchString(email)
}