Commit d6da8bad authored by ZWT's avatar ZWT

feat(零碳): 长庆演示系统新增功能

1.修改第三方日累计数据推送表表结构,增加日累计储能放电量字段,同时修改代码对应实体及mapper文件,修改相关接口增加储能日累计放电量接收逻辑;
2.修改首页井场收益分析模块接口,修改获取储能累计放电量逻辑;
3.设计并创建井口日用电趋势表,生成对应实体类及mapper文件;
4.统计分析模块,新增本月累计节电经济效益查询接口,添加线上接口文档并完成接口冒烟测试;
5.统计分析模块,新增本月累计减碳量查询接口,添加线上接口文档并完成接口冒烟测试;
6.统计分析模块,新增光伏发电趋势查询接口,添加线上接口文档并完成接口冒烟测试;
7.统计分析模块,新增月度总览查询接口,添加线上接口文档并完成接口冒烟测试;

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 0800647b
package pps.core.system.service;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import org.apache.commons.lang3.StringUtils;
import pps.core.common.session.PpsUserSession;
import pps.core.common.utils.PatternUtil;
import pps.core.common.utils.VerificationCode;
import pps.core.system.cache.LoginVerCodeCache;
import pps.core.system.entity.SysUserEnt;
import pps.core.system.entity.SysUserForgetLogEnt;
import pps.core.system.entity.SysUserLoginLogEnt;
import pps.core.system.entity.SysUserOrganizationRelEnt;
import pps.core.system.error.LoginError;
import pps.core.system.mapper.SysUserForgetLogMapper;
import pps.core.system.mapper.SysUserLoginLogMapper;
import pps.core.system.mapper.SysUserMapper;
import pps.core.system.mapper.SysUserOrganizationRelMapper;
import pps.core.system.service.data.sys_login.*;
import pps.core.system.utils.UserInfoUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
......@@ -31,7 +25,6 @@ import xstartup.base.XUser;
import xstartup.base.conf.XConfManager;
import xstartup.base.exception.XServiceException;
import xstartup.base.util.XDateUtils;
import xstartup.base.util.XStringUtils;
import xstartup.base.util.XUuidUtils;
import xstartup.core.base.provider.data.XToken;
import xstartup.data.XFileResult;
......@@ -50,6 +43,13 @@ import java.util.UUID;
@XService
public class LoginService {
/**
* 账号密码登录
*
* @param context 上下文
* @param input 输入
* @return {@link XSingleResult }<{@link LoginByAccountOutput }>
*/
@XText("账号密码登录")
@XApiPost(anonymous = true)
public XSingleResult<LoginByAccountOutput> loginByAccount(XContext context, LoginByAccountInput input) {
......@@ -66,85 +66,28 @@ public class LoginService {
if (ObjectUtil.isNotNull(sysUserEnt.getIsOuter()) && !sysUserEnt.getIsOuter().equals(1)) {
return XSingleResult.error(context, LoginError.ISOUT);
}
Date now = DateUtil.date();
SysUserOrganizationRelMapper relMapper = context.getBean(SysUserOrganizationRelMapper.class);
SysUserOrganizationRelEnt sysUserOrganizationRelEnt = relMapper.selectOne(new LambdaQueryWrapper<SysUserOrganizationRelEnt>()
.eq(SysUserOrganizationRelEnt::getUserId, sysUserEnt.getId())
.le(SysUserOrganizationRelEnt::getEffectTime, now)
.gt(SysUserOrganizationRelEnt::getEndTime, now)
);
if (ObjectUtil.isNull(sysUserOrganizationRelEnt)) {
context.getLogger().warn("用户未挂靠组织");
sysUserOrganizationRelEnt = new SysUserOrganizationRelEnt();
sysUserOrganizationRelEnt.setOuId("1");
}
XApiCookieConf apiCookieConf = XConfManager.getConf(XApiCookieConf.class);
Integer expiresIn = apiCookieConf.getExpires();
String userName = sysUserEnt.getUserName(); //姓名
Long orgId = 1L; //组织机构id
Long roleId0 = 1L; //角色id1
Long roleId1 = 1L; //角色id2
Long userId = IdWorker.getId(); //用户id
String userCode = sysUserEnt.getId();//这个是用户字符串类型的唯一标志
String ssoToken = null; //sso系统授权的token
String ssoRefreshToken = null; //sso系统授权的刷新token
String uniqueId = XUuidUtils.randomUUID();
XUser user = XUser.createUser(XUser.ENTRY_API,
orgId,
new Long[]{roleId0, roleId1},
userId,
userCode,
XSingleResult<XToken> saveUserResult = XTokenHelper.saveUser(context,
XUser.createUser(XUser.ENTRY_API,
1L,
new Long[]{1L, 1L},
IdWorker.getId(),
sysUserEnt.getId(),
sysUserEnt.getLoginName(),
userName,
new XSsoAuth(uniqueId, ssoToken, ssoRefreshToken));
XSingleResult<XToken> saveUserResult = XTokenHelper.saveUser(context, user, expiresIn);
sysUserEnt.getUserName(),
new XSsoAuth(XUuidUtils.randomUUID(), null, null)),
expiresIn);
saveUserResult.throwIfFail();
LoginByAccountOutput output = new LoginByAccountOutput();
output.setExpiresIn(expiresIn);
output.setToken(saveUserResult.getResult().getToken());
PpsUserSession session = context.getSession(PpsUserSession.class);
output.setSession(session);
output.setSession(context.getSession(PpsUserSession.class));
//登录成功后,删除失败记录
deleteError(context, sysUserEnt);
return XSingleResult.success(output);
}
@XText("忘记密码")
@XApiPost(anonymous = true)
public XSingleResult<ForgetPwdOutput> forgetPwd(XContext context, ForgetPwdInput input) {
if (XStringUtils.isNotEmpty(input.getCode())) {
checkCode(context, input.getCode(), input.getCodeIden());
}
Long count = getForgetErrorTimes(context);
if (count >= 5) {
return XSingleResult.error(500, "查询失败超过5次");
}
XSingleResult<SysUserEnt> sysUserResult = checkForgetAccount(context, input.getLoginName());
SysUserEnt sysUserEnt = sysUserResult.getResult();
String phone = sysUserEnt.getPhone();
phone = UserInfoUtil.decrypt(phone);
if (StringUtils.isBlank(phone)) {
return XSingleResult.error(context, LoginError.NotExistPhone);
}
if (!PatternUtil.checkPhone(phone)) {
return XSingleResult.error(context, LoginError.NotExistPhone);
}
ForgetPwdOutput output = new ForgetPwdOutput();
output.setPhone(phone.substring(phone.length() - 4));
return XSingleResult.success(output);
}
@XText("修改密码")
@XApiPost(anonymous = true)
public XServiceResult modifyPwd(XContext context, ModifyPwdInput input) {
XSingleResult<SysUserEnt> sysUserResult = checkAccount(context, input.getLoginName(), null);
SysUserEnt sysUserEnt = sysUserResult.getResult();
sysUserEnt.setPassword(input.getPassword());
SysUserMapper userMapper = context.getBean(SysUserMapper.class);
userMapper.updateById(sysUserEnt);
return XServiceResult.OK;
}
/**
* 通过模拟登录
*
......@@ -208,9 +151,9 @@ public class LoginService {
private XSingleResult<SysUserEnt> checkAccount(XContext context, String loginName, String password) {
SysUserMapper mapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysUserEnt::getLoginName, loginName);
SysUserEnt sysUserEnt = mapper.selectOne(queryWrapper);
SysUserEnt sysUserEnt = mapper.selectOne(new LambdaQueryWrapper<SysUserEnt>()
.eq(SysUserEnt::getLoginName, loginName)
);
if (ObjectUtil.isNull(sysUserEnt)) {
insertError(context, loginName);
Long count = getErrorTimes(context, loginName, sysUserEnt);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment