package com.casic.missiles.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
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.mapper.business.BizBusinessDeviceMeasureApprovalMapper;
import com.casic.missiles.mapper.equipment.BizEquipmentStandardCheckRecordApprovalMapper;
import com.casic.missiles.model.business.BizBusinessDeviceMeasureApproval;
import com.casic.missiles.model.equipment.BizEquipmentStandardCheckRecordApproval;
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.Impl.eqpt.GenericEqptDataProvider;
import com.casic.missiles.service.listeners.register.PrintFileRegister;
import com.casic.missiles.utils.SpringContextUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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.servlet.http.HttpServletResponse;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import static com.casic.missiles.core.util.HttpContext.getIp;
/**
* 仅为mock登录使用
*
* @author lenovo
*/
@Controller
@RequestMapping("/route")
@Slf4j
public class MockController extends BaseController {
/**
* 获取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 = "cz";
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;
}
/**
* 测试所用类
*/
@GetMapping("/test")
@ResponseBody
public void test(Long id) {
GenericEqptDataProvider genericEqptDataProvider = SpringContextUtil.getBean(GenericEqptDataProvider.class);
BizEquipmentStandardCheckRecordApprovalMapper checkApprovalMapper = SpringContextUtil.getBean(BizEquipmentStandardCheckRecordApprovalMapper.class);
// BizBusinessDeviceMeasureApproval deviceMeasureApproval = measureApprovalMapper.selectById(id);
// genericEqptDataProvider.excuteMeasureTaskAsyn(deviceMeasureApproval,deviceMeasureApproval.getId(),deviceMeasureApproval.getCertificateWordFile(),deviceMeasureApproval.getOriginalRecordWordFile());
//进行证书报告生成,并在远程注册服务器注册
BizEquipmentStandardCheckRecordApproval checkApproval = checkApprovalMapper.selectById(id);
genericEqptDataProvider.excuteCheckTaskAsyn(checkApproval, id, checkApproval.getCheckRecordWordFile());
}
// //批量生成测试用户
// @Autowired
// private UserMapper userMapper;
//
// @GetMapping("/ge")
// public void ge() {
// for (int i = 1; i < 1910; i++) {
// User user = new User();
// user.setAccount("TEST"+i);
// user.setName("TEST"+i);
// user.setDeptId(1734400240108224513l);
// user.setLastTime(Timestamp.valueOf("2023-12-14 14:43:14"));
// user.setRoleId("1701913046218780674");
// user.setCreateTime(Timestamp.valueOf("2023-12-14 06:07:52"));
// user.setCreateUser(1l);
// user.setSalt("21pm3");
// user.setPassword("eeb684f003092f2c1512eefde3e64549");
// user.setStatus("1");
// userMapper.insert(user);
// }
// }
}