Newer
Older
casic-metering / casic-metering-api / src / main / java / com / casic / missiles / controller / MockController.java
chaizhuang on 17 Apr 2024 5 KB bug修改
package com.casic.missiles.controller;

import cn.hutool.core.util.StrUtil;
import com.casic.missiles.annotation.SentinelLimitAnnotation;
import com.casic.missiles.core.application.enums.LoginType;
import com.casic.missiles.core.base.controller.BaseController;
import com.casic.missiles.core.model.auth.AuthUser;
import com.casic.missiles.core.model.auth.CasicCustomToken;
import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.dto.business.certificate.RegisterCustomParameters;
import com.casic.missiles.enums.business.FilePrintTypeEnum;
import com.casic.missiles.enums.notifyevent.PrintFileDataBeanNameAliasEnum;
import com.casic.missiles.mapper.business.BusinessCertificateReportMapper;
import com.casic.missiles.model.business.BusinessCertificateReport;
import com.casic.missiles.model.response.SuccessResponseData;
import com.casic.missiles.modular.domain.constants.PermissionConstants;
import com.casic.missiles.modular.interfaces.log.LogManager;
import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory;
import com.casic.missiles.modular.system.dto.LoginSuccessDTO;
import com.casic.missiles.service.listeners.register.PrintFileRegister;
import com.casic.missiles.service.meter.MeterCertificateService;
import com.casic.missiles.utils.DictCodeUtils;
import com.casic.missiles.utils.SpringContextUtil;
import com.xxl.job.core.biz.model.ReturnT;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.subject.Subject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.security.NoSuchAlgorithmException;
import java.util.Map;

import static com.casic.missiles.core.util.HttpContext.getIp;
import static com.xxl.job.core.biz.model.ReturnT.SUCCESS;


/**
 * 仅为mock登录使用
 *
 * @author lenovo
 */
@Controller
@RequestMapping("/route")
@Slf4j
public class MockController extends BaseController {

    /**
     * 获取mockToken
     */
    @SentinelLimitAnnotation(limitCount = 1, resourceName = "mockToken")
    @GetMapping("/mockToken")
    @ResponseBody
    public Object mockToken(String username, String password) {
        super.getSession().setAttribute(PermissionConstants.IS_APP, false);
        SuccessResponseData resultData = new SuccessResponseData();
        if (StrUtil.hasEmpty(username, password)) {
            username = "dtt";
            password = "111111";
        }
        Subject currentUser = ShiroKit.getSubject();

        try {
            Map<String, String> key = RSAUtils.genKeyPair();
            ShiroKit.getSession().setAttribute(PermissionConstants.PRIVATE_KEY, key.get(RSAUtils.RSAPrivateKey));

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        //token自定义
        CasicCustomToken token = new CasicCustomToken(username, password);
        token.setType(LoginType.PASSWORD);
        token.setRememberMe(false);

        try {
            currentUser.login(token);
        } catch (Exception e) {
            e.printStackTrace();
        }
        AuthUser shiroUser = ShiroKit.getUser();
        super.getSession().setAttribute("shiroUser", shiroUser);
        super.getSession().setAttribute("username", shiroUser.getAccount());
        super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId());

        LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp()));

        ShiroKit.getSession().setAttribute("sessionFlag", true);
        resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null));
        resultData.setMessage("登录成功");
        return resultData;
    }

    /**
     * 测试所用类
     *
     * @param id
     */
    @GetMapping("/test")
    @ResponseBody
    public void test(Long id)throws Exception {
//        BusinessSiteExecutiveInfoMapper siteExecutiveInfoMapper = SpringContextUtil.getBean(BusinessSiteExecutiveInfoMapper.class);
//        BusinessSiteExecutiveInfo siteExecutive = siteExecutiveInfoMapper.selectById(id);
//        //进行证书报告生成,并在远程注册服务器注册
//        PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class);
//        try {
//            DictCodeUtils.convertDictCodeToName(siteExecutive);
//            String printFileName = printFileRegister.registerPrintFile(siteExecutive, FilePrintTypeEnum.EXTERNAL_CALIBRATION_FILE);
//            log.info(printFileName);
//        } catch (Exception ex) {
//            log.error("打印异常,证书报告信息为{},异常信息为{}", JSONObject.toJSON(siteExecutive), ex);
//        }
        BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class);
        BusinessCertificateReport certificateReport = certificateReportMapper.selectById(id);
        DictCodeUtils.convertDictCodeToName(certificateReport);
        PrintFileRegister printFileRegister = SpringContextUtil.getBean(PrintFileRegister.class);
        String printFileName = printFileRegister.registerPrintFile(
                RegisterCustomParameters.builder()
                        .customFileName(certificateReport.getCertificateReportName()+certificateReport.getCertificateReportCode())
                        .customObject(certificateReport)
                        .prefixType(FilePrintTypeEnum.CALIBRATION_APPROVAL)
                        .pdf(true)
                        .build());
        log.info(printFileName);
    }

    @Resource
    private MeterCertificateService meterCertificateService;
    @GetMapping("/job")
    public ReturnT<String> execute() throws Exception {
        meterCertificateService.regularExpirationReminder();
        return SUCCESS;
    }

}