huangjiajun 2 週之前
父節點
當前提交
bb6b09e52c
共有 19 個檔案被更改,包括 759 行新增15 行删除
  1. +10
    -0
      app/operator/hdl/hdl_index.go
  2. +23
    -0
      app/operator/hdl/hdl_login.go
  3. +13
    -0
      app/operator/hdl/hdl_project.go
  4. +19
    -0
      app/operator/hdl/hdl_task.go
  5. +24
    -0
      app/operator/md/md_login.go
  6. +10
    -0
      app/operator/md/md_project.go
  7. +8
    -0
      app/operator/md/md_task.go
  8. +84
    -0
      app/operator/svc/svc_index.go
  9. +235
    -0
      app/operator/svc/svc_login.go
  10. +123
    -0
      app/operator/svc/svc_project.go
  11. +151
    -0
      app/operator/svc/svc_task.go
  12. +16
    -5
      app/router/router.go
  13. +3
    -0
      app/store/hdl/hdl_index.go
  14. +4
    -0
      app/store/md/md_project.go
  15. +1
    -0
      app/store/md/md_task.go
  16. +11
    -3
      app/store/svc/svc_index.go
  17. +22
    -2
      app/store/svc/svc_project.go
  18. +0
    -1
      app/store/svc/svc_task.go
  19. +2
    -4
      go.mod

+ 10
- 0
app/operator/hdl/hdl_index.go 查看文件

@@ -0,0 +1,10 @@
package hdl

import (
"applet/app/operator/svc"
"github.com/gin-gonic/gin"
)

func Index(c *gin.Context) {
svc.Index(c)
}

+ 23
- 0
app/operator/hdl/hdl_login.go 查看文件

@@ -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)
}

+ 13
- 0
app/operator/hdl/hdl_project.go 查看文件

@@ -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)
}

+ 19
- 0
app/operator/hdl/hdl_task.go 查看文件

@@ -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)
}

+ 24
- 0
app/operator/md/md_login.go 查看文件

@@ -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"`
}

+ 10
- 0
app/operator/md/md_project.go 查看文件

@@ -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"`
}

+ 8
- 0
app/operator/md/md_task.go 查看文件

@@ -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"`
}

+ 84
- 0
app/operator/svc/svc_index.go 查看文件

@@ -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
}

+ 235
- 0
app/operator/svc/svc_login.go 查看文件

@@ -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
}

+ 123
- 0
app/operator/svc/svc_project.go 查看文件

@@ -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
}

+ 151
- 0
app/operator/svc/svc_task.go 查看文件

@@ -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
}

+ 16
- 5
app/router/router.go 查看文件

@@ -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)
}

+ 3
- 0
app/store/hdl/hdl_index.go 查看文件

@@ -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)
}

+ 4
- 0
app/store/md/md_project.go 查看文件

@@ -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"`
}

+ 1
- 0
app/store/md/md_task.go 查看文件

@@ -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)"`


+ 11
- 3
app/store/svc/svc_index.go 查看文件

@@ -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{


+ 22
- 2
app/store/svc/svc_project.go 查看文件

@@ -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


+ 0
- 1
app/store/svc/svc_task.go 查看文件

@@ -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


+ 2
- 4
go.mod 查看文件

@@ -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


Loading…
取消
儲存