123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- namespace app\api\controller;
- use app\admin\model\MessageCategory;
- use app\admin\model\Message as MessageModel;
- use app\common\controller\Api;
- /**
- * 消息
- * @ApiWeigh (5)
- * @package app\api\controller
- */
- class Message extends Api
- {
- protected $noNeedLogin = [];
- protected $noNeedRight = ['*'];
- /**
- * 消息分类
- * @ApiMethod (Get)
- * @ApiParams (name=group,description="展示端:1用户端,2塘主端")
- * @ApiReturnParams (name="category_id", type="int", required=true, description="消息分类id")
- * @ApiReturnParams (name="name", type="string", required=true, description="消息分类名称")
- * @ApiReturnParams (name="image", type="string", required=true, description="消息分类图片,暂无内容,看移动端是否需要")
- * @ApiReturnParams (name="message", type="string", required=true, description="消息内容")
- * @ApiReturnParams (name="create_time", type="int", required=true, description="消息时间")
- * @ApiReturn ({"code":1,"msg":"ok","time":"1672132378","data":[{"category_id":1,"name":"订单消息","image":"","message":"","create_time":0,"no_read_total":0},{"category_id":2,"name":"订阅通知","image":"","message":"","create_time":0,"no_read_total":0},{"category_id":3,"name":"午餐通知","image":"","message":"订单。。。","create_time":1672126035,"no_read_total":1},{"category_id":4,"name":"申请消息","image":"","message":"恭喜您申请成功","create_time":1672126030,"no_read_total":0}]})
- */
- public function message_category()
- {
- $group = input('group', 1);
- $category_model = new MessageCategory();
- $list = $category_model->where('type', 'message')
- ->where('group', $group)
- ->order(['weigh' => 'desc', 'id' => 'asc'])->select();
- $data = [];
- if (count($list) == 0) {
- $this->success('ok', $data);
- }
- $message_model = new MessageModel();
- // 未读消息数
- $message_cat = $message_model->field('category_id,count(*) as category_total')
- ->where('user_id', $this->auth->id)
- ->where('is_read', 0)
- ->group('category_id')->select();
- $message_no_read = [];
- foreach ($message_cat as $c) {
- $message_no_read[$c->category_id] = $c->category_total;
- }
- foreach ($list as $k => $v) {
- // $message_model = new MessageModel();
- $message = $message_model->where(['category_id' => $v->id, 'user_id' => $this->auth->id])->order('id', 'desc')->find();
- // 未读数
- $no_read_total = 0;
- if (array_key_exists($v->id, $message_no_read)) {
- $no_read_total = $message_no_read[$v->id];
- }
- $data[$k] = [
- 'category_id' => $v->id,
- 'name' => $v->name,
- 'image' => $v->image,
- 'message' => $message ? $message->description : '',
- 'create_time' => $message ? $message->createtime : 0,
- 'no_read_total' => $no_read_total,
- ];
- }
- $this->success('ok', $data);
- }
- /**
- * 消息列表
- * @ApiMethod (Get)
- * @ApiParams (name=category_id,type="int", required=true, description="消息分类id")
- * @ApiParams (name=limit,type="int", required=false, description="每页数量")
- * @ApiParams (name=page,type="int", required=false, description="页数")
- * @ApiReturnParams (name="id", type="int", required=true, description="消息id")
- * @ApiReturnParams (name="title", type="string", required=true, description="消息标题")
- * @ApiReturnParams (name="name", type="string", required=true, description="名称")
- * @ApiReturnParams (name="image", type="string", required=true, description="消息图片")
- * @ApiReturnParams (name="description", type="string", required=true, description="消息内容")
- * @ApiReturnParams (name="is_read", type="int", required=true, description="是否已读:0=未读,1=已读")
- * @ApiReturnParams (name="create_time", type="int", required=true, description="消息时间")
- * @ApiReturnParams (name="m_name", type="string", required=true, description="鱼塘信息")
- * @ApiReturnParams (name="order_status", type="string", required=true, description="订单状态")
- * @ApiReturn ({"code":1,"msg":"ok","time":"1672129197","data":{"total":2,"data":[{"id":3,"title":"订单","image":null,"description":"订单。。。","is_read": 1,"create_time":1672126035,"m_id":1,"m_name":"todo","order_status":"todo"},{"id":2,"title":"订单2","name":"订单2","image":null,"description":"订单2,,,","is_read": 0,"create_time":null,"m_id":1,"m_name":"todo","order_status":"todo"}]}})
- */
- public function message_list()
- {
- $category_id = input('category_id');
- if (!$category_id) {
- $this->error('参数错误');
- }
- $page = input('page', 1);
- $message_model = new MessageModel();
- $query = $message_model->where(['category_id' => $category_id, 'user_id' => $this->auth->id])->order('id', 'desc');
- $list = $query->paginate(input('limit', 10), false, ['page' => $page]);
- $data = [];
- foreach ($list as $k => $v) {
- $data[$k] = [
- 'id' => $v->id,
- 'title' => $v->title,
- 'name' => $v->name,
- 'image' => $v->image,
- 'description' => $v->description,
- 'create_time' => $v->createtime,
- 'is_read' => $v->is_read,
- 'm_id' => $v->m_id,
- 'order_status' => '',
- ];
- //todo
- if ($v->m_id != 0) {
- $data[$k]['m_name'] = 'todo';
- }
- //todo
- if ($v->order_id != 0) {
- $data[$k]['order_status'] = 'todo';
- }
- }
- $this->success('ok', ['total' => $list->total(), 'data' => $data]);
- }
- /**
- * 消息详情
- * @ApiMethod (Get)
- * @ApiParams (name=id,description="消息id")
- * @ApiReturnParams (name="id", type="int", required=true, description="消息id")
- * @ApiReturnParams (name="title", type="string", required=true, description="消息标题")
- * @ApiReturnParams (name="name", type="string", required=true, description="名称")
- * @ApiReturnParams (name="image", type="string", required=true, description="消息图片")
- * @ApiReturnParams (name="description", type="string", required=true, description="消息内容")
- * @ApiReturnParams (name="is_read", type="int", required=true, description="是否已读:0=未读,1=已读")
- * @ApiReturnParams (name="create_time", type="int", required=true, description="消息时间")
- * @ApiReturnParams (name="m_name", type="string", required=true, description="鱼塘信息")
- * @ApiReturnParams (name="order_status", type="string", required=true, description="订单状态")
- * @ApiReturn ({"code":1,"msg":"ok","time":"1672132245","data":{"id":1,"m_id":0,"user_id":3,"category_id":4,"order_id":0,"title":"申请成功","name":"申请成功","image":null,"description":"恭喜您申请成功","is_read":0,"createtime":1672126030,"updatetime":1672130869,"deletetime":null,"createtime_text":"2022-12-27 15:27:10"}})
- */
- public function message_info()
- {
- $id = input('id');
- if (!$id) {
- $this->error('参数错误');
- }
- $message_model = new MessageModel();
- $info = $message_model->where(['id' => $id, 'user_id' => $this->auth->id])->find();
- if (!$info) {
- $this->error('参数错误');
- }
- //todo
- if ($info->m_id != 0) {
- $info['m_name'] = 'todo';
- }
- //todo
- if ($info->order_id != 0) {
- $info['order_status'] = 'todo';
- }
- // 设置为已读
- if ($info->is_read == 0) {
- $message_model->save(['is_read' => 1], ['id' => $info->id]);
- }
- $this->success('ok', $info);
- }
- /**
- * 消息总数
- * @ApiMethod (Get)
- * @ApiReturnParams (name="total", type="string", required=true, description="总数")
- * @ApiReturn ({"code":1,"msg":"ok","time":"1676008646","data":{"total":3}})
- */
- public function message_cnt()
- {
- $message_model = new MessageModel();
- $count = $message_model->where(['is_read' => 0, 'user_id' => $this->auth->id])->count();
- $this->success('ok', ['total' => $count]);
- }
- }
|