From 7cf1eb27ecbd23ddc1d0e8080c9637aa6f2a2bf9 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 25 六月 2025 08:45:38 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java | 156 +++++++++++++++++++++++++++++++--------------------
1 files changed, 94 insertions(+), 62 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index 7bc42c1..c31e936 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -1,9 +1,6 @@
package com.ruoyi.order.service.impl;
-import cn.hutool.db.DaoTemplate;
import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONArray;
-import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -12,18 +9,17 @@
import com.ruoyi.account.api.feignClient.AppUserIntegralChangeClient;
import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.account.api.model.TAppUserCar;
-import com.ruoyi.account.api.feignClient.AppUserClient;
-import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.account.api.model.TAppUserIntegralChange;
+import com.ruoyi.chargingPile.api.domain.SiteMenu;
+import com.ruoyi.chargingPile.api.feignClient.PartnerClient;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.model.Site;
-import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.utils.HttpUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TOrderEvaluate;
import com.ruoyi.order.api.model.TOrderEvaluateTag;
@@ -41,24 +37,21 @@
import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.domain.TIntegralRule;
import com.ruoyi.other.api.domain.TVip;
-import com.ruoyi.other.api.feignClient.IntegralRuleClient;
-import com.ruoyi.other.api.feignClient.TEvaluationTagClient;
-import com.ruoyi.other.api.feignClient.VipClient;
+import com.ruoyi.other.api.feignClient.*;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.ruoyi.system.api.feignClient.SysUserRoleClient;
+import com.ruoyi.system.api.model.SysUserRoleVo;
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import javax.annotation.Resource;
import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -101,6 +94,21 @@
@Resource
private VipClient vipClient;
+ @Resource
+ private SysUserClient sysUserClient;
+
+ @Resource
+ private PartnerClient partnerService;
+
+ @Resource
+ private UserSiteClient userSiteClient;
+
+ @Resource
+ private RoleSiteClient roleSiteClient;
+
+ @Resource
+ private SysUserRoleClient sysUserRoleClient;
+
@@ -116,10 +124,20 @@
@Resource
private TOrderEvaluateMapper orderEvaluateMapper;
@Override
- public List<TEvaluationTagVO> getTagCount() {
+ public List<TEvaluationTagVO> getTagCount(Integer siteId) {
// 查询标签列表
R<List<TEvaluationTagVO>> r = evaluationTagClient.getList();
List<TEvaluationTagVO> tagList = r.getData();
+ // 查询站点下的所有订单
+ List<TChargingOrder> tChargingOrders = chargingOrderMapper.selectList(Wrappers.lambdaQuery(TChargingOrder.class)
+ .eq(TChargingOrder::getSiteId, siteId));
+ if(CollectionUtils.isEmpty(tChargingOrders)){
+ tagList.forEach(e->e.setTagCount(0));
+ packageTagCount(0L,"有图",2,tagList);
+ packageTagCount(0L,"好评",3,tagList);
+ packageTagCount(0L,"中差评",4,tagList);
+ return tagList;
+ }
List<Integer> tagIds = tagList.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
// 统计标签使用数量
List<TEvaluationTagVO> counts = orderEvaluateTagMapper.getCountByTagIds(tagIds);
@@ -129,8 +147,6 @@
counts.forEach(count -> {
if (tag.getId().equals(count.getId())) {
tag.setTagCount(count.getTagCount());
- }else{
- tag.setTagCount(0);
}
});
}else{
@@ -141,7 +157,8 @@
tagList = tagList.stream().sorted(Comparator.comparing(TEvaluationTagVO::getTagCount).reversed()).collect(Collectors.toList());
// 统计有图,好评,中差评数量
long imgUrlCount = this.count(Wrappers.lambdaQuery(TOrderEvaluate.class)
- .and(e->e.isNotNull(TOrderEvaluate::getImgUrl)).or().ne(TOrderEvaluate::getImgUrl,""));
+ .isNotNull(TOrderEvaluate::getImgUrl)
+ .ne(TOrderEvaluate::getImgUrl,""));
packageTagCount(imgUrlCount,"有图",2,tagList);
long goodCount = this.count(Wrappers.lambdaQuery(TOrderEvaluate.class)
.ge(TOrderEvaluate::getMark,4));
@@ -174,9 +191,11 @@
orderEvaluateVO.setName(appUser.getName());
orderEvaluateVO.setAvatar(appUser.getAvatar());
}
- TAppUserCar appUserCar = appUserCars.stream().filter(car -> car.getId().equals(Long.parseLong(String.valueOf(orderEvaluateVO.getAppUserCarId())))).findFirst().orElse(null);
- if(Objects.nonNull(appUserCar)){
- orderEvaluateVO.setCarName(appUserCar.getVehicleBrand());
+ if(Objects.nonNull(orderEvaluateVO.getAppUserCarId())){
+ TAppUserCar appUserCar = appUserCars.stream().filter(car -> car.getId().equals(Long.parseLong(String.valueOf(orderEvaluateVO.getAppUserCarId())))).findFirst().orElse(null);
+ if(Objects.nonNull(appUserCar)){
+ orderEvaluateVO.setCarName(appUserCar.getVehicleBrand());
+ }
}
});
pageInfo.setRecords(list);
@@ -235,8 +254,9 @@
tagList.add(evaluationTagVO);
}
}
-
-
+
+ @Resource
+ private PartnerClient partnerClient;
/**
* 获取充电评价列表
* @param pageList
@@ -250,7 +270,29 @@
List<TEvaluationTagVO> data = evaluationTagClient.getTagList(pageList.getEvaluateType()).getData();
evaluationTagIds = data.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
}
- List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, pageInfo);
+
+ //校验合作商权限
+ List<Integer> siteIds = new ArrayList<>();
+ SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+ Integer roleType = sysUser.getRoleType();
+ Integer objectId = sysUser.getObjectId();
+ if(null == pageList.getSiteId() || 0 == pageList.getSiteId()){
+ //合作商
+ if(roleType == 2){
+ Set<Integer> data = partnerService.authSite(objectId, SiteMenu.CHARGE_EVALUATION.getValue()).getData();
+ siteIds = new ArrayList<>(data);
+ }else{
+ //非管理员需要根据角色和用户配置查询允许的站点数据
+ if(!SecurityUtils.isAdmin(tokenService.getLoginUser().getUserid())){
+ List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
+ List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
+ List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
+ data.addAll(data1);
+ siteIds = data;
+ }
+ }
+ }
+ List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, siteIds, pageInfo);
for (GetOrderEvaluatePageListDTO dto : list) {
TAppUser appUser = appUserClient.getUserById(dto.getAppUserId()).getData();
if(null != appUser){
@@ -258,8 +300,11 @@
String phone = appUser.getPhone();
dto.setPhone(phone.substring(0, 3) + "****" + phone.substring(6));
}
- Site site = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData().get(0);
- dto.setSiteName(site.getName());
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData();
+ if(null != data1 && data1.size() > 0){
+ Site site = data1.get(0);
+ dto.setSiteName(site.getName());
+ }
List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, dto.getId()));
List<Integer> tagIds = tOrderEvaluateTags.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList());
if(tagIds.size() > 0){
@@ -267,6 +312,8 @@
List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList());
dto.setTags(collect);
}
+ dto.setAuthReply(roleType == 1 ? true : partnerService.authMenu(objectId, dto.getSiteId(), SiteMenu.CHARGE_EVALUATION_ANSWER.getValue()));
+ dto.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, dto.getSiteId(), SiteMenu.CHARGE_EVALUATION_DEL.getValue()));
}
return pageInfo.setRecords(list);
}
@@ -278,7 +325,6 @@
* @return
*/
@Override
- @GlobalTransactional(rollbackFor = Exception.class)//分布式事务
public AjaxResult addOrderEvaluate(OrderEvaluateVo query) {
TOrderEvaluate orderEvaluate = this.getOne(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderId, query.getOrderId())
.eq(TOrderEvaluate::getOrderType, query.getOrderType()).eq(TOrderEvaluate::getDelFlag, 0));
@@ -298,42 +344,22 @@
//检测敏感词
String content = orderEvaluate.getContent();
if(StringUtils.isNotEmpty(content)){
- String token = appUserClient.getWXToken().getData();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("content", content);
- jsonObject.put("version", 2);
- jsonObject.put("scene", 2);
- jsonObject.put("openid", appUser.getWxOpenid());
- String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + token, jsonObject.toString());
- JSONObject object = JSONObject.parseObject(post);
- Integer errcode = object.getInteger("errcode");
- if(0 != errcode){
- throw new RuntimeException(object.getString("errmsg"));
- }
- JSONArray detail = object.getJSONArray("detail");
- for (int i = 0; i < detail.size(); i++) {
- JSONObject jsonObject1 = detail.getJSONObject(i);
- Integer errcode1 = jsonObject1.getInteger("errcode");
- if(0 == errcode1){
- String suggest = jsonObject1.getString("suggest");
- Integer label = jsonObject1.getInteger("label");
- String keyword = jsonObject1.getString("keyword");
- Integer prob = jsonObject1.getInteger("prob");
- if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
- return AjaxResult.error("评价包含违规内容,请重新评价!");
- }
- }
+ Boolean data = appUserClient.sensitiveWordDetection(content, appUser.getWxOpenid()).getData();
+ if(data){
+ return AjaxResult.error("评价包含违规内容,请重新评价!");
}
}
orderEvaluate.setContent(content);
this.save(orderEvaluate);
List<Integer> tagIds = query.getTagIds();
- for (Integer tagId : tagIds) {
- TOrderEvaluateTag orderEvaluateTag = new TOrderEvaluateTag();
- orderEvaluateTag.setOrderEvaluateId(orderEvaluate.getId());
- orderEvaluateTag.setEvaluationTagId(tagId);
- orderEvaluateTagMapper.insert(orderEvaluateTag);
+ if(null != tagIds){
+ for (Integer tagId : tagIds) {
+ TOrderEvaluateTag orderEvaluateTag = new TOrderEvaluateTag();
+ orderEvaluateTag.setOrderEvaluateId(orderEvaluate.getId());
+ orderEvaluateTag.setEvaluationTagId(tagId);
+ orderEvaluateTagMapper.insert(orderEvaluateTag);
+ }
}
//判断发放积分 文字+图片+5星好评
@@ -382,13 +408,19 @@
public OrderEvaluateVo getOrderEvaluate(String orderId, Integer orderType) {
TOrderEvaluate orderEvaluate = this.getOne(new LambdaQueryWrapper<TOrderEvaluate>().eq(TOrderEvaluate::getOrderId, orderId).eq(TOrderEvaluate::getOrderType, orderType));
if(null != orderEvaluate){
+ Long userId = tokenService.getLoginUserApplet().getUserId();
+ if(!orderEvaluate.getAppUserId().equals(userId)){
+ throw new RuntimeException("权限不足");
+ }
OrderEvaluateVo orderEvaluateVo = new OrderEvaluateVo();
BeanUtils.copyProperties(orderEvaluate, orderEvaluateVo);
List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, orderEvaluate.getId()));
List<Integer> tagId = tOrderEvaluateTags.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList());
- List<TEvaluationTag> data = evaluationTagClient.getListByIds(tagId).getData();
- List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList());
- orderEvaluateVo.setTagName(collect);
+ if(tagId.size() > 0){
+ List<TEvaluationTag> data = evaluationTagClient.getListByIds(tagId).getData();
+ List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList());
+ orderEvaluateVo.setTagName(collect);
+ }
return orderEvaluateVo;
}
return null;
--
Gitblit v1.7.1