gitextract_mkmm_a5b/ ├── .github/ │ └── workflows/ │ └── reademe-contributors.yml ├── .gitignore ├── LICENSE ├── README.md ├── cmd/ │ └── gen/ │ └── generate.go ├── conf/ │ └── config_example.yml ├── controller/ │ ├── captcha_controller.go │ ├── chat_controller.go │ ├── contact_controller.go │ ├── friend_controller.go │ └── user_controller.go ├── dal/ │ ├── db.go │ ├── model/ │ │ ├── contact.gen.go │ │ ├── group_member.gen.go │ │ ├── message.gen.go │ │ ├── room.gen.go │ │ ├── room_friend.gen.go │ │ ├── room_group.gen.go │ │ ├── user.gen.go │ │ ├── user_apply.gen.go │ │ └── user_friend.gen.go │ └── query/ │ ├── contact.gen.go │ ├── gen.go │ ├── group_member.gen.go │ ├── message.gen.go │ ├── room.gen.go │ ├── room_friend.gen.go │ ├── room_group.gen.go │ ├── user.gen.go │ ├── user_apply.gen.go │ └── user_friend.gen.go ├── docs/ │ ├── docs.go │ └── swagger.json ├── domain/ │ ├── dto/ │ │ ├── contact_dto.go │ │ ├── delete_friend_dto.go │ │ ├── group_dto.go │ │ └── msg_dto.go │ ├── enum/ │ │ ├── event_bus.go │ │ ├── login.go │ │ ├── message.go │ │ ├── redis.go │ │ ├── redsync.go │ │ ├── rocketmq.go │ │ ├── room.go │ │ └── user.go │ ├── model/ │ │ └── message.go │ └── vo/ │ ├── req/ │ │ ├── agree_friend_req.go │ │ ├── captcha_req.go │ │ ├── create_group_req.go │ │ ├── delete_friend_req.go │ │ ├── delete_group_req.go │ │ ├── get_group_member_list_req.go │ │ ├── get_message_list_req.go │ │ ├── get_new_content_list_req.go │ │ ├── get_new_msg_list_req.go │ │ ├── get_user_info_batch_req.go │ │ ├── get_user_info_by_name_req.go │ │ ├── grant_administrator_req.go │ │ ├── is_friend_req.go │ │ ├── join_group_req.go │ │ ├── message_req.go │ │ ├── quit_group_req.go │ │ ├── remove_administrator_req.go │ │ ├── uid_req.go │ │ ├── user_apply_req.go │ │ ├── user_cancle_req.go │ │ ├── user_login_req.go │ │ └── user_register_req.go │ └── resp/ │ ├── get_user_info_batch_resp.go │ ├── get_user_info_by_name_resp.go │ ├── message_resp.go │ ├── page_list_resp.go │ ├── pre_signed_resp.go │ ├── user_apply_resp.go │ ├── user_contact_resp.go │ └── user_login_resp.go ├── event/ │ └── listener/ │ ├── friend_apply_event.go │ ├── friend_delete_event.go │ ├── friend_new_event.go │ ├── new_msg_event.go │ └── user_login_event.go ├── global/ │ ├── init_db.go │ ├── init_distribute_lock.go │ ├── init_evenbus.go │ ├── init_log.go │ ├── init_minio.go │ ├── init_redis.go │ ├── init_rocketmq.go │ └── init_time.go ├── go.mod ├── go.sum ├── logic/ │ ├── captcha.go │ ├── login.go │ ├── register.go │ ├── user.go │ └── user_cancle.go ├── main.go ├── pkg/ │ ├── domain/ │ │ ├── enum/ │ │ │ ├── code.go │ │ │ ├── common_enum.go │ │ │ └── msg.go │ │ └── vo/ │ │ ├── req/ │ │ │ └── page_req.go │ │ └── resp/ │ │ ├── page_resp.go │ │ └── response.go │ └── utils/ │ ├── cursor_utils.go │ ├── redis.go │ ├── redis_lock.go │ └── sort.go ├── routes/ │ └── init_router.go ├── service/ │ ├── adapter/ │ │ ├── build_contact_dao_list.go │ │ ├── build_message_resp.go │ │ └── build_user_info_by_name_resp.go │ ├── captcha_service.go │ ├── contact_service.go │ ├── friend_service.go │ ├── group_service.go │ ├── message_service.go │ ├── upload_service.go │ ├── user_service.go │ ├── user_service_integration_test.go │ └── user_service_test.go ├── sql/ │ └── sql.sql ├── tests/ │ ├── README.md │ ├── e2e/ │ │ └── user_workflow_e2e_test.go │ ├── init_test.go │ ├── integration/ │ │ └── user_integration_test.go │ ├── performance/ │ │ └── user_performance_test.go │ ├── scripts/ │ │ ├── run_e2e_test.sh │ │ ├── run_tests.bat │ │ ├── run_tests.sh │ │ └── setup_test_env.sh │ └── unit/ │ └── user_service_test.go ├── utils/ │ ├── jsonUtils/ │ │ └── json.go │ ├── jwt/ │ │ ├── jwt.go │ │ └── jwt_test.go │ ├── middleware/ │ │ ├── cors.go │ │ ├── jwt.go │ │ └── log.go │ ├── mysqlUtils.go │ ├── passwordUtils.go │ ├── redisCache/ │ │ └── remove_cache.go │ ├── redisUtils.go │ ├── setting/ │ │ └── setting.go │ └── time_utils.go └── websocket/ ├── domain/ │ ├── enum/ │ │ └── ws_type.go │ └── vo/ │ └── resp/ │ └── new_message_resp.go ├── global/ │ └── global.go └── service/ └── websocket_service.go