huangjiajun il y a 2 semaines
Parent
révision
822fd70948
8 fichiers modifiés avec 127 ajouts et 106 suppressions
  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 Voir le fichier

@@ -39,7 +39,7 @@ func AnnouncementList(c *gin.Context) {
levelList = append(levelList, map[string]string{"name": v.LevelName, "value": utils.IntToStr(v.Id)})
}
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)
for _, v := range task {
taskList = append(taskList, map[string]string{"name": v.Name, "value": utils.IntToStr(v.Id)})


+ 1
- 1
app/store/svc/svc_demo.go Voir le fichier

@@ -18,7 +18,7 @@ func DemoList(c *gin.Context) {
storeId := svc.GetCampStoreId(c)
list := make([]map[string]string, 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)
res := map[string]interface{}{
"list": list,


+ 5
- 5
app/store/svc/svc_director.go Voir le fichier

@@ -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)
taskList := make([]map[string]string, 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 {
tmp := map[string]string{
"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()
defer sess.Close()
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 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "部分任务已绑定负责人"))
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 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "修改失败"))
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 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "修改失败"))
@@ -123,7 +123,7 @@ func DirectorDel(c *gin.Context) {
return
}
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)
return
}

+ 5
- 5
app/store/svc/svc_index.go Voir le fichier

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

func Index(c *gin.Context) {
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{})
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{
{"name": "发布总的任务数", "value": utils.Int64ToStr(allTaskCount), "unit": "(个)"},
{"name": "已完成的订单总数", "value": utils.Int64ToStr(orderCount), "unit": "(单)"},
@@ -58,9 +58,9 @@ func Index(c *gin.Context) {
}
func StoreIndex(c *gin.Context) {
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")
totalList := []map[string]string{
{"name": "当前待结算订单", "value": utils.Int64ToStr(orderCount)},


+ 1
- 4
app/store/svc/svc_pay.go Voir le fichier

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

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


+ 102
- 89
app/store/svc/svc_task.go Voir le fichier

@@ -29,7 +29,7 @@ func TaskList(c *gin.Context) {
if store.Pid > 0 {
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 != "" {
sess.And("first_cid=?", args.TaskType)
}
@@ -233,12 +233,6 @@ func TaskSave(c *gin.Context) {
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 {
@@ -264,7 +258,6 @@ func TaskSave(c *gin.Context) {
var task *models.CampTaskList
var taskDetail *models.CampTaskDetail
var taskNotice *models.CampTaskNotice
isFirst := 0
if utils.StrToInt(args.Id) > 0 {
taskDb := implement.NewCampTaskListDb(svc.MasterDb(c))
task, _ = taskDb.GetCampTaskByIdSess(sess, args.Id)
@@ -273,13 +266,11 @@ func TaskSave(c *gin.Context) {
taskNoticeDb := implement.NewCampTaskNoticeDb(svc.MasterDb(c))
taskNotice, _ = taskNoticeDb.GetCampTaskNoticeByTaskIdSess(sess, args.Id)
} else {
isFirst = 1
task = &models.CampTaskList{
CreateTime: time.Now(),
UpdateTime: time.Now(),
StoreId: storeId,
Contact: "0",
AuditNum: utils.StrToInt(args.Num),
Sum: utils.StrToInt(args.Num),
Num: utils.StrToInt(args.Num),
}
@@ -319,23 +310,12 @@ func TaskSave(c *gin.Context) {
task.UpDownState = 0 //要先下架
task.AuditType = 2
//判断下要不要改数量
num := 0
if isFirst == 1 {
num = task.Num
}
if task.Num != utils.StrToInt(args.Num) {
leave := task.Num - utils.StrToInt(args.Num)
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.Price = args.Price
task.Name = args.Name
@@ -375,6 +355,20 @@ func TaskSave(c *gin.Context) {
e.OutErr(c, 400, e.NewErr(400, "发布失败"))
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()
e.OutSuc(c, "success", nil)
return
@@ -386,32 +380,6 @@ func TaskUp(c *gin.Context) {
return
}
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)
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, "操作过快,请稍后再试"))
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.AuditType = 2
task.ApplyTime = 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 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "上架申请失败"))
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)
return
}
@@ -484,7 +490,7 @@ func TaskUpList(c *gin.Context) {
storeId := svc.GetCampStoreId(c)
list := make([]map[string]string, 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)
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 {
@@ -494,7 +500,7 @@ func TaskUpList(c *gin.Context) {
"id": utils.IntToStr(v.Id),
"name": v.Name,
"num": utils.IntToStr(v.Num),
"sum": utils.IntToStr(v.Sum),
"sum": utils.IntToStr(v.Num + int(orderCount)),
"success_num": utils.Int64ToStr(orderCount),
"wait_num": utils.Int64ToStr(orderWaitCount),
"up_time": v.AuditTime.Format("2006-01-02 15:04:05"),
@@ -518,40 +524,6 @@ func TaskChangeNum(c *gin.Context) {
return
}
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)
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, "操作过快,请稍后再试"))
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.UpDownState = 0
task.AuditType = 3
task.ApplyTime = 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 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "上架申请失败"))
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)
return
}
@@ -584,7 +597,7 @@ func TaskAllList(c *gin.Context) {
}
list := make([]map[string]string, 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 != "" {
sess.And("first_cid=?", args.TaskType)
}


+ 11
- 0
app/store/svc/svc_task_order.go Voir le fichier

@@ -215,11 +215,22 @@ func TaskWaitSettleOrderAudit(c *gin.Context) {
sess.Begin()
var data []models.CampTaskUserPromotionOrder
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 {
if v.SettleState == 1 {
sess.Rollback()
e.OutErr(c, 400, e.NewErr(400, "订单"+utils.Int64ToStr(v.Oid)+"已结算,不可操作"))
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)
if args.Reason != "" {
v.SettleReason = args.Reason


+ 1
- 1
go.mod Voir le fichier

@@ -47,7 +47,7 @@ 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_model.git v0.0.4-0.20250903094804-b4b0d17ab205
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20250908064256-8b6a3c2bc3f3
)

require (


Chargement…
Annuler
Enregistrer