@@ -0,0 +1,10 @@ | |||
package hdl | |||
import ( | |||
"applet/app/operator/svc" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func Index(c *gin.Context) { | |||
svc.Index(c) | |||
} |
@@ -0,0 +1,23 @@ | |||
package hdl | |||
import ( | |||
"applet/app/comm/e" | |||
"applet/app/operator/md" | |||
"applet/app/operator/svc" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func Login(c *gin.Context) { | |||
svc.Login(c) | |||
} | |||
func FastLogin(c *gin.Context) { | |||
var args md.RegisterReq | |||
if err := c.ShouldBindJSON(&args); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||
return | |||
} | |||
svc.Register(c, args) | |||
} | |||
func Sms(c *gin.Context) { | |||
svc.Sms(c) | |||
} |
@@ -0,0 +1,13 @@ | |||
package hdl | |||
import ( | |||
"applet/app/operator/svc" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func ProjectList(c *gin.Context) { | |||
svc.ProjectList(c) | |||
} | |||
func ProjectSelect(c *gin.Context) { | |||
svc.ProjectSelect(c) | |||
} |
@@ -0,0 +1,19 @@ | |||
package hdl | |||
import ( | |||
"applet/app/operator/svc" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func TaskList(c *gin.Context) { | |||
svc.TaskList(c) | |||
} | |||
func TaskUp(c *gin.Context) { | |||
svc.TaskUp(c) | |||
} | |||
func TaskDown(c *gin.Context) { | |||
svc.TaskDown(c) | |||
} | |||
func TaskDetail(c *gin.Context) { | |||
svc.TaskDetail(c) | |||
} |
@@ -0,0 +1,24 @@ | |||
package md | |||
type LoginReq struct { | |||
Phone string `json:"phone"` | |||
Password string `json:"password"` | |||
} | |||
type SmsReq struct { | |||
Phone string `json:"phone"` | |||
Type string `json:"type"` | |||
} | |||
type Register struct { | |||
Mobile string `json:"mobile"` | |||
Captcha string `json:"captcha"` | |||
Type string `json:"type"` | |||
Zone string `json:"zone"` | |||
PicCode string `json:"pic_code"` | |||
PicCodeId string `json:"pic_code_id"` | |||
} | |||
type RegisterReq struct { | |||
Phone string `json:"phone"` | |||
Password string `json:"password"` | |||
Captcha string `json:"captcha"` | |||
Type string `json:"type"` | |||
} |
@@ -0,0 +1,10 @@ | |||
package md | |||
type ProjectListReq struct { | |||
P string `json:"p"` | |||
Size string `json:"size"` | |||
Cid string `json:"cid"` | |||
} | |||
type ProjectListSelectReq struct { | |||
Ids []string `json:"ids"` | |||
} |
@@ -0,0 +1,8 @@ | |||
package md | |||
type TaskListReq struct { | |||
P string `json:"p"` | |||
Size string `json:"size"` | |||
Cid string `json:"cid"` | |||
SettleType string `json:"settle_type"` | |||
} |
@@ -0,0 +1,84 @@ | |||
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_model.git/src/implement" | |||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||
"fmt" | |||
"github.com/gin-gonic/gin" | |||
) | |||
func Index(c *gin.Context) { | |||
user := svc.GetUser(c) | |||
sum, _ := svc.MasterDb(c).Where("form_uid=?", user.Info.Uid).Sum(&models.CampTaskUserPromotionOrder{}, "payment") | |||
count, _ := svc.MasterDb(c).Where("form_uid=?", user.Info.Uid).Count(&models.CampTaskUserPromotionOrder{}) | |||
allTaskCount, _ := svc.MasterDb(c).Where("uid=?", user.Info.Uid).Count(&models.CampTaskOperatorTask{}) | |||
sql := `SELECT SUM(ctupor.amount) as amount,SUM(IF(ctupor.uid=%d,ctupor.amount,0)) as own_amount,ctupor.level FROM camp_task_user_promotion_order_relate ctupor | |||
LEFT JOIN camp_task_user_promotion_order ctupo on ctupo.oid=ctupor.oid | |||
WHERE ctupo.form_uid=%d GROUP BY ctupor.level` | |||
sql = fmt.Sprintf(sql, user.Info.Uid, user.Info.Uid) | |||
nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql) | |||
var firstAmount float64 = 0 | |||
var secondAmount float64 = 0 | |||
var ownAmount float64 = 0 | |||
for _, v := range nativeString { | |||
if v["level"] == "0" { | |||
firstAmount += utils.StrToFloat64(v["amount"]) | |||
} | |||
if v["level"] == "1" { | |||
secondAmount += utils.StrToFloat64(v["amount"]) | |||
} | |||
ownAmount += utils.StrToFloat64(v["own_amount"]) | |||
} | |||
totalList := []map[string]string{ | |||
{"name": "佣金总金额", "value": utils.Float64ToStr(sum), "unit": "¥"}, | |||
{"name": "推广总订单数", "value": utils.Int64ToStr(count), "unit": ""}, | |||
{"name": "用户所得", "value": utils.Float64ToStr(firstAmount), "unit": "¥"}, | |||
{"name": "团长所得", "value": utils.Float64ToStr(secondAmount), "unit": "¥"}, | |||
{"name": "我的分成", "value": utils.Float64ToStr(ownAmount), "unit": "¥"}, | |||
} | |||
myTask := make([]map[string]string, 0) | |||
NewCampTaskOperatorTaskDb := implement.NewCampTaskOperatorTaskDb(svc.MasterDb(c)) | |||
myTaskList, _, _ := NewCampTaskOperatorTaskDb.FindCampTaskOperatorTaskGroup(user.Info.Uid, 1, 5, "") | |||
if myTaskList != nil { | |||
for _, v := range myTaskList { | |||
tmp := map[string]string{ | |||
"id": utils.IntToStr(v.CampTaskOperatorTask.TaskId), | |||
"name": v.Name, | |||
"icon": svc.ImageFormat(c, v.Logo), | |||
} | |||
myTask = append(myTask, tmp) | |||
} | |||
} | |||
hotTask := make([]map[string]string, 0) | |||
NewCampTaskListDb := implement.NewCampTaskListDb(svc.MasterDb(c)) | |||
hotTaskList, _ := NewCampTaskListDb.FindCampTaskList("", "", "1", 1, 5, "success_num desc,id desc") | |||
if hotTaskList != nil { | |||
for _, v := range *hotTaskList { | |||
tmp := map[string]string{ | |||
"id": utils.IntToStr(v.Id), | |||
"is_check": "0", | |||
"name": v.Name, | |||
"price": v.Price, | |||
"num": utils.IntToStr(v.Num), | |||
"icon": svc.ImageFormat(c, v.Logo), | |||
"timer": v.StartTime.Format("2006-01-02") + "至" + v.EndTime.Format("2006-01-02"), | |||
} | |||
counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, v.Id).Count(&models.CampTaskOperatorTask{}) | |||
if counts > 0 { | |||
tmp["is_check"] = "1" | |||
} | |||
hotTask = append(hotTask, tmp) | |||
} | |||
} | |||
res := map[string]interface{}{ | |||
"total_list": totalList, | |||
"my_task_count": utils.Int64ToStr(allTaskCount), | |||
"hot_task": hotTask, | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} |
@@ -0,0 +1,235 @@ | |||
package svc | |||
import ( | |||
"applet/app/comm/db" | |||
"applet/app/comm/e" | |||
"applet/app/comm/svc" | |||
"applet/app/comm/utils" | |||
"applet/app/comm/utils/cache" | |||
"applet/app/lib/mob" | |||
sms2 "applet/app/lib/sms" | |||
"applet/app/operator/md" | |||
"code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/sms" | |||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement" | |||
"encoding/json" | |||
"fmt" | |||
"github.com/gin-gonic/gin" | |||
"github.com/syyongx/php2go" | |||
) | |||
func Login(c *gin.Context) { | |||
var args md.LoginReq | |||
if err := c.ShouldBindJSON(&args); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||
return | |||
} | |||
user, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone) | |||
if user == nil { | |||
e.OutErr(c, 400, e.NewErr(400, "用户未注册")) | |||
return | |||
} | |||
if user.Password != utils.Md5(args.Password) { | |||
e.OutErr(c, 400, e.NewErr(400, "密码错误")) | |||
return | |||
} | |||
if user.Level != 2 && user.Level != 3 { | |||
e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台")) | |||
return | |||
} | |||
// 生成jwt | |||
appName := svc.SysCfgGet(c, "app_name") | |||
token, err := utils.GenToken(user.Uid, user.Username, user.Phone, appName, "", "") | |||
if err != nil { | |||
e.OutErr(c, 400, e.NewErr(400, "用户不存在")) | |||
return | |||
} | |||
key := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username) | |||
cache.SetEx(key, token, 39528000) // 半年 | |||
res := map[string]string{ | |||
"token": token, | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func Register(c *gin.Context, args md.RegisterReq) { | |||
user, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone) | |||
if user == nil { | |||
e.OutErr(c, 400, e.NewErr(400, "用户未注册")) | |||
return | |||
} | |||
if user.Level != 2 && user.Level != 3 { | |||
e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台")) | |||
return | |||
} | |||
mob1, errr := mob.GetMobSDK(c.GetString("mid")) | |||
if errr != nil { | |||
e.OutErr(c, e.ERR_MOB_CONFIG, errr) | |||
return | |||
} | |||
send := map[string]interface{}{ | |||
"phone": args.Phone, | |||
"zone": "86", | |||
"code": args.Captcha, | |||
} | |||
var ok bool | |||
// h5(wap) 登录 | |||
var err error | |||
if svc.SysCfgGet(c, "sms_send_type") == "2" { | |||
code := svc.SysCfgGet(c, "sms_send_code") | |||
if code != args.Captcha { | |||
e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) | |||
return | |||
} | |||
ok = true | |||
cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) | |||
} else if c.GetString("sms_type") == "2" || svc.SysCfgGet(c, "sms_send_type") == "1" { | |||
code, _ := cache.GetString("sms:" + c.GetString("mid") + ":" + args.Phone) | |||
if code != args.Captcha { | |||
e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) | |||
return | |||
} | |||
cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) | |||
ok = true | |||
} else { | |||
ok, err = mob1.MobSMS(c, send) | |||
if err != nil { | |||
e.OutErr(c, 400, err.Error()) | |||
return | |||
} | |||
} | |||
if ok == false { | |||
// 验证码无效或者过期,验证码错误 | |||
e.OutErr(c, e.ERR_SMS_AUTH, nil) | |||
return | |||
} | |||
appName := svc.SysCfgGet(c, "app_name") | |||
token, err := utils.GenToken(user.Uid, user.Username, user.Phone, appName, "", "") | |||
if err != nil { | |||
e.OutErr(c, 400, e.NewErr(400, "用户不存在")) | |||
return | |||
} | |||
up, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], user.Uid) | |||
if err != nil || up == nil { | |||
e.OutErr(c, e.ERR_DB_ORM, err) | |||
return | |||
} | |||
up.ArkidToken = token | |||
_, err = svc.MasterDb(c).Where("uid=?", up.Uid).Cols("arkid_token").Update(up) | |||
if err != nil { | |||
e.OutErr(c, 400, e.NewErr(400, "登陆失败")) | |||
return | |||
} | |||
key1 := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username) | |||
cache.SetEx(key1, token, 39528000) // 半年 | |||
res := map[string]string{ | |||
"token": token, | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func Sms(c *gin.Context) { | |||
var args md.SmsReq | |||
if err := c.ShouldBindJSON(&args); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||
return | |||
} | |||
mobile, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone) | |||
if mobile == nil { | |||
e.OutErr(c, 400, e.NewErr(400, "用户未注册")) | |||
return | |||
} | |||
if mobile.Level != 2 && mobile.Level != 3 { | |||
e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台")) | |||
return | |||
} | |||
if c.GetString("sms_type") != "2" { | |||
count := sms.SmsNumGetSmsNum(db.Db, "putong", c.GetString("mid")) | |||
if count-3 < 0 { | |||
e.OutErr(c, e.ERR_MOB_SMS_NO_AVA, nil) | |||
return | |||
} | |||
} | |||
appName := svc.SysCfgGet(c, "sms_push_sign") | |||
captcha := utils.CreateCaptcha() | |||
content := fmt.Sprintf("【%s】验证码:%s", appName, captcha) | |||
marshal, _ := json.Marshal(c.Request.Header) | |||
waykeys := "app_" + c.ClientIP() + "_" + utils.IntToStr(utils.GetApiVersion(c)) + "_" + c.Request.RequestURI + "_" + string(marshal) | |||
postData := map[string]interface{}{ | |||
"content": content, | |||
"mobile": args.Phone, | |||
"templateCode": "normal", | |||
"way": php2go.Base64Encode(waykeys), | |||
} | |||
err := sms2.GetSmsConfig(c, "86", postData, "") | |||
if err != nil { | |||
e.OutErr(c, 400, e.NewErr(400000, err.Error())) | |||
return | |||
} | |||
tip := "验证码已发送,5分钟内有效" | |||
e.OutSuc(c, tip, nil) | |||
return | |||
} | |||
func ChangePwd(c *gin.Context) { | |||
var args md.RegisterReq | |||
if err := c.ShouldBindJSON(&args); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||
return | |||
} | |||
mob1, errr := mob.GetMobSDK(c.GetString("mid")) | |||
if errr != nil { | |||
e.OutErr(c, e.ERR_MOB_CONFIG, errr) | |||
return | |||
} | |||
send := map[string]interface{}{ | |||
"phone": args.Phone, | |||
"zone": "86", | |||
"code": args.Captcha, | |||
} | |||
var ok bool | |||
// h5(wap) 登录 | |||
var err error | |||
if svc.SysCfgGet(c, "sms_send_type") == "2" { | |||
code := svc.SysCfgGet(c, "sms_send_code") | |||
if code != args.Captcha { | |||
e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) | |||
return | |||
} | |||
ok = true | |||
cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) | |||
} else if c.GetString("sms_type") == "2" || svc.SysCfgGet(c, "sms_send_type") == "1" { | |||
code, _ := cache.GetString("sms:" + c.GetString("mid") + ":" + args.Phone) | |||
if code != args.Captcha { | |||
e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) | |||
return | |||
} | |||
cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) | |||
ok = true | |||
} else { | |||
ok, err = mob1.MobSMS(c, send) | |||
if err != nil { | |||
e.OutErr(c, 400, err.Error()) | |||
return | |||
} | |||
} | |||
if ok == false { | |||
// 验证码无效或者过期,验证码错误 | |||
e.OutErr(c, e.ERR_SMS_AUTH, nil) | |||
return | |||
} | |||
NewCampTaskStoreUserDb := implement.NewCampTaskStoreUserDb(svc.MasterDb(c)) | |||
user, _ := NewCampTaskStoreUserDb.GetCampTaskStoreUserByPhone(args.Phone) | |||
if user == nil { | |||
e.OutErr(c, 400, e.NewErr(400, "用户不存在")) | |||
return | |||
} | |||
user.Password = utils.Md5(args.Password) | |||
update, _ := svc.MasterDb(c).Where("id=?", user.Id).Cols("password").Update(user) | |||
if update == 0 { | |||
e.OutErr(c, 400, e.NewErr(400, "修改失败")) | |||
return | |||
} | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} |
@@ -0,0 +1,123 @@ | |||
package svc | |||
import ( | |||
"applet/app/comm/e" | |||
"applet/app/comm/svc" | |||
"applet/app/comm/utils" | |||
"applet/app/operator/md" | |||
"code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" | |||
"github.com/gin-gonic/gin" | |||
"time" | |||
) | |||
func ProjectSelect(c *gin.Context) { | |||
var args md.ProjectListSelectReq | |||
if err := c.ShouldBindJSON(&args); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||
return | |||
} | |||
user := svc.GetUser(c) | |||
var project = make([]models.CampTaskProject, 0) | |||
svc.MasterDb(c).Where("is_must=1 and state=1").Find(&project) | |||
for _, v := range project { | |||
if utils.InArr(utils.IntToStr(v.Id), args.Ids) == false { | |||
e.OutErr(c, 400, e.NewErr(400, "《"+v.Name+"》未选择")) | |||
return | |||
} | |||
} | |||
isCanSelect := "0" | |||
sess := svc.MasterDb(c).NewSession() | |||
defer sess.Close() | |||
sess.Begin() | |||
var data models.CampTaskProjectOperatorLike | |||
sess.Where("uid=?", user.Info.Uid).Desc("id").Get(&data) | |||
if data.State == 3 || data.Id == 0 || data.CreateTime.Unix()+365 < time.Now().Unix() { | |||
isCanSelect = "1" | |||
} | |||
if isCanSelect != "1" { | |||
sess.Rollback() | |||
e.OutErr(c, 400, e.NewErr(400, "您不能选择")) | |||
return | |||
} | |||
no := data.No + 1 | |||
if data.State == 3 { | |||
no = data.No | |||
update, _ := sess.Where("no=? and uid=?", no, user.Info.Uid).Delete(&models.CampTaskProjectOperatorLike{}) | |||
if update == 0 { | |||
sess.Rollback() | |||
e.OutErr(c, 400, e.NewErr(400, "提交失败")) | |||
return | |||
} | |||
} | |||
for _, v := range args.Ids { | |||
var tmp = models.CampTaskProjectOperatorLike{ | |||
Uid: user.Info.Uid, | |||
ProjectId: utils.StrToInt(v), | |||
CreateTime: time.Now(), | |||
No: no, | |||
} | |||
insert, _ := sess.Insert(&tmp) | |||
if insert == 0 { | |||
sess.Rollback() | |||
e.OutErr(c, 400, e.NewErr(400, "提交失败")) | |||
return | |||
} | |||
} | |||
sess.Commit() | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func ProjectList(c *gin.Context) { | |||
var args md.ProjectListReq | |||
if err := c.ShouldBindJSON(&args); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||
return | |||
} | |||
user := svc.GetUser(c) | |||
isCanSelect := "0" | |||
var data models.CampTaskProjectOperatorLike | |||
svc.MasterDb(c).Where("uid=?", user.Info.Uid).Desc("id").Get(&data) | |||
if data.State == 3 || data.Id == 0 || data.CreateTime.Unix()+365 < time.Now().Unix() { | |||
isCanSelect = "1" | |||
} | |||
hotTask := make([]map[string]string, 0) | |||
var hotTaskList []models.CampTaskProject | |||
sess := svc.MasterDb(c).Where("state=?", 1) | |||
if args.Cid != "" { | |||
sess.And("cid=?", args.Cid) | |||
} | |||
total, _ := sess.Limit(utils.StrToInt(args.P), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("is_must desc,id desc").FindAndCount(&hotTaskList) | |||
for _, v := range hotTaskList { | |||
tmp := map[string]string{ | |||
"id": utils.IntToStr(v.Id), | |||
"is_check": "0", | |||
"is_must": utils.IntToStr(v.IsMust), | |||
"name": v.Name, | |||
"money": v.Money, | |||
"icon": svc.ImageFormat(c, v.Logo), | |||
} | |||
counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, v.Id).Count(&models.CampTaskOperatorTask{}) | |||
if counts > 0 { | |||
tmp["is_check"] = "1" | |||
} | |||
hotTask = append(hotTask, tmp) | |||
} | |||
taskCate := make([]map[string]string, 0) | |||
taskCateList := make([]models.CampTaskProjectCate, 0) | |||
svc.MasterDb(c).Where("is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList) | |||
for _, v := range taskCateList { | |||
tmp := map[string]string{ | |||
"name": v.Name, "value": utils.IntToStr(v.Id), | |||
} | |||
taskCate = append(taskCate, tmp) | |||
} | |||
res := map[string]interface{}{ | |||
"cate_list": taskCate, | |||
"is_can_select": isCanSelect, | |||
"total": total, "list": hotTask, | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} |
@@ -0,0 +1,151 @@ | |||
package svc | |||
import ( | |||
"applet/app/comm/e" | |||
"applet/app/comm/svc" | |||
"applet/app/comm/utils" | |||
"applet/app/operator/md" | |||
md2 "applet/app/store/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" | |||
"github.com/gin-gonic/gin" | |||
"time" | |||
) | |||
func TaskUp(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) | |||
update, _ := svc.MasterDb(c).Where("task_id=? and uid=?", args["id"], user.Info.Uid).Count(&models.CampTaskOperatorTask{}) | |||
if update > 0 { | |||
e.OutErr(c, 400, e.NewErr(400, "该任务已上架")) | |||
return | |||
} | |||
var data = models.CampTaskOperatorTask{ | |||
TaskId: utils.StrToInt(args["id"]), | |||
Uid: user.Info.Uid, | |||
CreateTime: time.Now(), | |||
} | |||
insert, _ := svc.MasterDb(c).Insert(&data) | |||
if insert == 0 { | |||
e.OutErr(c, 400, e.NewErr(400, "上架失败")) | |||
return | |||
} | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func TaskDown(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) | |||
update, _ := svc.MasterDb(c).Where("task_id=? and uid=?", args["id"], user.Info.Uid).Delete(&models.CampTaskOperatorTask{}) | |||
if update == 0 { | |||
e.OutErr(c, 400, e.NewErr(400, "下架失败")) | |||
return | |||
} | |||
e.OutSuc(c, "success", nil) | |||
return | |||
} | |||
func TaskList(c *gin.Context) { | |||
var args md.TaskListReq | |||
if err := c.ShouldBindJSON(&args); err != nil { | |||
e.OutErr(c, e.ERR_INVALID_ARGS) | |||
return | |||
} | |||
user := svc.GetUser(c) | |||
hotTask := make([]map[string]string, 0) | |||
var hotTaskList []models.CampTaskList | |||
sess := svc.MasterDb(c).Where("up_down_state=?", 1) | |||
if args.Cid != "" { | |||
sess.And("first_cid=?", args.Cid) | |||
} | |||
if args.SettleType != "" { | |||
sess.And("settle_type=?", args.SettleType) | |||
} | |||
total, _ := sess.Limit(utils.StrToInt(args.P), (utils.StrToInt(args.P)-1)*utils.StrToInt(args.Size)).OrderBy("success_num desc,id desc").FindAndCount(&hotTaskList) | |||
for _, v := range hotTaskList { | |||
tmp := map[string]string{ | |||
"id": utils.IntToStr(v.Id), | |||
"is_check": "0", | |||
"name": v.Name, | |||
"price": v.Price, | |||
"num": utils.IntToStr(v.Num), | |||
"icon": svc.ImageFormat(c, v.Logo), | |||
"timer": v.StartTime.Format("2006-01-02") + "至" + v.EndTime.Format("2006-01-02"), | |||
} | |||
counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, v.Id).Count(&models.CampTaskOperatorTask{}) | |||
if counts > 0 { | |||
tmp["is_check"] = "1" | |||
} | |||
hotTask = append(hotTask, tmp) | |||
} | |||
taskCate := make([]map[string]string, 0) | |||
taskCateList := make([]models.CampTaskCate, 0) | |||
svc.MasterDb(c).Where(" is_show=?", 1).OrderBy("sort desc,id desc").Find(&taskCateList) | |||
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) | |||
} | |||
res := map[string]interface{}{ | |||
"cate_list": taskCate, | |||
"settle_type": []map[string]string{ | |||
{"name": "T+1", "value": "0"}, | |||
{"name": "T+7", "value": "1"}, | |||
{"name": "月结", "value": "2"}, | |||
}, | |||
"total": total, "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 | |||
} | |||
user := svc.GetUser(c) | |||
taskDb := implement.NewCampTaskListDb(svc.MasterDb(c)) | |||
task, _ := taskDb.GetCampTaskById(args["id"]) | |||
res := md2.TaskAllDetail{} | |||
res.Label = make([]string, 0) | |||
res.DetailInfo = make([]string, 0) | |||
if task != nil { | |||
taskDetailDb := implement.NewCampTaskDetailDb(svc.MasterDb(c)) | |||
taskDetail, _ := taskDetailDb.GetCampTaskDetailById(args["id"]) | |||
res = md2.TaskAllDetail{ | |||
Id: utils.IntToStr(task.Id), | |||
Name: task.Name, | |||
Icon: svc.ImageFormat(c, task.Logo), | |||
Price: task.Price, | |||
Num: utils.IntToStr(task.Num), | |||
Timer: task.StartTime.Format("2006-01-02") + "至" + task.EndTime.Format("2006-01-02"), | |||
} | |||
if taskDetail != nil { | |||
DetailInfo := make([]string, 0) | |||
json.Unmarshal([]byte(taskDetail.DetailInfo), &DetailInfo) | |||
res.DetailInfo = DetailInfo | |||
} | |||
label := make([]string, 0) | |||
json.Unmarshal([]byte(task.Label), &label) | |||
res.Label = label | |||
counts, _ := svc.MasterDb(c).Where("uid=? and task_id=?", user.Info.Uid, task.Id).Count(&models.CampTaskOperatorTask{}) | |||
if counts > 0 { | |||
res.IsCheck = "1" | |||
} | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} |
@@ -4,6 +4,7 @@ import ( | |||
"applet/app/cfg" | |||
"applet/app/comm/svc" | |||
"applet/app/mw" | |||
operatorHdl "applet/app/operator/hdl" | |||
storeHdl "applet/app/store/hdl" | |||
_ "applet/docs" | |||
"fmt" | |||
@@ -67,6 +68,7 @@ func routeStore(r *gin.RouterGroup) { | |||
r.POST("/fastLogin", storeHdl.FastLogin) //快捷登陆 | |||
r.POST("/changePwd", storeHdl.ChangePwd) //修改密码 | |||
r.Use(mw.StoreAuthJWT) // 以下接口需要JWT验证 | |||
r.GET("/userInfo", storeHdl.UserInfo) //首页数据 | |||
r.GET("/index", storeHdl.Index) //首页数据 | |||
r.GET("/storeIndex", storeHdl.StoreIndex) //商家中心 | |||
r.GET("/taskBase", storeHdl.TaskBase) //任务基础 | |||
@@ -117,9 +119,18 @@ func routeCustom(r *gin.RouterGroup) { | |||
} | |||
func routeOperator(r *gin.RouterGroup) { | |||
r.Use(mw.DB) // 以下接口需要用到数据库 | |||
r.Use(mw.Checker) // 以下接口需要检查Header: platform | |||
r.Use(mw.AuthJWT) // 以下接口需要JWT验证 | |||
r.Use(mw.DB) // 以下接口需要用到数据库 | |||
r.Use(mw.Checker) // 以下接口需要检查Header: platform | |||
r.POST("/login", operatorHdl.Login) //账号密码登陆 | |||
r.POST("/sms", operatorHdl.Sms) //发验证码 | |||
r.POST("/fastLogin", operatorHdl.FastLogin) //快捷登陆 | |||
r.Use(mw.AuthJWT) // 以下接口需要JWT验证 | |||
r.GET("/index", operatorHdl.Index) | |||
r.POST("/taskDetail", operatorHdl.TaskDetail) //任务详情 | |||
r.POST("/taskCenter", operatorHdl.TaskList) | |||
r.POST("/taskCenter/up", operatorHdl.TaskUp) | |||
r.POST("/taskCenter/down", operatorHdl.TaskDown) | |||
r.POST("/projectCenter", operatorHdl.ProjectList) | |||
//r.POST("/projectDetail", operatorHdl.ProjectDetail) | |||
r.POST("/projectSelect", operatorHdl.ProjectSelect) | |||
} |
@@ -11,3 +11,6 @@ func Index(c *gin.Context) { | |||
func StoreIndex(c *gin.Context) { | |||
svc.StoreIndex(c) | |||
} | |||
func UserInfo(c *gin.Context) { | |||
svc.UserInfo(c) | |||
} |
@@ -15,4 +15,8 @@ type ProjectSaveReq struct { | |||
VideoInfo string `json:"video_info" ` | |||
Img []string `json:"img" ` | |||
DetailInfo []string `json:"detail_info"` | |||
Label []string `json:"label"` | |||
AdvWord string `json:"adv_word"` | |||
AdminName string `json:"admin_name"` | |||
AdminPhone string `json:"admin_phone"` | |||
} |
@@ -29,6 +29,7 @@ type TaskDetail struct { | |||
Announcement string `json:"announcement"` | |||
} | |||
type TaskAllDetail struct { | |||
IsCheck string `json:"is_check"` | |||
Id string `json:"id" xorm:"not null pk autoincr INT(11)"` | |||
Name string `json:"name" xorm:"comment('名称') VARCHAR(255)"` | |||
Icon string `json:"icon" xorm:"comment('logo') VARCHAR(255)"` | |||
@@ -9,6 +9,14 @@ import ( | |||
"github.com/gin-gonic/gin" | |||
) | |||
func UserInfo(c *gin.Context) { | |||
store := svc.GetCampStore(c) | |||
res := map[string]string{ | |||
"phone": store.Phone, | |||
} | |||
e.OutSuc(c, res, nil) | |||
return | |||
} | |||
func Index(c *gin.Context) { | |||
storeId := svc.GetCampStoreId(c) | |||
allTaskCount, _ := svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId).Count(&models.CampTaskList{}) | |||
@@ -21,7 +29,7 @@ func Index(c *gin.Context) { | |||
} | |||
myTask := make([]map[string]string, 0) | |||
NewCampTaskListDb := implement.NewCampTaskListDb(svc.MasterDb(c)) | |||
myTaskList, _ := NewCampTaskListDb.FindCampTaskList(utils.IntToStr(storeId), "", 1, 5, "apply_time desc") | |||
myTaskList, _ := NewCampTaskListDb.FindCampTaskList(utils.IntToStr(storeId), "", "", 1, 5, "apply_time desc") | |||
if myTaskList != nil { | |||
for _, v := range *myTaskList { | |||
tmp := map[string]string{ | |||
@@ -33,7 +41,7 @@ func Index(c *gin.Context) { | |||
} | |||
} | |||
hotTask := make([]map[string]string, 0) | |||
hotTaskList, _ := NewCampTaskListDb.FindCampTaskList(utils.IntToStr(storeId), "", 1, 5, "success_num desc") | |||
hotTaskList, _ := NewCampTaskListDb.FindCampTaskList(utils.IntToStr(storeId), "", "1", 1, 5, "success_num desc,id desc") | |||
if hotTaskList != nil { | |||
for _, v := range *hotTaskList { | |||
tmp := map[string]string{ | |||
@@ -69,7 +77,7 @@ func StoreIndex(c *gin.Context) { | |||
} | |||
myTask := make([]map[string]string, 0) | |||
NewCampTaskListDb := implement.NewCampTaskListDb(svc.MasterDb(c)) | |||
myTaskList, _ := NewCampTaskListDb.FindCampTaskList(utils.IntToStr(storeId), "", 1, 5, "apply_time desc") | |||
myTaskList, _ := NewCampTaskListDb.FindCampTaskList(utils.IntToStr(storeId), "", "", 1, 5, "apply_time desc") | |||
if myTaskList != nil { | |||
for _, v := range *myTaskList { | |||
tmp := map[string]string{ | |||
@@ -51,20 +51,30 @@ func AllProjectList(c *gin.Context) { | |||
json.Unmarshal([]byte(v.EnterpriseInfo), &enterpriseInfo) | |||
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, | |||
"cid": utils.IntToStr(v.Cid), | |||
"money": v.Money, | |||
"logo": v.Logo, | |||
"img": firstImg, | |||
"video_info": v.VideoInfo, | |||
"img": img, | |||
"img_list": img, | |||
"detail_info": detailInfo, | |||
"create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | |||
"enterprise_info": enterpriseInfo, | |||
"cate_name": "", | |||
"adv_word": v.AdvWord, | |||
"label": label, | |||
} | |||
for _, v1 := range cate { | |||
if v1.Id == v.Cid { | |||
@@ -108,7 +118,11 @@ func ProjectList(c *gin.Context) { | |||
json.Unmarshal([]byte(v.Img), &img) | |||
detailInfo := make([]string, 0) | |||
json.Unmarshal([]byte(v.DetailInfo), &detailInfo) | |||
label := make([]string, 0) | |||
json.Unmarshal([]byte(v.Label), &label) | |||
tmp := map[string]interface{}{ | |||
"admin_name": v.AdminName, | |||
"admin_phone": v.AdminPhone, | |||
"id": utils.IntToStr(v.Id), | |||
"name": v.Name, | |||
"cid": utils.IntToStr(v.Cid), | |||
@@ -120,6 +134,8 @@ func ProjectList(c *gin.Context) { | |||
"create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | |||
"enterprise_info": enterpriseInfo, | |||
"cate_name": "", | |||
"adv_word": v.AdvWord, | |||
"label": label, | |||
} | |||
for _, v1 := range cate { | |||
if v1.Id == v.Cid { | |||
@@ -165,6 +181,10 @@ func ProjectSave(c *gin.Context) { | |||
data.VideoInfo = args.VideoInfo | |||
data.Img = utils.SerializeStr(args.Img) | |||
data.DetailInfo = utils.SerializeStr(args.DetailInfo) | |||
data.Label = utils.SerializeStr(args.Label) | |||
data.AdvWord = args.AdvWord | |||
data.AdminName = args.AdminName | |||
data.AdminPhone = args.AdminPhone | |||
svc.MasterDb(c).Where("id=?", data.Id).Update(&data) | |||
e.OutSuc(c, "success", nil) | |||
return | |||
@@ -564,7 +564,6 @@ func TaskChangeNum(c *gin.Context) { | |||
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 | |||
@@ -45,12 +45,10 @@ require ( | |||
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 | |||
code.fnuoos.com/go_rely_warehouse/zyos_model.git v0.0.4-0.20250908064256-8b6a3c2bc3f3 | |||
) | |||
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_model.git v0.0.4-0.20250910023150-2ede529c0221 // indirect | |||
github.com/KyleBanks/depth v1.2.1 // indirect | |||
github.com/PuerkitoBio/goquery v1.6.1 // indirect | |||
github.com/PuerkitoBio/purell v1.1.1 // indirect | |||