huangjiajun 2 tygodni temu
rodzic
commit
822fd70948
8 zmienionych plików z 127 dodań i 106 usunięć
  1. +1
    -1
      app/store/svc/svc_announcement.go
  2. +1
    -1
      app/store/svc/svc_demo.go
  3. +5
    -5
      app/store/svc/svc_director.go
  4. +5
    -5
      app/store/svc/svc_index.go
  5. +1
    -4
      app/store/svc/svc_pay.go
  6. +102
    -89
      app/store/svc/svc_task.go
  7. +11
    -0
      app/store/svc/svc_task_order.go
  8. +1
    -1
      go.mod

+ 1
- 1
app/store/svc/svc_announcement.go Wyświetl plik

@@ -39,7 +39,7 @@ func AnnouncementList(c *gin.Context) {
levelList = append(levelList, map[string]string{"name": v.LevelName, "value": utils.IntToStr(v.Id)}) levelList = append(levelList, map[string]string{"name": v.LevelName, "value": utils.IntToStr(v.Id)})
} }
var task = make([]models.CampTaskList, 0) var task = make([]models.CampTaskList, 0)
svc.MasterDb(c).Where("store_id=?", storeId).Find(&task)
svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId).Find(&task)
taskList := make([]map[string]string, 0) taskList := make([]map[string]string, 0)
for _, v := range task { for _, v := range task {
taskList = append(taskList, map[string]string{"name": v.Name, "value": utils.IntToStr(v.Id)}) taskList = append(taskList, map[string]string{"name": v.Name, "value": utils.IntToStr(v.Id)})


+ 1
- 1
app/store/svc/svc_demo.go Wyświetl plik

@@ -18,7 +18,7 @@ func DemoList(c *gin.Context) {
storeId := svc.GetCampStoreId(c) storeId := svc.GetCampStoreId(c)
list := make([]map[string]string, 0) list := make([]map[string]string, 0)
var data = make([]models.CampTaskList, 0) var data = make([]models.CampTaskList, 0)
sess := svc.MasterDb(c).Where("store_id=?", storeId)
sess := svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId)
count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("apply_time desc,id desc").FindAndCount(&data) count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("apply_time desc,id desc").FindAndCount(&data)
res := map[string]interface{}{ res := map[string]interface{}{
"list": list, "list": list,


+ 5
- 5
app/store/svc/svc_director.go Wyświetl plik

@@ -23,7 +23,7 @@ func DirectorList(c *gin.Context) {
count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("id desc").FindAndCount(&data) count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("id desc").FindAndCount(&data)
taskList := make([]map[string]string, 0) taskList := make([]map[string]string, 0)
taskListMap := make([]models.CampTaskList, 0) taskListMap := make([]models.CampTaskList, 0)
svc.MasterDb(c).Where("store_id=?", storeId).Find(&taskListMap)
svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId).Find(&taskListMap)
for _, v := range taskListMap { for _, v := range taskListMap {
tmp := map[string]string{ tmp := map[string]string{
"name": v.Name, "value": utils.IntToStr(v.Id), "store_id": v.Contact, "name": v.Name, "value": utils.IntToStr(v.Id), "store_id": v.Contact,
@@ -95,19 +95,19 @@ func DirectorTaskSave(c *gin.Context) {
sess := svc.MasterDb(c).NewSession() sess := svc.MasterDb(c).NewSession()
defer sess.Close() defer sess.Close()
sess.Begin() sess.Begin()
count, _ := sess.Where("contact!=?", "0").In("id", args.TaskIds).Cols("contact").Count(&models.CampTaskList{})
count, _ := sess.Where("contact!=? and is_delete=0", "0").In("id", args.TaskIds).Cols("contact").Count(&models.CampTaskList{})
if count > 0 { if count > 0 {
sess.Rollback() sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "部分任务已绑定负责人")) e.OutErr(c, 400, e.NewErr(400, "部分任务已绑定负责人"))
return return
} }
_, err := sess.Where("contact=?", args.Id).NotIn("id", args.TaskIds).Cols("contact").Update(&models.CampTaskList{Contact: "0"})
_, err := sess.Where("contact=? and is_delete=0", args.Id).NotIn("id", args.TaskIds).Cols("contact").Update(&models.CampTaskList{Contact: "0"})
if err != nil { if err != nil {
sess.Rollback() sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "修改失败")) e.OutErr(c, 400, e.NewErr(400, "修改失败"))
return return
} }
_, err = sess.Where("contact=?", "0").In("id", args.TaskIds).Cols("contact").Update(&models.CampTaskList{Contact: args.Id})
_, err = sess.Where("contact=? and is_delete=0", "0").In("id", args.TaskIds).Cols("contact").Update(&models.CampTaskList{Contact: args.Id})
if err != nil { if err != nil {
sess.Rollback() sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "修改失败")) e.OutErr(c, 400, e.NewErr(400, "修改失败"))
@@ -123,7 +123,7 @@ func DirectorDel(c *gin.Context) {
return return
} }
svc.MasterDb(c).In("id", args.Ids).Delete(&models.CampTaskStoreUser{}) svc.MasterDb(c).In("id", args.Ids).Delete(&models.CampTaskStoreUser{})
svc.MasterDb(c).In("contact", args.Ids).Cols("contact").Update(&models.CampTaskList{Contact: "0"})
svc.MasterDb(c).Where(" is_delete=0").In("contact", args.Ids).Cols("contact").Update(&models.CampTaskList{Contact: "0"})
e.OutSuc(c, "success", nil) e.OutSuc(c, "success", nil)
return return
} }

+ 5
- 5
app/store/svc/svc_index.go Wyświetl plik

@@ -11,9 +11,9 @@ import (


func Index(c *gin.Context) { func Index(c *gin.Context) {
storeId := svc.GetCampStoreId(c) storeId := svc.GetCampStoreId(c)
allTaskCount, _ := svc.MasterDb(c).Where("store_id=?", storeId).Count(&models.CampTaskList{})
allTaskCount, _ := svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId).Count(&models.CampTaskList{})
orderCount, _ := svc.MasterDb(c).Where("store_id=? and state=1", storeId).Count(&models.CampTaskUserPromotionOrder{}) orderCount, _ := svc.MasterDb(c).Where("store_id=? and state=1", storeId).Count(&models.CampTaskUserPromotionOrder{})
settleCount, _ := svc.MasterDb(c).Where("store_id=? and state=1", storeId).Sum(&models.CampTaskUserPromotionOrder{}, "payment")
settleCount, _ := svc.MasterDb(c).Where("store_id=? and settle_time is not null", storeId).Sum(&models.CampTaskUserPromotionOrder{}, "payment")
totalList := []map[string]string{ totalList := []map[string]string{
{"name": "发布总的任务数", "value": utils.Int64ToStr(allTaskCount), "unit": "(个)"}, {"name": "发布总的任务数", "value": utils.Int64ToStr(allTaskCount), "unit": "(个)"},
{"name": "已完成的订单总数", "value": utils.Int64ToStr(orderCount), "unit": "(单)"}, {"name": "已完成的订单总数", "value": utils.Int64ToStr(orderCount), "unit": "(单)"},
@@ -58,9 +58,9 @@ func Index(c *gin.Context) {
} }
func StoreIndex(c *gin.Context) { func StoreIndex(c *gin.Context) {
storeId := svc.GetCampStoreId(c) storeId := svc.GetCampStoreId(c)
allTaskCount, _ := svc.MasterDb(c).Where("store_id=?", storeId).Count(&models.CampTaskList{})
orderCount, _ := svc.MasterDb(c).Where("store_id=? and settle_state=0", storeId).Count(&models.CampTaskUserPromotionOrder{})
orderMoney, _ := svc.MasterDb(c).Where("store_id=? and settle_state=0", storeId).Sum(&models.CampTaskUserPromotionOrder{}, "payment")
allTaskCount, _ := svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId).Count(&models.CampTaskList{})
orderCount, _ := svc.MasterDb(c).Where("store_id=? and settle_time is null", storeId).Count(&models.CampTaskUserPromotionOrder{})
orderMoney, _ := svc.MasterDb(c).Where("store_id=? and settle_time is null", storeId).Sum(&models.CampTaskUserPromotionOrder{}, "payment")
settleCount, _ := svc.MasterDb(c).Where("store_id=?", storeId).Sum(&models.CampTaskStoreUserAmount{}, "amount") settleCount, _ := svc.MasterDb(c).Where("store_id=?", storeId).Sum(&models.CampTaskStoreUserAmount{}, "amount")
totalList := []map[string]string{ totalList := []map[string]string{
{"name": "当前待结算订单", "value": utils.Int64ToStr(orderCount)}, {"name": "当前待结算订单", "value": utils.Int64ToStr(orderCount)},


+ 1
- 4
app/store/svc/svc_pay.go Wyświetl plik

@@ -73,10 +73,8 @@ func CommMoneyCallback(c *gin.Context, oid string) error {
} }
} }
amountData.Amount = utils.Float64ToStr(utils.StrToFloat64(amountData.Amount) + utils.StrToFloat64(data.Money)) amountData.Amount = utils.Float64ToStr(utils.StrToFloat64(amountData.Amount) + utils.StrToFloat64(data.Money))
var flow = models.CampTaskDeductList{
var flow = models.CampTaskDeductMoneyList{
Type: 0, Type: 0,
Num: 0,
AfterNum: 0,
CreateTime: time.Now(), CreateTime: time.Now(),
Money: data.Money, Money: data.Money,
AfterMoney: amountData.Amount, AfterMoney: amountData.Amount,
@@ -87,7 +85,6 @@ func CommMoneyCallback(c *gin.Context, oid string) error {
_, err = svc.MasterDb(c).InsertOne(&flow) _, err = svc.MasterDb(c).InsertOne(&flow)
if err != nil { if err != nil {
sess.Rollback() sess.Rollback()

return e.NewErr(400, "修改失败") return e.NewErr(400, "修改失败")
} }
_, err = svc.MasterDb(c).Where("id=?", amountData.Id).Update(amountData) _, err = svc.MasterDb(c).Where("id=?", amountData.Id).Update(amountData)


+ 102
- 89
app/store/svc/svc_task.go Wyświetl plik

@@ -29,7 +29,7 @@ func TaskList(c *gin.Context) {
if store.Pid > 0 { if store.Pid > 0 {
contact = append(contact, utils.IntToStr(store.Id)) contact = append(contact, utils.IntToStr(store.Id))
} }
sess := svc.MasterDb(c).Where("store_id=?", storeId).In("contact", contact)
sess := svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId).In("contact", contact)
if args.TaskType != "" { if args.TaskType != "" {
sess.And("first_cid=?", args.TaskType) sess.And("first_cid=?", args.TaskType)
} }
@@ -233,12 +233,6 @@ func TaskSave(c *gin.Context) {
return return
} }


sql := `select SUM(price*num) as amount from camp_task_list where store_id=? and state=0 and audit_type in(2,3)`
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql, storeId)
var amount float64 = 0
for _, v := range nativeString {
amount = utils.StrToFloat64(v["amount"])
}
amountDb := implement.NewCampTaskStoreUserAmountDb(svc.MasterDb(c)) amountDb := implement.NewCampTaskStoreUserAmountDb(svc.MasterDb(c))
userAmount, _ := amountDb.GetCampTaskAmountByStoreId(utils.IntToStr(storeId)) userAmount, _ := amountDb.GetCampTaskAmountByStoreId(utils.IntToStr(storeId))
if userAmount == nil { if userAmount == nil {
@@ -264,7 +258,6 @@ func TaskSave(c *gin.Context) {
var task *models.CampTaskList var task *models.CampTaskList
var taskDetail *models.CampTaskDetail var taskDetail *models.CampTaskDetail
var taskNotice *models.CampTaskNotice var taskNotice *models.CampTaskNotice
isFirst := 0
if utils.StrToInt(args.Id) > 0 { if utils.StrToInt(args.Id) > 0 {
taskDb := implement.NewCampTaskListDb(svc.MasterDb(c)) taskDb := implement.NewCampTaskListDb(svc.MasterDb(c))
task, _ = taskDb.GetCampTaskByIdSess(sess, args.Id) task, _ = taskDb.GetCampTaskByIdSess(sess, args.Id)
@@ -273,13 +266,11 @@ func TaskSave(c *gin.Context) {
taskNoticeDb := implement.NewCampTaskNoticeDb(svc.MasterDb(c)) taskNoticeDb := implement.NewCampTaskNoticeDb(svc.MasterDb(c))
taskNotice, _ = taskNoticeDb.GetCampTaskNoticeByTaskIdSess(sess, args.Id) taskNotice, _ = taskNoticeDb.GetCampTaskNoticeByTaskIdSess(sess, args.Id)
} else { } else {
isFirst = 1
task = &models.CampTaskList{ task = &models.CampTaskList{
CreateTime: time.Now(), CreateTime: time.Now(),
UpdateTime: time.Now(), UpdateTime: time.Now(),
StoreId: storeId, StoreId: storeId,
Contact: "0", Contact: "0",
AuditNum: utils.StrToInt(args.Num),
Sum: utils.StrToInt(args.Num), Sum: utils.StrToInt(args.Num),
Num: utils.StrToInt(args.Num), Num: utils.StrToInt(args.Num),
} }
@@ -319,23 +310,12 @@ func TaskSave(c *gin.Context) {
task.UpDownState = 0 //要先下架 task.UpDownState = 0 //要先下架
task.AuditType = 2 task.AuditType = 2
//判断下要不要改数量 //判断下要不要改数量
num := 0
if isFirst == 1 {
num = task.Num
}
if task.Num != utils.StrToInt(args.Num) { if task.Num != utils.StrToInt(args.Num) {
leave := task.Num - utils.StrToInt(args.Num)
task.AuditType = 3 task.AuditType = 3
if leave < 0 {
leave = utils.StrToInt(args.Num) - task.Num
num = leave
}
task.AuditNum = leave //正负数 负数是减少的 要补钱 正数是加多的要扣钱
}
if utils.StrToFloat64(userAmount.Amount) < amount+(utils.StrToFloat64(args.Price)*float64(num)) && (num > 0 || isFirst == 1) {
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
task.OldNum = task.Num
} }
task.Num = utils.StrToInt(args.Num)

task.UpdateTime = time.Now() task.UpdateTime = time.Now()
task.Price = args.Price task.Price = args.Price
task.Name = args.Name task.Name = args.Name
@@ -375,6 +355,20 @@ func TaskSave(c *gin.Context) {
e.OutErr(c, 400, e.NewErr(400, "发布失败")) e.OutErr(c, 400, e.NewErr(400, "发布失败"))
return return
} }
if task.SettleType == 0 {
sql := `select SUM(price*num) as amount from camp_task_list where is_delete=0 and store_id=? and state in(0,1) and settle_type=0 and audit_type in(2,3)`
nativeString, _ := db.QueryNativeStringWithSession(sess, sql, storeId)
var amount float64 = 0
for _, v := range nativeString {
amount = utils.StrToFloat64(v["amount"])
}
if utils.StrToFloat64(userAmount.Amount) < amount {
sess.Rollback()
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
}

sess.Commit() sess.Commit()
e.OutSuc(c, "success", nil) e.OutSuc(c, "success", nil)
return return
@@ -386,32 +380,6 @@ func TaskUp(c *gin.Context) {
return return
} }
storeId := svc.GetCampStoreId(c) storeId := svc.GetCampStoreId(c)
taskDb := implement.NewCampTaskListDb(svc.MasterDb(c))
task, _ := taskDb.GetCampTaskById(args["id"])
if task.UpDownState == 1 {
e.OutErr(c, 400, e.NewErr(400, "该任务已上架"))
return
}
if task.State == 0 {
e.OutErr(c, 400, e.NewErr(400, "该任务正在审核"))
return
}
sql := `select SUM(price*num) as amount from camp_task_list where store_id=? and state=0 and audit_type in(2,3)`
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql, storeId)
var amount float64 = 0
for _, v := range nativeString {
amount = utils.StrToFloat64(v["amount"])
}
amountDb := implement.NewCampTaskStoreUserAmountDb(svc.MasterDb(c))
userAmount, _ := amountDb.GetCampTaskAmountByStoreId(utils.IntToStr(storeId))
if userAmount == nil {
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
if utils.StrToFloat64(userAmount.Amount) < amount+(utils.StrToFloat64(task.Price)*float64(task.Num)) {
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
// 加锁 防止并发提取 // 加锁 防止并发提取
mutexKey := fmt.Sprintf("%s:camp_task_up:%d", c.GetString("mid"), storeId) mutexKey := fmt.Sprintf("%s:camp_task_up:%d", c.GetString("mid"), storeId)
withdrawAvailable, err := cache.Do("SET", mutexKey, 1, "EX", 5, "NX") withdrawAvailable, err := cache.Do("SET", mutexKey, 1, "EX", 5, "NX")
@@ -423,15 +391,53 @@ func TaskUp(c *gin.Context) {
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试"))
return return
} }
sess := svc.MasterDb(c).NewSession()
defer sess.Close()
sess.Begin()
taskDb := implement.NewCampTaskListDb(svc.MasterDb(c))
task, _ := taskDb.GetCampTaskByIdSess(sess, args["id"])
if task.UpDownState == 1 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "该任务已上架"))
return
}
if task.State == 0 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "该任务正在审核"))
return
}
task.State = 0 task.State = 0
task.AuditType = 2 task.AuditType = 2
task.ApplyTime = time.Now() task.ApplyTime = time.Now()
task.UpdateTime = time.Now() task.UpdateTime = time.Now()
update, _ := svc.MasterDb(c).Where("id=?", task.Id).Cols("state,audit_type,apply_time,update_time").Update(task)
update, _ := sess.Where("id=?", task.Id).Cols("state,audit_type,apply_time,update_time").Update(task)
if update == 0 { if update == 0 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "上架申请失败")) e.OutErr(c, 400, e.NewErr(400, "上架申请失败"))
return return
} }
if task.SettleType == 0 {
sql := `select SUM(price*num) as amount from camp_task_list where is_delete=0 and store_id=? and state in(0,1) and settle_type=0 and audit_type in(2,3)`
nativeString, _ := db.QueryNativeStringWithSession(sess, sql, storeId)
var amount float64 = 0
for _, v := range nativeString {
amount = utils.StrToFloat64(v["amount"])
}
amountDb := implement.NewCampTaskStoreUserAmountDb(svc.MasterDb(c))
userAmount, _ := amountDb.GetCampTaskAmountByStoreId(utils.IntToStr(storeId))
if userAmount == nil {
sess.Rollback()
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
if utils.StrToFloat64(userAmount.Amount) < amount {
sess.Rollback()
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
}

sess.Commit()
e.OutSuc(c, "success", nil) e.OutSuc(c, "success", nil)
return return
} }
@@ -484,7 +490,7 @@ func TaskUpList(c *gin.Context) {
storeId := svc.GetCampStoreId(c) storeId := svc.GetCampStoreId(c)
list := make([]map[string]string, 0) list := make([]map[string]string, 0)
var data = make([]models.CampTaskList, 0) var data = make([]models.CampTaskList, 0)
sess := svc.MasterDb(c).Where("store_id=?", storeId)
sess := svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId)
sess.And("up_down_state=?", 1) sess.And("up_down_state=?", 1)
count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("apply_time desc,id desc").FindAndCount(&data) count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("apply_time desc,id desc").FindAndCount(&data)
for _, v := range data { for _, v := range data {
@@ -494,7 +500,7 @@ func TaskUpList(c *gin.Context) {
"id": utils.IntToStr(v.Id), "id": utils.IntToStr(v.Id),
"name": v.Name, "name": v.Name,
"num": utils.IntToStr(v.Num), "num": utils.IntToStr(v.Num),
"sum": utils.IntToStr(v.Sum),
"sum": utils.IntToStr(v.Num + int(orderCount)),
"success_num": utils.Int64ToStr(orderCount), "success_num": utils.Int64ToStr(orderCount),
"wait_num": utils.Int64ToStr(orderWaitCount), "wait_num": utils.Int64ToStr(orderWaitCount),
"up_time": v.AuditTime.Format("2006-01-02 15:04:05"), "up_time": v.AuditTime.Format("2006-01-02 15:04:05"),
@@ -518,40 +524,6 @@ func TaskChangeNum(c *gin.Context) {
return return
} }
storeId := svc.GetCampStoreId(c) storeId := svc.GetCampStoreId(c)
taskDb := implement.NewCampTaskListDb(svc.MasterDb(c))
task, _ := taskDb.GetCampTaskById(args["id"])
if task.State == 0 {
e.OutErr(c, 400, e.NewErr(400, "该任务正在审核,提交的调整数量为"+utils.IntToStr(task.AuditNum)+"个"))
return
}
if task.AuditNum == utils.StrToInt(args["num"]) {
e.OutErr(c, 400, e.NewErr(400, "数量未变化,修改失败"))
return
}
leave := task.Num - utils.StrToInt(args["num"])
num := 0
if leave < 0 {
leave = utils.StrToInt(args["num"]) - task.Num
num = leave
}
task.Num = utils.StrToInt(args["num"])
task.AuditNum = leave //正负数 负数是减少的 要补钱 正数是加多的要扣钱
sql := `select SUM(price*num) as amount from camp_task_list where store_id=? and state=0 and audit_type in(2,3)`
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql, storeId)
var amount float64 = 0
for _, v := range nativeString {
amount = utils.StrToFloat64(v["amount"])
}
amountDb := implement.NewCampTaskStoreUserAmountDb(svc.MasterDb(c))
userAmount, _ := amountDb.GetCampTaskAmountByStoreId(utils.IntToStr(storeId))
if userAmount == nil {
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
if utils.StrToFloat64(userAmount.Amount) < amount+(utils.StrToFloat64(task.Price)*float64(num)) && num > 0 {
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
// 加锁 防止并发提取 // 加锁 防止并发提取
mutexKey := fmt.Sprintf("%s:camp_task_change_num:%d", c.GetString("mid"), storeId) mutexKey := fmt.Sprintf("%s:camp_task_change_num:%d", c.GetString("mid"), storeId)
withdrawAvailable, err := cache.Do("SET", mutexKey, 1, "EX", 5, "NX") withdrawAvailable, err := cache.Do("SET", mutexKey, 1, "EX", 5, "NX")
@@ -563,16 +535,57 @@ func TaskChangeNum(c *gin.Context) {
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试"))
return return
} }
sess := svc.MasterDb(c).NewSession()
defer sess.Close()
sess.Begin()
taskDb := implement.NewCampTaskListDb(svc.MasterDb(c))
task, _ := taskDb.GetCampTaskByIdSess(sess, args["id"])
if task.State == 0 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "该任务正在审核"))
return
}
if task.Num == utils.StrToInt(args["num"]) {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "数量未变化,修改失败"))
return
}
task.OldNum = task.Num
task.Num = utils.StrToInt(args["num"])
task.State = 0 task.State = 0
task.UpDownState = 0 task.UpDownState = 0
task.AuditType = 3 task.AuditType = 3
task.ApplyTime = time.Now() task.ApplyTime = time.Now()
task.UpdateTime = time.Now() task.UpdateTime = time.Now()
update, _ := svc.MasterDb(c).Where("id=?", task.Id).Cols("state,audit_type,apply_time,update_time,audit_num").Update(task)
update, _ := sess.Where("id=?", task.Id).Cols("state,audit_type,apply_time,update_time,old_num").Update(task)
if update == 0 { if update == 0 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "上架申请失败")) e.OutErr(c, 400, e.NewErr(400, "上架申请失败"))
return return
} }
if task.SettleType == 0 {

sql := `select SUM(price*num) as amount from camp_task_list where is_delete=0 and store_id=? and state in(0,1) and settle_type=0 and audit_type in(2,3)`
nativeString, _ := db.QueryNativeStringWithSession(sess, sql, storeId)
var amount float64 = 0
for _, v := range nativeString {
amount = utils.StrToFloat64(v["amount"])
}
amountDb := implement.NewCampTaskStoreUserAmountDb(svc.MasterDb(c))
userAmount, _ := amountDb.GetCampTaskAmountByStoreId(utils.IntToStr(storeId))
if userAmount == nil {
sess.Rollback()
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
if utils.StrToFloat64(userAmount.Amount) < amount {
sess.Rollback()
e.OutErr(c, e.ERR, e.NewErr(400000, "预存余额不足"))
return
}
}

sess.Commit()
e.OutSuc(c, "success", nil) e.OutSuc(c, "success", nil)
return return
} }
@@ -584,7 +597,7 @@ func TaskAllList(c *gin.Context) {
} }
list := make([]map[string]string, 0) list := make([]map[string]string, 0)
var data = make([]models.CampTaskList, 0) var data = make([]models.CampTaskList, 0)
sess := svc.MasterDb(c).Where("up_down_state=?", 1)
sess := svc.MasterDb(c).Where("up_down_state=? and is_delete=0", 1)
if args.TaskType != "" { if args.TaskType != "" {
sess.And("first_cid=?", args.TaskType) sess.And("first_cid=?", args.TaskType)
} }


+ 11
- 0
app/store/svc/svc_task_order.go Wyświetl plik

@@ -215,11 +215,22 @@ func TaskWaitSettleOrderAudit(c *gin.Context) {
sess.Begin() sess.Begin()
var data []models.CampTaskUserPromotionOrder var data []models.CampTaskUserPromotionOrder
sess.Where("store_id=?", storeId).In("id", args.Ids).Find(&data) sess.Where("store_id=?", storeId).In("id", args.Ids).Find(&data)
var userAmount models.CampTaskStoreUserAmount
sess.Where("store_id=?", storeId).Get(&userAmount)
for _, v := range data { for _, v := range data {
if v.SettleState == 1 { if v.SettleState == 1 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "订单"+utils.Int64ToStr(v.Oid)+"已结算,不可操作")) e.OutErr(c, 400, e.NewErr(400, "订单"+utils.Int64ToStr(v.Oid)+"已结算,不可操作"))
return return
} }
if v.SettleType == 0 {
if utils.StrToFloat64(userAmount.Amount) < utils.StrToFloat64(v.Payment) {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "预存款不足,结算失败"))
return
}
userAmount.Amount = utils.Float64ToStr(utils.StrToFloat64(userAmount.Amount) - utils.StrToFloat64(v.Payment))
}
v.SettleState = utils.StrToInt(args.State) v.SettleState = utils.StrToInt(args.State)
if args.Reason != "" { if args.Reason != "" {
v.SettleReason = args.Reason v.SettleReason = args.Reason


+ 1
- 1
go.mod Wyświetl plik

@@ -47,7 +47,7 @@ require (


require ( require (
code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20250801053019-55ac588e769e code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20250801053019-55ac588e769e
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20250903094804-b4b0d17ab205
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20250908064256-8b6a3c2bc3f3
) )


require ( require (


Ładowanie…
Anuluj
Zapisz