单点登录修改
This commit is contained in:
+86
-7
@@ -1,12 +1,22 @@
|
||||
package com.mhd.user.application.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.mhd.common.security.utils.SecurityUtils;
|
||||
import com.mhd.user.domain.userAggregate.entity.AgreementDetails;
|
||||
import com.mhd.user.domain.userAggregate.entity.UserShipperEntity;
|
||||
import com.mhd.user.domain.userAggregate.repository.mapper.AgreementDetailsMapper;
|
||||
import com.mhd.user.domain.userAggregate.repository.mapper.UserShipperMapper;
|
||||
import com.mhd.user.domain.userAggregate.repository.po.AgreementDetailsPo;
|
||||
import com.mhd.system.api.model.LoginUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -19,18 +29,87 @@ public class AgreementDetailsApplicationService {
|
||||
@Resource
|
||||
private AgreementDetailsMapper agreementDetailsMapper;
|
||||
|
||||
@Resource
|
||||
private UserShipperMapper userShipperMapper;
|
||||
|
||||
/**
|
||||
* 根据货主ID查询所有协议明细
|
||||
* 根据货主ID查询当前登录用户组织下的协议明细
|
||||
* 从user_shipper表的orgCode字段解析JSON,匹配当前登录用户组织code,
|
||||
* 返回该组织下的agreedaydatas列表
|
||||
*
|
||||
* @param shipperId 货主ID
|
||||
* @return 协议明细列表
|
||||
*/
|
||||
public List<AgreementDetails> listByShipperId(Long shipperId) {
|
||||
return agreementDetailsMapper.selectList(
|
||||
new LambdaQueryWrapper<AgreementDetails>()
|
||||
.eq(AgreementDetails::getShipperId, shipperId)
|
||||
.orderByDesc(AgreementDetails::getCreateTime)
|
||||
);
|
||||
public List<AgreementDetailsPo> listByShipperId(Long shipperId) {
|
||||
// 1. 获取当前登录用户组织ID
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (ObjectUtil.isNull(loginUser) || ObjectUtil.isNull(loginUser.getUserPo())) {
|
||||
log.warn("未获取到登录用户信息");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Long organizationId = loginUser.getUserPo().getOrganizationId();
|
||||
if (ObjectUtil.isNull(organizationId)) {
|
||||
log.warn("当前登录用户无组织信息");
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 2. 根据shipperId查询货主信息,获取orgCode字段
|
||||
UserShipperEntity shipperEntity = userShipperMapper.selectById(shipperId);
|
||||
if (ObjectUtil.isNull(shipperEntity)) {
|
||||
log.warn("未找到货主信息,shipperId={}", shipperId);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
String orgCodeJson = shipperEntity.getOrgCode();
|
||||
if (ObjectUtil.isNull(orgCodeJson) || orgCodeJson.isEmpty()) {
|
||||
log.warn("货主orgCode为空,shipperId={}", shipperId);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 3. 解析orgCode JSON数组,匹配当前登录用户组织code
|
||||
JSONArray orgCodeArray = JSONArray.parseArray(orgCodeJson);
|
||||
if (orgCodeArray == null || orgCodeArray.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
JSONObject matchedOrg = null;
|
||||
for (int i = 0; i < orgCodeArray.size(); i++) {
|
||||
JSONObject orgItem = orgCodeArray.getJSONObject(i);
|
||||
Long code = orgItem.getLong("code");
|
||||
if (organizationId.equals(code)) {
|
||||
matchedOrg = orgItem;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (matchedOrg == null) {
|
||||
log.info("未匹配到当前组织的协议信息,shipperId={},organizationId={}", shipperId, organizationId);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 4. 获取匹配组织的agreedaydatas
|
||||
JSONArray agreedaydatas = matchedOrg.getJSONArray("agreedaydatas");
|
||||
if (agreedaydatas == null || agreedaydatas.isEmpty()) {
|
||||
log.info("当前组织下无协议天数数据,shipperId={},organizationId={}", shipperId, organizationId);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// 5. 转换为AgreementDetailsPo列表
|
||||
List<AgreementDetailsPo> result = new ArrayList<>();
|
||||
for (int i = 0; i < agreedaydatas.size(); i++) {
|
||||
JSONObject item = agreedaydatas.getJSONObject(i);
|
||||
AgreementDetailsPo po = new AgreementDetailsPo();
|
||||
po.setCode(item.getString("code"));
|
||||
po.setOrgcode(item.getString("orgcode"));
|
||||
po.setPtypename(item.getString("ptypename"));
|
||||
po.setPtype(item.getString("ptype"));
|
||||
po.setPcode(item.getString("pcode"));
|
||||
po.setPname(item.getString("pname"));
|
||||
po.setPday(item.getString("pday"));
|
||||
result.add(po);
|
||||
}
|
||||
|
||||
log.info("查询协议明细成功,shipperId={},organizationId={},共{}条", shipperId, organizationId, result.size());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user