package user import ( "encoding/json" "github.com/gin-gonic/gin" "go.uber.org/zap" "log" "sfbase/global" sutils "sfbase/utils" "sfis/db" "sfis/lock" "sfis/model" "sfis/model/response" "sfis/service" "sfis/utils" "strconv" "sync" "time" ) func DevUserManageRegister(router *gin.Engine) { userGroup := router.Group("/manage/user/") userGroup.Use() { userGroup.POST("/create", userCreate) userGroup.POST("/userProjectChoose", userProjectChoose) userGroup.POST("/userProjectList", userProjectList) } } // 创建用户 func userCreate(context *gin.Context) { var user model.User if err := context.ShouldBind(&user); err != nil { response.Fail(context) return } t := time.Now() appId := utils.GetAppID(t.Unix()) key := sutils.GetComplexRandom(8, 3, 5) user.SecretKey = key user.AppID = appId result := db.GetSFISDB().Create(&user) if result.Error != nil { global.Logger.Error("userCreate Error", zap.Any("user", user), zap.Any("error", result.Error)) response.Fail(context) } else { global.Logger.Info("userCreate Success", zap.Any("user", user)) // 生全局内存锁 lock.MainLock.Lock() lock.UserLockMap[appId] = &sync.Mutex{} lock.MainLock.Unlock() response.OkWithData(user, context) } } func userProjectChoose(c *gin.Context) { appId := c.PostForm("appId") projectIds := c.PostForm("projectIds") startTime := c.PostForm("startTime") //时间格式2021-01-11 16:50:06 endTime := c.PostForm("endTime") leftNum, _ := strconv.Atoi(c.PostForm("leftNum")) costModel, _ := strconv.Atoi(c.PostForm("costModel")) interfaceStatus, _ := strconv.Atoi(c.PostForm("interfaceStatus")) callTimesLimitDay, _ := strconv.Atoi(c.PostForm("callTimesLimitDay")) dataNumOneTimes, _ := strconv.Atoi(c.PostForm("dataNumOneTimes")) tradeMoney, _ := strconv.Atoi(c.PostForm("tradeMoney")) tradeMoney = tradeMoney * 100 buyType, _ := strconv.Atoi(c.PostForm("buyType")) historyUnitPrice, _ := strconv.Atoi(c.PostForm("historyUnitPrice")) log.Println("tradeMoney", tradeMoney) p := gin.H{ "appId": appId, "projectIds": projectIds, "startTime": startTime, "endTime": endTime, "leftNum": leftNum, "costModel": costModel, "interfaceStatus": interfaceStatus, "callTimesLimitDay": callTimesLimitDay, "dataNumOneTimes": dataNumOneTimes, } bs, _ := json.Marshal(p) param := string(bs) global.Logger.Info("api userProjectChoose参数:", zap.Any("param", param)) service.UserProject(projectIds, appId, startTime, endTime, leftNum, costModel, interfaceStatus, callTimesLimitDay, dataNumOneTimes, tradeMoney, buyType, historyUnitPrice, c) } func userProjectList(c *gin.Context) { appId := c.PostForm("appId") global.Logger.Info("manage userProjectList接口参数:", zap.Any("appId", appId)) service.UserProjectList(appId, c) }