fuwencai 4 éve
szülő
commit
9f093cf960

+ 35 - 9
manage/product/product.go

@@ -3,6 +3,7 @@ package product
 import (
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
+	"net/http"
 	"sfbase/global"
 	"sfis/model"
 	"sfis/model/response"
@@ -26,22 +27,32 @@ func productCreate(context *gin.Context) {
 	var product model.Product
 	if err := context.ShouldBind(&product); err != nil {
 		global.Logger.Error("productCreate Bind Error", zap.Any("error", err))
-		response.FailWithMessage("参数错误", context)
+		response.FailWithDetailed(response.ParamError, nil, "参数错误", context)
 		return
 	}
-	service.CreateProduct(product, context)
+	err := service.CreateProduct(product)
+	if err != nil {
+		response.FailWithMessage(err.Error(), context)
+	} else {
+		response.OkWithMessage("创建成功", context)
+	}
+
 }
 
 // 删除产品
 func productDelete(context *gin.Context) {
 	var product model.Product
 	if err := context.ShouldBind(&product); err != nil {
-		response.FailWithMessage("参数错误", context)
+		response.FailWithDetailed(response.ParamError, nil, "参数错误", context)
 		global.Logger.Error("productDelete Bind Error", zap.Any("error", err))
 		return
 	}
-	service.DeleteProduct(product, context)
-
+	err := service.DeleteProduct(product)
+	if err != nil {
+		response.FailWithMessage(err.Error(), context)
+	} else {
+		response.OkWithMessage("删除成功", context)
+	}
 }
 
 //更新产品信息
@@ -54,7 +65,7 @@ func productUpdate(context *gin.Context) {
 	productType := context.PostForm("product_type")
 	testNum := context.PostForm("test_num")
 	if id_ == "" {
-		response.FailWithMessage("缺少id", context)
+		response.FailWithDetailed(response.ParamError, nil, "参数错误", context)
 		return
 	}
 	id, _ := strconv.Atoi(id_)
@@ -66,8 +77,13 @@ func productUpdate(context *gin.Context) {
 		"product_type": productType,
 		"test_num":     testNum}
 
-	global.Logger.Info("api userProjectChoose参数:", zap.Any("param", p))
-	service.UpdateProduct(p, id, context)
+	global.Logger.Info("api userProjectChoose参数:", zap.Any("param", p), zap.Any("id", id))
+	err := service.UpdateProduct(p, id)
+	if err != nil {
+		response.FailWithMessage(err.Error(), context)
+	} else {
+		response.OkWithMessage("更新成功", context)
+	}
 }
 
 // 产品信息列表
@@ -90,5 +106,15 @@ func productList(context *gin.Context) {
 		"product_type": productType,
 		"test_num":     testNum,
 	}
-	service.ListProduct(condMap, page, limit, context)
+	productList, totalCount, err := service.ListProduct(condMap, page, limit)
+	if err != nil {
+		response.FailWithMessage(err.Error(), context)
+	} else {
+		context.JSON(http.StatusOK, gin.H{
+			"code":       response.SUCCESS,
+			"data":       productList,
+			"msg":        "查询成功",
+			"totalCount": totalCount,
+		})
+	}
 }

+ 8 - 3
manage/user/user.go

@@ -30,7 +30,7 @@ func DevUserManageRegister(router *gin.Engine) {
 func userCreate(c *gin.Context) {
 	var user model.User
 	if err := c.ShouldBind(&user); err != nil {
-		response.FailWithMessage("参数错误",c)
+		response.FailWithMessage("参数错误", c)
 		return
 	}
 	global.Logger.Info("manage userCreate接口参数:", zap.Any("param", user))
@@ -39,8 +39,13 @@ func userCreate(c *gin.Context) {
 	key := sutils.GetComplexRandom(8, 3, 5)
 	user.SecretKey = key
 	user.AppID = appId
-	service.CreateUser(user,c)
-
+	// 创建用户
+	userData, err := service.CreateUser(user)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+	} else {
+		response.OkWithData(userData, c)
+	}
 }
 
 func userProductChoose(c *gin.Context) {

+ 5 - 7
model/response/response.go

@@ -8,16 +8,16 @@ import (
 
 const (
 	ERROR   int = -1
-	SUCCESS int = 1000
+	SUCCESS int = 0
 	//服务级错误码
 	EmptyResult                  int = 201  //查询无结果
-	ParamError                   int = 4001 //参数错误
+	ParamError                   int = 202 //参数错误
 	ParamEmpty                       = 203  //参数为空
 	ParamLenInValid              int = 204  //参数长度小于4
 	Waiting                      int = 205  //等待处理中
 	MoreThanQueryDataNumberLimit int = 206  //请求数据的条数超过上限
-	LeftNumEmpty                     = 4003 //余额不足
-	QueryError                   int = 4004 //系统查询异常,请联系客服
+	LeftNumEmpty                     = 207 //余额不足
+	QueryError                   int = 299 //系统查询异常,请联系客服
 
 	//系统级错误码
 	InValidKey    = 101 //当前KEY无效
@@ -27,7 +27,7 @@ const (
 	TokenExpired  = 107 //身份验证已过期
 
 	//105非法请求过多,请联系管理员
-	IpInvalid                       = 4005 //被禁止的IP
+	IpInvalid                       = 108 //被禁止的IP
 	MoreThanEveryDayQueryTimesLimit = 109  //请求超过每日系统限制
 	//108当前相同查询连续出错,请等2小时后重试
 	InterfaceRightInvalid           = 110 //接口权限未开通
@@ -36,8 +36,6 @@ const (
 	MoreThanEveryDayDataNumberLimit = 113 //请求超过每日调用总量限制
 	OtherError                      = 199 //系统未知错误,请联系技术客服
 	//
-	SignError   = 4000 //签名错误
-	SignExpired = 4002 //签名过期
 )
 
 type Response struct {

+ 2 - 2
model/user.go

@@ -7,10 +7,10 @@ import (
 type User struct {
 	BaseModel
 	Name        string `json:"name" form:"name" binding:"required"`
-	Phone       string `json:"phone" form:"phone"`
+	Phone       string `json:"phone" form:"phone" binding:"required"`
 	AppID       string `json:"app_id"`
 	SecretKey   string `json:"secret_key"`
-	IpWhiteList string `json:"ip_white_list" form:"ip_white_list"`
+	IpWhiteList string `json:"ip_white_list" form:"ip_white_list" binding:"required"`
 }
 
 func (user *User) TableName() string {

+ 24 - 42
service/product.go

@@ -1,52 +1,49 @@
 package service
 
 import (
+	"errors"
 	"fmt"
-	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
-	"net/http"
 	"sfbase/global"
 	"sfis/db"
 	"sfis/model"
-	"sfis/model/response"
 	"strconv"
 	"strings"
 )
 
 // 创建产品
-func CreateProduct(product model.Product, context *gin.Context) {
-	var tempProduct model.Product
+func CreateProduct(product model.Product) error {
+	var count int64
 	// 判断用产品id是否重复
-	db.GetSFISDB().Where("id = ?", product.ID).Find(&tempProduct)
-	fmt.Println(tempProduct)
-	if tempProduct.ID > 0 {
-		response.FailWithMessage("产品id重复", context)
-		return
+	db.GetSFISDB().Table("product").Where("id = ?", product.ID).Count(&count)
+	fmt.Println(count, product.ID)
+	if count > 0 {
+		return errors.New("产品id重复")
 	}
 	result := db.GetSFISDB().Create(&product)
 	if result.Error != nil {
 		global.Logger.Error("productCreate Error", zap.Any("product", product), zap.Any("error", result.Error))
-		response.FailWithMessage("产品创建失败", context)
+		return errors.New("产品创建失败")
 	} else {
 		global.Logger.Info("productCreate Success", zap.Any("product", product))
-		response.OkWithMessage("产品创建成功", context)
+		return nil
 	}
 }
 
 // 删除产品
-func DeleteProduct(product model.Product, context *gin.Context) {
+func DeleteProduct(product model.Product) error {
 	result := db.GetSFISDB().Delete(&product)
 	if result.Error != nil {
 		global.Logger.Error("productDelete Error", zap.Any("id", product.ID), zap.Any("error", result.Error))
-		response.FailWithMessage("产品删除失败", context)
+		return errors.New("产品删除失败")
 	} else {
 		global.Logger.Info("productDelete Success", zap.Any("id", product.ID))
-		response.OkWithMessage("产品删除成功", context)
+		return nil
 	}
 }
 
 //更新产品
-func UpdateProduct(updateMap map[string]interface{}, id int, context *gin.Context) {
+func UpdateProduct(updateMap map[string]interface{}, id int) error {
 	//移除map中为空串的key
 	for k, v := range updateMap {
 		if v == "" {
@@ -56,19 +53,18 @@ func UpdateProduct(updateMap map[string]interface{}, id int, context *gin.Contex
 			updateMap[k] = strV
 		}
 	}
-
 	result := db.GetSFISDB().Table("product").Where("id = ?", id).Updates(updateMap)
 	if result.Error != nil {
 		global.Logger.Error("productUpdate Error", zap.Any("updateMap", updateMap), zap.Any("error", result.Error))
-		response.FailWithMessage("产品更新失败", context)
+		return errors.New("更新失败")
 	} else {
 		global.Logger.Info("productUpdate Success", zap.Any("updateMap", updateMap))
-		response.OkWithMessage("产品更新成功", context)
+		return nil
 	}
 }
 
 // 查询产品
-func ListProduct(condMap map[string]interface{}, page int, limit int, context *gin.Context) {
+func ListProduct(condMap map[string]interface{}, page int, limit int) ([]model.Product, int64, error) {
 	// 拼查询sql
 	var products []model.Product
 	var key []string
@@ -89,35 +85,21 @@ func ListProduct(condMap map[string]interface{}, page int, limit int, context *g
 	}
 	sql := strings.Join(key, " and ")
 	var totalCount int64
-	errors := db.GetSFISDB().Table("product").Where(sql, param...).Count(&totalCount).Error
-	if errors != nil {
-		global.Logger.Error("productList search count Error", zap.Any("condMap", condMap), zap.Any("error", errors))
-		response.FailWithMessage("产品信息查询失败", context)
+	// 查询
+	err := db.GetSFISDB().Table("product").Where(sql, param...).Find(&products).Count(&totalCount).Error
+	if err != nil {
+		global.Logger.Error("productList search count Error", zap.Any("condMap", condMap), zap.Any("error", err))
+		return products, 0, errors.New("产品信息查询失败")
 	}
 	if totalCount == 0 {
-		context.JSON(http.StatusOK, map[string]interface{}{
-			"data":        products,
-			"msg":         "查询成功",
-			"total_count": 0,
-			"code":        response.SUCCESS,
-		})
-		//response.OkWithData(products, context)
-		return
+		return products, 0, nil
 	}
 	result := db.GetSFISDB().Table("product").Where(sql, param...).Limit(limit).Offset((page - 1) * limit).Find(&products)
 	if result.Error != nil {
 		global.Logger.Error("productList Error", zap.Any("condMap", condMap), zap.Any("error", result.Error))
-		response.FailWithMessage("产品信息查询失败", context)
+		return products, 0, errors.New("产品信息查询失败")
 	} else {
 		global.Logger.Info("productList Success", zap.Any("condMap", condMap))
-		//response.OkWithData(products, context)
-		response.OkWithData(products, context)
-		context.JSON(http.StatusOK, map[string]interface{}{
-			"data":        products,
-			"msg":         "查询成功",
-			"total_count": totalCount,
-			"code":        response.SUCCESS,
-		})
+		return products, totalCount, nil
 	}
-
 }

+ 12 - 5
service/user.go

@@ -1,6 +1,7 @@
 package service
 
 import (
+	"errors"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
 	"gorm.io/gorm"
@@ -195,14 +196,20 @@ func UserProductList(appId string, c *gin.Context) {
 }
 
 //创建用户
-func CreateUser(user model.User, c *gin.Context) {
+func CreateUser(user model.User) (model.User, error) {
 	var tempUser []model.User
 	// 判断用户名是否重复
 	db.GetSFISDB().Where("name = ?", user.Name).Find(&tempUser)
 	if len(tempUser) > 0 {
-		response.FailWithMessage("用户名已存在", c)
 		global.Logger.Error("userCreate Error", zap.Any("user", user), zap.Any("error", "用户名已存在"))
-		return
+		return user, errors.New("用户名已存在")
+	}
+	// 判断手机号是否重复
+	var tempUser_ []model.User
+	db.GetSFISDB().Where("phone = ?", user.Phone).Find(&tempUser_)
+	if len(tempUser_) > 0 {
+		global.Logger.Error("userCreate Error", zap.Any("user", user), zap.Any("error", "手机号已存在"))
+		return user, errors.New("手机号已存在")
 	}
 	errs := db.GetSFISDB().Transaction(func(tx *gorm.DB) error {
 		// 新增用户
@@ -224,14 +231,14 @@ func CreateUser(user model.User, c *gin.Context) {
 	})
 	if errs != nil {
 		global.Logger.Error("userCreate Error", zap.Any("user", user), zap.Any("error", errs))
-		response.FailWithMessage("创建失败", c)
+		return user, errors.New("创建失败")
 	} else {
 		global.Logger.Info("userCreate Success", zap.Any("user", user))
 		// 生全局内存锁
 		lock.MainLock.Lock()
 		lock.UserLockMap[user.AppID] = &sync.Mutex{}
 		lock.MainLock.Unlock()
-		response.OkWithDetailed(user, "创建成功", c)
+		return user, nil
 	}
 
 }

+ 11 - 14
test/manage/product_test.go

@@ -36,7 +36,7 @@ func Test_CreateProduct(t *testing.T) {
 
 // 删除产品 测试用例
 func Test_DeleteProduct(t *testing.T) {
-	productId := "2012"
+	productId := "2013"
 	log.Println("productDelete testing......")
 	data := make(url.Values)
 	data["id"] = []string{productId}
@@ -48,23 +48,22 @@ func Test_DeleteProduct(t *testing.T) {
 func Test_UpdateProduct(t *testing.T) {
 	log.Println("productUpdate testing......")
 	product1 := &model.Product{
-		ID:          2012,
-		Name:        "行业数据",
+		ID:          2013,
+		Name:        "医疗行业数据",
 		Path:        "/pathUpdate2",
 		UnitPrice:   50, //单价精确到分  5毛
-		//MinUnit:     1,  //最小单位1,即 5毛/条
-		//ProductType: 1,  //产品类型 0-按次 1-按条
+		MinUnit:     1,  //最小单位1,即 5毛/条
+		ProductType: 1,  //产品类型 0-按次 1-按条
 		TestNum:     500,
 	}
 	data := make(url.Values)
 	data["id"] = []string{strconv.Itoa(product1.ID)}
 	data["name"] = []string{product1.Name}
 	data["url"] = []string{product1.Path}
-	data["unit_price"] = []string{strconv.Itoa(product1.UnitPrice)}
-	data["min_unit"] = []string{strconv.Itoa(product1.MinUnit)}
-	data["product_type"] = []string{strconv.Itoa(product1.ProductType)}
-	data["test_num"] = []string{strconv.Itoa(product1.TestNum)}
-
+	//data["unit_price"] = []string{strconv.Itoa(product1.UnitPrice)}
+	//data["min_unit"] = []string{strconv.Itoa(product1.MinUnit)}
+	//data["product_type"] = []string{strconv.Itoa(product1.ProductType)}
+	//data["test_num"] = []string{strconv.Itoa(product1.TestNum)}
 
 	bs, _ := sutil.HttpPostForm("http://localhost:8080/manage/product/update", map[string]string{}, data)
 	log.Print(string(bs))
@@ -83,15 +82,13 @@ func Test_ListProduct(t *testing.T) {
 	}
 	data := make(url.Values)
 	//data["id"] = []string{strconv.Itoa(product1.ID)}
-	data["name"] = []string{product1.Name}
+	//data["name"] = []string{product1.Name}
 	//data["url"] = []string{product1.Path}
-	//data["unit_price"] = []string{strconv.Itoa(product1.UnitPrice)}
+	data["unit_price"] = []string{strconv.Itoa(product1.UnitPrice)}
 	//data["min_unit"] = []string{strconv.Itoa(product1.MinUnit)}
 	//data["product_type"] = []string{strconv.Itoa(product1.ProductType)}
 	//data["test_num"] = []string{strconv.Itoa(product1.TestNum)}
 
-
 	bs, _ := sutil.HttpPostForm("http://localhost:8080/manage/product/list", map[string]string{}, data)
 	log.Print(string(bs))
 }
-

+ 1 - 1
test/manage/user_test.go

@@ -43,7 +43,7 @@ func Test_CreateUser(t *testing.T) {
 	//secretKey := sutil.GetComplexRandom(8, 3, 5)
 
 	data := make(url.Values)
-	data["name"] = []string{"拓普公司测试2"}
+	data["name"] = []string{"拓普公司测试3"}
 	data["phone"] = []string{"18238182402"}
 	data["ip_white_list"] = []string{"*"}