mirror of
https://github.com/linux-do/new-api.git
synced 2025-11-12 09:03:42 +08:00
移除不必要的功能
This commit is contained in:
@@ -19,90 +19,84 @@ func UpdateMidjourneyTask() {
|
||||
for {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Printf("UpdateMidjourneyTask: %v", err)
|
||||
log.Printf("UpdateMidjourneyTask panic: %v", err)
|
||||
}
|
||||
}()
|
||||
time.Sleep(time.Duration(15) * time.Second)
|
||||
tasks := model.GetAllUnFinishTasks()
|
||||
if len(tasks) != 0 {
|
||||
//log.Printf("UpdateMidjourneyTask: %v", time.Now())
|
||||
ids := make([]string, 0)
|
||||
for _, task := range tasks {
|
||||
ids = append(ids, task.MjId)
|
||||
}
|
||||
requestUrl := "http://107.173.171.147:8080/mj/task/list-by-condition"
|
||||
requestBody := map[string]interface{}{
|
||||
"ids": ids,
|
||||
}
|
||||
jsonStr, err := json.Marshal(requestBody)
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask: %v", err)
|
||||
continue
|
||||
}
|
||||
req, err := http.NewRequest("POST", requestUrl, bytes.NewBuffer(jsonStr))
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask: %v", err)
|
||||
continue
|
||||
}
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req.Header.Set("mj-api-secret", "uhiftyuwadbkjshbiklahcuitguasguzhxliawodawdu")
|
||||
resp, err := httpClient.Do(req)
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask: %v", err)
|
||||
continue
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
var response []Midjourney
|
||||
err = json.NewDecoder(resp.Body).Decode(&response)
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask: %v", err)
|
||||
continue
|
||||
}
|
||||
for _, responseItem := range response {
|
||||
var midjourneyTask *model.Midjourney
|
||||
for _, mj := range tasks {
|
||||
mj.MjId = responseItem.MjId
|
||||
midjourneyTask = model.GetMjByuId(mj.Id)
|
||||
midjourneyChannel, err := model.GetChannelById(task.ChannelId, true)
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask: %v", err)
|
||||
task.FailReason = fmt.Sprintf("获取渠道信息失败,请联系管理员,渠道ID:%d", task.ChannelId)
|
||||
task.Status = "FAILURE"
|
||||
task.Progress = "100%"
|
||||
err := task.Update()
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask error: %v", err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if midjourneyTask != nil {
|
||||
midjourneyTask.Code = 1
|
||||
midjourneyTask.Progress = responseItem.Progress
|
||||
midjourneyTask.PromptEn = responseItem.PromptEn
|
||||
midjourneyTask.State = responseItem.State
|
||||
midjourneyTask.SubmitTime = responseItem.SubmitTime
|
||||
midjourneyTask.StartTime = responseItem.StartTime
|
||||
midjourneyTask.FinishTime = responseItem.FinishTime
|
||||
midjourneyTask.ImageUrl = responseItem.ImageUrl
|
||||
midjourneyTask.Status = responseItem.Status
|
||||
midjourneyTask.FailReason = responseItem.FailReason
|
||||
if midjourneyTask.Progress != "100%" && responseItem.FailReason != "" {
|
||||
log.Println(midjourneyTask.MjId + " 构建失败," + midjourneyTask.FailReason)
|
||||
midjourneyTask.Progress = "100%"
|
||||
err = model.CacheUpdateUserQuota(midjourneyTask.UserId)
|
||||
if err != nil {
|
||||
log.Println("error update user quota cache: " + err.Error())
|
||||
} else {
|
||||
modelRatio := common.GetModelRatio(imageModel)
|
||||
groupRatio := common.GetGroupRatio("default")
|
||||
ratio := modelRatio * groupRatio
|
||||
quota := int(ratio * 1 * 1000)
|
||||
if quota != 0 {
|
||||
err := model.IncreaseUserQuota(midjourneyTask.UserId, quota)
|
||||
if err != nil {
|
||||
log.Println("fail to increase user quota")
|
||||
}
|
||||
logContent := fmt.Sprintf("%s 构图失败,补偿 %s", midjourneyTask.MjId, common.LogQuota(quota))
|
||||
model.RecordLog(midjourneyTask.UserId, 1, logContent)
|
||||
requestUrl := fmt.Sprintf("%s/mj/task/%s/fetch", midjourneyChannel.BaseURL, task.MjId)
|
||||
|
||||
req, err := http.NewRequest("GET", requestUrl, bytes.NewBuffer([]byte("")))
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask error: %v", err)
|
||||
continue
|
||||
}
|
||||
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
req.Header.Set("mj-api-secret", midjourneyChannel.Key)
|
||||
resp, err := httpClient.Do(req)
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask error: %v", err)
|
||||
continue
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
var responseItem Midjourney
|
||||
err = json.NewDecoder(resp.Body).Decode(&responseItem)
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask error: %v", err)
|
||||
continue
|
||||
}
|
||||
task.Code = 1
|
||||
task.Progress = responseItem.Progress
|
||||
task.PromptEn = responseItem.PromptEn
|
||||
task.State = responseItem.State
|
||||
task.SubmitTime = responseItem.SubmitTime
|
||||
task.StartTime = responseItem.StartTime
|
||||
task.FinishTime = responseItem.FinishTime
|
||||
task.ImageUrl = responseItem.ImageUrl
|
||||
task.Status = responseItem.Status
|
||||
task.FailReason = responseItem.FailReason
|
||||
if task.Progress != "100%" && responseItem.FailReason != "" {
|
||||
log.Println(task.MjId + " 构建失败," + task.FailReason)
|
||||
task.Progress = "100%"
|
||||
err = model.CacheUpdateUserQuota(task.UserId)
|
||||
if err != nil {
|
||||
log.Println("error update user quota cache: " + err.Error())
|
||||
} else {
|
||||
modelRatio := common.GetModelRatio(imageModel)
|
||||
groupRatio := common.GetGroupRatio("default")
|
||||
ratio := modelRatio * groupRatio
|
||||
quota := int(ratio * 1 * 1000)
|
||||
if quota != 0 {
|
||||
err := model.IncreaseUserQuota(task.UserId, quota)
|
||||
if err != nil {
|
||||
log.Println("fail to increase user quota")
|
||||
}
|
||||
logContent := fmt.Sprintf("%s 构图失败,补偿 %s", task.MjId, common.LogQuota(quota))
|
||||
model.RecordLog(task.UserId, 1, logContent)
|
||||
}
|
||||
}
|
||||
|
||||
err = midjourneyTask.Update()
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTaskFail: %v", err)
|
||||
}
|
||||
log.Printf("UpdateMidjourneyTask: %v", midjourneyTask)
|
||||
}
|
||||
|
||||
err = task.Update()
|
||||
if err != nil {
|
||||
log.Printf("UpdateMidjourneyTask error: %v", err)
|
||||
}
|
||||
log.Printf("UpdateMidjourneyTask success: %v", task)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,15 +27,16 @@ func GetStatus(c *gin.Context) {
|
||||
"wechat_qrcode": common.WeChatAccountQRCodeImageURL,
|
||||
"wechat_login": common.WeChatAuthEnabled,
|
||||
"server_address": common.ServerAddress,
|
||||
"pay_address": common.PayAddress,
|
||||
"epay_id": common.EpayId,
|
||||
"epay_key": common.EpayKey,
|
||||
"price": common.Price,
|
||||
"turnstile_check": common.TurnstileCheckEnabled,
|
||||
"turnstile_site_key": common.TurnstileSiteKey,
|
||||
"top_up_link": common.TopUpLink,
|
||||
"chat_link": common.ChatLink,
|
||||
"quota_per_unit": common.QuotaPerUnit,
|
||||
"display_in_currency": common.DisplayInCurrencyEnabled,
|
||||
"normal_price": common.NormalPrice,
|
||||
"stable_price": common.StablePrice,
|
||||
"base_price": common.BasePrice,
|
||||
},
|
||||
})
|
||||
return
|
||||
|
||||
@@ -356,6 +356,7 @@ func relayMidjourneySubmit(c *gin.Context, relayMode int) *MidjourneyResponse {
|
||||
Status: "",
|
||||
Progress: "0%",
|
||||
FailReason: "",
|
||||
ChannelId: c.GetInt("channel_id"),
|
||||
}
|
||||
if midjResponse.Code == 4 || midjResponse.Code == 24 {
|
||||
midjourneyTask.FailReason = midjResponse.Description
|
||||
|
||||
@@ -105,7 +105,6 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
|
||||
case common.ChannelTypeXunfei:
|
||||
apiType = APITypeXunfei
|
||||
}
|
||||
isStable := c.GetBool("stable")
|
||||
|
||||
baseURL := common.ChannelBaseURLs[channelType]
|
||||
requestURL := c.Request.URL.String()
|
||||
@@ -189,15 +188,10 @@ func relayTextHelper(c *gin.Context, relayMode int) *OpenAIErrorWithStatusCode {
|
||||
preConsumedTokens = promptTokens + textRequest.MaxTokens
|
||||
}
|
||||
modelRatio := common.GetModelRatio(textRequest.Model)
|
||||
stableRatio := modelRatio
|
||||
groupRatio := common.GetGroupRatio(group)
|
||||
ratio := modelRatio * groupRatio
|
||||
preConsumedQuota := int(float64(preConsumedTokens) * ratio)
|
||||
userQuota, err := model.CacheGetUserQuota(userId)
|
||||
if isStable {
|
||||
stableRatio = (common.StablePrice / common.BasePrice) * modelRatio
|
||||
ratio = stableRatio * groupRatio
|
||||
}
|
||||
if err != nil {
|
||||
return errorWrapper(err, "get_user_quota_failed", http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
@@ -24,31 +24,23 @@ type AmountRequest struct {
|
||||
TopUpCode string `json:"top_up_code"`
|
||||
}
|
||||
|
||||
//var client, _ = epay.NewClientWithUrl(&epay.Config{
|
||||
// PartnerID: "1096",
|
||||
// Key: "n08V9LpE8JffA3NPP893689u8p39NV9J",
|
||||
//}, "https://api.lempay.org")
|
||||
|
||||
var client, _ = epay.NewClientWithUrl(&epay.Config{
|
||||
PartnerID: "1064",
|
||||
Key: "nqrrZ5RjR86mKP8rKkyrOY5Pg8NmYfKR",
|
||||
}, "https://pay.yunjuw.cn")
|
||||
|
||||
func GetAmount(id int, count float64, topUpCode string) float64 {
|
||||
amount := count * 1.5
|
||||
if topUpCode != "" {
|
||||
if topUpCode == "nekoapi" {
|
||||
if id == 89 {
|
||||
amount = count * 0.8
|
||||
} else if id == 105 || id == 107 {
|
||||
amount = count * 1.2
|
||||
} else if id == 1 {
|
||||
amount = count * 1
|
||||
} else if id == 98 {
|
||||
amount = count * 1.1
|
||||
}
|
||||
}
|
||||
func GetEpayClient() *epay.Client {
|
||||
if common.PayAddress == "" || common.EpayId == "" || common.EpayKey == "" {
|
||||
return nil
|
||||
}
|
||||
withUrl, err := epay.NewClientWithUrl(&epay.Config{
|
||||
PartnerID: common.EpayId,
|
||||
Key: common.EpayKey,
|
||||
}, common.PayAddress)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
return withUrl
|
||||
}
|
||||
|
||||
func GetAmount(count float64) float64 {
|
||||
// 别问为什么用float64,问就是这么点钱没必要
|
||||
amount := count * float64(common.Price)
|
||||
return amount
|
||||
}
|
||||
|
||||
@@ -60,38 +52,24 @@ func RequestEpay(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
id := c.GetInt("id")
|
||||
amount := GetAmount(id, float64(req.Amount), req.TopUpCode)
|
||||
if id != 1 {
|
||||
if req.Amount < 10 {
|
||||
c.JSON(200, gin.H{"message": "最小充值10元", "data": amount, "count": 10})
|
||||
return
|
||||
}
|
||||
}
|
||||
amount := GetAmount(float64(req.Amount))
|
||||
|
||||
if req.PaymentMethod == "zfb" {
|
||||
if amount > 2000 {
|
||||
c.JSON(200, gin.H{"message": "支付宝最大充值2000元", "data": amount, "count": 2000})
|
||||
return
|
||||
}
|
||||
req.PaymentMethod = "alipay"
|
||||
}
|
||||
if req.PaymentMethod == "wx" {
|
||||
if amount > 2000 {
|
||||
c.JSON(200, gin.H{"message": "微信最大充值2000元", "data": amount, "count": 2000})
|
||||
return
|
||||
}
|
||||
req.PaymentMethod = "wxpay"
|
||||
}
|
||||
|
||||
returnUrl, _ := url.Parse("https://nekoapi.com/log")
|
||||
notifyUrl, _ := url.Parse("https://nekoapi.com/api/user/epay/notify")
|
||||
returnUrl, _ := url.Parse(common.ServerAddress + "/log")
|
||||
notifyUrl, _ := url.Parse(common.ServerAddress + "/api/user/epay/notify")
|
||||
tradeNo := strconv.FormatInt(time.Now().Unix(), 10)
|
||||
payMoney := amount
|
||||
//if payMoney < 400 {
|
||||
// payMoney = amount * 0.99
|
||||
// if amount-payMoney > 2 {
|
||||
// payMoney = amount - 2
|
||||
// }
|
||||
//}
|
||||
client := GetEpayClient()
|
||||
if client == nil {
|
||||
c.JSON(200, gin.H{"message": "error", "data": "当前管理员未配置支付信息"})
|
||||
return
|
||||
}
|
||||
uri, params, err := client.Purchase(&epay.PurchaseArgs{
|
||||
Type: epay.PurchaseType(req.PaymentMethod),
|
||||
ServiceTradeNo: "A" + tradeNo,
|
||||
@@ -126,6 +104,14 @@ func EpayNotify(c *gin.Context) {
|
||||
r[t] = c.Request.URL.Query().Get(t)
|
||||
return r
|
||||
}, map[string]string{})
|
||||
client := GetEpayClient()
|
||||
if client == nil {
|
||||
log.Println("易支付回调失败 未找到配置信息")
|
||||
_, err := c.Writer.Write([]byte("fail"))
|
||||
if err != nil {
|
||||
log.Println("易支付回调写入失败")
|
||||
}
|
||||
}
|
||||
verifyInfo, err := client.Verify(params)
|
||||
if err == nil && verifyInfo.VerifyStatus {
|
||||
_, err := c.Writer.Write([]byte("success"))
|
||||
@@ -168,20 +154,9 @@ func RequestAmount(c *gin.Context) {
|
||||
var req AmountRequest
|
||||
err := c.ShouldBindJSON(&req)
|
||||
if err != nil {
|
||||
c.JSON(200, gin.H{"message": err.Error(), "data": 10})
|
||||
c.JSON(200, gin.H{"message": "error", "data": "参数错误"})
|
||||
return
|
||||
}
|
||||
id := c.GetInt("id")
|
||||
if id != 1 {
|
||||
if req.Amount < 10 {
|
||||
c.JSON(200, gin.H{"message": "最小充值10刀", "data": GetAmount(id, 10, req.TopUpCode), "count": 10})
|
||||
return
|
||||
}
|
||||
//if req.Amount > 1500 {
|
||||
// c.JSON(200, gin.H{"message": "最大充值1000刀", "data": GetAmount(id, 1000, req.TopUpCode), "count": 1500})
|
||||
// return
|
||||
//}
|
||||
}
|
||||
|
||||
c.JSON(200, gin.H{"message": "success", "data": GetAmount(id, float64(req.Amount), req.TopUpCode)})
|
||||
c.JSON(200, gin.H{"message": "success", "data": GetAmount(float64(req.Amount))})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user