characters_repository.dart 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. import 'package:injectable/injectable.dart';
  2. import 'package:get/get.dart';
  3. import 'package:keyboard/data/api/request/character_custom_update_request.dart';
  4. import 'package:keyboard/data/api/response/character_add_response.dart';
  5. import 'package:keyboard/data/api/response/character_custom_page_response.dart';
  6. import 'package:keyboard/data/api/response/character_custom_update_response.dart';
  7. import 'package:keyboard/data/api/response/character_unlock_response.dart';
  8. import 'package:keyboard/data/api/response/new_user_get_character_response.dart';
  9. import 'package:keyboard/data/repository/keyboard_repository.dart';
  10. import '../../base/app_base_request.dart';
  11. import '../../di/get_it.dart';
  12. import '../../utils/atmob_log.dart';
  13. import '../../utils/http_handler.dart';
  14. import '../api/atmob_api.dart';
  15. import '../api/request/character_add_request.dart';
  16. import '../api/request/character_custom_add_request.dart';
  17. import '../api/request/character_custom_delete_request.dart';
  18. import '../api/request/character_custom_generate_request.dart';
  19. import '../api/request/character_custom_page_request.dart';
  20. import '../api/request/character_page_request.dart';
  21. import '../api/request/character_unlock_request.dart';
  22. import '../api/response/character_custom_generate_response.dart';
  23. import '../api/response/character_group_response.dart';
  24. import '../api/response/character_page_response.dart';
  25. import '../bean/character_group_info.dart';
  26. @lazySingleton
  27. class CharactersRepository {
  28. final AtmobApi atmobApi;
  29. final String tag = "CharactersRepository";
  30. // 人设主题
  31. final RxList<CharacterGroupInfo> _characterGroupList =
  32. RxList<CharacterGroupInfo>();
  33. RxList<CharacterGroupInfo> get characterGroupList => _characterGroupList;
  34. CharactersRepository(this.atmobApi) {
  35. AtmobLog.d(tag, '$tag....init');
  36. getCharactersGroup();
  37. }
  38. // 获取主题
  39. Future<CharacterGroupResponse> getCharactersGroup() async {
  40. return atmobApi
  41. .getCharactersGroup(AppBaseRequest())
  42. .then(HttpHandler.handle(true))
  43. .then((response) {
  44. _characterGroupList.value = response.characterGroups;
  45. return response;
  46. });
  47. }
  48. // 获取人设列表
  49. Future<CharacterPageResponse> getCharactersPage({
  50. required String groupId,
  51. required String keyboardId,
  52. int page = 1,
  53. int pageSize = 10,
  54. }) {
  55. return atmobApi
  56. .getCharactersPage(
  57. CharacterPageRequest(
  58. keyboardId: keyboardId,
  59. groupId: groupId,
  60. page: page,
  61. pageSize: pageSize,
  62. ),
  63. )
  64. .then(HttpHandler.handle(true));
  65. }
  66. // 添加人设
  67. Future<CharacterAddResponse> characterAdd({
  68. required String characterId,
  69. required String keyboardId,
  70. }) {
  71. return atmobApi
  72. .addCharacter(
  73. CharacterAddRequest(characterId: characterId, keyboardId: keyboardId),
  74. )
  75. .then(HttpHandler.handle(false));
  76. }
  77. // 解锁人设
  78. Future<CharacterUnlockResponse> characterUnlock({
  79. required String characterId,
  80. required String keyboardId,
  81. }) {
  82. return atmobApi
  83. .unlockCharacter(
  84. CharacterUnlockRequest(
  85. characterId: characterId,
  86. keyboardId: keyboardId,
  87. ),
  88. )
  89. .then(HttpHandler.handle(true));
  90. }
  91. ///生成自定义人设
  92. Future<CharacterCustomGenerateResponse> generateCharacterCustom({
  93. String? name,
  94. String? birthday,
  95. String? imageUrl,
  96. int? gender,
  97. List<String>? hobbies,
  98. List<String>? characters,
  99. }) {
  100. return atmobApi
  101. .generateCharacterCustom(
  102. CharacterCustomGenerateRequest(
  103. name: name,
  104. birthday: birthday,
  105. imageUrl: imageUrl,
  106. gender: gender,
  107. hobbies: hobbies,
  108. characters: characters,
  109. ),
  110. )
  111. .then(HttpHandler.handle(true));
  112. }
  113. // 更新定制人设信息
  114. Future<CharacterCustomUpdateResponse> characterCustomUpdate({
  115. required String id,
  116. String? name,
  117. String? birthday,
  118. String? imgUrl,
  119. int? gender,
  120. List<String>? hobbies,
  121. List<String>? characters,
  122. }) {
  123. return atmobApi
  124. .updateCustomCharacter(
  125. CharacterCustomUpdateRequest(
  126. id: id,
  127. name: name,
  128. birthday: birthday,
  129. imageUrl: imgUrl,
  130. gender: gender,
  131. hobbies: hobbies,
  132. characters: characters,
  133. ),
  134. )
  135. .then(HttpHandler.handle(true));
  136. }
  137. // 添加定制人设到键盘
  138. Future<CharacterCustomUpdateResponse> addCustomCharacter({
  139. required String characterId,
  140. required String keyboardId,
  141. }) {
  142. return atmobApi
  143. .addCustomCharacter(
  144. CharacterCustomAddRequest(
  145. characterId: characterId,
  146. keyboardId: keyboardId,
  147. ),
  148. )
  149. .then(HttpHandler.handle(true));
  150. }
  151. // 分页查询定制人设列表
  152. Future<CharacterCustomPageResponse> getCustomCharactersPage({
  153. String? keyboardId,
  154. int page = 1,
  155. int pageSize = 10,
  156. }) {
  157. return atmobApi
  158. .getCustomCharactersPage(
  159. CharacterCustomPageRequest(
  160. keyboardId: keyboardId,
  161. page: page,
  162. pageSize: pageSize,
  163. ),
  164. )
  165. .then(HttpHandler.handle(true));
  166. }
  167. // 删除定制人设
  168. Future<void> deleteCustomCharacter({required String characterId}) {
  169. return atmobApi
  170. .deleteCustomCharacter(
  171. CharacterCustomDeleteRequest(characterId: characterId),
  172. )
  173. .then(HttpHandler.handle(true));
  174. }
  175. // 获取新人人设列表
  176. Future<NewUserGetCharacterResponse> getNewUserCharactersList() {
  177. return atmobApi
  178. .getNewUserCharactersList(AppBaseRequest())
  179. .then(HttpHandler.handle(true));
  180. }
  181. static CharactersRepository getInstance() =>
  182. getIt.get<CharactersRepository>();
  183. }
  184. class CharacterException implements Exception {
  185. final String msg;
  186. final int? code;
  187. CharacterException(this.msg, {this.code});
  188. @override
  189. String toString() => msg;
  190. }