Przeglądaj źródła

普通渠道列表

zoujiajian 2 lat temu
rodzic
commit
dadfa36d0a

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

@@ -18,8 +18,8 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "distribute_waiting_send_points dp left join order_don od on od.id = dp.order_id" +
-		" left join user u on u.id = dp.user_id" +
+@SearchBean(tables = "distribute_waiting_send_points dp inner join order_don od on od.id = dp.order_id" +
+		" inner join user u on u.id = dp.user_id" +
 		" left join goods_don gd on gd.id = od.goods_id")
 public class DistributeOrdersDetailView {
 	@DbField("u.nickname")

+ 7 - 2
netflix-dao/src/main/java/com/cyksj/model/views/RegisterDistributeOrdersDetailView.java

@@ -18,8 +18,7 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "order_don od left join goods_don gd on gd.id = od.goods_id",
-		where = "od.is_fixed_distribute is true")
+@SearchBean(tables = "order_don od left join goods_don gd on gd.id = od.goods_id")
 public class RegisterDistributeOrdersDetailView {
 
 	@DbField("od.created_time")
@@ -48,4 +47,10 @@ public class RegisterDistributeOrdersDetailView {
 
 	@DbIgnore
 	private String specVal;
+
+	@DbField("od.is_distribute")
+	private Boolean isDistribute;
+
+	@DbField("od.is_fixed_distribute")
+	private Boolean isFixedDistribute;
 }

+ 65 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserCommonDistributeView.java

@@ -0,0 +1,65 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserCommonDistributeView
+ * 创建者: JavaZou
+ * 创建时间:2024/1/31 17:35
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select id,nickname from user where 1 = 1 :condition:) u left join user_distribute_shared us on u.id = us.shared_id" +
+		" left join user_distribute ud on ud.user_id = u.id and ud.deleted is true" +
+		" left join order_don od on od.user_id = us.user_id and od.is_distribute = 1 and od.status not in ('noPayment', 'close') :time:"
+		, where = "ud.id is null",
+		groupBy = "u.id,u.nickname")
+public class UserCommonDistributeView {
+
+	@DbField("u.id")
+	private Long userId;
+
+	@DbField("u.nickname")
+	private String nickname;
+
+	@DbField("count(od.id)")
+	private Integer orders;
+
+	/**
+	 * 分销人数
+	 * 其中拉新用户购买一单又退款,且无后续下单动作的不算分销用户,不统计在此字段内
+	 */
+	@DbField("count(DISTINCT CASE WHEN od.status != 'refund' THEN us.user_id ELSE null END)")
+	private Integer distributeUserNum;
+
+	/**
+	 * 邀请人数
+	 */
+	@DbField("count(DISTINCT us.user_id)")
+	private Integer inviteNum;
+
+	/**
+	 * 分销订单金额(无需产生积分)
+	 */
+	@DbField("(ifnull(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money)),0) - ifnull(sum(od.refund_money),0))")
+	private BigDecimal distributeOrdersMoney;
+
+	/**
+	 * 分销消费占比
+	 */
+	@DbField("ifnull(cast(count(DISTINCT CASE WHEN od.status != 'refund' THEN us.user_id ELSE null END)/count(DISTINCT us.user_id) as decimal(10,2)),0)")
+	private BigDecimal distributeConsumerRate;
+
+	/**
+	 * 销量最高的产品
+	 */
+	@DbIgnore
+	private String goodsTitle;
+}

+ 27 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -338,7 +338,7 @@ public class DistributeController {
 	public Result<SearchResult<RegisterDistributeOrdersView>> getRegisterDistributeUserDetail() {
 		SearchResult<RegisterDistributeOrdersView> search = beanSearcher.search(RegisterDistributeOrdersView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		search.getDataList().forEach(data -> {
-			List<RegisterDistributeOrdersDetailView> ordersDetailViewList = beanSearcher.searchAll(RegisterDistributeOrdersDetailView.class, MapUtils.builder().field(RegisterDistributeOrdersDetailView::getUserId, data.getUserId()).op(Operator.Equal).build());
+			List<RegisterDistributeOrdersDetailView> ordersDetailViewList = beanSearcher.searchAll(RegisterDistributeOrdersDetailView.class, MapUtils.flatBuilder(request.getParameterMap()).field(RegisterDistributeOrdersDetailView::getUserId, data.getUserId()).op(Operator.Equal).build());
 			data.setOrderNums(ordersDetailViewList.size());
 			Optional<BigDecimal> money = ordersDetailViewList.stream().filter(order -> {
 				if (!Constant.noOrderAllStatus.contains(order.getStatus().name())) {
@@ -1241,4 +1241,30 @@ public class DistributeController {
 		SearchResult<UserDistributeSharedWhite> search = beanSearcher.search(UserDistributeSharedWhite.class, MapUtils.flatBuilder(request.getParameterMap()).build());
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 普通渠道列表
+	 */
+	@GetMapping("/get/common/distribute")
+	public Result<SearchResult<UserCommonDistributeView>> getCommonDistribute(Long userId, String nickname) {
+		String condition = StrUtil.EMPTY;
+		if (userId != null) {
+			condition += String.format(" and id = %s", userId);
+		}
+		if (StrUtil.isNotEmpty(nickname)) {
+			condition += String.format(" and nickname like '%%%s%%'", nickname);
+		}
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		if (StrUtil.isNotEmpty(condition)) {
+			builder.put("condition", condition);
+		}
+		SearchResult<UserCommonDistributeView> search = beanSearcher.search(UserCommonDistributeView.class,
+				builder.build());
+		search.getDataList().forEach(view -> {
+			if (view.getDistributeOrdersMoney().compareTo(BigDecimal.ZERO) > 0) {
+				Optional.ofNullable(userDistributeMapper.selectSoldMaxGoods(view.getUserId())).ifPresent(title -> view.setGoodsTitle(title));
+			}
+		});
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
 }

+ 1 - 1
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -511,7 +511,7 @@ public class AuthorizationController {
     @PostMapping("/google/login")
     public Result<UserAuthLoginResp> googleLogin(LoginReq loginReq,String credential) throws Exception {
         log.info("google loginReq:{},credential:{}", loginReq, credential);
-        String result = HttpUtil.post("https://galaxydvd.com/8081/api/auth/google/login/inner?credential=" + credential, new HashMap<>());
+        String result = HttpUtil.post("https://galaxyva.com/8081/api/auth/google/login/inner?credential=" + credential, new HashMap<>());
         log.info("google result:{}",result);
         GoogleLoginRep googleLoginRep = Jsons.parseObject(Jsons.toMap(result).get("data"), GoogleLoginRep.class);
         loginReq.setType(3);