initial crm server
This commit is contained in:
@@ -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(¶m)
|
||||
if uid <= 0 || err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
fmt.Println(param)
|
||||
param.Creator = int64(uid)
|
||||
errCode := c.contractService.Create(¶m)
|
||||
response.Result(errCode, nil, context)
|
||||
}
|
||||
|
||||
// 更新合同
|
||||
func (c *ContractApi) Update(context *gin.Context) {
|
||||
var param models.ContractUpdateParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := c.contractService.Update(¶m)
|
||||
response.Result(errCode, nil, context)
|
||||
}
|
||||
|
||||
// 删除合同
|
||||
func (c *ContractApi) Delete(context *gin.Context) {
|
||||
var param models.ContractDeleteParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := c.contractService.Delete(¶m)
|
||||
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(¶m)
|
||||
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(¶m)
|
||||
response.PageResult(errCode, productList, rows, context)
|
||||
}
|
||||
|
||||
// 查询合同信息
|
||||
func (c *ContractApi) QueryInfo(context *gin.Context) {
|
||||
var param models.ContractQueryParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
productInfo, errCode := c.contractService.QueryInfo(¶m)
|
||||
response.Result(errCode, productInfo, context)
|
||||
}
|
||||
|
||||
// 编辑合同时,查询产品列表
|
||||
func (p *ContractApi) QueryPlist(context *gin.Context) {
|
||||
var param models.ProductQueryParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
productList, errCode := p.contractService.QueryPlist(¶m)
|
||||
response.Result(errCode, productList, context)
|
||||
}
|
||||
@@ -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(¶m)
|
||||
if uid <= 0 || err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
param.Creator = int64(uid)
|
||||
errCode := c.customerService.Create(¶m)
|
||||
response.Result(errCode, nil, context)
|
||||
}
|
||||
|
||||
// 更新产品
|
||||
func (c *CustomerApi) Update(context *gin.Context) {
|
||||
var param models.CustomerUpdateParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := c.customerService.Update(¶m)
|
||||
response.Result(errCode, nil, context)
|
||||
}
|
||||
|
||||
// 删除客户
|
||||
func (c *CustomerApi) Delete(context *gin.Context) {
|
||||
var param models.CustomerDeleteParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := c.customerService.Delete(¶m)
|
||||
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(¶m)
|
||||
if uid <= 0 || err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
param.Creator = int64(uid)
|
||||
customerList, rows, errCode := c.customerService.QueryList(¶m)
|
||||
response.PageResult(errCode, customerList, rows, context)
|
||||
}
|
||||
|
||||
// 查询客户信息
|
||||
func (c *CustomerApi) QueryInfo(context *gin.Context) {
|
||||
var param models.CustomerQueryParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
customerInfo, errCode := c.customerService.QueryInfo(¶m)
|
||||
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)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
@@ -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(¶m)
|
||||
if uid <= 0 || err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
param.Creator = int64(uid)
|
||||
errCode := p.productService.Create(¶m)
|
||||
response.Result(errCode, nil, context)
|
||||
}
|
||||
|
||||
// 更新产品
|
||||
func (p *ProductApi) Update(context *gin.Context) {
|
||||
var param models.ProductUpdateParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := p.productService.Update(¶m)
|
||||
response.Result(errCode, nil, context)
|
||||
}
|
||||
|
||||
// 删除产品
|
||||
func (p *ProductApi) Delete(context *gin.Context) {
|
||||
var param models.ProductDeleteParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := p.productService.Delete(¶m)
|
||||
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(¶m)
|
||||
if uid <= 0 || err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
param.Creator = int64(uid)
|
||||
productList, rows, errCode := p.productService.QueryList(¶m)
|
||||
response.PageResult(errCode, productList, rows, context)
|
||||
}
|
||||
|
||||
// 查询产品信息
|
||||
func (p *ProductApi) QueryInfo(context *gin.Context) {
|
||||
var param models.ProductQueryParam
|
||||
if err := context.ShouldBind(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
productInfo, errCode := p.productService.QueryInfo(¶m)
|
||||
response.Result(errCode, productInfo, context)
|
||||
}
|
||||
@@ -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(¶m); 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(¶m)
|
||||
response.Result(errCode, nil, context)
|
||||
}
|
||||
|
||||
// 用户登录
|
||||
func (u *UserApi) Login(context *gin.Context) {
|
||||
var param models.UserLoginParam
|
||||
if err := context.ShouldBind(¶m); 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(¶m)
|
||||
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(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := u.userService.ForgotPass(¶m)
|
||||
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(¶m); err != nil {
|
||||
response.Result(response.ErrCodeParamInvalid, nil, context)
|
||||
return
|
||||
}
|
||||
errCode := u.userService.UpdateMail(¶m)
|
||||
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(¶m)
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user