characters_repository.dart 5.6 KB

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