diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/customer/pojo/result/CustomerResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/customer/pojo/result/CustomerResult.java new file mode 100644 index 0000000..770fece --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/customer/pojo/result/CustomerResult.java @@ -0,0 +1,91 @@ +package com.njzscloud.dispose.cst.customer.pojo.result; + +import com.njzscloud.dispose.cst.customer.constant.IdentityCategory; +import com.njzscloud.dispose.cst.customer.constant.SettlementWay; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 客户信息 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class CustomerResult { + + /** + * Id + */ + private Long id; + + /** + * 用户 Id;一个用户可以有多个身份 + */ + private Long userId; + + /** + * 头像 + */ + private String avatar; + + /** + * 身份类型;多个身份多条数据,PingTai-->平台、ChanFei-->产废方、QingYun-->清运方、XiaoNa-->消纳方、CaiGou-->采购方 + */ + private IdentityCategory identityCategory; + + /** + * 组织信息 Id;cst_org.id + */ + private Long orgId; + + /** + * 客户姓名 + */ + private String customerName; + + /** + * 客户联系电话 + */ + private String phone; + + /** + * 结算方式,YueJie-->月结、YuE-->余额、XianFu-->现付 + */ + private SettlementWay settlementWay; + + /** + * 是否管理员;是否为当前的组织管理员,0-->否、1-->是 + */ + private Boolean manager; + + /** + * 创建人 Id;sys_user.id + */ + private Long creatorId; + + /** + * 修改人 Id;sys_user.id + */ + private Long modifierId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 修改时间 + */ + private LocalDateTime modifyTime; + + /** + * 是否删除;0-->未删除、1-->已删除 + */ + private Boolean deleted; + +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/controller/DriverController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/controller/DriverController.java index c167372..c8ff61c 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/controller/DriverController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/controller/DriverController.java @@ -62,6 +62,14 @@ public class DriverController { return R.success(driverService.detail(id)); } + /** + * 通过userId获取司机详情 + */ + @GetMapping("/detailByUserId") + public R detailByUserId(@RequestParam("userId") Long userId) { + return R.success(driverService.detailByUserId(userId)); + } + /** * 分页查询 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/mapper/DriverMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/mapper/DriverMapper.java index 00d8da3..781a2ed 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/mapper/DriverMapper.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/mapper/DriverMapper.java @@ -20,4 +20,6 @@ public interface DriverMapper extends BaseMapper { DriverResult getById(Long id); + DriverResult getByUserId(Long userId); + } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/DriverService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/DriverService.java index c707bd1..b564139 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/DriverService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/DriverService.java @@ -25,6 +25,8 @@ public interface DriverService extends IService { DriverResult detail(Long id); + DriverResult detailByUserId(Long userId); + PageResult paging(PageParam pageParam, DriverQueryParam queryParam); String getCode(QRCodeParam codeParam); diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/impl/DriverServiceImpl.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/impl/DriverServiceImpl.java index d9608be..228ce5e 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/impl/DriverServiceImpl.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/driver/service/impl/DriverServiceImpl.java @@ -81,6 +81,11 @@ public class DriverServiceImpl extends ServiceImpl i return baseMapper.getById(id); } + @Override + public DriverResult detailByUserId(Long userId) { + return baseMapper.getByUserId(userId); + } + @Override public PageResult paging(PageParam pageParam, DriverQueryParam queryParam) { if (queryParam == null) { diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/constant/TransSortType.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/constant/TransSortType.java new file mode 100644 index 0000000..6180f44 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/constant/TransSortType.java @@ -0,0 +1,36 @@ +package com.njzscloud.dispose.cst.org.constant; + +import com.njzscloud.common.core.ienum.DictStr; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +/** + * 运输方排序类型 + */ +@Getter +@RequiredArgsConstructor +public enum TransSortType implements DictStr { + /** + * 按创建时间倒序 + */ + TIME("TIME", "按创建时间倒序"), + + /** + * 按清运数排序 + */ + CLEARANCE("CLEARANCE", "按清运数排序"), + + /** + * 按综合评价倒序 + */ + EVALUATE("EVALUATE", "按综合评价倒序"), + + /** + * 按距离正序 + */ + DISTANCE("DISTANCE", "按距离正序"), + ; + + private final String val; + private final String txt; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/controller/OrgController.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/controller/OrgController.java index 790a747..94bb8e9 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/controller/OrgController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/controller/OrgController.java @@ -96,4 +96,21 @@ public class OrgController { public R> paging(PageParam pageParam, OrgPagingParam orgPagingParam) { return R.success(orgService.paging(pageParam, orgPagingParam)); } + + /** + * 运输方分页查询 + * + * @param pageParam 分页参数 + * @param sortType 排序类型:TIME-按创建时间倒序、CLEARANCE-按清运数排序、EVALUATE-按综合评价倒序、DISTANCE-按距离正序 + * @param lng 经度(DISTANCE 排序时必传) + * @param lat 纬度(DISTANCE 排序时必传) + */ + @GetMapping("/transOrgPaging") + public R> transOrgPaging(PageParam pageParam, + @RequestParam(value = "sortType", required = false) String sortType, + @RequestParam(value = "lng", required = false) Double lng, + @RequestParam(value = "lat", required = false) Double lat) { + return R.success(orgService.transOrgPaging(pageParam, sortType, lng, lat)); + } + } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/mapper/OrgMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/mapper/OrgMapper.java index ee1815d..cda2ae5 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/mapper/OrgMapper.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/mapper/OrgMapper.java @@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity; +import com.njzscloud.dispose.cst.customer.pojo.result.CustomerResult; import com.njzscloud.dispose.cst.customer.pojo.result.SearchCustomerResult; import com.njzscloud.dispose.cst.org.pojo.entity.OrgEntity; import com.njzscloud.dispose.cst.org.pojo.result.OrgResult; +import com.njzscloud.dispose.cst.org.pojo.result.TransOrgStatistics; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -24,7 +26,14 @@ public interface OrgMapper extends BaseMapper { Page paging(Page page, @Param("ew") QueryWrapper ew); - List queryList(@Param("ew") QueryWrapper ew); + List queryList(@Param("ew") QueryWrapper ew); SearchCustomerResult getCustomer(@Param("customerId") Long customerId); + + /** + * 查询运输方统计信息 + * @param orgIds 组织ID列表 + * @return 统计信息列表 + */ + List queryTransOrgStatistics(@Param("orgIds") List orgIds); } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/param/OrgPagingParam.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/param/OrgPagingParam.java index 3a83c5b..4827a30 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/param/OrgPagingParam.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/param/OrgPagingParam.java @@ -1,5 +1,6 @@ package com.njzscloud.dispose.cst.org.pojo.param; +import com.njzscloud.dispose.cst.customer.constant.IdentityCategory; import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -14,4 +15,9 @@ public class OrgPagingParam { * 统一社会信用代码/组织名称/法人名称 */ private String keywords; + + /** + * 身份类型 + */ + private IdentityCategory identityCategory; } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/result/OrgResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/result/OrgResult.java index 0378489..c14989c 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/result/OrgResult.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/result/OrgResult.java @@ -1,12 +1,13 @@ package com.njzscloud.dispose.cst.org.pojo.result; -import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity; +import com.njzscloud.dispose.cst.customer.pojo.result.CustomerResult; import com.njzscloud.dispose.cst.org.constant.OrgCategory; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.experimental.Accessors; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @@ -170,6 +171,21 @@ public class OrgResult { /** * 客户信息 */ - private List customerList; + private List customerList; + + /** + * 平台订单排名 + */ + private Integer orderRank; + + /** + * 清运数排名 + */ + private Integer clearanceRank; + + /** + * 综合评价(0-5分,0.5精度) + */ + private BigDecimal overallScore; } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/result/TransOrgStatistics.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/result/TransOrgStatistics.java new file mode 100644 index 0000000..731963e --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/pojo/result/TransOrgStatistics.java @@ -0,0 +1,38 @@ +package com.njzscloud.dispose.cst.org.pojo.result; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * 运输方统计信息 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class TransOrgStatistics { + + /** + * 组织Id + */ + private Long orgId; + + /** + * 订单数量 + */ + private Integer orderCount; + + /** + * 清运数量 + */ + private Integer clearanceCount; + + /** + * 综合评分 + */ + private BigDecimal overallScore; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/service/OrgService.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/service/OrgService.java index 7905307..df70f21 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/service/OrgService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/org/service/OrgService.java @@ -10,21 +10,27 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.dispose.cst.customer.constant.IdentityCategory; import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity; +import com.njzscloud.dispose.cst.customer.pojo.result.CustomerResult; import com.njzscloud.dispose.cst.customer.pojo.result.SearchCustomerResult; import com.njzscloud.dispose.cst.org.constant.ApplyStatus; +import com.njzscloud.dispose.cst.org.constant.TransSortType; import com.njzscloud.dispose.cst.org.mapper.OrgMapper; import com.njzscloud.dispose.cst.org.pojo.entity.OrgApplyEntity; import com.njzscloud.dispose.cst.org.pojo.entity.OrgEntity; import com.njzscloud.dispose.cst.org.pojo.param.AddOrgParam; import com.njzscloud.dispose.cst.org.pojo.param.OrgPagingParam; import com.njzscloud.dispose.cst.org.pojo.result.OrgResult; +import com.njzscloud.dispose.cst.org.pojo.result.TransOrgStatistics; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.Objects; @@ -85,12 +91,14 @@ public class OrgService extends ServiceImpl implements ISe */ public PageResult paging(PageParam pageParam, OrgPagingParam orgPagingParam) { String keywords = orgPagingParam.getKeywords(); + IdentityCategory identityCategory = orgPagingParam.getIdentityCategory(); QueryWrapper ew = Wrappers.query() - .eq("deleted", Boolean.FALSE) + .eq("o.deleted", Boolean.FALSE) + .eq(identityCategory != null, "c.identity_category", identityCategory) .and(StrUtil.isNotBlank(keywords), it -> - it.like("uscc", keywords) - .or().like("org_name", keywords) - .or().like("legal_representative", keywords) + it.like("o.uscc", keywords) + .or().like("o.org_name", keywords) + .or().like("o.legal_representative", keywords) ); PageResult page = PageResult.of(baseMapper.paging(pageParam.toPage(), ew)); List records = page.getRecords(); @@ -101,16 +109,166 @@ public class OrgService extends ServiceImpl implements ISe .map(OrgResult::getId) .filter(Objects::nonNull) .toList(); - Map> orgMap = baseMapper.queryList(Wrappers.query() - .eq("deleted", Boolean.FALSE) - .eq("manager", Boolean.TRUE) - .in("org_id", orgIds)) + QueryWrapper customerEw = Wrappers.query() + .eq("cc.deleted", Boolean.FALSE) + .eq("cc.manager", Boolean.TRUE) + .in("cc.org_id", orgIds); + // 如果指定了身份类型,客户列表也需要过滤 + if (identityCategory != null) { + customerEw.eq("cc.identity_category", identityCategory); + } + Map> orgMap = baseMapper.queryList(customerEw) .stream() - .collect(Collectors.groupingBy(CustomerEntity::getOrgId)); + .collect(Collectors.groupingBy(CustomerResult::getOrgId)); records.forEach(org -> org.setCustomerList(orgMap.get(org.getId()))); return page; } + /** + * 运输方分页查询 + * + * @param pageParam 分页参数 + * @param sortType 排序类型:time-按创建时间倒序、clearance-按清运数排序、evaluate-按综合评价倒序、distance-按距离正序 + * @param lng 经度(sortType=distance时必传) + * @param lat 纬度(sortType=distance时必传) + */ + public PageResult transOrgPaging(PageParam pageParam, String sortType, Double lng, Double lat) { + // 默认按创建时间倒序 + if (StrUtil.isBlank(sortType)) { + sortType = TransSortType.TIME.getVal(); + } + QueryWrapper ew = Wrappers.query() + .eq("o.deleted", Boolean.FALSE) + .eq("c.identity_category", IdentityCategory.YunShu); + // 根据排序类型添加排序条件 + if (TransSortType.TIME.getVal().equals(sortType)) { + ew.orderByDesc("o.create_time"); + } + PageResult page = PageResult.of(baseMapper.paging(pageParam.toPage(), ew)); + List records = page.getRecords(); + if (records.isEmpty()) { + return page; + } + List orgIds = records.stream() + .map(OrgResult::getId) + .filter(Objects::nonNull) + .toList(); + QueryWrapper customerEw = Wrappers.query() + .eq("cc.deleted", Boolean.FALSE) + .eq("cc.manager", Boolean.TRUE) + .in("cc.org_id", orgIds); + customerEw.eq("cc.identity_category", IdentityCategory.YunShu); + Map> orgMap = baseMapper.queryList(customerEw) + .stream() + .collect(Collectors.groupingBy(CustomerResult::getOrgId)); + records.forEach(org -> org.setCustomerList(orgMap.get(org.getId()))); + // 查询统计数据并计算排名 + setTransOrgStatistics(records, orgIds); + // 根据排序类型进行排序 + sortRecords(records, sortType, lng, lat); + return page; + } + + /** + * 根据排序类型对记录进行排序 + */ + private void sortRecords(List records, String sortType, Double userLng, Double userLat) { + if (TransSortType.CLEARANCE.getVal().equals(sortType)) { + // 按清运数排序(降序) + records.sort((a, b) -> { + Integer clearanceA = b.getClearanceRank() != null ? b.getClearanceRank() : 0; + Integer clearanceB = a.getClearanceRank() != null ? a.getClearanceRank() : 0; + return clearanceA.compareTo(clearanceB); + }); + } else if (TransSortType.EVALUATE.getVal().equals(sortType)) { + // 按综合评价倒序 + records.sort((a, b) -> { + BigDecimal scoreA = b.getOverallScore() != null ? b.getOverallScore() : BigDecimal.ZERO; + BigDecimal scoreB = a.getOverallScore() != null ? a.getOverallScore() : BigDecimal.ZERO; + return scoreA.compareTo(scoreB); + }); + } else if (TransSortType.DISTANCE.getVal().equals(sortType) && userLng != null && userLat != null) { + // 按距离正序(计算直线距离) + records.sort((a, b) -> { + Double distanceA = calculateDistance(userLng, userLat, + a.getLng() != null ? a.getLng() : 0.0, + a.getLat() != null ? a.getLat() : 0.0); + Double distanceB = calculateDistance(userLng, userLat, + b.getLng() != null ? b.getLng() : 0.0, + b.getLat() != null ? b.getLat() : 0.0); + return distanceA.compareTo(distanceB); + }); + } + // time 排序已在 SQL 中处理,无需额外排序 + } + + /** + * 计算两个经纬度之间的直线距离(单位:公里) + * 使用 Haversine 公式 + */ + private double calculateDistance(double lng1, double lat1, double lng2, double lat2) { + final double R = 6371; // 地球半径(公里) + double latDistance = Math.toRadians(lat2 - lat1); + double lngDistance = Math.toRadians(lng2 - lng1); + double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) + + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) + * Math.sin(lngDistance / 2) * Math.sin(lngDistance / 2); + double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return Math.round(R * c * 1000) / 1000.0; // 返回公里,保留3位小数 + } + + /** + * 设置运输方统计数据和排名 + */ + private void setTransOrgStatistics(List records, List orgIds) { + // 查询所有运输方的统计数据 + List statisticsList = baseMapper.queryTransOrgStatistics(orgIds); + if (statisticsList.isEmpty()) { + return; + } + Map statisticsMap = statisticsList.stream() + .collect(Collectors.toMap(TransOrgStatistics::getOrgId, s -> s, (a, b) -> a)); + // 计算订单数量排名(降序,数量多的排名靠前) + List orderRankedList = statisticsList.stream() + .sorted(Comparator.comparingInt((TransOrgStatistics s) -> s.getOrderCount() == null ? 0 : s.getOrderCount()).reversed()) + .toList(); + Map orderRankMap = new java.util.HashMap<>(); + int orderRank = 1; + Integer prevOrderCount = null; + for (TransOrgStatistics stat : orderRankedList) { + Integer count = stat.getOrderCount() == null ? 0 : stat.getOrderCount(); + if (prevOrderCount != null && !count.equals(prevOrderCount)) { + orderRank = orderRankMap.size() + 1; + } + orderRankMap.put(stat.getOrgId(), orderRank); + prevOrderCount = count; + } + // 计算清运数量排名(降序,数量多的排名靠前) + List clearanceRankedList = statisticsList.stream() + .sorted(Comparator.comparingInt((TransOrgStatistics s) -> s.getClearanceCount() == null ? 0 : s.getClearanceCount()).reversed()) + .toList(); + Map clearanceRankMap = new java.util.HashMap<>(); + int clearanceRank = 1; + Integer prevClearanceCount = null; + for (TransOrgStatistics stat : clearanceRankedList) { + Integer count = stat.getClearanceCount() == null ? 0 : stat.getClearanceCount(); + if (prevClearanceCount != null && !count.equals(prevClearanceCount)) { + clearanceRank = clearanceRankMap.size() + 1; + } + clearanceRankMap.put(stat.getOrgId(), clearanceRank); + prevClearanceCount = count; + } + // 设置到OrgResult中 + records.forEach(org -> { + TransOrgStatistics stat = statisticsMap.get(org.getId()); + if (stat != null) { + org.setOrderRank(orderRankMap.get(org.getId())); + org.setClearanceRank(clearanceRankMap.get(org.getId())); + org.setOverallScore(stat.getOverallScore()); + } + }); + } + @Transactional(rollbackFor = Exception.class) public void apply(Long customerId, Long orgId) { SearchCustomerResult customerResult = baseMapper.getCustomer(customerId); diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/pojo/result/ProjectResult.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/pojo/result/ProjectResult.java index b0d0f4d..ce9348b 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/pojo/result/ProjectResult.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/pojo/result/ProjectResult.java @@ -51,11 +51,6 @@ public class ProjectResult { */ private Long transOrgId; - /** - * 运输方组织名称 - */ - private String transOrgName; - /** * 运输方组织信息 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/service/impl/ProjectServiceImpl.java b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/service/impl/ProjectServiceImpl.java index df40003..432c997 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/service/impl/ProjectServiceImpl.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/dispose/cst/project/service/impl/ProjectServiceImpl.java @@ -8,8 +8,11 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.common.security.util.SecurityUtil; +import com.njzscloud.dispose.cst.customer.constant.IdentityCategory; import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity; import com.njzscloud.dispose.cst.customer.service.CustomerService; import com.njzscloud.dispose.cst.org.pojo.entity.OrgEntity; @@ -19,6 +22,7 @@ import com.njzscloud.dispose.cst.project.pojo.entity.ProjectEntity; import com.njzscloud.dispose.cst.project.pojo.param.ProjectQueryParam; import com.njzscloud.dispose.cst.project.pojo.result.ProjectResult; import com.njzscloud.dispose.cst.project.service.ProjectService; +import com.njzscloud.dispose.sys.auth.pojo.result.MyResult; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -82,6 +86,25 @@ public class ProjectServiceImpl extends ServiceImpl page = pageParam.toPage(); page.addOrder(OrderItem.desc("p.create_time")); + // 管理员查看全部,非管理员按身份过滤 + if (!SecurityUtil.isAdmin()) { + MyResult userDetail = SecurityUtil.loginUser(); + Long currentCustomerId = userDetail.getCurrentCustomerId(); + if (currentCustomerId != null) { + CustomerEntity customer = customerService.getById(currentCustomerId); + if (customer != null && customer.getIdentityCategory() != null) { + ew.eq(IdentityCategory.ChanFei.equals(customer.getIdentityCategory()) + || IdentityCategory.CaiGou.equals(customer.getIdentityCategory()), + "p.fringe_customer_id", currentCustomerId); + ew.eq(IdentityCategory.YunShu.equals(customer.getIdentityCategory()), + "p.trans_customer_id", currentCustomerId); + } else { + throw Exceptions.clierr("客户信息或客户身份类型不存在"); + } + } else { + throw Exceptions.clierr("当前登录人无客户信息"); + } + } Page paging = baseMapper.paging(page, ew); if (CollUtil.isNotEmpty(paging.getRecords())) { diff --git a/njzscloud-svr/src/main/resources/mapper/cst/driver/DriverMapper.xml b/njzscloud-svr/src/main/resources/mapper/cst/driver/DriverMapper.xml index 5f833f4..1fa621b 100644 --- a/njzscloud-svr/src/main/resources/mapper/cst/driver/DriverMapper.xml +++ b/njzscloud-svr/src/main/resources/mapper/cst/driver/DriverMapper.xml @@ -36,6 +36,14 @@ WHERE cd.id = #{id} + + SELECT - id, - org_category, - uscc, - org_name, - business_license, - license_start_time, - license_end_time, - legal_representative, - idcard, - idcard_start_time, - idcard_end_time, - idcard_front, - idcard_back, - province, - city, - area, - town, - province_name, - city_name, - area_name, - town_name, - address, - lng, - lat, - creator_id, - modifier_id, - create_time, - modify_time, - deleted - FROM cst_org + o.id, + o.org_category, + o.uscc, + o.org_name, + o.business_license, + o.license_start_time, + o.license_end_time, + o.legal_representative, + o.idcard, + o.idcard_start_time, + o.idcard_end_time, + o.idcard_front, + o.idcard_back, + o.province, + o.city, + o.area, + o.town, + o.province_name, + o.city_name, + o.area_name, + o.town_name, + o.address, + o.lng, + o.lat, + o.creator_id, + o.modifier_id, + o.create_time, + o.modify_time, + o.deleted + FROM cst_org o + LEFT JOIN cst_customer c ON o.id = c.org_id AND c.deleted = 0 AND c.manager = 1 ${ew.customSqlSegment} @@ -58,27 +61,71 @@ + + + +