Prechádzať zdrojové kódy

Merge branch 'user_comment'

# Conflicts:
#	netflix-service/src/main/java/com/cyksj/redis/RedisService.java
zoujiajian 3 rokov pred
rodič
commit
ab35bf1527
18 zmenil súbory, kde vykonal 568 pridanie a 2 odobranie
  1. 17 0
      netflix-dao/src/main/java/com/cyksj/mapper/OrderCommentRewardConfigMapper.java
  2. 20 0
      netflix-dao/src/main/java/com/cyksj/model/dto/OrderCommentRewardDto.java
  3. 26 0
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderComment.java
  4. 20 0
      netflix-dao/src/main/java/com/cyksj/model/entity/OrderCommentRewardConfig.java
  5. 3 0
      netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonView.java
  6. 48 0
      netflix-dao/src/main/java/com/cyksj/model/request/OrderCommentReq.java
  7. 14 1
      netflix-dao/src/main/java/com/cyksj/model/views/OrderCommentFrontView.java
  8. 28 0
      netflix-dao/src/main/java/com/cyksj/model/views/OrderCommentRewardConfigView.java
  9. 16 0
      netflix-dao/src/main/java/com/cyksj/model/views/OrderCommentView.java
  10. 41 0
      netflix-dao/src/main/java/com/cyksj/model/views/OrderDonUserCommentView.java
  11. 15 0
      netflix-dao/src/main/resources/mapper/OrderCommentRewardConfigMapper.xml
  12. 1 0
      netflix-service/src/main/java/com/cyksj/redis/RedisService.java
  13. 13 0
      netflix-service/src/main/java/com/cyksj/service/order/OrderCommentFrontService.java
  14. 18 0
      netflix-service/src/main/java/com/cyksj/service/order/OrderDonCommentService.java
  15. 91 0
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderCommentFrontServiceImpl.java
  16. 94 0
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonCommentServiceImpl.java
  17. 38 1
      netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java
  18. 65 0
      netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderCommentFrontController.java

+ 17 - 0
netflix-dao/src/main/java/com/cyksj/mapper/OrderCommentRewardConfigMapper.java

@@ -0,0 +1,17 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.OrderCommentRewardConfig;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentRewardConfigMapper
+ *创建者: JavaZou
+ *创建时间:2023/7/28 15:10
+ */
+public interface OrderCommentRewardConfigMapper extends BaseMapper<OrderCommentRewardConfig> {
+	void batchInsertConfigs(@Param("configs") List<OrderCommentRewardConfig> configs);
+}

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/OrderCommentRewardDto.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentRewardDto
+ *创建者: JavaZou
+ *创建时间:2023/7/28 14:46
+ */
+@Getter
+@Setter
+public class OrderCommentRewardDto {
+	private Long goodsId;
+
+	private BigDecimal balance;
+}

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderComment.java

@@ -6,6 +6,7 @@ import lombok.Setter;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 
 /*
  *项目名: netflix
@@ -31,6 +32,8 @@ public class OrderComment extends BaseEntity{
 
 	private Long orderId;
 
+	private String title;
+
 	@NotEmpty(message = "评论为空")
 	private String content;
 
@@ -43,5 +46,28 @@ public class OrderComment extends BaseEntity{
 
 	private Integer score;
 
+	private String tvType;
+
+	private String boxType;
+
+	private String routeType;
+
 	private String commentTime;
+
+	private VerifyStatus verifyStatus;
+
+	private BigDecimal balance;
+
+	@Getter
+	public enum VerifyStatus {
+		verifying("审核中"),
+		fail("审核失败"),
+		success("审核成功"),
+		;
+		String desc;
+
+		VerifyStatus(String desc) {
+			this.desc = desc;
+		}
+	}
 }

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderCommentRewardConfig.java

@@ -0,0 +1,20 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentRewardConfig
+ *创建者: JavaZou
+ *创建时间:2023/7/28 15:08
+ */
+@Getter
+@Setter
+public class OrderCommentRewardConfig extends BaseEntity{
+	private Long goodsId;
+
+	private BigDecimal balance;
+}

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonView.java

@@ -60,6 +60,9 @@ public class OrderDonView {
     @JsonIgnore
     private String benefitsList;
 
+    @DbField("sku.id")
+    private Long skuId;
+
     @DbField("sku.spec_val")
     private String specVal;
 

+ 48 - 0
netflix-dao/src/main/java/com/cyksj/model/request/OrderCommentReq.java

@@ -0,0 +1,48 @@
+package com.cyksj.model.request;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentReq
+ *创建者: JavaZou
+ *创建时间:2023/7/28 13:43
+ */
+@Getter
+@Setter
+public class OrderCommentReq {
+	private Long orderId;
+
+	private Long userId;
+
+	private List<Long> userIds;
+
+	private Integer score;
+
+	@NotEmpty(message = "标题为空")
+	private String title;
+
+	@NotEmpty(message = "评论内容为空")
+	private String content;
+
+	private String picture;
+
+	/**
+	 * 电视机型号
+	 */
+	private String tvType;
+
+	/**
+	 * 路由器型号
+	 */
+	private String routeType;
+
+	/**
+	 * 机顶盒型号
+	 */
+	private String boxType;
+}

+ 14 - 1
netflix-dao/src/main/java/com/cyksj/model/views/OrderCommentFrontView.java

@@ -15,7 +15,8 @@ import lombok.Setter;
 @Getter
 @Setter
 @SearchBean(tables = "order_comment oc left join goods_don g on g.id = oc.goods_id" +
-		" left join goods_don_sku sku on sku.id = oc.sku_id")
+		" left join goods_don_sku sku on sku.id = oc.sku_id",
+		where = "oc.verify_status = 'success'")
 public class OrderCommentFrontView {
 	@JsonIgnore
 	@DbField("oc.id")
@@ -58,4 +59,16 @@ public class OrderCommentFrontView {
 
 	@DbField("oc.comment_time")
 	private String commentTime;
+
+	@DbField("oc.title")
+	private String commentTitle;
+
+	@DbField("oc.tv_type")
+	private String tvType;
+
+	@DbField("oc.box_type")
+	private String boxType;
+
+	@DbField("oc.route_type")
+	private String routeType;
 }

+ 28 - 0
netflix-dao/src/main/java/com/cyksj/model/views/OrderCommentRewardConfigView.java

@@ -0,0 +1,28 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentRewardConfigView
+ *创建者: JavaZou
+ *创建时间:2023/7/28 15:19
+ */
+@Getter
+@Setter
+@SearchBean(tables = "order_comment_reward_config oc left join goods_don g on g.id = oc.goods_id")
+public class OrderCommentRewardConfigView {
+	@DbField("oc.goods_id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("oc.balance")
+	private BigDecimal balance;
+}

+ 16 - 0
netflix-dao/src/main/java/com/cyksj/model/views/OrderCommentView.java

@@ -1,5 +1,6 @@
 package com.cyksj.model.views;
 
+import com.cyksj.model.entity.OrderComment;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Getter;
@@ -65,4 +66,19 @@ public class OrderCommentView {
 
 	@DbField("oc.created_time")
 	private Date createdTime;
+
+	@DbField("oc.verify_status")
+	private OrderComment.VerifyStatus verifyStatus;
+
+	@DbField("oc.tv_type")
+	private String tvType;
+
+	@DbField("oc.box_type")
+	private String boxType;
+
+	@DbField("oc.route_type")
+	private String routeType;
+
+	@DbField("oc.title")
+	private String commentTitle;
 }

+ 41 - 0
netflix-dao/src/main/java/com/cyksj/model/views/OrderDonUserCommentView.java

@@ -0,0 +1,41 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: OrderDonUserCommentView
+ *创建者: JavaZou
+ *创建时间:2023/7/28 14:05
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select id,user_id,goods_id,sku_id from order_don where status not in ('close','noPayment','refund') :condition:) o" +
+		" left join goods_don g on g.id = o.goods_id" +
+		" left join goods_don_sku sku on sku.id = o.sku_id" +
+		" left join order_comment oc on oc.order_id = o.id",
+		where = "oc.id is null")
+public class OrderDonUserCommentView {
+	@DbField("o.id")
+	private Long orderId;
+
+	@DbField("o.user_id")
+	private Long userId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("sku.picture")
+	private String picture;
+
+	@DbField("g.type")
+	@JsonIgnore
+	private Integer goodsType;
+}

+ 15 - 0
netflix-dao/src/main/resources/mapper/OrderCommentRewardConfigMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.cyksj.mapper.OrderCommentRewardConfigMapper">
+
+    <insert id="batchInsertConfigs">
+        insert into `order_comment_reward_config`(`goods_id`,`balance`,`created_time`,`update_time`)
+        values
+        <foreach collection="configs" item="item" separator=",">
+            (#{item.goodsId},#{item.balance},now(),now())
+        </foreach>
+        ON DUPLICATE KEY UPDATE balance = VALUES(balance),
+        update_time = values(update_time)
+    </insert>
+</mapper>

+ 1 - 0
netflix-service/src/main/java/com/cyksj/redis/RedisService.java

@@ -630,6 +630,7 @@ public class RedisService {
         ABROAD_SUCCESS_URL("abroad:pay:success_url:","海外支付成功页",60 * 60 * 24L),
         CHAT_GPT_TOKEN_KEY("chat_gpt_token_key:", "chatGPT直连token key", 60 * 10l),
         CHAT_GPT_TOKEN_EXCEPTION_KEY("chat_gpt_token_exception_key:", "chatGPT直连token异常 key", -1l),
+        ORDER_COMMENT_KEY("order_comment_key:", "订单评价", 10l),
         ;
 
         private String name;

+ 13 - 0
netflix-service/src/main/java/com/cyksj/service/order/OrderCommentFrontService.java

@@ -0,0 +1,13 @@
+package com.cyksj.service.order;
+
+import com.cyksj.model.request.OrderCommentReq;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentFrontService
+ *创建者: JavaZou
+ *创建时间:2023/7/28 13:46
+ */
+public interface OrderCommentFrontService {
+	void saveComment(OrderCommentReq request);
+}

+ 18 - 0
netflix-service/src/main/java/com/cyksj/service/order/OrderDonCommentService.java

@@ -0,0 +1,18 @@
+package com.cyksj.service.order;
+
+import com.cyksj.model.entity.OrderComment;
+import com.cyksj.model.entity.OrderCommentRewardConfig;
+
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: OrderDonCommentService
+ *创建者: JavaZou
+ *创建时间:2023/7/28 14:41
+ */
+public interface OrderDonCommentService {
+	void verifyCommentStatus(Long id, OrderComment.VerifyStatus verifyStatus) throws Exception;
+
+	void saveOrUpdateOrderCommentConfig(List<OrderCommentRewardConfig> configs);
+}

+ 91 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderCommentFrontServiceImpl.java

@@ -0,0 +1,91 @@
+package com.cyksj.service.order.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.constant.Constant;
+import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.mapper.OrderCommentMapper;
+import com.cyksj.mapper.OrderDonMapper;
+import com.cyksj.mapper.UserMapper;
+import com.cyksj.model.entity.OrderComment;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.manage.views.OrderDonView;
+import com.cyksj.model.request.OrderCommentReq;
+import com.cyksj.redis.RedisService;
+import com.cyksj.service.order.OrderCommentFrontService;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.param.Operator;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentFrontServiceImpl
+ *创建者: JavaZou
+ *创建时间:2023/7/28 13:46
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class OrderCommentFrontServiceImpl implements OrderCommentFrontService {
+	private final OrderCommentMapper orderCommentMapper;
+
+	private final UserMapper userMapper;
+
+	private final OrderDonMapper orderDonMapper;
+
+	private final BeanSearcher beanSearcher;
+
+	private final RedisService redisService;
+
+	@Override
+	public void saveComment(OrderCommentReq request) {
+		Long orderId = request.getOrderId();
+		Long userId = request.getUserId();
+		List<Long> userIds = request.getUserIds();
+		//是否已评价
+		OrderComment orderComment = orderCommentMapper.selectOne(Wrappers.lambdaQuery(OrderComment.class)
+				.in(OrderComment::getUserId, userIds)
+				.eq(OrderComment::getOrderId, orderId).last("limit 1"));
+		if (orderComment != null) throw BusinessRuntimeException.getInstance("您已完成该订单评价");
+
+		OrderDonView orderDonView = beanSearcher.searchFirst(OrderDonView.class, MapUtils.builder()
+				.field(OrderDonView::getId, orderId)
+				.field(OrderDonView::getUserId, userIds).op(Operator.InList)
+				.build());
+		if (orderDonView == null) throw BusinessRuntimeException.getInstance("不好意思,您当前未购买设备产品,无法进行评价");
+		if (request.getTitle().length() > 200) {
+			throw BusinessRuntimeException.getInstance("标题过长");
+		}
+		if (request.getContent().length() > 1000) {
+			throw BusinessRuntimeException.getInstance("评论内容过多");
+		}
+		if (StrUtil.isNotBlank(request.getPicture()) && request.getPicture().length() > 2000) {
+			throw BusinessRuntimeException.getInstance("图片过多");
+		}
+		if (Constant.noOrderStatus.contains(orderDonView.getStatus().name())) {
+			throw BusinessRuntimeException.getInstance("您该订单未完成");
+		}
+		if (orderDonView.getGoodsDonType() != 2) {
+			throw BusinessRuntimeException.getInstance("暂只支持实物设备订单评价");
+		}
+		User user = userMapper.selectById(userId);
+		orderComment = new OrderComment();
+		BeanUtil.copyProperties(request, orderComment);
+		orderComment.setGoodsId(orderDonView.getGoodsId());
+		orderComment.setSkuId(orderDonView.getSkuId());
+		orderComment.setNickname(user.getNickname());
+		orderComment.setHeadImgUrl(user.getHeadimgurl());
+		orderComment.setVerifyStatus(OrderComment.VerifyStatus.verifying);
+		orderComment.setCommentTime(DateTime.now().toString());
+		if (redisService.setNx(RedisService.key.ORDER_COMMENT_KEY.getName() + orderId, userId, RedisService.key.ORDER_COMMENT_KEY.getTimeout())) {
+			orderCommentMapper.insert(orderComment);
+		}
+	}
+}

+ 94 - 0
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonCommentServiceImpl.java

@@ -0,0 +1,94 @@
+package com.cyksj.service.order.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.exception.BusinessRuntimeException;
+import com.cyksj.mapper.OrderCommentMapper;
+import com.cyksj.mapper.OrderCommentRewardConfigMapper;
+import com.cyksj.model.entity.OrderComment;
+import com.cyksj.model.entity.OrderCommentRewardConfig;
+import com.cyksj.service.order.OrderDonCommentService;
+import com.cyksj.service.user.UserBenefitsService;
+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.util.LinkedList;
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: OrderDonCommentServiceImpl
+ *创建者: JavaZou
+ *创建时间:2023/7/28 14:41
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class OrderDonCommentServiceImpl implements OrderDonCommentService {
+	private final OrderCommentMapper orderCommentMapper;
+
+	private final OrderCommentRewardConfigMapper orderCommentRewardConfigMapper;
+
+	private final UserBenefitsService userBenefitsService;
+
+	@Override
+	@Transactional(rollbackFor = Throwable.class)
+	public void verifyCommentStatus(Long id, OrderComment.VerifyStatus verifyStatus) {
+		if (id == null || verifyStatus == null) {
+			throw BusinessRuntimeException.getInstance("审核参数错误");
+		}
+		OrderComment orderComment = orderCommentMapper.selectById(id);
+		if (orderComment == null) throw BusinessRuntimeException.getInstance("评价不存在");
+		OrderComment.VerifyStatus dbVerifyStatus = orderComment.getVerifyStatus();
+
+		if (OrderComment.VerifyStatus.verifying != orderComment.getVerifyStatus()) {
+			throw BusinessRuntimeException.getInstance("该评价已审核过");
+		}
+		if (verifyStatus == OrderComment.VerifyStatus.verifying) {
+			throw BusinessRuntimeException.getInstance("审核状态错误");
+		}
+
+		int update = orderCommentMapper.update(null, Wrappers.lambdaUpdate(OrderComment.class)
+				.set(OrderComment::getVerifyStatus, verifyStatus)
+				.eq(OrderComment::getId, id)
+				.eq(OrderComment::getVerifyStatus, dbVerifyStatus));
+		if (update == 1) {
+			//审核成功 是否配置对应余额奖励
+			if (OrderComment.VerifyStatus.success == verifyStatus) {
+				Long goodsId = orderComment.getGoodsId();
+				OrderCommentRewardConfig orderCommentRewardConfig = orderCommentRewardConfigMapper.selectOne(Wrappers.lambdaQuery(OrderCommentRewardConfig.class)
+						.eq(OrderCommentRewardConfig::getGoodsId, goodsId).last("limit 1"));
+				if (orderCommentRewardConfig != null) {
+					BigDecimal balance = orderCommentRewardConfig.getBalance();
+					userBenefitsService.addUserBalance(orderComment.getUserId(), balance);
+					log.info("审核订单:{}评价成功,发放余额:{}", orderComment.getOrderId(), balance.divide(BigDecimal.valueOf(100)));
+					orderCommentMapper.update(null, Wrappers.lambdaUpdate(OrderComment.class)
+							.set(OrderComment::getBalance, balance)
+							.eq(OrderComment::getId, id));
+				}
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Throwable.class)
+	public void saveOrUpdateOrderCommentConfig(List<OrderCommentRewardConfig> configs) {
+		List<Long> exists_goods_ids = new LinkedList<>();
+		configs.forEach(data->{
+			Long goodsId = data.getGoodsId();
+			if (goodsId == null || goodsId < 0) {
+				throw BusinessRuntimeException.getInstance("平台id为空");
+			}
+			BigDecimal balance = data.getBalance();
+			if (balance == null || balance.compareTo(BigDecimal.ZERO) < 0) {
+				throw BusinessRuntimeException.getInstance("请输入正确的奖励余额");
+			}
+			exists_goods_ids.add(goodsId);
+		});
+		orderCommentRewardConfigMapper.delete(Wrappers.lambdaQuery(OrderCommentRewardConfig.class)
+				.notIn(OrderCommentRewardConfig::getGoodsId, exists_goods_ids));
+		orderCommentRewardConfigMapper.batchInsertConfigs(configs);
+	}
+}

+ 38 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -33,6 +33,7 @@ import com.cyksj.model.manage.views.OrderDonBackView;
 import com.cyksj.model.request.*;
 import com.cyksj.model.views.*;
 import com.cyksj.service.mange.CmsOrderDonService;
+import com.cyksj.service.order.OrderDonCommentService;
 import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.EasyExcelUtils;
 import com.ejlchina.searcher.BeanSearcher;
@@ -77,6 +78,8 @@ public class CmsOrderController {
 
 	private final OrderCommentMapper orderCommentMapper;
 
+	private final OrderDonCommentService orderDonCommentService;
+
 	private final GoodsDonSkuMapper skuMapper;
 
 	private final ChannelPopularizeMapper channelPopularizeMapper;
@@ -397,6 +400,7 @@ public class CmsOrderController {
 		if (orderComment.getCommentTime() == null) {
 			orderComment.setCommentTime(DateTime.now().toDateStr());
 		}
+		orderComment.setVerifyStatus(OrderComment.VerifyStatus.success);
 		orderCommentMapper.insert(orderComment);
 		return GatewayResponse.SUCCESS.newBuilder().toResult("新增成功");
 	}
@@ -406,10 +410,13 @@ public class CmsOrderController {
 	 */
 	@PutMapping("/put/orderComment")
 	public Result<String> updateOrderComment(@RequestBody @Validated OrderComment orderComment) {
-		orderCommentMapper.updateById(orderComment);
 		if (orderComment.getCommentTime() == null) {
 			orderComment.setCommentTime(DateTime.now().toDateStr());
 		}
+		if (orderComment.getVerifyStatus() == null) {
+			orderComment.setVerifyStatus(OrderComment.VerifyStatus.success);
+		}
+		orderCommentMapper.updateById(orderComment);
 		return GatewayResponse.SUCCESS.newBuilder().toResult("编辑成功");
 	}
 
@@ -431,6 +438,36 @@ public class CmsOrderController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
 
+	/**
+	 * 评论审核
+	 */
+	@PutMapping("/put/orderComment/status")
+	@NoSubmit
+	public Result<String> updateOrderCommentStatus(@RequestBody OrderComment orderCommentReq) throws Exception {
+		orderDonCommentService.verifyCommentStatus(orderCommentReq.getId(), orderCommentReq.getVerifyStatus());
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 配置订单平台评价列表
+	 */
+	@PostMapping("/post/orderComment/reward/config")
+	public Result<String> saveOrUpdateOrderCommentConfig(@RequestBody List<OrderCommentRewardConfig> configs) {
+		orderDonCommentService.saveOrUpdateOrderCommentConfig(configs);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 获取配置 订单平台评价
+	 */
+	@GetMapping("/get/orderComment/reward/config")
+	public Result<List<OrderCommentRewardConfigView>> getOrderCommentRewardConfig() {
+		List<OrderCommentRewardConfigView> views = beanSearcher.searchAll(OrderCommentRewardConfigView.class, MapUtils.builder()
+				.orderBy(OrderCommentRewardConfigView::getGoodsId).desc()
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(views);
+	}
+
 	/**
 	 * 踢出车队
 	 */

+ 65 - 0
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderCommentFrontController.java

@@ -0,0 +1,65 @@
+package com.cyksj.web.controller.payment;
+
+import com.cyksj.common.annotation.NoSubmit;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.model.request.OrderCommentReq;
+import com.cyksj.model.views.OrderDonUserCommentView;
+import com.cyksj.service.order.OrderCommentFrontService;
+import com.cyksj.service.user.UserService;
+import com.cyksj.web.util.StpUserUtil;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/*
+ *项目名: netflix
+ *文件名: OrderCommentController
+ *创建者: JavaZou
+ *创建时间:2023/7/28 13:42
+ */
+@Slf4j
+@RequestMapping("/applets/order/comment")
+@RestController
+@RequiredArgsConstructor
+public class OrderCommentFrontController {
+	private final OrderCommentFrontService orderCommentFrontService;
+
+	private final BeanSearcher beanSearcher;
+
+	private final UserService userService;
+
+	/**
+	 * 新增评价
+	 */
+	@PostMapping("/post")
+	@NoSubmit
+	public Result<String> post(@RequestBody @Validated OrderCommentReq request) {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		request.setUserId(userId);
+		request.setUserIds(userService.getRelationUserIdList(userId, null));
+		orderCommentFrontService.saveComment(request);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+	/**
+	 * 可评论的订单
+	 */
+	@GetMapping("/get/orders")
+	public Result<List<OrderDonUserCommentView>> getOrders(@RequestParam(defaultValue = "2") Integer type) {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		List<Long> userIds = userService.getRelationUserIdList(userId, null);
+		String userIdsStr = userIds.toString().replace("[", "(")
+				.replace("]", ")");
+		String conditionSql = String.format("and user_id in %s", userIdsStr);
+		List<OrderDonUserCommentView> OrderDonUserCommentViews = beanSearcher.searchAll(OrderDonUserCommentView.class, MapUtils.builder()
+				.put("condition", conditionSql)
+				.field(OrderDonUserCommentView::getGoodsType, type).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(OrderDonUserCommentViews);
+	}
+}