package servers import ( . "app.yhyue.com/moapp/jybase/api" "app.yhyue.com/moapp/jybase/common" "app.yhyue.com/moapp/jybase/go-xweb/xweb" "encoding/json" "fmt" "jy-docs/public" "jy-docs/rpc" "log" "time" ) type UserDoc struct { *xweb.Action userList xweb.Mapper `xweb:"/user/list"` //用户列表 collectAdd xweb.Mapper `xweb:"/user/collect/add"` //收藏文库 collectRemove xweb.Mapper `xweb:"/user/collect/remove"` //取消收藏 docBuy xweb.Mapper `xweb:"/user/buy"` //文库购买 } //用户文库列表 func (userDoc *UserDoc) UserList() { userId := common.ObjToString(userDoc.GetSession("userId")) rData, errMsg := func() (interface{}, error) { pageNumReq, _ := userDoc.GetInt("num") pageSizeReq, _ := userDoc.GetInt("size") sign, _ := userDoc.GetInt("sign") // 0兑换的 1收藏的 2回收站的 pageNum, pageSize, _ := public.PageNumParse(pageNumReq, pageSizeReq, -1) if sign < 0 || sign > 2 { return nil, fmt.Errorf("请求参数异常") } collectList, total, err := rpc.GetUserDocs(userId, pageNum, pageSize, sign) if err != nil { return nil, err } return map[string]interface{}{ "total": total, "list": collectList, }, nil }() if errMsg != nil { log.Printf("%s UserDoc collectList err:%s\n", userId, errMsg.Error()) } userDoc.ServeJson(NewResult(rData, errMsg)) } func (userDoc *UserDoc) CollectAdd() { userId := common.ObjToString(userDoc.GetSession("userId")) rData, errMsg := func() (interface{}, error) { docId := userDoc.GetString("docId") if docId == "" { return nil, fmt.Errorf("参数异常") } err := rpc.SetUserCollect(userId, docId) if err != nil { return nil, err } return "success", nil }() if errMsg != nil { log.Printf("%s UserDoc collectAdd err:%s\n", userId, errMsg.Error()) } userDoc.ServeJson(NewResult(rData, errMsg)) } func (userDoc *UserDoc) CollectRemove() { userId := common.ObjToString(userDoc.GetSession("userId")) rData, errMsg := func() (interface{}, error) { docId := userDoc.GetString("docId") if docId == "" { return nil, fmt.Errorf("参数异常") } err := rpc.DelUserCollect(userId, docId) if err != nil { return nil, err } return "success", nil }() if errMsg != nil { log.Printf("%s UserDoc collectRemove err:%s\n", userId, errMsg.Error()) } userDoc.ServeJson(NewResult(rData, errMsg)) } func (userDoc *UserDoc) DocBuy() { userId := common.ObjToString(userDoc.GetSession("userId")) rData, errMsg := func() (interface{}, error) { docId := userDoc.GetString("docId") phone := userDoc.GetString("phone") if docId == "" { return nil, fmt.Errorf("参数异常") } var userPoint, docPoint int64 = 0, 0 var err error //查询用户剩余积分 userPoint, err = rpc.GetUserPointValue(userId) if err != nil { return nil, err } //查询文档所需积分 docInfo, isBuy, _, err := rpc.GetDocDetail(userId, docId) if err != nil { return nil, err } if isBuy { return nil, fmt.Errorf("已兑换,请勿重复操作") } docPoint = docInfo.Price //积分够调扣积分 if userPoint < docPoint { return nil, fmt.Errorf("剩余积分不足") } bytes, err := json.Marshal(map[string]interface{}{ "name": docInfo.DocName, "summary": docInfo.DocSummary, "img": docInfo.PreviewImgId, "fType": docInfo.DocFileType, }) if err != nil { return nil, fmt.Errorf("文库异常") } if err := rpc.SpendUserPoint(userId, docInfo.DocId, string(bytes), docPoint); err != nil { return nil, err } //转存文库 err = rpc.PayDoc(userId, docId) if err != nil { return nil, err } //手机号采集 go func() { if phone != "" { public.MQFW.Save("user_msg", map[string]interface{}{ "s_userId": userId, "s_phone": phone, "i_phoneCheck": -1, //未验证 "i_time": time.Now().Unix(), "s_source": "jydoc", }) } }() return map[string]interface{}{ "code": docId, "balance": userPoint - docPoint, "payTime": time.Now().Unix(), "payWay": "剑鱼币", }, nil }() if errMsg != nil { log.Printf("%s UserDoc docBuy err:%s\n", userId, errMsg.Error()) } userDoc.ServeJson(NewResult(rData, errMsg)) }