zoujiajian 3 gadi atpakaļ
vecāks
revīzija
48e85c61c1
19 mainītis faili ar 228 papildinājumiem un 178 dzēšanām
  1. 13 0
      netflix-dao/src/main/java/com/cyksj/mapper/QuestionResponseRecordMapper.java
  2. 1 1
      netflix-dao/src/main/java/com/cyksj/model/dto/CouponPopularizeDto.java
  3. 15 2
      netflix-dao/src/main/java/com/cyksj/model/entity/Coupon.java
  4. 1 0
      netflix-dao/src/main/java/com/cyksj/model/entity/CouponUser.java
  5. 30 0
      netflix-dao/src/main/java/com/cyksj/model/entity/QuestionResponseRecord.java
  6. 3 3
      netflix-dao/src/main/java/com/cyksj/model/views/CouponActiveView.java
  7. 3 3
      netflix-dao/src/main/java/com/cyksj/model/views/CouponRecommendView.java
  8. 0 138
      netflix-dao/src/main/java/com/cyksj/model/views/CouponUserEnableView.java
  9. 2 5
      netflix-dao/src/main/java/com/cyksj/model/views/CouponUserView.java
  10. 3 3
      netflix-dao/src/main/java/com/cyksj/model/views/CouponView.java
  11. 25 0
      netflix-dao/src/main/java/com/cyksj/model/views/QuestionResponseRecordView.java
  12. 1 1
      netflix-dao/src/main/resources/mapper/CouponMapper.xml
  13. 19 9
      netflix-dao/src/main/resources/mapper/CouponUserMapper.xml
  14. 1 0
      netflix-service/src/main/java/com/cyksj/redis/RedisService.java
  15. 5 3
      netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java
  16. 14 5
      netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java
  17. 13 1
      netflix-web/src/main/java/com/cyksj/web/controller/coupon/CouponFrontController.java
  18. 58 0
      netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java
  19. 21 4
      netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsUserController.java

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/QuestionResponseRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.QuestionResponseRecord;
+
+/*
+ *项目名: netflix
+ *文件名: QuestionResponseRecordMapper
+ *创建者: JavaZou
+ *创建时间:2023/5/31 18:07
+ */
+public interface QuestionResponseRecordMapper extends BaseMapper<QuestionResponseRecord> {
+}

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/dto/CouponPopularizeDto.java

@@ -30,7 +30,7 @@ public class CouponPopularizeDto {
 	 */
 	private BigDecimal reduceCondition;
 
-	private Boolean isRenew;
+	private Coupon.UseScope useScope;
 
 	private Coupon.Scope scope;
 

+ 15 - 2
netflix-dao/src/main/java/com/cyksj/model/entity/Coupon.java

@@ -89,9 +89,9 @@ public class Coupon extends BaseEntity {
 	private Integer validDays;
 
 	/**
-	 * 是否可在续费时使用
+	 * 使用范围
 	 */
-	private Boolean isRenew;
+	private UseScope useScope;
 
 	/**
 	 * 兑换码
@@ -147,6 +147,19 @@ public class Coupon extends BaseEntity {
 		}
 	}
 
+	@Getter
+	public enum UseScope {
+		orders("下单可用"),
+		renew("续费可用"),
+		all("所有")
+		;
+		String desc;
+
+		UseScope(String desc) {
+			this.desc = desc;
+		}
+	}
+
 	@Getter
 	@Setter
 	public static class CouponGoodsSku {

+ 1 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/CouponUser.java

@@ -60,6 +60,7 @@ public class CouponUser extends BaseEntity {
 		lottery("lottery","抽奖"),
 		task("task","完成任务"),
 		equipment("equipment","实物设备分销"),
+		ques_response("ques_response","问卷回答"),
 		;
 		private String channel;
 		private String desc;

+ 30 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/QuestionResponseRecord.java

@@ -0,0 +1,30 @@
+package com.cyksj.model.entity;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+
+/*
+ *项目名: netflix
+ *文件名: QuestionResponseRecord
+ *创建者: JavaZou
+ *创建时间:2023/5/31 18:04
+ */
+@Getter
+@Setter
+public class QuestionResponseRecord extends BaseEntity{
+	private Long userId;
+
+	private String nickname;
+
+	private String topic;
+
+	@NotEmpty(message = "问题为空")
+	private String question;
+
+	@NotEmpty(message = "选项为空")
+	@JsonProperty("uOption")
+	private String uOption;
+}

+ 3 - 3
netflix-dao/src/main/java/com/cyksj/model/views/CouponActiveView.java

@@ -117,10 +117,10 @@ public class CouponActiveView {
 	private Integer validDays;
 
 	/**
-	 * 是否可在续费时使用
+	 * 使用范围
 	 */
-	@DbField("c.is_renew")
-	private Boolean isRenew;
+	@DbField("c.use_scope")
+	private Coupon.UseScope useScope;
 
 	/**
 	 * 发放数量

+ 3 - 3
netflix-dao/src/main/java/com/cyksj/model/views/CouponRecommendView.java

@@ -128,10 +128,10 @@ public class CouponRecommendView {
 	private Integer validDays;
 
 	/**
-	 * 是否可在续费时使用
+	 * 使用范围
 	 */
-	@DbField("c.is_renew")
-	private Boolean isRenew;
+	@DbField("c.use_scope")
+	private Coupon.UseScope useScope;
 
 	/**
 	 * 推荐状态

+ 0 - 138
netflix-dao/src/main/java/com/cyksj/model/views/CouponUserEnableView.java

@@ -1,138 +0,0 @@
-package com.cyksj.model.views;
-
-import com.cyksj.model.entity.Coupon;
-import com.cyksj.model.entity.CouponUser;
-import com.ejlchina.searcher.bean.DbField;
-import com.ejlchina.searcher.bean.SearchBean;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.math.BigDecimal;
-import java.util.Date;
-
-/*
- *项目名: netflix
- *文件名: CouponUserEnableView
- *创建者: JavaZou
- *创建时间:2022/11/21 10:33
- */
-@Getter
-@Setter
-@SearchBean(tables = "coupon_user cu left join coupon_active ca on ca.id = cu.coupon_active_id" +
-		" left join coupon c on c.id = cu.coupon_id",
-		where = "order by cu.id desc")
-public class CouponUserEnableView {
-	@DbField("cu.id")
-	private Long id;
-
-	/**
-	 * 获取渠道
-	 */
-	@DbField("cu.channel")
-	private CouponUser.Channel channel;
-
-	/**
-	 * 优惠券使用状态
-	 */
-	@DbField("cu.status")
-	private CouponUser.Status couponUserStatus;
-
-	/**
-	 * 用户id
-	 */
-	@DbField("cu.user_id")
-	private Long userId;
-
-	/**
-	 * 优惠券id
-	 */
-	@DbField("c.id")
-	private Long couponId;
-
-	/**
-	 * 优惠券发放id
-	 */
-	@DbField("ca.id")
-	private Long couponActiveId;
-
-	/**
-	 * 优惠券名称
-	 */
-	@DbField("ca.name")
-	private String name;
-
-	/**
-	 * 优惠券平台类型
-	 */
-	@DbField("ca.goods_type")
-	private Coupon.GoodsType goodsType;
-
-	/**
-	 * 优惠券类型
-	 */
-	@DbField("ca.type")
-	private Coupon.Type type;
-
-	/**
-	 * 抵扣金额
-	 */
-	@DbField("ca.reduce_money")
-	private BigDecimal reduceMoney;
-
-	/**
-	 * 折扣
-	 */
-	@DbField("ca.discount")
-	private BigDecimal discount;
-
-	/**
-	 * 平台规格集合
-	 */
-	@DbField("c.goods_sku_ids")
-	private String goodsSkuIds;
-
-	/**
-	 * 是否是有效时间
-	 */
-	@DbField("ca.is_valid_time")
-	private Boolean isValidTime;
-
-	/**
-	 * 起始有效时间
-	 */
-	@DbField("ca.valid_start_time")
-	private Date validStartTime;
-
-	/**
-	 * 领取有效天数
-	 */
-	@DbField("ca.valid_days")
-	private Integer validDays;
-
-	/**
-	 * 截止有效时间
-	 */
-	@DbField("ca.valid_end_time")
-	private Date validEndTime;
-
-	/**
-	 * 是否可在续费时使用
-	 */
-	@DbField("ca.is_renew")
-	private Boolean isRenew;
-
-	/**
-	 * 发放优惠券状态(默认启用)
-	 */
-	@DbField("ca.status")
-	private Boolean status;
-
-	/**
-	 * 有效状态(默认有效)
-	 */
-	@DbField("ca.expiry_status")
-	private Boolean expiryStatus;
-
-	@DbField("ca.created_time")
-	private Date createdTime;
-}

+ 2 - 5
netflix-dao/src/main/java/com/cyksj/model/views/CouponUserView.java

@@ -134,11 +134,8 @@ public class CouponUserView {
 	@DbField("cu.valid_end_time")
 	private Date validEndTime;
 
-	/**
-	 * 是否可在续费时使用
-	 */
-	@DbField("c.is_renew")
-	private Boolean isRenew;
+	@DbField("c.use_scope")
+	private Coupon.UseScope useScope;
 
 	/**
 	 * 发放优惠券状态(默认启用)

+ 3 - 3
netflix-dao/src/main/java/com/cyksj/model/views/CouponView.java

@@ -104,10 +104,10 @@ public class CouponView {
 	private Integer validDays;
 
 	/**
-	 * 是否可在续费时使用
+	 * 使用范围
 	 */
-	@DbField("c.is_renew")
-	private Boolean isRenew;
+	@DbField("c.use_scope")
+	private Coupon.UseScope useScope;
 
 	/**
 	 * 兑换码

+ 25 - 0
netflix-dao/src/main/java/com/cyksj/model/views/QuestionResponseRecordView.java

@@ -0,0 +1,25 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: QuestionResponseRecordView
+ *创建者: JavaZou
+ *创建时间:2023/6/1 10:29
+ */
+@Getter
+@Setter
+@SearchBean(tables = "question_response_record",
+		where = "1 = 1 :time:",
+		groupBy = "u_option")
+public class QuestionResponseRecordView {
+	@DbField("u_option")
+	private String uOption;
+
+	@DbField("count(*)")
+	private Integer count;
+}

+ 1 - 1
netflix-dao/src/main/resources/mapper/CouponMapper.xml

@@ -8,7 +8,7 @@
                cdp.id        as popularizeId,
                cp.goods_sku_ids,
                cp.type,
-               cp.is_renew,
+               cp.use_scope,
                cp.scope,
                cdp.coupon_id as popularizeCouponId,
                cp.goods_type,

+ 19 - 9
netflix-dao/src/main/resources/mapper/CouponUserMapper.xml

@@ -17,8 +17,8 @@
         cu.valid_start_time,
         cu.valid_end_time,
         cp.valid_days,
+        cp.use_scope,
         cu.created_time,
-        cp.is_renew,
         cu.status as couponUserStatus,
         if(ck.id is null, 0, 1) as 'isAvailable',
         if(ca.id is not null and ca.expiry_status = 0,false,true) flag,
@@ -37,9 +37,14 @@
         <if test="goodsId == null">
             and ck.sku_id = #{skuId}
         </if>
-        <if test="isRenew != null and isRenew">
-            and cp.is_renew = #{isRenew}
-        </if>
+        <choose>
+            <when test="isRenew != null and isRenew">
+                and cp.use_scope != 'orders'
+            </when>
+            <otherwise>
+                and cp.use_scope != 'renew'
+            </otherwise>
+        </choose>
         where cu.user_id = #{userId}
         and cu.channel != 'exCode'
         and cu.valid_end_time > now()
@@ -72,9 +77,15 @@
         and cu.channel != 'exCode'
         and cu.valid_start_time &lt; now()
         and cu.valid_end_time > now()
-        <if test="isRenew != null and isRenew">
-            and cp.is_renew = #{isRenew}
-        </if>)s where flag != 0 or flag is null
+        <choose>
+            <when test="isRenew != null and isRenew">
+                and cp.use_scope != 'orders'
+            </when>
+            <otherwise>
+                and cp.use_scope != 'renew'
+            </otherwise>
+        </choose>
+        )s where flag != 0 or flag is null
     </select>
 
     <select id="couponCenterList" resultType="com.cyksj.model.views.CouponActiveView">
@@ -93,7 +104,6 @@
                      c.valid_start_time,
                      c.valid_end_time,
                      c.valid_days,
-                     c.is_renew,
                      ca.num,
                      ca.`status`,
                      ca.expiry_status,
@@ -137,12 +147,12 @@
                c.reduce_condition,
                c.reduce_money,
                c.discount,
+               c.use_scope,
                c.goods_sku_ids,
                c.is_valid_time,
                cu.valid_start_time,
                c.valid_days,
                cu.valid_end_time,
-               c.is_renew,
                (case
                     when cu.status = 'used' then 'used'
                     when cu.valid_end_time &lt; now() then 'expired'

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

@@ -606,6 +606,7 @@ public class RedisService {
         H5_WEB_CACHE("h5_web_cache", "h5首页平台缓存", 5 * 60),
         CPS_BACK_LOGIN_KEY("cps_back_login:", "cps商务后台登录key", 3 * 60),
         CPS_AUTH_SUCCESS_KEY("cps_auth_success_key:%s", "cps后台微信授权", 60 * 10),
+        QUESTION_RESPONSE_KEY("question_response_key:%s", "问卷回答key", 60 * 60 * 24L),
         ;
 
         private String name;

+ 5 - 3
netflix-service/src/main/java/com/cyksj/service/coupon/impl/CouponFontServiceImpl.java

@@ -164,8 +164,10 @@ public class CouponFontServiceImpl implements CouponFontService {
 
 				if (!data.getIsAvailable()) {
 					data.setReason(String.format("仅限%s", data.getGoodsSkuStr()));
-					if (isRenew != null && isRenew && data.getIsRenew()) {
+					if (data.getUseScope() == Coupon.UseScope.renew) {
 						data.setReason(String.format("%s续费时可使用", data.getReason()));
+					} else if (data.getUseScope() == Coupon.UseScope.orders) {
+						data.setReason(String.format("%s下单时可使用", data.getReason()));
 					}
 				}
 
@@ -176,8 +178,8 @@ public class CouponFontServiceImpl implements CouponFontService {
 					}
 				}
 
-				if (isRenew != null && isRenew && !data.getIsRenew()) {
-					data.setReason(String.format("续费时,不可使用"));
+				if (isRenew != null && isRenew && data.getUseScope() == Coupon.UseScope.orders) {
+					data.setReason("仅下单可使用");
 				}
 				//为了重新校验
 				data.setCouponUserStatus(CouponUser.Status.unused);

+ 14 - 5
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -336,6 +336,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			orderDon.setCouponUserId(couponUser.getId());
 			orderDon.setDsPopularizeId(couponUser.getPopularizeId());
 		}
+		if (orderDon.getMoney().compareTo(BigDecimal.ZERO) < 0) {
+			throw BusinessRuntimeException.getInstance("支付金额小于0");
+		}
 		orderDon.setSkuId(payRequest.getSkuId());
 		orderDon.setRelationId(relationId);
 		orderDon.setNum(payRequest.getNum());
@@ -1692,9 +1695,12 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				throw BusinessRuntimeException.getInstance("该优惠码不存在");
 			}
 			checkCouponGoods(goodsDon, skuId, exists.getCouponId(), true);
-			//检验是否续费可使用
-			if (isRenew && !exists.getIsRenew()) {
-				throw BusinessRuntimeException.getInstance("该优惠券续费时不可使用");
+			//检验是优惠券使用范围
+			if (isRenew && exists.getUseScope() == Coupon.UseScope.orders) {
+				throw BusinessRuntimeException.getInstance("该优惠码续费时不可使用");
+			}
+			if (!isRenew && exists.getUseScope() == Coupon.UseScope.renew) {
+				throw BusinessRuntimeException.getInstance("该优惠码下单时不可使用");
 			}
 			if (exists.getScope() == Coupon.Scope.newUser) {
 				CouponNewUserView couponNewUserView = beanSearcher.searchFirst(CouponNewUserView.class, MapUtils.builder().field(CouponNewUserView::getUserId, userId).op(Operator.Equal).build());
@@ -1724,10 +1730,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				throw BusinessRuntimeException.getInstance(couponUserView.getReason());
 			}
 			checkCouponGoods(goodsDon, skuId, couponUserView.getCouponId(), false);
-			//检验是否续费可使用
-			if (isRenew && !couponUserView.getIsRenew()) {
+			//检验是优惠券使用范围
+			if (isRenew && couponUserView.getUseScope() == Coupon.UseScope.orders) {
 				throw BusinessRuntimeException.getInstance("该优惠券续费时不可使用");
 			}
+			if (!isRenew && couponUserView.getUseScope() == Coupon.UseScope.renew) {
+				throw BusinessRuntimeException.getInstance("该优惠券下单时不可使用");
+			}
 			if (couponUserView.getScope() == Coupon.Scope.newUser) {
 				CouponNewUserView couponNewUserView = beanSearcher.searchFirst(CouponNewUserView.class, MapUtils.builder().field(CouponNewUserView::getUserId, userId).op(Operator.Equal).build());
 				if (couponNewUserView != null) {

+ 13 - 1
netflix-web/src/main/java/com/cyksj/web/controller/coupon/CouponFrontController.java

@@ -226,7 +226,7 @@ public class CouponFrontController {
 	 * 优惠码详情
 	 */
 	@GetMapping("/get/exCode/detail")
-	public Result<CouponPopularizeDto> getExCodeDetail(Long skuId, String exCode) throws Exception {
+	public Result<CouponPopularizeDto> getExCodeDetail(Long skuId, String exCode, Boolean isRenew) {
 		Long userId = StpUserUtil.getLoginIdAsLong();
 		GoodsDonSkuView goodsDonSkuView = beanSearcher.searchFirst(GoodsDonSkuView.class, MapUtils.builder().field(GoodsDonSkuView::getSkuId, skuId).op(Operator.Equal).build());
 		if (goodsDonSkuView == null) {
@@ -246,6 +246,18 @@ public class CouponFrontController {
 				throw BusinessRuntimeException.getInstance("该优惠码只适用于新用户");
 			}
 		}
+		if (isRenew != null && isRenew) {
+			Coupon.UseScope useScope = dto.getUseScope();
+			if (useScope == Coupon.UseScope.orders) {
+				throw BusinessRuntimeException.getInstance("该优惠码续费时不可使用");
+			}
+		}
+		if (isRenew == null && !isRenew) {
+			Coupon.UseScope useScope = dto.getUseScope();
+			if (useScope == Coupon.UseScope.renew) {
+				throw BusinessRuntimeException.getInstance("该优惠码下单时不可使用");
+			}
+		}
 		if (dto.getIsValidTime() && dto.getValidStartTime().after(DateTime.now())) {
 			throw BusinessRuntimeException.getInstance("该优惠码待生效");
 		}

+ 58 - 0
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -24,6 +24,7 @@ import com.cyksj.model.views.DoubleVerifyCodeView;
 import com.cyksj.model.views.RenewalView;
 import com.cyksj.model.views.UserTicketView;
 import com.cyksj.redis.RedisService;
+import com.cyksj.service.mange.coupon.CouponCommonService;
 import com.cyksj.service.order.OrderDonService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import com.cyksj.service.user.UserService;
@@ -33,6 +34,7 @@ import com.ejlchina.searcher.param.Operator;
 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 javax.servlet.http.HttpServletRequest;
@@ -73,6 +75,10 @@ public class GroupRelationController {
 
     private final DoubleVerifyClickRefreshRecordMapper refreshRecordMapper;
 
+    private final QuestionResponseRecordMapper questionResponseRecordMapper;
+
+    private final CouponCommonService couponCommonService;
+
     private final GlobalThreadPoolTaskExecutor THREAD_POOL;
 
     @RequestMapping("/get/renewal")
@@ -303,4 +309,56 @@ public class GroupRelationController {
         List<DoubleVerifyCodeView> views = doubleVerifyRecordMapper.getDoubleVerifyCodeList(userId, relationId);
         return GatewayResponse.SUCCESS.newBuilder().toResult(views);
     }
+
+    /**
+     * 用户是不是自然流量渠道
+     * 且未回答答题
+     */
+    @GetMapping("/natural/channel")
+    public Result<Boolean> isNaturalChannel() {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        String question_key = RedisService.key.QUESTION_RESPONSE_KEY.getNameFormat(userId);
+        if (redisService.get(question_key) != null) {
+            return GatewayResponse.SUCCESS.newBuilder().toResult(false);
+        }
+        User user = userService.getById(userId);
+        if (user.getPopularizeId() != 0) {
+            redisService.set(question_key, userId, RedisService.key.QUESTION_RESPONSE_KEY.getTimeout());
+            return GatewayResponse.SUCCESS.newBuilder().toResult(false);
+        }
+        if (user.getPopularizeId() == 0) {
+            QuestionResponseRecord record = questionResponseRecordMapper.selectOne(Wrappers.lambdaQuery(QuestionResponseRecord.class)
+                    .eq(QuestionResponseRecord::getUserId, userId).select(QuestionResponseRecord::getId).last("limit 1"));
+            if (record != null) {
+                redisService.set(question_key, userId, RedisService.key.QUESTION_RESPONSE_KEY.getTimeout());
+                return GatewayResponse.SUCCESS.newBuilder().toResult(false);
+            }
+            return GatewayResponse.SUCCESS.newBuilder().toResult(true);
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult(false);
+    }
+
+    /**
+     * 问卷记录
+     */
+    @PostMapping("/record/replyQuestion")
+    public Result<String> recordReplyQuestion(@RequestBody @Validated QuestionResponseRecord record) {
+        long userId = StpUserUtil.getLoginIdAsLong();
+        User user = userService.getById(userId);
+        String nickname = user.getNickname();
+        String question_key = RedisService.key.QUESTION_RESPONSE_KEY.getNameFormat(userId);
+        QuestionResponseRecord dbRecord = questionResponseRecordMapper.selectOne(Wrappers.lambdaQuery(QuestionResponseRecord.class)
+                .eq(QuestionResponseRecord::getUserId, userId).select(QuestionResponseRecord::getId).last("limit 1"));
+        if (dbRecord == null) {
+            if (redisService.setNx(String.format("%s-%s", userId, nickname), userId, 10l)) {
+                record.setUserId(userId);
+                record.setNickname(nickname);
+                questionResponseRecordMapper.insert(record);
+                //发放优惠券
+                couponCommonService.sendCouponToUser(userId, 100l, 0l, 0l, 0l, CouponUser.Channel.ques_response);
+                redisService.set(question_key, userId, RedisService.key.QUESTION_RESPONSE_KEY.getTimeout());
+            }
+        }
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
 }

+ 21 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsUserController.java

@@ -12,10 +12,7 @@ import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.corp.CorpUserFollowRelationMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.UserView;
-import com.cyksj.model.views.GoodsDonSkuView;
-import com.cyksj.model.views.RenewalView;
-import com.cyksj.model.views.UserDistributeBusinessInfoView;
-import com.cyksj.model.views.UserOrderDonDetail;
+import com.cyksj.model.views.*;
 import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import com.ejlchina.searcher.BeanSearcher;
@@ -209,4 +206,24 @@ public class CmsUserController{
                 .build());
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }
+
+    /**
+     * 问卷回答列表
+     */
+    @GetMapping("/get/question/response/list")
+    public Result<List<QuestionResponseRecordView>> getQuestionResponseList(String first, String end) {
+        String timeSql = StrUtil.EMPTY;
+        if (StrUtil.isNotBlank(first)) {
+            timeSql += String.format(" and created_time >= '%s'", first);
+        }
+        if (StrUtil.isNotBlank(end)) {
+            timeSql += String.format(" and created_time < '%s'", end);
+        }
+        MapBuilder builder = MapUtils.builder();
+        if (StrUtil.isNotBlank(timeSql)) {
+            builder.put("time", timeSql);
+        }
+        List<QuestionResponseRecordView> views = beanSearcher.searchAll(QuestionResponseRecordView.class, builder.build());
+        return GatewayResponse.SUCCESS.newBuilder().toResult(views);
+    }
 }