@@ -12,6 +12,6 @@ const ( | |||||
AppCommLimiterLock = "%s:app_comm_limiter_lock:%s" // 限流器锁 | AppCommLimiterLock = "%s:app_comm_limiter_lock:%s" // 限流器锁 | ||||
DealAppCommLimiterRequestIdPrefix = "%s:app_comm_limiter_request_id:%s" | DealAppCommLimiterRequestIdPrefix = "%s:app_comm_limiter_request_id:%s" | ||||
CfgCacheTime = 60 * 60 * 4 | |||||
CampTaskLock = "%s:camp_task_lock:%s" // | |||||
CfgCacheTime = 60 * 60 * 4 | |||||
) | ) |
@@ -1,8 +1,9 @@ | |||||
package md | package md | ||||
const ( | const ( | ||||
ZhiosCampTask = "zhios.camp.task.exchange" | |||||
ZhiosCampTaskRoutKey = "camp_task_order_settle" | |||||
ZhiosCampTask = "zhios.camp.task.exchange" | |||||
ZhiosCampTaskRoutKey = "camp_task_order_settle" | |||||
ZhiosCampTaskOrderCommissionRoutKey = "camp_task_order_commission" | |||||
) | ) | ||||
type ZhiosCampOrderSettle struct { | type ZhiosCampOrderSettle struct { | ||||
@@ -83,7 +83,21 @@ func HandleBalanceDistributedLock(masterId, uid, requestIdPrefix string) (cb fun | |||||
return cb, nil | return cb, nil | ||||
} | } | ||||
func HandleCampTaskLockDistributedLock(masterId, id, requestIdPrefix string) (cb func(), err error) { | |||||
// 获取余额更新锁 | |||||
balanceLockKey := fmt.Sprintf(md.CampTaskLock, masterId, id) | |||||
requestId := GetDistributedLockRequestId(requestIdPrefix) | |||||
balanceLockOk := TryGetDistributedLock(balanceLockKey, requestId, true) | |||||
if !balanceLockOk { | |||||
return nil, errors.New("系统繁忙,请稍后再试") | |||||
} | |||||
cb = func() { | |||||
_, _ = ReleaseDistributedLock(balanceLockKey, requestId) | |||||
} | |||||
return cb, nil | |||||
} | |||||
func HandleLimiterDistributedLock(masterId, ip, requestIdPrefix string) (cb func(), err error) { | func HandleLimiterDistributedLock(masterId, ip, requestIdPrefix string) (cb func(), err error) { | ||||
balanceLockKey := fmt.Sprintf(md.AppCommLimiterLock, masterId, ip) | balanceLockKey := fmt.Sprintf(md.AppCommLimiterLock, masterId, ip) | ||||
requestId := GetDistributedLockRequestId(requestIdPrefix) | requestId := GetDistributedLockRequestId(requestIdPrefix) | ||||
@@ -0,0 +1,39 @@ | |||||
package hdl | |||||
import ( | |||||
"applet/app/comm/e" | |||||
"applet/app/comm/svc" | |||||
"applet/app/comm/utils" | |||||
svc2 "applet/app/custom/svc" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||||
"github.com/gin-gonic/gin" | |||||
) | |||||
func TaskMyCate(c *gin.Context) { | |||||
var cate = make([]models.CampTaskCate, 0) | |||||
svc.MasterDb(c).Where("is_show=1 and pid=0").Find(&cate) | |||||
list := make([]map[string]string, 0) | |||||
for _, v := range cate { | |||||
tmp := map[string]string{ | |||||
"name": v.Name, "value": utils.IntToStr(v.Id), | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
e.OutSuc(c, list, nil) | |||||
return | |||||
} | |||||
func TaskMyList(c *gin.Context) { | |||||
svc2.TaskMyList(c) | |||||
} | |||||
func TaskMyTotal(c *gin.Context) { | |||||
svc2.TaskMyTotal(c) | |||||
} | |||||
func TaskIncome(c *gin.Context) { | |||||
svc2.TaskIncome(c) | |||||
} | |||||
func TaskIncomeTaskList(c *gin.Context) { | |||||
svc2.TaskIncomeTaskList(c) | |||||
} | |||||
func TaskIncomeList(c *gin.Context) { | |||||
svc2.TaskIncomeList(c) | |||||
} |
@@ -0,0 +1,58 @@ | |||||
package hdl | |||||
import ( | |||||
"applet/app/comm/e" | |||||
"applet/app/comm/svc" | |||||
"applet/app/comm/utils" | |||||
svc2 "applet/app/custom/svc" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/db/model" | |||||
"github.com/gin-gonic/gin" | |||||
) | |||||
func City(c *gin.Context) { | |||||
var data = make([]model.RegionalAgentRegion, 0) | |||||
svc.MasterDb(c).Where("province_id=? or (province_id>? and city_id=?)", 0, 0, 0).Find(&data) | |||||
list := make([]map[string]interface{}, 0) | |||||
for _, v := range data { | |||||
tmpList := make([]map[string]string, 0) | |||||
tmp := map[string]interface{}{ | |||||
"name": v.Name, "value": utils.Int64ToStr(v.Id), "list": tmpList, | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
for k, v := range list { | |||||
tmpList := make([]map[string]string, 0) | |||||
for _, v1 := range data { | |||||
if v1.ProvinceId == v["value"] { | |||||
tmp := map[string]string{ | |||||
"name": v1.Name, "value": utils.Int64ToStr(v1.Id), | |||||
} | |||||
tmpList = append(tmpList, tmp) | |||||
} | |||||
} | |||||
list[k]["list"] = tmpList | |||||
} | |||||
e.OutSuc(c, list, nil) | |||||
return | |||||
} | |||||
func TaskQrcodeApply(c *gin.Context) { | |||||
svc2.TaskQrcodeApply(c) | |||||
} | |||||
func TaskQrcodeList(c *gin.Context) { | |||||
svc2.TaskQrcodeList(c) | |||||
} | |||||
func TaskQrcodeDetail(c *gin.Context) { | |||||
svc2.TaskQrcodeDetail(c) | |||||
} | |||||
func TaskQrcodeSubmit(c *gin.Context) { | |||||
svc2.TaskQrcodeSubmit(c) | |||||
} | |||||
func TaskQrcodeContinueSubmit(c *gin.Context) { | |||||
svc2.TaskQrcodeContinueSubmit(c) | |||||
} | |||||
func TaskQrcodeOrderCate(c *gin.Context) { | |||||
svc2.TaskQrcodeOrderCate(c) | |||||
} | |||||
func TaskQrcodeOrder(c *gin.Context) { | |||||
svc2.TaskQrcodeOrder(c) | |||||
} |
@@ -0,0 +1,54 @@ | |||||
package hdl | |||||
import ( | |||||
"applet/app/comm/e" | |||||
svc2 "applet/app/comm/svc" | |||||
"applet/app/comm/utils" | |||||
"applet/app/custom/svc" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||||
"github.com/gin-gonic/gin" | |||||
) | |||||
func ProjectBase(c *gin.Context) { | |||||
var cate = []map[string]string{ | |||||
{"name": "全部", "value": ""}, | |||||
} | |||||
var cateMap = make([]models.CampTaskProjectCate, 0) | |||||
svc2.MasterDb(c).Where("is_show=1").OrderBy("sort desc,id desc").Find(&cateMap) | |||||
for _, v := range cateMap { | |||||
tmp := map[string]string{ | |||||
"name": v.Name, "value": utils.IntToStr(v.Id), | |||||
} | |||||
cate = append(cate, tmp) | |||||
} | |||||
res := map[string]interface{}{ | |||||
"cate": cate, | |||||
"price": []map[string]string{ | |||||
{"name": "全部", "value": ""}, | |||||
{"name": "免费合作", "value": "0_0"}, | |||||
{"name": "¥0-450万", "value": "0_450"}, | |||||
{"name": "¥450-600万", "value": "450_600"}, | |||||
{"name": "¥600-1000万", "value": "600_1000"}, | |||||
{"name": "¥1000万以上", "value": "1000_99999999"}, | |||||
}, | |||||
"sort": []map[string]string{ | |||||
{"name": "默认排序", "value": ""}, | |||||
{"name": "合作金额从低到高", "value": "money_asc"}, | |||||
{"name": "合作金额从高到低", "value": "money_desc"}, | |||||
}, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func ProjectList(c *gin.Context) { | |||||
svc.ProjectList(c) | |||||
} | |||||
func ProjectDetail(c *gin.Context) { | |||||
svc.ProjectDetail(c) | |||||
} | |||||
func ProjectLikeList(c *gin.Context) { | |||||
svc.ProjectLikeList(c) | |||||
} | |||||
func ProjectLike(c *gin.Context) { | |||||
svc.ProjectLike(c) | |||||
} |
@@ -0,0 +1,25 @@ | |||||
package hdl | |||||
import ( | |||||
"applet/app/custom/svc" | |||||
"github.com/gin-gonic/gin" | |||||
) | |||||
func IndexTaskList(c *gin.Context) { | |||||
svc.IndexTaskList(c) | |||||
} | |||||
func TaskBase(c *gin.Context) { | |||||
svc.TaskBase(c) | |||||
} | |||||
func SearchTaskList(c *gin.Context) { | |||||
svc.SearchTaskList(c) | |||||
} | |||||
func TaskDetail(c *gin.Context) { | |||||
svc.TaskDetail(c) | |||||
} | |||||
func TaskDetailNotice(c *gin.Context) { | |||||
svc.TaskDetailNotice(c) | |||||
} | |||||
func TaskDetailNoticeCate(c *gin.Context) { | |||||
svc.TaskDetailNoticeCate(c) | |||||
} |
@@ -0,0 +1,8 @@ | |||||
package md | |||||
import "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||||
type CampTaskListGroup struct { | |||||
models.CampTaskOperatorTask `xorm:"extends"` | |||||
models.CampTaskList `xorm:"extends"` | |||||
} |
@@ -0,0 +1,208 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/comm/db" | |||||
"applet/app/comm/e" | |||||
"applet/app/comm/svc" | |||||
"applet/app/comm/utils" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/lib/comm_plan" | |||||
md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | |||||
svc2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/svc" | |||||
"fmt" | |||||
"github.com/gin-gonic/gin" | |||||
"time" | |||||
) | |||||
func TaskIncomeList(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
sql := `SELECT SUM(ctupor.amount) as amount,ctl.name FROM camp_task_user_promotion_order_relate ctupor | |||||
LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid | |||||
LEFT JOIN camp_task_list ctl on ctl.id=ctupo.task_id | |||||
WHERE ctupor.uid=%d and ctupo.settle_time like '2025-09%' GROUP BY ctupo.task_id ORDER BY ctupo.settle_time desc,ctupo.id desc %s` | |||||
sql = fmt.Sprintf(sql, user.Info.Uid, "limit "+utils.IntToStr((utils.StrToInt(args["p"])-1)*10)+",10") | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
list := make([]map[string]string, 0) | |||||
for _, v := range nativeString { | |||||
tmp := map[string]string{ | |||||
"name": v["name"], "amount": v["amount"], | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
res := map[string]interface{}{ | |||||
"list": list, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
} | |||||
func TaskIncomeTaskList(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
sql := ` | |||||
SELECT ctls.*,ct.id as op_id FROM camp_task_operator_task ct | |||||
LEFT JOIN camp_task_list ctls on ctls.id=ct.task_id | |||||
where ctls.first_cid in( | |||||
SELECT ctl.first_cid FROM camp_task_user_promotion_qrcode ctupo | |||||
LEFT JOIN camp_task_list ctl on ctl.id=ctupo.task_id | |||||
WHERE ctupo.uid=%d GROUP BY ctupo.task_id ) and ctls.up_down_state=1 and ctls.num>0 order by ctls.extend_num desc,ctls.id desc limit 5` | |||||
sql = fmt.Sprintf(sql, user.Info.Uid) | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
list := make([]map[string]string, 0) | |||||
for _, v := range nativeString { | |||||
basePrice, _, _, _, _ := CommPrice(c, v["price"]) | |||||
tmp := map[string]string{ | |||||
"id": v["op_id"], | |||||
"name": v["name"], | |||||
"extend_num": v["extend_num"], | |||||
"icon": svc.ImageFormat(c, v["logo"]), | |||||
"price": basePrice, | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
re := map[string]interface{}{ | |||||
"list": list, | |||||
} | |||||
e.OutSuc(c, re, nil) | |||||
return | |||||
} | |||||
func TaskIncome(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
today := utils.GetTimeRange("today") | |||||
sql := `SELECT SUM(ctupor.amount) as amount,SUM(IF(and ctupo.settle_time >= '%s',ctupor.amount,0) as today_amount FROM camp_task_user_promotion_order_relate ctupor | |||||
LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid | |||||
WHERE ctupor.uid=%d ` | |||||
sql = fmt.Sprintf(sql, time.Unix(today["start"], 0).Format("2006-01-02 15:04:05"), user.Info.Uid) | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
allPayment := "0" | |||||
todayPayment := "0" | |||||
for _, v := range nativeString { | |||||
allPayment = v["amount"] | |||||
todayPayment = v["today_amount"] | |||||
} | |||||
res := map[string]interface{}{ | |||||
"total_list": []map[string]string{ | |||||
{"name": "累计总收益(元)", "value": allPayment}, | |||||
{"name": "今日收益(元)", "value": todayPayment}, | |||||
}, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func TaskMyTotal(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
sql := `SELECT COUNT(*) as count,SUM(ctupor.amount) as amount FROM camp_task_user_promotion_order_relate ctupor | |||||
LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid | |||||
WHERE ctupor.uid=%d and ctupo.task_id=%s and ctupo.settle_time like '%s'` | |||||
sql = fmt.Sprintf(sql, user.Info.Uid, args["task_id"], args["date"]+"%") | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
orderCount := "0" | |||||
settlePayment := "0" | |||||
for _, v := range nativeString { | |||||
orderCount = v["count"] | |||||
settlePayment = v["amount"] | |||||
} | |||||
sql1 := `SELECT COUNT(*) as count,SUM(ctupor.amount) as amount FROM camp_task_user_promotion_order_relate ctupor | |||||
LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid | |||||
WHERE ctupor.uid=%d and ctupo.task_id=%s and ctupo.settle_time is null` | |||||
sql1 = fmt.Sprintf(sql1, user.Info.Uid, args["task_id"]) | |||||
nativeString1, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
waitPayment := "0" | |||||
for _, v := range nativeString1 { | |||||
waitPayment = v["amount"] | |||||
} | |||||
res := map[string]interface{}{ | |||||
"order_count": orderCount, | |||||
"total_list": []map[string]string{ | |||||
{"name": "已结算(元)", "value": settlePayment}, | |||||
{"name": "总待结算(元)", "value": waitPayment}, | |||||
}, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func TaskMyList(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
where := "ctupo.uid=" + utils.IntToStr(user.Info.Uid) | |||||
if args["cid"] != "" { | |||||
where += " and ctl.first_cid=" + args["cid"] | |||||
} | |||||
sql := `SELECT ctl.* FROM camp_task_user_promotion_qrcode ctupo | |||||
LEFT JOIN camp_task_list ctl on ctl.id=ctupo.task_id | |||||
WHERE %s GROUP BY ctupo.task_id ORDER BY ctl.id desc %s` | |||||
sql = fmt.Sprintf(sql, where, "limit "+utils.IntToStr((utils.StrToInt(args["p"])-1)*10)+",10") | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
list := make([]map[string]interface{}, 0) | |||||
settleType := []string{"T+1结算", "T+7结算", "T+30结算"} | |||||
for _, v := range nativeString { | |||||
//basePrice, firstPrice, secondPrice, thirdPrice, fourPrice := CommPrice(c, v["price"]) | |||||
basePrice, _, _, _, _ := CommPrice(c, v["price"]) | |||||
tmp := map[string]interface{}{ | |||||
"id": v["id"], | |||||
"name": v["name"], | |||||
"price": basePrice, | |||||
"label": []string{settleType[utils.StrToInt(v["settle_type"])]}, | |||||
"icon": svc.ImageFormat(c, v["logo"]), | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
res := map[string]interface{}{ | |||||
"list": list, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func CommPrice(c *gin.Context, price string) (string, string, string, string, string) { | |||||
firstPrice := "0" | |||||
secondPrice := "0" | |||||
thirdPrice := "0" | |||||
fourPrice := "0" | |||||
basePrice := "" | |||||
plan, commission1, virtualCoinMoneyRate := svc2.GetAllPlan(svc.MasterDb(c), c.GetString("mid")) | |||||
rmd := &md2.CommissionParam{} | |||||
cfg, _ := svc2.GetPlanCfg(svc.MasterDb(c), "camp_task", c.GetString("mid"), plan, commission1, virtualCoinMoneyRate, rmd) | |||||
user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization")) | |||||
if cfg != nil { | |||||
fee, _, _, _ := svc2.CommFee(utils.StrToFloat64(price), cfg, "commission", rmd) | |||||
tmpPrice, _, _, _ := comm_plan.CalReturnAmountAndRatio(0, 0, 0, "own", fee, 0, cfg) | |||||
firstPrice = utils.Float64ToStr(tmpPrice) | |||||
tmpPrice1, _, _, _ := comm_plan.CalReturnAmountAndRatio(1, 0, 0, "own", fee, 0, cfg) | |||||
secondPrice = utils.Float64ToStr(tmpPrice1) | |||||
tmpPrice2, _, _, _ := comm_plan.CalReturnAmountAndRatio(2, 0, 0, "own", fee, 0, cfg) | |||||
thirdPrice = utils.Float64ToStr(tmpPrice2) | |||||
tmpPrice3, _, _, _ := comm_plan.CalReturnAmountAndRatio(3, 0, 0, "own", fee, 0, cfg) | |||||
fourPrice = utils.Float64ToStr(tmpPrice3) | |||||
} | |||||
if user != nil { | |||||
tmpPrice := []string{firstPrice, secondPrice, thirdPrice, fourPrice} | |||||
s := tmpPrice[user.Info.Level] | |||||
if s != "" { | |||||
basePrice = s | |||||
} | |||||
} | |||||
return basePrice, firstPrice, secondPrice, thirdPrice, fourPrice | |||||
} |
@@ -0,0 +1,360 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/comm/db" | |||||
"applet/app/comm/e" | |||||
md2 "applet/app/comm/md" | |||||
"applet/app/comm/svc" | |||||
"applet/app/comm/utils" | |||||
"applet/app/comm/utils/qrcode" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||||
"fmt" | |||||
"github.com/gin-gonic/gin" | |||||
"strings" | |||||
"time" | |||||
) | |||||
func TaskQrcodeOrderCate(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization")) | |||||
uid := 0 | |||||
if args["qrcode_id"] != "" { | |||||
var data models.CampTaskUserPromotionQrcode | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&data) | |||||
uid = data.Uid | |||||
} else if user != nil { | |||||
uid = user.Info.Uid | |||||
} | |||||
where := "uid=" + utils.IntToStr(uid) | |||||
if args["qrcode_id"] != "" { | |||||
where += " and qrcode_id=" + args["qrcode_id"] | |||||
} | |||||
if args["task_id"] != "" { | |||||
where += " and task_id=" + args["task_id"] | |||||
} | |||||
sql := `select count(*) as count,state,task_id from camp_task_user_promotion_order where %s group by state` | |||||
sql = fmt.Sprintf(sql, where) | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
list := []map[string]string{ | |||||
{"name": "审核中", "value": "0"}, | |||||
{"name": "审核通过", "value": "1"}, | |||||
{"name": "审核驳回", "value": "2"}, | |||||
} | |||||
id := "0" | |||||
for k, v := range list { | |||||
for _, v1 := range nativeString { | |||||
id = v1["task_id"] | |||||
if v["value"] == v1["state"] { | |||||
list[k]["name"] += "(" + v1["count"] + ")" | |||||
} | |||||
} | |||||
} | |||||
var task models.CampTaskList | |||||
svc.MasterDb(c).Where("id=?", id).Get(&task) | |||||
re := map[string]interface{}{ | |||||
"list": list, | |||||
"task_name": task.Name, | |||||
} | |||||
e.OutSuc(c, re, nil) | |||||
return | |||||
} | |||||
func TaskQrcodeOrder(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization")) | |||||
uid := 0 | |||||
if args["qrcode_id"] != "" { | |||||
var data models.CampTaskUserPromotionQrcode | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&data) | |||||
uid = data.Uid | |||||
} else if user != nil { | |||||
uid = user.Info.Uid | |||||
} | |||||
where := "uid=" + utils.IntToStr(uid) | |||||
if args["qrcode_id"] != "" { | |||||
where += " and qrcode_id=" + args["qrcode_id"] | |||||
} | |||||
if args["task_id"] != "" { | |||||
where += " and task_id=" + args["task_id"] | |||||
} | |||||
if args["state"] != "" { | |||||
where += " and state=" + args["state"] | |||||
} | |||||
sql := `select * from camp_task_user_promotion_order where %s order by id desc %s` | |||||
sql = fmt.Sprintf(sql, where, "limit "+utils.IntToStr((utils.StrToInt(args["p"])-1)*10)+",10") | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
list := make([]map[string]interface{}, 0) | |||||
for _, v := range nativeString { | |||||
var task models.CampTaskList | |||||
svc.MasterDb(c).Where("id=?", v["task_id"]).Get(&task) | |||||
dataList := []map[string]string{ | |||||
{"name": "提交时间:" + v["create_time"]}, | |||||
{"name": "姓名:" + v["name"]}, | |||||
{"name": "手机号:" + v["phone"]}, | |||||
{"name": "作业地区:" + v["province"] + v["city"]}, | |||||
} | |||||
if v["state"] == "2" { | |||||
dataList = append(dataList, map[string]string{"name": "驳回原因:" + v["store_reason"]}) | |||||
} | |||||
img := strings.Split(v["img"], ",") | |||||
tmp := map[string]interface{}{ | |||||
"task_name": task.Name, | |||||
"data_list": dataList, | |||||
"img": img, | |||||
"state": v["state"], | |||||
"oid": v["oid"], | |||||
"id": v["id"], | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
res := map[string]interface{}{ | |||||
"list": list, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func TaskQrcodeSubmit(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
var data models.CampTaskUserPromotionQrcode | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&data) | |||||
if data.Id == 0 { | |||||
e.OutErr(c, 400, e.NewErr(400, "二维码已失效")) | |||||
return | |||||
} | |||||
user, _ := db.UserFindByID(svc.MasterDb(c), data.Uid) | |||||
if user == nil { | |||||
e.OutErr(c, 400, e.NewErr(400, "二维码已失效")) | |||||
return | |||||
} | |||||
topUid := 0 | |||||
if user != nil { | |||||
sql := `select ur.parent_uid from user_relate ur | |||||
left join user u on u.uid=ur.parent_uid | |||||
where ur.uid=%d and u.level in(2,3) order by ur.level limit 1 | |||||
` | |||||
sql = fmt.Sprintf(sql, user.Uid) | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
for _, v := range nativeString { | |||||
topUid = utils.StrToInt(v["parent_uid"]) | |||||
} | |||||
} | |||||
if topUid != data.FormUid { | |||||
e.OutErr(c, 400, e.NewErr(400, "二维码已失效")) | |||||
return | |||||
} | |||||
cb, err := svc.HandleCampTaskLockDistributedLock(c.GetString("mid"), utils.IntToStr(data.TaskId), "camp_task") | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | |||||
return | |||||
} | |||||
// 处理完毕释放锁 | |||||
if cb != nil { | |||||
defer cb() | |||||
} | |||||
sess := svc.MasterDb(c).NewSession() | |||||
defer sess.Close() | |||||
sess.Begin() | |||||
var campTask models.CampTaskList | |||||
sess.Where("id=?", data.TaskId).Get(&campTask) | |||||
if campTask.UpDownState == 0 { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "任务已下架")) | |||||
return | |||||
} | |||||
if campTask.Num-1 < 0 { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "任务数量不足")) | |||||
return | |||||
} | |||||
campTask.Num-- | |||||
update, err := sess.Where("id-?", campTask.Id).Cols("num").Update(&campTask) | |||||
if update == 0 || err != nil { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "任务提交失败")) | |||||
return | |||||
} | |||||
var changeLog = models.CampTaskDeductList{ | |||||
TaskId: campTask.Id, | |||||
Type: 1, | |||||
Num: 1, | |||||
AfterNum: campTask.Num, | |||||
CreateTime: time.Now(), | |||||
StoreId: campTask.StoreId, | |||||
Title: "交单扣除", | |||||
OrdType: "task_success", | |||||
} | |||||
update, err = sess.Insert(&changeLog) | |||||
if update == 0 || err != nil { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "任务提交失败")) | |||||
return | |||||
} | |||||
var order = models.CampTaskUserPromotionOrder{ | |||||
Uid: user.Uid, | |||||
TaskId: campTask.Id, | |||||
CreateTime: time.Now(), | |||||
FormUid: data.FormUid, | |||||
Name: data.Name, | |||||
Phone: data.Phone, | |||||
Province: data.Province, | |||||
City: data.City, | |||||
Code: data.Code, | |||||
Remark: data.Remark, | |||||
QrcodeId: data.Id, | |||||
Oid: utils.StrToInt64(utils.OrderUUID(user.Uid)), | |||||
Payment: campTask.Price, | |||||
StoreId: campTask.StoreId, | |||||
UserLv: user.Level, | |||||
Img: args["img"], | |||||
SettleType: campTask.SettleType, | |||||
} | |||||
update, err = sess.Insert(&order) | |||||
if update == 0 || err != nil { | |||||
sess.Rollback() | |||||
e.OutErr(c, 400, e.NewErr(400, "任务提交失败")) | |||||
return | |||||
} | |||||
sess.Commit() | |||||
ch, _ := rabbit.Cfg.Pool.GetChannel() | |||||
arg := md2.ZhiosCampOrderSettle{Id: utils.IntToStr(order.Id), Mid: c.GetString("mid")} | |||||
err = ch.PublishV2(md2.ZhiosCampTask, utils.SerializeStr(arg), md2.ZhiosCampTaskOrderCommissionRoutKey) | |||||
if err != nil { | |||||
err = ch.PublishV2(md2.ZhiosCampTask, utils.SerializeStr(arg), md2.ZhiosCampTaskOrderCommissionRoutKey) | |||||
} | |||||
e.OutSuc(c, "success", nil) | |||||
return | |||||
} | |||||
func TaskQrcodeContinueSubmit(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
var data models.CampTaskUserPromotionOrder | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&data) | |||||
if data.Id == 0 { | |||||
e.OutErr(c, 400, e.NewErr(400, "订单不存在")) | |||||
return | |||||
} | |||||
if data.State != 2 { | |||||
e.OutErr(c, 400, e.NewErr(400, "订单已审核或审核中,不可操作")) | |||||
return | |||||
} | |||||
data.Img = args["img"] | |||||
data.State = 0 | |||||
svc.MasterDb(c).Where("id=?", data.Id).Cols("img,state").Update(&data) | |||||
e.OutSuc(c, "success", nil) | |||||
return | |||||
} | |||||
func TaskQrcodeDetail(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
var data models.CampTaskUserPromotionQrcode | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&data) | |||||
var task models.CampTaskList | |||||
svc.MasterDb(c).Where("id=?", data.TaskId).Get(&task) | |||||
res := map[string]string{ | |||||
"name": data.Name, "task_name": task.Name, | |||||
"phone": data.Phone, | |||||
"id": utils.IntToStr(data.Id), | |||||
"address": data.Province + data.City, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func TaskQrcodeList(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
var data []models.CampTaskUserPromotionQrcode | |||||
size := utils.StrToInt(args["size"]) | |||||
p := utils.StrToInt(args["p"]) | |||||
sess := svc.MasterDb(c).Where("uid=?", user.Info.Uid) | |||||
if args["id"] != "" { | |||||
sess.And("task_id=?", args["id"]) | |||||
} | |||||
sess.Limit(size, (p-1)*size).OrderBy("id desc").Find(&data) | |||||
list := make([]map[string]string, 0) | |||||
h5Domain := svc.GetWebSiteDomainInfo(c, "wap") | |||||
for _, v := range data { | |||||
var task models.CampTaskList | |||||
svc.MasterDb(c).Where("id=?", v.TaskId).Get(&task) | |||||
//TODO 要前端的链接 | |||||
QrCode := qrcode.GetPNGBase64(h5Domain + "/#/zy-landing-page/pages/push-hand-login/push-hand-login?id=" + utils.IntToStr(v.Id)) | |||||
QrCode = strings.ReplaceAll(QrCode, "\u0000", "") | |||||
tmp := map[string]string{ | |||||
"name": v.Name, | |||||
"create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | |||||
"phone": v.Phone, | |||||
"address": v.Province + v.City, | |||||
"remark": v.Remark, | |||||
"id": utils.IntToStr(v.Id), | |||||
"qrcode": QrCode, | |||||
"code": utils.IntToStr(v.Id), | |||||
"task_name": task.Name, | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
res := map[string]interface{}{ | |||||
"list": list, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func TaskQrcodeApply(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
var CampTaskOperatorTask models.CampTaskOperatorTask | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&CampTaskOperatorTask) | |||||
if CampTaskOperatorTask.Id == 0 { | |||||
e.OutErr(c, 400, e.NewErr(400, "任务不存在")) | |||||
return | |||||
} | |||||
count, _ := svc.MasterDb(c).Where("uid=? and task_id=? and phone=?", user.Info.Uid, CampTaskOperatorTask.TaskId, args["phone"]).Count(&models.CampTaskUserPromotionQrcode{}) | |||||
if count > 0 { | |||||
e.OutErr(c, 400, e.NewErr(400, "当前号码重复,请重新输入")) | |||||
return | |||||
} | |||||
var data = models.CampTaskUserPromotionQrcode{ | |||||
Uid: user.Info.Uid, | |||||
TaskId: CampTaskOperatorTask.TaskId, | |||||
FormUid: CampTaskOperatorTask.Uid, | |||||
CreateTime: time.Now(), | |||||
Name: args["name"], | |||||
Phone: args["phone"], | |||||
Province: args["province"], | |||||
City: args["city"], | |||||
Remark: args["remark"], | |||||
State: 1, | |||||
} | |||||
insert, _ := svc.MasterDb(c).Insert(&data) | |||||
if insert == 0 { | |||||
e.OutErr(c, 400, e.NewErr(400, "申请失败")) | |||||
return | |||||
} | |||||
e.OutSuc(c, "success", nil) | |||||
return | |||||
} |
@@ -0,0 +1,154 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/comm/e" | |||||
"applet/app/comm/svc" | |||||
"applet/app/comm/utils" | |||||
"applet/app/store/md" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||||
"encoding/json" | |||||
"github.com/gin-gonic/gin" | |||||
"strings" | |||||
"time" | |||||
) | |||||
func ProjectList(c *gin.Context) { | |||||
var args md.ProjectReq | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
res := ProjectComm(c, args) | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func ProjectDetail(c *gin.Context) { | |||||
var args md.ProjectReq | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
args.P = "1" | |||||
list := ProjectComm(c, args) | |||||
res := map[string]interface{}{} | |||||
if len(list) > 0 { | |||||
res = list[0] | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func ProjectLikeList(c *gin.Context) { | |||||
var args md.ProjectReq | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
var project models.CampTaskProject | |||||
svc.MasterDb(c).Where("id=?", project.Id).Get(&project) | |||||
args.Id = "" | |||||
args.Cid = utils.IntToStr(project.Cid) | |||||
list := ProjectComm(c, args) | |||||
res := map[string]interface{}{} | |||||
if len(list) > 0 { | |||||
res = list[0] | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func ProjectLike(c *gin.Context) { | |||||
var args md.ProjectReq | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
user := svc.GetUser(c) | |||||
count, _ := svc.MasterDb(c).Where("uid=? and project_id=?", user.Info.Uid, args.Id).Count(&models.CampTaskProjectUserLike{}) | |||||
if count > 0 { | |||||
e.OutErr(c, 400, e.NewErr(400, "意向已提交,负责人将与您对接")) | |||||
return | |||||
} | |||||
var data = models.CampTaskProjectUserLike{ | |||||
Uid: user.Info.Uid, | |||||
ProjectId: utils.StrToInt(args.Id), | |||||
CreateTime: time.Now(), | |||||
} | |||||
svc.MasterDb(c).Insert(&data) | |||||
e.OutSuc(c, "success", nil) | |||||
return | |||||
} | |||||
func ProjectComm(c *gin.Context, args md.ProjectReq) []map[string]interface{} { | |||||
args.Size = "10" | |||||
list := make([]map[string]interface{}, 0) | |||||
var data = make([]models.CampTaskProject, 0) | |||||
sess := svc.MasterDb(c).Where("state=?", 1) | |||||
if args.Cid != "" { | |||||
sess.And("cid=?", args.Cid) | |||||
} | |||||
if args.Id != "" { | |||||
sess.And("id=?", args.Id) | |||||
} | |||||
if args.Price != "" { | |||||
ex := strings.Split(args.Price, "_") | |||||
sess.And("money>=?", ex[0]) | |||||
sess.And("money<?", ex[1]) | |||||
} | |||||
sort := "id desc" | |||||
if args.Sort != "" { | |||||
sort = strings.ReplaceAll(args.Sort, "_", " ") | |||||
} | |||||
sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy(sort).Find(&data) | |||||
cate := make([]models.CampTaskProjectCate, 0) | |||||
svc.MasterDb(c).Where("1=1").Find(&cate) | |||||
user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization")) | |||||
for _, v := range data { | |||||
enterpriseInfo := make(map[string]string) | |||||
json.Unmarshal([]byte(v.EnterpriseInfo), &enterpriseInfo) | |||||
enterpriseInfo1 := map[string]string{ | |||||
"name": enterpriseInfo["name"], | |||||
"user_name": enterpriseInfo["user_name"], | |||||
"address": enterpriseInfo["address"], | |||||
} | |||||
img := make([]string, 0) | |||||
json.Unmarshal([]byte(v.Img), &img) | |||||
firstImg := "" | |||||
if len(img) > 0 { | |||||
firstImg = img[0] | |||||
} | |||||
detailInfo := make([]string, 0) | |||||
json.Unmarshal([]byte(v.DetailInfo), &detailInfo) | |||||
label := make([]string, 0) | |||||
json.Unmarshal([]byte(v.Label), &label) | |||||
tmp := map[string]interface{}{ | |||||
"year": v.CreateTime.Format("2006") + "年", | |||||
"id": utils.IntToStr(v.Id), | |||||
"name": v.Name, | |||||
"money": utils.Comm(v.Money), | |||||
"img": firstImg, | |||||
"video_info": v.VideoInfo, | |||||
"img_list": img, | |||||
"detail_info": detailInfo, | |||||
"create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | |||||
"enterprise_info": enterpriseInfo1, | |||||
"cate_name": "", | |||||
"adv_word": v.AdvWord, | |||||
"label": label, | |||||
"is_like": "0", | |||||
} | |||||
if user != nil { | |||||
count, _ := svc.MasterDb(c).Where("uid=? and project_id=?", user.Info.Uid, v.Id).Count(&models.CampTaskProjectUserLike{}) | |||||
if count > 0 { | |||||
tmp["is_like"] = "1" | |||||
} | |||||
} | |||||
for _, v1 := range cate { | |||||
if v1.Id == v.Cid { | |||||
tmp["cate_name"] = v1.Name | |||||
} | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
return list | |||||
} |
@@ -0,0 +1,304 @@ | |||||
package svc | |||||
import ( | |||||
"applet/app/comm/db" | |||||
"applet/app/comm/e" | |||||
"applet/app/comm/svc" | |||||
"applet/app/comm/utils" | |||||
"applet/app/custom/md" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||||
"encoding/json" | |||||
"fmt" | |||||
"github.com/gin-gonic/gin" | |||||
) | |||||
func TaskBase(c *gin.Context) { | |||||
taskCate := make([]map[string]string, 0) | |||||
taskCateList := make([]models.CampTaskCate, 0) | |||||
svc.MasterDb(c).Where("is_show_store=? and is_show=?", 1, 1).OrderBy("sort desc,id desc").Find(&taskCateList) | |||||
taskAllCate := make([]map[string]interface{}, 0) | |||||
for _, v := range taskCateList { | |||||
if v.Pid > 0 { | |||||
continue | |||||
} | |||||
tmp := map[string]string{ | |||||
"name": v.Name, "value": utils.IntToStr(v.Id), | |||||
} | |||||
taskCate = append(taskCate, tmp) | |||||
listTmp := make([]map[string]string, 0) | |||||
allTmp := map[string]interface{}{ | |||||
"name": v.Name, "value": utils.IntToStr(v.Id), "list": listTmp, | |||||
} | |||||
taskAllCate = append(taskAllCate, allTmp) | |||||
} | |||||
for k, v := range taskAllCate { | |||||
listTmp := make([]map[string]string, 0) | |||||
for _, v1 := range taskCateList { | |||||
if v["value"] != utils.IntToStr(v1.Pid) { | |||||
continue | |||||
} | |||||
allTmp := map[string]string{ | |||||
"name": v1.Name, "value": utils.IntToStr(v1.Id), | |||||
} | |||||
listTmp = append(listTmp, allTmp) | |||||
} | |||||
taskAllCate[k]["list"] = listTmp | |||||
} | |||||
res := map[string]interface{}{ | |||||
"all_cate_list": taskAllCate, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func IndexTaskList(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
hotTask := make([]map[string]interface{}, 0) | |||||
args["sort"] = "camp_task_list.success_num desc,camp_task_list.id desc" | |||||
args["p"] = "1" | |||||
args["size"] = "5" | |||||
hotTaskList := CommTask(c, args) | |||||
if hotTaskList != nil { | |||||
for _, v := range *hotTaskList { | |||||
basePrice, _, secondPrice, thirdPrice, _ := CommPrice(c, v.Price) | |||||
label := make([]string, 0) | |||||
json.Unmarshal([]byte(v.Label), &label) | |||||
tmp := map[string]interface{}{ | |||||
"id": utils.IntToStr(v.CampTaskOperatorTask.Id), | |||||
"name": v.Name, | |||||
"label": label, | |||||
"base_price": basePrice, | |||||
"remark": v.Remark, | |||||
"first_price": "团长佣金: ¥" + secondPrice, | |||||
"second_price": "运营商佣金: ¥" + thirdPrice, | |||||
"icon": svc.ImageFormat(c, v.Logo), | |||||
} | |||||
hotTask = append(hotTask, tmp) | |||||
} | |||||
} | |||||
res := map[string]interface{}{ | |||||
"list": hotTask, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func SearchTaskList(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
hotTask := make([]map[string]interface{}, 0) | |||||
args["sort"] = "camp_task_list.success_num desc,camp_task_list.id desc" | |||||
args["size"] = "5" | |||||
hotTaskList := CommTask(c, args) | |||||
if hotTaskList != nil { | |||||
for _, v := range *hotTaskList { | |||||
basePrice, _, secondPrice, thirdPrice, _ := CommPrice(c, v.Price) | |||||
label := make([]string, 0) | |||||
json.Unmarshal([]byte(v.Label), &label) | |||||
tmp := map[string]interface{}{ | |||||
"id": utils.IntToStr(v.CampTaskOperatorTask.Id), | |||||
"name": v.Name, | |||||
"label": label, | |||||
"base_price": basePrice, | |||||
"remark": v.Remark, | |||||
"first_price": "团长佣金: ¥" + secondPrice, | |||||
"second_price": "运营商佣金: ¥" + thirdPrice, | |||||
"icon": svc.ImageFormat(c, v.Logo), | |||||
} | |||||
hotTask = append(hotTask, tmp) | |||||
} | |||||
} | |||||
res := map[string]interface{}{ | |||||
"list": hotTask, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func TaskDetail(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
var CampTaskOperatorTask models.CampTaskOperatorTask | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&CampTaskOperatorTask) | |||||
var hotTaskList models.CampTaskList | |||||
svc.MasterDb(c).Where("id=?", CampTaskOperatorTask.TaskId).Get(&hotTaskList) | |||||
label := make([]string, 0) | |||||
DetailInfo := make([]string, 0) | |||||
reward := make([]map[string]string, 0) | |||||
priceList := make([]map[string]string, 0) | |||||
count, _ := svc.MasterDb(c).Where("task_id=?", CampTaskOperatorTask.TaskId).Count(&models.CampTaskNotice{}) | |||||
noticeNum := utils.Int64ToStr(count) | |||||
tmp := map[string]interface{}{ | |||||
"id": utils.IntToStr(CampTaskOperatorTask.Id), | |||||
"name": hotTaskList.Name, | |||||
"price": hotTaskList.Price, | |||||
"num": utils.IntToStr(hotTaskList.Num), | |||||
"icon": svc.ImageFormat(c, hotTaskList.Logo), | |||||
"timer": hotTaskList.StartTime.Format("2006-01-02") + "至" + hotTaskList.EndTime.Format("2006-01-02"), | |||||
"detail_info": DetailInfo, | |||||
"label": label, | |||||
"is_can_buy": "1", | |||||
"buy_tip_str": "", | |||||
"reward_list": reward, | |||||
"price_list": priceList, | |||||
"video_course": "", | |||||
"level_name": "", | |||||
"notice": "", | |||||
"instructions": "", | |||||
"notice_num": noticeNum, | |||||
} | |||||
taskDetailDb := implement.NewCampTaskDetailDb(svc.MasterDb(c)) | |||||
taskDetail, _ := taskDetailDb.GetCampTaskDetailById(utils.IntToStr(hotTaskList.Id)) | |||||
if taskDetail != nil { | |||||
json.Unmarshal([]byte(taskDetail.DetailInfo), &DetailInfo) | |||||
tmp["detail_info"] = DetailInfo | |||||
tmp["detail_info"] = taskDetail.VideoCourse | |||||
tmp["notice"] = taskDetail.Notice | |||||
tmp["instructions"] = taskDetail.Instructions | |||||
} | |||||
json.Unmarshal([]byte(hotTaskList.Label), &label) | |||||
tmp["label"] = label | |||||
user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization")) | |||||
_, firstPrice, secondPrice, thirdPrice, _ := CommPrice(c, hotTaskList.Price) | |||||
settleType := []string{"T+1", "T+7", "T+30"} | |||||
priceList = []map[string]string{ | |||||
{"name": "运营商价", "price": thirdPrice, "subsidy": "-", "settle": settleType[hotTaskList.SettleType] + "结算"}, | |||||
{"name": "团长价", "price": secondPrice, "subsidy": "-", "settle": settleType[hotTaskList.SettleType] + "结算"}, | |||||
{"name": "会员价", "price": firstPrice, "subsidy": "-", "settle": settleType[hotTaskList.SettleType] + "结算"}, | |||||
} | |||||
tmp["price_list"] = priceList | |||||
extendCount := "0" | |||||
rewardValue := "0" | |||||
if user != nil { | |||||
count1, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, hotTaskList.Id).Count(&models.CampTaskUserPromotionQrcode{}) | |||||
extendCount = utils.Int64ToStr(count1) | |||||
sql := `select SUN(ctupor.amount) as amount | |||||
FROM camp_task_user_promotion_order_relate ctupor | |||||
LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid | |||||
WHERE ctupor.uid=%d and ctupo.settle_state=1 ` | |||||
sql = fmt.Sprintf(sql, user.Info.Uid) | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
for _, v := range nativeString { | |||||
rewardValue = v["amount"] | |||||
} | |||||
var cate models.CampTaskCate | |||||
svc.MasterDb(c).Where("id=?", hotTaskList.FirstCid).Get(&cate) | |||||
level := user.Info.Level | |||||
if level == 2 || level == 3 { | |||||
level = 2 | |||||
} | |||||
if cate.Id > 0 { | |||||
if cate.Lv == 2 || cate.Lv == 3 { | |||||
cate.Lv = 2 | |||||
} | |||||
if level < cate.Lv { | |||||
tmp["is_can_buy"] = "0" | |||||
tmp["buy_tip_str"] = "该任务为运营商专属任务" | |||||
} | |||||
} | |||||
} | |||||
reward = []map[string]string{ | |||||
{"name": "累计收入(元)", "value": rewardValue, "type": "income"}, | |||||
{"name": "我的推广码(个)", "value": extendCount, "type": "qrcode"}, | |||||
} | |||||
if user != nil { | |||||
lvName := []string{"会员", "团长", "运营商"} | |||||
tmp["level_name"] = lvName[user.Info.Level] | |||||
count, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, hotTaskList.Id).Count(&models.CampTaskUserPromotionOrder{}) | |||||
if count > 0 { | |||||
reward = append(reward, map[string]string{"name": "历史凭证(个)", "value": utils.Int64ToStr(count), "type": "history"}) | |||||
} | |||||
} | |||||
tmp["reward_list"] = reward | |||||
e.OutSuc(c, tmp, nil) | |||||
return | |||||
} | |||||
func TaskDetailNotice(c *gin.Context) { | |||||
var args map[string]string | |||||
if err := c.ShouldBindJSON(&args); err != nil { | |||||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||||
return | |||||
} | |||||
var CampTaskOperatorTask models.CampTaskOperatorTask | |||||
svc.MasterDb(c).Where("id=?", args["id"]).Get(&CampTaskOperatorTask) | |||||
var data = make([]models.CampTaskNotice, 0) | |||||
sess := svc.MasterDb(c).Where("1=1") | |||||
sess.And("task_id=?", CampTaskOperatorTask.TaskId) | |||||
if args["type"] != "" { | |||||
sess.And("type=?", args["type"]) | |||||
} | |||||
size := utils.StrToInt(args["size"]) | |||||
p := utils.StrToInt(args["p"]) | |||||
sess.Limit(size, (p-1)*size).OrderBy("id desc").Find(&data) | |||||
list := make([]map[string]string, 0) | |||||
for _, v := range data { | |||||
tmp := map[string]string{ | |||||
"title": v.Title, | |||||
"content": v.Content, | |||||
"create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | |||||
} | |||||
list = append(list, tmp) | |||||
} | |||||
res := map[string]interface{}{ | |||||
"list": list, | |||||
} | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} | |||||
func TaskDetailNoticeCate(c *gin.Context) { | |||||
cateType := []map[string]string{ | |||||
{"name": "任务公告", "value": "announcement", "is_list": "0"}, | |||||
{"name": "数据与结算", "value": "data_settle", "is_list": "1"}, | |||||
{"name": "变更通知", "value": "change_notice", "is_list": "1"}, | |||||
} | |||||
e.OutSuc(c, cateType, nil) | |||||
return | |||||
} | |||||
func CommTask(c *gin.Context, arg map[string]string) *[]md.CampTaskListGroup { | |||||
user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization")) | |||||
topUid := 0 | |||||
if user != nil { | |||||
sql := `select ur.parent_uid from user_relate ur | |||||
left join user u on u.uid=ur.parent_uid | |||||
where ur.uid=%d and u.level in(2,3) order by ur.level limit 1 | |||||
` | |||||
sql = fmt.Sprintf(sql, user.Info.Uid) | |||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||||
for _, v := range nativeString { | |||||
topUid = utils.StrToInt(v["parent_uid"]) | |||||
} | |||||
} | |||||
var m = make([]md.CampTaskListGroup, 0) | |||||
sess := svc.MasterDb(c).Table("camp_task_operator_task").Where("camp_task_operator_task.uid=?", topUid) | |||||
sess.Join("LEFT", "camp_task_list", "camp_task_operator_task.task_id = camp_task_list.id") | |||||
sess.And("camp_task_list.up_down_state=? and camp_task_list.num>0", "1") | |||||
if arg["cid"] != "" { | |||||
sess.And("camp_task_list.first_cid=?", arg["cid"]) | |||||
} | |||||
if arg["second_cid"] != "" { | |||||
sess.And("camp_task_list.second_cid=?", arg["second_cid"]) | |||||
} | |||||
if arg["name"] != "" { | |||||
sess.And("camp_task_list.name like ?", "%"+arg["name"]+"%") | |||||
} | |||||
size := utils.StrToInt(arg["size"]) | |||||
p := utils.StrToInt(arg["p"]) | |||||
sort := arg["sort"] | |||||
err := sess.Limit(size, (p-1)*size).OrderBy(sort).Find(&m) | |||||
if err != nil { | |||||
return nil | |||||
} | |||||
return &m | |||||
} |
@@ -113,7 +113,7 @@ func ProjectList(c *gin.Context) { | |||||
"id": utils.IntToStr(v.Id), | "id": utils.IntToStr(v.Id), | ||||
"name": v.Name, | "name": v.Name, | ||||
"cid": utils.IntToStr(v.Cid), | "cid": utils.IntToStr(v.Cid), | ||||
"money": v.Money, | |||||
"money": utils.Comm(v.Money), | |||||
"img": firstImg, | "img": firstImg, | ||||
"video_info": v.VideoInfo, | "video_info": v.VideoInfo, | ||||
"img_list": img, | "img_list": img, | ||||
@@ -5,10 +5,8 @@ import ( | |||||
"applet/app/comm/e" | "applet/app/comm/e" | ||||
"applet/app/comm/svc" | "applet/app/comm/svc" | ||||
"applet/app/comm/utils" | "applet/app/comm/utils" | ||||
svc3 "applet/app/custom/svc" | |||||
"applet/app/operator/md" | "applet/app/operator/md" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/lib/comm_plan" | |||||
md2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/md" | |||||
svc2 "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/svc" | |||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement" | "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement" | ||||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | ||||
"encoding/json" | "encoding/json" | ||||
@@ -118,7 +116,7 @@ func TaskList(c *gin.Context) { | |||||
"settle_type": []map[string]string{ | "settle_type": []map[string]string{ | ||||
{"name": "T+1", "value": "0"}, | {"name": "T+1", "value": "0"}, | ||||
{"name": "T+7", "value": "1"}, | {"name": "T+7", "value": "1"}, | ||||
{"name": "月结", "value": "2"}, | |||||
{"name": "T+30", "value": "2"}, | |||||
}, | }, | ||||
"total": total, "list": hotTask, | "total": total, "list": hotTask, | ||||
} | } | ||||
@@ -154,6 +152,7 @@ func TaskDetail(c *gin.Context) { | |||||
tmp["detail_info"] = DetailInfo | tmp["detail_info"] = DetailInfo | ||||
} | } | ||||
json.Unmarshal([]byte(hotTaskList.Label), &label) | json.Unmarshal([]byte(hotTaskList.Label), &label) | ||||
tmp["label"] = label | |||||
counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, hotTaskList.Id).Count(&models.CampTaskOperatorTask{}) | counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, hotTaskList.Id).Count(&models.CampTaskOperatorTask{}) | ||||
if counts > 0 { | if counts > 0 { | ||||
tmp["is_check"] = "1" | tmp["is_check"] = "1" | ||||
@@ -184,19 +183,8 @@ LEFT JOIN camp_task_list ctl on ctot.task_id=ctl.id | |||||
WHERE ctot.uid=%d order by ctot.id desc %s` | WHERE ctot.uid=%d order by ctot.id desc %s` | ||||
sql = fmt.Sprintf(sql, user.Info.Uid, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size) | sql = fmt.Sprintf(sql, user.Info.Uid, "limit "+utils.IntToStr((utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size))+","+args.Size) | ||||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | ||||
plan, commission1, virtualCoinMoneyRate := svc2.GetAllPlan(svc.MasterDb(c), c.GetString("mid")) | |||||
rmd := &md2.CommissionParam{} | |||||
cfg, _ := svc2.GetPlanCfg(svc.MasterDb(c), "camp_task", c.GetString("mid"), plan, commission1, virtualCoinMoneyRate, rmd) | |||||
for _, v := range nativeString { | for _, v := range nativeString { | ||||
firstPrice := "0" | |||||
secondPrice := "0" | |||||
if cfg != nil { | |||||
fee, _, _, _ := svc2.CommFee(utils.StrToFloat64(v["price"]), cfg, "commission", rmd) | |||||
tmpPrice, _, _, _ := comm_plan.CalReturnAmountAndRatio(0, 0, 0, "own", fee, 0, cfg) | |||||
firstPrice = utils.Float64ToStr(tmpPrice) | |||||
tmpPrice1, _, _, _ := comm_plan.CalReturnAmountAndRatio(1, 0, 0, "own", fee, 0, cfg) | |||||
secondPrice = utils.Float64ToStr(tmpPrice1) | |||||
} | |||||
_, firstPrice, secondPrice, _, _ := svc3.CommPrice(c, v["price"]) | |||||
orderCount := "0" | orderCount := "0" | ||||
commission := "0" | commission := "0" | ||||
sql1 := `select COUNT(*) as count,SUM(ctupor.amount) as amount | sql1 := `select COUNT(*) as count,SUM(ctupor.amount) as amount | ||||
@@ -3,6 +3,7 @@ package router | |||||
import ( | import ( | ||||
"applet/app/cfg" | "applet/app/cfg" | ||||
"applet/app/comm/svc" | "applet/app/comm/svc" | ||||
customHdl "applet/app/custom/hdl" | |||||
"applet/app/mw" | "applet/app/mw" | ||||
operatorHdl "applet/app/operator/hdl" | operatorHdl "applet/app/operator/hdl" | ||||
storeHdl "applet/app/store/hdl" | storeHdl "applet/app/store/hdl" | ||||
@@ -60,10 +61,8 @@ func routeStore(r *gin.RouterGroup) { | |||||
r.Any("/alipay/pay/callback", storeHdl.AlipayCallBack) | r.Any("/alipay/pay/callback", storeHdl.AlipayCallBack) | ||||
r.POST("/img/callback", storeHdl.FileImgCallback) | r.POST("/img/callback", storeHdl.FileImgCallback) | ||||
r.Use(mw.DB) // 以下接口需要用到数据库 | |||||
r.Use(mw.Checker) // 以下接口需要检查Header: platform | |||||
r.PUT("/img/upload", storeHdl.ImgReqUpload) | |||||
r.Use(mw.DB) // 以下接口需要用到数据库 | |||||
r.Use(mw.Checker) // 以下接口需要检查Header: platform | |||||
r.POST("/login", storeHdl.Login) //账号密码登陆 | r.POST("/login", storeHdl.Login) //账号密码登陆 | ||||
r.POST("/sms", storeHdl.Sms) //发验证码 | r.POST("/sms", storeHdl.Sms) //发验证码 | ||||
r.POST("/register", storeHdl.Register) //注册 | r.POST("/register", storeHdl.Register) //注册 | ||||
@@ -116,8 +115,32 @@ func routeStore(r *gin.RouterGroup) { | |||||
func routeCustom(r *gin.RouterGroup) { | func routeCustom(r *gin.RouterGroup) { | ||||
r.Use(mw.DB) // 以下接口需要用到数据库 | r.Use(mw.DB) // 以下接口需要用到数据库 | ||||
r.Use(mw.Checker) // 以下接口需要检查Header: platform | r.Use(mw.Checker) // 以下接口需要检查Header: platform | ||||
r.POST("indexTaskList", customHdl.IndexTaskList) | |||||
r.POST("searchTaskList", customHdl.SearchTaskList) | |||||
r.GET("taskBase", customHdl.TaskBase) | |||||
r.POST("taskDetail", customHdl.TaskDetail) | |||||
r.GET("taskDetailNoticeCate", customHdl.TaskDetailNoticeCate) | |||||
r.POST("taskDetailNotice", customHdl.TaskDetailNotice) | |||||
r.GET("projectBase", customHdl.ProjectBase) | |||||
r.POST("/projectList", customHdl.ProjectList) | |||||
r.POST("/projectDetail", customHdl.ProjectDetail) | |||||
r.POST("/projectLikeList", customHdl.ProjectLikeList) | |||||
r.GET("/city", customHdl.City) | |||||
r.POST("/taskQrcodeSubmit", customHdl.TaskQrcodeSubmit) | |||||
r.POST("/taskQrcodeContinueSubmit", customHdl.TaskQrcodeContinueSubmit) | |||||
r.POST("/taskQrcodeDetail", customHdl.TaskQrcodeDetail) | |||||
r.POST("/taskQrcodeOrder", customHdl.TaskQrcodeOrder) | |||||
r.POST("/taskQrcodeOrderCate", customHdl.TaskQrcodeOrderCate) | |||||
r.GET("/taskMyCate", customHdl.TaskMyCate) | |||||
r.Use(mw.AuthJWT) // 以下接口需要JWT验证 | r.Use(mw.AuthJWT) // 以下接口需要JWT验证 | ||||
r.POST("/projectLike", customHdl.ProjectLike) | |||||
r.POST("/taskQrcodeApply", customHdl.TaskQrcodeApply) | |||||
r.POST("/taskQrcodeList", customHdl.TaskQrcodeList) | |||||
r.POST("/taskMyList", customHdl.TaskMyList) | |||||
r.POST("/taskMyTotal", customHdl.TaskMyTotal) | |||||
r.POST("/taskIncome", customHdl.TaskIncome) | |||||
r.POST("/taskIncomeList", customHdl.TaskIncomeList) | |||||
r.POST("/taskIncomeTaskList", customHdl.TaskIncomeTaskList) | |||||
} | } | ||||
func routeOperator(r *gin.RouterGroup) { | func routeOperator(r *gin.RouterGroup) { | ||||
@@ -1,9 +1,13 @@ | |||||
package md | package md | ||||
type ProjectReq struct { | type ProjectReq struct { | ||||
P string `json:"p"` | |||||
Size string `json:"size"` | |||||
Cid string `json:"cid"` | |||||
P string `json:"p"` | |||||
Size string `json:"size"` | |||||
Cid string `json:"cid"` | |||||
Keyword string `json:"keyword"` | |||||
Price string `json:"price"` | |||||
Sort string `json:"sort"` | |||||
Id string `json:"id"` | |||||
} | } | ||||
type ProjectSaveReq struct { | type ProjectSaveReq struct { | ||||
Id string `json:"id"` | Id string `json:"id"` | ||||
@@ -27,6 +27,7 @@ type TaskDetail struct { | |||||
VideoCourse string `json:"video_course" xorm:"comment('视频教程') VARCHAR(255)"` | VideoCourse string `json:"video_course" xorm:"comment('视频教程') VARCHAR(255)"` | ||||
Instructions string `json:"instructions" xorm:"comment('特殊说明') VARCHAR(255)"` | Instructions string `json:"instructions" xorm:"comment('特殊说明') VARCHAR(255)"` | ||||
Announcement string `json:"announcement"` | Announcement string `json:"announcement"` | ||||
Remark string `json:"remark"` | |||||
} | } | ||||
type TaskAllDetail struct { | type TaskAllDetail struct { | ||||
IsCheck string `json:"is_check"` | IsCheck string `json:"is_check"` | ||||
@@ -69,7 +69,7 @@ func AllProjectList(c *gin.Context) { | |||||
"id": utils.IntToStr(v.Id), | "id": utils.IntToStr(v.Id), | ||||
"name": v.Name, | "name": v.Name, | ||||
"cid": utils.IntToStr(v.Cid), | "cid": utils.IntToStr(v.Cid), | ||||
"money": v.Money, | |||||
"money": utils.Comm(v.Money), | |||||
"img": firstImg, | "img": firstImg, | ||||
"video_info": v.VideoInfo, | "video_info": v.VideoInfo, | ||||
"img_list": img, | "img_list": img, | ||||
@@ -131,6 +131,7 @@ func ProjectList(c *gin.Context) { | |||||
"name": v.Name, | "name": v.Name, | ||||
"cid": utils.IntToStr(v.Cid), | "cid": utils.IntToStr(v.Cid), | ||||
"money": v.Money, | "money": v.Money, | ||||
"money_str": utils.Comm(v.Money), | |||||
"logo": v.Logo, | "logo": v.Logo, | ||||
"video_info": v.VideoInfo, | "video_info": v.VideoInfo, | ||||
"img": img, | "img": img, | ||||
@@ -68,6 +68,7 @@ func TaskList(c *gin.Context) { | |||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
"id": utils.IntToStr(v.Id), | "id": utils.IntToStr(v.Id), | ||||
"name": v.Name, | "name": v.Name, | ||||
"remark": v.Remark, | |||||
"num": utils.IntToStr(v.Num), | "num": utils.IntToStr(v.Num), | ||||
"success_num": utils.Int64ToStr(orderCount), | "success_num": utils.Int64ToStr(orderCount), | ||||
"apply_time": v.ApplyTime.Format("2006-01-02 15:04:05"), | "apply_time": v.ApplyTime.Format("2006-01-02 15:04:05"), | ||||
@@ -158,7 +159,7 @@ func TaskBase(c *gin.Context) { | |||||
"settle_type": []map[string]string{ | "settle_type": []map[string]string{ | ||||
{"name": "T+1", "value": "0"}, | {"name": "T+1", "value": "0"}, | ||||
{"name": "T+7", "value": "1"}, | {"name": "T+7", "value": "1"}, | ||||
{"name": "月结", "value": "2"}, | |||||
{"name": "T+30", "value": "2"}, | |||||
}, | }, | ||||
"audit_type": []map[string]string{ | "audit_type": []map[string]string{ | ||||
{"name": "待审核", "value": "0"}, | {"name": "待审核", "value": "0"}, | ||||
@@ -185,6 +186,7 @@ func TaskDetail(c *gin.Context) { | |||||
taskDetailDb := implement.NewCampTaskDetailDb(svc.MasterDb(c)) | taskDetailDb := implement.NewCampTaskDetailDb(svc.MasterDb(c)) | ||||
taskDetail, _ := taskDetailDb.GetCampTaskDetailById(args["id"]) | taskDetail, _ := taskDetailDb.GetCampTaskDetailById(args["id"]) | ||||
res = md.TaskDetail{ | res = md.TaskDetail{ | ||||
Remark: task.Remark, | |||||
Id: utils.IntToStr(task.Id), | Id: utils.IntToStr(task.Id), | ||||
Name: task.Name, | Name: task.Name, | ||||
Logo: svc.ImageFormat(c, task.Logo), | Logo: svc.ImageFormat(c, task.Logo), | ||||
@@ -306,6 +308,16 @@ func TaskSave(c *gin.Context) { | |||||
return | return | ||||
} | } | ||||
} | } | ||||
cb, err := svc.HandleCampTaskLockDistributedLock(c.GetString("mid"), utils.IntToStr(task.Id), "camp_task") | |||||
if err != nil { | |||||
sess.Rollback() | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | |||||
return | |||||
} | |||||
// 处理完毕释放锁 | |||||
if cb != nil { | |||||
defer cb() | |||||
} | |||||
task.State = 0 | task.State = 0 | ||||
task.UpDownState = 0 //要先下架 | task.UpDownState = 0 //要先下架 | ||||
task.AuditType = 2 | task.AuditType = 2 | ||||
@@ -318,6 +330,7 @@ func TaskSave(c *gin.Context) { | |||||
task.UpdateTime = time.Now() | task.UpdateTime = time.Now() | ||||
task.Price = args.Price | task.Price = args.Price | ||||
task.Remark = args.Remark | |||||
task.Name = args.Name | task.Name = args.Name | ||||
task.Logo = args.Logo | task.Logo = args.Logo | ||||
task.FirstCid = utils.StrToInt(args.FirstCid) | task.FirstCid = utils.StrToInt(args.FirstCid) | ||||
@@ -391,6 +404,15 @@ func TaskUp(c *gin.Context) { | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | ||||
return | return | ||||
} | } | ||||
cb, err := svc.HandleCampTaskLockDistributedLock(c.GetString("mid"), args["id"], "camp_task") | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | |||||
return | |||||
} | |||||
// 处理完毕释放锁 | |||||
if cb != nil { | |||||
defer cb() | |||||
} | |||||
sess := svc.MasterDb(c).NewSession() | sess := svc.MasterDb(c).NewSession() | ||||
defer sess.Close() | defer sess.Close() | ||||
sess.Begin() | sess.Begin() | ||||
@@ -469,6 +491,15 @@ func TaskDown(c *gin.Context) { | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | ||||
return | return | ||||
} | } | ||||
cb, err := svc.HandleCampTaskLockDistributedLock(c.GetString("mid"), args["id"], "camp_task") | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | |||||
return | |||||
} | |||||
// 处理完毕释放锁 | |||||
if cb != nil { | |||||
defer cb() | |||||
} | |||||
task.State = 0 | task.State = 0 | ||||
task.AuditType = 1 | task.AuditType = 1 | ||||
task.ApplyTime = time.Now() | task.ApplyTime = time.Now() | ||||
@@ -535,6 +566,15 @@ func TaskChangeNum(c *gin.Context) { | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | ||||
return | return | ||||
} | } | ||||
cb, err := svc.HandleCampTaskLockDistributedLock(c.GetString("mid"), args["id"], "camp_task") | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试")) | |||||
return | |||||
} | |||||
// 处理完毕释放锁 | |||||
if cb != nil { | |||||
defer cb() | |||||
} | |||||
sess := svc.MasterDb(c).NewSession() | sess := svc.MasterDb(c).NewSession() | ||||
defer sess.Close() | defer sess.Close() | ||||
sess.Begin() | sess.Begin() | ||||
@@ -48,7 +48,7 @@ func TaskWaitAuditOrder(c *gin.Context) { | |||||
sess.Join("LEFT", "user_level", "user_level.id = camp_task_user_promotion_order.user_lv") | sess.Join("LEFT", "user_level", "user_level.id = camp_task_user_promotion_order.user_lv") | ||||
count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("camp_task_user_promotion_order.id desc").FindAndCount(&data) | count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("camp_task_user_promotion_order.id desc").FindAndCount(&data) | ||||
stateType := []string{"审核中", "审核通过", "审核拒绝"} | stateType := []string{"审核中", "审核通过", "审核拒绝"} | ||||
settleType := []string{"T+1", "T+7", "月结"} | |||||
settleType := []string{"T+1", "T+7", "T+30"} | |||||
settleStateType := []string{"未结算", "结算成功", "结算失败"} | settleStateType := []string{"未结算", "结算成功", "结算失败"} | ||||
for _, v := range data { | for _, v := range data { | ||||
var detail = make([]string, 0) | var detail = make([]string, 0) | ||||
@@ -150,7 +150,8 @@ func TaskWaitSettleOrder(c *gin.Context) { | |||||
sess.Join("LEFT", "user_level", "user_level.id = camp_task_user_promotion_order.user_lv") | sess.Join("LEFT", "user_level", "user_level.id = camp_task_user_promotion_order.user_lv") | ||||
count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("camp_task_user_promotion_order.id desc").FindAndCount(&data) | count, _ := sess.Limit(utils.StrToInt(args.Size), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("camp_task_user_promotion_order.id desc").FindAndCount(&data) | ||||
stateType := []string{"审核中", "审核通过", "审核拒绝"} | stateType := []string{"审核中", "审核通过", "审核拒绝"} | ||||
settleType := []string{"T+1", "T+7", "月结"} | |||||
settleType := []string{"T+1", "T+7", "T+30"} | |||||
settleStateType := []string{"未结算", "结算成功", "结算失败"} | settleStateType := []string{"未结算", "结算成功", "结算失败"} | ||||
for _, v := range data { | for _, v := range data { | ||||
var detail = make([]string, 0) | var detail = make([]string, 0) | ||||
@@ -2,7 +2,7 @@ module applet | |||||
go 1.19 | go 1.19 | ||||
//replace code.fnuoos.com/go_rely_warehouse/zyos_model.git => E:/company/go_rely_warehouse/zyos_model/ | |||||
replace code.fnuoos.com/go_rely_warehouse/zyos_model.git => E:/company/go_rely_warehouse/zyos_model/ | |||||
require ( | require ( | ||||
code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.1 | code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git v1.2.1 | ||||
@@ -45,10 +45,12 @@ require ( | |||||
xorm.io/xorm v1.3.10 | xorm.io/xorm v1.3.10 | ||||
) | ) | ||||
require code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git v1.1.21-0.20250801053019-55ac588e769e | |||||
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.20250912074810-4b419010bd06 | |||||
) | |||||
require ( | require ( | ||||
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20250911040453-a1190e8eb8ed // indirect | |||||
github.com/KyleBanks/depth v1.2.1 // indirect | github.com/KyleBanks/depth v1.2.1 // indirect | ||||
github.com/PuerkitoBio/goquery v1.6.1 // indirect | github.com/PuerkitoBio/goquery v1.6.1 // indirect | ||||
github.com/PuerkitoBio/purell v1.1.1 // indirect | github.com/PuerkitoBio/purell v1.1.1 // indirect | ||||