Przeglądaj źródła

Merge branch 'corp_intention'

zoujiajian 2 lat temu
rodzic
commit
eedde1bcba

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserMapper.java

@@ -75,4 +75,6 @@ public interface UserMapper extends BaseMapper<User> {
     Integer addDistributeSubMoney(@Param("id") Long id, @Param("subApplyMoney") BigDecimal subApplyMoney, @Param("addApplyMoney") BigDecimal addApplyMoney);
 
     Integer getNewMaliceUser(DateTime beginOfDay);
+
+    List<User> selectUserById(@Param("pid") Long phoneUserId, @Param("eid") Long emailUserId);
 }

+ 5 - 3
netflix-dao/src/main/java/com/cyksj/model/entity/CorpUserPayIntention.java

@@ -18,6 +18,10 @@ public class CorpUserPayIntention extends BaseEntity {
 
 	/**
 	 * 意向 0无回复 1无意向 2.问相关问题 3有意向 4很有意向
+	 *  无回复、无意向:合并为无意向
+	 * 问相关问题、有意向合并为有意向
+	 * 很有意向改为有下单意向
+	 * 0 无意向 1.有意向 2.下单意向
 	 */
 	private Integer intention;
 
@@ -28,11 +32,9 @@ public class CorpUserPayIntention extends BaseEntity {
 
 	@Getter
 	public enum Intention {
-		whf("无回复", "etvj2DPQAA13a2LWPMwCikcmnp6T40FA"),
 		wyx("无意向", "etvj2DPQAASnQouiyPZD9el0QLLSNs8Q"),
-		wxgwt("问相关问题", "etvj2DPQAAUOcl8WGtkF27Ul_V7ixF4A"),
 		yyx("有意向", "etvj2DPQAA41WEz2wXpuLlf1XzKTnK9g"),
-		hyyx("很有意向", "etvj2DPQAAPQOeqPoY-ByfdmCrC3PDkw");
+		xdyx("下单意向", "etvj2DPQAAPQOeqPoY-ByfdmCrC3PDkw");
 		String tagName;
 
 		String tagId;

+ 7 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/CorpMsgAuditUserView.java

@@ -1,6 +1,7 @@
 package com.cyksj.model.manage.views;
 
 import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
 import lombok.Data;
 
@@ -74,4 +75,10 @@ public class CorpMsgAuditUserView {
      */
     @DbField("cr.add_created_time")
     private Date addCreatedTime;
+
+    @DbField("c.unionid")
+    private String unionId;
+
+    @DbIgnore
+    private Integer intention;
 }

+ 5 - 1
netflix-dao/src/main/java/com/cyksj/model/manage/views/CorpWxOrderDonView.java

@@ -19,7 +19,8 @@ import java.util.Date;
 @Setter
 @SearchBean(tables = "order_don o left join goods_don_sku sku on o.sku_id = sku.id " +
 		"left join goods_don g on g.id = sku.goods_id " +
-		"left join groups_relation gr on gr.user_id = o.user_id")
+		"left join groups_relation gr on gr.id = o.relation_id " +
+		"left join user u on u.id = o.user_id")
 public class CorpWxOrderDonView {
 	@DbField("o.id")
 	private Long id;
@@ -83,4 +84,7 @@ public class CorpWxOrderDonView {
 
 	@DbField("o.pay_title")
 	private String payTitle;
+
+	@DbField("u.nickname")
+	private String nickname;
 }

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

@@ -13,8 +13,9 @@ import java.util.Date;
 @SearchBean(tables = "groups_relation gr left join groups_trips gt on gt.id = gr.groups_id" +
 		" left join account a on a.id = gt.account_id" +
 		" left join goods_don gd on gd.id = a.goods_id" +
-		" left join goods_don_sku gdk on gdk.id = gt.sku_id")
-public class TicketView{
+		" left join goods_don_sku gdk on gdk.id = gt.sku_id",
+		where = ":condition:")
+public class TicketView {
 	@DbField("gr.user_id")
 	private Long userId;
 

+ 2 - 14
netflix-dao/src/main/java/com/cyksj/model/views/YHLXUserDetailView.java

@@ -2,11 +2,10 @@ package com.cyksj.model.views;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.cyksj.model.entity.Address;
-import com.cyksj.model.manage.views.CorpWxOrderDonView;
+import com.cyksj.model.entity.User;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -35,7 +34,6 @@ public class YHLXUserDetailView {
 	private String nickname;
 
 	@DbField("u.unionid")
-	@JsonIgnore
 	private String unionId;
 
 	/**
@@ -57,17 +55,7 @@ public class YHLXUserDetailView {
 	@TableField(exist = false)
 	private Address address;
 
-	/**
-	 * 车票信息
-	 */
-	@DbIgnore
-	@TableField(exist = false)
-	private List<TicketView> ticketViews;
-
-	/**
-	 * 订单信息
-	 */
 	@DbIgnore
 	@TableField(exist = false)
-	private List<CorpWxOrderDonView> orderDonViews;
+	private List<User> userBindInfos;
 }

+ 14 - 0
netflix-dao/src/main/resources/mapper/UserMapper.xml

@@ -39,4 +39,18 @@
               having count(distinct buyer_id) > 4) o
                  inner join user u on u.id = o.user_id
     </select>
+
+    <select id="selectUserById" resultType="com.cyksj.model.entity.User">
+        select id,login_phone,email,headimgurl,nickname from user
+        where
+        <if test="pid != null">
+            id = #{pid}
+        </if>
+        <if test=" pid != null and eid != null">
+            or
+        </if>
+        <if test="eid != null">
+            id = #{eid}
+        </if>
+    </select>
 </mapper>

+ 9 - 20
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpUserServiceImpl.java

@@ -1,6 +1,5 @@
 package com.cyksj.service.corp.impl;
 
-import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,10 +12,8 @@ import com.cyksj.mapper.corp.CorpUserAuthMapper;
 import com.cyksj.mapper.corp.CorpUserMapper;
 import com.cyksj.mapper.market.task.UserBindDetailMapper;
 import com.cyksj.model.entity.*;
-import com.cyksj.model.manage.views.CorpWxOrderDonView;
 import com.cyksj.model.request.corp.CorpCommonReq;
 import com.cyksj.model.request.corp.CorpXmlMessage;
-import com.cyksj.model.views.TicketView;
 import com.cyksj.model.views.YHLXUserDetailView;
 import com.cyksj.service.corp.CorpUserService;
 import com.cyksj.service.corp.msg.CorpEventActionService;
@@ -31,7 +28,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 /**
  * 项目名: yhlxj
@@ -97,23 +93,16 @@ public class CorpUserServiceImpl implements CorpUserService {
 		YHLXUserDetailView view = Optional.ofNullable(beanSearcher.searchFirst(YHLXUserDetailView.class, MapUtils.builder().field(YHLXUserDetailView::getUserId, corpUser.getUserId()).op(Operator.Equal).build())).orElse(new YHLXUserDetailView());
 		if (view.getUserId() != null) {
 			view.setAddress(addressMapper.selectOne(Wrappers.lambdaQuery(Address.class).eq(Address::getUserId, view.getUserId()).eq(Address::getIsDefault, true).last("limit 1")));
-			List<TicketView> ticketViews = beanSearcher.searchAll(TicketView.class, MapUtils.builder()
-					.field(TicketView::getUserId, userIdList).op(Operator.InList)
-					.field(TicketView::getGrStatus, List.of("validity", "outside")).op(Operator.InList)
-					.build());
-			DateTime now = DateTime.now();
-			List<TicketView> tkCollect = ticketViews.stream().filter(tk -> {
-				if (tk.getExpiryTime() != null && tk.getExpiryTime().before(now)) {
-					return false;
+
+			UserBindDetail bindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
+					.eq(UserBindDetail::getUserId, user.getId())
+					.last("limit 1"));
+			if (bindDetail != null) {
+				if (bindDetail.getPhoneUserId() != null || bindDetail.getEmailUserId() != null) {
+					//用户绑定信息
+					view.setUserBindInfos(userMapper.selectUserById(bindDetail.getPhoneUserId(), bindDetail.getEmailUserId()));
 				}
-				return true;
-			}).collect(Collectors.toList());
-			view.setTicketViews(tkCollect);
-			List<CorpWxOrderDonView> orderDonViews = beanSearcher.searchAll(CorpWxOrderDonView.class, MapUtils.builder()
-					.field(CorpWxOrderDonView::getUserId, userIdList).op(Operator.InList)
-					.orderBy(CorpWxOrderDonView::getId).desc()
-					.build());
-			view.setOrderDonViews(orderDonViews);
+			}
 		}
 		view.setMarkInfo(corpUser.getMarkInfo());
 		if (userIdList.size() == 3) {

+ 10 - 6
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/CorpMsgAuditController.java

@@ -7,6 +7,8 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.corp.CorpUserPayIntentionMapper;
+import com.cyksj.model.entity.CorpUserPayIntention;
 import com.cyksj.model.entity.QyMsgContent;
 import com.cyksj.model.manage.views.CorpFollowMsgView;
 import com.cyksj.model.manage.views.CorpMsgAuditUserView;
@@ -25,10 +27,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -47,6 +46,8 @@ public class CorpMsgAuditController {
 
     private final CorpQyMsgContentService corpQyMsgContentService;
 
+    private final CorpUserPayIntentionMapper corpUserPayIntentionMapper;
+
 
 
     /**
@@ -80,6 +81,11 @@ public class CorpMsgAuditController {
             builder.put("intention", String.format("and exists (select 1 from corp_user_pay_intention cup where cup.union_id = c.unionid and intention = %s limit 1)", intention));
         }
         SearchResult<CorpMsgAuditUserView> search = beanSearcher.search(CorpMsgAuditUserView.class, builder.build());
+        search.getDataList().forEach(e -> {
+            Optional.ofNullable(corpUserPayIntentionMapper.selectOne(Wrappers.lambdaQuery(CorpUserPayIntention.class)
+                    .eq(CorpUserPayIntention::getUnionId, e.getUnionId())
+                    .last("limit 1"))).ifPresent(cu -> e.setIntention(cu.getIntention()));
+        });
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 
     }
@@ -111,6 +117,4 @@ public class CorpMsgAuditController {
         SearchResult<QyMsgContent> search = beanSearcher.search(QyMsgContent.class, build);
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }
-
-
 }

+ 56 - 3
netflix-web/src/main/java/com/cyksj/web/controller/manage/corp/WxCorpController.java

@@ -23,13 +23,13 @@ import com.cyksj.mapper.corp.CorpUserTagMapper;
 import com.cyksj.model.dto.AuthRedirect;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.CorpQyMsgAuditChatView;
+import com.cyksj.model.manage.views.CorpWxOrderDonView;
 import com.cyksj.model.request.corp.CorpCommonReq;
-import com.cyksj.model.views.CorpUserIntentionView;
-import com.cyksj.model.views.UserIntentionPieView;
-import com.cyksj.model.views.YHLXUserDetailView;
+import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.corp.CorpService;
 import com.cyksj.service.corp.CorpUserService;
+import com.cyksj.service.user.UserBindRelationService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.param.Operator;
@@ -80,6 +80,8 @@ public class WxCorpController {
 
 	private final CorpUserAuthMapper corpUserAuthMapper;
 
+	private final UserBindRelationService userBindRelationService;
+
 	private final static String CORP_UUID = "corp-uuid";
 
 	/**
@@ -427,4 +429,55 @@ public class WxCorpController {
 		Page<CorpUserIntentionView> page = corpUserTagMapper.getCorpUserIntentionView(new Page<>(start, limit), userId, nickname, tagId, date, intention);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(page);
 	}
+
+	/**
+	 * 用户车票详情列表
+	 */
+	@GetMapping("/get/ticket")
+	public Result<SearchResult<TicketView>> getTicketView(Long userId) {
+		String corpUuid = getCorpUuid();
+		if (StrUtil.isEmpty(corpUuid)) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		if (userId == null) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		//关联关系
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		if (userIdList.isEmpty()) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		SearchResult<TicketView> ticketViews = beanSearcher.search(TicketView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(RenewalView::getUserId, 0).op(Operator.GreaterThan)
+				.field(TicketView::getUserId, userIdList).op(Operator.InList)
+				.put("condition", String.format("(gr.expiry_time is null or gr.expiry_time > '%s')", DateTime.now()))
+				.field(TicketView::getGrStatus, List.of("validity", "outside")).op(Operator.InList)
+				.orderBy(TicketView::getExpiryTime).asc()
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(ticketViews);
+	}
+
+
+	/**
+	 * 用户订单详情列表
+	 */
+	@GetMapping("/get/orders")
+	public Result<SearchResult<CorpWxOrderDonView>> getOrders(Long userId) {
+		String corpUuid = getCorpUuid();
+		if (StrUtil.isEmpty(corpUuid)) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		if (userId == null) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+		if (userIdList.isEmpty()) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		SearchResult<CorpWxOrderDonView> orderDonViews = beanSearcher.search(CorpWxOrderDonView.class, MapUtils.flatBuilder(request.getParameterMap())
+				.field(CorpWxOrderDonView::getUserId, userIdList).op(Operator.InList)
+				.orderBy(CorpWxOrderDonView::getId).desc()
+				.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(orderDonViews);
+	}
 }