game_task.ts 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. import { Get, Inject, Provide, Query, ALL } from '@midwayjs/decorator';
  2. import { ILogger } from '@midwayjs/logger';
  3. import { CoolController, BaseController } from 'midwayjs-cool-core';
  4. import { HideGameTaskEntity } from '../../entity/hide_game_task';
  5. import { HideGameTaskService } from '../../service/hide_game_task';
  6. import * as _ from 'lodash';
  7. import { Utils } from '../../../../comm/utils';
  8. import { HideGameAccountService } from '../../service/hide_game_account';
  9. import { HideTaskAccountRecordEntity } from '../../entity/hide_task_account_record';
  10. import { InjectEntityModel } from '@midwayjs/orm';
  11. import { Repository } from 'typeorm';
  12. import { HideGameAccountRecordEntity } from '../../entity/hide_game_account_record';
  13. import { HideTaskAccountRecordService } from '../../service/hide_task_account_record';
  14. import { HideGameTargetService } from '../../service/hide_game_target';
  15. /**
  16. * 任务接口
  17. */
  18. @Provide()
  19. @CoolController({
  20. // 添加通用CRUD接口
  21. api: ['add', 'update', 'info'],
  22. // 设置表实体
  23. entity: HideGameTaskEntity,
  24. service: HideGameTaskService,
  25. })
  26. export class HideAppGameTaskController extends BaseController {
  27. @Inject()
  28. logger: ILogger;
  29. @Inject()
  30. HideGameTaskService: HideGameTaskService;
  31. @Inject()
  32. HideGameTargetService: HideGameTargetService;
  33. @Inject()
  34. HideTaskAccountRecordService: HideTaskAccountRecordService;
  35. @Inject()
  36. utils: Utils;
  37. @Inject()
  38. HideGameAccountService: HideGameAccountService;
  39. @InjectEntityModel(HideTaskAccountRecordEntity)
  40. HideTaskAccountRecordEntity: Repository<HideTaskAccountRecordEntity>;
  41. @InjectEntityModel(HideGameAccountRecordEntity)
  42. HideGameAccountRecordEntity: Repository<HideGameAccountRecordEntity>;
  43. /**
  44. * http://127.0.0.1:8001/app/hide/game_task/getTaskTAndC?task_id=1001&new_date=2022-04-24
  45. * //获取游戏目标与完成{task_id,new_date}
  46. * @param {*} queryObject
  47. * @memberof HideAppGameTaskController
  48. */
  49. //
  50. @Get('/getTaskTAndC')
  51. async getTaskTAndC(@Query(ALL) queryObject) {
  52. let { task_id, new_date } = queryObject
  53. if (!new_date) {
  54. new_date = this.utils.formatDate(new Date(new_date))
  55. }
  56. let queryObj
  57. if (task_id && task_id != '') {
  58. const taskInfo = await this.HideGameTaskService.info(task_id);
  59. if (!taskInfo) {
  60. return this.fail('task_id不存在', -1)
  61. }
  62. if (taskInfo.is_run == 0) {
  63. return this.fail('该任务未运行', -1)
  64. }
  65. queryObj = {
  66. task_id: task_id,
  67. new_date: new_date
  68. }
  69. } else {
  70. queryObj = {
  71. new_date: new_date
  72. }
  73. }
  74. const list = await this.HideGameTargetService.getTaskTAndC(queryObj);
  75. // this.logger.info(list)
  76. if (list.length > 0) {
  77. let resT = []
  78. list.forEach(e => {
  79. //
  80. let obj = {
  81. task_id: e.task_id,
  82. task_name: e.task_name,
  83. game_director: e.directorName,
  84. login_mode: e.login_mode,
  85. game_agent: e.game_agent,
  86. target_new: parseInt(e.target_new),
  87. target_pay: parseInt(e.target_pay),
  88. target_active: parseInt(e.target_active),
  89. complete_new: parseInt(e.complete_new),
  90. complete_pay: parseInt(e.complete_pay),
  91. complete_active: parseInt(e.complete_active),
  92. is_complete: e.is_complete, //是否完成
  93. amount: e.amount, //付费流水
  94. incomplete_new: parseInt(e.incomplete_new),
  95. incomplete_pay: parseInt(e.incomplete_pay),
  96. incomplete_active: parseInt(e.incomplete_active)
  97. }
  98. resT.push(obj)
  99. });
  100. return { code: 1000, message: '获取游戏数据成功', date: new_date, data: resT };
  101. } else {
  102. return this.fail('任务' + task_id + '获取失败', -1);
  103. }
  104. }
  105. /**
  106. * http://127.0.0.1:8001/app/shuyou/game_task/get_account?task_id=3520&status=0
  107. * 拉取任务账号-新增账号{status 0.正常 1.冻结 2.密错 5.人脸验证 6.信用分不足}
  108. * @param {*} queryObject
  109. * @return {*}
  110. * @memberof HideAppGameTaskController
  111. */
  112. @Get('/get_account')
  113. async getAccount(@Query(ALL) queryObject) {
  114. let { task_id, status } = queryObject
  115. if (!task_id) {
  116. return this.fail('缺少必要参数[task_id=任务id]', -1)
  117. }
  118. const taskInfo = await this.HideGameTaskService.info(task_id);
  119. if (!taskInfo) {
  120. return this.fail('task_id不存在', -1)
  121. }
  122. let account_state = 0
  123. if (!status) {
  124. account_state = 0;
  125. } else {
  126. account_state = status;
  127. }
  128. const account_typeId = taskInfo.account_typeId
  129. const gameIdList = taskInfo.gameIdList
  130. const list = await this.HideGameTaskService.getAccountOne(task_id, account_typeId, account_state);
  131. // this.logger.info(list)
  132. if (list.length > 0) {
  133. const account_id = list[0].id
  134. await this.HideGameAccountService.updateOccupy(account_id, task_id);
  135. const inserTaskAccountRecord = await this.HideTaskAccountRecordEntity.createQueryBuilder()
  136. .insert()
  137. .into(HideTaskAccountRecordEntity)
  138. .values({
  139. task_id: task_id,
  140. account_id: account_id,
  141. new_date: new Date(this.utils.formatDate(new Date())),
  142. getTimeNew: new Date() // 新增取号时间
  143. })
  144. .execute();
  145. if (!inserTaskAccountRecord) {
  146. return this.fail('插入记录表失败', -1)
  147. }
  148. // this.logger.info(inserTaskAccountRecord.identifiers[0].id)
  149. for (const game_id of gameIdList) {
  150. await this.HideGameAccountRecordEntity.save({ account_id: account_id + '', game_id: game_id + '' });
  151. }
  152. let obj = {
  153. record_id: inserTaskAccountRecord.identifiers[0].id,
  154. account_text: list[0].account_text,
  155. password_text: list[0].password_text,
  156. vpn_text: list[0].vpn_text,
  157. manufacturer: list[0].manufacturer,
  158. model: list[0].model,
  159. pnumber: list[0].pnumber,
  160. imei: list[0].imei,
  161. imsi: list[0].imsi,
  162. simserial: list[0].simserial,
  163. androidid: list[0].androidid,
  164. mac: list[0].mac
  165. }
  166. return this.ok(obj);
  167. } else {
  168. return this.fail('任务' + task_id + '无账号可取', -1);
  169. }
  170. }
  171. /**
  172. * 留存获取账号接口
  173. * http://127.0.0.1:8001/app/shuyou/game_task/get_account_retained?task_id=3520&retained_day=2
  174. * @param {*} queryObject{task_id:任务id,retained_day:留存天数}
  175. * @return {*}
  176. * @memberof HideAppGameTaskController
  177. */
  178. @Get('/get_account_retained')
  179. async getAccountRetained(@Query(ALL) queryObject) {
  180. let { task_id, retained_day } = queryObject
  181. if (!task_id || !retained_day) {
  182. return this.fail('缺少必要参数[task_id=任务id&retained_day=几留]', -1)
  183. }
  184. const taskInfo = await this.HideGameTaskService.info(task_id);
  185. if (!taskInfo) {
  186. return this.fail('task_id不存在', -1)
  187. }
  188. let retained_date = this.utils.getNextDate(new Date, 1 - retained_day)
  189. // this.logger.info(retained_date)
  190. const list = await this.HideGameTaskService.getAccountRetainedOne(task_id, retained_date);
  191. // this.logger.info(list)
  192. if (list.length > 0) {
  193. const record_id = list[0].id
  194. const updateTaskAccountRecord = await this.HideTaskAccountRecordEntity
  195. .createQueryBuilder()
  196. .update()
  197. .set({
  198. statusRetained: -1,
  199. getTimeRetained: new Date() // 留存取号时间
  200. })
  201. .where('id = :id', {
  202. id: record_id
  203. })
  204. .execute();
  205. // this.logger.warn(updateTaskAccountRecord.affected)
  206. if (updateTaskAccountRecord.affected < 1) {
  207. return this.fail('修改记录表失败', -1)
  208. }
  209. let obj = {
  210. record_id: record_id,
  211. account_text: list[0].account_text,
  212. password_text: list[0].password_text,
  213. vpn_text: list[0].vpn_text,
  214. manufacturer: list[0].manufacturer,
  215. model: list[0].model,
  216. pnumber: list[0].pnumber,
  217. imei: list[0].imei,
  218. imsi: list[0].imsi,
  219. simserial: list[0].simserial,
  220. androidid: list[0].androidid,
  221. mac: list[0].mac
  222. }
  223. return this.ok(obj);
  224. } else {
  225. return this.fail('任务' + task_id + ' ' + retained_day + '留已无可取账号', -1);
  226. }
  227. }
  228. /**
  229. * 更新账号状态
  230. * http://127.0.0.1:8001/app/shuyou/game_task/updateAccount?record_id=10&status=0
  231. * status 0.新增留存成功 1.冻结 2.密错 3.禁用 4.新增出现留存 5.人脸验证 6.信用分不足
  232. * @param {*} queryObject
  233. * @return {*}
  234. * @memberof HideAppGameTaskController
  235. */
  236. @Get('/updateAccount')
  237. async updateAccount(@Query(ALL) queryObject) {
  238. const { record_id, status } = queryObject
  239. // status 0.新增留存成功 1.冻结 2.密错 3.禁用 4.新增出现留存 5.人脸验证
  240. const TaskAccountRecord = await this.HideTaskAccountRecordService.updateAccount(record_id, status);
  241. if (TaskAccountRecord.code == 1) {
  242. await this.HideGameAccountService.updateAccountState(TaskAccountRecord.account_id, status);
  243. return this.ok('修改成功');
  244. } else if (TaskAccountRecord.code == 2) {
  245. return this.fail(TaskAccountRecord.message, 2);
  246. } else {
  247. return this.fail('修改失败', -1);
  248. }
  249. }
  250. }