Quellcode durchsuchen

fix:新增用户申请接口

Roc vor 3 Jahren
Ursprung
Commit
2eb2183db9

+ 48 - 15
controller/user/user.go

@@ -175,7 +175,7 @@ func Info(c *gin.Context) {
 	response.OkData("获取成功", list, c)
 }
 
-// GetLastApplyInfo 获取最近一条申请单信息
+// GetLastApplyRecord 获取最近一条申请单信息
 // @Tags 用户模块
 // @Summary  获取最近一条申请单信息
 // @Description 获取最近一条申请单信息
@@ -183,20 +183,53 @@ func Info(c *gin.Context) {
 // @Param Authorization	header string true "微信登录后获取到的token"
 // @Accept  json
 // @Product json
-// @Success 200 {object} user.Detail "获取成功"
+// @Success 200 {object} user.Record "获取成功"
 // @failure 400 {string} string "获取失败"
-// @Router /user/get_seller [get]
-func GetLastApplyInfo(c *gin.Context) {
+// @Router /user/get_last_apply_record [get]
+func GetLastApplyRecord(c *gin.Context) {
+	userInfo := userService.GetInfoByClaims(c)
+	record, err := userLogic.GetLastApplyInfo(int(userInfo.UserID))
+
+	if err != nil {
+		response.Fail("获取失败", c)
+		return
+	}
+
+	if record.RealName == "" {
+		response.Ok("获取成功", c)
+	} else {
+		response.OkData("获取成功", record, c)
+	}
+}
+
+// Apply
+// @Tags 用户模块
+// @Summary  用户申请
+// @Description 用户申请
+// @securityDefinitions.basic BasicAuth
+// @Param Authorization	header string true "微信登录后获取到的token"
+// @Accept  json
+// @Product json
+// @Param data body user.ApplyReq true "请求参数"
+// @Success 200 {object} user.LoginResp
+// @Router /user/apply [post]
+func Apply(c *gin.Context) {
+	var req user.ApplyReq
+	if c.ShouldBind(&req) != nil {
+		response.Fail("参数异常", c)
+		return
+	}
 	userInfo := userService.GetInfoByClaims(c)
-	userLogic.GetLastApplyInfo(int(userInfo.UserID))
-	//list, err, errMsg := userLogic.GetLastApplyInfo(*userInfo)
-	//if err != nil {
-	//	if errMsg != "" {
-	//		errMsg = "获取失败"
-	//	}
-	//	response.Fail(errMsg, c)
-	//	return
-	//}
-
-	response.OkData("获取成功", "list", c)
+	openId := userInfo.OpenID
+	if openId == "" {
+		response.Fail("参数异常", c)
+		return
+	}
+	_, err := userLogic.Apply(int(userInfo.UserID), userInfo.CompanyID, userInfo.Mobile, userInfo.Email, req)
+
+	if err != nil {
+		response.Fail("申请失败", c)
+		return
+	}
+	response.Ok("申请成功", c)
 }

+ 21 - 0
init_serve/router.go

@@ -1,6 +1,7 @@
 package init_serve
 
 import (
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"github.com/swaggo/gin-swagger"
 	"github.com/swaggo/gin-swagger/swaggerFiles"
@@ -8,10 +9,13 @@ import (
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/middleware"
 	"hongze/hongze_yb/routers"
+	"os/exec"
 )
 
 // InitRouter 初始化路由
 func InitRouter() (r *gin.Engine) {
+	//初始化生成API文档
+	initSwagger()
 	//设置
 	gin.SetMode(global.CONFIG.Serve.RunMode)
 	// 1.创建路由
@@ -39,3 +43,20 @@ func InitRouter() (r *gin.Engine) {
 	routers.InitUser(r)
 	return
 }
+
+//生成swagger文档
+func initSwagger() {
+	if global.CONFIG.Serve.RunMode == "debug" {
+		//cmd := exec.Command("cd /Users/roc/go/src/hongze/hongze_yb & swag init")
+		cmd := exec.Command("/bin/bash", "-c", "cd /Users/roc/go/src/hongze/hongze_yb & swag init")
+		//cmd := exec.Command("/bin/bash", "-c", `df -lh`)
+		//cmd := exec.Command("swag", "init")
+		str, err := cmd.Output()
+		if err != nil {
+			fmt.Println("API自动化文档生成失败,ERR:", err)
+			return
+		}
+		fmt.Println(string(str))
+		fmt.Println("API自动化文档生成成功")
+	}
+}

+ 74 - 12
logic/user/user.go

@@ -2,14 +2,17 @@ package user
 
 import (
 	"errors"
+	userReq "hongze/hongze_yb/models/request/user"
 	"hongze/hongze_yb/models/tables/chart_permission"
 	"hongze/hongze_yb/models/tables/company"
 	"hongze/hongze_yb/models/tables/company_product"
 	"hongze/hongze_yb/models/tables/rddp/msg_code"
+	"hongze/hongze_yb/models/tables/yb_apply_record"
 	"hongze/hongze_yb/services"
 	companyService "hongze/hongze_yb/services/company"
 	"hongze/hongze_yb/services/user"
 	"hongze/hongze_yb/utils"
+	"strings"
 	"time"
 )
 
@@ -185,17 +188,76 @@ func GetUserInfo(userInfo user.UserInfo) (userDetail Detail, err error, errMsg s
 }
 
 type Record struct {
-	//BusinessCardURL string    `gorm:"column:business_card_url;type:varchar(255);default:''" json:"businessCardUrl"` // 名片
-	//RealName        string    `gorm:"column:real_name;type:varchar(100);default:''" json:"realName"`                // 姓名
-	//CompanyName     string    `gorm:"column:company_name;type:varchar(255);default:''" json:"companyName"`          // 客户备注的公司名称
-	//Mobile          string    `gorm:"column:mobile;type:varchar(20);default:''" json:"mobile"`                      // 手机号
-	BusinessCardURL string `json:"business_card_url"`
+	BusinessCardURL string `json:"business_card_url" description:"名片"`
+	RealName        string `json:"real_name" description:"姓名"`
+	CompanyName     string `json:"company_name" description:"客户备注的公司名称"`
+	Mobile          string `json:"mobile" description:"手机号"`
 }
 
-//func GetLastApplyInfo(userId int) {
-//	record, err := yb_apply_record.GetLastNotOpRecordByUserId(userId)
-//	if err != nil {
-//
-//	}
-//
-//}
+// GetLastApplyInfo 获取最近的一套申请记录
+func GetLastApplyInfo(userId int) (record Record, err error) {
+	recordInfo, err := yb_apply_record.GetLastNotOpRecordByUserId(userId)
+	if err != nil {
+		if err == utils.ErrNoRow {
+			err = nil
+		}
+		return
+	}
+	record = Record{
+		BusinessCardURL: recordInfo.BusinessCardURL,
+		RealName:        recordInfo.RealName,
+		CompanyName:     recordInfo.CompanyName,
+		Mobile:          recordInfo.Mobile,
+	}
+	return
+}
+
+// Apply 客户申请
+func Apply(userId int, companyId int64, mobile, email string, applyInfo userReq.ApplyReq) (ybApplyRecord Record, err error) {
+	sellerName := ``
+	status := `潜在客户`
+	companyName := applyInfo.CompanyName
+
+	if companyId > 1 {
+		//客户信息
+		companyInfo, tmpErr := company.GetByCompanyId(companyId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		companyName = companyInfo.CompanyName
+
+		//客户产品权限
+		companyProductList, tmpErr := company_product.GetListByCompanyId(companyId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		sellerNameList := make([]string, 0)
+		statusList := make([]string, 0)
+		for _, companyProduct := range companyProductList {
+			sellerNameList = append(sellerNameList, companyProduct.SellerName)
+			statusList = append(statusList, companyProduct.Status)
+		}
+		if len(sellerNameList) > 0 && len(statusList) > 0 {
+			sellerName = strings.Join(sellerNameList, ",")
+			status = strings.Join(statusList, ",")
+		}
+	}
+	ybApplyRecord := &yb_apply_record.YbApplyRecord{
+		UserID:          userId,
+		BusinessCardURL: applyInfo.BusinessCardUrl,
+		RealName:        applyInfo.RealName,
+		CompanyName:     applyInfo.CompanyName,
+		Mobile:          mobile,
+		Email:           email,
+		Permission:      applyInfo.Permission,
+		SellerName:      sellerName,
+		Status:          status,
+		CompanyIDPay:    int(companyId),
+		CompanyNamePay:  companyName,
+		CreateTime:      time.Now(),
+	}
+	err = ybApplyRecord.Create()
+	return
+}

+ 7 - 0
models/request/user/user.go

@@ -7,3 +7,10 @@ type LoginReq struct {
 	AreaNum    int    `description:"国际区号" json:"area_num"`
 	VerifyCode string `description:"短信/邮箱 验证码" json:"verify_code"`
 }
+
+type ApplyReq struct {
+	BusinessCardUrl string `description:"名片地址" json:"business_card_url"`
+	CompanyName     string `description:"公司名称" json:"company_name"`
+	RealName        string `description:"用户真实姓名" json:"real_name"`
+	Permission      string `description:"用户关注品种,多个品种之间用英文,隔开" json:"permission"`
+}

+ 6 - 0
models/tables/company_product/query.go

@@ -12,6 +12,12 @@ func GetByCompany2ProductId(companyId, productId int64) (item *CompanyProduct, e
 	return
 }
 
+// GetListByCompanyId 根据客户id获取所有的产品信息列表
+func GetListByCompanyId(companyId int64) (items []*CompanyProduct, err error) {
+	err = global.DEFAULT_MYSQL.Where("company_id = ? and product_id", companyId).Find(&items).Error
+	return
+}
+
 // GetByEmail 根据邮箱号号获取信息
 func GetByEmail(email string) (item *CompanyProduct, err error) {
 	err = global.DEFAULT_MYSQL.Where("email = ? ", email).First(&item).Error

+ 3 - 2
models/tables/yb_activity/yb_activity.go

@@ -1,6 +1,8 @@
 package yb_activity
 
-import "time"
+import (
+	"time"
+)
 
 // YbActivity 弘则研小程序 活动表
 type YbActivity struct {
@@ -68,7 +70,6 @@ var YbActivityColumns = struct {
 	Remarks             string
 	UserID              string
 	PublishStatus       string
-	ActiveState         string
 	IsSendWxMsg         string
 	IsDelete            string
 	ArticleID           string

+ 3 - 3
models/tables/yb_apply_record/yb_apply_record.go

@@ -11,9 +11,9 @@ type YbApplyRecord struct {
 	CompanyName     string    `gorm:"column:company_name;type:varchar(255);default:''" json:"companyName"`          // 客户备注的公司名称
 	Mobile          string    `gorm:"column:mobile;type:varchar(20);default:''" json:"mobile"`                      // 手机号
 	Email           string    `gorm:"column:email;type:varchar(64);default:''" json:"email"`                        // 邮箱
+	Permission      string    `gorm:"column:permission;type:varchar(255);default:''" json:"permission"`             // 申请权限,多个权限用英文,隔开
 	SellerName      string    `gorm:"column:seller_name;type:varchar(64);default:''" json:"sellerName"`             // 销售姓名,多个产品销售用/隔开
 	Status          string    `gorm:"column:status;type:varchar(64);default:''" json:"status"`                      // 用户状态,多个产品状态用/隔开
-	ApplyMethod     int8      `gorm:"column:apply_method;type:tinyint(4)" json:"applyMethod"`                       // 0:未申请,1:已付费客户申请试用,2:非客户申请试用
 	CompanyIDPay    int       `gorm:"column:company_id_pay;type:int(11)" json:"companyIdPay"`                       // 已付费客户公司id
 	CompanyNamePay  string    `gorm:"column:company_name_pay;type:varchar(255);default:''" json:"companyNamePay"`   // 已付费客户公司名称
 	OpStatus        int       `gorm:"column:op_status;type:int(11);default:0" json:"opStatus"`                      // 操作状态,0:未处理,1:已处理
@@ -36,9 +36,9 @@ var YbApplyRecordColumns = struct {
 	CompanyName     string
 	Mobile          string
 	Email           string
+	Permission      string
 	SellerName      string
 	Status          string
-	ApplyMethod     string
 	CompanyIDPay    string
 	CompanyNamePay  string
 	OpStatus        string
@@ -53,9 +53,9 @@ var YbApplyRecordColumns = struct {
 	CompanyName:     "company_name",
 	Mobile:          "mobile",
 	Email:           "email",
+	Permission:      "permission",
 	SellerName:      "seller_name",
 	Status:          "status",
-	ApplyMethod:     "apply_method",
 	CompanyIDPay:    "company_id_pay",
 	CompanyNamePay:  "company_name_pay",
 	OpStatus:        "op_status",

+ 0 - 2
services/wx_app/wx_app.go

@@ -36,8 +36,6 @@ func GetWxApp() (miniprogram *miniprogram.MiniProgram) {
 
 	miniprogram = wc.GetMiniProgram(cfg)
 	return
-	//TODO 调用对应接口
-	//miniprogram.GetAnalysis().GetAnalysisDailyRetain()
 }
 
 // GetSession 获取用户详情