package com.nq.controller; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; import com.google.common.collect.Maps; import com.nq.common.ServerResponse; import com.nq.dao.SiteAdminMapper; import com.nq.pojo.*; import com.nq.service.*; import com.nq.service.impl.GoogleAuthenticator; import com.nq.utils.PropertiesUtil; import com.nq.utils.redis.CookieUtils; import com.nq.utils.redis.JsonUtil; import com.nq.utils.redis.RedisConst; import com.nq.utils.redis.RedisShardedPoolUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.validation.Valid; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Map; @Controller @RequestMapping({"/api/admin/"}) public class AdminApiController { private static final Logger log = LoggerFactory.getLogger(AdminApiController.class); @Autowired ISiteAdminService iSiteAdminService; @Autowired SiteAdminMapper siteAdminMapper; @Autowired ISiteSettingService iSiteSettingService; @Autowired ISiteIndexSettingService iSiteIndexSettingService; @Autowired ISiteFuturesSettingService iSiteFuturesSettingService; @Autowired ISiteProductService iSiteProductService; @Autowired ISiteSpreadService iSiteSpreadService; @Autowired SiteAdminIndexService siteAdminIndexService; //管理系统登录 @RequestMapping({"login.do"}) @ResponseBody public ServerResponse login(@RequestParam("adminPhone") String adminPhone, @RequestParam("adminPwd") String adminPwd, @RequestParam("verifyCode") String verifyCode, @RequestParam(value = "googleAuthCode", required = false) Integer googleAuthCode, HttpSession httpSession, HttpServletRequest request, HttpServletResponse response) { ServerResponse serverResponse = this.iSiteAdminService.login(adminPhone, adminPwd, verifyCode, googleAuthCode,request); return serverResponse; } //管理系统注销 @RequestMapping({"logout.do"}) @ResponseBody public ServerResponse logout(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { String cookie_name = PropertiesUtil.getProperty("admin.cookie.name"); String logintoken = CookieUtils.readLoginToken(httpServletRequest, cookie_name); log.info("管理员 token = {} ,退出登陆", logintoken); RedisShardedPoolUtils.del(logintoken); CookieUtils.delLoginToken(httpServletRequest, httpServletResponse, cookie_name); return ServerResponse.createBySuccess(); } @RequestMapping({"authCharge.do"}) @ResponseBody public ServerResponse authCharge(@RequestParam("token") String token, @RequestParam("state") Integer state, @RequestParam("orderSn") String orderSn) { return this.iSiteAdminService.authCharge(token, state, orderSn); } //查询风控设置 股票分控信息 @RequestMapping({"getSetting.do"}) @ResponseBody public ServerResponse getSetting() { return ServerResponse.createBySuccess(this.iSiteSettingService.getSiteSetting()); } //查询风控设置 指数风控信息 @RequestMapping({"getIndexSetting.do"}) @ResponseBody public ServerResponse getIndexSetting() { return ServerResponse.createBySuccess(this.iSiteIndexSettingService.getSiteIndexSetting()); } //查询风控设置 期货风控信息 @RequestMapping({"getFuturesSetting.do"}) @ResponseBody public ServerResponse getFuturesSetting() { return ServerResponse.createBySuccess(this.iSiteFuturesSettingService.getSetting()); } //风控设置 显示产品配置信息 @RequestMapping({"getProductSetting.do"}) @ResponseBody public ServerResponse getProductSetting() { return ServerResponse.createBySuccess(this.iSiteProductService.getProductSetting()); } //查询点差设置列表 @RequestMapping({"getSiteSpreadList.do"}) @ResponseBody public ServerResponse getSiteSpreadList(int pageNum, int pageSize, String typeName) { return ServerResponse.createBySuccess(this.iSiteSpreadService.pageList(pageNum, pageSize, typeName)); } //添加点差设置 @RequestMapping({"addSiteSpread.do"}) @ResponseBody public ServerResponse addSiteSpread(SiteSpread siteSpread) { return ServerResponse.createBySuccess(this.iSiteSpreadService.insert(siteSpread)); } //添加点差设置 @RequestMapping({"updateSiteSpread.do"}) @ResponseBody public ServerResponse updateSiteSpread(SiteSpread siteSpread) { return ServerResponse.createBySuccess(this.iSiteSpreadService.update(siteSpread)); } /** * 获取当前登录用户 * @return */ @GetMapping("getAdmin") @ResponseBody public ServerResponse getAdmin(HttpServletRequest request) { String cookie_name = PropertiesUtil.getProperty("admin.cookie.name"); SiteAdmin siteAdmin = null; if(StringUtils.isNotEmpty(cookie_name)){ String logintoken = CookieUtils.readLoginToken(request, cookie_name); String adminJson = RedisShardedPoolUtils.get(logintoken); siteAdmin = (SiteAdmin) JsonUtil.string2Obj(adminJson, SiteAdmin.class); siteAdmin = siteAdminMapper.selectById(siteAdmin.getId()); } return ServerResponse.createBySuccess(siteAdmin); } /** * 获取谷歌验证码密钥 * @return */ @GetMapping("getLoginGoogleAuthSecret") @ResponseBody public ServerResponse getLoginGoogleAuthSecret(HttpServletRequest request) { GoogleAuthDto dto = iSiteAdminService.getGoogleAuth(request); return ServerResponse.createBySuccess(dto); } /** * 绑定谷歌验证码 */ @PostMapping("bindGoogleAuth") @ResponseBody public ServerResponse updateGoogleAuth(@RequestParam("id") String id, @RequestParam("googleAuthCode") String googleAuthCode, @RequestParam("secret") String secret) { SiteAdmin siteAdmin = siteAdminMapper.selectById(id); if (siteAdmin == null) { return ServerResponse.createByErrorMsg("当前用户未找到"); } long t = System.currentTimeMillis(); GoogleAuthenticator ga = new GoogleAuthenticator(); ga.setWindowSize(5); if (siteAdmin.getGoogleAuthBind()) { return ServerResponse.createByErrorMsg("谷歌验证码已绑定"); } boolean userFlag = ga.check_code(secret, Long.valueOf(googleAuthCode), t); if (!userFlag) { return ServerResponse.createByErrorMsg("谷歌验证码错误"); } siteAdmin.setGoogleAuthBind(true); siteAdmin.setGoogleAuthSecret(secret); siteAdminMapper.updateById(siteAdmin); return ServerResponse.createBySuccess(); } /** * 解绑谷歌验证码 * @param param * @return */ @PostMapping("/unbindingGoogleAuth") @ResponseBody public ServerResponse unbindingGoogleAuth(@RequestParam("id") String id, @RequestParam("rootGoogleAuthCode") String rootGoogleAuthCode) { SiteAdmin siteAdmin = siteAdminMapper.selectById(id); if (siteAdmin == null) { return ServerResponse.createByErrorMsg("当前用户未找到"); } long t = System.currentTimeMillis(); GoogleAuthenticator ga = new GoogleAuthenticator(); ga.setWindowSize(5); boolean flag = ga.check_code(siteAdmin.getGoogleAuthSecret(), Long.valueOf(rootGoogleAuthCode), t); if (flag) { if (!siteAdmin.getGoogleAuthBind()) { return ServerResponse.createByErrorMsg("谷歌验证码未绑定,无需解绑!"); } siteAdmin.setGoogleAuthBind(false); siteAdmin.setGoogleAuthSecret(""); siteAdminMapper.updateById(siteAdmin); } else { return ServerResponse.createByErrorMsg("超级谷歌验证码错误"); } return ServerResponse.createBySuccess(); } // //页面样式设置 // @RequestMapping({"setSiteStyle.do"}) // @ResponseBody // public ServerResponse setSiteStyle(SiteAdminIndex siteAdminIndex) { // return ServerResponse.createBySuccess(this.siteAdminIndexService.setSiteStyle(siteAdminIndex)); // } // //页面样式设置查询 // @RequestMapping({"getSiteStyle.do"}) // @ResponseBody // public ServerResponse getSiteStyle(@RequestParam("id") Integer id) { // return ServerResponse.createBySuccess(this.siteAdminIndexService.getSiteStyle(id)); // } }