| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | <?phpnamespace App\Http\Controllers\Xchengxu\User;use Illuminate\Http\Request;use App\Http\Controllers\Xchengxu\BaseController;use App\Modules\Book\Services\BookConfigService;use App\Modules\Book\Services\UserShelfBooksService;use App\Http\Controllers\Xchengxu\User\Transformers\ReadRecordTransformer;use App\Modules\User\Services\ReadRecordService;use Hashids;use Redis;use Log;class ReadRecordController extends BaseController{    /**     * @apiDefine ReadRecord 阅读记录     */    /**     * @apiVersion 1.0.0     * @apiDescription 获取阅读记录     * @api {get} readrecord 获取阅读记录     * @apiParam {String}  [token]  token     * @apiHeader {String} [Authorization]  token 两个token任选其一     * @apiGroup ReadRecord     * @apiName index     * @apiSuccess {int}         code 状态码     * @apiSuccess {String}      msg  信息     * @apiSuccess {object}      data 结果集     * @apiSuccess {Int}         data.book_name    书名     * @apiSuccess {String}      data.chapter_name  章节名     * @apiSuccess {Int}         data.bid   bid     * @apiSuccess {Int}         data.time   时间     * @apiSuccess {Int}         data.cid    章节id     * @apiSuccess {Int}         data.chapter_name    章节名     * @apiSuccess {Int}         data.cover    封面     * @apiSuccess {Int}         data.last_chapter    最后一张     * @apiSuccessExample {json} Success-Response:     *     HTTP/1.1 200 OK     *     {     *       code: 0,     *       msg: "",     *       data:[     *           {     *               book_name: "我来好好爱你",     *               bid: 2,     *               cid: 10402,     *               time: 1511783120,     *               chapter_name: "你言重了"     *           },     *           {     *               book_name: "京华烟云",     *               bid: 1,     *               cid: 4,     *               time: 1511783068,     *               chapter_name: "背水一战"     *           }     *           ]     */    public function index(Request $request){        if(!$this->checkUid()){            return response()->error('XCX_NOT_LOGIN');        }        $res = ReadRecordService::getReadRecord($this->uid);        if($res){            $id_arr = [];            foreach ($res as $key => $value) {                $id_arr[] = $value['bid'];            }            $book = BookConfigService::getBooksByIds($id_arr);            foreach ($res as $key => &$value) {                foreach ($book as  $val) {                    if($value['bid'] == $val->bid){                        $value['cover'] = $val->cover;                        $value['last_chapter'] = $val->last_chapter;                        break;                    }                }            }            $shelf = UserShelfBooksService::getUserShelfBooksListByUid($this->uid);            foreach ($res as &$v){                $v['is_on_user_shelf'] = 0;                foreach ($shelf as $val){                    if($v['bid'] == $val->bid){                        $v['is_on_user_shelf'] = 1;                        break;                    }                }            }        }        usort($res,function($a,$b){            if($a['time'] >= $b['time']) return -1;            return 1;        });        $res = json_encode($res);        $res = json_decode($res);        return response()->collection(new ReadRecordTransformer(),$res);    }    /**     * @apiVersion 1.0.0     * @apiDescription 添加阅读记录     * @api {post} readrecord 添加阅读记录     * @apiGroup ReadRecord     * @apiName addReadRecord     * @apiParam {String}  [token]  token     * @apiHeader {String} [Authorization]  token 两个token任选其一     * @apiParam   {Int}         book_name    书名     * @apiParam   {String}      chapter_name  章节名     * @apiParam   {Int}         bid     bid     * @apiParam   {Int}         cid    章节id     * @apiSuccess {int}         code 状态码     * @apiSuccess {String}      msg  信息     * @apiSuccess {object}      data 结果集     * @apiSuccessExample {json} Success-Response:     *     HTTP/1.1 200 OK     *     {     *       code: 0,     *       msg: "",     *       data:{}     *     */    public function addReadRecord(Request $request){        if(!$this->checkUid()){            return response()->error('XCX_NOT_LOGIN');        }        $param = $request->except('_url');        if(checkParam($param,['bid','cid','chapter_name'])){            return response()->error('LACK_PARAM');        }        //Redis::hset('book_read:' . $uid, $bid, "{$cid}_{$book_name}_{$chapter_name}_" . time());        $param['uid'] = $this->uid;        $param['bid'] = Hashids::decode($param['bid'])[0];        $record_info = Redis::hget('book_read:'.$this->uid,$param['bid']);        $param['book_name'] = 'unknown';        if($record_info){            $param['book_name'] = explode('_',$record_info)[1];        }        ReadRecordService::addReadRecord($param);        return response()->success();    }    /**     * @apiVersion 1.0.0     * @apiDescription 删除阅读记录     * @api {get} readrecord/delete 删除阅读记录     * @apiGroup ReadRecord     * @apiParam {String}  [token]  token     * @apiHeader {String} [Authorization]  token 两个token任选其一     * @apiName delReadRecord     * @apiParam   {Int}         bid     bid     * @apiSuccess {int}         code 状态码     * @apiSuccess {String}      msg  信息     * @apiSuccess {object}      data 结果集     * @apiSuccessExample {json} Success-Response:     *     HTTP/1.1 200 OK     *     {     *       code: 0,     *       msg: "",     *       data:{}     *     */    public function delReadRecord(Request $request){        if(!$this->checkUid()){            return response()->error('XCX_NOT_LOGIN');        }        $param = $request->except('_url');        if(checkParam($param,['bid'])){            return response()->error('LACK_PARAM');        }        $param['bid'] = Hashids::decode($param['bid'])[0];        ReadRecordService::delReadRecord($this->uid,$param['bid']);        return response()->success();    }}
 |