本文共 21685 字,大约阅读时间需要 72 分钟。
根据后端下达的数据指令,给手机下达抖音任务,比方下滑操作,点赞或者关注操作。这是后端开发的项目,提供了API接口,可接入自动化操作,或者模拟手机。
//登陆 @PostMapping("/login") @ResponseBody public R login(String username,String password){ String encode64 = CryptoUtil.encode64("100", password); try { SecurityUtils.getSubject().login(new UsernamePasswordToken(username,encode64)); //设置过期时间 SecurityUtils.getSubject().getSession().setTimeout(-1000l); } catch (AuthenticationException e) { logger.info("登陆失败"); return R.error(); } return R.ok(); }
//公告列表 @GetMapping("/getList") @ResponseBody public LayuiTable getList(int page,int limit){ PagedyNoticePage=new Page<>(page,limit); QueryWrapper qw=new QueryWrapper<>(); qw.orderByDesc("gmt_create"); IPage dyNoticeIPage = dyNoticeMapper.selectPage(dyNoticePage, qw); return new LayuiTable(0,"",dyNoticeIPage.getTotal(),dyNoticeIPage.getRecords()); } @GetMapping("/getOne") @ResponseBody public DyNotice getOne(){ QueryWrapper qw=new QueryWrapper<>(); qw.orderByDesc("gmt_create"); List dyNotices = dyNoticeMapper.selectList(qw); return dyNotices.get(0); }
//邀请码列表 @GetMapping("/getList") public LayuiTable getList(int page,int limit){ PagecodePage=new Page<>(page,limit); QueryWrapper qw=new QueryWrapper<>(); qw.orderByDesc("create_time"); IPage iPage = invitationCodeService.page(codePage, qw); return new LayuiTable(0,"",iPage.getTotal(),iPage.getRecords()); } //添加邀请码 @PostMapping("/addData") public R addData(String codeId,String codeSign){ QueryWrapper qw=new QueryWrapper<>(); qw.eq("code_id",codeId); int count = invitationCodeService.count(qw); if (count>0){ return R.error(); } InvitationCode invitationCode=new InvitationCode(); invitationCode.setCodeId(codeId).setCodeSign(codeSign).setCodeStatus(false).setCreateTime(new Date()); boolean save = invitationCodeService.save(invitationCode); if (save){ return R.ok(); }else{ return R.error(); } }
//手机列表 @GetMapping("/getList") @ResponseBody public LayuiTable getList(int page, int limit) { UserManger userManger = (UserManger) SecurityUtils.getSubject().getPrincipal(); PagephoneMangerPage = new Page<>(page, limit); QueryWrapper qw = new QueryWrapper<>(); qw.eq("is_deleted", 0); if (!userManger.getUserName().equals("admin")) { qw.eq("user_id", userManger.getUserId()); } qw.orderByDesc("gmt_create"); IPage iPage = phoneMangerService.page(phoneMangerPage, qw); return new LayuiTable(0, "", iPage.getTotal(), iPage.getRecords()); } //手机列表 @GetMapping("/getList2") @ResponseBody public LayuiTable getList2(int page, int limit) { Page phoneMangerPage = new Page<>(page, limit); QueryWrapper qw = new QueryWrapper<>(); qw.eq("is_deleted", 0); qw.orderByDesc("gmt_create"); IPage iPage = phoneMangerService.page(phoneMangerPage, qw); return new LayuiTable(0, "", iPage.getTotal(), iPage.getRecords()); } //上传导入设备号 //上传文本文件/* @PostMapping("/uploadTxtA") public R uploadTxtA(HttpServletRequest request){ String strPath = "/uploadFile/txt/"; return FileUploadUtil.getUploadFile(request, strPath); }*/ //搜索 @GetMapping("/searchData") @ResponseBody public LayuiTable searchData(int page, int limit, String phoneStatus, String phoneLocks, String phone) { Page phoneMangerPage = new Page<>(page, limit); QueryWrapper qw = new QueryWrapper<>(); qw.eq("is_deleted", 0); if (!phoneStatus.equals("")) { qw.eq("phone_status", phoneStatus); } if (!phoneLocks.equals("")) { qw.eq("phone_lock", phoneLocks); } if (!phone.equals("")) { qw.eq("phone", phone); } qw.orderByDesc("gmt_create"); IPage iPage = phoneMangerService.page(phoneMangerPage, qw); return new LayuiTable(0, "", iPage.getTotal(), iPage.getRecords()); } //添加手机号 @PostMapping("/addData") public R addData(PhoneManger phoneManger) { String phone = phoneManger.getPhone(); QueryWrapper qw = new QueryWrapper<>(); qw.eq("phone", phone); int count = phoneMangerService.count(qw); if (count > 0) { return R.error().message("存在相同手机号"); } phoneManger.setGmtCreate(new Date()); boolean save = phoneMangerService.save(phoneManger); if (save) { return R.ok(); } else { return R.error(); } } //上传文件 @PostMapping("/uploadTxt") public R uploadTxt(HttpServletRequest request) { String strPath = "/uploadFile/txt/"; return FileUploadUtil.getUploadFile(request, strPath); } //批量导入手机号 @PostMapping("/uploadData") @Transactional public R uploadData(String filePath) throws IOException { InputStreamReader isr = null; try { isr = new InputStreamReader(new FileInputStream(new File(filePath)), "UTF-8"); BufferedReader br = new BufferedReader(isr); List phoneMangerList = new ArrayList<>(); PhoneManger phoneManger = null; String linetxt; while ((linetxt = br.readLine()) != null) { String strPhone = linetxt.trim(); if (strPhone.length() != 11) { return R.error().message("手机号输入格式不正确"); } QueryWrapper qw = new QueryWrapper<>(); qw.eq("phone", strPhone); int count = phoneMangerService.count(qw); if (count > 0) { return R.error().message("存在相同手机号"); } phoneManger = new PhoneManger().setPhone(strPhone).setGmtCreate(new Date()); phoneMangerList.add(phoneManger); } isr.close(); br.close(); phoneMangerService.saveBatch(phoneMangerList); } catch (UnsupportedEncodingException e) { isr.close(); e.printStackTrace(); } catch (FileNotFoundException e) { isr.close(); e.printStackTrace(); } catch (IOException e) { isr.close(); e.printStackTrace(); } return R.ok(); } //删除数据 @PostMapping("/delData") public R delData(String ids) { String[] arrIds = ids.split(","); List list = Arrays.asList(arrIds); boolean removeByIds = phoneMangerService.removeByIds(list); if (removeByIds) { return R.ok(); } else { return R.error(); } } //解锁 @PostMapping("/unlockData") public R unlockData(String ids) { String[] arrIds = ids.split(","); List list = Arrays.asList(arrIds); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", list); PhoneManger phoneManger = new PhoneManger(); phoneManger.setPhoneLock(0); boolean update = phoneMangerService.update(phoneManger, queryWrapper); return R.ok(); } //锁号 @PostMapping("/lockData") public R lockData(String ids) { if (ids.equals("all")) { PhoneManger phoneManger2 = new PhoneManger(); phoneManger2.setPhoneLock(1); phoneMangerService.update(phoneManger2, null); return R.ok(); } String[] arrIds = ids.split(","); List list = Arrays.asList(arrIds); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", list); PhoneManger phoneManger = new PhoneManger(); phoneManger.setPhoneLock(1); boolean update = phoneMangerService.update(phoneManger, queryWrapper); return R.ok(); } //锁定设备对应下的手机号 @PostMapping("/lockDeviced") @Transactional public R lockDeviced(String phoneMac, Integer lockNum, Integer radioStatus) throws IOException { InputStreamReader isr = null; try { isr = new InputStreamReader(new FileInputStream(new File(phoneMac)), "UTF-8"); BufferedReader br = new BufferedReader(isr); List phoneMangerList = new ArrayList<>(); PhoneManger phoneManger = null; String linetxt; while ((linetxt = br.readLine()) != null) { String strMac = linetxt.trim(); String[] splitMac = strMac.split("----"); if (splitMac[1].equals("有锁") || splitMac[1].equals("无锁")) { return R.error().message(splitMac[0] + "MAC状态无效,请重新填写"); } QueryWrapper qw = new QueryWrapper<>(); //为1人工锁定,不可解锁,除非人工解锁 if (splitMac[1].equals("无锁")) { qw.eq("phone_lock", 0); } //为1,人工锁定,不可解锁 if (splitMac[1].equals("有锁") && radioStatus == 1) { qw.eq("phone_lock", 1); } if (splitMac[1].equals("有锁") && radioStatus == 2) { qw.eq("phone_lock", 2); } PhoneManger phoneManger1 = new PhoneManger().setPhoneMac(splitMac[0]); boolean update = phoneMangerService.update(phoneManger1, qw); QueryWrapper qw2 = new QueryWrapper<>(); qw2.eq("phone_mac", splitMac[0]); qw2.orderByDesc("phone_createdata"); //遍历设备号所对应的手机号,判断锁定类型 List phoneMangerList2 = phoneMangerService.list(qw2); if (phoneMangerList2.size() < lockNum) { return R.error().message("不锁定数目小于当前手机号数"); } for (int i = lockNum; i < phoneMangerList2.size(); i++) { PhoneManger phoneManger2 = new PhoneManger(); phoneManger2.setId(phoneMangerList2.get(i).getId()); phoneManger2.setPhoneLock(radioStatus); phoneMangerService.updateById(phoneManger2); } } isr.close(); br.close(); } catch (IOException e) { isr.close(); e.printStackTrace(); } return R.error(); } //全部导出 phoneManger/allXlsx @GetMapping("/allXlsx") public void allXlsx(HttpServletResponse response) throws IOException { List list = phoneMangerService.list(); /*List rows = CollUtil.newArrayList(list);*/ // 通过工具类创建writer,默认创建xls格式 ExcelWriter writer = ExcelUtil.getWriter(); writer.addHeaderAlias("id","序号"); writer.addHeaderAlias("phone","手机"); writer.addHeaderAlias("userName","所属账户"); writer.addHeaderAlias("phoneMac","Mac"); writer.addHeaderAlias("phoneSn","编号"); writer.addHeaderAlias("phoneBackup","备份名"); writer.addHeaderAlias("gmtRestor","还原时间"); writer.addHeaderAlias("dyName","抖音名"); writer.addHeaderAlias("dyId","抖音ID"); writer.addHeaderAlias("dySign","个性签名"); writer.addHeaderAlias("dySex","性别"); writer.addHeaderAlias("dyAge","年龄"); writer.addHeaderAlias("dyImage","头像"); writer.addHeaderAlias("praiseToday","今日获赞"); writer.addHeaderAlias("praiseYesday","昨日获赞"); writer.addHeaderAlias("fansToday","今日粉丝"); writer.addHeaderAlias("fansYesday","明日粉丝"); writer.addHeaderAlias("worksToday","今日作品"); writer.addHeaderAlias("worksYesday","昨日作品"); writer.addHeaderAlias("dynamicToday","今日动态"); writer.addHeaderAlias("dynamicYesday","昨日动态"); writer.addHeaderAlias("followToday","今日关注"); writer.addHeaderAlias("followYesday","昨日关注"); writer.addHeaderAlias("enjoyToday","今日喜欢"); writer.addHeaderAlias("enjoyYesday","昨日喜欢"); writer.addHeaderAlias("taskCount","总任务量"); writer.addHeaderAlias("taskComple","成功任务量"); writer.addHeaderAlias("taskFail","失败任务量"); writer.addHeaderAlias("phoneLock","手机状态"); writer.addHeaderAlias("gmtCreate","注册时间"); // 一次性写出内容,使用默认样式,强制输出标题 writer.write(list, true); //response为HttpServletResponse对象 response.setContentType("application/vnd.ms-excel;charset=utf-8"); //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码 response.setHeader("Content-Disposition", "attachment;filename=" + DateUtil.now() + ".xls"); //out为OutputStream,需要写出到的目标流 ServletOutputStream out = null; try { out = response.getOutputStream(); writer.flush(out, true); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭writer,释放内存 writer.close(); } //此处记得关闭输出Servlet流 IoUtil.close(out); }
//确认导入任务列表窗口 @PostMapping("/confrimImport") public R confrimImport(String strExport) throws IOException { UserManger userManger= (UserManger) SecurityUtils.getSubject().getPrincipal(); if (userManger==null){ return R.error().message("请重新登陆"); } cn.hutool.core.io.file.FileReader fileReader = new cn.hutool.core.io.file.FileReader(strExport); String result = fileReader.readString(); //任务列表 String[] split = result.split("\r\n"); for (int i = 0; iorderTaskPage = new Page<>(page, limit); QueryWrapper qw = new QueryWrapper<>(); qw.eq("is_deleted", 0); if (!userManger.getUserName().equals("admin")) { qw.eq("user_id", userManger.getUserId()); } qw.orderByDesc("verify_date"); IPage taskIPage = orderTaskService.page(orderTaskPage, qw); return new LayuiTable(0, "", taskIPage.getTotal(), taskIPage.getRecords()); } //任务详细查询列表orderTask/getListSearch @GetMapping("/getListSearch") public List getList() { List taskLists = taskListService.list(); return taskLists; } //添加任务 @PostMapping("/addData") @Transactional public R addData(String taskName, String strLink1, Integer strNum1, String strLink2, Integer strNum2, String strLink3, Integer strNum3, String strLink4, Integer strNum4, String strLink5, Integer strNum5, String strLink6, Integer strNum6, String strLink7, Integer strNum7, String strLink8, Integer strNum8, String strLink9, Integer strNum9, String strLink10, Integer strNum10, String remarks) throws Exception { //判断用户名是否登陆 UserManger userManger = (UserManger) SecurityUtils.getSubject().getPrincipal(); if (userManger == null) { return R.error().message("请重新登陆"); } //查找用户总积分 UserManger userMangerServiceById = userMangerService.getById(userManger.getUserId()); Integer userJf = userMangerServiceById.getUserJf(); //查找积分关注比例 SetPoints setPointsServiceOne = setPointsService.getOne(null); Integer pointsNum = setPointsServiceOne.getPointsNum(); Integer pointsJifen = setPointsServiceOne.getPointsJifen(); //扣除积分 int koujife = 0; /* int koujife = (needNum / pointsNum) * pointsJifen * length;*/ List linkNumList = new ArrayList<>(); LinkNum linkNum1 = new LinkNum().setStrLink(strLink1).setStrNum(strNum1); LinkNum linkNum2 = new LinkNum().setStrLink(strLink2).setStrNum(strNum2); LinkNum linkNum3 = new LinkNum().setStrLink(strLink3).setStrNum(strNum3); LinkNum linkNum4 = new LinkNum().setStrLink(strLink4).setStrNum(strNum4); LinkNum linkNum5 = new LinkNum().setStrLink(strLink5).setStrNum(strNum5); LinkNum linkNum6 = new LinkNum().setStrLink(strLink6).setStrNum(strNum6); LinkNum linkNum7 = new LinkNum().setStrLink(strLink7).setStrNum(strNum7); LinkNum linkNum8 = new LinkNum().setStrLink(strLink8).setStrNum(strNum8); LinkNum linkNum9 = new LinkNum().setStrLink(strLink9).setStrNum(strNum9); LinkNum linkNum10 = new LinkNum().setStrLink(strLink10).setStrNum(strNum10); linkNumList.add(linkNum1); linkNumList.add(linkNum2); linkNumList.add(linkNum3); linkNumList.add(linkNum4); linkNumList.add(linkNum5); linkNumList.add(linkNum6); linkNumList.add(linkNum7); linkNumList.add(linkNum8); linkNumList.add(linkNum9); linkNumList.add(linkNum10); /* long count = linkNumList..stream().distinct().count(); if (listUrl.size()>count){ return R.error().message("请输入不同的URL"); }*/ //查找总需求量 int needNum=0; StringBuilder sb = new StringBuilder(); //不同URl对应的需求量 StringBuilder sb2=new StringBuilder(); //当前可用手机号 List phoneList = phoneCommon.strPhoneList(); for (int i = 0; i < linkNumList.size(); i++) { if (linkNumList.get(i).getStrNum()!=null){ //验证URL if (!verifyUrl(linkNumList.get(i).getStrLink())) { return R.error().message("请输入正确的URL连接"); } //查找是否有相同的URL if (sb.toString().contains(linkNumList.get(i).getStrLink())) { return R.error().message("请输入不相同的URL"); } sb.append(linkNumList.get(i).getStrLink() + " "); //如果需求量大于目前手机号的总数 if (linkNumList.get(i).getStrNum() > phoneList.size()) { return R.error().message("下单需求量过多,最多填写:" + phoneList.size()); } //查看url是否失效 //测算扣除总积分 koujife=(linkNumList.get(i).getStrNum() / pointsNum) * pointsJifen+koujife; //总需求量 needNum=needNum+linkNumList.get(i).getStrNum(); sb2.append(linkNumList.get(i).getStrNum()+","); } } //剩余积分 int leftJf = userJf - koujife; //初始化剩余积分 if (leftJf < 0) { return R.error().message("积分不足,请充值"); } //更新用户积分 UserManger userManger2 = new UserManger(); userManger2.setUserId(userManger.getUserId()).setUserJf(leftJf); boolean updateById = userMangerService.updateById(userManger2); OrderTask orderTask = new OrderTask(); orderTask.setVerifyDate(new Date()).setUserName(userManger.getUserName()).setNumSplit(sb2.deleteCharAt(sb2.length()-1).toString()) .setTaskName(taskName).setVisitUrl(sb.toString()).setUserId(userManger.getUserId()) .setNeedNum(Integer.valueOf(needNum)).setRemarks(remarks).setStatus(3).setTaskNum(needNum ); orderTaskService.save(orderTask); //获取当前ID PointsManger pointsManger = new PointsManger(); pointsManger.setPointCharge(koujife); pointsManger.setPointTotal(leftJf); pointsManger.setUserId(userManger.getUserId()); pointsManger.setTaskId(orderTask.getTaskId()); pointsManger.setPointData(new Date()); pointsMangerService.save(pointsManger); return R.ok(); /* StringBuilder sb = new StringBuilder(); String[] arrUrl = visitUrl.split("\r\n"); int length = arrUrl.length; for (int i = 0; i < length; i++) { sb.append(arrUrl[i] + " "); }*/ //获取关注点击数对应的积分值 /* SetPoints setPoints = setPointsService.getOne(null); Integer pointsNum = setPoints.getPointsNum(); Integer pointsJifen = setPoints.getPointsJifen(); if (userManger != null) { *//*UserManger userMangerServiceById = userMangerService.getById(userManger.getUserId()); //获取用户总的积分 Integer userJf = userMangerServiceById.getUserJf(); //扣除积分 int koujife = (needNum / pointsNum) * pointsJifen * length; //剩余积分 int leftJf = userJf - koujife; //初始化剩余积分 if (leftJf < 0) { return R.error().message("积分不足,请充值"); } //更新用户积分 UserManger userManger2 = new UserManger(); userManger2.setUserId(userManger.getUserId()).setUserJf(leftJf); boolean updateById = userMangerService.updateById(userManger2); OrderTask orderTask = new OrderTask(); orderTask.setVerifyDate(new Date()).setUserName(userManger.getUserName()) .setTaskName(taskName).setVisitUrl(sb.toString()).setUserId(userManger.getUserId()) .setNeedNum(Integer.valueOf(needNum)).setRemarks(remarks).setStatus(3).setTaskNum(needNum * length); orderTaskService.save(orderTask); //获取当前ID PointsManger pointsManger = new PointsManger(); pointsManger.setPointCharge(koujife); pointsManger.setPointTotal(leftJf); pointsManger.setUserId(userManger.getUserId()); pointsManger.setTaskId(orderTask.getTaskId()); pointsManger.setPointData(new Date()); pointsMangerService.save(pointsManger); return R.ok();*//* } else { return R.error(); }*/ } //修改任务 @PostMapping("/updateData") public R updateData(OrderTask orderTask) { orderTask.setVerifyDate(new Date()); boolean updateById = orderTaskService.updateById(orderTask); if (updateById) { return R.ok(); } else { return R.error(); } } //删除任务 @PostMapping("/delData") @Transactional public R delData(String ids) { //获取用户账户 UserManger userManger = (UserManger) SecurityUtils.getSubject().getPrincipal(); String[] arrId = ids.split(","); List list = Arrays.asList(arrId); for (int i = 0; i < list.size(); i++) { OrderTask orderTask = orderTaskService.getById(list.get(i)); Long taskId = orderTask.getTaskId(); Integer userId = orderTask.getUserId(); boolean userIs = userManger.getUserName().equals("admin"); if (orderTask.getConfirmUser() != null && !userIs) { return R.error().message("该任务已执行,不能删除"); } //查找任务消耗的积分 QueryWrapper qw3 = new QueryWrapper<>(); qw3.eq("task_id", taskId); PointsManger pointsManger = pointsMangerService.getOne(qw3); if (pointsManger == null) { orderTaskService.removeById(taskId); continue; } //查找当前积分 UserManger userManger2 = userMangerService.getById(pointsManger.getUserId()); //恢复当前积分 int jifen = userManger2.getUserJf() + pointsManger.getPointCharge(); UserManger userManger3 = new UserManger(); userManger3.setUserId(pointsManger.getUserId()).setUserJf(jifen); boolean updateById = userMangerService.updateById(userManger3); orderTaskService.removeById(taskId); //删除任务下所有的手机列表清单 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("task_id", taskId); taskListService.remove(queryWrapper); } return R.ok(); } //确认分配关注任务 @PostMapping("/confirmTask") @Transactional public R confirmTask(String taskData) throws Exception { //是否放过查找重复的url UserManger userManger = (UserManger) SecurityUtils.getSubject().getPrincipal(); if (userManger == null) { return R.error().message("请重新登陆"); } String taskType = "关注任务"; //需要提交任务 List orderTaskList = JSONObject.parseArray(taskData, OrderTask.class); //当前可用手机号 List phoneList = phoneCommon.strPhoneList(); //当前可自动解锁的手机号 /* List strAutoUnlock = phoneCommon.strAutoUnlock();*/ for (int i = 0; i < orderTaskList.size(); i++) { //判断任务是否已完成或执行中 if (orderTaskList.get(i).getStatus() == 0 || orderTaskList.get(i).getStatus() == 1) { return R.error().message("该任务执行中或已完成"); } //任务ID、任务名、需求数量、url、下单时间 Long taskId = orderTaskList.get(i).getTaskId(); String taskName = orderTaskList.get(i).getTaskName(); String numSplit = orderTaskList.get(i).getNumSplit(); String[] arrStr=numSplit.split(","); Integer[] intArray = Convert.toIntArray(arrStr); Integer maxInter = IntegerArray.getMax(intArray); System.out.println(maxInter); //同一个账号,查找对应的链接Url String visitUrl = orderTaskList.get(i).getVisitUrl(); String[] arr = visitUrl.split(" "); List listUrl = Arrays.asList(arr); long count = listUrl.stream().distinct().count(); if (listUrl.size() > count) { return R.error().message("请输入不同的URL"); } //如果需求量大于目前手机号的总数 if (maxInter > phoneList.size()) { return R.error().message("下单需求量过多,最多填写:" + phoneList.size()); } for (int j = 0; j < listUrl.size(); j++) { String strLink = listUrl.get(j); //验证URL if (!verifyUrl(strLink)) { return R.error().message("请输入正确的URL连接"); } //添加到需要更改的任务列表中 TaskList taskList = new TaskList(); taskList.setTaskId(taskId).setTaskName(taskName).setNeedNum(intArray[j]).setTaskType(taskType).setTaskUrl(listUrl.get(j)).setTaskStatue(1).setTaskNum(intArray[j]); taskListService.save(taskList); //更新发布任务状态 OrderTask orderTask = new OrderTask().setConfirmUser(userManger.getUserName()).setTaskId(taskId).setConfirmDate(DateUtil.date()).setStatus(0); orderTaskService.updateById(orderTask); } } return R.ok(); }
转载地址:http://ylsz.baihongyu.com/