@@ -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/cfg" | ||||
"applet/app/comm/svc" | "applet/app/comm/svc" | ||||
"applet/app/mw" | "applet/app/mw" | ||||
operatorHdl "applet/app/operator/hdl" | |||||
storeHdl "applet/app/store/hdl" | storeHdl "applet/app/store/hdl" | ||||
_ "applet/docs" | _ "applet/docs" | ||||
"fmt" | "fmt" | ||||
@@ -67,6 +68,7 @@ func routeStore(r *gin.RouterGroup) { | |||||
r.POST("/fastLogin", storeHdl.FastLogin) //快捷登陆 | r.POST("/fastLogin", storeHdl.FastLogin) //快捷登陆 | ||||
r.POST("/changePwd", storeHdl.ChangePwd) //修改密码 | r.POST("/changePwd", storeHdl.ChangePwd) //修改密码 | ||||
r.Use(mw.StoreAuthJWT) // 以下接口需要JWT验证 | r.Use(mw.StoreAuthJWT) // 以下接口需要JWT验证 | ||||
r.GET("/userInfo", storeHdl.UserInfo) //首页数据 | |||||
r.GET("/index", storeHdl.Index) //首页数据 | r.GET("/index", storeHdl.Index) //首页数据 | ||||
r.GET("/storeIndex", storeHdl.StoreIndex) //商家中心 | r.GET("/storeIndex", storeHdl.StoreIndex) //商家中心 | ||||
r.GET("/taskBase", storeHdl.TaskBase) //任务基础 | r.GET("/taskBase", storeHdl.TaskBase) //任务基础 | ||||
@@ -117,9 +119,18 @@ func routeCustom(r *gin.RouterGroup) { | |||||
} | } | ||||
func routeOperator(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) { | func StoreIndex(c *gin.Context) { | ||||
svc.StoreIndex(c) | svc.StoreIndex(c) | ||||
} | } | ||||
func UserInfo(c *gin.Context) { | |||||
svc.UserInfo(c) | |||||
} |
@@ -15,4 +15,8 @@ type ProjectSaveReq struct { | |||||
VideoInfo string `json:"video_info" ` | VideoInfo string `json:"video_info" ` | ||||
Img []string `json:"img" ` | Img []string `json:"img" ` | ||||
DetailInfo []string `json:"detail_info"` | 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"` | Announcement string `json:"announcement"` | ||||
} | } | ||||
type TaskAllDetail struct { | type TaskAllDetail struct { | ||||
IsCheck string `json:"is_check"` | |||||
Id string `json:"id" xorm:"not null pk autoincr INT(11)"` | Id string `json:"id" xorm:"not null pk autoincr INT(11)"` | ||||
Name string `json:"name" xorm:"comment('名称') VARCHAR(255)"` | Name string `json:"name" xorm:"comment('名称') VARCHAR(255)"` | ||||
Icon string `json:"icon" xorm:"comment('logo') VARCHAR(255)"` | Icon string `json:"icon" xorm:"comment('logo') VARCHAR(255)"` | ||||
@@ -9,6 +9,14 @@ import ( | |||||
"github.com/gin-gonic/gin" | "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) { | func Index(c *gin.Context) { | ||||
storeId := svc.GetCampStoreId(c) | storeId := svc.GetCampStoreId(c) | ||||
allTaskCount, _ := svc.MasterDb(c).Where("store_id=? and is_delete=0", storeId).Count(&models.CampTaskList{}) | 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) | myTask := make([]map[string]string, 0) | ||||
NewCampTaskListDb := implement.NewCampTaskListDb(svc.MasterDb(c)) | 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 { | if myTaskList != nil { | ||||
for _, v := range *myTaskList { | for _, v := range *myTaskList { | ||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
@@ -33,7 +41,7 @@ func Index(c *gin.Context) { | |||||
} | } | ||||
} | } | ||||
hotTask := make([]map[string]string, 0) | 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 { | if hotTaskList != nil { | ||||
for _, v := range *hotTaskList { | for _, v := range *hotTaskList { | ||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
@@ -69,7 +77,7 @@ func StoreIndex(c *gin.Context) { | |||||
} | } | ||||
myTask := make([]map[string]string, 0) | myTask := make([]map[string]string, 0) | ||||
NewCampTaskListDb := implement.NewCampTaskListDb(svc.MasterDb(c)) | 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 { | if myTaskList != nil { | ||||
for _, v := range *myTaskList { | for _, v := range *myTaskList { | ||||
tmp := map[string]string{ | tmp := map[string]string{ | ||||
@@ -51,20 +51,30 @@ func AllProjectList(c *gin.Context) { | |||||
json.Unmarshal([]byte(v.EnterpriseInfo), &enterpriseInfo) | json.Unmarshal([]byte(v.EnterpriseInfo), &enterpriseInfo) | ||||
img := make([]string, 0) | img := make([]string, 0) | ||||
json.Unmarshal([]byte(v.Img), &img) | json.Unmarshal([]byte(v.Img), &img) | ||||
firstImg := "" | |||||
if len(img) > 0 { | |||||
firstImg = img[0] | |||||
} | |||||
detailInfo := make([]string, 0) | detailInfo := make([]string, 0) | ||||
json.Unmarshal([]byte(v.DetailInfo), &detailInfo) | json.Unmarshal([]byte(v.DetailInfo), &detailInfo) | ||||
label := make([]string, 0) | |||||
json.Unmarshal([]byte(v.Label), &label) | |||||
tmp := map[string]interface{}{ | tmp := map[string]interface{}{ | ||||
"year": v.CreateTime.Format("2006") + "年", | |||||
"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": v.Money, | ||||
"logo": v.Logo, | |||||
"img": firstImg, | |||||
"video_info": v.VideoInfo, | "video_info": v.VideoInfo, | ||||
"img": img, | |||||
"img_list": img, | |||||
"detail_info": detailInfo, | "detail_info": detailInfo, | ||||
"create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | "create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | ||||
"enterprise_info": enterpriseInfo, | "enterprise_info": enterpriseInfo, | ||||
"cate_name": "", | "cate_name": "", | ||||
"adv_word": v.AdvWord, | |||||
"label": label, | |||||
} | } | ||||
for _, v1 := range cate { | for _, v1 := range cate { | ||||
if v1.Id == v.Cid { | if v1.Id == v.Cid { | ||||
@@ -108,7 +118,11 @@ func ProjectList(c *gin.Context) { | |||||
json.Unmarshal([]byte(v.Img), &img) | json.Unmarshal([]byte(v.Img), &img) | ||||
detailInfo := make([]string, 0) | detailInfo := make([]string, 0) | ||||
json.Unmarshal([]byte(v.DetailInfo), &detailInfo) | json.Unmarshal([]byte(v.DetailInfo), &detailInfo) | ||||
label := make([]string, 0) | |||||
json.Unmarshal([]byte(v.Label), &label) | |||||
tmp := map[string]interface{}{ | tmp := map[string]interface{}{ | ||||
"admin_name": v.AdminName, | |||||
"admin_phone": v.AdminPhone, | |||||
"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), | ||||
@@ -120,6 +134,8 @@ func ProjectList(c *gin.Context) { | |||||
"create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | "create_time": v.CreateTime.Format("2006-01-02 15:04:05"), | ||||
"enterprise_info": enterpriseInfo, | "enterprise_info": enterpriseInfo, | ||||
"cate_name": "", | "cate_name": "", | ||||
"adv_word": v.AdvWord, | |||||
"label": label, | |||||
} | } | ||||
for _, v1 := range cate { | for _, v1 := range cate { | ||||
if v1.Id == v.Cid { | if v1.Id == v.Cid { | ||||
@@ -165,6 +181,10 @@ func ProjectSave(c *gin.Context) { | |||||
data.VideoInfo = args.VideoInfo | data.VideoInfo = args.VideoInfo | ||||
data.Img = utils.SerializeStr(args.Img) | data.Img = utils.SerializeStr(args.Img) | ||||
data.DetailInfo = utils.SerializeStr(args.DetailInfo) | 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) | svc.MasterDb(c).Where("id=?", data.Id).Update(&data) | ||||
e.OutSuc(c, "success", nil) | e.OutSuc(c, "success", nil) | ||||
return | return | ||||
@@ -564,7 +564,6 @@ func TaskChangeNum(c *gin.Context) { | |||||
return | return | ||||
} | } | ||||
if task.SettleType == 0 { | 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)` | 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) | nativeString, _ := db.QueryNativeStringWithSession(sess, sql, storeId) | ||||
var amount float64 = 0 | var amount float64 = 0 | ||||
@@ -45,12 +45,10 @@ 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 | |||||
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 ( | 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/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 | ||||