935090232@qq.com
2021-07-07 6a6f4b59e9eaf37cc569f215e9b39e5076ee4da3
zq-erp/src/main/java/com/matrix/system/common/actions/CommonAction.java
@@ -5,29 +5,26 @@
import com.matrix.core.constance.SystemErrorCode;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.RSAUtils;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.tools.WebUtil;
import com.matrix.core.tools.*;
import com.matrix.core.web.BaseAction;
import com.matrix.system.common.authority.DefaultAuthorityManager;
import com.matrix.system.common.authority.strategy.AccountPasswordLogin;
import com.matrix.system.common.authority.strategy.LoginStrategy;
import com.matrix.system.common.authority.strategy.ScanQrCodeLogin;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.ProjExceptionDao;
import com.matrix.system.common.dto.WebLoginDto;
import com.matrix.system.common.service.SysUsersService;
import com.matrix.system.hive.dao.SysShopInfoDao;
import com.matrix.system.hive.statistics.StatisticsBusinessDataJob;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.*;
import java.security.Key;
import java.util.Map;
import java.util.Objects;
/**
 * @description 通用控制器,本action未经session过验证器
@@ -37,6 +34,7 @@
 */
@RequestMapping(value = "/common")
@Controller
@CrossOrigin(origins = "*", maxAge = 3600)
public class CommonAction extends BaseAction {
   @Autowired
@@ -54,7 +52,7 @@
   StatisticsBusinessDataJob sjobp;
   @RequestMapping(value = "/job")
   public @ResponseBody  String job() {
      sjobp.executeExt2();
      //sjobp.executeExt2();
      return "1";
   }
@@ -97,17 +95,22 @@
    * 
    *  登录验证
    * @author:姜友瑶
    * @param user
    * @return 返回类型 AjaxResult
    * @date 2016年8月30日
    */
   @RequestMapping(value = "/dologin")
   public @ResponseBody AjaxResult dologin(SysUsers user) {
      long sqlStart = System.currentTimeMillis();
      decryptAccountAndPassword(user);
      LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
   public @ResponseBody AjaxResult dologin(WebLoginDto webLoginDto) {
      user = authorityManager.login(apLogin);
      long sqlStart = System.currentTimeMillis();
      SysUsers user=null;
      if(WebLoginDto.ACCOUNT_LOGIN.equals(webLoginDto.getLoginType())){
         user= decryptAccountAndPassword(webLoginDto);
         LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
         user = authorityManager.login(apLogin);
      }else {
         ScanQrCodeLogin apLogin = new ScanQrCodeLogin( sysUsersService,webLoginDto.getLoginQrCodeKey());
         user = authorityManager.login(apLogin);
      }
      if(user.getShopId()!=null){
@@ -155,28 +158,27 @@
    * @author JIANGYOUYAO
    * @email 935090232@qq.com
    * @date 2017年12月11日
    * @param user
    */
   private void decryptAccountAndPassword(SysUsers user) {
   private SysUsers decryptAccountAndPassword(WebLoginDto webLoginDto) {
      String privateKey = WebUtil.getSessionAttribute(MatrixConstance.PRIVATE_KEY);
      if (StringUtils.isBlank(privateKey)) {
         throw new GlobleException(SystemErrorCode.REQUEST_INVALID);
      }
      SysUsers user=new SysUsers();
      try {
         // 账号解密
         byte[] acccountData = RSAUtils.decryptByPrivateKey(user.getSuAccount(), privateKey);
         byte[] acccountData = RSAUtils.decryptByPrivateKey(webLoginDto.getSuAccount(), privateKey);
         user.setSuAccount(new String(acccountData));
         // 密码解密
         byte[] passWordData = RSAUtils.decryptByPrivateKey(user.getSuPassword(), privateKey);
         byte[] passWordData = RSAUtils.decryptByPrivateKey(webLoginDto.getSuPassword(), privateKey);
         user.setSuPassword(new String(passWordData));
      } catch (Exception e) {
         LogUtil.error("用户账号密码解密失败", e);
         throw new GlobleException(SystemErrorCode.LOGIN_FAIL);
      }
      return user;
   }
@@ -248,44 +250,6 @@
   }
   /**
    * 移动端登录
    * @param user
    * @return
    */
   @RequestMapping(value = "/doHiveMobilelogin")
   public @ResponseBody AjaxResult doHiveMobilelogin(SysUsers user) {
      long sqlStart = System.currentTimeMillis();
      decryptAccountAndPassword(user);
      LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
      user = authorityManager.login(apLogin);
      // 获取该账户的岗位信息,并判断是否为店长
      if(user.getShopId()!=null){
         user.setShopName(sysShopInfoDao.selectById(user.getShopId()).getShopName());
      }
      AjaxResult result = new AjaxResult();
      authorityManager.initUserPower(result);
      result.setStatus(AjaxResult.STATUS_SUCCESS);
      LogUtil.info("#用户登录成功 账号={}#", user.getSuAccount());
      switch (user.getSuUserType()) {
         // 企业管理员
         case AppConstance.USER_TYPE_ADMIN:
            result.setPage(HIVE_MOBILE_REDIRECT_INDEX);
            break;
         // 企业用户
         case AppConstance.USER_TYPE_EMPLOYEE:
            result.setPage(HIVE_MOBILE_REDIRECT_INDEX);
            break;
         default:// 不能识别的用户
            result.setPage("common/redirect/404");
      }
      long endStart = System.currentTimeMillis();
      LogUtil.info("本次登录耗时#{}毫秒", (endStart-sqlStart)+"");
      return result;
   }
   @GetMapping(value = "/hiveMobileLoginOut")
   public String hiveMobileLoginOut() {
      authorityManager.getLoginOut();
@@ -294,4 +258,26 @@
   @Autowired
   /**
    * 官网联系我们通知
    */
   @RequestMapping(value = "/gwLinkUs")
   public @ResponseBody
   AjaxResult gwLinkUs(@RequestBody Map<String , Object> param) {
      String title = "hive新客户在官网提交联系请求";
      if(Objects.nonNull(param.get("name"))){
         String content = "hive=>name:" + param.get("name") + "  tel:" +  param.get("tel") ;
         DingDingRobotUtil.sendLink("https://oapi.dingtalk.com/robot/send?access_token=62bb902f0e3945f0ece31306b99abae043fc69a66da0ef04d89fd20bf58d88d8", content, title, "", "www.baidu.com");
      }
      return AjaxResult.buildSuccessInstance("提交成功");
   }
}