Commit 623f812d authored by ZWT's avatar ZWT

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

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

BREAKING CHANGE: 无

Closes 无

[skip ci]
parent 51b5591c
package pps.core.system.cache;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.cache.XCacheLife;
import xstartup.cache.XCacheObject;
import xstartup.cache.XListCache;
import java.util.List;
public class FineReportThirdTokenCache implements XCacheObject, XCacheLife {
@XText("是否全选")
private String cacheCode;
@XText("字典路径")
private String cacheKey;
/**
* 检查缓存是否存在指定的code
*
* @param context
* @param loginName
* @param dicKey
* @return
*/
public static boolean exist(XContext context, String loginName, String dicKey) {
return FineReportThirdTokenCache.Tool.get(FineReportThirdTokenCache.Tool.class).exist(context, loginName, dicKey, FineReportThirdTokenCache.class);
}
/**
* 从缓存中读取
*
* @param context
* @param loginName
* @return
*/
public static List<FineReportThirdTokenCache> list(XContext context, String loginName) {
return FineReportThirdTokenCache.Tool.get(FineReportThirdTokenCache.Tool.class).list(context, loginName, FineReportThirdTokenCache.class);
}
/**
* 设置缓存
*
* @param context
* @param loginName
* @param caches
*/
public static void set(XContext context, String loginName, List<FineReportThirdTokenCache> caches) {
FineReportThirdTokenCache.Tool.get(FineReportThirdTokenCache.Tool.class).set(context, loginName, caches);
}
public String getCacheCode() {
return cacheCode;
}
public void setCacheCode(String cacheCode) {
this.cacheCode = cacheCode;
}
@Override
public String getCacheKey() {
return this.cacheKey;
}
public void setCacheKey(String cacheKey) {
this.cacheKey = cacheKey;
}
@Override
public Integer getDuration() {
//过期时间(秒)
return 60 * 60;
}
static class Tool extends XListCache<FineReportThirdTokenCache> {
@Override
protected List<FineReportThirdTokenCache> restore(XContext context, String listKey) {
return null;
}
}
}
package pps.core.system.cache;
import xstartup.base.XContext;
import xstartup.cache.XCacheLife;
import xstartup.cache.XCacheObject;
import xstartup.cache.XSingleCache;
import java.util.Date;
public class LoginSmsCodeCache implements XCacheObject, XCacheLife {
private String codeKey;
private String code;
private Integer validity;
private Date currentDate;
/**
* 检查缓存是否存在指定的code
*
* @param context
* @param code
* @return
*/
public static LoginSmsCodeCache exist(XContext context, String code) {
LoginSmsCodeCache isExist = LoginSmsCodeCache.Tool.get(LoginSmsCodeCache.Tool.class).find(context, code, LoginSmsCodeCache.class);
return isExist;
}
public static void delete(XContext context, String loginName) {
LoginSmsCodeCache.Tool.get(LoginSmsCodeCache.Tool.class).delete(context, loginName, LoginSmsCodeCache.class);
}
/**
* 设置缓存
*
* @param context
* @param cache
*/
public static void set(XContext context, LoginSmsCodeCache cache) {
LoginSmsCodeCache.Tool.get(LoginSmsCodeCache.Tool.class).set(context, cache);
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getCodeKey() {
return codeKey;
}
public void setCodeKey(String codeKey) {
this.codeKey = codeKey;
}
public Integer getValidity() {
return validity;
}
public void setValidity(Integer validity) {
this.validity = validity;
}
public Date getCurrentDate() {
return currentDate;
}
public void setCurrentDate(Date currentDate) {
this.currentDate = currentDate;
}
@Override
public Integer getDuration() {
return validity * 60;
}
@Override
public String getCacheKey() {
return this.codeKey;
}
static class Tool extends XSingleCache<LoginSmsCodeCache> {
@Override
protected LoginSmsCodeCache restore(XContext context, String cacheKey) {
return null;
}
}
}
......@@ -10,9 +10,7 @@ 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.LoginSmsCodeCache;
import pps.core.system.cache.LoginVerCodeCache;
import pps.core.system.config.LoginConfig;
import pps.core.system.entity.SysUserEnt;
import pps.core.system.entity.SysUserForgetLogEnt;
import pps.core.system.entity.SysUserLoginLogEnt;
......@@ -139,7 +137,6 @@ public class LoginService {
@XText("修改密码")
@XApiPost(anonymous = true)
public XServiceResult modifyPwd(XContext context, ModifyPwdInput input) {
checkSmsCode(context, input.getLoginName() + "-pwd", input.getSmsCode());
XSingleResult<SysUserEnt> sysUserResult = checkAccount(context, input.getLoginName(), null);
SysUserEnt sysUserEnt = sysUserResult.getResult();
sysUserEnt.setPassword(input.getPassword());
......@@ -210,14 +207,6 @@ public class LoginService {
/*------------------------------- private -------------------------------*/
private boolean checkIsSendSmsCode(XContext context) {
Integer sendSmsCodeSwitch = new LoginConfig().sendSmsCodeSwitch.findValue(context);
if (sendSmsCodeSwitch != null && sendSmsCodeSwitch == 1) {
return true;
}
return false;
}
private XSingleResult<SysUserEnt> checkAccount(XContext context, String loginName, String password) {
SysUserMapper mapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> queryWrapper = new QueryWrapper<>();
......@@ -239,24 +228,6 @@ public class LoginService {
return XSingleResult.success(sysUserEnt);
}
private void checkSmsCode(XContext context, String userKey, String smsCode) {
if (!checkIsSendSmsCode(context)) {
return;
}
if (StringUtils.isBlank(smsCode)) {
throw new XServiceException(context, LoginError.NotValidateSmsCode);
}
LoginSmsCodeCache smsCodeCache = LoginSmsCodeCache.exist(context, userKey);
if (smsCodeCache != null) {
String code = smsCodeCache.getCode();
if (code.equals(smsCode)) {
LoginSmsCodeCache.delete(context, userKey);
return;
}
}
throw new XServiceException(context, LoginError.NotValidateSmsCode);
}
private void checkCode(XContext context, String code, String codeIden) {
if (code == null) {
throw new XServiceException(context, LoginError.NotExistCode);
......
......@@ -8,33 +8,21 @@ import org.apache.logging.log4j.util.Strings;
import org.springframework.util.CollectionUtils;
import pps.core.common.constant.UserConstant;
import pps.core.common.session.PpsUserSession;
import pps.core.common.utils.RSAUtil;
import pps.core.system.config.LoginConfig;
import pps.core.system.constant.SysOrganizationCode;
import pps.core.system.entity.*;
import pps.core.system.error.LoginError;
import pps.core.system.mapper.*;
import pps.core.system.service.data.sys_user.*;
import pps.core.system.utils.UserInfoUtil;
import xstartup.annotation.XService;
import xstartup.annotation.XText;
import xstartup.base.XContext;
import xstartup.base.XUser;
import xstartup.base.data.CustomQueryInput;
import xstartup.base.exception.XServiceException;
import xstartup.base.util.XCopyUtils;
import xstartup.base.util.XEncryptUtils;
import xstartup.base.util.XJsonUtils;
import xstartup.base.util.XStringUtils;
import xstartup.data.XListResult;
import xstartup.data.XPageResult;
import xstartup.data.XServiceResult;
import xstartup.data.XSingleResult;
import xstartup.error.XError;
import xstartup.feature.api.annotation.XApiAnonymous;
import xstartup.feature.api.annotation.XApiGet;
import xstartup.feature.api.annotation.XApiPost;
import xstartup.feature.mybatis.helper.XMapperHelper;
import xstartup.helper.XTransactionHelper;
import java.text.ParseException;
......@@ -310,100 +298,6 @@ public class SysUserService {
});
}
@XApiAnonymous
@XApiGet
public XSingleResult<GetSysUserOutput> getSysUser(XContext context, GetSysUserInput input) {
SysUserMapper mapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(SysUserEnt::getId, input.getId());
SysUserEnt entity = mapper.selectOne(queryWrapper);
if (entity == null) {
return XSingleResult.error(context, XError.NotFound);
}
GetSysUserOutput output = new GetSysUserOutput();
XCopyUtils.copyObject(entity, output);
output.setPhone(UserInfoUtil.desensitization(entity.getPhone()));
output.setIdentifyNo(UserInfoUtil.desensitization(entity.getIdentifyNo()));
output.setEmail(UserInfoUtil.desensitization(entity.getEmail()));
return XSingleResult.success(output);
}
@XApiAnonymous
@XApiGet
public XPageResult<QuerySysUserOutput> querySysUser(XContext context, QuerySysUserInput input) {
SysUserMapper mapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().like(SysUserEnt::getId, input.getId())
.like(SysUserEnt::getUserName, input.getUserName())
.like(SysUserEnt::getUserDomain, input.getUserDomain())
.like(SysUserEnt::getUserCode, input.getUserCode())
.eq(SysUserEnt::getUserType, input.getUserType())
.like(SysUserEnt::getPhone, input.getPhone())
.like(SysUserEnt::getEmail, input.getEmail())
.like(SysUserEnt::getLoginName, input.getLoginName())
.eq(SysUserEnt::getIsSuperAdmin, input.getIsSuperAdmin())
.like(SysUserEnt::getIdentifyNo, input.getIdentifyNo())
.like(SysUserEnt::getRemark, input.getRemark())
.eq(SysUserEnt::getEndDate, input.getEndDate())
.like(SysUserEnt::getPassword, input.getPassword())
.like(SysUserEnt::getDuty, input.getDuty())
.eq(SysUserEnt::getSignImage, input.getSignImage())
.like(SysUserEnt::getPromptMode, input.getPromptMode())
.eq(SysUserEnt::getCert, input.getCert())
.eq(SysUserEnt::getSort, input.getSort())
.eq(SysUserEnt::getCaBeginDate, input.getCaBeginDate())
.eq(SysUserEnt::getCaEndDate, input.getCaEndDate())
.like(SysUserEnt::getIamLoginName, input.getIamLoginName())
.eq(SysUserEnt::getLastLoginTime, input.getLastLoginTime())
.like(SysUserEnt::getJobDesc, input.getJobDesc())
.like(SysUserEnt::getFaxNo, input.getFaxNo())
.like(SysUserEnt::getPostalCode, input.getPostalCode())
.like(SysUserEnt::getAddress, input.getAddress())
.like(SysUserEnt::getCreateById, input.getCreateById())
.like(SysUserEnt::getCreateByName, input.getCreateByName())
.eq(SysUserEnt::getCreateTime, input.getCreateTime())
.like(SysUserEnt::getModifyById, input.getModifyById())
.like(SysUserEnt::getModifyByName, input.getModifyByName())
.eq(SysUserEnt::getModifyTime, input.getModifyTime());
return XMapperHelper.query(mapper, input, queryWrapper, QuerySysUserOutput.class);
}
@XApiAnonymous
@XApiGet
public XPageResult<QuerySysUserOutput> dynamicQuerySysUser(XContext context, CustomQueryInput input) {
SysUserMapper mapper = context.getBean(SysUserMapper.class);
return XMapperHelper.query(mapper, input, SysUserEnt.class, QuerySysUserOutput.class);
}
@XApiAnonymous
@XApiGet
public XSingleResult<GetSysUserViewOutput> getSysUserView(XContext context, GetSysUserViewInput input) {
SysUserViewMapper mapper = context.getBean(SysUserViewMapper.class);
SysUserView record = new SysUserView();
XCopyUtils.copyObject(input, record);
SysUserView view = mapper.selectOne(record);
if (view == null) {
return XSingleResult.error(context, XError.NotFound);
}
GetSysUserViewOutput output = new GetSysUserViewOutput();
XCopyUtils.copyObject(view, output);
return XSingleResult.success(output);
}
@XApiAnonymous
@XApiGet
public XPageResult<QuerySysUserViewOutput> querySysUserView(XContext context, QuerySysUserViewInput input) {
SysUserViewMapper mapper = context.getBean(SysUserViewMapper.class);
SysUserView record = new SysUserView();
XCopyUtils.copyObject(input, record);
PageHelper.startPage(input.getPage(), input.getLimit());
List<SysUserView> list = mapper.selectList(record);
PageInfo<SysUserView> pageInfo = new PageInfo<>(list);
List<QuerySysUserViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QuerySysUserViewOutput.class);
return XPageResult.success(outputs, input, pageInfo.getTotal());
}
@XText("根据组织机构id分页获取用户列表")
@XApiPost
public XPageResult<QuerySysUserViewOutput> getUserListByOuIdPage(XContext context, GetUserListByOuIdInput input) {
......@@ -432,145 +326,4 @@ public class SysUserService {
List<QuerySysUserViewOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QuerySysUserViewOutput.class);
return XPageResult.success(outputs, input, pageInfo.getTotal());
}
@XText("交易平台获取用户")
@XApiPost
public XListResult<QuerySysUserByTradeOutput> querySysUserByTrade(XContext context, QuerySysUserByTradeInput input) {
String userParam = input.getUserParam();
if (StringUtils.isBlank(userParam)) {
return XListResult.error(context, LoginError.Trade_ParamIsNull);
}
String userInfo;
try {
String privateKey = LoginConfig.rsaPrivateKey.findValue(context);
privateKey = XEncryptUtils.decrypt(privateKey);
userInfo = RSAUtil.RsaDecrypt(userParam, privateKey);
} catch (Exception e) {
context.getLogger().error("参数解密失败", e);
return XListResult.error(context, LoginError.Trade_ParamRSAError);
}
TradeUserInfo tradeUserInfo;
try {
tradeUserInfo = XJsonUtils.toObject(userInfo, TradeUserInfo.class);
if (!(tradeUserInfo != null && StringUtils.isNotBlank(tradeUserInfo.getUserName()))) {
return XListResult.error(context, LoginError.Trade_ParamFormatError);
}
} catch (Exception e) {
context.getLogger().error("参数格式有误", e);
return XListResult.error(context, LoginError.Trade_ParamFormatError);
}
SysUserViewMapper mapper = context.getBean(SysUserViewMapper.class);
SysUserView userView = new SysUserView();
userView.setUserName(tradeUserInfo.getUserName());
List<SysUserTradeView> userEntList = mapper.selectUserByTrade(userView);
List<QuerySysUserByTradeOutput> outputList = XCopyUtils.copyNewList(userEntList, QuerySysUserByTradeOutput.class);
return XListResult.success(outputList);
}
@XText("交易平台用户验证接口")
@XApiPost
public XSingleResult<CheckSysUserByTradeOutput> checkSysUserByTrade(XContext context, CheckSysUserByTradeInput input) {
String userParam = input.getUserParam();
if (StringUtils.isBlank(userParam)) {
return XSingleResult.error(context, LoginError.Trade_ParamIsNull);
}
String userInfo;
try {
String privateKey = LoginConfig.rsaPrivateKey.findValue(context);
privateKey = XEncryptUtils.decrypt(privateKey);
userInfo = RSAUtil.RsaDecrypt(userParam, privateKey);
} catch (Exception e) {
context.getLogger().error("参数解密失败", e);
return XSingleResult.error(context, LoginError.Trade_ParamRSAError);
}
TradeUserInfo tradeUserInfo;
try {
tradeUserInfo = XJsonUtils.toObject(userInfo, TradeUserInfo.class);
if (!(tradeUserInfo != null && StringUtils.isNotBlank(tradeUserInfo.getUserName()))) {
return XSingleResult.error(context, LoginError.Trade_ParamFormatError);
}
} catch (Exception e) {
context.getLogger().error("参数格式有误", e);
return XSingleResult.error(context, LoginError.Trade_ParamFormatError);
}
SysUserMapper mapper = context.getBean(SysUserMapper.class);
QueryWrapper<SysUserEnt> wrapper = new QueryWrapper();
wrapper.lambda().eq(SysUserEnt::getLoginName, tradeUserInfo.getUserName())
.eq(SysUserEnt::getIsTrade, 1);
SysUserEnt sysUserEnt = mapper.selectOne(wrapper);
CheckSysUserByTradeOutput out = new CheckSysUserByTradeOutput();
if (sysUserEnt == null) {
out.setExist(false);
out.setCanBeBind(false);
} else {
out.setExist(true);
if (sysUserEnt.getIsTrade() != null && sysUserEnt.getIsTrade() == 1) {
out.setCanBeBind(true);
} else {
out.setCanBeBind(false);
}
}
return XSingleResult.success(out);
}
@XText("根据用户ouIdList获取用户列表发送短信")
@XApiAnonymous
@XApiPost
public XListResult<GetSysUserOutput> querySysUserListByOuIds(XContext context, GetSysUserListByOuInput input) {
SysUserViewMapper mapper = context.getBean(SysUserViewMapper.class);
List<SysUserView> list;
if (input.getOuIds().size() > 0) {
list = mapper.getSysUserListByOuIds(input);
list.forEach(user -> {
String phone = user.getPhone();
if (StringUtils.isNotBlank(phone))
user.setPhone(UserInfoUtil.decrypt(phone));
});
List<GetSysUserOutput> outputList = XCopyUtils.copyNewList(list, GetSysUserOutput.class);
return XListResult.success(outputList);
}
return null;
}
@XText("根据用户ouId和userName获取用户列表发送短信")
@XApiAnonymous
@XApiPost
public XPageResult<QuerySysUserListByOuIdorNameOutput> getSysUserListByOuIdOrUserName(XContext context, QuerySysUserListByOuIdorNameInput input) {
SysUserViewMapper mapper = context.getBean(SysUserViewMapper.class);
GetSysUserListByOuInput record = new GetSysUserListByOuInput();
XCopyUtils.copyObject(input, record);
PageHelper.startPage(input.getPage(), input.getLimit());
List<SysUserView> list;
list = mapper.getSysUserListByOuIdOrUserName(record);
list.forEach(user -> {
String phone = user.getPhone();
if (StringUtils.isNotBlank(phone))
user.setPhone(UserInfoUtil.decrypt(phone));
});
PageInfo<SysUserView> pageInfo = new PageInfo<>(list);
List<QuerySysUserListByOuIdorNameOutput> outputs = XCopyUtils.copyNewList(pageInfo.getList(), QuerySysUserListByOuIdorNameOutput.class);
return XPageResult.success(outputs, input, pageInfo.getTotal());
}
/**
* 根据当前登录人,获取用户名 员工编号 邮箱 单位
*
* @param context
* @return
*/
@XApiAnonymous
@XApiGet
public XSingleResult<CurrentSysUserOutput> getSysUserByLoginUser(XContext context) {
XUser user = context.getUser();
String code = user.getCode();
SysUserViewMapper mapper = context.getBean(SysUserViewMapper.class);
CurrentSysUserView sysUserView = mapper.getSysUserAndOuByUserId(code);
CurrentSysUserOutput output = new CurrentSysUserOutput();
XCopyUtils.copyObject(sysUserView, output);
// output.setPhone(UserInfoUtil.desensitization(entity.getPhone()));
// output.setIdentifyNo(UserInfoUtil.desensitization(entity.getIdentifyNo()));
output.setEmail(UserInfoUtil.desensitization(output.getEmail()));
return XSingleResult.success(output);
}
}
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