|
- package svc
-
- import (
- "applet/app/comm/db"
- "applet/app/comm/e"
- md2 "applet/app/comm/md"
- "applet/app/comm/svc"
- "applet/app/comm/utils"
- "applet/app/comm/utils/qrcode"
- "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit"
- "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models"
- "fmt"
- "github.com/gin-gonic/gin"
- "strings"
- "time"
- )
-
- func TaskQrcodeOrderCate(c *gin.Context) {
- var args map[string]string
- if err := c.ShouldBindJSON(&args); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS)
- return
- }
- user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization"))
- uid := 0
- if args["qrcode_id"] != "" {
- var data models.CampTaskUserPromotionQrcode
- svc.MasterDb(c).Where("id=?", args["id"]).Get(&data)
- uid = data.Uid
- } else if user != nil {
- uid = user.Info.Uid
- }
- where := "uid=" + utils.IntToStr(uid)
- if args["qrcode_id"] != "" {
- where += " and qrcode_id=" + args["qrcode_id"]
- }
- if args["task_id"] != "" {
- where += " and task_id=" + args["task_id"]
- }
- sql := `select count(*) as count,state,task_id from camp_task_user_promotion_order where %s group by state`
- sql = fmt.Sprintf(sql, where)
- nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
- list := []map[string]string{
- {"name": "审核中", "value": "0"},
- {"name": "审核通过", "value": "1"},
- {"name": "审核驳回", "value": "2"},
- }
- id := "0"
- for k, v := range list {
- for _, v1 := range nativeString {
- id = v1["task_id"]
- if v["value"] == v1["state"] {
- list[k]["name"] += "(" + v1["count"] + ")"
- }
- }
- }
- var task models.CampTaskList
- svc.MasterDb(c).Where("id=?", id).Get(&task)
- re := map[string]interface{}{
- "list": list,
- "task_name": task.Name,
- }
- e.OutSuc(c, re, nil)
- return
- }
- func TaskQrcodeOrder(c *gin.Context) {
- var args map[string]string
- if err := c.ShouldBindJSON(&args); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS)
- return
- }
- user, _ := svc.GetDefaultUser(c, c.GetHeader("Authorization"))
- uid := 0
- if args["qrcode_id"] != "" {
- var data models.CampTaskUserPromotionQrcode
- svc.MasterDb(c).Where("id=?", args["qrcode_id"]).Get(&data)
- args["task_id"] = utils.IntToStr(data.TaskId)
- uid = data.Uid
- } else if user != nil {
- uid = user.Info.Uid
- }
- where := "uid=" + utils.IntToStr(uid)
- if args["qrcode_id"] != "" {
- where += " and qrcode_id=" + args["qrcode_id"]
- }
- if args["task_id"] != "" {
- where += " and task_id=" + args["task_id"]
- }
- if args["state"] != "" {
- where += " and state=" + args["state"]
- }
- sql := `select * from camp_task_user_promotion_order where %s order by id desc %s`
- sql = fmt.Sprintf(sql, where, "limit "+utils.IntToStr((utils.StrToInt(args["p"])-1)*10)+",10")
- nativeString, _ := db.QueryNativeString(svc.MasterDb(c), sql)
- list := make([]map[string]interface{}, 0)
- for _, v := range nativeString {
- var task models.CampTaskList
- svc.MasterDb(c).Where("id=?", v["task_id"]).Get(&task)
- dataList := []map[string]string{
- {"name": "提交时间:" + v["create_time"]},
- {"name": "姓名:" + v["name"]},
- {"name": "手机号:" + v["phone"]},
- {"name": "作业地区:" + v["province"] + v["city"]},
- }
- if v["state"] == "2" {
- dataList = append(dataList, map[string]string{"name": "驳回原因:" + v["store_reason"]})
- }
- img := strings.Split(v["img"], ",")
- tmp := map[string]interface{}{
- "task_name": task.Name,
- "data_list": dataList,
- "img": img,
- "state": v["state"],
- "oid": v["oid"],
- "qr_id": v["qrcode_id"],
- "id": v["id"],
- }
- list = append(list, tmp)
- }
- res := map[string]interface{}{
- "list": list,
- }
- e.OutSuc(c, res, nil)
- return
- }
- func TaskQrcodeSubmit(c *gin.Context) {
- var args map[string]string
- if err := c.ShouldBindJSON(&args); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS)
- return
- }
- var data models.CampTaskUserPromotionQrcode
- svc.MasterDb(c).Where("id=?", args["id"]).Get(&data)
- if data.Id == 0 {
- e.OutErr(c, 400, e.NewErr(400, "二维码已失效"))
- return
- }
- user, _ := db.UserFindByID(svc.MasterDb(c), data.Uid)
- if user == nil {
- e.OutErr(c, 400, e.NewErr(400, "二维码已失效"))
- return
- }
- topUid := TopUidBySubmit(c, data.Uid)
-
- if topUid != data.FormUid {
- e.OutErr(c, 400, e.NewErr(400, "二维码已失效"))
- return
- }
- cb, err := svc.HandleCampTaskLockDistributedLock(c.GetString("mid"), utils.IntToStr(data.TaskId), "camp_task")
- if err != nil {
- e.OutErr(c, e.ERR, e.NewErr(400000, "操作过快,请稍后再试"))
- return
- }
- // 处理完毕释放锁
- if cb != nil {
- defer cb()
- }
- sess := svc.MasterDb(c).NewSession()
- defer sess.Close()
- sess.Begin()
- var campTask models.CampTaskList
- sess.Where("id=?", data.TaskId).Get(&campTask)
- if campTask.UpDownState == 0 {
- sess.Rollback()
- e.OutErr(c, 400, e.NewErr(400, "任务已下架"))
- return
- }
- if campTask.Num-1 < 0 {
- sess.Rollback()
- e.OutErr(c, 400, e.NewErr(400, "任务数量不足"))
- return
- }
- campTask.Num--
- campTask.SuccessNum++
- update, err := sess.Where("id=?", campTask.Id).Cols("num,success_num").Update(&campTask)
- if update == 0 || err != nil {
- sess.Rollback()
- e.OutErr(c, 400, e.NewErr(400, "任务提交失败"))
- return
- }
- var changeLog = models.CampTaskDeductList{
- TaskId: campTask.Id,
- Type: 1,
- Num: 1,
- AfterNum: campTask.Num,
- CreateTime: time.Now(),
- StoreId: campTask.StoreId,
- Title: "交单扣除",
- OrdType: "task_success",
- }
- update, err = sess.Insert(&changeLog)
- if update == 0 || err != nil {
- sess.Rollback()
- e.OutErr(c, 400, e.NewErr(400, "任务提交失败"))
- return
- }
- var order = models.CampTaskUserPromotionOrder{
- Uid: user.Uid,
- TaskId: campTask.Id,
- CreateTime: time.Now(),
- FormUid: data.FormUid,
- Name: data.Name,
- Phone: data.Phone,
- Province: data.Province,
- City: data.City,
- Code: data.Code,
- Remark: data.Remark,
- QrcodeId: data.Id,
- Oid: utils.StrToInt64(utils.OrderUUID(user.Uid)),
- Payment: campTask.Price,
- StoreId: campTask.StoreId,
- UserLv: user.Level,
- Img: args["img"],
- SettleType: campTask.SettleType,
- }
- update, err = sess.Insert(&order)
- if update == 0 || err != nil {
- sess.Rollback()
- e.OutErr(c, 400, e.NewErr(400, "任务提交失败"))
- return
- }
- sess.Commit()
- ch, _ := rabbit.Cfg.Pool.GetChannel()
- arg := md2.ZhiosCampOrderSettle{Id: utils.IntToStr(order.Id), Mid: c.GetString("mid")}
- err = ch.PublishV2(md2.ZhiosCampTask, utils.SerializeStr(arg), md2.ZhiosCampTaskOrderCommissionRoutKey)
- if err != nil {
- err = ch.PublishV2(md2.ZhiosCampTask, utils.SerializeStr(arg), md2.ZhiosCampTaskOrderCommissionRoutKey)
- }
- e.OutSuc(c, "success", nil)
- return
- }
- func TaskQrcodeContinueSubmit(c *gin.Context) {
- var args map[string]string
- if err := c.ShouldBindJSON(&args); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS)
- return
- }
- var data models.CampTaskUserPromotionOrder
- svc.MasterDb(c).Where("id=?", args["id"]).Get(&data)
- if data.Id == 0 {
- e.OutErr(c, 400, e.NewErr(400, "订单不存在"))
- return
- }
- if data.State != 2 {
- e.OutErr(c, 400, e.NewErr(400, "订单已审核或审核中,不可操作"))
- return
- }
- data.Img = args["img"]
- data.State = 0
- svc.MasterDb(c).Where("id=?", data.Id).Cols("img,state").Update(&data)
- e.OutSuc(c, "success", nil)
- return
- }
- func TaskQrcodeDetail(c *gin.Context) {
- var args map[string]string
- if err := c.ShouldBindJSON(&args); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS)
- return
- }
- var data models.CampTaskUserPromotionQrcode
- svc.MasterDb(c).Where("id=?", args["id"]).Get(&data)
- var task models.CampTaskList
- svc.MasterDb(c).Where("id=?", data.TaskId).Get(&task)
- res := map[string]string{
- "name": data.Name, "task_name": task.Name,
- "phone": data.Phone,
- "id": utils.IntToStr(data.Id),
- "address": data.Province + data.City,
- }
- e.OutSuc(c, res, nil)
- return
- }
- func TaskQrcodeList(c *gin.Context) {
- var args map[string]string
- if err := c.ShouldBindJSON(&args); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS)
- return
- }
- user := svc.GetUser(c)
- var data []models.CampTaskUserPromotionQrcode
- size := 10
- p := utils.StrToInt(args["p"])
- sess := svc.MasterDb(c).Where("uid=?", user.Info.Uid)
- if args["task_id"] != "" {
- sess.And("task_id=?", args["task_id"])
- }
- sess.Limit(size, (p-1)*size).OrderBy("id desc").Find(&data)
- list := make([]map[string]string, 0)
- h5Domain := svc.GetWebSiteDomainInfo(c, "wap")
- for _, v := range data {
- var task models.CampTaskList
- svc.MasterDb(c).Where("id=?", v.TaskId).Get(&task)
- QrCode := qrcode.GetPNGBase64(h5Domain + "/#/zy-base-widget-sub/pages/jcy-task-page/task-upload-page?qr_id=" + utils.IntToStr(v.Id))
- QrCode = strings.ReplaceAll(QrCode, "\u0000", "")
- tmp := map[string]string{
- "name": v.Name,
- "create_time": v.CreateTime.Format("2006-01-02 15:04:05"),
- "phone": v.Phone,
- "address": v.Province + v.City,
- "remark": v.Remark,
- "id": utils.IntToStr(v.Id),
- "qrcode": QrCode,
- "code": utils.IntToStr(v.Id),
- "task_name": task.Name,
- }
- list = append(list, tmp)
- }
- res := map[string]interface{}{
- "list": list,
- }
- e.OutSuc(c, res, nil)
- return
- }
- func TaskQrcodeApply(c *gin.Context) {
- var args map[string]string
- if err := c.ShouldBindJSON(&args); err != nil {
- e.OutErr(c, e.ERR_INVALID_ARGS)
- return
- }
- user := svc.GetUser(c)
- var CampTaskOperatorTask models.CampTaskOperatorTask
- svc.MasterDb(c).Where("id=?", args["id"]).Get(&CampTaskOperatorTask)
- if CampTaskOperatorTask.Id == 0 {
- e.OutErr(c, 400, e.NewErr(400, "任务不存在"))
- return
- }
- var CampTaskTask models.CampTaskList
- svc.MasterDb(c).Where("id=?", CampTaskOperatorTask.TaskId).Get(&CampTaskTask)
- if CampTaskTask.UpDownState != 1 {
- e.OutErr(c, 400, e.NewErr(400, "任务已下架"))
- return
- }
- if CampTaskTask.Num-1 < 0 {
- e.OutErr(c, 400, e.NewErr(400, "任务已领完"))
- return
- }
- CampTaskTask.ExtendNum++
- svc.MasterDb(c).Where("id=?", CampTaskTask.Id).Cols("extend_num").Update(&CampTaskTask)
- count, _ := svc.MasterDb(c).Where("uid=? and task_id=? and phone=?", user.Info.Uid, CampTaskOperatorTask.TaskId, args["phone"]).Count(&models.CampTaskUserPromotionQrcode{})
- if count > 0 {
- e.OutErr(c, 400, e.NewErr(400, "当前号码重复,请重新输入"))
- return
- }
- var data = models.CampTaskUserPromotionQrcode{
- Uid: user.Info.Uid,
- TaskId: CampTaskOperatorTask.TaskId,
- FormUid: CampTaskOperatorTask.Uid,
- CreateTime: time.Now(),
- Name: args["name"],
- Phone: args["phone"],
- Province: args["province"],
- City: args["city"],
- Remark: args["remark"],
- State: 1,
- }
- insert, _ := svc.MasterDb(c).Insert(&data)
- if insert == 0 {
- e.OutErr(c, 400, e.NewErr(400, "申请失败"))
- return
- }
- e.OutSuc(c, "success", nil)
- return
- }
|